diff --git a/Externals/Bochs_disasm/Bochs_disasm.vcxproj b/Externals/Bochs_disasm/Bochs_disasm.vcxproj
index 917b83248d..a4479fe029 100644
--- a/Externals/Bochs_disasm/Bochs_disasm.vcxproj
+++ b/Externals/Bochs_disasm/Bochs_disasm.vcxproj
@@ -50,14 +50,18 @@
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
diff --git a/Externals/Bochs_disasm/CMakeLists.txt b/Externals/Bochs_disasm/CMakeLists.txt
index a58e50e928..3d93e7e6e9 100644
--- a/Externals/Bochs_disasm/CMakeLists.txt
+++ b/Externals/Bochs_disasm/CMakeLists.txt
@@ -1,7 +1,7 @@
-set(SRCS dis_decode.cpp
- dis_groups.cpp
- resolve.cpp
- syntax.cpp)
+set(SRCS dis_decode.cc
+ dis_groups.cc
+ resolve.cc
+ syntax.cc)
if(WIN32)
set(SRCS ${SRCS} stdafx.cpp)
diff --git a/Externals/Bochs_disasm/Makefile.in b/Externals/Bochs_disasm/Makefile.in
new file mode 100644
index 0000000000..e7a5276624
--- /dev/null
+++ b/Externals/Bochs_disasm/Makefile.in
@@ -0,0 +1,82 @@
+# Copyright (C) 2001 The Bochs Project
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+@SUFFIX_LINE@
+
+srcdir = @srcdir@
+VPATH = @srcdir@
+top_builddir = ..
+top_srcdir = @top_srcdir@
+
+SHELL = @SHELL@
+
+@SET_MAKE@
+
+CXX = @CXX@
+CXXFLAGS = @CXXFLAGS@ @GUI_CXXFLAGS@
+
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+RANLIB = @RANLIB@
+
+
+# ===========================================================
+# end of configurable options
+# ===========================================================
+
+
+BX_OBJS = \
+ dis_decode.o \
+ dis_groups.o \
+ resolve.o \
+ syntax.o
+
+BX_INCLUDES = disasm.h
+
+BX_INCDIRS = -I.. -I$(srcdir)/.. -I../@INSTRUMENT_DIR@ -I$(srcdir)/../@INSTRUMENT_DIR@
+
+all: libdisasm.a
+
+.@CPP_SUFFIX@.o:
+ $(CXX) @DASH@c $(BX_INCDIRS) $(CXXFLAGS) @CXXFP@$< @OFP@$@
+
+
+
+libdisasm.a: $(BX_OBJS)
+ @RMCOMMAND@ libdisasm.a
+ @MAKELIB@ $(BX_OBJS)
+ $(RANLIB) libdisasm.a
+
+$(BX_OBJS): $(BX_INCLUDES)
+
+
+clean:
+ @RMCOMMAND@ *.o
+ @RMCOMMAND@ *.a
+
+dist-clean: clean
+ @RMCOMMAND@ Makefile
+
+###########################################
+# dependencies generated by
+# gcc -MM -I.. -I../instrument/stubs *.cc | sed 's/\.cc/.@CPP_SUFFIX@/g'
+###########################################
+dis_decode.o: dis_decode.@CPP_SUFFIX@ disasm.h ../config.h dis_tables.h opcodes.inc \
+ dis_tables.inc dis_tables_x87.inc dis_tables_sse.inc dis_tables_avx.inc dis_tables_xop.inc
+dis_groups.o: dis_groups.@CPP_SUFFIX@ disasm.h ../config.h
+resolve.o: resolve.@CPP_SUFFIX@ disasm.h ../config.h
+syntax.o: syntax.@CPP_SUFFIX@ disasm.h ../config.h
diff --git a/Externals/Bochs_disasm/config.h b/Externals/Bochs_disasm/config.h
index abfc45cc6e..9329ac725b 100644
--- a/Externals/Bochs_disasm/config.h
+++ b/Externals/Bochs_disasm/config.h
@@ -38,4 +38,8 @@ typedef Bit64u bx_address;
#endif
+#define BX_CONST64(x) (x##LL)
+#define GET32L(val64) ((Bit32u)(((Bit64u)(val64)) & 0xFFFFFFFF))
+#define GET32H(val64) ((Bit32u)(((Bit64u)(val64)) >> 32))
+
#endif
diff --git a/Externals/Bochs_disasm/dis_decode.cc b/Externals/Bochs_disasm/dis_decode.cc
new file mode 100644
index 0000000000..77974af4a6
--- /dev/null
+++ b/Externals/Bochs_disasm/dis_decode.cc
@@ -0,0 +1,557 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: dis_decode.cc 11873 2013-10-10 21:00:26Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2012 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+#include
+#include
+#include
+
+#include "disasm.h"
+#include "dis_tables.h"
+
+#define OPCODE(entry) ((BxDisasmOpcodeInfo_t*) entry->OpcodeInfo)
+#define OPCODE_TABLE(entry) ((BxDisasmOpcodeTable_t*) entry->OpcodeInfo)
+
+static const unsigned char instruction_has_modrm[512] = {
+ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
+ /* ------------------------------- */
+ /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
+ /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
+ /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
+ /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
+ /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,
+ /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+ /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* A0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* B0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* C0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
+ /* D0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,
+ /* E0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ /* F0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,
+ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
+ /* ------------------------------- */
+ 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0F 00 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 10 */
+ 1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 0F 20 */
+ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 0F 30 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 40 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 50 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 60 */
+ 1,1,1,1,1,1,1,0,1,1,0,0,1,1,1,1, /* 0F 70 */
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0F 80 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 90 */
+ 0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1, /* 0F A0 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F B0 */
+ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 0F C0 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F D0 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F E0 */
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* 0F F0 */
+ /* ------------------------------- */
+ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
+};
+
+unsigned disassembler::disasm(bx_bool is_32, bx_bool is_64, bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+{
+ x86_insn insn = decode(is_32, is_64, cs_base, ip, instr, disbuf);
+ return insn.ilen;
+}
+
+x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+{
+ if (is_64) is_32 = 1;
+ x86_insn insn(is_32, is_64);
+ const Bit8u *instruction_begin = instruction = instr;
+ resolve_modrm = NULL;
+
+ db_eip = ip;
+ db_cs_base = cs_base; // cs linear base (cs_base for PM & cs<<4 for RM & VM)
+
+ disbufptr = disbuf; // start sprintf()'ing into beginning of buffer
+
+#define SSE_PREFIX_NONE 0
+#define SSE_PREFIX_66 1
+#define SSE_PREFIX_F3 2
+#define SSE_PREFIX_F2 3 /* only one SSE prefix could be used */
+ unsigned sse_prefix = SSE_PREFIX_NONE, sse_opcode = 0;
+ unsigned rex_prefix = 0, prefixes = 0;
+
+ for(;;)
+ {
+ insn.b1 = fetch_byte();
+ prefixes++;
+
+ switch(insn.b1) {
+ case 0x40: // rex
+ case 0x41:
+ case 0x42:
+ case 0x43:
+ case 0x44:
+ case 0x45:
+ case 0x46:
+ case 0x47:
+ case 0x48:
+ case 0x49:
+ case 0x4A:
+ case 0x4B:
+ case 0x4C:
+ case 0x4D:
+ case 0x4E:
+ case 0x4F:
+ if (! is_64) break;
+ rex_prefix = insn.b1;
+ continue;
+
+ case 0x26: // ES:
+ case 0x2e: // CS:
+ case 0x36: // SS:
+ case 0x3e: // DS:
+ if (! is_64) insn.seg_override = (insn.b1 >> 3) & 3;
+ rex_prefix = 0;
+ continue;
+
+ case 0x64: // FS:
+ case 0x65: // GS:
+ insn.seg_override = insn.b1 & 0xf;
+ rex_prefix = 0;
+ continue;
+
+ case 0x66: // operand size override
+ if (!insn.os_64) insn.os_32 = !is_32;
+ if (!sse_prefix) sse_prefix = SSE_PREFIX_66;
+ rex_prefix = 0;
+ continue;
+
+ case 0x67: // address size override
+ if (!is_64) insn.as_32 = !is_32;
+ insn.as_64 = 0;
+ rex_prefix = 0;
+ continue;
+
+ case 0xf0: // lock
+ rex_prefix = 0;
+ continue;
+
+ case 0xf2: // repne
+ case 0xf3: // rep
+ sse_prefix = (insn.b1 & 0xf) ^ 1;
+ rex_prefix = 0;
+ continue;
+
+ // no more prefixes
+ default:
+ break;
+ }
+
+ break;
+ }
+
+ if (insn.b1 == 0x0f)
+ {
+ insn.b1 = 0x100 | fetch_byte();
+ }
+
+ if (rex_prefix) {
+ insn.extend8b = 1;
+ if (rex_prefix & 0x8) {
+ insn.os_64 = 1;
+ insn.os_32 = 1;
+ }
+ if (rex_prefix & 0x4) insn.rex_r = 8;
+ if (rex_prefix & 0x2) insn.rex_x = 8;
+ if (rex_prefix & 0x1) insn.rex_b = 8;
+ }
+
+ const BxDisasmOpcodeTable_t *opcode_table, *entry;
+
+ if (is_64) {
+ if (insn.os_64)
+ opcode_table = BxDisasmOpcodes64q;
+ else if (insn.os_32)
+ opcode_table = BxDisasmOpcodes64d;
+ else
+ opcode_table = BxDisasmOpcodes64w;
+ } else {
+ if (insn.os_32)
+ opcode_table = BxDisasmOpcodes32;
+ else
+ opcode_table = BxDisasmOpcodes16;
+ }
+
+ entry = opcode_table + insn.b1;
+
+ if ((insn.b1 & ~1) == 0xc4 && (is_64 || (peek_byte() & 0xc0) == 0xc0))
+ {
+ if (sse_prefix)
+ dis_sprintf("(bad vex+rex prefix) ");
+ if (rex_prefix)
+ dis_sprintf("(bad vex+sse prefix) ");
+
+ // decode 0xC4 or 0xC5 VEX prefix
+ sse_prefix = decode_vex(&insn);
+ if (insn.b1 < 256 || insn.b1 >= 1024)
+ entry = &BxDisasmGroupSSE_ERR[0];
+ else
+ entry = BxDisasmOpcodesAVX + (insn.b1 - 256);
+ }
+/*
+ if (insn.b1== 0x62 && (is_64 || (peek_byte() & 0xc0) == 0xc0))
+ {
+ if (sse_prefix)
+ dis_sprintf("(bad evex+rex prefix) ");
+ if (rex_prefix)
+ dis_sprintf("(bad evex+sse prefix) ");
+
+ // decode 0x62 EVEX prefix
+ sse_prefix = decode_evex(&insn);
+ if (insn.b1 < 256 || insn.b1 >= 1024)
+ entry = &BxDisasmGroupSSE_ERR[0];
+// else
+// entry = BxDisasmOpcodesEVEX + (insn.b1 - 256);
+ }
+*/
+ else if (insn.b1 == 0x8f && (is_64 || (peek_byte() & 0xc0) == 0xc0) && (peek_byte() & 0x8) == 0x8)
+ {
+ if (sse_prefix)
+ dis_sprintf("(bad xop+rex prefix) ");
+ if (rex_prefix)
+ dis_sprintf("(bad xop+sse prefix) ");
+
+ // decode 0x8F XOP prefix
+ sse_prefix = decode_xop(&insn);
+ if (insn.b1 >= 768 || sse_prefix != 0)
+ entry = &BxDisasmGroupSSE_ERR[0];
+ else
+ entry = BxDisasmOpcodesXOP + insn.b1;
+ }
+
+ if (insn.b1 >= 512 || instruction_has_modrm[insn.b1] || insn.is_xop > 0)
+ {
+ // take 3rd byte for 3-byte opcode
+ if (entry->Attr == _GRP3BOP) {
+ entry = &(OPCODE_TABLE(entry)[fetch_byte()]);
+ }
+
+ decode_modrm(&insn);
+ }
+
+ int attr = entry->Attr;
+ while(attr)
+ {
+ switch(attr) {
+ case _GROUPN:
+ entry = &(OPCODE_TABLE(entry)[insn.nnn & 7]);
+ break;
+
+ case _GRPSSE66:
+ /* SSE opcode group with only prefix 0x66 allowed */
+ sse_opcode = 1;
+ if (sse_prefix != SSE_PREFIX_66)
+ entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
+ attr = 0;
+ continue;
+
+ case _GRPSSEF2:
+ /* SSE opcode group with only prefix 0xF2 allowed */
+ sse_opcode = 1;
+ if (sse_prefix != SSE_PREFIX_F2)
+ entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
+ attr = 0;
+ continue;
+
+ case _GRPSSEF3:
+ /* SSE opcode group with only prefix 0xF3 allowed */
+ sse_opcode = 1;
+ if (sse_prefix != SSE_PREFIX_F3)
+ entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
+ attr = 0;
+ continue;
+
+ case _GRPSSENONE:
+ /* SSE opcode group with no prefix only allowed */
+ sse_opcode = 1;
+ if (sse_prefix != SSE_PREFIX_NONE)
+ entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
+ attr = 0;
+ continue;
+
+ case _GRPSSE:
+ sse_opcode = 1;
+ /* For SSE opcodes, look into another 4 entries table
+ with the opcode prefixes (NONE, 0x66, 0xF2, 0xF3) */
+ entry = &(OPCODE_TABLE(entry)[sse_prefix]);
+ break;
+
+ case _GRPSSE2:
+ sse_opcode = 1;
+ /* For SSE opcodes, look into another 2 entries table
+ with the opcode prefixes (NONE, 0x66)
+ SSE prefixes 0xF2 and 0xF3 are not allowed */
+ if (sse_prefix > SSE_PREFIX_66)
+ entry = &(BxDisasmGroupSSE_ERR[sse_prefix]);
+ else
+ entry = &(OPCODE_TABLE(entry)[sse_prefix]);
+ break;
+
+ case _SPLIT11B:
+ entry = &(OPCODE_TABLE(entry)[insn.mod != 3]); /* REG/MEM */
+ break;
+
+ case _GRPRM:
+ entry = &(OPCODE_TABLE(entry)[insn.rm & 7]);
+ break;
+
+ case _GRPFP:
+ if(insn.mod != 3)
+ {
+ entry = &(OPCODE_TABLE(entry)[insn.nnn & 7]);
+ } else {
+ int index = (insn.b1-0xD8)*64 + (insn.modrm & 0x3f);
+ entry = &(BxDisasmOpcodeInfoFP[index]);
+ }
+ break;
+
+ case _GRP3DNOW:
+ entry = &(BxDisasm3DNowGroup[fetch_byte()]);
+ break;
+
+ case _GRP64B:
+ entry = &(OPCODE_TABLE(entry)[insn.os_64 ? 2 : insn.os_32]);
+ if (sse_prefix == SSE_PREFIX_66)
+ sse_prefix = 0;
+ break;
+
+ case _GRPVEXW:
+ entry = &(OPCODE_TABLE(entry)[insn.vex_w]);
+ break;
+
+ default:
+ printf("Internal disassembler error - unknown attribute !\n");
+ return x86_insn(is_32, is_64);
+ }
+
+ /* get additional attributes from group table */
+ attr = entry->Attr;
+ }
+
+#define BRANCH_NOT_TAKEN 0x2E
+#define BRANCH_TAKEN 0x3E
+
+ unsigned branch_hint = 0;
+
+ // print prefixes
+ for(unsigned i=0;iIntelOpcode);
+ }
+ }
+
+ // branch hint for jcc instructions
+ if ((insn.b1 >= 0x070 && insn.b1 <= 0x07F) ||
+ (insn.b1 >= 0x180 && insn.b1 <= 0x18F))
+ {
+ if (prefix_byte == BRANCH_NOT_TAKEN || prefix_byte == BRANCH_TAKEN)
+ branch_hint = prefix_byte;
+ }
+ }
+ }
+
+ const BxDisasmOpcodeInfo_t *opcode = OPCODE(entry);
+
+ if (! insn.is_xop && ! insn.is_vex) {
+ // patch jecx opcode
+ if (insn.b1 == 0xE3 && insn.as_32 && !insn.as_64)
+ opcode = &Ia_jecxz_Jb;
+
+ // fix nop opcode
+ if (insn.b1 == 0x90) {
+ if (sse_prefix == SSE_PREFIX_F3)
+ opcode = &Ia_pause;
+ else if (!insn.rex_b)
+ opcode = &Ia_nop;
+ }
+ }
+
+ // print instruction disassembly
+ if (intel_mode)
+ print_disassembly_intel(&insn, opcode);
+ else
+ print_disassembly_att (&insn, opcode);
+
+ if (branch_hint == BRANCH_NOT_TAKEN)
+ {
+ dis_sprintf(", not taken");
+ }
+ else if (branch_hint == BRANCH_TAKEN)
+ {
+ dis_sprintf(", taken");
+ }
+
+ if (insn.is_vex < 0)
+ dis_sprintf(" (bad vex)");
+ else if (insn.is_evex < 0)
+ dis_sprintf(" (bad evex)");
+ else if (insn.is_xop < 0)
+ dis_sprintf(" (bad xop)");
+
+ insn.ilen = (unsigned)(instruction - instruction_begin);
+
+ return insn;
+}
+
+unsigned disassembler::decode_vex(x86_insn *insn)
+{
+ insn->is_vex = 1;
+
+ unsigned b2 = fetch_byte(), vex_opcode_extension = 1;
+
+ insn->rex_r = (b2 & 0x80) ? 0 : 0x8;
+
+ if (insn->b1 == 0xc4) {
+ // decode 3-byte VEX prefix
+ insn->rex_x = (b2 & 0x40) ? 0 : 0x8;
+ if (insn->is_64)
+ insn->rex_b = (b2 & 0x20) ? 0 : 0x8;
+
+ vex_opcode_extension = b2 & 0x1f;
+ if (! vex_opcode_extension || vex_opcode_extension > 3)
+ insn->is_vex = -1;
+
+ b2 = fetch_byte(); // fetch VEX3 byte
+ if (b2 & 0x80) {
+ insn->os_64 = 1;
+ insn->os_32 = 1;
+ insn->vex_w = 1;
+ }
+ }
+
+ insn->vex_vvv = 15 - ((b2 >> 3) & 0xf);
+ if (! insn->is_64) insn->vex_vvv &= 7;
+ insn->vex_l = (b2 >> 2) & 0x1;
+ insn->b1 = fetch_byte() + 256 * vex_opcode_extension;
+ return b2 & 0x3;
+}
+
+unsigned disassembler::decode_evex(x86_insn *insn)
+{
+ insn->is_evex = 1;
+
+ Bit32u evex = fetch_dword();
+
+ // check for reserved EVEX bits
+ if ((evex & 0x0c) != 0 || (evex & 0x400) == 0) {
+ insn->is_evex = -1;
+ }
+
+ unsigned evex_opcext = evex & 0x3;
+ if (evex_opcext == 0) {
+ insn->is_evex = -1;
+ }
+
+ if (insn->is_64) {
+ insn->rex_r = ((evex >> 4) & 0x8) ^ 0x8;
+ insn->rex_r |= (evex & 0x10) ^ 0x10;
+ insn->rex_x = ((evex >> 3) & 0x8) ^ 0x8;
+ insn->rex_b = ((evex >> 2) & 0x8) ^ 0x8;
+ insn->rex_b |= (insn->rex_x << 1);
+ }
+
+ unsigned sse_prefix = (evex >> 8) & 0x3;
+
+ insn->vex_vvv = 15 - ((evex >> 11) & 0xf);
+ unsigned evex_v = ((evex >> 15) & 0x10) ^ 0x10;
+ insn->vex_vvv |= evex_v;
+ if (! insn->is_64) insn->vex_vvv &= 7;
+
+ insn->vex_w = (evex >> 15) & 0x1;
+ if (insn->vex_w) {
+ insn->os_64 = 1;
+ insn->os_32 = 1;
+ }
+
+ insn->evex_b = (evex >> 20) & 0x1;
+ insn->evex_ll_rc = (evex >> 21) & 0x3;
+ insn->evex_z = (evex >> 23) & 0x1;
+
+ insn->b1 = (evex >> 24);
+ insn->b1 += 256 * (evex_opcext-1);
+
+ return sse_prefix;
+}
+
+unsigned disassembler::decode_xop(x86_insn *insn)
+{
+ insn->is_xop = 1;
+
+ unsigned b2 = fetch_byte();
+
+ insn->rex_r = (b2 & 0x80) ? 0 : 0x8;
+ insn->rex_x = (b2 & 0x40) ? 0 : 0x8;
+ if (insn->is_64)
+ insn->rex_b = (b2 & 0x20) ? 0 : 0x8;
+
+ unsigned xop_opcode_extension = (b2 & 0x1f) - 8;
+ if (xop_opcode_extension >= 3)
+ insn->is_xop = -1;
+
+ b2 = fetch_byte(); // fetch VEX3 byte
+ if (b2 & 0x80) {
+ insn->os_64 = 1;
+ insn->os_32 = 1;
+ insn->vex_w = 1;
+ }
+
+ insn->vex_vvv = 15 - ((b2 >> 3) & 0xf);
+ if (! insn->is_64) insn->vex_vvv &= 7;
+ insn->vex_l = (b2 >> 2) & 0x1;
+ insn->b1 = fetch_byte() + 256 * xop_opcode_extension;
+
+ return b2 & 0x3;
+}
+
+void disassembler::dis_sprintf(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsprintf(disbufptr, fmt, ap);
+ va_end(ap);
+
+ disbufptr += strlen(disbufptr);
+}
+
+void disassembler::dis_putc(char symbol)
+{
+ *disbufptr++ = symbol;
+ *disbufptr = 0;
+}
diff --git a/Externals/Bochs_disasm/dis_decode.cpp b/Externals/Bochs_disasm/dis_decode.cpp
deleted file mode 100644
index 3734578658..0000000000
--- a/Externals/Bochs_disasm/dis_decode.cpp
+++ /dev/null
@@ -1,328 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-// $Id: dis_decode.cc,v 1.32 2006/05/12 17:04:19 sshwarts Exp $
-/////////////////////////////////////////////////////////////////////////
-
-#include
-#include
-#include
-
-#include "disasm.h"
-#include "dis_tables.h"
-
-#define OPCODE(entry) ((BxDisasmOpcodeInfo_t*) entry->OpcodeInfo)
-#define OPCODE_TABLE(entry) ((BxDisasmOpcodeTable_t*) entry->OpcodeInfo)
-
-#ifndef NULL
-#define NULL 0
-#endif
-
-
-static const unsigned char instruction_has_modrm[512] = {
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
- /* ------------------------------- */
- /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
- /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
- /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
- /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,
- /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0,
- /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* A0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* B0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* C0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
- /* D0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,
- /* E0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
- /* F0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
- /* ------------------------------- */
- 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0F 00 */
- 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1, /* 0F 10 */
- 1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 0F 20 */
- 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 0F 30 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 40 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 50 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 60 */
- 1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1, /* 0F 70 */
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0F 80 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 90 */
- 0,0,0,1,1,1,0,0,0,0,0,1,1,1,1,1, /* 0F A0 */
- 1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1, /* 0F B0 */
- 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 0F C0 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F D0 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F E0 */
- 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 /* 0F F0 */
- /* ------------------------------- */
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
-};
-
-unsigned disassembler::disasm(bx_bool is_32, bx_bool is_64, bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
-{
- x86_insn insn = decode(is_32, is_64, base, ip, instr, disbuf);
- return insn.ilen;
-}
-
-x86_insn disassembler::decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
-{
- x86_insn insn(is_32, is_64);
- const Bit8u *instruction_begin = instruction = instr;
- resolve_modrm = NULL;
- unsigned b3 = 0;
-
- db_eip = ip;
- db_base = base; // cs linear base (base for PM & cs<<4 for RM & VM)
-
- disbufptr = disbuf; // start sprintf()'ing into beginning of buffer
-
-#define SSE_PREFIX_NONE 0
-#define SSE_PREFIX_66 1
-#define SSE_PREFIX_F2 2
-#define SSE_PREFIX_F3 3 /* only one SSE prefix could be used */
- unsigned sse_prefix = SSE_PREFIX_NONE;
-
- for(;;)
- {
- insn.b1 = fetch_byte();
- insn.prefixes++;
-
- switch(insn.b1) {
- case 0x40: // rex
- case 0x41:
- case 0x42:
- case 0x43:
- case 0x44:
- case 0x45:
- case 0x46:
- case 0x47:
- case 0x48:
- case 0x49:
- case 0x4A:
- case 0x4B:
- case 0x4C:
- case 0x4D:
- case 0x4E:
- case 0x4F:
- if (! is_64) break;
- insn.extend8b = 1;
- if (insn.b1 & 0x8) {
- insn.os_64 = 1;
- insn.os_32 = 1;
- }
- if (insn.b1 & 0x4) insn.rex_r = 8;
- if (insn.b1 & 0x2) insn.rex_x = 8;
- if (insn.b1 & 0x1) insn.rex_b = 8;
- continue;
-
- case 0x26: // ES:
- if (! is_64) insn.seg_override = ES_REG;
- continue;
-
- case 0x2e: // CS:
- if (! is_64) insn.seg_override = CS_REG;
- continue;
-
- case 0x36: // SS:
- if (! is_64) insn.seg_override = SS_REG;
- continue;
-
- case 0x3e: // DS:
- if (! is_64) insn.seg_override = DS_REG;
- continue;
-
- case 0x64: // FS:
- insn.seg_override = FS_REG;
- continue;
-
- case 0x65: // GS:
- insn.seg_override = GS_REG;
- continue;
-
- case 0x66: // operand size override
- if (!insn.os_64) insn.os_32 = !is_32;
- if (!sse_prefix) sse_prefix = SSE_PREFIX_66;
- continue;
-
- case 0x67: // address size override
- if (!is_64) insn.as_32 = !is_32;
- insn.as_64 = 0;
- continue;
-
- case 0xf0: // lock
- continue;
-
- case 0xf2: // repne
- if (!sse_prefix) sse_prefix = SSE_PREFIX_F2;
- continue;
-
- case 0xf3: // rep
- if (!sse_prefix) sse_prefix = SSE_PREFIX_F3;
- continue;
-
- // no more prefixes
- default:
- break;
- }
-
- insn.prefixes--;
- break;
- }
-
- if (insn.b1 == 0x0f)
- {
- insn.b1 = 0x100 | fetch_byte();
- }
-
- const BxDisasmOpcodeTable_t *opcode_table, *entry;
-
- if (is_64) {
- if (insn.os_64)
- opcode_table = BxDisasmOpcodes64q;
- else if (insn.os_32)
- opcode_table = BxDisasmOpcodes64d;
- else
- opcode_table = BxDisasmOpcodes64w;
- } else {
- if (insn.os_32)
- opcode_table = BxDisasmOpcodes32;
- else
- opcode_table = BxDisasmOpcodes16;
- }
-
- entry = opcode_table + insn.b1;
-
- // will require 3rd byte for 3-byte opcode
- if (entry->Attr & _GRP3BTAB) b3 = fetch_byte();
-
- if (instruction_has_modrm[insn.b1])
- {
- decode_modrm(&insn);
- }
-
- int attr = entry->Attr;
- while(attr)
- {
- switch(attr) {
- case _GROUPN:
- entry = &(OPCODE_TABLE(entry)[insn.nnn]);
- break;
-
- case _GRPSSE:
- if(sse_prefix) insn.prefixes--;
- /* For SSE opcodes, look into another 4 entries table
- with the opcode prefixes (NONE, 0x66, 0xF2, 0xF3) */
- entry = &(OPCODE_TABLE(entry)[sse_prefix]);
- break;
-
- case _SPLIT11B:
- entry = &(OPCODE_TABLE(entry)[insn.mod != 3]); /* REG/MEM */
- break;
-
- case _GRPRM:
- entry = &(OPCODE_TABLE(entry)[insn.rm]);
- break;
-
- case _GRPFP:
- if(insn.mod != 3)
- {
- entry = &(OPCODE_TABLE(entry)[insn.nnn]);
- } else {
- int index = (insn.b1-0xD8)*64 + (insn.modrm & 0x3f);
- entry = &(BxDisasmOpcodeInfoFP[index]);
- }
- break;
-
- case _GRP3DNOW:
- entry = &(BxDisasm3DNowGroup[peek_byte()]);
- break;
-
- case _GRP3BTAB:
- entry = &(OPCODE_TABLE(entry)[b3 >> 4]);
- break;
-
- case _GRP3BOP:
- entry = &(OPCODE_TABLE(entry)[b3 & 15]);
- break;
-
- default:
- printf("Internal disassembler error - unknown attribute !\n");
- return x86_insn(is_32, is_64);
- }
-
- /* get additional attributes from group table */
- attr = entry->Attr;
- }
-
-#define BRANCH_NOT_TAKEN 0x2E
-#define BRANCH_TAKEN 0x3E
-
- unsigned branch_hint = 0;
-
- // print prefixes
- for(unsigned i=0;iIntelOpcode);
- }
-
- // branch hint for jcc instructions
- if ((insn.b1 >= 0x070 && insn.b1 <= 0x07F) ||
- (insn.b1 >= 0x180 && insn.b1 <= 0x18F))
- {
- if (prefix_byte == BRANCH_NOT_TAKEN || prefix_byte == BRANCH_TAKEN)
- branch_hint = prefix_byte;
- }
- }
-
- const BxDisasmOpcodeInfo_t *opcode = OPCODE(entry);
-
- // patch jecx opcode
- if (insn.b1 == 0xE3 && insn.as_32 && !insn.as_64)
- opcode = &Ia_jecxz_Jb;
-
- // fix nop opcode
- if (insn.b1 == 0x90 && !insn.rex_b) {
- opcode = &Ia_nop;
- }
-
- // print instruction disassembly
- if (intel_mode)
- print_disassembly_intel(&insn, opcode);
- else
- print_disassembly_att (&insn, opcode);
-
- if (branch_hint == BRANCH_NOT_TAKEN)
- {
- dis_sprintf(", not taken");
- }
- else if (branch_hint == BRANCH_TAKEN)
- {
- dis_sprintf(", taken");
- }
-
- insn.ilen = (unsigned)(instruction - instruction_begin);
-
- return insn;
-}
-
-void disassembler::dis_sprintf(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vsprintf(disbufptr, fmt, ap);
- va_end(ap);
-
- disbufptr += strlen(disbufptr);
-}
-
-void disassembler::dis_putc(char symbol)
-{
- *disbufptr++ = symbol;
- *disbufptr = 0;
-}
diff --git a/Externals/Bochs_disasm/dis_groups.cpp b/Externals/Bochs_disasm/dis_groups.cc
similarity index 53%
rename from Externals/Bochs_disasm/dis_groups.cpp
rename to Externals/Bochs_disasm/dis_groups.cc
index 9e55323523..0712fa344e 100644
--- a/Externals/Bochs_disasm/dis_groups.cpp
+++ b/Externals/Bochs_disasm/dis_groups.cc
@@ -1,6 +1,23 @@
/////////////////////////////////////////////////////////////////////////
-// $Id: dis_groups.cc,v 1.33 2006/08/13 09:40:07 sshwarts Exp $
+// $Id: dis_groups.cc 11885 2013-10-15 17:19:18Z sshwarts $
/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2011 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include
#include
@@ -16,41 +33,46 @@ void disassembler::Apw(const x86_insn *insn)
{
Bit16u imm16 = fetch_word();
Bit16u cs_selector = fetch_word();
- dis_sprintf("%04x:%04x", (unsigned) cs_selector, (unsigned) imm16);
+ dis_sprintf("0x%04x:%04x", (unsigned) cs_selector, (unsigned) imm16);
}
void disassembler::Apd(const x86_insn *insn)
{
Bit32u imm32 = fetch_dword();
Bit16u cs_selector = fetch_word();
- dis_sprintf("%04x:%08x", (unsigned) cs_selector, (unsigned) imm32);
+ dis_sprintf("0x%04x:%08x", (unsigned) cs_selector, (unsigned) imm32);
}
// 8-bit general purpose registers
-void disassembler::AL(const x86_insn *insn) { dis_sprintf("%s", general_8bit_regname[rAX_REG]); }
-void disassembler::CL(const x86_insn *insn) { dis_sprintf("%s", general_8bit_regname[rCX_REG]); }
+void disassembler::AL_Reg(const x86_insn *insn) { dis_sprintf("%s", general_8bit_regname[rAX_REG]); }
+void disassembler::CL_Reg(const x86_insn *insn) { dis_sprintf("%s", general_8bit_regname[rCX_REG]); }
// 16-bit general purpose registers
-void disassembler::AX(const x86_insn *insn) {
+void disassembler::AX_Reg(const x86_insn *insn) {
dis_sprintf("%s", general_16bit_regname[rAX_REG]);
}
-void disassembler::DX(const x86_insn *insn) {
+void disassembler::DX_Reg(const x86_insn *insn) {
dis_sprintf("%s", general_16bit_regname[rDX_REG]);
}
// 32-bit general purpose registers
-void disassembler::EAX(const x86_insn *insn)
+void disassembler::EAX_Reg(const x86_insn *insn)
{
dis_sprintf("%s", general_32bit_regname[rAX_REG]);
}
// 64-bit general purpose registers
-void disassembler::RAX(const x86_insn *insn)
+void disassembler::RAX_Reg(const x86_insn *insn)
{
dis_sprintf("%s", general_64bit_regname[rAX_REG]);
}
+void disassembler::RCX_Reg(const x86_insn *insn)
+{
+ dis_sprintf("%s", general_64bit_regname[rCX_REG]);
+}
+
// segment registers
void disassembler::CS(const x86_insn *insn) { dis_sprintf("%s", segment_name[CS_REG]); }
void disassembler::DS(const x86_insn *insn) { dis_sprintf("%s", segment_name[DS_REG]); }
@@ -61,18 +83,9 @@ void disassembler::GS(const x86_insn *insn) { dis_sprintf("%s", segment_name[GS_
void disassembler::Sw(const x86_insn *insn) { dis_sprintf("%s", segment_name[insn->nnn]); }
-// test registers
-void disassembler::Td(const x86_insn *insn)
-{
- if (intel_mode)
- dis_sprintf ("tr%d", insn->nnn);
- else
- dis_sprintf("%%tr%d", insn->nnn);
-}
-
// control register
-void disassembler::Cd(const x86_insn *insn)
-{
+void disassembler::Cd(const x86_insn *insn)
+{
if (intel_mode)
dis_sprintf ("cr%d", insn->nnn);
else
@@ -82,21 +95,21 @@ void disassembler::Cd(const x86_insn *insn)
void disassembler::Cq(const x86_insn *insn) { Cd(insn); }
// debug register
-void disassembler::Dd(const x86_insn *insn)
+void disassembler::Dd(const x86_insn *insn)
{
if (intel_mode)
- dis_sprintf ("db%d", insn->nnn);
+ dis_sprintf ("dr%d", insn->nnn);
else
- dis_sprintf("%%db%d", insn->nnn);
+ dis_sprintf("%%dr%d", insn->nnn);
}
void disassembler::Dq(const x86_insn *insn) { Dd(insn); }
// 8-bit general purpose register
-void disassembler::R8(const x86_insn *insn)
-{
+void disassembler::Reg8(const x86_insn *insn)
+{
unsigned reg = (insn->b1 & 7) | insn->rex_b;
-
+
if (reg < 4 || insn->extend8b)
dis_sprintf("%s", general_8bit_regname_rex[reg]);
else
@@ -105,24 +118,24 @@ void disassembler::R8(const x86_insn *insn)
// 16-bit general purpose register
void disassembler::RX(const x86_insn *insn)
-{
+{
dis_sprintf("%s", general_16bit_regname[(insn->b1 & 7) | insn->rex_b]);
}
// 32-bit general purpose register
void disassembler::ERX(const x86_insn *insn)
-{
+{
dis_sprintf("%s", general_32bit_regname[(insn->b1 & 7) | insn->rex_b]);
}
// 64-bit general purpose register
void disassembler::RRX(const x86_insn *insn)
-{
+{
dis_sprintf("%s", general_64bit_regname[(insn->b1 & 7) | insn->rex_b]);
}
// general purpose register or memory operand
-void disassembler::Eb(const x86_insn *insn)
+void disassembler::Eb(const x86_insn *insn)
{
if (insn->mod == 3) {
if (insn->rm < 4 || insn->extend8b)
@@ -134,7 +147,7 @@ void disassembler::Eb(const x86_insn *insn)
(this->*resolve_modrm)(insn, B_SIZE);
}
-void disassembler::Ew(const x86_insn *insn)
+void disassembler::Ew(const x86_insn *insn)
{
if (insn->mod == 3)
dis_sprintf("%s", general_16bit_regname[insn->rm]);
@@ -142,7 +155,7 @@ void disassembler::Ew(const x86_insn *insn)
(this->*resolve_modrm)(insn, W_SIZE);
}
-void disassembler::Ed(const x86_insn *insn)
+void disassembler::Ed(const x86_insn *insn)
{
if (insn->mod == 3)
dis_sprintf("%s", general_32bit_regname[insn->rm]);
@@ -150,7 +163,7 @@ void disassembler::Ed(const x86_insn *insn)
(this->*resolve_modrm)(insn, D_SIZE);
}
-void disassembler::Eq(const x86_insn *insn)
+void disassembler::Eq(const x86_insn *insn)
{
if (insn->mod == 3)
dis_sprintf("%s", general_64bit_regname[insn->rm]);
@@ -158,8 +171,30 @@ void disassembler::Eq(const x86_insn *insn)
(this->*resolve_modrm)(insn, Q_SIZE);
}
+void disassembler::Ey(const x86_insn *insn)
+{
+ if (insn->os_64) Eq(insn);
+ else Ed(insn);
+}
+
+void disassembler::Ebd(const x86_insn *insn)
+{
+ if (insn->mod == 3)
+ dis_sprintf("%s", general_32bit_regname[insn->rm]);
+ else
+ (this->*resolve_modrm)(insn, B_SIZE);
+}
+
+void disassembler::Ewd(const x86_insn *insn)
+{
+ if (insn->mod == 3)
+ dis_sprintf("%s", general_32bit_regname[insn->rm]);
+ else
+ (this->*resolve_modrm)(insn, W_SIZE);
+}
+
// general purpose register
-void disassembler::Gb(const x86_insn *insn)
+void disassembler::Gb(const x86_insn *insn)
{
if (insn->nnn < 4 || insn->extend8b)
dis_sprintf("%s", general_8bit_regname_rex[insn->nnn]);
@@ -167,41 +202,69 @@ void disassembler::Gb(const x86_insn *insn)
dis_sprintf("%s", general_8bit_regname[insn->nnn]);
}
-void disassembler::Gw(const x86_insn *insn)
+void disassembler::Gw(const x86_insn *insn)
{
dis_sprintf("%s", general_16bit_regname[insn->nnn]);
}
-void disassembler::Gd(const x86_insn *insn)
+void disassembler::Gd(const x86_insn *insn)
{
dis_sprintf("%s", general_32bit_regname[insn->nnn]);
}
-void disassembler::Gq(const x86_insn *insn)
+void disassembler::Gq(const x86_insn *insn)
{
dis_sprintf("%s", general_64bit_regname[insn->nnn]);
}
+void disassembler::Gy(const x86_insn *insn)
+{
+ if (insn->os_64) Gq(insn);
+ else Gd(insn);
+}
+
+// vex encoded general purpose register
+void disassembler::By(const x86_insn *insn)
+{
+ if (insn->os_64)
+ dis_sprintf("%s", general_64bit_regname[insn->vex_vvv]);
+ else
+ dis_sprintf("%s", general_32bit_regname[insn->vex_vvv]);
+}
+
// immediate
-void disassembler::I1(const x86_insn *insn)
-{
+void disassembler::I1(const x86_insn *insn)
+{
if (! intel_mode) dis_putc('$');
dis_putc ('1');
}
-void disassembler::Ib(const x86_insn *insn)
+void disassembler::Ib(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
dis_sprintf("0x%02x", (unsigned) fetch_byte());
}
-void disassembler::Iw(const x86_insn *insn)
+void disassembler::Iw(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
dis_sprintf("0x%04x", (unsigned) fetch_word());
}
-void disassembler::IwIb(const x86_insn *insn)
+void disassembler::IbIb(const x86_insn *insn)
+{
+ Bit8u ib1 = fetch_byte();
+ Bit8u ib2 = fetch_byte();
+
+ if (intel_mode) {
+ dis_sprintf("0x%02x, 0x%02x", ib1, ib2);
+ }
+ else {
+ dis_sprintf("$0x%02x, $0x%02x", ib2, ib1);
+ }
+}
+
+void disassembler::IwIb(const x86_insn *insn)
{
Bit16u iw = fetch_word();
Bit8u ib = fetch_byte();
@@ -214,23 +277,22 @@ void disassembler::IwIb(const x86_insn *insn)
}
}
-void disassembler::Id(const x86_insn *insn)
+void disassembler::Id(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
dis_sprintf("0x%08x", (unsigned) fetch_dword());
}
-void disassembler::Iq(const x86_insn *insn)
+void disassembler::Iq(const x86_insn *insn)
{
Bit64u value = fetch_qword();
if (! intel_mode) dis_putc('$');
- dis_sprintf("0x%08x%08x",
- (unsigned)(value>>32), (unsigned)(value & 0xffffffff));
+ dis_sprintf("0x%08x%08x", GET32H(value), GET32L(value));
}
// sign extended immediate
-void disassembler::sIbw(const x86_insn *insn)
+void disassembler::sIbw(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
Bit16u imm16 = (Bit8s) fetch_byte();
@@ -238,7 +300,7 @@ void disassembler::sIbw(const x86_insn *insn)
}
// sign extended immediate
-void disassembler::sIbd(const x86_insn *insn)
+void disassembler::sIbd(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
Bit32u imm32 = (Bit8s) fetch_byte();
@@ -246,38 +308,36 @@ void disassembler::sIbd(const x86_insn *insn)
}
// sign extended immediate
-void disassembler::sIbq(const x86_insn *insn)
+void disassembler::sIbq(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
Bit64u imm64 = (Bit8s) fetch_byte();
- dis_sprintf ("0x%08x%08x",
- (unsigned)(imm64>>32), (unsigned)(imm64 & 0xffffffff));
+ dis_sprintf ("0x%08x%08x", GET32H(imm64), GET32L(imm64));
}
// sign extended immediate
-void disassembler::sIdq(const x86_insn *insn)
+void disassembler::sIdq(const x86_insn *insn)
{
if (! intel_mode) dis_putc('$');
Bit64u imm64 = (Bit32s) fetch_dword();
- dis_sprintf ("0x%08x%08x",
- (unsigned)(imm64>>32), (unsigned)(imm64 & 0xffffffff));
+ dis_sprintf ("0x%08x%08x", GET32H(imm64), GET32L(imm64));
}
// floating point
void disassembler::ST0(const x86_insn *insn)
-{
+{
if (intel_mode)
dis_sprintf ("st(0)");
else
dis_sprintf("%%st(0)");
}
-void disassembler::STi(const x86_insn *insn)
-{
+void disassembler::STi(const x86_insn *insn)
+{
if (intel_mode)
- dis_sprintf ("st(%d)", insn->rm);
+ dis_sprintf ("st(%d)", insn->rm & 7);
else
- dis_sprintf("%%st(%d)", insn->rm);
+ dis_sprintf("%%st(%d)", insn->rm & 7);
}
// 16-bit general purpose register
@@ -298,21 +358,27 @@ void disassembler::Rq(const x86_insn *insn)
dis_sprintf("%s", general_64bit_regname[insn->rm]);
}
+void disassembler::Ry(const x86_insn *insn)
+{
+ if (insn->os_64) Rq(insn);
+ else Rd(insn);
+}
+
// mmx register
void disassembler::Pq(const x86_insn *insn)
{
if (intel_mode)
- dis_sprintf ("mm%d", insn->nnn);
+ dis_sprintf ("mm%d", insn->nnn & 0x7);
else
- dis_sprintf("%%mm%d", insn->nnn);
+ dis_sprintf("%%mm%d", insn->nnn & 0x7);
}
void disassembler::Nq(const x86_insn *insn)
{
if (intel_mode)
- dis_sprintf ("mm%d", insn->rm);
+ dis_sprintf ("mm%d", insn->rm & 0x7);
else
- dis_sprintf("%%mm%d", insn->rm);
+ dis_sprintf("%%mm%d", insn->rm & 0x7);
}
void disassembler::Qd(const x86_insn *insn)
@@ -320,9 +386,9 @@ void disassembler::Qd(const x86_insn *insn)
if (insn->mod == 3)
{
if (intel_mode)
- dis_sprintf ("mm%d", insn->rm);
+ dis_sprintf ("mm%d", insn->rm & 0x7);
else
- dis_sprintf("%%mm%d", insn->rm);
+ dis_sprintf("%%mm%d", insn->rm & 0x7);
}
else
(this->*resolve_modrm)(insn, D_SIZE);
@@ -333,29 +399,27 @@ void disassembler::Qq(const x86_insn *insn)
if (insn->mod == 3)
{
if (intel_mode)
- dis_sprintf ("mm%d", insn->rm);
+ dis_sprintf ("mm%d", insn->rm & 0x7);
else
- dis_sprintf("%%mm%d", insn->rm);
+ dis_sprintf("%%mm%d", insn->rm & 0x7);
}
else
(this->*resolve_modrm)(insn, Q_SIZE);
}
-// xmm register
+// xmm/ymm register
void disassembler::Udq(const x86_insn *insn)
{
- if (intel_mode)
- dis_sprintf ("xmm%d", insn->rm);
- else
- dis_sprintf("%%xmm%d", insn->rm);
+ dis_sprintf("%s%d", vector_reg_name[insn->vex_l], insn->rm);
}
+void disassembler::Ups(const x86_insn *insn) { Udq(insn); }
+void disassembler::Upd(const x86_insn *insn) { Udq(insn); }
+void disassembler::Uq(const x86_insn *insn) { Udq(insn); }
+
void disassembler::Vq(const x86_insn *insn)
{
- if (intel_mode)
- dis_sprintf ("xmm%d", insn->nnn);
- else
- dis_sprintf("%%xmm%d", insn->nnn);
+ dis_sprintf("%s%d", vector_reg_name[insn->vex_l], insn->nnn);
}
void disassembler::Vdq(const x86_insn *insn) { Vq(insn); }
@@ -364,47 +428,60 @@ void disassembler::Vsd(const x86_insn *insn) { Vq(insn); }
void disassembler::Vps(const x86_insn *insn) { Vq(insn); }
void disassembler::Vpd(const x86_insn *insn) { Vq(insn); }
+void disassembler::VIb(const x86_insn *insn)
+{
+ unsigned vreg = fetch_byte() >> 4;
+ if (! insn->is_64) vreg &= 7;
+ dis_sprintf("%s%d", vector_reg_name[insn->vex_l], vreg);
+}
+
+void disassembler::Hdq(const x86_insn *insn)
+{
+ dis_sprintf("%s%d", vector_reg_name[insn->vex_l], insn->vex_vvv);
+}
+
+void disassembler::Hps(const x86_insn *insn) { Hdq(insn); }
+void disassembler::Hpd(const x86_insn *insn) { Hdq(insn); }
+void disassembler::Hss(const x86_insn *insn) { Hdq(insn); }
+void disassembler::Hsd(const x86_insn *insn) { Hdq(insn); }
+
+void disassembler::Wb(const x86_insn *insn)
+{
+ if (insn->mod == 3) Udq(insn);
+ else
+ (this->*resolve_modrm)(insn, B_SIZE);
+}
+
+void disassembler::Ww(const x86_insn *insn)
+{
+ if (insn->mod == 3) Udq(insn);
+ else
+ (this->*resolve_modrm)(insn, W_SIZE);
+}
+
+void disassembler::Wd(const x86_insn *insn)
+{
+ if (insn->mod == 3) Udq(insn);
+ else
+ (this->*resolve_modrm)(insn, D_SIZE);
+}
+
void disassembler::Wq(const x86_insn *insn)
{
- if (insn->mod == 3)
- {
- if (intel_mode)
- dis_sprintf ("xmm%d", insn->rm);
- else
- dis_sprintf("%%xmm%d", insn->rm);
- }
+ if (insn->mod == 3) Udq(insn);
else
(this->*resolve_modrm)(insn, Q_SIZE);
}
void disassembler::Wdq(const x86_insn *insn)
{
- if (insn->mod == 3)
- {
- if (intel_mode)
- dis_sprintf ("xmm%d", insn->rm);
- else
- dis_sprintf("%%xmm%d", insn->rm);
- }
+ if (insn->mod == 3) Udq(insn);
else
- (this->*resolve_modrm)(insn, O_SIZE);
+ (this->*resolve_modrm)(insn, XMM_SIZE + insn->vex_l);
}
void disassembler::Wsd(const x86_insn *insn) { Wq(insn); }
-
-void disassembler::Wss(const x86_insn *insn)
-{
- if (insn->mod == 3)
- {
- if (intel_mode)
- dis_sprintf ("xmm%d", insn->rm);
- else
- dis_sprintf("%%xmm%d", insn->rm);
- }
- else
- (this->*resolve_modrm)(insn, D_SIZE);
-}
-
+void disassembler::Wss(const x86_insn *insn) { Wd(insn); }
void disassembler::Wpd(const x86_insn *insn) { Wdq(insn); }
void disassembler::Wps(const x86_insn *insn) { Wdq(insn); }
@@ -422,16 +499,15 @@ void disassembler::OP_O(const x86_insn *insn, unsigned size)
if (insn->as_64) {
Bit64u imm64 = fetch_qword();
- dis_sprintf("%s:0x%08x%08x", seg,
- (unsigned)(imm64>>32), (unsigned)(imm64 & 0xffffffff));
+ dis_sprintf("%s:0x%08x%08x", seg, GET32H(imm64), GET32L(imm64));
}
else if (insn->as_32) {
Bit32u imm32 = fetch_dword();
- dis_sprintf("%s:0x%x", seg, (unsigned) imm32);
+ dis_sprintf("%s:0x%08x", seg, (unsigned) imm32);
}
else {
Bit16u imm16 = fetch_word();
- dis_sprintf("%s:0x%x", seg, (unsigned) imm16);
+ dis_sprintf("%s:0x%04x", seg, (unsigned) imm16);
}
}
@@ -460,9 +536,20 @@ void disassembler::Md(const x86_insn *insn) { OP_M(insn, D_SIZE); }
void disassembler::Mq(const x86_insn *insn) { OP_M(insn, Q_SIZE); }
void disassembler::Mt(const x86_insn *insn) { OP_M(insn, T_SIZE); }
-void disassembler::Mdq(const x86_insn *insn) { OP_M(insn, O_SIZE); }
-void disassembler::Mps(const x86_insn *insn) { OP_M(insn, O_SIZE); }
-void disassembler::Mpd(const x86_insn *insn) { OP_M(insn, O_SIZE); }
+void disassembler::Mdq(const x86_insn *insn) { OP_M(insn, XMM_SIZE + insn->vex_l); }
+void disassembler::Mps(const x86_insn *insn) { OP_M(insn, XMM_SIZE + insn->vex_l); }
+void disassembler::Mpd(const x86_insn *insn) { OP_M(insn, XMM_SIZE + insn->vex_l); }
+void disassembler::Mss(const x86_insn *insn) { OP_M(insn, D_SIZE); }
+void disassembler::Msd(const x86_insn *insn) { OP_M(insn, Q_SIZE); }
+
+// gather VSib
+void disassembler::VSib(const x86_insn *insn)
+{
+ if(insn->mod == 3)
+ dis_sprintf("(bad)");
+ else
+ (this->*resolve_modrm)(insn, (XMM_SIZE + insn->vex_l) | VSIB_Index);
+}
// string instructions
void disassembler::OP_X(const x86_insn *insn, unsigned size)
@@ -478,7 +565,7 @@ void disassembler::OP_X(const x86_insn *insn, unsigned size)
else
rsi = general_16bit_regname[rSI_REG];
}
-
+
if (insn->is_seg_override())
seg = segment_name[insn->seg_override];
else
@@ -510,7 +597,7 @@ void disassembler::OP_Y(const x86_insn *insn, unsigned size)
else
rdi = general_16bit_regname[rDI_REG];
}
-
+
print_datasize(size);
if (intel_mode)
@@ -524,6 +611,36 @@ void disassembler::Yw(const x86_insn *insn) { OP_Y(insn, W_SIZE); }
void disassembler::Yd(const x86_insn *insn) { OP_Y(insn, D_SIZE); }
void disassembler::Yq(const x86_insn *insn) { OP_Y(insn, Q_SIZE); }
+void disassembler::OP_sY(const x86_insn *insn, unsigned size)
+{
+ const char *rdi, *seg;
+
+ if (insn->as_64) {
+ rdi = general_64bit_regname[rDI_REG];
+ }
+ else {
+ if (insn->as_32)
+ rdi = general_32bit_regname[rDI_REG];
+ else
+ rdi = general_16bit_regname[rDI_REG];
+ }
+
+ print_datasize(size);
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = segment_name[DS_REG];
+
+ if (intel_mode)
+ dis_sprintf("%s:[%s]", seg, rdi);
+ else
+ dis_sprintf("%s:(%s)", seg, rdi);
+}
+
+void disassembler::sYq(const x86_insn *insn) { OP_sY(insn, Q_SIZE); }
+void disassembler::sYdq(const x86_insn *insn) { OP_sY(insn, XMM_SIZE + insn->vex_l); }
+
#define BX_JUMP_TARGET_NOT_REQ ((bx_address)(-1))
// jump offset
@@ -532,35 +649,52 @@ void disassembler::Jb(const x86_insn *insn)
Bit8s imm8 = (Bit8s) fetch_byte();
if (insn->is_64) {
- Bit64u imm64 = (Bit64s) imm8;
- dis_sprintf(".+0x%08x%08x",
- (unsigned)(imm64>>32), (unsigned)(imm64 & 0xffffffff));
+ Bit64u imm64 = (Bit8s) imm8;
- if (db_base != BX_JUMP_TARGET_NOT_REQ) {
- Bit64u target = db_eip + (Bit64s) imm64; target += db_base;
- dis_sprintf(" (0x%08x%08x)",
- (unsigned)(target>>32), (unsigned)(target & 0xffffffff));
+ if (offset_mode_hex) {
+ dis_sprintf(".+0x%08x%08x", GET32H(imm64), GET32L(imm64));
+ }
+ else {
+ dis_sprintf(".%+d", (int) imm8);
+ }
+
+ if (db_cs_base != BX_JUMP_TARGET_NOT_REQ) {
+ Bit64u target = db_eip + imm64;
+ target += db_cs_base;
+ dis_sprintf(" (0x%08x%08x)", GET32H(target), GET32L(target));
}
return;
}
if (insn->os_32) {
- Bit32u imm32 = (Bit32s) imm8;
- dis_sprintf(".+0x%08x", (unsigned) imm32);
+ Bit32u imm32 = (Bit8s) imm8;
- if (db_base != BX_JUMP_TARGET_NOT_REQ) {
- Bit32u target = (Bit32u)(db_eip + (Bit32s) imm32); target += (Bit32u)db_base;
+ if (offset_mode_hex) {
+ dis_sprintf(".+0x%08x", (unsigned) imm32);
+ }
+ else {
+ dis_sprintf(".%+d", (int) imm8);
+ }
+
+ if (db_cs_base != BX_JUMP_TARGET_NOT_REQ) {
+ Bit32u target = (Bit32u)(db_cs_base + db_eip + (Bit32s) imm32);
dis_sprintf(" (0x%08x)", target);
}
}
else {
- Bit16u imm16 = (Bit16s) imm8;
- dis_sprintf(".+0x%04x", (unsigned) imm16);
+ Bit16u imm16 = (Bit8s) imm8;
- if (db_base != BX_JUMP_TARGET_NOT_REQ) {
- Bit16u target = (Bit32u)(db_eip + (Bit16s) imm16) & 0xffff;
- dis_sprintf(" (0x%08x)", target + db_base);
+ if (offset_mode_hex) {
+ dis_sprintf(".+0x%04x", (unsigned) imm16);
+ }
+ else {
+ dis_sprintf(".%+d", (int) imm8);
+ }
+
+ if (db_cs_base != BX_JUMP_TARGET_NOT_REQ) {
+ Bit16u target = (Bit16u)((db_eip + (Bit16s) imm16) & 0xffff);
+ dis_sprintf(" (0x%08x)", target + db_cs_base);
}
}
}
@@ -569,14 +703,19 @@ void disassembler::Jw(const x86_insn *insn)
{
// Jw supported in 16-bit mode only
assert(! insn->is_64);
- assert(! insn->is_32);
- Bit16u imm16 = (Bit16s) fetch_word();
- dis_sprintf(".+0x%04x", (unsigned) imm16);
+ Bit16s imm16 = (Bit16s) fetch_word();
- if (db_base != BX_JUMP_TARGET_NOT_REQ) {
- Bit16u target = (Bit32u)(db_eip + (Bit16s) imm16) & 0xffff;
- dis_sprintf(" (0x%08x)", target + db_base);
+ if (offset_mode_hex) {
+ dis_sprintf(".+0x%04x", (unsigned) (Bit16u) imm16);
+ }
+ else {
+ dis_sprintf(".%+d", (int) imm16);
+ }
+
+ if (db_cs_base != BX_JUMP_TARGET_NOT_REQ) {
+ Bit16u target = (db_eip + imm16) & 0xffff;
+ dis_sprintf(" (0x%08x)", target + db_cs_base);
}
}
@@ -585,23 +724,32 @@ void disassembler::Jd(const x86_insn *insn)
Bit32s imm32 = (Bit32s) fetch_dword();
if (insn->is_64) {
- Bit64u imm64 = (Bit64s) imm32;
- dis_sprintf(".+0x%08x%08x",
- (unsigned)(imm64>>32), (unsigned)(imm64 & 0xffffffff));
+ Bit64u imm64 = (Bit32s) imm32;
- if (db_base != BX_JUMP_TARGET_NOT_REQ) {
- Bit64u target = db_eip + (Bit64s) imm64; target += db_base;
- dis_sprintf(" (0x%08x%08x)",
- (unsigned)(target>>32), (unsigned)(target & 0xffffffff));
+ if (offset_mode_hex) {
+ dis_sprintf(".+0x%08x%08x", GET32H(imm64), GET32L(imm64));
+ }
+ else {
+ dis_sprintf(".%+d", (int) imm32);
+ }
+
+ if (db_cs_base != BX_JUMP_TARGET_NOT_REQ) {
+ Bit64u target = db_cs_base + db_eip + (Bit64s) imm64;
+ dis_sprintf(" (0x%08x%08x)", GET32H(target), GET32L(target));
}
return;
}
- dis_sprintf(".+0x%08x", (unsigned) imm32);
+ if (offset_mode_hex) {
+ dis_sprintf(".+0x%08x", (unsigned) imm32);
+ }
+ else {
+ dis_sprintf(".%+d", (int) imm32);
+ }
- if (db_base != BX_JUMP_TARGET_NOT_REQ) {
- Bit32u target = (Bit32u)(db_eip + (Bit32s) imm32); target += (Bit32u)db_base;
+ if (db_cs_base != BX_JUMP_TARGET_NOT_REQ) {
+ Bit32u target = (Bit32u)(db_cs_base + db_eip + (Bit32s) imm32);
dis_sprintf(" (0x%08x)", target);
}
}
diff --git a/Externals/Bochs_disasm/dis_tables.h b/Externals/Bochs_disasm/dis_tables.h
index f7291e0541..9fe9701c05 100644
--- a/Externals/Bochs_disasm/dis_tables.h
+++ b/Externals/Bochs_disasm/dis_tables.h
@@ -1,6 +1,23 @@
/////////////////////////////////////////////////////////////////////////
-// $Id: dis_tables.h,v 1.29 2006/04/27 15:11:45 sshwarts Exp $
+// $Id: dis_tables.h 11878 2013-10-11 20:09:51Z sshwarts $
/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2012 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef _BX_DISASM_TABLES_
#define _BX_DISASM_TABLES_
@@ -11,70 +28,93 @@
#define _GRPFP 3
#define _GRP3DNOW 4
#define _GRPSSE 5
-#define _GRPRM 6
-#define _GRP3BOP 7
-#define _GRP3BTAB 8
+#define _GRPSSE66 6
+#define _GRPSSEF2 7
+#define _GRPSSEF3 8
+#define _GRPSSENONE 9
+#define _GRPSSE2 10
+#define _GRPRM 11
+#define _GRP3BOP 12
+#define _GRP64B 13
+#define _GRPVEXW 14
/* ************************************************************************ */
#define GRPSSE(n) _GRPSSE, BxDisasmGroupSSE_##n
+#define GRPSSE2(n) _GRPSSE2, BxDisasmGroupSSE_##n
+#define GRPAVX(n) _GRPSSE, BxDisasmGroupAVX_##n
+#define GRPAVX2(n) _GRPSSE2, BxDisasmGroupAVX_##n
#define GRPN(n) _GROUPN, BxDisasmGroup##n
#define GRPRM(n) _GRPRM, BxDisasmGroupRm##n
#define GRPMOD(n) _SPLIT11B, BxDisasmGroupMod##n
#define GRPFP(n) _GRPFP, BxDisasmFPGroup##n
#define GRP3DNOW _GRP3DNOW, BxDisasm3DNowGroup
-#define GR3BOP(n) _GRP3BOP, BxDisasm3ByteOp##n
-#define GR3BTAB(n) _GRP3BTAB, BxDisasm3ByteTable##n
+#define GR3BTAB(n) _GRP3BOP, BxDisasm3ByteOpTable##n
+#define GR64BIT(n) _GRP64B, BxDisasmGrpOs64B_##n
+#define GRPVEXW(n) _GRPVEXW, BxDisasmGrpVexW_##n
+/* ************************************************************************ */
+
+/* ************************************************************************ */
+#define GRPSSE66(n) _GRPSSE66, &n
+#define GRPSSEF2(n) _GRPSSEF2, &n
+#define GRPSSEF3(n) _GRPSSEF3, &n
+#define GRPSSENONE(n) _GRPSSENONE, &n
/* ************************************************************************ */
#define Apw &disassembler::Apw
#define Apd &disassembler::Apd
-#define AL &disassembler::AL
-#define CL &disassembler::CL
-#define AX &disassembler::AX
-#define DX &disassembler::DX
+#define AL_Reg &disassembler::AL_Reg
+#define CL_Reg &disassembler::CL_Reg
+#define AX_Reg &disassembler::AX_Reg
+#define DX_Reg &disassembler::DX_Reg
-#define EAX &disassembler::EAX
-#define RAX &disassembler::RAX
+#define EAX_Reg &disassembler::EAX_Reg
+#define RAX_Reg &disassembler::RAX_Reg
+#define RCX_Reg &disassembler::RCX_Reg
-#define CS &disassembler::CS
-#define DS &disassembler::DS
-#define ES &disassembler::ES
-#define SS &disassembler::SS
-#define FS &disassembler::FS
-#define GS &disassembler::GS
+#define CS &disassembler::CS
+#define DS &disassembler::DS
+#define ES &disassembler::ES
+#define SS &disassembler::SS
+#define FS &disassembler::FS
+#define GS &disassembler::GS
-#define Sw &disassembler::Sw
+#define Sw &disassembler::Sw
-#define Td &disassembler::Td
+#define Cd &disassembler::Cd
+#define Cq &disassembler::Cq
-#define Cd &disassembler::Cd
-#define Cq &disassembler::Cq
+#define Dd &disassembler::Dd
+#define Dq &disassembler::Dq
-#define Dd &disassembler::Dd
-#define Dq &disassembler::Dq
+#define Reg8 &disassembler::Reg8
+#define RX &disassembler::RX
+#define ERX &disassembler::ERX
+#define RRX &disassembler::RRX
-#define R8 &disassembler::R8
-#define RX &disassembler::RX
-#define ERX &disassembler::ERX
-#define RRX &disassembler::RRX
+#define Eb &disassembler::Eb
+#define Ew &disassembler::Ew
+#define Ed &disassembler::Ed
+#define Eq &disassembler::Eq
+#define Ey &disassembler::Ey
+#define Ebd &disassembler::Ebd
+#define Ewd &disassembler::Ewd
-#define Eb &disassembler::Eb
-#define Ew &disassembler::Ew
-#define Ed &disassembler::Ed
-#define Eq &disassembler::Eq
+#define Gb &disassembler::Gb
+#define Gw &disassembler::Gw
+#define Gd &disassembler::Gd
+#define Gq &disassembler::Gq
+#define Gy &disassembler::Gy
-#define Gb &disassembler::Gb
-#define Gw &disassembler::Gw
-#define Gd &disassembler::Gd
-#define Gq &disassembler::Gq
+#define By &disassembler::By
-#define I1 &disassembler::I1
-#define Ib &disassembler::Ib
-#define Iw &disassembler::Iw
-#define Id &disassembler::Id
-#define Iq &disassembler::Iq
+#define I1 &disassembler::I1
+#define Ib &disassembler::Ib
+#define Iw &disassembler::Iw
+#define Id &disassembler::Id
+#define Iq &disassembler::Iq
+#define IbIb &disassembler::IbIb
#define IwIb &disassembler::IwIb
#define sIbw &disassembler::sIbw
@@ -85,14 +125,15 @@
#define ST0 &disassembler::ST0
#define STi &disassembler::STi
-#define Rw &disassembler::Rw
-#define Rd &disassembler::Rd
-#define Rq &disassembler::Rq
+#define Rw &disassembler::Rw
+#define Rd &disassembler::Rd
+#define Rq &disassembler::Rq
+#define Ry &disassembler::Ry
-#define Pq &disassembler::Pq
-#define Qd &disassembler::Qd
-#define Qq &disassembler::Qq
-#define Nq &disassembler::Nq
+#define Pq &disassembler::Pq
+#define Qd &disassembler::Qd
+#define Qq &disassembler::Qq
+#define Nq &disassembler::Nq
#define Vq &disassembler::Vq
#define Vdq &disassembler::Vdq
@@ -100,8 +141,16 @@
#define Vsd &disassembler::Vsd
#define Vps &disassembler::Vps
#define Vpd &disassembler::Vpd
-#define Udq &disassembler::Udq
+#define VIb &disassembler::VIb
+#define Ups &disassembler::Ups
+#define Upd &disassembler::Upd
+#define Udq &disassembler::Udq
+#define Uq &disassembler::Uq
+
+#define Wb &disassembler::Wb
+#define Ww &disassembler::Ww
+#define Wd &disassembler::Wd
#define Wq &disassembler::Wq
#define Wdq &disassembler::Wdq
#define Wss &disassembler::Wss
@@ -109,10 +158,16 @@
#define Wps &disassembler::Wps
#define Wpd &disassembler::Wpd
-#define Ob &disassembler::Ob
-#define Ow &disassembler::Ow
-#define Od &disassembler::Od
-#define Oq &disassembler::Oq
+#define Hdq &disassembler::Hdq
+#define Hps &disassembler::Hps
+#define Hpd &disassembler::Hpd
+#define Hss &disassembler::Hss
+#define Hsd &disassembler::Hsd
+
+#define Ob &disassembler::Ob
+#define Ow &disassembler::Ow
+#define Od &disassembler::Od
+#define Oq &disassembler::Oq
#define Ma &disassembler::Ma
#define Mp &disassembler::Mp
@@ -126,26 +181,37 @@
#define Mdq &disassembler::Mdq
#define Mps &disassembler::Mps
#define Mpd &disassembler::Mpd
+#define Mss &disassembler::Mss
+#define Msd &disassembler::Msd
-#define Xb &disassembler::Xb
-#define Xw &disassembler::Xw
-#define Xd &disassembler::Xd
-#define Xq &disassembler::Xq
+#define VSib &disassembler::VSib
-#define Yb &disassembler::Yb
-#define Yw &disassembler::Yw
-#define Yd &disassembler::Yd
-#define Yq &disassembler::Yq
+#define Xb &disassembler::Xb
+#define Xw &disassembler::Xw
+#define Xd &disassembler::Xd
+#define Xq &disassembler::Xq
-#define Jb &disassembler::Jb
-#define Jw &disassembler::Jw
-#define Jd &disassembler::Jd
+#define Yb &disassembler::Yb
+#define Yw &disassembler::Yw
+#define Yd &disassembler::Yd
+#define Yq &disassembler::Yq
-#define XX 0
+#define sYq &disassembler::sYq
+#define sYdq &disassembler::sYdq
+
+#define Jb &disassembler::Jb
+#define Jw &disassembler::Jw
+#define Jd &disassembler::Jd
+
+#define XX 0
const struct BxDisasmOpcodeInfo_t
-#include "opcodes.inl"
-#include "dis_tables.inl"
+#include "opcodes.inc"
+#include "dis_tables_x87.inc"
+#include "dis_tables_sse.inc"
+#include "dis_tables_avx.inc"
+#include "dis_tables_xop.inc"
+#include "dis_tables.inc"
#undef XX
diff --git a/Externals/Bochs_disasm/dis_tables.inc b/Externals/Bochs_disasm/dis_tables.inc
new file mode 100644
index 0000000000..6a80fbfd70
--- /dev/null
+++ b/Externals/Bochs_disasm/dis_tables.inc
@@ -0,0 +1,3282 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: dis_tables.inc 12247 2014-03-17 20:29:44Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2013 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+/* ************************************************************************ */
+/* Opcode GroupN */
+
+/* Group1 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EbIb[8] = {
+ /* 0 */ { 0, &Ia_addb_Eb_Ib },
+ /* 1 */ { 0, &Ia_orb_Eb_Ib },
+ /* 2 */ { 0, &Ia_adcb_Eb_Ib },
+ /* 3 */ { 0, &Ia_sbbb_Eb_Ib },
+ /* 4 */ { 0, &Ia_andb_Eb_Ib },
+ /* 5 */ { 0, &Ia_subb_Eb_Ib },
+ /* 6 */ { 0, &Ia_xorb_Eb_Ib },
+ /* 7 */ { 0, &Ia_cmpb_Eb_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EwIw[8] = {
+ /* 0 */ { 0, &Ia_addw_Ew_Iw },
+ /* 1 */ { 0, &Ia_orw_Ew_Iw },
+ /* 2 */ { 0, &Ia_adcw_Ew_Iw },
+ /* 3 */ { 0, &Ia_sbbw_Ew_Iw },
+ /* 4 */ { 0, &Ia_andw_Ew_Iw },
+ /* 5 */ { 0, &Ia_subw_Ew_Iw },
+ /* 6 */ { 0, &Ia_xorw_Ew_Iw },
+ /* 7 */ { 0, &Ia_cmpw_Ew_Iw }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EdId[8] = {
+ /* 0 */ { 0, &Ia_addl_Ed_Id },
+ /* 1 */ { 0, &Ia_orl_Ed_Id },
+ /* 2 */ { 0, &Ia_adcl_Ed_Id },
+ /* 3 */ { 0, &Ia_sbbl_Ed_Id },
+ /* 4 */ { 0, &Ia_andl_Ed_Id },
+ /* 5 */ { 0, &Ia_subl_Ed_Id },
+ /* 6 */ { 0, &Ia_xorl_Ed_Id },
+ /* 7 */ { 0, &Ia_cmpl_Ed_Id }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EqId[8] = {
+ /* 0 */ { 0, &Ia_addq_Eq_sId },
+ /* 1 */ { 0, &Ia_orq_Eq_sId },
+ /* 2 */ { 0, &Ia_adcq_Eq_sId },
+ /* 3 */ { 0, &Ia_sbbq_Eq_sId },
+ /* 4 */ { 0, &Ia_andq_Eq_sId },
+ /* 5 */ { 0, &Ia_subq_Eq_sId },
+ /* 6 */ { 0, &Ia_xorq_Eq_sId },
+ /* 7 */ { 0, &Ia_cmpq_Eq_sId }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EwIb[8] = {
+ /* 0 */ { 0, &Ia_addw_Ew_sIb }, // sign-extend byte
+ /* 1 */ { 0, &Ia_orw_Ew_sIb },
+ /* 2 */ { 0, &Ia_adcw_Ew_sIb },
+ /* 3 */ { 0, &Ia_sbbw_Ew_sIb },
+ /* 4 */ { 0, &Ia_andw_Ew_sIb },
+ /* 5 */ { 0, &Ia_subw_Ew_sIb },
+ /* 6 */ { 0, &Ia_xorw_Ew_sIb },
+ /* 7 */ { 0, &Ia_cmpw_Ew_sIb }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EdIb[8] = {
+ /* 0 */ { 0, &Ia_addl_Ed_sIb }, // sign-extend byte
+ /* 1 */ { 0, &Ia_orl_Ed_sIb },
+ /* 2 */ { 0, &Ia_adcl_Ed_sIb },
+ /* 3 */ { 0, &Ia_sbbl_Ed_sIb },
+ /* 4 */ { 0, &Ia_andl_Ed_sIb },
+ /* 5 */ { 0, &Ia_subl_Ed_sIb },
+ /* 6 */ { 0, &Ia_xorl_Ed_sIb },
+ /* 7 */ { 0, &Ia_cmpl_Ed_sIb }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG1EqIb[8] = {
+ /* 0 */ { 0, &Ia_addq_Eq_sIb }, // sign-extend byte
+ /* 1 */ { 0, &Ia_orq_Eq_sIb },
+ /* 2 */ { 0, &Ia_adcq_Eq_sIb },
+ /* 3 */ { 0, &Ia_sbbq_Eq_sIb },
+ /* 4 */ { 0, &Ia_andq_Eq_sIb },
+ /* 5 */ { 0, &Ia_subq_Eq_sIb },
+ /* 6 */ { 0, &Ia_xorq_Eq_sIb },
+ /* 7 */ { 0, &Ia_cmpq_Eq_sIb }
+};
+
+/* Group2 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG2Eb[8] = {
+ /* 0 */ { 0, &Ia_rolb_Eb_Ib },
+ /* 1 */ { 0, &Ia_rorb_Eb_Ib },
+ /* 2 */ { 0, &Ia_rclb_Eb_Ib },
+ /* 3 */ { 0, &Ia_rcrb_Eb_Ib },
+ /* 4 */ { 0, &Ia_shlb_Eb_Ib },
+ /* 5 */ { 0, &Ia_shrb_Eb_Ib },
+ /* 6 */ { 0, &Ia_shlb_Eb_Ib },
+ /* 7 */ { 0, &Ia_sarb_Eb_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EbI1[8] = {
+ /* 0 */ { 0, &Ia_rolb_Eb_I1 },
+ /* 1 */ { 0, &Ia_rorb_Eb_I1 },
+ /* 2 */ { 0, &Ia_rclb_Eb_I1 },
+ /* 3 */ { 0, &Ia_rcrb_Eb_I1 },
+ /* 4 */ { 0, &Ia_shlb_Eb_I1 },
+ /* 5 */ { 0, &Ia_shrb_Eb_I1 },
+ /* 6 */ { 0, &Ia_shlb_Eb_I1 },
+ /* 7 */ { 0, &Ia_sarb_Eb_I1 }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EbCL[8] = {
+ /* 0 */ { 0, &Ia_rolb_Eb_CL },
+ /* 1 */ { 0, &Ia_rorb_Eb_CL },
+ /* 2 */ { 0, &Ia_rclb_Eb_CL },
+ /* 3 */ { 0, &Ia_rcrb_Eb_CL },
+ /* 4 */ { 0, &Ia_shlb_Eb_CL },
+ /* 5 */ { 0, &Ia_shrb_Eb_CL },
+ /* 6 */ { 0, &Ia_shlb_Eb_CL },
+ /* 7 */ { 0, &Ia_sarb_Eb_CL }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2Ew[8] = {
+ /* 0 */ { 0, &Ia_rolw_Ew_Ib },
+ /* 1 */ { 0, &Ia_rorw_Ew_Ib },
+ /* 2 */ { 0, &Ia_rclw_Ew_Ib },
+ /* 3 */ { 0, &Ia_rcrw_Ew_Ib },
+ /* 4 */ { 0, &Ia_shlw_Ew_Ib },
+ /* 5 */ { 0, &Ia_shrw_Ew_Ib },
+ /* 6 */ { 0, &Ia_shlw_Ew_Ib },
+ /* 7 */ { 0, &Ia_sarw_Ew_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2Ed[8] = {
+ /* 0 */ { 0, &Ia_roll_Ed_Ib },
+ /* 1 */ { 0, &Ia_rorl_Ed_Ib },
+ /* 2 */ { 0, &Ia_rcll_Ed_Ib },
+ /* 3 */ { 0, &Ia_rcrl_Ed_Ib },
+ /* 4 */ { 0, &Ia_shll_Ed_Ib },
+ /* 5 */ { 0, &Ia_shrl_Ed_Ib },
+ /* 6 */ { 0, &Ia_shll_Ed_Ib },
+ /* 7 */ { 0, &Ia_sarl_Ed_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2Eq[8] = {
+ /* 0 */ { 0, &Ia_rolq_Eq_Ib },
+ /* 1 */ { 0, &Ia_rorq_Eq_Ib },
+ /* 2 */ { 0, &Ia_rclq_Eq_Ib },
+ /* 3 */ { 0, &Ia_rcrq_Eq_Ib },
+ /* 4 */ { 0, &Ia_shlq_Eq_Ib },
+ /* 5 */ { 0, &Ia_shrq_Eq_Ib },
+ /* 6 */ { 0, &Ia_shlq_Eq_Ib },
+ /* 7 */ { 0, &Ia_sarq_Eq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EwI1[8] = {
+ /* 0 */ { 0, &Ia_rolw_Ew_I1 },
+ /* 1 */ { 0, &Ia_rorw_Ew_I1 },
+ /* 2 */ { 0, &Ia_rclw_Ew_I1 },
+ /* 3 */ { 0, &Ia_rcrw_Ew_I1 },
+ /* 4 */ { 0, &Ia_shlw_Ew_I1 },
+ /* 5 */ { 0, &Ia_shrw_Ew_I1 },
+ /* 6 */ { 0, &Ia_shlw_Ew_I1 },
+ /* 7 */ { 0, &Ia_sarw_Ew_I1 }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EdI1[8] = {
+ /* 0 */ { 0, &Ia_roll_Ed_I1 },
+ /* 1 */ { 0, &Ia_rorl_Ed_I1 },
+ /* 2 */ { 0, &Ia_rcll_Ed_I1 },
+ /* 3 */ { 0, &Ia_rcrl_Ed_I1 },
+ /* 4 */ { 0, &Ia_shll_Ed_I1 },
+ /* 5 */ { 0, &Ia_shrl_Ed_I1 },
+ /* 6 */ { 0, &Ia_shll_Ed_I1 },
+ /* 7 */ { 0, &Ia_sarl_Ed_I1 }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EqI1[8] = {
+ /* 0 */ { 0, &Ia_rolq_Eq_I1 },
+ /* 1 */ { 0, &Ia_rorq_Eq_I1 },
+ /* 2 */ { 0, &Ia_rclq_Eq_I1 },
+ /* 3 */ { 0, &Ia_rcrq_Eq_I1 },
+ /* 4 */ { 0, &Ia_shlq_Eq_I1 },
+ /* 5 */ { 0, &Ia_shrq_Eq_I1 },
+ /* 6 */ { 0, &Ia_shlq_Eq_I1 },
+ /* 7 */ { 0, &Ia_sarq_Eq_I1 }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EwCL[8] = {
+ /* 0 */ { 0, &Ia_rolw_Ew_CL },
+ /* 1 */ { 0, &Ia_rorw_Ew_CL },
+ /* 2 */ { 0, &Ia_rclw_Ew_CL },
+ /* 3 */ { 0, &Ia_rcrw_Ew_CL },
+ /* 4 */ { 0, &Ia_shlw_Ew_CL },
+ /* 5 */ { 0, &Ia_shrw_Ew_CL },
+ /* 6 */ { 0, &Ia_shlw_Ew_CL },
+ /* 7 */ { 0, &Ia_sarw_Ew_CL }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EdCL[8] = {
+ /* 0 */ { 0, &Ia_roll_Ed_CL },
+ /* 1 */ { 0, &Ia_rorl_Ed_CL },
+ /* 2 */ { 0, &Ia_rcll_Ed_CL },
+ /* 3 */ { 0, &Ia_rcrl_Ed_CL },
+ /* 4 */ { 0, &Ia_shll_Ed_CL },
+ /* 5 */ { 0, &Ia_shrl_Ed_CL },
+ /* 6 */ { 0, &Ia_shll_Ed_CL },
+ /* 7 */ { 0, &Ia_sarl_Ed_CL }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG2EqCL[8] = {
+ /* 0 */ { 0, &Ia_rolq_Eq_CL },
+ /* 1 */ { 0, &Ia_rorq_Eq_CL },
+ /* 2 */ { 0, &Ia_rclq_Eq_CL },
+ /* 3 */ { 0, &Ia_rcrq_Eq_CL },
+ /* 4 */ { 0, &Ia_shlq_Eq_CL },
+ /* 5 */ { 0, &Ia_shrq_Eq_CL },
+ /* 6 */ { 0, &Ia_shlq_Eq_CL },
+ /* 7 */ { 0, &Ia_sarq_Eq_CL }
+};
+
+/* Group3 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG3Eb[8] = {
+ /* 0 */ { 0, &Ia_testb_Eb_Ib },
+ /* 1 */ { 0, &Ia_testb_Eb_Ib },
+ /* 2 */ { 0, &Ia_notb_Eb },
+ /* 3 */ { 0, &Ia_negb_Eb },
+ /* 4 */ { 0, &Ia_mulb_AL_Eb },
+ /* 5 */ { 0, &Ia_imulb_AL_Eb },
+ /* 6 */ { 0, &Ia_divb_AL_Eb },
+ /* 7 */ { 0, &Ia_idivb_AL_Eb }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG3Ew[8] = {
+ /* 0 */ { 0, &Ia_testw_Ew_Iw },
+ /* 1 */ { 0, &Ia_testw_Ew_Iw },
+ /* 2 */ { 0, &Ia_notw_Ew },
+ /* 3 */ { 0, &Ia_negw_Ew },
+ /* 4 */ { 0, &Ia_mulw_AX_Ew },
+ /* 5 */ { 0, &Ia_imulw_AX_Ew },
+ /* 6 */ { 0, &Ia_divw_AX_Ew },
+ /* 7 */ { 0, &Ia_idivw_AX_Ew }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG3Ed[8] = {
+ /* 0 */ { 0, &Ia_testl_Ed_Id },
+ /* 1 */ { 0, &Ia_testl_Ed_Id },
+ /* 2 */ { 0, &Ia_notl_Ed },
+ /* 3 */ { 0, &Ia_negl_Ed },
+ /* 4 */ { 0, &Ia_mull_EAX_Ed },
+ /* 5 */ { 0, &Ia_imull_EAX_Ed },
+ /* 6 */ { 0, &Ia_divl_EAX_Ed },
+ /* 7 */ { 0, &Ia_idivl_EAX_Ed }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG3Eq[8] = {
+ /* 0 */ { 0, &Ia_testq_Eq_sId },
+ /* 1 */ { 0, &Ia_testq_Eq_sId },
+ /* 2 */ { 0, &Ia_notq_Eq },
+ /* 3 */ { 0, &Ia_negq_Eq },
+ /* 4 */ { 0, &Ia_mulq_RAX_Eq },
+ /* 5 */ { 0, &Ia_imulq_RAX_Eq },
+ /* 6 */ { 0, &Ia_divq_RAX_Eq },
+ /* 7 */ { 0, &Ia_idivq_RAX_Eq }
+};
+
+/* Group4 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG4[8] = {
+ /* 0 */ { 0, &Ia_incb_Eb },
+ /* 1 */ { 0, &Ia_decb_Eb },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group5 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG5w[8] = {
+ /* 0 */ { 0, &Ia_incw_Ew },
+ /* 1 */ { 0, &Ia_decw_Ew },
+ /* 2 */ { 0, &Ia_call_Ew },
+ /* 3 */ { 0, &Ia_lcall_Mp },
+ /* 4 */ { 0, &Ia_jmp_Ew },
+ /* 5 */ { 0, &Ia_ljmp_Mp },
+ /* 6 */ { 0, &Ia_pushw_Ew },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG5d[8] = {
+ /* 0 */ { 0, &Ia_incl_Ed },
+ /* 1 */ { 0, &Ia_decl_Ed },
+ /* 2 */ { 0, &Ia_call_Ed },
+ /* 3 */ { 0, &Ia_lcall_Mp },
+ /* 4 */ { 0, &Ia_jmp_Ed },
+ /* 5 */ { 0, &Ia_ljmp_Mp },
+ /* 6 */ { 0, &Ia_pushl_Ed },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroup64G5w[8] = {
+ /* 0 */ { 0, &Ia_incw_Ew },
+ /* 1 */ { 0, &Ia_decw_Ew },
+ /* 2 */ { 0, &Ia_call_Eq },
+ /* 3 */ { 0, &Ia_lcall_Mp },
+ /* 4 */ { 0, &Ia_jmp_Eq },
+ /* 5 */ { 0, &Ia_ljmp_Mp },
+ /* 6 */ { 0, &Ia_pushw_Ew },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroup64G5d[8] = {
+ /* 0 */ { 0, &Ia_incl_Ed },
+ /* 1 */ { 0, &Ia_decl_Ed },
+ /* 2 */ { 0, &Ia_call_Eq },
+ /* 3 */ { 0, &Ia_lcall_Mp },
+ /* 4 */ { 0, &Ia_jmp_Eq },
+ /* 5 */ { 0, &Ia_ljmp_Mp },
+ /* 6 */ { 0, &Ia_pushq_Eq },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroup64G5q[8] = {
+ /* 0 */ { 0, &Ia_incq_Eq },
+ /* 1 */ { 0, &Ia_decq_Eq },
+ /* 2 */ { 0, &Ia_call_Eq },
+ /* 3 */ { 0, &Ia_lcall_Mp },
+ /* 4 */ { 0, &Ia_jmp_Eq },
+ /* 5 */ { 0, &Ia_ljmp_Mp },
+ /* 6 */ { 0, &Ia_pushq_Eq },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group6 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG6[8] = {
+ /* 0 */ { 0, &Ia_sldt },
+ /* 1 */ { 0, &Ia_str },
+ /* 2 */ { 0, &Ia_lldt },
+ /* 3 */ { 0, &Ia_ltr },
+ /* 4 */ { 0, &Ia_verr },
+ /* 5 */ { 0, &Ia_verw },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group7 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG7M[8] = {
+ /* 0 */ { 0, &Ia_sgdt },
+ /* 2 */ { 0, &Ia_sidt },
+ /* 2 */ { 0, &Ia_lgdt },
+ /* 3 */ { 0, &Ia_lidt },
+ /* 4 */ { 0, &Ia_smsw_Ew },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_lmsw_Ew },
+ /* 7 */ { 0, &Ia_invlpg }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupRmINVLPG[8] = {
+ /* 0 */ { 0, &Ia_swapgs },
+ /* 1 */ { 0, &Ia_rdtscp },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* VMX */
+static BxDisasmOpcodeTable_t BxDisasmGroupRmG7VMX[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { GRPSSENONE(Ia_vmcall) },
+ /* 2 */ { GRPSSENONE(Ia_vmlaunch) },
+ /* 3 */ { GRPSSENONE(Ia_vmresume) },
+ /* 4 */ { GRPSSENONE(Ia_vmxoff) },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupRmMONITOR[8] = {
+ /* 0 */ { GRPSSENONE(Ia_monitor) },
+ /* 1 */ { GRPSSENONE(Ia_mwait) },
+ /* 2 */ { 0, &Ia_clac },
+ /* 3 */ { 0, &Ia_stac },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupRmXSETGET[8] = {
+ /* 0 */ { GRPSSENONE(Ia_xgetbv) },
+ /* 1 */ { GRPSSENONE(Ia_xsetbv) },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { GRPSSENONE(Ia_vmfunc) },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupRmG7SVM[8] = {
+ /* 0 */ { 0, &Ia_vmrun },
+ /* 1 */ { 0, &Ia_vmmcall },
+ /* 2 */ { 0, &Ia_vmload },
+ /* 3 */ { 0, &Ia_vmsave },
+ /* 4 */ { 0, &Ia_stgi },
+ /* 5 */ { 0, &Ia_clgi },
+ /* 6 */ { 0, &Ia_skinit },
+ /* 7 */ { 0, &Ia_invlpga }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG7R[8] = {
+ /* 0 */ { GRPRM(G7VMX) }, // VMX
+ /* 1 */ { GRPRM(MONITOR) },
+ /* 2 */ { GRPRM(XSETGET) },
+ /* 3 */ { GRPRM(G7SVM) }, // SVM
+ /* 4 */ { 0, &Ia_smsw_Ew },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_lmsw_Ew },
+ /* 7 */ { GRPRM(INVLPG) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModG7[2] = {
+ /* R */ { GRPN(G7R) },
+ /* M */ { GRPN(G7M) }
+};
+
+/* Group8 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG8EwIb[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_btw_Ew_Ib },
+ /* 5 */ { 0, &Ia_btsw_Ew_Ib },
+ /* 6 */ { 0, &Ia_btrw_Ew_Ib },
+ /* 7 */ { 0, &Ia_btcw_Ew_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG8EdIb[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_btl_Ed_Ib },
+ /* 5 */ { 0, &Ia_btsl_Ed_Ib },
+ /* 6 */ { 0, &Ia_btrl_Ed_Ib },
+ /* 7 */ { 0, &Ia_btcl_Ed_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG8EqIb[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_btq_Eq_Ib },
+ /* 5 */ { 0, &Ia_btsq_Eq_Ib },
+ /* 6 */ { 0, &Ia_btrq_Eq_Ib },
+ /* 7 */ { 0, &Ia_btcq_Eq_Ib }
+};
+
+/* ****** */
+/* Group9 */
+/* ****** */
+
+/* VMX */
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G9VMX6[4] = {
+ /* -- */ { 0, &Ia_vmptrld_Mq },
+ /* 66 */ { 0, &Ia_vmclear_Mq },
+ /* F3 */ { 0, &Ia_vmxon_Mq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG9M[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_cmpxchg8b_Mq },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_xsavec },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE(G9VMX6) },
+ /* 7 */ { GRPSSENONE(Ia_vmptrst_Mq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG9Mq[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_cmpxchg16b_Mdq },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_xsavec },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE(G9VMX6) },
+ /* 7 */ { GRPSSENONE(Ia_vmptrst_Mq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG9Rw[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSENONE(Ia_rdrand_Ew) },
+ /* 7 */ { GRPSSENONE(Ia_rdseed_Ew) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG9Rd[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSENONE(Ia_rdrand_Ed) },
+ /* 7 */ { GRPSSENONE(Ia_rdseed_Ed) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG9Rq[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSENONE(Ia_rdrand_Eq) },
+ /* 7 */ { GRPSSENONE(Ia_rdseed_Eq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModG9w[2] = {
+ /* R */ { GRPN(G9Rw) },
+ /* M */ { GRPN(G9M) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModG9d[2] = {
+ /* R */ { GRPN(G9Rd) },
+ /* M */ { GRPN(G9M) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModG9q[2] = {
+ /* R */ { GRPN(G9Rq) },
+ /* M */ { GRPN(G9Mq) }
+};
+
+/* Group11 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG11Eb[8] = {
+ /* 0 */ { 0, &Ia_movb_Eb_Ib },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG11Ew[8] = {
+ /* 0 */ { 0, &Ia_movw_Ew_Iw },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG11Ed[8] = {
+ /* 0 */ { 0, &Ia_movl_Ed_Id },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG11Eq[8] = {
+ /* 0 */ { 0, &Ia_movq_Eq_sId },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group12 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG12[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { GRPSSE2(G1202) },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { GRPSSE2(G1204) },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE2(G1206) },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group13 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG13[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { GRPSSE2(G1302) },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { GRPSSE2(G1304) },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE2(G1306) },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group14 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG14[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { GRPSSE2(G1402) },
+ /* 3 */ { GRPSSE66(Ia_psrldq_Udq_Ib) },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE2(G1406) },
+ /* 7 */ { GRPSSE66(Ia_pslldq_Udq_Ib) }
+};
+
+/* Group15 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG15M[8] = {
+ /* 0 */ { 0, &Ia_fxsave },
+ /* 1 */ { 0, &Ia_fxrstor },
+ /* 2 */ { 0, &Ia_ldmxcsr },
+ /* 3 */ { 0, &Ia_stmxcsr },
+ /* 4 */ { 0, &Ia_xsave },
+ /* 5 */ { 0, &Ia_xrstor },
+ /* 6 */ { 0, &Ia_xsaveopt },
+ /* 7 */ { 0, &Ia_clflush }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupG15R[8] = {
+ /* 0 */ { GRPSSEF3(Ia_rdfsbase_Ry) },
+ /* 1 */ { GRPSSEF3(Ia_rdgsbase_Ry) },
+ /* 2 */ { GRPSSEF3(Ia_wrfsbase_Ry) },
+ /* 3 */ { GRPSSEF3(Ia_wrgsbase_Ry) },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_lfence },
+ /* 6 */ { 0, &Ia_mfence },
+ /* 6 */ { 0, &Ia_sfence },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModG15[2] = {
+ /* R */ { GRPN(G15R) },
+ /* M */ { GRPN(G15M) }
+};
+
+/* Group16 */
+static BxDisasmOpcodeTable_t BxDisasmGroupG16[8] =
+{
+ /* 0 */ { 0, &Ia_prefetchnta },
+ /* 1 */ { 0, &Ia_prefetcht0 },
+ /* 2 */ { 0, &Ia_prefetcht1 },
+ /* 3 */ { 0, &Ia_prefetcht2 },
+ /* 4 */ { 0, &Ia_prefetch_hint },
+ /* 5 */ { 0, &Ia_prefetch_hint },
+ /* 6 */ { 0, &Ia_prefetch_hint },
+ /* 7 */ { 0, &Ia_prefetch_hint }
+};
+
+/* ************************************************************************ */
+/* 16-bit operand size */
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodes16[256*2] = {
+ // 256 entries for single byte opcodes
+ /* 00 */ { 0, &Ia_addb_Eb_Gb },
+ /* 01 */ { 0, &Ia_addw_Ew_Gw },
+ /* 02 */ { 0, &Ia_addb_Gb_Eb },
+ /* 03 */ { 0, &Ia_addw_Gw_Ew },
+ /* 04 */ { 0, &Ia_addb_AL_Ib },
+ /* 05 */ { 0, &Ia_addw_AX_Iw },
+ /* 06 */ { 0, &Ia_pushw_ES },
+ /* 07 */ { 0, &Ia_popw_ES },
+ /* 08 */ { 0, &Ia_orb_Eb_Gb },
+ /* 09 */ { 0, &Ia_orw_Ew_Gw },
+ /* 0A */ { 0, &Ia_orb_Gb_Eb },
+ /* 0B */ { 0, &Ia_orw_Gw_Ew },
+ /* 0C */ { 0, &Ia_orb_AL_Ib },
+ /* 0D */ { 0, &Ia_orw_AX_Iw },
+ /* 0E */ { 0, &Ia_pushw_CS },
+ /* 0F */ { 0, &Ia_error }, // 2 byte escape
+ /* 10 */ { 0, &Ia_adcb_Eb_Gb },
+ /* 11 */ { 0, &Ia_adcw_Ew_Gw },
+ /* 12 */ { 0, &Ia_adcb_Gb_Eb },
+ /* 13 */ { 0, &Ia_adcw_Gw_Ew },
+ /* 14 */ { 0, &Ia_adcb_AL_Ib },
+ /* 15 */ { 0, &Ia_adcw_AX_Iw },
+ /* 16 */ { 0, &Ia_pushw_SS },
+ /* 17 */ { 0, &Ia_popw_SS },
+ /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
+ /* 19 */ { 0, &Ia_sbbw_Ew_Gw },
+ /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
+ /* 1B */ { 0, &Ia_sbbw_Gw_Ew },
+ /* 1C */ { 0, &Ia_sbbb_AL_Ib },
+ /* 1D */ { 0, &Ia_sbbw_AX_Iw },
+ /* 1E */ { 0, &Ia_pushw_DS },
+ /* 1F */ { 0, &Ia_popw_DS },
+ /* 20 */ { 0, &Ia_andb_Eb_Gb },
+ /* 21 */ { 0, &Ia_andw_Ew_Gw },
+ /* 22 */ { 0, &Ia_andb_Gb_Eb },
+ /* 23 */ { 0, &Ia_andw_Gw_Ew },
+ /* 24 */ { 0, &Ia_andb_AL_Ib },
+ /* 25 */ { 0, &Ia_andw_AX_Iw },
+ /* 26 */ { 0, &Ia_prefix_es }, // ES:
+ /* 27 */ { 0, &Ia_daa },
+ /* 28 */ { 0, &Ia_subb_Eb_Gb },
+ /* 29 */ { 0, &Ia_subw_Ew_Gw },
+ /* 2A */ { 0, &Ia_subb_Gb_Eb },
+ /* 2B */ { 0, &Ia_subw_Gw_Ew },
+ /* 2C */ { 0, &Ia_subb_AL_Ib },
+ /* 2D */ { 0, &Ia_subw_AX_Iw },
+ /* 2E */ { 0, &Ia_prefix_cs }, // CS:
+ /* 2F */ { 0, &Ia_das },
+ /* 30 */ { 0, &Ia_xorb_Eb_Gb },
+ /* 31 */ { 0, &Ia_xorw_Ew_Gw },
+ /* 32 */ { 0, &Ia_xorb_Gb_Eb },
+ /* 33 */ { 0, &Ia_xorw_Gw_Ew },
+ /* 34 */ { 0, &Ia_xorb_AL_Ib },
+ /* 35 */ { 0, &Ia_xorw_AX_Iw },
+ /* 36 */ { 0, &Ia_prefix_ss }, // SS:
+ /* 37 */ { 0, &Ia_aaa },
+ /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
+ /* 39 */ { 0, &Ia_cmpw_Ew_Gw },
+ /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
+ /* 3B */ { 0, &Ia_cmpw_Gw_Ew },
+ /* 3C */ { 0, &Ia_cmpb_AL_Ib },
+ /* 3D */ { 0, &Ia_cmpw_AX_Iw },
+ /* 3E */ { 0, &Ia_prefix_ds }, // DS:
+ /* 3F */ { 0, &Ia_aas },
+ /* 40 */ { 0, &Ia_incw_RX },
+ /* 41 */ { 0, &Ia_incw_RX },
+ /* 42 */ { 0, &Ia_incw_RX },
+ /* 43 */ { 0, &Ia_incw_RX },
+ /* 44 */ { 0, &Ia_incw_RX },
+ /* 45 */ { 0, &Ia_incw_RX },
+ /* 46 */ { 0, &Ia_incw_RX },
+ /* 47 */ { 0, &Ia_incw_RX },
+ /* 48 */ { 0, &Ia_decw_RX },
+ /* 49 */ { 0, &Ia_decw_RX },
+ /* 4A */ { 0, &Ia_decw_RX },
+ /* 4B */ { 0, &Ia_decw_RX },
+ /* 4C */ { 0, &Ia_decw_RX },
+ /* 4D */ { 0, &Ia_decw_RX },
+ /* 4E */ { 0, &Ia_decw_RX },
+ /* 4F */ { 0, &Ia_decw_RX },
+ /* 50 */ { 0, &Ia_pushw_RX },
+ /* 51 */ { 0, &Ia_pushw_RX },
+ /* 52 */ { 0, &Ia_pushw_RX },
+ /* 53 */ { 0, &Ia_pushw_RX },
+ /* 54 */ { 0, &Ia_pushw_RX },
+ /* 55 */ { 0, &Ia_pushw_RX },
+ /* 56 */ { 0, &Ia_pushw_RX },
+ /* 57 */ { 0, &Ia_pushw_RX },
+ /* 58 */ { 0, &Ia_popw_RX },
+ /* 59 */ { 0, &Ia_popw_RX },
+ /* 5A */ { 0, &Ia_popw_RX },
+ /* 5B */ { 0, &Ia_popw_RX },
+ /* 5C */ { 0, &Ia_popw_RX },
+ /* 5D */ { 0, &Ia_popw_RX },
+ /* 5E */ { 0, &Ia_popw_RX },
+ /* 5F */ { 0, &Ia_popw_RX },
+ /* 60 */ { 0, &Ia_pushaw },
+ /* 61 */ { 0, &Ia_popaw },
+ /* 62 */ { 0, &Ia_boundw_Gw_Ma },
+ /* 63 */ { 0, &Ia_arpl_Ew_Gw },
+ /* 64 */ { 0, &Ia_prefix_fs }, // FS:
+ /* 65 */ { 0, &Ia_prefix_gs }, // GS:
+ /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
+ /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
+ /* 68 */ { 0, &Ia_pushw_Iw },
+ /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw },
+ /* 6A */ { 0, &Ia_pushw_sIb },
+ /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb },
+ /* 6C */ { 0, &Ia_insb_Yb_DX },
+ /* 6D */ { 0, &Ia_insw_Yw_DX },
+ /* 6E */ { 0, &Ia_outsb_DX_Xb },
+ /* 6F */ { 0, &Ia_outsw_DX_Xw },
+ /* 70 */ { 0, &Ia_jo_Jb },
+ /* 71 */ { 0, &Ia_jno_Jb },
+ /* 72 */ { 0, &Ia_jb_Jb },
+ /* 73 */ { 0, &Ia_jnb_Jb },
+ /* 74 */ { 0, &Ia_jz_Jb },
+ /* 75 */ { 0, &Ia_jnz_Jb },
+ /* 76 */ { 0, &Ia_jbe_Jb },
+ /* 77 */ { 0, &Ia_jnbe_Jb },
+ /* 78 */ { 0, &Ia_js_Jb },
+ /* 79 */ { 0, &Ia_jns_Jb },
+ /* 7A */ { 0, &Ia_jp_Jb },
+ /* 7B */ { 0, &Ia_jnp_Jb },
+ /* 7C */ { 0, &Ia_jl_Jb },
+ /* 7D */ { 0, &Ia_jnl_Jb },
+ /* 7E */ { 0, &Ia_jle_Jb },
+ /* 7F */ { 0, &Ia_jnle_Jb },
+ /* 80 */ { GRPN(G1EbIb) },
+ /* 81 */ { GRPN(G1EwIw) },
+ /* 82 */ { GRPN(G1EbIb) },
+ /* 83 */ { GRPN(G1EwIb) },
+ /* 84 */ { 0, &Ia_testb_Eb_Gb },
+ /* 85 */ { 0, &Ia_testw_Ew_Gw },
+ /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
+ /* 87 */ { 0, &Ia_xchgw_Ew_Gw },
+ /* 88 */ { 0, &Ia_movb_Eb_Gb },
+ /* 89 */ { 0, &Ia_movw_Ew_Gw },
+ /* 8A */ { 0, &Ia_movb_Gb_Eb },
+ /* 8B */ { 0, &Ia_movw_Gw_Ew },
+ /* 8C */ { 0, &Ia_movw_Ew_Sw },
+ /* 8D */ { 0, &Ia_leaw_Gw_Mw },
+ /* 8E */ { 0, &Ia_movw_Sw_Ew },
+ /* 8F */ { 0, &Ia_popw_Ew },
+ /* 90 */ { 0, &Ia_nop },
+ /* 91 */ { 0, &Ia_xchgw_RX_AX },
+ /* 92 */ { 0, &Ia_xchgw_RX_AX },
+ /* 93 */ { 0, &Ia_xchgw_RX_AX },
+ /* 94 */ { 0, &Ia_xchgw_RX_AX },
+ /* 95 */ { 0, &Ia_xchgw_RX_AX },
+ /* 96 */ { 0, &Ia_xchgw_RX_AX },
+ /* 97 */ { 0, &Ia_xchgw_RX_AX },
+ /* 98 */ { 0, &Ia_cbw },
+ /* 99 */ { 0, &Ia_cwd },
+ /* 9A */ { 0, &Ia_lcall_Apw },
+ /* 9B */ { 0, &Ia_fwait },
+ /* 9C */ { 0, &Ia_pushfw },
+ /* 9D */ { 0, &Ia_popfw },
+ /* 9E */ { 0, &Ia_sahf },
+ /* 9F */ { 0, &Ia_lahf },
+ /* A0 */ { 0, &Ia_movb_AL_Ob },
+ /* A1 */ { 0, &Ia_movw_AX_Ow },
+ /* A0 */ { 0, &Ia_movb_Ob_AL },
+ /* A1 */ { 0, &Ia_movw_Ow_AX },
+ /* A4 */ { 0, &Ia_movsb_Yb_Xb },
+ /* A5 */ { 0, &Ia_movsw_Yw_Xw },
+ /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
+ /* A7 */ { 0, &Ia_cmpsw_Xw_Yw },
+ /* A8 */ { 0, &Ia_testb_AL_Ib },
+ /* A9 */ { 0, &Ia_testw_AX_Iw },
+ /* AA */ { 0, &Ia_stosb_Yb_AL },
+ /* AB */ { 0, &Ia_stosw_Yw_AX },
+ /* AC */ { 0, &Ia_lodsb_AL_Xb },
+ /* AD */ { 0, &Ia_lodsw_AX_Xw },
+ /* AE */ { 0, &Ia_scasb_AL_Yb },
+ /* AF */ { 0, &Ia_scasw_AX_Yw },
+ /* B0 */ { 0, &Ia_movb_R8_Ib },
+ /* B1 */ { 0, &Ia_movb_R8_Ib },
+ /* B2 */ { 0, &Ia_movb_R8_Ib },
+ /* B3 */ { 0, &Ia_movb_R8_Ib },
+ /* B4 */ { 0, &Ia_movb_R8_Ib },
+ /* B5 */ { 0, &Ia_movb_R8_Ib },
+ /* B6 */ { 0, &Ia_movb_R8_Ib },
+ /* B7 */ { 0, &Ia_movb_R8_Ib },
+ /* B8 */ { 0, &Ia_movw_RX_Iw },
+ /* B9 */ { 0, &Ia_movw_RX_Iw },
+ /* BA */ { 0, &Ia_movw_RX_Iw },
+ /* BB */ { 0, &Ia_movw_RX_Iw },
+ /* BC */ { 0, &Ia_movw_RX_Iw },
+ /* BD */ { 0, &Ia_movw_RX_Iw },
+ /* BE */ { 0, &Ia_movw_RX_Iw },
+ /* BF */ { 0, &Ia_movw_RX_Iw },
+ /* C0 */ { GRPN(G2Eb) },
+ /* C1 */ { GRPN(G2Ew) },
+ /* C2 */ { 0, &Ia_ret_Iw },
+ /* C3 */ { 0, &Ia_ret },
+ /* C4 */ { 0, &Ia_lesw_Gw_Mp },
+ /* C5 */ { 0, &Ia_ldsw_Gw_Mp },
+ /* C6 */ { GRPN(G11Eb) },
+ /* C7 */ { GRPN(G11Ew) },
+ /* C8 */ { 0, &Ia_enter },
+ /* C9 */ { 0, &Ia_leave },
+ /* CA */ { 0, &Ia_lret_Iw },
+ /* CB */ { 0, &Ia_lret },
+ /* CC */ { 0, &Ia_int3 },
+ /* CD */ { 0, &Ia_int_Ib },
+ /* CE */ { 0, &Ia_into },
+ /* CF */ { 0, &Ia_iretw },
+ /* D0 */ { GRPN(G2EbI1) },
+ /* D1 */ { GRPN(G2EwI1) },
+ /* D2 */ { GRPN(G2EbCL) },
+ /* D3 */ { GRPN(G2EwCL) },
+ /* D4 */ { 0, &Ia_aam },
+ /* D5 */ { 0, &Ia_aad },
+ /* D6 */ { 0, &Ia_salc },
+ /* D7 */ { 0, &Ia_xlat },
+ /* D8 */ { GRPFP(D8) },
+ /* D9 */ { GRPFP(D9) },
+ /* DA */ { GRPFP(DA) },
+ /* DB */ { GRPFP(DB) },
+ /* DC */ { GRPFP(DC) },
+ /* DD */ { GRPFP(DD) },
+ /* DE */ { GRPFP(DE) },
+ /* DF */ { GRPFP(DF) },
+ /* E0 */ { 0, &Ia_loopne_Jb },
+ /* E1 */ { 0, &Ia_loope_Jb },
+ /* E2 */ { 0, &Ia_loop_Jb },
+ /* E3 */ { 0, &Ia_jcxz_Jb },
+ /* E4 */ { 0, &Ia_inb_AL_Ib },
+ /* E5 */ { 0, &Ia_inw_AX_Ib },
+ /* E6 */ { 0, &Ia_outb_Ib_AL },
+ /* E7 */ { 0, &Ia_outw_Ib_AX },
+ /* E8 */ { 0, &Ia_call_Jw },
+ /* E9 */ { 0, &Ia_jmp_Jw },
+ /* EA */ { 0, &Ia_ljmp_Apw },
+ /* EB */ { 0, &Ia_jmp_Jb },
+ /* EC */ { 0, &Ia_inb_AL_DX },
+ /* ED */ { 0, &Ia_inw_AX_DX },
+ /* EE */ { 0, &Ia_outb_DX_AL },
+ /* EF */ { 0, &Ia_outw_DX_AX },
+ /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
+ /* F1 */ { 0, &Ia_int1 },
+ /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
+ /* F3 */ { 0, &Ia_prefix_rep }, // REP:
+ /* F4 */ { 0, &Ia_hlt },
+ /* F5 */ { 0, &Ia_cmc },
+ /* F6 */ { GRPN(G3Eb) },
+ /* F7 */ { GRPN(G3Ew) },
+ /* F8 */ { 0, &Ia_clc },
+ /* F9 */ { 0, &Ia_stc },
+ /* FA */ { 0, &Ia_cli },
+ /* FB */ { 0, &Ia_sti },
+ /* FC */ { 0, &Ia_cld },
+ /* FD */ { 0, &Ia_std },
+ /* FE */ { GRPN(G4) },
+ /* FF */ { GRPN(G5w) },
+
+ // 256 entries for two byte opcodes
+ /* 0F 00 */ { GRPN(G6) },
+ /* 0F 01 */ { GRPMOD(G7) },
+ /* 0F 02 */ { 0, &Ia_larw_Gw_Ew },
+ /* 0F 03 */ { 0, &Ia_lslw_Gw_Ew },
+ /* 0F 04 */ { 0, &Ia_Invalid },
+ /* 0F 05 */ { 0, &Ia_syscall },
+ /* 0F 06 */ { 0, &Ia_clts },
+ /* 0F 07 */ { 0, &Ia_sysret },
+ /* 0F 08 */ { 0, &Ia_invd },
+ /* 0F 09 */ { 0, &Ia_wbinvd },
+ /* 0F 0A */ { 0, &Ia_Invalid },
+ /* 0F 0B */ { 0, &Ia_ud2a },
+ /* 0F 0C */ { 0, &Ia_Invalid },
+ /* 0F 0D */ { 0, &Ia_prefetchw }, // 3DNow!
+ /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
+ /* 0F 0F */ { GRP3DNOW },
+ /* 0F 10 */ { GRPSSE(0f10) },
+ /* 0F 11 */ { GRPSSE(0f11) },
+ /* 0F 12 */ { GRPSSE(0f12) },
+ /* 0F 13 */ { GRPSSE2(0f13) },
+ /* 0F 14 */ { GRPSSE2(0f14) },
+ /* 0F 15 */ { GRPSSE2(0f15) },
+ /* 0F 16 */ { GRPSSE(0f16) },
+ /* 0F 17 */ { GRPSSE2(0f17) },
+ /* 0F 18 */ { GRPN(G16) },
+ /* 0F 19 */ { 0, &Ia_multibyte_nop },
+ /* 0F 1A */ { 0, &Ia_multibyte_nop },
+ /* 0F 1B */ { 0, &Ia_multibyte_nop },
+ /* 0F 1C */ { 0, &Ia_multibyte_nop },
+ /* 0F 1D */ { 0, &Ia_multibyte_nop },
+ /* 0F 1E */ { 0, &Ia_multibyte_nop },
+ /* 0F 1F */ { 0, &Ia_multibyte_nop },
+ /* 0F 20 */ { 0, &Ia_movl_Rd_Cd },
+ /* 0F 21 */ { 0, &Ia_movl_Rd_Dd },
+ /* 0F 22 */ { 0, &Ia_movl_Cd_Rd },
+ /* 0F 23 */ { 0, &Ia_movl_Dd_Rd },
+ /* 0F 24 */ { 0, &Ia_Invalid },
+ /* 0F 25 */ { 0, &Ia_Invalid },
+ /* 0F 26 */ { 0, &Ia_Invalid },
+ /* 0F 27 */ { 0, &Ia_Invalid },
+ /* 0F 28 */ { GRPSSE2(0f28) },
+ /* 0F 29 */ { GRPSSE2(0f29) },
+ /* 0F 2A */ { GRPSSE(0f2a) },
+ /* 0F 2B */ { GRPSSE(0f2b) },
+ /* 0F 2C */ { GRPSSE(0f2c) },
+ /* 0F 2D */ { GRPSSE(0f2d) },
+ /* 0F 2E */ { GRPSSE2(0f2e) },
+ /* 0F 2F */ { GRPSSE2(0f2f) },
+ /* 0F 30 */ { 0, &Ia_wrmsr },
+ /* 0F 31 */ { 0, &Ia_rdtsc },
+ /* 0F 32 */ { 0, &Ia_rdmsr },
+ /* 0F 33 */ { 0, &Ia_rdpmc },
+ /* 0F 34 */ { 0, &Ia_sysenter },
+ /* 0F 35 */ { 0, &Ia_sysexit },
+ /* 0F 36 */ { 0, &Ia_Invalid },
+ /* 0F 37 */ { 0, &Ia_getsec },
+ /* 0F 38 */ { GR3BTAB(0f38) },
+ /* 0F 39 */ { 0, &Ia_Invalid },
+ /* 0F 3A */ { GR3BTAB(0f3a) },
+ /* 0F 3B */ { 0, &Ia_Invalid },
+ /* 0F 3C */ { 0, &Ia_Invalid },
+ /* 0F 3D */ { 0, &Ia_Invalid },
+ /* 0F 3E */ { 0, &Ia_Invalid },
+ /* 0F 3F */ { 0, &Ia_Invalid },
+ /* 0F 40 */ { 0, &Ia_cmovow_Gw_Ew },
+ /* 0F 41 */ { 0, &Ia_cmovnow_Gw_Ew },
+ /* 0F 42 */ { 0, &Ia_cmovbw_Gw_Ew },
+ /* 0F 43 */ { 0, &Ia_cmovnbw_Gw_Ew },
+ /* 0F 44 */ { 0, &Ia_cmovzw_Gw_Ew },
+ /* 0F 45 */ { 0, &Ia_cmovnzw_Gw_Ew },
+ /* 0F 46 */ { 0, &Ia_cmovbew_Gw_Ew },
+ /* 0F 47 */ { 0, &Ia_cmovnbew_Gw_Ew },
+ /* 0F 48 */ { 0, &Ia_cmovsw_Gw_Ew },
+ /* 0F 49 */ { 0, &Ia_cmovnsw_Gw_Ew },
+ /* 0F 4A */ { 0, &Ia_cmovpw_Gw_Ew },
+ /* 0F 4B */ { 0, &Ia_cmovnpw_Gw_Ew },
+ /* 0F 4C */ { 0, &Ia_cmovlw_Gw_Ew },
+ /* 0F 4D */ { 0, &Ia_cmovnlw_Gw_Ew },
+ /* 0F 4E */ { 0, &Ia_cmovlew_Gw_Ew },
+ /* 0F 4F */ { 0, &Ia_cmovnlew_Gw_Ew },
+ /* 0F 50 */ { GRPSSE2(0f50) },
+ /* 0F 51 */ { GRPSSE(0f51) },
+ /* 0F 52 */ { GRPSSE(0f52) },
+ /* 0F 53 */ { GRPSSE(0f53) },
+ /* 0F 54 */ { GRPSSE2(0f54) },
+ /* 0F 55 */ { GRPSSE2(0f55) },
+ /* 0F 56 */ { GRPSSE2(0f56) },
+ /* 0F 57 */ { GRPSSE2(0f57) },
+ /* 0F 58 */ { GRPSSE(0f58) },
+ /* 0F 59 */ { GRPSSE(0f59) },
+ /* 0F 5A */ { GRPSSE(0f5a) },
+ /* 0F 5B */ { GRPSSE(0f5b) },
+ /* 0F 5C */ { GRPSSE(0f5c) },
+ /* 0F 5D */ { GRPSSE(0f5d) },
+ /* 0F 5E */ { GRPSSE(0f5e) },
+ /* 0F 5F */ { GRPSSE(0f5f) },
+ /* 0F 60 */ { GRPSSE2(0f60) },
+ /* 0F 61 */ { GRPSSE2(0f61) },
+ /* 0F 62 */ { GRPSSE2(0f62) },
+ /* 0F 63 */ { GRPSSE2(0f63) },
+ /* 0F 64 */ { GRPSSE2(0f64) },
+ /* 0F 65 */ { GRPSSE2(0f65) },
+ /* 0F 66 */ { GRPSSE2(0f66) },
+ /* 0F 67 */ { GRPSSE2(0f67) },
+ /* 0F 68 */ { GRPSSE2(0f68) },
+ /* 0F 69 */ { GRPSSE2(0f69) },
+ /* 0F 6A */ { GRPSSE2(0f6a) },
+ /* 0F 6B */ { GRPSSE2(0f6b) },
+ /* 0F 6C */ { GRPSSE66(Ia_punpcklqdq_Vdq_Wdq) },
+ /* 0F 6D */ { GRPSSE66(Ia_punpckhqdq_Vdq_Wdq) },
+ /* 0F 6E */ { GRPSSE2(0f6e) },
+ /* 0F 6F */ { GRPSSE(0f6f) },
+ /* 0F 70 */ { GRPSSE(0f70) },
+ /* 0F 71 */ { GRPN(G12) },
+ /* 0F 72 */ { GRPN(G13) },
+ /* 0F 73 */ { GRPN(G14) },
+ /* 0F 74 */ { GRPSSE2(0f74) },
+ /* 0F 75 */ { GRPSSE2(0f75) },
+ /* 0F 76 */ { GRPSSE2(0f76) },
+ /* 0F 77 */ { 0, &Ia_emms },
+ /* 0F 78 */ { GRPSSE(0f78) }, // VMX
+ /* 0F 79 */ { GRPSSE(0f79) }, // VMX
+ /* 0F 7A */ { 0, &Ia_Invalid },
+ /* 0F 7B */ { 0, &Ia_Invalid },
+ /* 0F 7C */ { GRPSSE(0f7c) },
+ /* 0F 7D */ { GRPSSE(0f7d) },
+ /* 0F 7E */ { GRPSSE(0f7e) },
+ /* 0F 7F */ { GRPSSE(0f7f) },
+ /* 0F 80 */ { 0, &Ia_jo_Jw },
+ /* 0F 81 */ { 0, &Ia_jno_Jw },
+ /* 0F 82 */ { 0, &Ia_jb_Jw },
+ /* 0F 83 */ { 0, &Ia_jnb_Jw },
+ /* 0F 84 */ { 0, &Ia_jz_Jw },
+ /* 0F 85 */ { 0, &Ia_jnz_Jw },
+ /* 0F 86 */ { 0, &Ia_jbe_Jw },
+ /* 0F 87 */ { 0, &Ia_jnbe_Jw },
+ /* 0F 88 */ { 0, &Ia_js_Jw },
+ /* 0F 89 */ { 0, &Ia_jns_Jw },
+ /* 0F 8A */ { 0, &Ia_jp_Jw },
+ /* 0F 8B */ { 0, &Ia_jnp_Jw },
+ /* 0F 8C */ { 0, &Ia_jl_Jw },
+ /* 0F 8D */ { 0, &Ia_jnl_Jw },
+ /* 0F 8E */ { 0, &Ia_jle_Jw },
+ /* 0F 8F */ { 0, &Ia_jnle_Jw },
+ /* 0F 90 */ { 0, &Ia_seto_Eb },
+ /* 0F 91 */ { 0, &Ia_setno_Eb },
+ /* 0F 92 */ { 0, &Ia_setb_Eb },
+ /* 0F 93 */ { 0, &Ia_setnb_Eb },
+ /* 0F 94 */ { 0, &Ia_setz_Eb },
+ /* 0F 95 */ { 0, &Ia_setnz_Eb },
+ /* 0F 96 */ { 0, &Ia_setbe_Eb },
+ /* 0F 97 */ { 0, &Ia_setnbe_Eb },
+ /* 0F 98 */ { 0, &Ia_sets_Eb },
+ /* 0F 99 */ { 0, &Ia_setns_Eb },
+ /* 0F 9A */ { 0, &Ia_setp_Eb },
+ /* 0F 9B */ { 0, &Ia_setnp_Eb },
+ /* 0F 9C */ { 0, &Ia_setl_Eb },
+ /* 0F 9D */ { 0, &Ia_setnl_Eb },
+ /* 0F 9E */ { 0, &Ia_setle_Eb },
+ /* 0F 9F */ { 0, &Ia_setnle_Eb },
+ /* 0F A0 */ { 0, &Ia_pushw_FS },
+ /* 0F A1 */ { 0, &Ia_popw_FS },
+ /* 0F A2 */ { 0, &Ia_cpuid },
+ /* 0F A3 */ { 0, &Ia_btw_Ew_Gw },
+ /* 0F A4 */ { 0, &Ia_shldw_Ew_Gw_Ib },
+ /* 0F A5 */ { 0, &Ia_shldw_Ew_Gw_CL },
+ /* 0F A6 */ { 0, &Ia_Invalid },
+ /* 0F A7 */ { 0, &Ia_Invalid },
+ /* 0F A8 */ { 0, &Ia_pushw_GS },
+ /* 0F A9 */ { 0, &Ia_popw_GS },
+ /* 0F AA */ { 0, &Ia_rsm },
+ /* 0F AB */ { 0, &Ia_btsw_Ew_Gw },
+ /* 0F AC */ { 0, &Ia_shrdw_Ew_Gw_Ib },
+ /* 0F AD */ { 0, &Ia_shrdw_Ew_Gw_CL },
+ /* 0F AE */ { GRPMOD(G15) },
+ /* 0F AF */ { 0, &Ia_imulw_Gw_Ew },
+ /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
+ /* 0F B1 */ { 0, &Ia_cmpxchgw_Ew_Gw },
+ /* 0F B2 */ { 0, &Ia_lssw_Gw_Mp },
+ /* 0F B3 */ { 0, &Ia_btrw_Ew_Gw },
+ /* 0F B4 */ { 0, &Ia_lfsw_Gw_Mp },
+ /* 0F B5 */ { 0, &Ia_lgsw_Gw_Mp },
+ /* 0F B6 */ { 0, &Ia_movzbw_Gw_Eb },
+ /* 0F B7 */ { 0, &Ia_movw_Gw_Ew },
+ /* 0F B8 */ { GRPSSEF3(Ia_popcnt_Gw_Ew) },
+ /* 0F B9 */ { 0, &Ia_ud2b },
+ /* 0F BA */ { GRPN(G8EwIb) },
+ /* 0F BB */ { 0, &Ia_btcw_Ew_Gw },
+ /* 0F BC */ { GRPSSE(0fbcw) },
+ /* 0F BD */ { GRPSSE(0fbdw) },
+ /* 0F BE */ { 0, &Ia_movsbw_Gw_Eb },
+ /* 0F BF */ { 0, &Ia_movw_Gw_Ew },
+ /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
+ /* 0F C0 */ { 0, &Ia_xaddw_Ew_Gw },
+ /* 0F C2 */ { GRPSSE(0fc2) },
+ /* 0F C3 */ { GRPSSENONE(Ia_movnti_Md_Gd) },
+ /* 0F C4 */ { GRPSSE2(0fc4) },
+ /* 0F C5 */ { GRPSSE2(0fc5) },
+ /* 0F C6 */ { GRPSSE2(0fc6) },
+ /* 0F C7 */ { GRPMOD(G9w) },
+ /* 0F C8 */ { 0, &Ia_bswapw_RX },
+ /* 0F C9 */ { 0, &Ia_bswapw_RX },
+ /* 0F CA */ { 0, &Ia_bswapw_RX },
+ /* 0F CB */ { 0, &Ia_bswapw_RX },
+ /* 0F CC */ { 0, &Ia_bswapw_RX },
+ /* 0F CD */ { 0, &Ia_bswapw_RX },
+ /* 0F CE */ { 0, &Ia_bswapw_RX },
+ /* 0F CF */ { 0, &Ia_bswapw_RX },
+ /* 0F D0 */ { GRPSSE(0fd0) },
+ /* 0F D1 */ { GRPSSE2(0fd1) },
+ /* 0F D2 */ { GRPSSE2(0fd2) },
+ /* 0F D3 */ { GRPSSE2(0fd3) },
+ /* 0F D4 */ { GRPSSE2(0fd4) },
+ /* 0F D5 */ { GRPSSE2(0fd5) },
+ /* 0F D6 */ { GRPSSE(0fd6) },
+ /* 0F D7 */ { GRPSSE2(0fd7) },
+ /* 0F D8 */ { GRPSSE2(0fd8) },
+ /* 0F D9 */ { GRPSSE2(0fd9) },
+ /* 0F DA */ { GRPSSE2(0fda) },
+ /* 0F DB */ { GRPSSE2(0fdb) },
+ /* 0F DC */ { GRPSSE2(0fdc) },
+ /* 0F DD */ { GRPSSE2(0fdd) },
+ /* 0F DE */ { GRPSSE2(0fde) },
+ /* 0F DF */ { GRPSSE2(0fdf) },
+ /* 0F E0 */ { GRPSSE2(0fe0) },
+ /* 0F E1 */ { GRPSSE2(0fe1) },
+ /* 0F E2 */ { GRPSSE2(0fe2) },
+ /* 0F E3 */ { GRPSSE2(0fe3) },
+ /* 0F E4 */ { GRPSSE2(0fe4) },
+ /* 0F E5 */ { GRPSSE2(0fe5) },
+ /* 0F E6 */ { GRPSSE(0fe6) },
+ /* 0F E7 */ { GRPSSE2(0fe7) },
+ /* 0F E8 */ { GRPSSE2(0fe8) },
+ /* 0F E9 */ { GRPSSE2(0fe9) },
+ /* 0F EA */ { GRPSSE2(0fea) },
+ /* 0F EB */ { GRPSSE2(0feb) },
+ /* 0F EC */ { GRPSSE2(0fec) },
+ /* 0F ED */ { GRPSSE2(0fed) },
+ /* 0F EE */ { GRPSSE2(0fee) },
+ /* 0F EF */ { GRPSSE2(0fef) },
+ /* 0F F0 */ { GRPSSEF2(Ia_lddqu_Vdq_Mdq) },
+ /* 0F F1 */ { GRPSSE2(0ff1) },
+ /* 0F F2 */ { GRPSSE2(0ff2) },
+ /* 0F F3 */ { GRPSSE2(0ff3) },
+ /* 0F F4 */ { GRPSSE2(0ff4) },
+ /* 0F F5 */ { GRPSSE2(0ff5) },
+ /* 0F F6 */ { GRPSSE2(0ff6) },
+ /* 0F F7 */ { GRPSSE2(0ff7) },
+ /* 0F F8 */ { GRPSSE2(0ff8) },
+ /* 0F F9 */ { GRPSSE2(0ff9) },
+ /* 0F FA */ { GRPSSE2(0ffa) },
+ /* 0F FB */ { GRPSSE2(0ffb) },
+ /* 0F FC */ { GRPSSE2(0ffc) },
+ /* 0F FD */ { GRPSSE2(0ffd) },
+ /* 0F FE */ { GRPSSE2(0ffe) },
+ /* 0F FF */ { 0, &Ia_Invalid }
+};
+
+/* ************************************************************************ */
+/* 32-bit operand size */
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodes32[256*2] = {
+ // 256 entries for single byte opcodes
+ /* 00 */ { 0, &Ia_addb_Eb_Gb },
+ /* 01 */ { 0, &Ia_addl_Ed_Gd },
+ /* 02 */ { 0, &Ia_addb_Gb_Eb },
+ /* 03 */ { 0, &Ia_addl_Gd_Ed },
+ /* 04 */ { 0, &Ia_addb_AL_Ib, },
+ /* 05 */ { 0, &Ia_addl_EAX_Id, },
+ /* 06 */ { 0, &Ia_pushl_ES },
+ /* 07 */ { 0, &Ia_popl_ES },
+ /* 08 */ { 0, &Ia_orb_Eb_Gb },
+ /* 09 */ { 0, &Ia_orl_Ed_Gd },
+ /* 0A */ { 0, &Ia_orb_Gb_Eb },
+ /* 0B */ { 0, &Ia_orl_Gd_Ed },
+ /* 0C */ { 0, &Ia_orb_AL_Ib },
+ /* 0D */ { 0, &Ia_orl_EAX_Id },
+ /* 0E */ { 0, &Ia_pushl_CS },
+ /* 0F */ { 0, &Ia_error }, // 2 byte escape
+ /* 10 */ { 0, &Ia_adcb_Eb_Gb },
+ /* 11 */ { 0, &Ia_adcl_Ed_Gd },
+ /* 12 */ { 0, &Ia_adcb_Gb_Eb },
+ /* 13 */ { 0, &Ia_adcl_Gd_Ed },
+ /* 14 */ { 0, &Ia_adcb_AL_Ib },
+ /* 15 */ { 0, &Ia_adcl_EAX_Id },
+ /* 16 */ { 0, &Ia_pushl_SS },
+ /* 17 */ { 0, &Ia_popl_SS },
+ /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
+ /* 19 */ { 0, &Ia_sbbl_Ed_Gd },
+ /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
+ /* 1B */ { 0, &Ia_sbbl_Gd_Ed },
+ /* 1C */ { 0, &Ia_sbbb_AL_Ib },
+ /* 1D */ { 0, &Ia_sbbl_EAX_Id },
+ /* 1E */ { 0, &Ia_pushl_DS },
+ /* 1F */ { 0, &Ia_popl_DS },
+ /* 20 */ { 0, &Ia_andb_Eb_Gb },
+ /* 21 */ { 0, &Ia_andl_Ed_Gd },
+ /* 22 */ { 0, &Ia_andb_Gb_Eb },
+ /* 23 */ { 0, &Ia_andl_Gd_Ed },
+ /* 24 */ { 0, &Ia_andb_AL_Ib },
+ /* 25 */ { 0, &Ia_andl_EAX_Id },
+ /* 26 */ { 0, &Ia_prefix_es }, // ES:
+ /* 27 */ { 0, &Ia_daa },
+ /* 28 */ { 0, &Ia_subb_Eb_Gb },
+ /* 29 */ { 0, &Ia_subl_Ed_Gd },
+ /* 2A */ { 0, &Ia_subb_Gb_Eb },
+ /* 2B */ { 0, &Ia_subl_Gd_Ed },
+ /* 2C */ { 0, &Ia_subb_AL_Ib },
+ /* 2D */ { 0, &Ia_subl_EAX_Id },
+ /* 2E */ { 0, &Ia_prefix_cs }, // CS:
+ /* 2F */ { 0, &Ia_das },
+ /* 30 */ { 0, &Ia_xorb_Eb_Gb },
+ /* 31 */ { 0, &Ia_xorl_Ed_Gd },
+ /* 32 */ { 0, &Ia_xorb_Gb_Eb },
+ /* 33 */ { 0, &Ia_xorl_Gd_Ed },
+ /* 34 */ { 0, &Ia_xorb_AL_Ib },
+ /* 35 */ { 0, &Ia_xorl_EAX_Id },
+ /* 36 */ { 0, &Ia_prefix_ss }, // SS:
+ /* 37 */ { 0, &Ia_aaa },
+ /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
+ /* 39 */ { 0, &Ia_cmpl_Ed_Gd },
+ /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
+ /* 3B */ { 0, &Ia_cmpl_Gd_Ed },
+ /* 3C */ { 0, &Ia_cmpb_AL_Ib },
+ /* 3D */ { 0, &Ia_cmpl_EAX_Id },
+ /* 3E */ { 0, &Ia_prefix_ds }, // DS:
+ /* 3F */ { 0, &Ia_aas },
+ /* 40 */ { 0, &Ia_incl_ERX },
+ /* 41 */ { 0, &Ia_incl_ERX },
+ /* 42 */ { 0, &Ia_incl_ERX },
+ /* 43 */ { 0, &Ia_incl_ERX },
+ /* 44 */ { 0, &Ia_incl_ERX },
+ /* 45 */ { 0, &Ia_incl_ERX },
+ /* 46 */ { 0, &Ia_incl_ERX },
+ /* 47 */ { 0, &Ia_incl_ERX },
+ /* 48 */ { 0, &Ia_decl_ERX },
+ /* 49 */ { 0, &Ia_decl_ERX },
+ /* 4A */ { 0, &Ia_decl_ERX },
+ /* 4B */ { 0, &Ia_decl_ERX },
+ /* 4C */ { 0, &Ia_decl_ERX },
+ /* 4D */ { 0, &Ia_decl_ERX },
+ /* 4E */ { 0, &Ia_decl_ERX },
+ /* 4F */ { 0, &Ia_decl_ERX },
+ /* 50 */ { 0, &Ia_pushl_ERX },
+ /* 51 */ { 0, &Ia_pushl_ERX },
+ /* 52 */ { 0, &Ia_pushl_ERX },
+ /* 53 */ { 0, &Ia_pushl_ERX },
+ /* 54 */ { 0, &Ia_pushl_ERX },
+ /* 55 */ { 0, &Ia_pushl_ERX },
+ /* 56 */ { 0, &Ia_pushl_ERX },
+ /* 57 */ { 0, &Ia_pushl_ERX },
+ /* 58 */ { 0, &Ia_popl_ERX },
+ /* 59 */ { 0, &Ia_popl_ERX },
+ /* 5A */ { 0, &Ia_popl_ERX },
+ /* 5B */ { 0, &Ia_popl_ERX },
+ /* 5C */ { 0, &Ia_popl_ERX },
+ /* 5D */ { 0, &Ia_popl_ERX },
+ /* 5E */ { 0, &Ia_popl_ERX },
+ /* 5F */ { 0, &Ia_popl_ERX },
+ /* 60 */ { 0, &Ia_pushal },
+ /* 61 */ { 0, &Ia_popal },
+ /* 62 */ { 0, &Ia_boundl_Gd_Ma },
+ /* 63 */ { 0, &Ia_arpl_Ew_Gw },
+ /* 64 */ { 0, &Ia_prefix_fs }, // FS:
+ /* 65 */ { 0, &Ia_prefix_gs }, // GS:
+ /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
+ /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
+ /* 68 */ { 0, &Ia_pushl_Id },
+ /* 69 */ { 0, &Ia_imull_Gd_Ed_Id },
+ /* 6A */ { 0, &Ia_pushl_sIb },
+ /* 6B */ { 0, &Ia_imull_Gd_Ed_sIb },
+ /* 6C */ { 0, &Ia_insb_Yb_DX },
+ /* 6D */ { 0, &Ia_insl_Yd_DX },
+ /* 6E */ { 0, &Ia_outsb_DX_Xb },
+ /* 6F */ { 0, &Ia_outsl_DX_Xd },
+ /* 70 */ { 0, &Ia_jo_Jb },
+ /* 71 */ { 0, &Ia_jno_Jb },
+ /* 72 */ { 0, &Ia_jb_Jb },
+ /* 73 */ { 0, &Ia_jnb_Jb },
+ /* 74 */ { 0, &Ia_jz_Jb },
+ /* 75 */ { 0, &Ia_jnz_Jb },
+ /* 76 */ { 0, &Ia_jbe_Jb },
+ /* 77 */ { 0, &Ia_jnbe_Jb },
+ /* 78 */ { 0, &Ia_js_Jb },
+ /* 79 */ { 0, &Ia_jns_Jb },
+ /* 7A */ { 0, &Ia_jp_Jb },
+ /* 7B */ { 0, &Ia_jnp_Jb },
+ /* 7C */ { 0, &Ia_jl_Jb },
+ /* 7D */ { 0, &Ia_jnl_Jb },
+ /* 7E */ { 0, &Ia_jle_Jb },
+ /* 7F */ { 0, &Ia_jnle_Jb },
+ /* 80 */ { GRPN(G1EbIb) },
+ /* 81 */ { GRPN(G1EdId) },
+ /* 82 */ { GRPN(G1EbIb) },
+ /* 83 */ { GRPN(G1EdIb) },
+ /* 84 */ { 0, &Ia_testb_Eb_Gb },
+ /* 85 */ { 0, &Ia_testl_Ed_Gd },
+ /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
+ /* 87 */ { 0, &Ia_xchgl_Ed_Gd },
+ /* 88 */ { 0, &Ia_movb_Eb_Gb },
+ /* 89 */ { 0, &Ia_movl_Ed_Gd },
+ /* 8A */ { 0, &Ia_movb_Gb_Eb },
+ /* 8B */ { 0, &Ia_movl_Gd_Ed },
+ /* 8C */ { 0, &Ia_movw_Ew_Sw },
+ /* 8D */ { 0, &Ia_leal_Gd_Md },
+ /* 8E */ { 0, &Ia_movw_Sw_Ew },
+ /* 8F */ { 0, &Ia_popl_Ed },
+ /* 90 */ { 0, &Ia_nop },
+ /* 91 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 92 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 93 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 94 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 95 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 96 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 97 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 98 */ { 0, &Ia_cwde },
+ /* 99 */ { 0, &Ia_cdq },
+ /* 9A */ { 0, &Ia_lcall_Apd },
+ /* 9B */ { 0, &Ia_fwait },
+ /* 9C */ { 0, &Ia_pushfl },
+ /* 9D */ { 0, &Ia_popfl },
+ /* 9E */ { 0, &Ia_sahf },
+ /* 9F */ { 0, &Ia_lahf },
+ /* A0 */ { 0, &Ia_movb_AL_Ob },
+ /* A1 */ { 0, &Ia_movl_EAX_Od },
+ /* A0 */ { 0, &Ia_movb_Ob_AL },
+ /* A1 */ { 0, &Ia_movl_Od_EAX },
+ /* A4 */ { 0, &Ia_movsb_Yb_Xb },
+ /* A5 */ { 0, &Ia_movsl_Yd_Xd },
+ /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
+ /* A7 */ { 0, &Ia_cmpsl_Xd_Yd },
+ /* A8 */ { 0, &Ia_testb_AL_Ib },
+ /* A9 */ { 0, &Ia_testl_EAX_Id },
+ /* AA */ { 0, &Ia_stosb_Yb_AL },
+ /* AB */ { 0, &Ia_stosl_Yd_EAX },
+ /* AC */ { 0, &Ia_lodsb_AL_Xb },
+ /* AD */ { 0, &Ia_lodsl_EAX_Xd },
+ /* AE */ { 0, &Ia_scasb_AL_Yb },
+ /* AF */ { 0, &Ia_scasl_EAX_Yd },
+ /* B0 */ { 0, &Ia_movb_R8_Ib },
+ /* B1 */ { 0, &Ia_movb_R8_Ib },
+ /* B2 */ { 0, &Ia_movb_R8_Ib },
+ /* B3 */ { 0, &Ia_movb_R8_Ib },
+ /* B4 */ { 0, &Ia_movb_R8_Ib },
+ /* B5 */ { 0, &Ia_movb_R8_Ib },
+ /* B6 */ { 0, &Ia_movb_R8_Ib },
+ /* B7 */ { 0, &Ia_movb_R8_Ib },
+ /* B8 */ { 0, &Ia_movl_ERX_Id },
+ /* B9 */ { 0, &Ia_movl_ERX_Id },
+ /* BA */ { 0, &Ia_movl_ERX_Id },
+ /* BB */ { 0, &Ia_movl_ERX_Id },
+ /* BC */ { 0, &Ia_movl_ERX_Id },
+ /* BD */ { 0, &Ia_movl_ERX_Id },
+ /* BE */ { 0, &Ia_movl_ERX_Id },
+ /* BF */ { 0, &Ia_movl_ERX_Id },
+ /* C0 */ { GRPN(G2Eb) },
+ /* C1 */ { GRPN(G2Ed) },
+ /* C2 */ { 0, &Ia_ret_Iw },
+ /* C3 */ { 0, &Ia_ret },
+ /* C4 */ { 0, &Ia_lesl_Gd_Mp },
+ /* C5 */ { 0, &Ia_ldsl_Gd_Mp },
+ /* C6 */ { GRPN(G11Eb) },
+ /* C7 */ { GRPN(G11Ed) },
+ /* C8 */ { 0, &Ia_enter },
+ /* C9 */ { 0, &Ia_leave },
+ /* CA */ { 0, &Ia_lret_Iw },
+ /* CB */ { 0, &Ia_lret },
+ /* CC */ { 0, &Ia_int3 },
+ /* CD */ { 0, &Ia_int_Ib },
+ /* CE */ { 0, &Ia_into },
+ /* CF */ { 0, &Ia_iretl },
+ /* D0 */ { GRPN(G2EbI1) },
+ /* D1 */ { GRPN(G2EdI1) },
+ /* D2 */ { GRPN(G2EbCL) },
+ /* D3 */ { GRPN(G2EdCL) },
+ /* D4 */ { 0, &Ia_aam },
+ /* D5 */ { 0, &Ia_aad },
+ /* D6 */ { 0, &Ia_salc },
+ /* D7 */ { 0, &Ia_xlat },
+ /* D8 */ { GRPFP(D8) },
+ /* D9 */ { GRPFP(D9) },
+ /* DA */ { GRPFP(DA) },
+ /* DB */ { GRPFP(DB) },
+ /* DC */ { GRPFP(DC) },
+ /* DD */ { GRPFP(DD) },
+ /* DE */ { GRPFP(DE) },
+ /* DF */ { GRPFP(DF) },
+ /* E0 */ { 0, &Ia_loopne_Jb },
+ /* E1 */ { 0, &Ia_loope_Jb },
+ /* E2 */ { 0, &Ia_loop_Jb },
+ /* E3 */ { 0, &Ia_jcxz_Jb },
+ /* E4 */ { 0, &Ia_inb_AL_Ib },
+ /* E5 */ { 0, &Ia_inl_EAX_Ib },
+ /* E6 */ { 0, &Ia_outb_Ib_AL },
+ /* E7 */ { 0, &Ia_outl_Ib_EAX },
+ /* E8 */ { 0, &Ia_call_Jd },
+ /* E9 */ { 0, &Ia_jmp_Jd },
+ /* EA */ { 0, &Ia_ljmp_Apd },
+ /* EB */ { 0, &Ia_jmp_Jb },
+ /* EC */ { 0, &Ia_inb_AL_DX },
+ /* ED */ { 0, &Ia_inl_EAX_DX },
+ /* EE */ { 0, &Ia_outb_DX_AL },
+ /* EF */ { 0, &Ia_outl_DX_EAX },
+ /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
+ /* F1 */ { 0, &Ia_int1 },
+ /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
+ /* F3 */ { 0, &Ia_prefix_rep }, // REP:
+ /* F4 */ { 0, &Ia_hlt },
+ /* F5 */ { 0, &Ia_cmc },
+ /* F6 */ { GRPN(G3Eb) },
+ /* F7 */ { GRPN(G3Ed) },
+ /* F8 */ { 0, &Ia_clc },
+ /* F9 */ { 0, &Ia_stc },
+ /* FA */ { 0, &Ia_cli },
+ /* FB */ { 0, &Ia_sti },
+ /* FC */ { 0, &Ia_cld },
+ /* FD */ { 0, &Ia_std },
+ /* FE */ { GRPN(G4) },
+ /* FF */ { GRPN(G5d) },
+
+ // 256 entries for two byte opcodes
+ /* 0F 00 */ { GRPN(G6) },
+ /* 0F 01 */ { GRPMOD(G7) },
+ /* 0F 02 */ { 0, &Ia_larl_Gd_Ew },
+ /* 0F 03 */ { 0, &Ia_lsll_Gd_Ew },
+ /* 0F 04 */ { 0, &Ia_Invalid },
+ /* 0F 05 */ { 0, &Ia_syscall },
+ /* 0F 06 */ { 0, &Ia_clts },
+ /* 0F 07 */ { 0, &Ia_sysret },
+ /* 0F 08 */ { 0, &Ia_invd },
+ /* 0F 09 */ { 0, &Ia_wbinvd },
+ /* 0F 0A */ { 0, &Ia_Invalid },
+ /* 0F 0B */ { 0, &Ia_ud2a },
+ /* 0F 0C */ { 0, &Ia_Invalid },
+ /* 0F 0D */ { 0, &Ia_prefetchw }, // 3DNow!
+ /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
+ /* 0F 0F */ { GRP3DNOW },
+ /* 0F 10 */ { GRPSSE(0f10) },
+ /* 0F 11 */ { GRPSSE(0f11) },
+ /* 0F 12 */ { GRPSSE(0f12) },
+ /* 0F 13 */ { GRPSSE2(0f13) },
+ /* 0F 14 */ { GRPSSE2(0f14) },
+ /* 0F 15 */ { GRPSSE2(0f15) },
+ /* 0F 16 */ { GRPSSE(0f16) },
+ /* 0F 17 */ { GRPSSE2(0f17) },
+ /* 0F 18 */ { GRPN(G16) },
+ /* 0F 19 */ { 0, &Ia_multibyte_nop },
+ /* 0F 1A */ { 0, &Ia_multibyte_nop },
+ /* 0F 1B */ { 0, &Ia_multibyte_nop },
+ /* 0F 1C */ { 0, &Ia_multibyte_nop },
+ /* 0F 1D */ { 0, &Ia_multibyte_nop },
+ /* 0F 1E */ { 0, &Ia_multibyte_nop },
+ /* 0F 1F */ { 0, &Ia_multibyte_nop },
+ /* 0F 20 */ { 0, &Ia_movl_Rd_Cd },
+ /* 0F 21 */ { 0, &Ia_movl_Rd_Dd },
+ /* 0F 22 */ { 0, &Ia_movl_Cd_Rd },
+ /* 0F 23 */ { 0, &Ia_movl_Dd_Rd },
+ /* 0F 24 */ { 0, &Ia_Invalid },
+ /* 0F 25 */ { 0, &Ia_Invalid },
+ /* 0F 26 */ { 0, &Ia_Invalid },
+ /* 0F 27 */ { 0, &Ia_Invalid },
+ /* 0F 28 */ { GRPSSE2(0f28) },
+ /* 0F 29 */ { GRPSSE2(0f29) },
+ /* 0F 2A */ { GRPSSE(0f2a) },
+ /* 0F 2B */ { GRPSSE(0f2b) },
+ /* 0F 2C */ { GRPSSE(0f2c) },
+ /* 0F 2D */ { GRPSSE(0f2d) },
+ /* 0F 2E */ { GRPSSE2(0f2e) },
+ /* 0F 2F */ { GRPSSE2(0f2f) },
+ /* 0F 30 */ { 0, &Ia_wrmsr },
+ /* 0F 31 */ { 0, &Ia_rdtsc },
+ /* 0F 32 */ { 0, &Ia_rdmsr },
+ /* 0F 33 */ { 0, &Ia_rdpmc },
+ /* 0F 34 */ { 0, &Ia_sysenter },
+ /* 0F 35 */ { 0, &Ia_sysexit },
+ /* 0F 36 */ { 0, &Ia_Invalid },
+ /* 0F 37 */ { 0, &Ia_getsec },
+ /* 0F 38 */ { GR3BTAB(0f38) },
+ /* 0F 39 */ { 0, &Ia_Invalid },
+ /* 0F 3A */ { GR3BTAB(0f3a) },
+ /* 0F 3B */ { 0, &Ia_Invalid },
+ /* 0F 3C */ { 0, &Ia_Invalid },
+ /* 0F 3D */ { 0, &Ia_Invalid },
+ /* 0F 3E */ { 0, &Ia_Invalid },
+ /* 0F 3F */ { 0, &Ia_Invalid },
+ /* 0F 40 */ { 0, &Ia_cmovol_Gd_Ed },
+ /* 0F 41 */ { 0, &Ia_cmovnol_Gd_Ed },
+ /* 0F 42 */ { 0, &Ia_cmovbl_Gd_Ed },
+ /* 0F 43 */ { 0, &Ia_cmovnbl_Gd_Ed },
+ /* 0F 44 */ { 0, &Ia_cmovzl_Gd_Ed },
+ /* 0F 45 */ { 0, &Ia_cmovnzl_Gd_Ed },
+ /* 0F 46 */ { 0, &Ia_cmovbel_Gd_Ed },
+ /* 0F 47 */ { 0, &Ia_cmovnbel_Gd_Ed },
+ /* 0F 48 */ { 0, &Ia_cmovsl_Gd_Ed },
+ /* 0F 49 */ { 0, &Ia_cmovnsl_Gd_Ed },
+ /* 0F 4A */ { 0, &Ia_cmovpl_Gd_Ed },
+ /* 0F 4B */ { 0, &Ia_cmovnpl_Gd_Ed },
+ /* 0F 4C */ { 0, &Ia_cmovll_Gd_Ed },
+ /* 0F 4D */ { 0, &Ia_cmovnll_Gd_Ed },
+ /* 0F 4E */ { 0, &Ia_cmovlel_Gd_Ed },
+ /* 0F 4F */ { 0, &Ia_cmovnlel_Gd_Ed },
+ /* 0F 50 */ { GRPSSE2(0f50) },
+ /* 0F 51 */ { GRPSSE(0f51) },
+ /* 0F 52 */ { GRPSSE(0f52) },
+ /* 0F 53 */ { GRPSSE(0f53) },
+ /* 0F 54 */ { GRPSSE2(0f54) },
+ /* 0F 55 */ { GRPSSE2(0f55) },
+ /* 0F 56 */ { GRPSSE2(0f56) },
+ /* 0F 57 */ { GRPSSE2(0f57) },
+ /* 0F 58 */ { GRPSSE(0f58) },
+ /* 0F 59 */ { GRPSSE(0f59) },
+ /* 0F 5A */ { GRPSSE(0f5a) },
+ /* 0F 5B */ { GRPSSE(0f5b) },
+ /* 0F 5C */ { GRPSSE(0f5c) },
+ /* 0F 5D */ { GRPSSE(0f5d) },
+ /* 0F 5E */ { GRPSSE(0f5e) },
+ /* 0F 5F */ { GRPSSE(0f5f) },
+ /* 0F 60 */ { GRPSSE2(0f60) },
+ /* 0F 61 */ { GRPSSE2(0f61) },
+ /* 0F 62 */ { GRPSSE2(0f62) },
+ /* 0F 63 */ { GRPSSE2(0f63) },
+ /* 0F 64 */ { GRPSSE2(0f64) },
+ /* 0F 65 */ { GRPSSE2(0f65) },
+ /* 0F 66 */ { GRPSSE2(0f66) },
+ /* 0F 67 */ { GRPSSE2(0f67) },
+ /* 0F 68 */ { GRPSSE2(0f68) },
+ /* 0F 69 */ { GRPSSE2(0f69) },
+ /* 0F 6A */ { GRPSSE2(0f6a) },
+ /* 0F 6B */ { GRPSSE2(0f6b) },
+ /* 0F 6C */ { GRPSSE66(Ia_punpcklqdq_Vdq_Wdq) },
+ /* 0F 6D */ { GRPSSE66(Ia_punpckhqdq_Vdq_Wdq) },
+ /* 0F 6E */ { GRPSSE2(0f6e) },
+ /* 0F 6F */ { GRPSSE(0f6f) },
+ /* 0F 70 */ { GRPSSE(0f70) },
+ /* 0F 71 */ { GRPN(G12) },
+ /* 0F 72 */ { GRPN(G13) },
+ /* 0F 73 */ { GRPN(G14) },
+ /* 0F 74 */ { GRPSSE2(0f74) },
+ /* 0F 75 */ { GRPSSE2(0f75) },
+ /* 0F 76 */ { GRPSSE2(0f76) },
+ /* 0F 77 */ { 0, &Ia_emms },
+ /* 0F 78 */ { GRPSSE(0f78) }, // VMX
+ /* 0F 79 */ { GRPSSE(0f79) }, // VMX
+ /* 0F 7A */ { 0, &Ia_Invalid },
+ /* 0F 7B */ { 0, &Ia_Invalid },
+ /* 0F 7C */ { GRPSSE(0f7c) },
+ /* 0F 7D */ { GRPSSE(0f7d) },
+ /* 0F 7E */ { GRPSSE(0f7e) },
+ /* 0F 7F */ { GRPSSE(0f7f) },
+ /* 0F 80 */ { 0, &Ia_jo_Jd },
+ /* 0F 81 */ { 0, &Ia_jno_Jd },
+ /* 0F 82 */ { 0, &Ia_jb_Jd },
+ /* 0F 83 */ { 0, &Ia_jnb_Jd },
+ /* 0F 84 */ { 0, &Ia_jz_Jd },
+ /* 0F 85 */ { 0, &Ia_jnz_Jd },
+ /* 0F 86 */ { 0, &Ia_jbe_Jd },
+ /* 0F 87 */ { 0, &Ia_jnbe_Jd },
+ /* 0F 88 */ { 0, &Ia_js_Jd },
+ /* 0F 89 */ { 0, &Ia_jns_Jd },
+ /* 0F 8A */ { 0, &Ia_jp_Jd },
+ /* 0F 8B */ { 0, &Ia_jnp_Jd },
+ /* 0F 8C */ { 0, &Ia_jl_Jd },
+ /* 0F 8D */ { 0, &Ia_jnl_Jd },
+ /* 0F 8E */ { 0, &Ia_jle_Jd },
+ /* 0F 8F */ { 0, &Ia_jnle_Jd },
+ /* 0F 90 */ { 0, &Ia_seto_Eb },
+ /* 0F 91 */ { 0, &Ia_setno_Eb },
+ /* 0F 92 */ { 0, &Ia_setb_Eb },
+ /* 0F 93 */ { 0, &Ia_setnb_Eb },
+ /* 0F 94 */ { 0, &Ia_setz_Eb },
+ /* 0F 95 */ { 0, &Ia_setnz_Eb },
+ /* 0F 96 */ { 0, &Ia_setbe_Eb },
+ /* 0F 97 */ { 0, &Ia_setnbe_Eb },
+ /* 0F 98 */ { 0, &Ia_sets_Eb },
+ /* 0F 99 */ { 0, &Ia_setns_Eb },
+ /* 0F 9A */ { 0, &Ia_setp_Eb },
+ /* 0F 9B */ { 0, &Ia_setnp_Eb },
+ /* 0F 9C */ { 0, &Ia_setl_Eb },
+ /* 0F 9D */ { 0, &Ia_setnl_Eb },
+ /* 0F 9E */ { 0, &Ia_setle_Eb },
+ /* 0F 9F */ { 0, &Ia_setnle_Eb },
+ /* 0F A0 */ { 0, &Ia_pushl_FS },
+ /* 0F A1 */ { 0, &Ia_popl_FS },
+ /* 0F A2 */ { 0, &Ia_cpuid },
+ /* 0F A3 */ { 0, &Ia_btl_Ed_Gd },
+ /* 0F A4 */ { 0, &Ia_shldl_Ed_Gd_Ib },
+ /* 0F A5 */ { 0, &Ia_shldl_Ed_Gd_CL },
+ /* 0F A6 */ { 0, &Ia_Invalid },
+ /* 0F A7 */ { 0, &Ia_Invalid },
+ /* 0F A8 */ { 0, &Ia_pushl_GS },
+ /* 0F A9 */ { 0, &Ia_popl_GS },
+ /* 0F AA */ { 0, &Ia_rsm },
+ /* 0F AB */ { 0, &Ia_btsl_Ed_Gd },
+ /* 0F AC */ { 0, &Ia_shrdl_Ed_Gd_Ib },
+ /* 0F AD */ { 0, &Ia_shrdl_Ed_Gd_CL },
+ /* 0F AE */ { GRPMOD(G15) },
+ /* 0F AF */ { 0, &Ia_imull_Gd_Ed },
+ /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
+ /* 0F B1 */ { 0, &Ia_cmpxchgl_Ed_Gd },
+ /* 0F B2 */ { 0, &Ia_lssl_Gd_Mp },
+ /* 0F B3 */ { 0, &Ia_btrl_Ed_Gd },
+ /* 0F B4 */ { 0, &Ia_lfsl_Gd_Mp },
+ /* 0F B5 */ { 0, &Ia_lgsl_Gd_Mp },
+ /* 0F B6 */ { 0, &Ia_movzbl_Gd_Eb },
+ /* 0F B7 */ { 0, &Ia_movzwl_Gd_Ew },
+ /* 0F B8 */ { GRPSSEF3(Ia_popcnt_Gd_Ed) },
+ /* 0F B9 */ { 0, &Ia_ud2b },
+ /* 0F BA */ { GRPN(G8EdIb) },
+ /* 0F BB */ { 0, &Ia_btcl_Ed_Gd },
+ /* 0F BC */ { GRPSSE(0fbcd) },
+ /* 0F BD */ { GRPSSE(0fbdd) },
+ /* 0F BE */ { 0, &Ia_movsbl_Gd_Eb },
+ /* 0F BF */ { 0, &Ia_movswl_Gd_Ew },
+ /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
+ /* 0F C0 */ { 0, &Ia_xaddl_Ed_Gd },
+ /* 0F C2 */ { GRPSSE(0fc2) },
+ /* 0F C3 */ { GRPSSENONE(Ia_movnti_Md_Gd) },
+ /* 0F C4 */ { GRPSSE2(0fc4) },
+ /* 0F C5 */ { GRPSSE2(0fc5) },
+ /* 0F C6 */ { GRPSSE2(0fc6) },
+ /* 0F C7 */ { GRPMOD(G9d) },
+ /* 0F C8 */ { 0, &Ia_bswapl_ERX },
+ /* 0F C9 */ { 0, &Ia_bswapl_ERX },
+ /* 0F CA */ { 0, &Ia_bswapl_ERX },
+ /* 0F CB */ { 0, &Ia_bswapl_ERX },
+ /* 0F CC */ { 0, &Ia_bswapl_ERX },
+ /* 0F CD */ { 0, &Ia_bswapl_ERX },
+ /* 0F CE */ { 0, &Ia_bswapl_ERX },
+ /* 0F CF */ { 0, &Ia_bswapl_ERX },
+ /* 0F D0 */ { GRPSSE(0fd0) },
+ /* 0F D1 */ { GRPSSE2(0fd1) },
+ /* 0F D2 */ { GRPSSE2(0fd2) },
+ /* 0F D3 */ { GRPSSE2(0fd3) },
+ /* 0F D4 */ { GRPSSE2(0fd4) },
+ /* 0F D5 */ { GRPSSE2(0fd5) },
+ /* 0F D6 */ { GRPSSE(0fd6) },
+ /* 0F D7 */ { GRPSSE2(0fd7) },
+ /* 0F D8 */ { GRPSSE2(0fd8) },
+ /* 0F D9 */ { GRPSSE2(0fd9) },
+ /* 0F DA */ { GRPSSE2(0fda) },
+ /* 0F DB */ { GRPSSE2(0fdb) },
+ /* 0F DC */ { GRPSSE2(0fdc) },
+ /* 0F DD */ { GRPSSE2(0fdd) },
+ /* 0F DE */ { GRPSSE2(0fde) },
+ /* 0F DF */ { GRPSSE2(0fdf) },
+ /* 0F E0 */ { GRPSSE2(0fe0) },
+ /* 0F E1 */ { GRPSSE2(0fe1) },
+ /* 0F E2 */ { GRPSSE2(0fe2) },
+ /* 0F E3 */ { GRPSSE2(0fe3) },
+ /* 0F E4 */ { GRPSSE2(0fe4) },
+ /* 0F E5 */ { GRPSSE2(0fe5) },
+ /* 0F E6 */ { GRPSSE(0fe6) },
+ /* 0F E7 */ { GRPSSE2(0fe7) },
+ /* 0F E8 */ { GRPSSE2(0fe8) },
+ /* 0F E9 */ { GRPSSE2(0fe9) },
+ /* 0F EA */ { GRPSSE2(0fea) },
+ /* 0F EB */ { GRPSSE2(0feb) },
+ /* 0F EC */ { GRPSSE2(0fec) },
+ /* 0F ED */ { GRPSSE2(0fed) },
+ /* 0F EE */ { GRPSSE2(0fee) },
+ /* 0F EF */ { GRPSSE2(0fef) },
+ /* 0F F0 */ { GRPSSEF2(Ia_lddqu_Vdq_Mdq) },
+ /* 0F F1 */ { GRPSSE2(0ff1) },
+ /* 0F F2 */ { GRPSSE2(0ff2) },
+ /* 0F F3 */ { GRPSSE2(0ff3) },
+ /* 0F F4 */ { GRPSSE2(0ff4) },
+ /* 0F F5 */ { GRPSSE2(0ff5) },
+ /* 0F F6 */ { GRPSSE2(0ff6) },
+ /* 0F F7 */ { GRPSSE2(0ff7) },
+ /* 0F F8 */ { GRPSSE2(0ff8) },
+ /* 0F F9 */ { GRPSSE2(0ff9) },
+ /* 0F FA */ { GRPSSE2(0ffa) },
+ /* 0F FB */ { GRPSSE2(0ffb) },
+ /* 0F FC */ { GRPSSE2(0ffc) },
+ /* 0F FD */ { GRPSSE2(0ffd) },
+ /* 0F FE */ { GRPSSE2(0ffe) },
+ /* 0F FF */ { 0, &Ia_Invalid }
+};
+
+/* ************************************************************************ */
+/* Long mode */
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodes64w[256*2] = {
+ // 256 entries for single byte opcodes
+ /* 00 */ { 0, &Ia_addb_Eb_Gb },
+ /* 01 */ { 0, &Ia_addw_Ew_Gw },
+ /* 02 */ { 0, &Ia_addb_Gb_Eb },
+ /* 03 */ { 0, &Ia_addw_Gw_Ew },
+ /* 04 */ { 0, &Ia_addb_AL_Ib },
+ /* 05 */ { 0, &Ia_addw_AX_Iw },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_orb_Eb_Gb },
+ /* 09 */ { 0, &Ia_orw_Ew_Gw },
+ /* 0A */ { 0, &Ia_orb_Gb_Eb },
+ /* 0B */ { 0, &Ia_orw_Gw_Ew },
+ /* 0C */ { 0, &Ia_orb_AL_Ib },
+ /* 0D */ { 0, &Ia_orw_AX_Iw },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_error }, // 2 byte escape
+ /* 10 */ { 0, &Ia_adcb_Eb_Gb },
+ /* 11 */ { 0, &Ia_adcw_Ew_Gw },
+ /* 12 */ { 0, &Ia_adcb_Gb_Eb },
+ /* 13 */ { 0, &Ia_adcw_Gw_Ew },
+ /* 14 */ { 0, &Ia_adcb_AL_Ib },
+ /* 15 */ { 0, &Ia_adcw_AX_Iw },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
+ /* 19 */ { 0, &Ia_sbbw_Ew_Gw },
+ /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
+ /* 1B */ { 0, &Ia_sbbw_Gw_Ew },
+ /* 1C */ { 0, &Ia_sbbb_AL_Ib },
+ /* 1D */ { 0, &Ia_sbbw_AX_Iw },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_andb_Eb_Gb },
+ /* 21 */ { 0, &Ia_andw_Ew_Gw },
+ /* 22 */ { 0, &Ia_andb_Gb_Eb },
+ /* 23 */ { 0, &Ia_andw_Gw_Ew },
+ /* 24 */ { 0, &Ia_andb_AL_Ib },
+ /* 25 */ { 0, &Ia_andw_AX_Iw },
+ /* 26 */ { 0, &Ia_prefix_es }, // ES:
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_subb_Eb_Gb },
+ /* 29 */ { 0, &Ia_subw_Ew_Gw },
+ /* 2A */ { 0, &Ia_subb_Gb_Eb },
+ /* 2B */ { 0, &Ia_subw_Gw_Ew },
+ /* 2C */ { 0, &Ia_subb_AL_Ib },
+ /* 2D */ { 0, &Ia_subw_AX_Iw },
+ /* 2E */ { 0, &Ia_prefix_cs }, // CS:
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_xorb_Eb_Gb },
+ /* 31 */ { 0, &Ia_xorw_Ew_Gw },
+ /* 32 */ { 0, &Ia_xorb_Gb_Eb },
+ /* 33 */ { 0, &Ia_xorw_Gw_Ew },
+ /* 34 */ { 0, &Ia_xorb_AL_Ib },
+ /* 35 */ { 0, &Ia_xorw_AX_Iw },
+ /* 36 */ { 0, &Ia_prefix_ss }, // SS:
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
+ /* 39 */ { 0, &Ia_cmpw_Ew_Gw },
+ /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
+ /* 3B */ { 0, &Ia_cmpw_Gw_Ew },
+ /* 3C */ { 0, &Ia_cmpb_AL_Ib },
+ /* 3D */ { 0, &Ia_cmpw_AX_Iw },
+ /* 3E */ { 0, &Ia_prefix_ds }, // DS:
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 41 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 42 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 43 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 44 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 45 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 46 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 47 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 48 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 49 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4A */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4B */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4C */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4D */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4E */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4F */ { 0, &Ia_prefix_rex }, // REX:
+ /* 50 */ { 0, &Ia_pushw_RX },
+ /* 51 */ { 0, &Ia_pushw_RX },
+ /* 52 */ { 0, &Ia_pushw_RX },
+ /* 53 */ { 0, &Ia_pushw_RX },
+ /* 54 */ { 0, &Ia_pushw_RX },
+ /* 55 */ { 0, &Ia_pushw_RX },
+ /* 56 */ { 0, &Ia_pushw_RX },
+ /* 57 */ { 0, &Ia_pushw_RX },
+ /* 58 */ { 0, &Ia_popw_RX },
+ /* 59 */ { 0, &Ia_popw_RX },
+ /* 5A */ { 0, &Ia_popw_RX },
+ /* 5B */ { 0, &Ia_popw_RX },
+ /* 5C */ { 0, &Ia_popw_RX },
+ /* 5D */ { 0, &Ia_popw_RX },
+ /* 5E */ { 0, &Ia_popw_RX },
+ /* 5F */ { 0, &Ia_popw_RX },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_movw_Gw_Ew },
+ /* 64 */ { 0, &Ia_prefix_fs }, // FS:
+ /* 65 */ { 0, &Ia_prefix_gs }, // GS:
+ /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
+ /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
+ /* 68 */ { 0, &Ia_pushw_Iw },
+ /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw },
+ /* 6A */ { 0, &Ia_pushw_sIb },
+ /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb },
+ /* 6C */ { 0, &Ia_insb_Yb_DX },
+ /* 6D */ { 0, &Ia_insw_Yw_DX },
+ /* 6E */ { 0, &Ia_outsb_DX_Xb },
+ /* 6F */ { 0, &Ia_outsw_DX_Xw },
+ /* 70 */ { 0, &Ia_jo_Jb },
+ /* 71 */ { 0, &Ia_jno_Jb },
+ /* 72 */ { 0, &Ia_jb_Jb },
+ /* 73 */ { 0, &Ia_jnb_Jb },
+ /* 74 */ { 0, &Ia_jz_Jb },
+ /* 75 */ { 0, &Ia_jnz_Jb },
+ /* 76 */ { 0, &Ia_jbe_Jb },
+ /* 77 */ { 0, &Ia_jnbe_Jb },
+ /* 78 */ { 0, &Ia_js_Jb },
+ /* 79 */ { 0, &Ia_jns_Jb },
+ /* 7A */ { 0, &Ia_jp_Jb },
+ /* 7B */ { 0, &Ia_jnp_Jb },
+ /* 7C */ { 0, &Ia_jl_Jb },
+ /* 7D */ { 0, &Ia_jnl_Jb },
+ /* 7E */ { 0, &Ia_jle_Jb },
+ /* 7F */ { 0, &Ia_jnle_Jb },
+ /* 80 */ { GRPN(G1EbIb) },
+ /* 81 */ { GRPN(G1EwIw) },
+ /* 82 */ { 9, &Ia_Invalid },
+ /* 83 */ { GRPN(G1EwIb) },
+ /* 84 */ { 0, &Ia_testb_Eb_Gb },
+ /* 85 */ { 0, &Ia_testw_Ew_Gw },
+ /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
+ /* 87 */ { 0, &Ia_xchgw_Ew_Gw },
+ /* 88 */ { 0, &Ia_movb_Eb_Gb },
+ /* 89 */ { 0, &Ia_movw_Ew_Gw },
+ /* 8A */ { 0, &Ia_movb_Gb_Eb },
+ /* 8B */ { 0, &Ia_movw_Gw_Ew },
+ /* 8C */ { 0, &Ia_movw_Ew_Sw },
+ /* 8D */ { 0, &Ia_leaw_Gw_Mw },
+ /* 8E */ { 0, &Ia_movw_Sw_Ew },
+ /* 8F */ { 0, &Ia_popw_Ew },
+ /* 90 */ { 0, &Ia_xchgw_RX_AX }, // handle XCHG R8w, AX
+ /* 91 */ { 0, &Ia_xchgw_RX_AX },
+ /* 92 */ { 0, &Ia_xchgw_RX_AX },
+ /* 93 */ { 0, &Ia_xchgw_RX_AX },
+ /* 94 */ { 0, &Ia_xchgw_RX_AX },
+ /* 95 */ { 0, &Ia_xchgw_RX_AX },
+ /* 96 */ { 0, &Ia_xchgw_RX_AX },
+ /* 97 */ { 0, &Ia_xchgw_RX_AX },
+ /* 98 */ { 0, &Ia_cbw },
+ /* 99 */ { 0, &Ia_cwd },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_fwait },
+ /* 9C */ { 0, &Ia_pushfw },
+ /* 9D */ { 0, &Ia_popfw },
+ /* 9E */ { 0, &Ia_sahf },
+ /* 9F */ { 0, &Ia_lahf },
+ /* A0 */ { 0, &Ia_movb_AL_Ob },
+ /* A1 */ { 0, &Ia_movw_AX_Ow },
+ /* A0 */ { 0, &Ia_movb_Ob_AL },
+ /* A1 */ { 0, &Ia_movw_Ow_AX },
+ /* A4 */ { 0, &Ia_movsb_Yb_Xb },
+ /* A5 */ { 0, &Ia_movsw_Yw_Xw },
+ /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
+ /* A7 */ { 0, &Ia_cmpsw_Xw_Yw },
+ /* A8 */ { 0, &Ia_testb_AL_Ib },
+ /* A9 */ { 0, &Ia_testw_AX_Iw },
+ /* AA */ { 0, &Ia_stosb_Yb_AL },
+ /* AB */ { 0, &Ia_stosw_Yw_AX },
+ /* AC */ { 0, &Ia_lodsb_AL_Xb },
+ /* AD */ { 0, &Ia_lodsw_AX_Xw },
+ /* AE */ { 0, &Ia_scasb_AL_Yb },
+ /* AF */ { 0, &Ia_scasw_AX_Yw },
+ /* B0 */ { 0, &Ia_movb_R8_Ib },
+ /* B1 */ { 0, &Ia_movb_R8_Ib },
+ /* B2 */ { 0, &Ia_movb_R8_Ib },
+ /* B3 */ { 0, &Ia_movb_R8_Ib },
+ /* B4 */ { 0, &Ia_movb_R8_Ib },
+ /* B5 */ { 0, &Ia_movb_R8_Ib },
+ /* B6 */ { 0, &Ia_movb_R8_Ib },
+ /* B7 */ { 0, &Ia_movb_R8_Ib },
+ /* B8 */ { 0, &Ia_movw_RX_Iw },
+ /* B9 */ { 0, &Ia_movw_RX_Iw },
+ /* BA */ { 0, &Ia_movw_RX_Iw },
+ /* BB */ { 0, &Ia_movw_RX_Iw },
+ /* BC */ { 0, &Ia_movw_RX_Iw },
+ /* BD */ { 0, &Ia_movw_RX_Iw },
+ /* BE */ { 0, &Ia_movw_RX_Iw },
+ /* BF */ { 0, &Ia_movw_RX_Iw },
+ /* C0 */ { GRPN(G2Eb) },
+ /* C1 */ { GRPN(G2Ew) },
+ /* C2 */ { 0, &Ia_ret_Iw },
+ /* C3 */ { 0, &Ia_ret },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { GRPN(G11Eb) },
+ /* C7 */ { GRPN(G11Ew) },
+ /* C8 */ { 0, &Ia_enter },
+ /* C9 */ { 0, &Ia_leave },
+ /* CA */ { 0, &Ia_lret_Iw },
+ /* CB */ { 0, &Ia_lret },
+ /* CC */ { 0, &Ia_int3 },
+ /* CD */ { 0, &Ia_int_Ib },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_iretw },
+ /* D0 */ { GRPN(G2EbI1) },
+ /* D1 */ { GRPN(G2EwI1) },
+ /* D2 */ { GRPN(G2EbCL) },
+ /* D3 */ { GRPN(G2EwCL) },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_xlat },
+ /* D8 */ { GRPFP(D8) },
+ /* D9 */ { GRPFP(D9) },
+ /* DA */ { GRPFP(DA) },
+ /* DB */ { GRPFP(DB) },
+ /* DC */ { GRPFP(DC) },
+ /* DD */ { GRPFP(DD) },
+ /* DE */ { GRPFP(DE) },
+ /* DF */ { GRPFP(DF) },
+ /* E0 */ { 0, &Ia_loopne_Jb },
+ /* E1 */ { 0, &Ia_loope_Jb },
+ /* E2 */ { 0, &Ia_loop_Jb },
+ /* E3 */ { 0, &Ia_jrcxz_Jb },
+ /* E4 */ { 0, &Ia_inb_AL_Ib },
+ /* E5 */ { 0, &Ia_inw_AX_Ib },
+ /* E6 */ { 0, &Ia_outb_Ib_AL },
+ /* E7 */ { 0, &Ia_outw_Ib_AX },
+ /* E8 */ { 0, &Ia_call_Jd },
+ /* E9 */ { 0, &Ia_jmp_Jd },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_jmp_Jb },
+ /* EC */ { 0, &Ia_inb_AL_DX },
+ /* ED */ { 0, &Ia_inw_AX_DX },
+ /* EE */ { 0, &Ia_outb_DX_AL },
+ /* EF */ { 0, &Ia_outw_DX_AX },
+ /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
+ /* F1 */ { 0, &Ia_int1 },
+ /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
+ /* F3 */ { 0, &Ia_prefix_rep }, // REP:
+ /* F4 */ { 0, &Ia_hlt },
+ /* F5 */ { 0, &Ia_cmc },
+ /* F6 */ { GRPN(G3Eb) },
+ /* F7 */ { GRPN(G3Ew) },
+ /* F8 */ { 0, &Ia_clc },
+ /* F9 */ { 0, &Ia_stc },
+ /* FA */ { 0, &Ia_cli },
+ /* FB */ { 0, &Ia_sti },
+ /* FC */ { 0, &Ia_cld },
+ /* FD */ { 0, &Ia_std },
+ /* FE */ { GRPN(G4) },
+ /* FF */ { GRPN(64G5w) },
+
+ // 256 entries for two byte opcodes
+ /* 0F 00 */ { GRPN(G6) },
+ /* 0F 01 */ { GRPMOD(G7) },
+ /* 0F 02 */ { 0, &Ia_larw_Gw_Ew },
+ /* 0F 03 */ { 0, &Ia_lslw_Gw_Ew },
+ /* 0F 04 */ { 0, &Ia_Invalid },
+ /* 0F 05 */ { 0, &Ia_syscall },
+ /* 0F 06 */ { 0, &Ia_clts },
+ /* 0F 07 */ { 0, &Ia_sysret },
+ /* 0F 08 */ { 0, &Ia_invd },
+ /* 0F 09 */ { 0, &Ia_wbinvd },
+ /* 0F 0A */ { 0, &Ia_Invalid },
+ /* 0F 0B */ { 0, &Ia_ud2a },
+ /* 0F 0C */ { 0, &Ia_Invalid },
+ /* 0F 0D */ { 0, &Ia_prefetchw }, // 3DNow!
+ /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
+ /* 0F 0F */ { GRP3DNOW },
+ /* 0F 10 */ { GRPSSE(0f10) },
+ /* 0F 11 */ { GRPSSE(0f11) },
+ /* 0F 12 */ { GRPSSE(0f12) },
+ /* 0F 13 */ { GRPSSE2(0f13) },
+ /* 0F 14 */ { GRPSSE2(0f14) },
+ /* 0F 15 */ { GRPSSE2(0f15) },
+ /* 0F 16 */ { GRPSSE(0f16) },
+ /* 0F 17 */ { GRPSSE2(0f17) },
+ /* 0F 18 */ { GRPN(G16) },
+ /* 0F 19 */ { 0, &Ia_multibyte_nop },
+ /* 0F 1A */ { 0, &Ia_multibyte_nop },
+ /* 0F 1B */ { 0, &Ia_multibyte_nop },
+ /* 0F 1C */ { 0, &Ia_multibyte_nop },
+ /* 0F 1D */ { 0, &Ia_multibyte_nop },
+ /* 0F 1E */ { 0, &Ia_multibyte_nop },
+ /* 0F 1F */ { 0, &Ia_multibyte_nop },
+ /* 0F 20 */ { 0, &Ia_movq_Rq_Cq },
+ /* 0F 21 */ { 0, &Ia_movq_Rq_Dq },
+ /* 0F 22 */ { 0, &Ia_movq_Cq_Rq },
+ /* 0F 23 */ { 0, &Ia_movq_Dq_Rq },
+ /* 0F 24 */ { 0, &Ia_Invalid },
+ /* 0F 25 */ { 0, &Ia_Invalid },
+ /* 0F 26 */ { 0, &Ia_Invalid },
+ /* 0F 27 */ { 0, &Ia_Invalid },
+ /* 0F 28 */ { GRPSSE2(0f28) },
+ /* 0F 29 */ { GRPSSE2(0f29) },
+ /* 0F 2A */ { GRPSSE(0f2a) },
+ /* 0F 2B */ { GRPSSE(0f2b) },
+ /* 0F 2C */ { GRPSSE(0f2c) },
+ /* 0F 2D */ { GRPSSE(0f2d) },
+ /* 0F 2E */ { GRPSSE2(0f2e) },
+ /* 0F 2F */ { GRPSSE2(0f2f) },
+ /* 0F 30 */ { 0, &Ia_wrmsr },
+ /* 0F 31 */ { 0, &Ia_rdtsc },
+ /* 0F 32 */ { 0, &Ia_rdmsr },
+ /* 0F 33 */ { 0, &Ia_rdpmc },
+ /* 0F 34 */ { 0, &Ia_sysenter },
+ /* 0F 35 */ { 0, &Ia_sysexit },
+ /* 0F 36 */ { 0, &Ia_Invalid },
+ /* 0F 37 */ { 0, &Ia_getsec },
+ /* 0F 38 */ { GR3BTAB(0f38) },
+ /* 0F 39 */ { 0, &Ia_Invalid },
+ /* 0F 3A */ { GR3BTAB(0f3a) },
+ /* 0F 3B */ { 0, &Ia_Invalid },
+ /* 0F 3C */ { 0, &Ia_Invalid },
+ /* 0F 3D */ { 0, &Ia_Invalid },
+ /* 0F 3E */ { 0, &Ia_Invalid },
+ /* 0F 3F */ { 0, &Ia_Invalid },
+ /* 0F 40 */ { 0, &Ia_cmovow_Gw_Ew },
+ /* 0F 41 */ { 0, &Ia_cmovnow_Gw_Ew },
+ /* 0F 42 */ { 0, &Ia_cmovbw_Gw_Ew },
+ /* 0F 43 */ { 0, &Ia_cmovnbw_Gw_Ew },
+ /* 0F 44 */ { 0, &Ia_cmovzw_Gw_Ew },
+ /* 0F 45 */ { 0, &Ia_cmovnzw_Gw_Ew },
+ /* 0F 46 */ { 0, &Ia_cmovbew_Gw_Ew },
+ /* 0F 47 */ { 0, &Ia_cmovnbew_Gw_Ew },
+ /* 0F 48 */ { 0, &Ia_cmovsw_Gw_Ew },
+ /* 0F 49 */ { 0, &Ia_cmovnsw_Gw_Ew },
+ /* 0F 4A */ { 0, &Ia_cmovpw_Gw_Ew },
+ /* 0F 4B */ { 0, &Ia_cmovnpw_Gw_Ew },
+ /* 0F 4C */ { 0, &Ia_cmovlw_Gw_Ew },
+ /* 0F 4D */ { 0, &Ia_cmovnlw_Gw_Ew },
+ /* 0F 4E */ { 0, &Ia_cmovlew_Gw_Ew },
+ /* 0F 4F */ { 0, &Ia_cmovnlew_Gw_Ew },
+ /* 0F 50 */ { GRPSSE2(0f50) },
+ /* 0F 51 */ { GRPSSE(0f51) },
+ /* 0F 52 */ { GRPSSE(0f52) },
+ /* 0F 53 */ { GRPSSE(0f53) },
+ /* 0F 54 */ { GRPSSE2(0f54) },
+ /* 0F 55 */ { GRPSSE2(0f55) },
+ /* 0F 56 */ { GRPSSE2(0f56) },
+ /* 0F 57 */ { GRPSSE2(0f57) },
+ /* 0F 58 */ { GRPSSE(0f58) },
+ /* 0F 59 */ { GRPSSE(0f59) },
+ /* 0F 5A */ { GRPSSE(0f5a) },
+ /* 0F 5B */ { GRPSSE(0f5b) },
+ /* 0F 5C */ { GRPSSE(0f5c) },
+ /* 0F 5D */ { GRPSSE(0f5d) },
+ /* 0F 5E */ { GRPSSE(0f5e) },
+ /* 0F 5F */ { GRPSSE(0f5f) },
+ /* 0F 60 */ { GRPSSE2(0f60) },
+ /* 0F 61 */ { GRPSSE2(0f61) },
+ /* 0F 62 */ { GRPSSE2(0f62) },
+ /* 0F 63 */ { GRPSSE2(0f63) },
+ /* 0F 64 */ { GRPSSE2(0f64) },
+ /* 0F 65 */ { GRPSSE2(0f65) },
+ /* 0F 66 */ { GRPSSE2(0f66) },
+ /* 0F 67 */ { GRPSSE2(0f67) },
+ /* 0F 68 */ { GRPSSE2(0f68) },
+ /* 0F 69 */ { GRPSSE2(0f69) },
+ /* 0F 6A */ { GRPSSE2(0f6a) },
+ /* 0F 6B */ { GRPSSE2(0f6b) },
+ /* 0F 6C */ { GRPSSE66(Ia_punpcklqdq_Vdq_Wdq) },
+ /* 0F 6D */ { GRPSSE66(Ia_punpckhqdq_Vdq_Wdq) },
+ /* 0F 6E */ { GRPSSE2(0f6e) },
+ /* 0F 6F */ { GRPSSE(0f6f) },
+ /* 0F 70 */ { GRPSSE(0f70) },
+ /* 0F 71 */ { GRPN(G12) },
+ /* 0F 72 */ { GRPN(G13) },
+ /* 0F 73 */ { GRPN(G14) },
+ /* 0F 74 */ { GRPSSE2(0f74) },
+ /* 0F 75 */ { GRPSSE2(0f75) },
+ /* 0F 76 */ { GRPSSE2(0f76) },
+ /* 0F 77 */ { 0, &Ia_emms },
+ /* 0F 78 */ { GRPSSE(0f78Q) }, // VMX
+ /* 0F 79 */ { GRPSSE(0f79Q) }, // VMX
+ /* 0F 7A */ { 0, &Ia_Invalid },
+ /* 0F 7B */ { 0, &Ia_Invalid },
+ /* 0F 7C */ { GRPSSE(0f7c) },
+ /* 0F 7D */ { GRPSSE(0f7d) },
+ /* 0F 7E */ { GRPSSE(0f7e) },
+ /* 0F 7F */ { GRPSSE(0f7f) },
+ /* 0F 80 */ { 0, &Ia_jo_Jd },
+ /* 0F 81 */ { 0, &Ia_jno_Jd },
+ /* 0F 82 */ { 0, &Ia_jb_Jd },
+ /* 0F 83 */ { 0, &Ia_jnb_Jd },
+ /* 0F 84 */ { 0, &Ia_jz_Jd },
+ /* 0F 85 */ { 0, &Ia_jnz_Jd },
+ /* 0F 86 */ { 0, &Ia_jbe_Jd },
+ /* 0F 87 */ { 0, &Ia_jnbe_Jd },
+ /* 0F 88 */ { 0, &Ia_js_Jd },
+ /* 0F 89 */ { 0, &Ia_jns_Jd },
+ /* 0F 8A */ { 0, &Ia_jp_Jd },
+ /* 0F 8B */ { 0, &Ia_jnp_Jd },
+ /* 0F 8C */ { 0, &Ia_jl_Jd },
+ /* 0F 8D */ { 0, &Ia_jnl_Jd },
+ /* 0F 8E */ { 0, &Ia_jle_Jd },
+ /* 0F 8F */ { 0, &Ia_jnle_Jd },
+ /* 0F 90 */ { 0, &Ia_seto_Eb },
+ /* 0F 91 */ { 0, &Ia_setno_Eb },
+ /* 0F 92 */ { 0, &Ia_setb_Eb },
+ /* 0F 93 */ { 0, &Ia_setnb_Eb },
+ /* 0F 94 */ { 0, &Ia_setz_Eb },
+ /* 0F 95 */ { 0, &Ia_setnz_Eb },
+ /* 0F 96 */ { 0, &Ia_setbe_Eb },
+ /* 0F 97 */ { 0, &Ia_setnbe_Eb },
+ /* 0F 98 */ { 0, &Ia_sets_Eb },
+ /* 0F 99 */ { 0, &Ia_setns_Eb },
+ /* 0F 9A */ { 0, &Ia_setp_Eb },
+ /* 0F 9B */ { 0, &Ia_setnp_Eb },
+ /* 0F 9C */ { 0, &Ia_setl_Eb },
+ /* 0F 9D */ { 0, &Ia_setnl_Eb },
+ /* 0F 9E */ { 0, &Ia_setle_Eb },
+ /* 0F 9F */ { 0, &Ia_setnle_Eb },
+ /* 0F A0 */ { 0, &Ia_pushw_FS },
+ /* 0F A1 */ { 0, &Ia_popw_FS },
+ /* 0F A2 */ { 0, &Ia_cpuid },
+ /* 0F A3 */ { 0, &Ia_btw_Ew_Gw },
+ /* 0F A4 */ { 0, &Ia_shldw_Ew_Gw_Ib },
+ /* 0F A5 */ { 0, &Ia_shldw_Ew_Gw_CL },
+ /* 0F A6 */ { 0, &Ia_Invalid },
+ /* 0F A7 */ { 0, &Ia_Invalid },
+ /* 0F A8 */ { 0, &Ia_pushw_GS },
+ /* 0F A9 */ { 0, &Ia_popw_GS },
+ /* 0F AA */ { 0, &Ia_rsm },
+ /* 0F AB */ { 0, &Ia_btsw_Ew_Gw },
+ /* 0F AC */ { 0, &Ia_shrdw_Ew_Gw_Ib },
+ /* 0F AD */ { 0, &Ia_shrdw_Ew_Gw_CL },
+ /* 0F AE */ { GRPMOD(G15) },
+ /* 0F AF */ { 0, &Ia_imulw_Gw_Ew },
+ /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
+ /* 0F B1 */ { 0, &Ia_cmpxchgw_Ew_Gw },
+ /* 0F B2 */ { 0, &Ia_lssw_Gw_Mp },
+ /* 0F B3 */ { 0, &Ia_btrw_Ew_Gw },
+ /* 0F B4 */ { 0, &Ia_lfsw_Gw_Mp },
+ /* 0F B5 */ { 0, &Ia_lgsw_Gw_Mp },
+ /* 0F B6 */ { 0, &Ia_movzbw_Gw_Eb },
+ /* 0F B7 */ { 0, &Ia_movw_Gw_Ew },
+ /* 0F B8 */ { GRPSSEF3(Ia_popcnt_Gw_Ew) },
+ /* 0F B9 */ { 0, &Ia_ud2b },
+ /* 0F BA */ { GRPN(G8EwIb) },
+ /* 0F BB */ { 0, &Ia_btcw_Ew_Gw },
+ /* 0F BC */ { GRPSSE(0fbcw) },
+ /* 0F BD */ { GRPSSE(0fbdw) },
+ /* 0F BE */ { 0, &Ia_movsbw_Gw_Eb },
+ /* 0F BF */ { 0, &Ia_movw_Gw_Ew },
+ /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
+ /* 0F C0 */ { 0, &Ia_xaddw_Ew_Gw },
+ /* 0F C2 */ { GRPSSE(0fc2) },
+ /* 0F C3 */ { GRPSSENONE(Ia_movnti_Md_Gd) },
+ /* 0F C4 */ { GRPSSE2(0fc4) },
+ /* 0F C5 */ { GRPSSE2(0fc5) },
+ /* 0F C6 */ { GRPSSE2(0fc6) },
+ /* 0F C7 */ { GRPMOD(G9w) },
+ /* 0F C8 */ { 0, &Ia_bswapw_RX },
+ /* 0F C9 */ { 0, &Ia_bswapw_RX },
+ /* 0F CA */ { 0, &Ia_bswapw_RX },
+ /* 0F CB */ { 0, &Ia_bswapw_RX },
+ /* 0F CC */ { 0, &Ia_bswapw_RX },
+ /* 0F CD */ { 0, &Ia_bswapw_RX },
+ /* 0F CE */ { 0, &Ia_bswapw_RX },
+ /* 0F CF */ { 0, &Ia_bswapw_RX },
+ /* 0F D0 */ { GRPSSE(0fd0) },
+ /* 0F D1 */ { GRPSSE2(0fd1) },
+ /* 0F D2 */ { GRPSSE2(0fd2) },
+ /* 0F D3 */ { GRPSSE2(0fd3) },
+ /* 0F D4 */ { GRPSSE2(0fd4) },
+ /* 0F D5 */ { GRPSSE2(0fd5) },
+ /* 0F D6 */ { GRPSSE(0fd6) },
+ /* 0F D7 */ { GRPSSE2(0fd7) },
+ /* 0F D8 */ { GRPSSE2(0fd8) },
+ /* 0F D9 */ { GRPSSE2(0fd9) },
+ /* 0F DA */ { GRPSSE2(0fda) },
+ /* 0F DB */ { GRPSSE2(0fdb) },
+ /* 0F DC */ { GRPSSE2(0fdc) },
+ /* 0F DD */ { GRPSSE2(0fdd) },
+ /* 0F DE */ { GRPSSE2(0fde) },
+ /* 0F DF */ { GRPSSE2(0fdf) },
+ /* 0F E0 */ { GRPSSE2(0fe0) },
+ /* 0F E1 */ { GRPSSE2(0fe1) },
+ /* 0F E2 */ { GRPSSE2(0fe2) },
+ /* 0F E3 */ { GRPSSE2(0fe3) },
+ /* 0F E4 */ { GRPSSE2(0fe4) },
+ /* 0F E5 */ { GRPSSE2(0fe5) },
+ /* 0F E6 */ { GRPSSE(0fe6) },
+ /* 0F E7 */ { GRPSSE2(0fe7) },
+ /* 0F E8 */ { GRPSSE2(0fe8) },
+ /* 0F E9 */ { GRPSSE2(0fe9) },
+ /* 0F EA */ { GRPSSE2(0fea) },
+ /* 0F EB */ { GRPSSE2(0feb) },
+ /* 0F EC */ { GRPSSE2(0fec) },
+ /* 0F ED */ { GRPSSE2(0fed) },
+ /* 0F EE */ { GRPSSE2(0fee) },
+ /* 0F EF */ { GRPSSE2(0fef) },
+ /* 0F F0 */ { GRPSSEF2(Ia_lddqu_Vdq_Mdq) },
+ /* 0F F1 */ { GRPSSE2(0ff1) },
+ /* 0F F2 */ { GRPSSE2(0ff2) },
+ /* 0F F3 */ { GRPSSE2(0ff3) },
+ /* 0F F4 */ { GRPSSE2(0ff4) },
+ /* 0F F5 */ { GRPSSE2(0ff5) },
+ /* 0F F6 */ { GRPSSE2(0ff6) },
+ /* 0F F7 */ { GRPSSE2(0ff7) },
+ /* 0F F8 */ { GRPSSE2(0ff8) },
+ /* 0F F9 */ { GRPSSE2(0ff9) },
+ /* 0F FA */ { GRPSSE2(0ffa) },
+ /* 0F FB */ { GRPSSE2(0ffb) },
+ /* 0F FC */ { GRPSSE2(0ffc) },
+ /* 0F FD */ { GRPSSE2(0ffd) },
+ /* 0F FE */ { GRPSSE2(0ffe) },
+ /* 0F FF */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodes64d[256*2] = {
+ // 256 entries for single byte opcodes
+ /* 00 */ { 0, &Ia_addb_Eb_Gb },
+ /* 01 */ { 0, &Ia_addl_Ed_Gd },
+ /* 02 */ { 0, &Ia_addb_Gb_Eb },
+ /* 03 */ { 0, &Ia_addl_Gd_Ed },
+ /* 04 */ { 0, &Ia_addb_AL_Ib, },
+ /* 05 */ { 0, &Ia_addl_EAX_Id, },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_orb_Eb_Gb },
+ /* 09 */ { 0, &Ia_orl_Ed_Gd },
+ /* 0A */ { 0, &Ia_orb_Gb_Eb },
+ /* 0B */ { 0, &Ia_orl_Gd_Ed },
+ /* 0C */ { 0, &Ia_orb_AL_Ib },
+ /* 0D */ { 0, &Ia_orl_EAX_Id },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_error }, // 2 byte escape
+ /* 10 */ { 0, &Ia_adcb_Eb_Gb },
+ /* 11 */ { 0, &Ia_adcl_Ed_Gd },
+ /* 12 */ { 0, &Ia_adcb_Gb_Eb },
+ /* 13 */ { 0, &Ia_adcl_Gd_Ed },
+ /* 14 */ { 0, &Ia_adcb_AL_Ib },
+ /* 15 */ { 0, &Ia_adcl_EAX_Id },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
+ /* 19 */ { 0, &Ia_sbbl_Ed_Gd },
+ /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
+ /* 1B */ { 0, &Ia_sbbl_Gd_Ed },
+ /* 1C */ { 0, &Ia_sbbb_AL_Ib },
+ /* 1D */ { 0, &Ia_sbbl_EAX_Id },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_andb_Eb_Gb },
+ /* 21 */ { 0, &Ia_andl_Ed_Gd },
+ /* 22 */ { 0, &Ia_andb_Gb_Eb },
+ /* 23 */ { 0, &Ia_andl_Gd_Ed },
+ /* 24 */ { 0, &Ia_andb_AL_Ib },
+ /* 25 */ { 0, &Ia_andl_EAX_Id },
+ /* 26 */ { 0, &Ia_prefix_es }, // ES:
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_subb_Eb_Gb },
+ /* 29 */ { 0, &Ia_subl_Ed_Gd },
+ /* 2A */ { 0, &Ia_subb_Gb_Eb },
+ /* 2B */ { 0, &Ia_subl_Gd_Ed },
+ /* 2C */ { 0, &Ia_subb_AL_Ib },
+ /* 2D */ { 0, &Ia_subl_EAX_Id },
+ /* 2E */ { 0, &Ia_prefix_cs }, // CS:
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_xorb_Eb_Gb },
+ /* 31 */ { 0, &Ia_xorl_Ed_Gd },
+ /* 32 */ { 0, &Ia_xorb_Gb_Eb },
+ /* 33 */ { 0, &Ia_xorl_Gd_Ed },
+ /* 34 */ { 0, &Ia_xorb_AL_Ib },
+ /* 35 */ { 0, &Ia_xorl_EAX_Id },
+ /* 36 */ { 0, &Ia_prefix_ss }, // SS:
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
+ /* 39 */ { 0, &Ia_cmpl_Ed_Gd },
+ /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
+ /* 3B */ { 0, &Ia_cmpl_Gd_Ed },
+ /* 3C */ { 0, &Ia_cmpb_AL_Ib },
+ /* 3D */ { 0, &Ia_cmpl_EAX_Id },
+ /* 3E */ { 0, &Ia_prefix_ds }, // DS:
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 41 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 42 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 43 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 44 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 45 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 46 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 47 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 48 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 49 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4A */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4B */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4C */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4D */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4E */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4F */ { 0, &Ia_prefix_rex }, // REX:
+ /* 50 */ { 0, &Ia_pushq_RRX },
+ /* 51 */ { 0, &Ia_pushq_RRX },
+ /* 52 */ { 0, &Ia_pushq_RRX },
+ /* 53 */ { 0, &Ia_pushq_RRX },
+ /* 54 */ { 0, &Ia_pushq_RRX },
+ /* 55 */ { 0, &Ia_pushq_RRX },
+ /* 56 */ { 0, &Ia_pushq_RRX },
+ /* 57 */ { 0, &Ia_pushq_RRX },
+ /* 58 */ { 0, &Ia_popq_RRX },
+ /* 59 */ { 0, &Ia_popq_RRX },
+ /* 5A */ { 0, &Ia_popq_RRX },
+ /* 5B */ { 0, &Ia_popq_RRX },
+ /* 5C */ { 0, &Ia_popq_RRX },
+ /* 5D */ { 0, &Ia_popq_RRX },
+ /* 5E */ { 0, &Ia_popq_RRX },
+ /* 5F */ { 0, &Ia_popq_RRX },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_movl_Gd_Ed },
+ /* 64 */ { 0, &Ia_prefix_fs }, // FS:
+ /* 65 */ { 0, &Ia_prefix_gs }, // GS:
+ /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
+ /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
+ /* 68 */ { 0, &Ia_pushq_sId },
+ /* 69 */ { 0, &Ia_imull_Gd_Ed_Id },
+ /* 6A */ { 0, &Ia_pushq_sIb },
+ /* 6B */ { 0, &Ia_imull_Gd_Ed_sIb },
+ /* 6C */ { 0, &Ia_insb_Yb_DX },
+ /* 6D */ { 0, &Ia_insl_Yd_DX },
+ /* 6E */ { 0, &Ia_outsb_DX_Xb },
+ /* 6F */ { 0, &Ia_outsl_DX_Xd },
+ /* 70 */ { 0, &Ia_jo_Jb },
+ /* 71 */ { 0, &Ia_jno_Jb },
+ /* 72 */ { 0, &Ia_jb_Jb },
+ /* 73 */ { 0, &Ia_jnb_Jb },
+ /* 74 */ { 0, &Ia_jz_Jb },
+ /* 75 */ { 0, &Ia_jnz_Jb },
+ /* 76 */ { 0, &Ia_jbe_Jb },
+ /* 77 */ { 0, &Ia_jnbe_Jb },
+ /* 78 */ { 0, &Ia_js_Jb },
+ /* 79 */ { 0, &Ia_jns_Jb },
+ /* 7A */ { 0, &Ia_jp_Jb },
+ /* 7B */ { 0, &Ia_jnp_Jb },
+ /* 7C */ { 0, &Ia_jl_Jb },
+ /* 7D */ { 0, &Ia_jnl_Jb },
+ /* 7E */ { 0, &Ia_jle_Jb },
+ /* 7F */ { 0, &Ia_jnle_Jb },
+ /* 80 */ { GRPN(G1EbIb) },
+ /* 81 */ { GRPN(G1EdId) },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { GRPN(G1EdIb) },
+ /* 84 */ { 0, &Ia_testb_Eb_Gb },
+ /* 85 */ { 0, &Ia_testl_Ed_Gd },
+ /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
+ /* 87 */ { 0, &Ia_xchgl_Ed_Gd },
+ /* 88 */ { 0, &Ia_movb_Eb_Gb },
+ /* 89 */ { 0, &Ia_movl_Ed_Gd },
+ /* 8A */ { 0, &Ia_movb_Gb_Eb },
+ /* 8B */ { 0, &Ia_movl_Gd_Ed },
+ /* 8C */ { 0, &Ia_movw_Ew_Sw },
+ /* 8D */ { 0, &Ia_leal_Gd_Md },
+ /* 8E */ { 0, &Ia_movw_Sw_Ew },
+ /* 8F */ { 0, &Ia_popq_Eq },
+ /* 90 */ { 0, &Ia_xchgl_ERX_EAX }, // handle XCHG R8d, EAX
+ /* 91 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 92 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 93 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 94 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 95 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 96 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 97 */ { 0, &Ia_xchgl_ERX_EAX },
+ /* 98 */ { 0, &Ia_cwde },
+ /* 99 */ { 0, &Ia_cdq },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_fwait },
+ /* 9C */ { 0, &Ia_pushfq },
+ /* 9D */ { 0, &Ia_popfq },
+ /* 9E */ { 0, &Ia_sahf },
+ /* 9F */ { 0, &Ia_lahf },
+ /* A0 */ { 0, &Ia_movb_AL_Ob },
+ /* A1 */ { 0, &Ia_movl_EAX_Od },
+ /* A0 */ { 0, &Ia_movb_Ob_AL },
+ /* A1 */ { 0, &Ia_movl_Od_EAX },
+ /* A4 */ { 0, &Ia_movsb_Yb_Xb },
+ /* A5 */ { 0, &Ia_movsl_Yd_Xd },
+ /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
+ /* A7 */ { 0, &Ia_cmpsl_Xd_Yd },
+ /* A8 */ { 0, &Ia_testb_AL_Ib },
+ /* A9 */ { 0, &Ia_testl_EAX_Id },
+ /* AA */ { 0, &Ia_stosb_Yb_AL },
+ /* AB */ { 0, &Ia_stosl_Yd_EAX },
+ /* AC */ { 0, &Ia_lodsb_AL_Xb },
+ /* AD */ { 0, &Ia_lodsl_EAX_Xd },
+ /* AE */ { 0, &Ia_scasb_AL_Yb },
+ /* AF */ { 0, &Ia_scasl_EAX_Yd },
+ /* B0 */ { 0, &Ia_movb_R8_Ib },
+ /* B1 */ { 0, &Ia_movb_R8_Ib },
+ /* B2 */ { 0, &Ia_movb_R8_Ib },
+ /* B3 */ { 0, &Ia_movb_R8_Ib },
+ /* B4 */ { 0, &Ia_movb_R8_Ib },
+ /* B5 */ { 0, &Ia_movb_R8_Ib },
+ /* B6 */ { 0, &Ia_movb_R8_Ib },
+ /* B7 */ { 0, &Ia_movb_R8_Ib },
+ /* B8 */ { 0, &Ia_movl_ERX_Id },
+ /* B9 */ { 0, &Ia_movl_ERX_Id },
+ /* BA */ { 0, &Ia_movl_ERX_Id },
+ /* BB */ { 0, &Ia_movl_ERX_Id },
+ /* BC */ { 0, &Ia_movl_ERX_Id },
+ /* BD */ { 0, &Ia_movl_ERX_Id },
+ /* BE */ { 0, &Ia_movl_ERX_Id },
+ /* BF */ { 0, &Ia_movl_ERX_Id },
+ /* C0 */ { GRPN(G2Eb) },
+ /* C1 */ { GRPN(G2Ed) },
+ /* C2 */ { 0, &Ia_ret_Iw },
+ /* C3 */ { 0, &Ia_ret },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { GRPN(G11Eb) },
+ /* C7 */ { GRPN(G11Ed) },
+ /* C8 */ { 0, &Ia_enter },
+ /* C9 */ { 0, &Ia_leave },
+ /* CA */ { 0, &Ia_lret_Iw },
+ /* CB */ { 0, &Ia_lret },
+ /* CC */ { 0, &Ia_int3 },
+ /* CD */ { 0, &Ia_int_Ib },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_iretl },
+ /* D0 */ { GRPN(G2EbI1) },
+ /* D1 */ { GRPN(G2EdI1) },
+ /* D2 */ { GRPN(G2EbCL) },
+ /* D3 */ { GRPN(G2EdCL) },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_xlat },
+ /* D8 */ { GRPFP(D8) },
+ /* D9 */ { GRPFP(D9) },
+ /* DA */ { GRPFP(DA) },
+ /* DB */ { GRPFP(DB) },
+ /* DC */ { GRPFP(DC) },
+ /* DD */ { GRPFP(DD) },
+ /* DE */ { GRPFP(DE) },
+ /* DF */ { GRPFP(DF) },
+ /* E0 */ { 0, &Ia_loopne_Jb },
+ /* E1 */ { 0, &Ia_loope_Jb },
+ /* E2 */ { 0, &Ia_loop_Jb },
+ /* E3 */ { 0, &Ia_jrcxz_Jb },
+ /* E4 */ { 0, &Ia_inb_AL_Ib },
+ /* E5 */ { 0, &Ia_inl_EAX_Ib },
+ /* E6 */ { 0, &Ia_outb_Ib_AL },
+ /* E7 */ { 0, &Ia_outl_Ib_EAX },
+ /* E8 */ { 0, &Ia_call_Jd },
+ /* E9 */ { 0, &Ia_jmp_Jd },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_jmp_Jb },
+ /* EC */ { 0, &Ia_inb_AL_DX },
+ /* ED */ { 0, &Ia_inl_EAX_DX },
+ /* EE */ { 0, &Ia_outb_DX_AL },
+ /* EF */ { 0, &Ia_outl_DX_EAX },
+ /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
+ /* F1 */ { 0, &Ia_int1 },
+ /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
+ /* F3 */ { 0, &Ia_prefix_rep }, // REP:
+ /* F4 */ { 0, &Ia_hlt },
+ /* F5 */ { 0, &Ia_cmc },
+ /* F6 */ { GRPN(G3Eb) },
+ /* F7 */ { GRPN(G3Ed) },
+ /* F8 */ { 0, &Ia_clc },
+ /* F9 */ { 0, &Ia_stc },
+ /* FA */ { 0, &Ia_cli },
+ /* FB */ { 0, &Ia_sti },
+ /* FC */ { 0, &Ia_cld },
+ /* FD */ { 0, &Ia_std },
+ /* FE */ { GRPN(G4) },
+ /* FF */ { GRPN(64G5d) },
+
+ // 256 entries for two byte opcodes
+ /* 0F 00 */ { GRPN(G6) },
+ /* 0F 01 */ { GRPMOD(G7) },
+ /* 0F 02 */ { 0, &Ia_larl_Gd_Ew },
+ /* 0F 03 */ { 0, &Ia_lsll_Gd_Ew },
+ /* 0F 04 */ { 0, &Ia_Invalid },
+ /* 0F 05 */ { 0, &Ia_syscall },
+ /* 0F 06 */ { 0, &Ia_clts },
+ /* 0F 07 */ { 0, &Ia_sysret },
+ /* 0F 08 */ { 0, &Ia_invd },
+ /* 0F 09 */ { 0, &Ia_wbinvd },
+ /* 0F 0A */ { 0, &Ia_Invalid },
+ /* 0F 0B */ { 0, &Ia_ud2a },
+ /* 0F 0C */ { 0, &Ia_Invalid },
+ /* 0F 0D */ { 0, &Ia_prefetchw }, // 3DNow!
+ /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
+ /* 0F 0F */ { GRP3DNOW },
+ /* 0F 10 */ { GRPSSE(0f10) },
+ /* 0F 11 */ { GRPSSE(0f11) },
+ /* 0F 12 */ { GRPSSE(0f12) },
+ /* 0F 13 */ { GRPSSE2(0f13) },
+ /* 0F 14 */ { GRPSSE2(0f14) },
+ /* 0F 15 */ { GRPSSE2(0f15) },
+ /* 0F 16 */ { GRPSSE(0f16) },
+ /* 0F 17 */ { GRPSSE2(0f17) },
+ /* 0F 18 */ { GRPN(G16) },
+ /* 0F 19 */ { 0, &Ia_multibyte_nop },
+ /* 0F 1A */ { 0, &Ia_multibyte_nop },
+ /* 0F 1B */ { 0, &Ia_multibyte_nop },
+ /* 0F 1C */ { 0, &Ia_multibyte_nop },
+ /* 0F 1D */ { 0, &Ia_multibyte_nop },
+ /* 0F 1E */ { 0, &Ia_multibyte_nop },
+ /* 0F 1F */ { 0, &Ia_multibyte_nop },
+ /* 0F 20 */ { 0, &Ia_movq_Rq_Cq },
+ /* 0F 21 */ { 0, &Ia_movq_Rq_Dq },
+ /* 0F 22 */ { 0, &Ia_movq_Cq_Rq },
+ /* 0F 23 */ { 0, &Ia_movq_Dq_Rq },
+ /* 0F 24 */ { 0, &Ia_Invalid },
+ /* 0F 25 */ { 0, &Ia_Invalid },
+ /* 0F 26 */ { 0, &Ia_Invalid },
+ /* 0F 27 */ { 0, &Ia_Invalid },
+ /* 0F 28 */ { GRPSSE2(0f28) },
+ /* 0F 29 */ { GRPSSE2(0f29) },
+ /* 0F 2A */ { GRPSSE(0f2a) },
+ /* 0F 2B */ { GRPSSE(0f2b) },
+ /* 0F 2C */ { GRPSSE(0f2c) },
+ /* 0F 2D */ { GRPSSE(0f2d) },
+ /* 0F 2E */ { GRPSSE2(0f2e) },
+ /* 0F 2F */ { GRPSSE2(0f2f) },
+ /* 0F 30 */ { 0, &Ia_wrmsr },
+ /* 0F 31 */ { 0, &Ia_rdtsc },
+ /* 0F 32 */ { 0, &Ia_rdmsr },
+ /* 0F 33 */ { 0, &Ia_rdpmc },
+ /* 0F 34 */ { 0, &Ia_sysenter },
+ /* 0F 35 */ { 0, &Ia_sysexit },
+ /* 0F 36 */ { 0, &Ia_Invalid },
+ /* 0F 37 */ { 0, &Ia_getsec },
+ /* 0F 38 */ { GR3BTAB(0f38) },
+ /* 0F 39 */ { 0, &Ia_Invalid },
+ /* 0F 3A */ { GR3BTAB(0f3a) },
+ /* 0F 3B */ { 0, &Ia_Invalid },
+ /* 0F 3C */ { 0, &Ia_Invalid },
+ /* 0F 3D */ { 0, &Ia_Invalid },
+ /* 0F 3E */ { 0, &Ia_Invalid },
+ /* 0F 3F */ { 0, &Ia_Invalid },
+ /* 0F 40 */ { 0, &Ia_cmovol_Gd_Ed },
+ /* 0F 41 */ { 0, &Ia_cmovnol_Gd_Ed },
+ /* 0F 42 */ { 0, &Ia_cmovbl_Gd_Ed },
+ /* 0F 43 */ { 0, &Ia_cmovnbl_Gd_Ed },
+ /* 0F 44 */ { 0, &Ia_cmovzl_Gd_Ed },
+ /* 0F 45 */ { 0, &Ia_cmovnzl_Gd_Ed },
+ /* 0F 46 */ { 0, &Ia_cmovbel_Gd_Ed },
+ /* 0F 47 */ { 0, &Ia_cmovnbel_Gd_Ed },
+ /* 0F 48 */ { 0, &Ia_cmovsl_Gd_Ed },
+ /* 0F 49 */ { 0, &Ia_cmovnsl_Gd_Ed },
+ /* 0F 4A */ { 0, &Ia_cmovpl_Gd_Ed },
+ /* 0F 4B */ { 0, &Ia_cmovnpl_Gd_Ed },
+ /* 0F 4C */ { 0, &Ia_cmovll_Gd_Ed },
+ /* 0F 4D */ { 0, &Ia_cmovnll_Gd_Ed },
+ /* 0F 4E */ { 0, &Ia_cmovlel_Gd_Ed },
+ /* 0F 4F */ { 0, &Ia_cmovnlel_Gd_Ed },
+ /* 0F 50 */ { GRPSSE2(0f50) },
+ /* 0F 51 */ { GRPSSE(0f51) },
+ /* 0F 52 */ { GRPSSE(0f52) },
+ /* 0F 53 */ { GRPSSE(0f53) },
+ /* 0F 54 */ { GRPSSE2(0f54) },
+ /* 0F 55 */ { GRPSSE2(0f55) },
+ /* 0F 56 */ { GRPSSE2(0f56) },
+ /* 0F 57 */ { GRPSSE2(0f57) },
+ /* 0F 58 */ { GRPSSE(0f58) },
+ /* 0F 59 */ { GRPSSE(0f59) },
+ /* 0F 5A */ { GRPSSE(0f5a) },
+ /* 0F 5B */ { GRPSSE(0f5b) },
+ /* 0F 5C */ { GRPSSE(0f5c) },
+ /* 0F 5D */ { GRPSSE(0f5d) },
+ /* 0F 5E */ { GRPSSE(0f5e) },
+ /* 0F 5F */ { GRPSSE(0f5f) },
+ /* 0F 60 */ { GRPSSE2(0f60) },
+ /* 0F 61 */ { GRPSSE2(0f61) },
+ /* 0F 62 */ { GRPSSE2(0f62) },
+ /* 0F 63 */ { GRPSSE2(0f63) },
+ /* 0F 64 */ { GRPSSE2(0f64) },
+ /* 0F 65 */ { GRPSSE2(0f65) },
+ /* 0F 66 */ { GRPSSE2(0f66) },
+ /* 0F 67 */ { GRPSSE2(0f67) },
+ /* 0F 68 */ { GRPSSE2(0f68) },
+ /* 0F 69 */ { GRPSSE2(0f69) },
+ /* 0F 6A */ { GRPSSE2(0f6a) },
+ /* 0F 6B */ { GRPSSE2(0f6b) },
+ /* 0F 6C */ { GRPSSE66(Ia_punpcklqdq_Vdq_Wdq) },
+ /* 0F 6D */ { GRPSSE66(Ia_punpckhqdq_Vdq_Wdq) },
+ /* 0F 6E */ { GRPSSE2(0f6e) },
+ /* 0F 6F */ { GRPSSE(0f6f) },
+ /* 0F 70 */ { GRPSSE(0f70) },
+ /* 0F 71 */ { GRPN(G12) },
+ /* 0F 72 */ { GRPN(G13) },
+ /* 0F 73 */ { GRPN(G14) },
+ /* 0F 74 */ { GRPSSE2(0f74) },
+ /* 0F 75 */ { GRPSSE2(0f75) },
+ /* 0F 76 */ { GRPSSE2(0f76) },
+ /* 0F 77 */ { 0, &Ia_emms },
+ /* 0F 78 */ { GRPSSE(0f78Q) }, // VMX
+ /* 0F 79 */ { GRPSSE(0f79Q) }, // VMX
+ /* 0F 7A */ { 0, &Ia_Invalid },
+ /* 0F 7B */ { 0, &Ia_Invalid },
+ /* 0F 7C */ { GRPSSE(0f7c) },
+ /* 0F 7D */ { GRPSSE(0f7d) },
+ /* 0F 7E */ { GRPSSE(0f7e) },
+ /* 0F 7F */ { GRPSSE(0f7f) },
+ /* 0F 80 */ { 0, &Ia_jo_Jd },
+ /* 0F 81 */ { 0, &Ia_jno_Jd },
+ /* 0F 82 */ { 0, &Ia_jb_Jd },
+ /* 0F 83 */ { 0, &Ia_jnb_Jd },
+ /* 0F 84 */ { 0, &Ia_jz_Jd },
+ /* 0F 85 */ { 0, &Ia_jnz_Jd },
+ /* 0F 86 */ { 0, &Ia_jbe_Jd },
+ /* 0F 87 */ { 0, &Ia_jnbe_Jd },
+ /* 0F 88 */ { 0, &Ia_js_Jd },
+ /* 0F 89 */ { 0, &Ia_jns_Jd },
+ /* 0F 8A */ { 0, &Ia_jp_Jd },
+ /* 0F 8B */ { 0, &Ia_jnp_Jd },
+ /* 0F 8C */ { 0, &Ia_jl_Jd },
+ /* 0F 8D */ { 0, &Ia_jnl_Jd },
+ /* 0F 8E */ { 0, &Ia_jle_Jd },
+ /* 0F 8F */ { 0, &Ia_jnle_Jd },
+ /* 0F 90 */ { 0, &Ia_seto_Eb },
+ /* 0F 91 */ { 0, &Ia_setno_Eb },
+ /* 0F 92 */ { 0, &Ia_setb_Eb },
+ /* 0F 93 */ { 0, &Ia_setnb_Eb },
+ /* 0F 94 */ { 0, &Ia_setz_Eb },
+ /* 0F 95 */ { 0, &Ia_setnz_Eb },
+ /* 0F 96 */ { 0, &Ia_setbe_Eb },
+ /* 0F 97 */ { 0, &Ia_setnbe_Eb },
+ /* 0F 98 */ { 0, &Ia_sets_Eb },
+ /* 0F 99 */ { 0, &Ia_setns_Eb },
+ /* 0F 9A */ { 0, &Ia_setp_Eb },
+ /* 0F 9B */ { 0, &Ia_setnp_Eb },
+ /* 0F 9C */ { 0, &Ia_setl_Eb },
+ /* 0F 9D */ { 0, &Ia_setnl_Eb },
+ /* 0F 9E */ { 0, &Ia_setle_Eb },
+ /* 0F 9F */ { 0, &Ia_setnle_Eb },
+ /* 0F A0 */ { 0, &Ia_pushq_FS },
+ /* 0F A1 */ { 0, &Ia_popq_FS },
+ /* 0F A2 */ { 0, &Ia_cpuid },
+ /* 0F A3 */ { 0, &Ia_btl_Ed_Gd },
+ /* 0F A4 */ { 0, &Ia_shldl_Ed_Gd_Ib },
+ /* 0F A5 */ { 0, &Ia_shldl_Ed_Gd_CL },
+ /* 0F A6 */ { 0, &Ia_Invalid },
+ /* 0F A7 */ { 0, &Ia_Invalid },
+ /* 0F A8 */ { 0, &Ia_pushq_GS },
+ /* 0F A9 */ { 0, &Ia_popq_GS },
+ /* 0F AA */ { 0, &Ia_rsm },
+ /* 0F AB */ { 0, &Ia_btsl_Ed_Gd },
+ /* 0F AC */ { 0, &Ia_shrdl_Ed_Gd_Ib },
+ /* 0F AD */ { 0, &Ia_shrdl_Ed_Gd_CL },
+ /* 0F AE */ { GRPMOD(G15) },
+ /* 0F AF */ { 0, &Ia_imull_Gd_Ed },
+ /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
+ /* 0F B1 */ { 0, &Ia_cmpxchgl_Ed_Gd },
+ /* 0F B2 */ { 0, &Ia_lssl_Gd_Mp },
+ /* 0F B3 */ { 0, &Ia_btrl_Ed_Gd },
+ /* 0F B4 */ { 0, &Ia_lfsl_Gd_Mp },
+ /* 0F B5 */ { 0, &Ia_lgsl_Gd_Mp },
+ /* 0F B6 */ { 0, &Ia_movzbl_Gd_Eb },
+ /* 0F B7 */ { 0, &Ia_movzwl_Gd_Ew },
+ /* 0F B8 */ { GRPSSEF3(Ia_popcnt_Gd_Ed) },
+ /* 0F B9 */ { 0, &Ia_ud2b },
+ /* 0F BA */ { GRPN(G8EdIb) },
+ /* 0F BB */ { 0, &Ia_btcl_Ed_Gd },
+ /* 0F BC */ { GRPSSE(0fbcd) },
+ /* 0F BD */ { GRPSSE(0fbdd) },
+ /* 0F BE */ { 0, &Ia_movsbl_Gd_Eb },
+ /* 0F BF */ { 0, &Ia_movswl_Gd_Ew },
+ /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
+ /* 0F C0 */ { 0, &Ia_xaddl_Ed_Gd },
+ /* 0F C2 */ { GRPSSE(0fc2) },
+ /* 0F C3 */ { GRPSSENONE(Ia_movnti_Md_Gd) },
+ /* 0F C4 */ { GRPSSE2(0fc4) },
+ /* 0F C5 */ { GRPSSE2(0fc5) },
+ /* 0F C6 */ { GRPSSE2(0fc6) },
+ /* 0F C7 */ { GRPMOD(G9d) },
+ /* 0F C8 */ { 0, &Ia_bswapl_ERX },
+ /* 0F C9 */ { 0, &Ia_bswapl_ERX },
+ /* 0F CA */ { 0, &Ia_bswapl_ERX },
+ /* 0F CB */ { 0, &Ia_bswapl_ERX },
+ /* 0F CC */ { 0, &Ia_bswapl_ERX },
+ /* 0F CD */ { 0, &Ia_bswapl_ERX },
+ /* 0F CE */ { 0, &Ia_bswapl_ERX },
+ /* 0F CF */ { 0, &Ia_bswapl_ERX },
+ /* 0F D0 */ { GRPSSE(0fd0) },
+ /* 0F D1 */ { GRPSSE2(0fd1) },
+ /* 0F D2 */ { GRPSSE2(0fd2) },
+ /* 0F D3 */ { GRPSSE2(0fd3) },
+ /* 0F D4 */ { GRPSSE2(0fd4) },
+ /* 0F D5 */ { GRPSSE2(0fd5) },
+ /* 0F D6 */ { GRPSSE(0fd6) },
+ /* 0F D7 */ { GRPSSE2(0fd7) },
+ /* 0F D8 */ { GRPSSE2(0fd8) },
+ /* 0F D9 */ { GRPSSE2(0fd9) },
+ /* 0F DA */ { GRPSSE2(0fda) },
+ /* 0F DB */ { GRPSSE2(0fdb) },
+ /* 0F DC */ { GRPSSE2(0fdc) },
+ /* 0F DD */ { GRPSSE2(0fdd) },
+ /* 0F DE */ { GRPSSE2(0fde) },
+ /* 0F DF */ { GRPSSE2(0fdf) },
+ /* 0F E0 */ { GRPSSE2(0fe0) },
+ /* 0F E1 */ { GRPSSE2(0fe1) },
+ /* 0F E2 */ { GRPSSE2(0fe2) },
+ /* 0F E3 */ { GRPSSE2(0fe3) },
+ /* 0F E4 */ { GRPSSE2(0fe4) },
+ /* 0F E5 */ { GRPSSE2(0fe5) },
+ /* 0F E6 */ { GRPSSE(0fe6) },
+ /* 0F E7 */ { GRPSSE2(0fe7) },
+ /* 0F E8 */ { GRPSSE2(0fe8) },
+ /* 0F E9 */ { GRPSSE2(0fe9) },
+ /* 0F EA */ { GRPSSE2(0fea) },
+ /* 0F EB */ { GRPSSE2(0feb) },
+ /* 0F EC */ { GRPSSE2(0fec) },
+ /* 0F ED */ { GRPSSE2(0fed) },
+ /* 0F EE */ { GRPSSE2(0fee) },
+ /* 0F EF */ { GRPSSE2(0fef) },
+ /* 0F F0 */ { GRPSSEF2(Ia_lddqu_Vdq_Mdq) },
+ /* 0F F1 */ { GRPSSE2(0ff1) },
+ /* 0F F2 */ { GRPSSE2(0ff2) },
+ /* 0F F3 */ { GRPSSE2(0ff3) },
+ /* 0F F4 */ { GRPSSE2(0ff4) },
+ /* 0F F5 */ { GRPSSE2(0ff5) },
+ /* 0F F6 */ { GRPSSE2(0ff6) },
+ /* 0F F7 */ { GRPSSE2(0ff7) },
+ /* 0F F8 */ { GRPSSE2(0ff8) },
+ /* 0F F9 */ { GRPSSE2(0ff9) },
+ /* 0F FA */ { GRPSSE2(0ffa) },
+ /* 0F FB */ { GRPSSE2(0ffb) },
+ /* 0F FC */ { GRPSSE2(0ffc) },
+ /* 0F FD */ { GRPSSE2(0ffd) },
+ /* 0F FE */ { GRPSSE2(0ffe) },
+ /* 0F FF */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodes64q[256*2] = {
+ // 256 entries for single byte opcodes
+ /* 00 */ { 0, &Ia_addb_Eb_Gb },
+ /* 01 */ { 0, &Ia_addq_Eq_Gq },
+ /* 02 */ { 0, &Ia_addb_Gb_Eb },
+ /* 03 */ { 0, &Ia_addq_Gq_Eq },
+ /* 04 */ { 0, &Ia_addb_AL_Ib, },
+ /* 05 */ { 0, &Ia_addq_RAX_sId },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_orb_Eb_Gb },
+ /* 09 */ { 0, &Ia_orq_Eq_Gq },
+ /* 0A */ { 0, &Ia_orb_Gb_Eb },
+ /* 0B */ { 0, &Ia_orq_Gq_Eq },
+ /* 0C */ { 0, &Ia_orb_AL_Ib },
+ /* 0D */ { 0, &Ia_orq_RAX_sId },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_error }, // 2 byte escape
+ /* 10 */ { 0, &Ia_adcb_Eb_Gb },
+ /* 11 */ { 0, &Ia_adcq_Eq_Gq },
+ /* 12 */ { 0, &Ia_adcb_Gb_Eb },
+ /* 13 */ { 0, &Ia_adcq_Gq_Eq },
+ /* 14 */ { 0, &Ia_adcb_AL_Ib },
+ /* 15 */ { 0, &Ia_adcq_RAX_sId },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
+ /* 19 */ { 0, &Ia_sbbq_Eq_Gq },
+ /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
+ /* 1B */ { 0, &Ia_sbbq_Gq_Eq },
+ /* 1C */ { 0, &Ia_sbbb_AL_Ib },
+ /* 1D */ { 0, &Ia_sbbq_RAX_sId },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_andb_Eb_Gb },
+ /* 21 */ { 0, &Ia_andq_Eq_Gq },
+ /* 22 */ { 0, &Ia_andb_Gb_Eb },
+ /* 23 */ { 0, &Ia_andq_Gq_Eq },
+ /* 24 */ { 0, &Ia_andb_AL_Ib },
+ /* 25 */ { 0, &Ia_andq_RAX_sId },
+ /* 26 */ { 0, &Ia_prefix_es }, // ES:
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_subb_Eb_Gb },
+ /* 29 */ { 0, &Ia_subq_Eq_Gq },
+ /* 2A */ { 0, &Ia_subb_Gb_Eb },
+ /* 2B */ { 0, &Ia_subq_Gq_Eq },
+ /* 2C */ { 0, &Ia_subb_AL_Ib },
+ /* 2D */ { 0, &Ia_subq_RAX_sId },
+ /* 2E */ { 0, &Ia_prefix_cs }, // CS:
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_xorb_Eb_Gb },
+ /* 31 */ { 0, &Ia_xorq_Eq_Gq },
+ /* 32 */ { 0, &Ia_xorb_Gb_Eb },
+ /* 33 */ { 0, &Ia_xorq_Gq_Eq },
+ /* 34 */ { 0, &Ia_xorb_AL_Ib },
+ /* 35 */ { 0, &Ia_xorq_RAX_sId },
+ /* 36 */ { 0, &Ia_prefix_ss }, // SS:
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
+ /* 39 */ { 0, &Ia_cmpq_Eq_Gq },
+ /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
+ /* 3B */ { 0, &Ia_cmpq_Gq_Eq },
+ /* 3C */ { 0, &Ia_cmpb_AL_Ib },
+ /* 3D */ { 0, &Ia_cmpq_RAX_sId },
+ /* 3E */ { 0, &Ia_prefix_ds }, // DS:
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 41 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 42 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 43 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 44 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 45 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 46 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 47 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 48 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 49 */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4A */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4B */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4C */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4D */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4E */ { 0, &Ia_prefix_rex }, // REX:
+ /* 4F */ { 0, &Ia_prefix_rex }, // REX:
+ /* 50 */ { 0, &Ia_pushq_RRX },
+ /* 51 */ { 0, &Ia_pushq_RRX },
+ /* 52 */ { 0, &Ia_pushq_RRX },
+ /* 53 */ { 0, &Ia_pushq_RRX },
+ /* 54 */ { 0, &Ia_pushq_RRX },
+ /* 55 */ { 0, &Ia_pushq_RRX },
+ /* 56 */ { 0, &Ia_pushq_RRX },
+ /* 57 */ { 0, &Ia_pushq_RRX },
+ /* 58 */ { 0, &Ia_popq_RRX },
+ /* 59 */ { 0, &Ia_popq_RRX },
+ /* 5A */ { 0, &Ia_popq_RRX },
+ /* 5B */ { 0, &Ia_popq_RRX },
+ /* 5C */ { 0, &Ia_popq_RRX },
+ /* 5D */ { 0, &Ia_popq_RRX },
+ /* 5E */ { 0, &Ia_popq_RRX },
+ /* 5F */ { 0, &Ia_popq_RRX },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_movslq_Gq_Ed },
+ /* 64 */ { 0, &Ia_prefix_fs }, // FS:
+ /* 65 */ { 0, &Ia_prefix_gs }, // GS:
+ /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
+ /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
+ /* 68 */ { 0, &Ia_pushq_sId },
+ /* 69 */ { 0, &Ia_imulq_Gq_Eq_sId },
+ /* 6A */ { 0, &Ia_pushq_sIb },
+ /* 6B */ { 0, &Ia_imulq_Gq_Eq_sIb },
+ /* 6C */ { 0, &Ia_insb_Yb_DX },
+ /* 6D */ { 0, &Ia_insl_Yd_DX },
+ /* 6E */ { 0, &Ia_outsb_DX_Xb },
+ /* 6F */ { 0, &Ia_outsl_DX_Xd },
+ /* 70 */ { 0, &Ia_jo_Jb },
+ /* 71 */ { 0, &Ia_jno_Jb },
+ /* 72 */ { 0, &Ia_jb_Jb },
+ /* 73 */ { 0, &Ia_jnb_Jb },
+ /* 74 */ { 0, &Ia_jz_Jb },
+ /* 75 */ { 0, &Ia_jnz_Jb },
+ /* 76 */ { 0, &Ia_jbe_Jb },
+ /* 77 */ { 0, &Ia_jnbe_Jb },
+ /* 78 */ { 0, &Ia_js_Jb },
+ /* 79 */ { 0, &Ia_jns_Jb },
+ /* 7A */ { 0, &Ia_jp_Jb },
+ /* 7B */ { 0, &Ia_jnp_Jb },
+ /* 7C */ { 0, &Ia_jl_Jb },
+ /* 7D */ { 0, &Ia_jnl_Jb },
+ /* 7E */ { 0, &Ia_jle_Jb },
+ /* 7F */ { 0, &Ia_jnle_Jb },
+ /* 80 */ { GRPN(G1EbIb) },
+ /* 81 */ { GRPN(G1EqId) },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { GRPN(G1EqIb) },
+ /* 84 */ { 0, &Ia_testb_Eb_Gb },
+ /* 85 */ { 0, &Ia_testq_Eq_Gq },
+ /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
+ /* 87 */ { 0, &Ia_xchgq_Eq_Gq },
+ /* 88 */ { 0, &Ia_movb_Eb_Gb },
+ /* 89 */ { 0, &Ia_movq_Eq_Gq },
+ /* 8A */ { 0, &Ia_movb_Gb_Eb },
+ /* 8B */ { 0, &Ia_movq_Gq_Eq },
+ /* 8C */ { 0, &Ia_movw_Ew_Sw },
+ /* 8D */ { 0, &Ia_leaq_Gq_Mq },
+ /* 8E */ { 0, &Ia_movw_Sw_Ew },
+ /* 8F */ { 0, &Ia_popq_Eq },
+ /* 90 */ { 0, &Ia_xchgq_RRX_RAX }, // handle XCHG R8, RAX
+ /* 91 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 92 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 93 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 94 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 95 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 96 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 97 */ { 0, &Ia_xchgq_RRX_RAX },
+ /* 98 */ { 0, &Ia_cdqe },
+ /* 99 */ { 0, &Ia_cqo },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_fwait },
+ /* 9C */ { 0, &Ia_pushfq },
+ /* 9D */ { 0, &Ia_popfq },
+ /* 9E */ { 0, &Ia_sahf },
+ /* 9F */ { 0, &Ia_lahf },
+ /* A0 */ { 0, &Ia_movb_AL_Ob },
+ /* A1 */ { 0, &Ia_movq_RAX_Oq },
+ /* A0 */ { 0, &Ia_movb_Ob_AL },
+ /* A1 */ { 0, &Ia_movq_Oq_RAX },
+ /* A4 */ { 0, &Ia_movsb_Yb_Xb },
+ /* A5 */ { 0, &Ia_movsq_Yq_Xq },
+ /* A6 */ { 0, &Ia_cmpsb_Xb_Yb },
+ /* A7 */ { 0, &Ia_cmpsq_Xq_Yq },
+ /* A8 */ { 0, &Ia_testb_AL_Ib },
+ /* A9 */ { 0, &Ia_testq_RAX_sId },
+ /* AA */ { 0, &Ia_stosb_Yb_AL },
+ /* AB */ { 0, &Ia_stosq_Yq_RAX },
+ /* AC */ { 0, &Ia_lodsb_AL_Xb },
+ /* AD */ { 0, &Ia_lodsq_RAX_Xq },
+ /* AE */ { 0, &Ia_scasb_AL_Yb },
+ /* AF */ { 0, &Ia_scasq_RAX_Yq },
+ /* B0 */ { 0, &Ia_movb_R8_Ib },
+ /* B1 */ { 0, &Ia_movb_R8_Ib },
+ /* B2 */ { 0, &Ia_movb_R8_Ib },
+ /* B3 */ { 0, &Ia_movb_R8_Ib },
+ /* B4 */ { 0, &Ia_movb_R8_Ib },
+ /* B5 */ { 0, &Ia_movb_R8_Ib },
+ /* B6 */ { 0, &Ia_movb_R8_Ib },
+ /* B7 */ { 0, &Ia_movb_R8_Ib },
+ /* B8 */ { 0, &Ia_movq_RRX_Iq },
+ /* B9 */ { 0, &Ia_movq_RRX_Iq },
+ /* BA */ { 0, &Ia_movq_RRX_Iq },
+ /* BB */ { 0, &Ia_movq_RRX_Iq },
+ /* BC */ { 0, &Ia_movq_RRX_Iq },
+ /* BD */ { 0, &Ia_movq_RRX_Iq },
+ /* BE */ { 0, &Ia_movq_RRX_Iq },
+ /* BF */ { 0, &Ia_movq_RRX_Iq },
+ /* C0 */ { GRPN(G2Eb) },
+ /* C1 */ { GRPN(G2Eq) },
+ /* C2 */ { 0, &Ia_ret_Iw },
+ /* C3 */ { 0, &Ia_ret },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { GRPN(G11Eb) },
+ /* C7 */ { GRPN(G11Eq) },
+ /* C8 */ { 0, &Ia_enter },
+ /* C9 */ { 0, &Ia_leave },
+ /* CA */ { 0, &Ia_lret_Iw },
+ /* CB */ { 0, &Ia_lret },
+ /* CC */ { 0, &Ia_int3 },
+ /* CD */ { 0, &Ia_int_Ib },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_iretq },
+ /* D0 */ { GRPN(G2EbI1) },
+ /* D1 */ { GRPN(G2EqI1) },
+ /* D2 */ { GRPN(G2EbCL) },
+ /* D3 */ { GRPN(G2EqCL) },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_xlat },
+ /* D8 */ { GRPFP(D8) },
+ /* D9 */ { GRPFP(D9) },
+ /* DA */ { GRPFP(DA) },
+ /* DB */ { GRPFP(DB) },
+ /* DC */ { GRPFP(DC) },
+ /* DD */ { GRPFP(DD) },
+ /* DE */ { GRPFP(DE) },
+ /* DF */ { GRPFP(DF) },
+ /* E0 */ { 0, &Ia_loopne_Jb },
+ /* E1 */ { 0, &Ia_loope_Jb },
+ /* E2 */ { 0, &Ia_loop_Jb },
+ /* E3 */ { 0, &Ia_jrcxz_Jb },
+ /* E4 */ { 0, &Ia_inb_AL_Ib },
+ /* E5 */ { 0, &Ia_inl_EAX_Ib },
+ /* E6 */ { 0, &Ia_outb_Ib_AL },
+ /* E7 */ { 0, &Ia_outl_Ib_EAX },
+ /* E8 */ { 0, &Ia_call_Jd },
+ /* E9 */ { 0, &Ia_jmp_Jd },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_jmp_Jb },
+ /* EC */ { 0, &Ia_inb_AL_DX },
+ /* ED */ { 0, &Ia_inl_EAX_DX },
+ /* EE */ { 0, &Ia_outb_DX_AL },
+ /* EF */ { 0, &Ia_outl_DX_EAX },
+ /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
+ /* F1 */ { 0, &Ia_int1 },
+ /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
+ /* F3 */ { 0, &Ia_prefix_rep }, // REP:
+ /* F4 */ { 0, &Ia_hlt },
+ /* F5 */ { 0, &Ia_cmc },
+ /* F6 */ { GRPN(G3Eb) },
+ /* F7 */ { GRPN(G3Eq) },
+ /* F8 */ { 0, &Ia_clc },
+ /* F9 */ { 0, &Ia_stc },
+ /* FA */ { 0, &Ia_cli },
+ /* FB */ { 0, &Ia_sti },
+ /* FC */ { 0, &Ia_cld },
+ /* FD */ { 0, &Ia_std },
+ /* FE */ { GRPN(G4) },
+ /* FF */ { GRPN(64G5q) },
+
+ // 256 entries for two byte opcodes
+ /* 0F 00 */ { GRPN(G6) },
+ /* 0F 01 */ { GRPMOD(G7) },
+ /* 0F 02 */ { 0, &Ia_larq_Gq_Ew },
+ /* 0F 03 */ { 0, &Ia_lslq_Gq_Ew },
+ /* 0F 04 */ { 0, &Ia_Invalid },
+ /* 0F 05 */ { 0, &Ia_syscall },
+ /* 0F 06 */ { 0, &Ia_clts },
+ /* 0F 07 */ { 0, &Ia_sysret },
+ /* 0F 08 */ { 0, &Ia_invd },
+ /* 0F 09 */ { 0, &Ia_wbinvd },
+ /* 0F 0A */ { 0, &Ia_Invalid },
+ /* 0F 0B */ { 0, &Ia_ud2a },
+ /* 0F 0C */ { 0, &Ia_Invalid },
+ /* 0F 0D */ { 0, &Ia_prefetchw }, // 3DNow!
+ /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
+ /* 0F 0F */ { GRP3DNOW },
+ /* 0F 10 */ { GRPSSE(0f10) },
+ /* 0F 11 */ { GRPSSE(0f11) },
+ /* 0F 12 */ { GRPSSE(0f12) },
+ /* 0F 13 */ { GRPSSE2(0f13) },
+ /* 0F 14 */ { GRPSSE2(0f14) },
+ /* 0F 15 */ { GRPSSE2(0f15) },
+ /* 0F 16 */ { GRPSSE(0f16) },
+ /* 0F 17 */ { GRPSSE2(0f17) },
+ /* 0F 18 */ { GRPN(G16) },
+ /* 0F 19 */ { 0, &Ia_multibyte_nop },
+ /* 0F 1A */ { 0, &Ia_multibyte_nop },
+ /* 0F 1B */ { 0, &Ia_multibyte_nop },
+ /* 0F 1C */ { 0, &Ia_multibyte_nop },
+ /* 0F 1D */ { 0, &Ia_multibyte_nop },
+ /* 0F 1E */ { 0, &Ia_multibyte_nop },
+ /* 0F 1F */ { 0, &Ia_multibyte_nop },
+ /* 0F 20 */ { 0, &Ia_movq_Rq_Cq },
+ /* 0F 21 */ { 0, &Ia_movq_Rq_Dq },
+ /* 0F 22 */ { 0, &Ia_movq_Cq_Rq },
+ /* 0F 23 */ { 0, &Ia_movq_Dq_Rq },
+ /* 0F 24 */ { 0, &Ia_Invalid },
+ /* 0F 25 */ { 0, &Ia_Invalid },
+ /* 0F 26 */ { 0, &Ia_Invalid },
+ /* 0F 27 */ { 0, &Ia_Invalid },
+ /* 0F 28 */ { GRPSSE2(0f28) },
+ /* 0F 29 */ { GRPSSE2(0f29) },
+ /* 0F 2A */ { GRPSSE(0f2a) },
+ /* 0F 2B */ { GRPSSE(0f2b) },
+ /* 0F 2C */ { GRPSSE(0f2c) },
+ /* 0F 2D */ { GRPSSE(0f2d) },
+ /* 0F 2E */ { GRPSSE2(0f2e) },
+ /* 0F 2F */ { GRPSSE2(0f2f) },
+ /* 0F 30 */ { 0, &Ia_wrmsr },
+ /* 0F 31 */ { 0, &Ia_rdtsc },
+ /* 0F 32 */ { 0, &Ia_rdmsr },
+ /* 0F 33 */ { 0, &Ia_rdpmc },
+ /* 0F 34 */ { 0, &Ia_sysenter },
+ /* 0F 35 */ { 0, &Ia_sysexit },
+ /* 0F 36 */ { 0, &Ia_Invalid },
+ /* 0F 37 */ { 0, &Ia_getsec },
+ /* 0F 38 */ { GR3BTAB(0f38) },
+ /* 0F 39 */ { 0, &Ia_Invalid },
+ /* 0F 3A */ { GR3BTAB(0f3a) },
+ /* 0F 3B */ { 0, &Ia_Invalid },
+ /* 0F 3C */ { 0, &Ia_Invalid },
+ /* 0F 3D */ { 0, &Ia_Invalid },
+ /* 0F 3E */ { 0, &Ia_Invalid },
+ /* 0F 3F */ { 0, &Ia_Invalid },
+ /* 0F 40 */ { 0, &Ia_cmovoq_Gq_Eq },
+ /* 0F 41 */ { 0, &Ia_cmovnoq_Gq_Eq },
+ /* 0F 42 */ { 0, &Ia_cmovbq_Gq_Eq },
+ /* 0F 43 */ { 0, &Ia_cmovnbq_Gq_Eq },
+ /* 0F 44 */ { 0, &Ia_cmovzq_Gq_Eq },
+ /* 0F 45 */ { 0, &Ia_cmovnzq_Gq_Eq },
+ /* 0F 46 */ { 0, &Ia_cmovbeq_Gq_Eq },
+ /* 0F 47 */ { 0, &Ia_cmovnbeq_Gq_Eq },
+ /* 0F 48 */ { 0, &Ia_cmovsq_Gq_Eq },
+ /* 0F 49 */ { 0, &Ia_cmovnsq_Gq_Eq },
+ /* 0F 4A */ { 0, &Ia_cmovpq_Gq_Eq },
+ /* 0F 4B */ { 0, &Ia_cmovnpq_Gq_Eq },
+ /* 0F 4C */ { 0, &Ia_cmovlq_Gq_Eq },
+ /* 0F 4D */ { 0, &Ia_cmovnlq_Gq_Eq },
+ /* 0F 4E */ { 0, &Ia_cmovleq_Gq_Eq },
+ /* 0F 4F */ { 0, &Ia_cmovnleq_Gq_Eq },
+ /* 0F 50 */ { GRPSSE2(0f50) },
+ /* 0F 51 */ { GRPSSE(0f51) },
+ /* 0F 52 */ { GRPSSE(0f52) },
+ /* 0F 53 */ { GRPSSE(0f53) },
+ /* 0F 54 */ { GRPSSE2(0f54) },
+ /* 0F 55 */ { GRPSSE2(0f55) },
+ /* 0F 56 */ { GRPSSE2(0f56) },
+ /* 0F 57 */ { GRPSSE2(0f57) },
+ /* 0F 58 */ { GRPSSE(0f58) },
+ /* 0F 59 */ { GRPSSE(0f59) },
+ /* 0F 5A */ { GRPSSE(0f5a) },
+ /* 0F 5B */ { GRPSSE(0f5b) },
+ /* 0F 5C */ { GRPSSE(0f5c) },
+ /* 0F 5D */ { GRPSSE(0f5d) },
+ /* 0F 5E */ { GRPSSE(0f5e) },
+ /* 0F 5F */ { GRPSSE(0f5f) },
+ /* 0F 60 */ { GRPSSE2(0f60) },
+ /* 0F 61 */ { GRPSSE2(0f61) },
+ /* 0F 62 */ { GRPSSE2(0f62) },
+ /* 0F 63 */ { GRPSSE2(0f63) },
+ /* 0F 64 */ { GRPSSE2(0f64) },
+ /* 0F 65 */ { GRPSSE2(0f65) },
+ /* 0F 66 */ { GRPSSE2(0f66) },
+ /* 0F 67 */ { GRPSSE2(0f67) },
+ /* 0F 68 */ { GRPSSE2(0f68) },
+ /* 0F 69 */ { GRPSSE2(0f69) },
+ /* 0F 6A */ { GRPSSE2(0f6a) },
+ /* 0F 6B */ { GRPSSE2(0f6b) },
+ /* 0F 6C */ { GRPSSE66(Ia_punpcklqdq_Vdq_Wdq) },
+ /* 0F 6D */ { GRPSSE66(Ia_punpckhqdq_Vdq_Wdq) },
+ /* 0F 6E */ { GRPSSE2(0f6eQ) },
+ /* 0F 6F */ { GRPSSE(0f6f) },
+ /* 0F 70 */ { GRPSSE(0f70) },
+ /* 0F 71 */ { GRPN(G12) },
+ /* 0F 72 */ { GRPN(G13) },
+ /* 0F 73 */ { GRPN(G14) },
+ /* 0F 74 */ { GRPSSE2(0f74) },
+ /* 0F 75 */ { GRPSSE2(0f75) },
+ /* 0F 76 */ { GRPSSE2(0f76) },
+ /* 0F 77 */ { 0, &Ia_emms },
+ /* 0F 78 */ { GRPSSE(0f78Q) }, // VMX
+ /* 0F 79 */ { GRPSSE(0f79Q) }, // VMX
+ /* 0F 7A */ { 0, &Ia_Invalid },
+ /* 0F 7B */ { 0, &Ia_Invalid },
+ /* 0F 7C */ { GRPSSE(0f7c) },
+ /* 0F 7D */ { GRPSSE(0f7d) },
+ /* 0F 7E */ { GRPSSE(0f7eQ) },
+ /* 0F 7F */ { GRPSSE(0f7f) },
+ /* 0F 80 */ { 0, &Ia_jo_Jd },
+ /* 0F 81 */ { 0, &Ia_jno_Jd },
+ /* 0F 82 */ { 0, &Ia_jb_Jd },
+ /* 0F 83 */ { 0, &Ia_jnb_Jd },
+ /* 0F 84 */ { 0, &Ia_jz_Jd },
+ /* 0F 85 */ { 0, &Ia_jnz_Jd },
+ /* 0F 86 */ { 0, &Ia_jbe_Jd },
+ /* 0F 87 */ { 0, &Ia_jnbe_Jd },
+ /* 0F 88 */ { 0, &Ia_js_Jd },
+ /* 0F 89 */ { 0, &Ia_jns_Jd },
+ /* 0F 8A */ { 0, &Ia_jp_Jd },
+ /* 0F 8B */ { 0, &Ia_jnp_Jd },
+ /* 0F 8C */ { 0, &Ia_jl_Jd },
+ /* 0F 8D */ { 0, &Ia_jnl_Jd },
+ /* 0F 8E */ { 0, &Ia_jle_Jd },
+ /* 0F 8F */ { 0, &Ia_jnle_Jd },
+ /* 0F 90 */ { 0, &Ia_seto_Eb },
+ /* 0F 91 */ { 0, &Ia_setno_Eb },
+ /* 0F 92 */ { 0, &Ia_setb_Eb },
+ /* 0F 93 */ { 0, &Ia_setnb_Eb },
+ /* 0F 94 */ { 0, &Ia_setz_Eb },
+ /* 0F 95 */ { 0, &Ia_setnz_Eb },
+ /* 0F 96 */ { 0, &Ia_setbe_Eb },
+ /* 0F 97 */ { 0, &Ia_setnbe_Eb },
+ /* 0F 98 */ { 0, &Ia_sets_Eb },
+ /* 0F 99 */ { 0, &Ia_setns_Eb },
+ /* 0F 9A */ { 0, &Ia_setp_Eb },
+ /* 0F 9B */ { 0, &Ia_setnp_Eb },
+ /* 0F 9C */ { 0, &Ia_setl_Eb },
+ /* 0F 9D */ { 0, &Ia_setnl_Eb },
+ /* 0F 9E */ { 0, &Ia_setle_Eb },
+ /* 0F 9F */ { 0, &Ia_setnle_Eb },
+ /* 0F A0 */ { 0, &Ia_pushq_FS },
+ /* 0F A1 */ { 0, &Ia_popq_FS },
+ /* 0F A2 */ { 0, &Ia_cpuid },
+ /* 0F A3 */ { 0, &Ia_btq_Eq_Gq },
+ /* 0F A4 */ { 0, &Ia_shldq_Eq_Gq_Ib },
+ /* 0F A5 */ { 0, &Ia_shldq_Eq_Gq_CL },
+ /* 0F A6 */ { 0, &Ia_Invalid },
+ /* 0F A7 */ { 0, &Ia_Invalid },
+ /* 0F A8 */ { 0, &Ia_pushq_GS },
+ /* 0F A9 */ { 0, &Ia_popq_GS },
+ /* 0F AA */ { 0, &Ia_rsm },
+ /* 0F AB */ { 0, &Ia_btsq_Eq_Gq },
+ /* 0F AC */ { 0, &Ia_shrdq_Eq_Gq_Ib },
+ /* 0F AD */ { 0, &Ia_shrdq_Eq_Gq_CL },
+ /* 0F AE */ { GRPMOD(G15) },
+ /* 0F AF */ { 0, &Ia_imulq_Gq_Eq },
+ /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
+ /* 0F B1 */ { 0, &Ia_cmpxchgq_Eq_Gq },
+ /* 0F B2 */ { 0, &Ia_lssq_Gq_Mp },
+ /* 0F B3 */ { 0, &Ia_btrq_Eq_Gq },
+ /* 0F B4 */ { 0, &Ia_lfsq_Gq_Mp },
+ /* 0F B5 */ { 0, &Ia_lgsq_Gq_Mp },
+ /* 0F B6 */ { 0, &Ia_movzbq_Gq_Eb },
+ /* 0F B7 */ { 0, &Ia_movzwq_Gq_Ew },
+ /* 0F B8 */ { GRPSSEF3(Ia_popcnt_Gq_Eq) },
+ /* 0F B9 */ { 0, &Ia_ud2b },
+ /* 0F BA */ { GRPN(G8EqIb) },
+ /* 0F BB */ { 0, &Ia_btcq_Eq_Gq },
+ /* 0F BC */ { GRPSSE(0fbcq) },
+ /* 0F BD */ { GRPSSE(0fbdq) },
+ /* 0F BE */ { 0, &Ia_movsbq_Gq_Eb },
+ /* 0F BF */ { 0, &Ia_movswq_Gq_Ew },
+ /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
+ /* 0F C0 */ { 0, &Ia_xaddq_Eq_Gq },
+ /* 0F C2 */ { GRPSSE(0fc2) },
+ /* 0F C3 */ { GRPSSENONE(Ia_movntiq_Mq_Gq) },
+ /* 0F C4 */ { GRPSSE2(0fc4) },
+ /* 0F C5 */ { GRPSSE2(0fc5) },
+ /* 0F C6 */ { GRPSSE2(0fc6) },
+ /* 0F C7 */ { GRPMOD(G9q) },
+ /* 0F C8 */ { 0, &Ia_bswapq_RRX },
+ /* 0F C9 */ { 0, &Ia_bswapq_RRX },
+ /* 0F CA */ { 0, &Ia_bswapq_RRX },
+ /* 0F CB */ { 0, &Ia_bswapq_RRX },
+ /* 0F CC */ { 0, &Ia_bswapq_RRX },
+ /* 0F CD */ { 0, &Ia_bswapq_RRX },
+ /* 0F CE */ { 0, &Ia_bswapq_RRX },
+ /* 0F CF */ { 0, &Ia_bswapq_RRX },
+ /* 0F D0 */ { GRPSSE(0fd0) },
+ /* 0F D1 */ { GRPSSE2(0fd1) },
+ /* 0F D2 */ { GRPSSE2(0fd2) },
+ /* 0F D3 */ { GRPSSE2(0fd3) },
+ /* 0F D4 */ { GRPSSE2(0fd4) },
+ /* 0F D5 */ { GRPSSE2(0fd5) },
+ /* 0F D6 */ { GRPSSE(0fd6) },
+ /* 0F D7 */ { GRPSSE2(0fd7) },
+ /* 0F D8 */ { GRPSSE2(0fd8) },
+ /* 0F D9 */ { GRPSSE2(0fd9) },
+ /* 0F DA */ { GRPSSE2(0fda) },
+ /* 0F DB */ { GRPSSE2(0fdb) },
+ /* 0F DC */ { GRPSSE2(0fdc) },
+ /* 0F DD */ { GRPSSE2(0fdd) },
+ /* 0F DE */ { GRPSSE2(0fde) },
+ /* 0F DF */ { GRPSSE2(0fdf) },
+ /* 0F E0 */ { GRPSSE2(0fe0) },
+ /* 0F E1 */ { GRPSSE2(0fe1) },
+ /* 0F E2 */ { GRPSSE2(0fe2) },
+ /* 0F E3 */ { GRPSSE2(0fe3) },
+ /* 0F E4 */ { GRPSSE2(0fe4) },
+ /* 0F E5 */ { GRPSSE2(0fe5) },
+ /* 0F E6 */ { GRPSSE(0fe6) },
+ /* 0F E7 */ { GRPSSE2(0fe7) },
+ /* 0F E8 */ { GRPSSE2(0fe8) },
+ /* 0F E9 */ { GRPSSE2(0fe9) },
+ /* 0F EA */ { GRPSSE2(0fea) },
+ /* 0F EB */ { GRPSSE2(0feb) },
+ /* 0F EC */ { GRPSSE2(0fec) },
+ /* 0F ED */ { GRPSSE2(0fed) },
+ /* 0F EE */ { GRPSSE2(0fee) },
+ /* 0F EF */ { GRPSSE2(0fef) },
+ /* 0F F0 */ { GRPSSEF2(Ia_lddqu_Vdq_Mdq) },
+ /* 0F F1 */ { GRPSSE2(0ff1) },
+ /* 0F F2 */ { GRPSSE2(0ff2) },
+ /* 0F F3 */ { GRPSSE2(0ff3) },
+ /* 0F F4 */ { GRPSSE2(0ff4) },
+ /* 0F F5 */ { GRPSSE2(0ff5) },
+ /* 0F F6 */ { GRPSSE2(0ff6) },
+ /* 0F F7 */ { GRPSSE2(0ff7) },
+ /* 0F F8 */ { GRPSSE2(0ff8) },
+ /* 0F F9 */ { GRPSSE2(0ff9) },
+ /* 0F FA */ { GRPSSE2(0ffa) },
+ /* 0F FB */ { GRPSSE2(0ffb) },
+ /* 0F FC */ { GRPSSE2(0ffc) },
+ /* 0F FD */ { GRPSSE2(0ffd) },
+ /* 0F FE */ { GRPSSE2(0ffe) },
+ /* 0F FF */ { 0, &Ia_Invalid }
+};
diff --git a/Externals/Bochs_disasm/dis_tables.inl b/Externals/Bochs_disasm/dis_tables.inl
deleted file mode 100644
index 26e9fefe6a..0000000000
--- a/Externals/Bochs_disasm/dis_tables.inl
+++ /dev/null
@@ -1,5081 +0,0 @@
-/* ************************************************************************ */
-/* SSE opcodes */
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f10[4] = {
- /* -- */ { 0, &Ia_movups_Vps_Wps },
- /* 66 */ { 0, &Ia_movupd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_movsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_movss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f11[4] = {
- /* -- */ { 0, &Ia_movups_Wps_Vps },
- /* 66 */ { 0, &Ia_movupd_Wpd_Vpd },
- /* F2 */ { 0, &Ia_movsd_Wsd_Vsd },
- /* F3 */ { 0, &Ia_movss_Wss_Vss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModMOVHLPS[2] = {
- /* R */ { 0, &Ia_movhlps_Vps_Uq },
- /* M */ { 0, &Ia_movlps_Vps_Mq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModMOVHLPD[2] = {
- /* R */ { 0, &Ia_movhlpd_Vpd_Uq },
- /* M */ { 0, &Ia_movlpd_Vpd_Mq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f12[4] = {
- /* -- */ { GRPMOD(MOVHLPS) },
- /* 66 */ { GRPMOD(MOVHLPD) },
- /* F2 */ { 0, &Ia_movddup_Vdq_Wq },
- /* F3 */ { 0, &Ia_movsldup_Vdq_Wdq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f13[4] = {
- /* -- */ { 0, &Ia_movlps_Mq_Vps },
- /* 66 */ { 0, &Ia_movlpd_Mq_Vpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f14[4] = {
- /* -- */ { 0, &Ia_unpcklps_Vps_Wq },
- /* 66 */ { 0, &Ia_unpcklpd_Vpd_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f15[4] = {
- /* -- */ { 0, &Ia_unpckhps_Vps_Wdq },
- /* 66 */ { 0, &Ia_unpckhpd_Vpd_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModMOVLHPS[2] = {
- /* R */ { 0, &Ia_movlhps_Vps_Uq },
- /* M */ { 0, &Ia_movhps_Vps_Mq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModMOVLHPD[2] = {
- /* R */ { 0, &Ia_movlhpd_Vpd_Uq },
- /* M */ { 0, &Ia_movhpd_Vpd_Mq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f16[4] = {
- /* -- */ { GRPMOD(MOVLHPS) },
- /* 66 */ { GRPMOD(MOVLHPD) },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_movshdup_Vdq_Wdq },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f17[4] = {
- /* -- */ { 0, &Ia_movhps_Mq_Vps },
- /* 66 */ { 0, &Ia_movhpd_Mq_Vpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f28[4] = {
- /* -- */ { 0, &Ia_movaps_Vps_Wps },
- /* 66 */ { 0, &Ia_movapd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f29[4] = {
- /* -- */ { 0, &Ia_movaps_Wps_Vps },
- /* 66 */ { 0, &Ia_movapd_Wpd_Vpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2a[4] = {
- /* -- */ { 0, &Ia_cvtpi2ps_Vps_Qq },
- /* 66 */ { 0, &Ia_cvtpi2pd_Vpd_Qq },
- /* F2 */ { 0, &Ia_cvtsi2sd_Vsd_Ed },
- /* F3 */ { 0, &Ia_cvtsi2ss_Vss_Ed }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_640f2a[4] = {
- /* -- */ { 0, &Ia_cvtpi2ps_Vps_Qq },
- /* 66 */ { 0, &Ia_cvtpi2pd_Vpd_Qq },
- /* F2 */ { 0, &Ia_cvtsi2sd_Vsd_Eq },
- /* F3 */ { 0, &Ia_cvtsi2ss_Vss_Eq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2b[4] = {
- /* -- */ { 0, &Ia_movntps_Mps_Vps },
- /* 66 */ { 0, &Ia_movntpd_Mpd_Vpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2c[4] = {
- /* -- */ { 0, &Ia_cvttps2pi_Pq_Wps },
- /* 66 */ { 0, &Ia_cvttpd2pi_Pq_Wpd },
- /* F2 */ { 0, &Ia_cvttsd2si_Gd_Wsd },
- /* F3 */ { 0, &Ia_cvttss2si_Gd_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2cQ[4] = {
- /* -- */ { 0, &Ia_cvttps2pi_Pq_Wps },
- /* 66 */ { 0, &Ia_cvttpd2pi_Pq_Wpd },
- /* F2 */ { 0, &Ia_cvttsd2si_Gq_Wsd },
- /* F3 */ { 0, &Ia_cvttss2si_Gq_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2d[4] = {
- /* -- */ { 0, &Ia_cvtps2pi_Pq_Wps },
- /* 66 */ { 0, &Ia_cvtpd2pi_Pq_Wpd },
- /* F2 */ { 0, &Ia_cvtsd2si_Gd_Wsd },
- /* F3 */ { 0, &Ia_cvtss2si_Gd_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2dQ[4] = {
- /* -- */ { 0, &Ia_cvtps2pi_Pq_Wps },
- /* 66 */ { 0, &Ia_cvtpd2pi_Pq_Wpd },
- /* F2 */ { 0, &Ia_cvtsd2si_Gq_Wsd },
- /* F3 */ { 0, &Ia_cvtss2si_Gq_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2e[4] = {
- /* -- */ { 0, &Ia_ucomiss_Vss_Wss },
- /* 66 */ { 0, &Ia_ucomisd_Vsd_Wss },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2f[4] = {
- /* -- */ { 0, &Ia_comiss_Vss_Wss },
- /* 66 */ { 0, &Ia_comisd_Vsd_Wsd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3800[4] = {
- /* -- */ { 0, &Ia_pshufb_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_pshufb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3801[4] = {
- /* -- */ { 0, &Ia_phaddw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_phaddw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3802[4] = {
- /* -- */ { 0, &Ia_phaddd_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_phaddd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3803[4] = {
- /* -- */ { 0, &Ia_phaddsw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_phaddsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3804[4] = {
- /* -- */ { 0, &Ia_pmaddubsw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_pmaddubsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3805[4] = {
- /* -- */ { 0, &Ia_phsubw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_phsubw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3806[4] = {
- /* -- */ { 0, &Ia_phsubd_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_phsubd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3807[4] = {
- /* -- */ { 0, &Ia_phsubsw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_phsubsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3808[4] = {
- /* -- */ { 0, &Ia_psignb_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_psignb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3809[4] = {
- /* -- */ { 0, &Ia_psignw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_psignw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380a[4] = {
- /* -- */ { 0, &Ia_psignd_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_psignd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380b[4] = {
- /* -- */ { 0, &Ia_pmulhrsw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_pmulhrsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381c[4] = {
- /* -- */ { 0, &Ia_pabsb_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_pabsb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381d[4] = {
- /* -- */ { 0, &Ia_pabsw_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_pabsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381e[4] = {
- /* -- */ { 0, &Ia_pabsd_Pq_Qq }, // SSE4
- /* 66 */ { 0, &Ia_pabsd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0f[4] = {
- /* -- */ { 0, &Ia_palignr_Pq_Qq_Ib }, // SSE4
- /* 66 */ { 0, &Ia_palignr_Vdq_Wdq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f50[4] = {
- /* -- */ { 0, &Ia_movmskps_Gd_Vps },
- /* 66 */ { 0, &Ia_movmskpd_Gd_Vpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f51[4] = {
- /* -- */ { 0, &Ia_sqrtps_Vps_Wps },
- /* 66 */ { 0, &Ia_sqrtpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_sqrtsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_sqrtss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f52[4] = {
- /* -- */ { 0, &Ia_rsqrtps_Vps_Wps },
- /* 66 */ { 0, &Ia_Invalid },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_rsqrtss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f53[4] = {
- /* -- */ { 0, &Ia_rcpps_Vps_Wps },
- /* 66 */ { 0, &Ia_Invalid },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_rcpss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f54[4] = {
- /* -- */ { 0, &Ia_andps_Vps_Wps },
- /* 66 */ { 0, &Ia_andpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f55[4] = {
- /* -- */ { 0, &Ia_andnps_Vps_Wps },
- /* 66 */ { 0, &Ia_andnpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f56[4] = {
- /* -- */ { 0, &Ia_orps_Vps_Wps },
- /* 66 */ { 0, &Ia_orpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f57[4] = {
- /* -- */ { 0, &Ia_xorps_Vps_Wps },
- /* 66 */ { 0, &Ia_xorpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f58[4] = {
- /* -- */ { 0, &Ia_addps_Vps_Wps },
- /* 66 */ { 0, &Ia_addpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_addsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_addss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f59[4] = {
- /* -- */ { 0, &Ia_mulps_Vps_Wps },
- /* 66 */ { 0, &Ia_mulpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_mulsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_mulss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5a[4] = {
- /* -- */ { 0, &Ia_cvtps2pd_Vpd_Wps },
- /* 66 */ { 0, &Ia_cvtpd2ps_Vps_Wpd },
- /* F2 */ { 0, &Ia_cvtsd2ss_Vss_Wsd },
- /* F3 */ { 0, &Ia_cvtss2sd_Vsd_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5b[4] = {
- /* -- */ { 0, &Ia_cvtdq2ps_Vps_Wdq },
- /* 66 */ { 0, &Ia_cvtps2dq_Vdq_Wps },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_cvttps2dq_Vdq_Wps }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5c[4] = {
- /* -- */ { 0, &Ia_subps_Vps_Wps },
- /* 66 */ { 0, &Ia_subpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_subsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_subss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5d[4] = {
- /* -- */ { 0, &Ia_minps_Vps_Wps },
- /* 66 */ { 0, &Ia_minpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_minsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_minss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5e[4] = {
- /* -- */ { 0, &Ia_divps_Vps_Wps },
- /* 66 */ { 0, &Ia_divpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_divsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_divss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5f[4] = {
- /* -- */ { 0, &Ia_maxps_Vps_Wps },
- /* 66 */ { 0, &Ia_maxpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_maxsd_Vsd_Wsd },
- /* F3 */ { 0, &Ia_maxss_Vss_Wss }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f60[4] = {
- /* -- */ { 0, &Ia_punpcklbw_Pq_Qd },
- /* 66 */ { 0, &Ia_punpcklbw_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f61[4] = {
- /* -- */ { 0, &Ia_punpcklwd_Pq_Qd },
- /* 66 */ { 0, &Ia_punpcklwd_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f62[4] = {
- /* -- */ { 0, &Ia_punpckldq_Pq_Qd },
- /* 66 */ { 0, &Ia_punpckldq_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f63[4] = {
- /* -- */ { 0, &Ia_packsswb_Pq_Qq },
- /* 66 */ { 0, &Ia_packsswb_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f64[4] = {
- /* -- */ { 0, &Ia_pcmpgtb_Pq_Qq },
- /* 66 */ { 0, &Ia_pcmpgtb_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f65[4] = {
- /* -- */ { 0, &Ia_pcmpgtw_Pq_Qq },
- /* 66 */ { 0, &Ia_pcmpgtw_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f66[4] = {
- /* -- */ { 0, &Ia_pcmpgtd_Pq_Qq },
- /* 66 */ { 0, &Ia_pcmpgtd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f67[4] = {
- /* -- */ { 0, &Ia_packuswb_Pq_Qq },
- /* 66 */ { 0, &Ia_packuswb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f68[4] = {
- /* -- */ { 0, &Ia_punpckhbw_Pq_Qq },
- /* 66 */ { 0, &Ia_punpckhbw_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f69[4] = {
- /* -- */ { 0, &Ia_punpckhwd_Pq_Qq },
- /* 66 */ { 0, &Ia_punpckhwd_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6a[4] = {
- /* -- */ { 0, &Ia_punpckhdq_Pq_Qq },
- /* 66 */ { 0, &Ia_punpckhdq_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6b[4] = {
- /* -- */ { 0, &Ia_packssdw_Pq_Qq },
- /* 66 */ { 0, &Ia_packssdw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6c[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_punpcklqdq_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6d[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_punpckhqdq_Vdq_Wq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6e[4] = {
- /* -- */ { 0, &Ia_movd_Pq_Ed },
- /* 66 */ { 0, &Ia_movd_Vdq_Ed },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6eQ[4] = {
- /* -- */ { 0, &Ia_movq_Pq_Eq },
- /* 66 */ { 0, &Ia_movq_Vdq_Eq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6f[4] = {
- /* -- */ { 0, &Ia_movq_Pq_Qq },
- /* 66 */ { 0, &Ia_movdqa_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_movdqu_Vdq_Wdq },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f70[4] = {
- /* -- */ { 0, &Ia_pshufw_Pq_Qq_Ib },
- /* 66 */ { 0, &Ia_pshufd_Vdq_Wdq_Ib },
- /* F2 */ { 0, &Ia_pshufhw_Vq_Wq_Ib },
- /* F3 */ { 0, &Ia_pshuflw_Vq_Wq_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f74[4] = {
- /* -- */ { 0, &Ia_pcmpeqb_Pq_Qq },
- /* 66 */ { 0, &Ia_pcmpeqb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f75[4] = {
- /* -- */ { 0, &Ia_pcmpeqw_Pq_Qq },
- /* 66 */ { 0, &Ia_pcmpeqw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f76[4] = {
- /* -- */ { 0, &Ia_pcmpeqd_Pq_Qq },
- /* 66 */ { 0, &Ia_pcmpeqd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7c[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_haddpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_haddps_Vps_Wps },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7d[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_hsubpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_hsubps_Vps_Wps },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7e[4] = {
- /* -- */ { 0, &Ia_movd_Ed_Pq },
- /* 66 */ { 0, &Ia_movd_Ed_Vd },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_movq_Vq_Wq },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7eQ[4] = {
- /* -- */ { 0, &Ia_movq_Eq_Pq },
- /* 66 */ { 0, &Ia_movq_Eq_Vq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_movq_Vq_Wq },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7f[4] = {
- /* -- */ { 0, &Ia_movq_Qq_Pq },
- /* 66 */ { 0, &Ia_movdqa_Wdq_Vdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_movdqu_Wdq_Vdq },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc2[4] = {
- /* -- */ { 0, &Ia_cmpps_Vps_Wps_Ib },
- /* 66 */ { 0, &Ia_cmppd_Vpd_Wpd_Ib },
- /* F2 */ { 0, &Ia_cmpsd_Vsd_Wsd_Ib },
- /* F3 */ { 0, &Ia_cmpss_Vss_Wss_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc3[4] = {
- /* -- */ { 0, &Ia_movnti_Md_Gd },
- /* 66 */ { 0, &Ia_Invalid },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_640fc3[4] = {
- /* -- */ { 0, &Ia_movntiq_Mq_Gq },
- /* 66 */ { 0, &Ia_Invalid },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc4[4] = {
- /* -- */ { 0, &Ia_pinsrw_Pq_Ed_Ib },
- /* 66 */ { 0, &Ia_pinsrw_Vdq_Ed_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc5[4] = {
- /* -- */ { 0, &Ia_pextrw_Gd_Nq_Ib },
- /* 66 */ { 0, &Ia_pextrw_Gd_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc6[4] = {
- /* -- */ { 0, &Ia_shufps_Vps_Wps_Ib },
- /* 66 */ { 0, &Ia_shufpd_Vpd_Wpd_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd0[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_addsubpd_Vpd_Wpd },
- /* F2 */ { 0, &Ia_addsubps_Vps_Wps },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd1[4] = {
- /* -- */ { 0, &Ia_psrlw_Pq_Qq },
- /* 66 */ { 0, &Ia_psrlw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd2[4] = {
- /* -- */ { 0, &Ia_psrld_Pq_Qq },
- /* 66 */ { 0, &Ia_psrld_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd3[4] = {
- /* -- */ { 0, &Ia_psrlq_Pq_Qq },
- /* 66 */ { 0, &Ia_psrlq_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd4[4] = {
- /* -- */ { 0, &Ia_paddq_Pq_Qq },
- /* 66 */ { 0, &Ia_paddq_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd5[4] = {
- /* -- */ { 0, &Ia_pmullw_Pq_Qq },
- /* 66 */ { 0, &Ia_pmullw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd6[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_movq_Wq_Vq },
- /* F2 */ { 0, &Ia_movdq2q_Pq_Vq },
- /* F3 */ { 0, &Ia_movq2dq_Vdq_Qq },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd7[4] = {
- /* -- */ { 0, &Ia_pmovmskb_Gd_Nq },
- /* 66 */ { 0, &Ia_pmovmskb_Gd_Udq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd8[4] = {
- /* -- */ { 0, &Ia_psubusb_Pq_Qq },
- /* 66 */ { 0, &Ia_psubusb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd9[4] = {
- /* -- */ { 0, &Ia_psubusw_Pq_Qq },
- /* 66 */ { 0, &Ia_psubusw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fda[4] = {
- /* -- */ { 0, &Ia_pminub_Pq_Qq },
- /* 66 */ { 0, &Ia_pminub_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdb[4] = {
- /* -- */ { 0, &Ia_pand_Pq_Qq },
- /* 66 */ { 0, &Ia_pand_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdc[4] = {
- /* -- */ { 0, &Ia_paddusb_Pq_Qq },
- /* 66 */ { 0, &Ia_paddusb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdd[4] = {
- /* -- */ { 0, &Ia_paddusw_Pq_Qq },
- /* 66 */ { 0, &Ia_paddusw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fde[4] = {
- /* -- */ { 0, &Ia_pmaxub_Pq_Qq },
- /* 66 */ { 0, &Ia_pmaxub_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdf[4] = {
- /* -- */ { 0, &Ia_pandn_Pq_Qq },
- /* 66 */ { 0, &Ia_pandn_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe0[4] = {
- /* -- */ { 0, &Ia_pavgb_Pq_Qq },
- /* 66 */ { 0, &Ia_pavgb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe1[4] = {
- /* -- */ { 0, &Ia_psraw_Pq_Qq },
- /* 66 */ { 0, &Ia_psraw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe2[4] = {
- /* -- */ { 0, &Ia_psrad_Pq_Qq },
- /* 66 */ { 0, &Ia_psrad_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe3[4] = {
- /* -- */ { 0, &Ia_pavgw_Pq_Qq },
- /* 66 */ { 0, &Ia_pavgw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe4[4] = {
- /* -- */ { 0, &Ia_pmulhuw_Pq_Qq },
- /* 66 */ { 0, &Ia_pmulhuw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe5[4] = {
- /* -- */ { 0, &Ia_pmulhw_Pq_Qq },
- /* 66 */ { 0, &Ia_pmulhw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe6[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_cvttpd2dq_Vq_Wpd },
- /* F2 */ { 0, &Ia_cvtpd2dq_Vq_Wpd },
- /* F3 */ { 0, &Ia_cvtdq2pd_Vpd_Wq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe7[4] = {
- /* -- */ { 0, &Ia_movntq_Mq_Pq },
- /* 66 */ { 0, &Ia_movntdq_Mdq_Vdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe8[4] = {
- /* -- */ { 0, &Ia_psubsb_Pq_Qq },
- /* 66 */ { 0, &Ia_psubsb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe9[4] = {
- /* -- */ { 0, &Ia_psubsw_Pq_Qq },
- /* 66 */ { 0, &Ia_psubsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fea[4] = {
- /* -- */ { 0, &Ia_pminsw_Pq_Qq },
- /* 66 */ { 0, &Ia_pminsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0feb[4] = {
- /* -- */ { 0, &Ia_por_Pq_Qq },
- /* 66 */ { 0, &Ia_por_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fec[4] = {
- /* -- */ { 0, &Ia_paddsb_Pq_Qq },
- /* 66 */ { 0, &Ia_paddsb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fed[4] = {
- /* -- */ { 0, &Ia_paddsw_Pq_Qq },
- /* 66 */ { 0, &Ia_paddsw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fee[4] = {
- /* -- */ { 0, &Ia_pmaxuw_Pq_Qq },
- /* 66 */ { 0, &Ia_pmaxuw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fef[4] = {
- /* -- */ { 0, &Ia_pxor_Pq_Qq },
- /* 66 */ { 0, &Ia_pxor_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff0[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_lddqu_Vdq_Mdq },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff1[4] = {
- /* -- */ { 0, &Ia_psllw_Pq_Qq },
- /* 66 */ { 0, &Ia_psllw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff2[4] = {
- /* -- */ { 0, &Ia_pslld_Pq_Qq },
- /* 66 */ { 0, &Ia_pslld_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff3[4] = {
- /* -- */ { 0, &Ia_psllq_Pq_Qq },
- /* 66 */ { 0, &Ia_psllq_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff4[4] = {
- /* -- */ { 0, &Ia_pmuludq_Pq_Qq },
- /* 66 */ { 0, &Ia_pmuludq_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff5[4] = {
- /* -- */ { 0, &Ia_pmaddwd_Pq_Qq },
- /* 66 */ { 0, &Ia_pmaddwd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff6[4] = {
- /* -- */ { 0, &Ia_psadbw_Pq_Qq },
- /* 66 */ { 0, &Ia_psadbw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff7[4] = {
- /* -- */ { 0, &Ia_maskmovq_Pq_Nq },
- /* 66 */ { 0, &Ia_maskmovdqu_Vdq_Udq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff8[4] = {
- /* -- */ { 0, &Ia_psubb_Pq_Qq },
- /* 66 */ { 0, &Ia_psubb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff9[4] = {
- /* -- */ { 0, &Ia_psubw_Pq_Qq },
- /* 66 */ { 0, &Ia_psubw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffa[4] = {
- /* -- */ { 0, &Ia_psubd_Pq_Qq },
- /* 66 */ { 0, &Ia_psubd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffb[4] = {
- /* -- */ { 0, &Ia_psubq_Pq_Qq },
- /* 66 */ { 0, &Ia_psubq_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffc[4] = {
- /* -- */ { 0, &Ia_paddb_Pq_Qq },
- /* 66 */ { 0, &Ia_paddb_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffd[4] = {
- /* -- */ { 0, &Ia_paddw_Pq_Qq },
- /* 66 */ { 0, &Ia_paddw_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffe[4] = {
- /* -- */ { 0, &Ia_paddd_Pq_Qq },
- /* 66 */ { 0, &Ia_paddd_Vdq_Wdq },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1202[4] = {
- /* -- */ { 0, &Ia_psrlw_Nq_Ib },
- /* 66 */ { 0, &Ia_psrlw_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1204[4] = {
- /* -- */ { 0, &Ia_psraw_Nq_Ib },
- /* 66 */ { 0, &Ia_psraw_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1206[4] = {
- /* -- */ { 0, &Ia_psllw_Nq_Ib },
- /* 66 */ { 0, &Ia_psllw_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1302[4] = {
- /* -- */ { 0, &Ia_psrld_Nq_Ib },
- /* 66 */ { 0, &Ia_psrld_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1304[4] = {
- /* -- */ { 0, &Ia_psrad_Nq_Ib },
- /* 66 */ { 0, &Ia_psrad_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1306[4] = {
- /* -- */ { 0, &Ia_pslld_Nq_Ib },
- /* 66 */ { 0, &Ia_pslld_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1402[4] = {
- /* -- */ { 0, &Ia_psrlq_Nq_Ib },
- /* 66 */ { 0, &Ia_psrlq_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1403[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_psrldq_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1406[4] = {
- /* -- */ { 0, &Ia_psllq_Nq_Ib },
- /* 66 */ { 0, &Ia_psllq_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1407[4] = {
- /* -- */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_pslldq_Udq_Ib },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid }
-};
-
-
-/* ************************************************************************ */
-/* Opcode GroupN */
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EbIb[8] = {
- /* 0 */ { 0, &Ia_addb_Eb_Ib },
- /* 1 */ { 0, &Ia_orb_Eb_Ib },
- /* 2 */ { 0, &Ia_adcb_Eb_Ib },
- /* 3 */ { 0, &Ia_sbbb_Eb_Ib },
- /* 4 */ { 0, &Ia_andb_Eb_Ib },
- /* 5 */ { 0, &Ia_subb_Eb_Ib },
- /* 6 */ { 0, &Ia_xorb_Eb_Ib },
- /* 7 */ { 0, &Ia_cmpb_Eb_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EwIw[8] = {
- /* 0 */ { 0, &Ia_addw_Ew_Iw },
- /* 1 */ { 0, &Ia_orw_Ew_Iw },
- /* 2 */ { 0, &Ia_adcw_Ew_Iw },
- /* 3 */ { 0, &Ia_sbbw_Ew_Iw },
- /* 4 */ { 0, &Ia_andw_Ew_Iw },
- /* 5 */ { 0, &Ia_subw_Ew_Iw },
- /* 6 */ { 0, &Ia_xorw_Ew_Iw },
- /* 7 */ { 0, &Ia_cmpw_Ew_Iw }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EdId[8] = {
- /* 0 */ { 0, &Ia_addl_Ed_Id },
- /* 1 */ { 0, &Ia_orl_Ed_Id },
- /* 2 */ { 0, &Ia_adcl_Ed_Id },
- /* 3 */ { 0, &Ia_sbbl_Ed_Id },
- /* 4 */ { 0, &Ia_andl_Ed_Id },
- /* 5 */ { 0, &Ia_subl_Ed_Id },
- /* 6 */ { 0, &Ia_xorl_Ed_Id },
- /* 7 */ { 0, &Ia_cmpl_Ed_Id }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EqId[8] = {
- /* 0 */ { 0, &Ia_addq_Eq_sId },
- /* 1 */ { 0, &Ia_orq_Eq_sId },
- /* 2 */ { 0, &Ia_adcq_Eq_sId },
- /* 3 */ { 0, &Ia_sbbq_Eq_sId },
- /* 4 */ { 0, &Ia_andq_Eq_sId },
- /* 5 */ { 0, &Ia_subq_Eq_sId },
- /* 6 */ { 0, &Ia_xorq_Eq_sId },
- /* 7 */ { 0, &Ia_cmpq_Eq_sId }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EwIb[8] = {
- /* 0 */ { 0, &Ia_addw_Ew_sIb }, // sign-extend byte
- /* 1 */ { 0, &Ia_orw_Ew_sIb },
- /* 2 */ { 0, &Ia_adcw_Ew_sIb },
- /* 3 */ { 0, &Ia_sbbw_Ew_sIb },
- /* 4 */ { 0, &Ia_andw_Ew_sIb },
- /* 5 */ { 0, &Ia_subw_Ew_sIb },
- /* 6 */ { 0, &Ia_xorw_Ew_sIb },
- /* 7 */ { 0, &Ia_cmpw_Ew_sIb }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EdIb[8] = {
- /* 0 */ { 0, &Ia_addl_Ed_sIb }, // sign-extend byte
- /* 1 */ { 0, &Ia_orl_Ed_sIb },
- /* 2 */ { 0, &Ia_adcl_Ed_sIb },
- /* 3 */ { 0, &Ia_sbbl_Ed_sIb },
- /* 4 */ { 0, &Ia_andl_Ed_sIb },
- /* 5 */ { 0, &Ia_subl_Ed_sIb },
- /* 6 */ { 0, &Ia_xorl_Ed_sIb },
- /* 7 */ { 0, &Ia_cmpl_Ed_sIb }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG1EqIb[8] = {
- /* 0 */ { 0, &Ia_addq_Eq_sIb }, // sign-extend byte
- /* 1 */ { 0, &Ia_orq_Eq_sIb },
- /* 2 */ { 0, &Ia_adcq_Eq_sIb },
- /* 3 */ { 0, &Ia_sbbq_Eq_sIb },
- /* 4 */ { 0, &Ia_andq_Eq_sIb },
- /* 5 */ { 0, &Ia_subq_Eq_sIb },
- /* 6 */ { 0, &Ia_xorq_Eq_sIb },
- /* 7 */ { 0, &Ia_cmpq_Eq_sIb }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2Eb[8] = {
- /* 0 */ { 0, &Ia_rolb_Eb_Ib },
- /* 1 */ { 0, &Ia_rorb_Eb_Ib },
- /* 2 */ { 0, &Ia_rclb_Eb_Ib },
- /* 3 */ { 0, &Ia_rcrb_Eb_Ib },
- /* 4 */ { 0, &Ia_shlb_Eb_Ib },
- /* 5 */ { 0, &Ia_shrb_Eb_Ib },
- /* 6 */ { 0, &Ia_shlb_Eb_Ib },
- /* 7 */ { 0, &Ia_sarb_Eb_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EbI1[8] = {
- /* 0 */ { 0, &Ia_rolb_Eb_I1 },
- /* 1 */ { 0, &Ia_rorb_Eb_I1 },
- /* 2 */ { 0, &Ia_rclb_Eb_I1 },
- /* 3 */ { 0, &Ia_rcrb_Eb_I1 },
- /* 4 */ { 0, &Ia_shlb_Eb_I1 },
- /* 5 */ { 0, &Ia_shrb_Eb_I1 },
- /* 6 */ { 0, &Ia_shlb_Eb_I1 },
- /* 7 */ { 0, &Ia_sarb_Eb_I1 }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EbCL[8] = {
- /* 0 */ { 0, &Ia_rolb_Eb_CL },
- /* 1 */ { 0, &Ia_rorb_Eb_CL },
- /* 2 */ { 0, &Ia_rclb_Eb_CL },
- /* 3 */ { 0, &Ia_rcrb_Eb_CL },
- /* 4 */ { 0, &Ia_shlb_Eb_CL },
- /* 5 */ { 0, &Ia_shrb_Eb_CL },
- /* 6 */ { 0, &Ia_shlb_Eb_CL },
- /* 7 */ { 0, &Ia_sarb_Eb_CL }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2Ew[8] = {
- /* 0 */ { 0, &Ia_rolw_Ew_Ib },
- /* 1 */ { 0, &Ia_rorw_Ew_Ib },
- /* 2 */ { 0, &Ia_rclw_Ew_Ib },
- /* 3 */ { 0, &Ia_rcrw_Ew_Ib },
- /* 4 */ { 0, &Ia_shlw_Ew_Ib },
- /* 5 */ { 0, &Ia_shrw_Ew_Ib },
- /* 6 */ { 0, &Ia_shlw_Ew_Ib },
- /* 7 */ { 0, &Ia_sarw_Ew_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2Ed[8] = {
- /* 0 */ { 0, &Ia_roll_Ed_Ib },
- /* 1 */ { 0, &Ia_rorl_Ed_Ib },
- /* 2 */ { 0, &Ia_rcll_Ed_Ib },
- /* 3 */ { 0, &Ia_rcrl_Ed_Ib },
- /* 4 */ { 0, &Ia_shll_Ed_Ib },
- /* 5 */ { 0, &Ia_shrl_Ed_Ib },
- /* 6 */ { 0, &Ia_shll_Ed_Ib },
- /* 7 */ { 0, &Ia_sarl_Ed_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2Eq[8] = {
- /* 0 */ { 0, &Ia_rolq_Eq_Ib },
- /* 1 */ { 0, &Ia_rorq_Eq_Ib },
- /* 2 */ { 0, &Ia_rclq_Eq_Ib },
- /* 3 */ { 0, &Ia_rcrq_Eq_Ib },
- /* 4 */ { 0, &Ia_shlq_Eq_Ib },
- /* 5 */ { 0, &Ia_shrq_Eq_Ib },
- /* 6 */ { 0, &Ia_shlq_Eq_Ib },
- /* 7 */ { 0, &Ia_sarq_Eq_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EwI1[8] = {
- /* 0 */ { 0, &Ia_rolw_Ew_I1 },
- /* 1 */ { 0, &Ia_rorw_Ew_I1 },
- /* 2 */ { 0, &Ia_rclw_Ew_I1 },
- /* 3 */ { 0, &Ia_rcrw_Ew_I1 },
- /* 4 */ { 0, &Ia_shlw_Ew_I1 },
- /* 5 */ { 0, &Ia_shrw_Ew_I1 },
- /* 6 */ { 0, &Ia_shlw_Ew_I1 },
- /* 7 */ { 0, &Ia_sarw_Ew_I1 }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EdI1[8] = {
- /* 0 */ { 0, &Ia_roll_Ed_I1 },
- /* 1 */ { 0, &Ia_rorl_Ed_I1 },
- /* 2 */ { 0, &Ia_rcll_Ed_I1 },
- /* 3 */ { 0, &Ia_rcrl_Ed_I1 },
- /* 4 */ { 0, &Ia_shll_Ed_I1 },
- /* 5 */ { 0, &Ia_shrl_Ed_I1 },
- /* 6 */ { 0, &Ia_shll_Ed_I1 },
- /* 7 */ { 0, &Ia_sarl_Ed_I1 }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EqI1[8] = {
- /* 0 */ { 0, &Ia_rolq_Eq_I1 },
- /* 1 */ { 0, &Ia_rorq_Eq_I1 },
- /* 2 */ { 0, &Ia_rclq_Eq_I1 },
- /* 3 */ { 0, &Ia_rcrq_Eq_I1 },
- /* 4 */ { 0, &Ia_shlq_Eq_I1 },
- /* 5 */ { 0, &Ia_shrq_Eq_I1 },
- /* 6 */ { 0, &Ia_shlq_Eq_I1 },
- /* 7 */ { 0, &Ia_sarq_Eq_I1 }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EwCL[8] = {
- /* 0 */ { 0, &Ia_rolw_Ew_CL },
- /* 1 */ { 0, &Ia_rorw_Ew_CL },
- /* 2 */ { 0, &Ia_rclw_Ew_CL },
- /* 3 */ { 0, &Ia_rcrw_Ew_CL },
- /* 4 */ { 0, &Ia_shlw_Ew_CL },
- /* 5 */ { 0, &Ia_shrw_Ew_CL },
- /* 6 */ { 0, &Ia_shlw_Ew_CL },
- /* 7 */ { 0, &Ia_sarw_Ew_CL }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EdCL[8] = {
- /* 0 */ { 0, &Ia_roll_Ed_CL },
- /* 1 */ { 0, &Ia_rorl_Ed_CL },
- /* 2 */ { 0, &Ia_rcll_Ed_CL },
- /* 3 */ { 0, &Ia_rcrl_Ed_CL },
- /* 4 */ { 0, &Ia_shll_Ed_CL },
- /* 5 */ { 0, &Ia_shrl_Ed_CL },
- /* 6 */ { 0, &Ia_shll_Ed_CL },
- /* 7 */ { 0, &Ia_sarl_Ed_CL }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG2EqCL[8] = {
- /* 0 */ { 0, &Ia_rolq_Eq_CL },
- /* 1 */ { 0, &Ia_rorq_Eq_CL },
- /* 2 */ { 0, &Ia_rclq_Eq_CL },
- /* 3 */ { 0, &Ia_rcrq_Eq_CL },
- /* 4 */ { 0, &Ia_shlq_Eq_CL },
- /* 5 */ { 0, &Ia_shrq_Eq_CL },
- /* 6 */ { 0, &Ia_shlq_Eq_CL },
- /* 7 */ { 0, &Ia_sarq_Eq_CL }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG3Eb[8] = {
- /* 0 */ { 0, &Ia_testb_Eb_Ib },
- /* 1 */ { 0, &Ia_testb_Eb_Ib },
- /* 2 */ { 0, &Ia_notb_Eb },
- /* 3 */ { 0, &Ia_negb_Eb },
- /* 4 */ { 0, &Ia_mulb_AL_Eb },
- /* 5 */ { 0, &Ia_imulb_AL_Eb },
- /* 6 */ { 0, &Ia_divb_AL_Eb },
- /* 7 */ { 0, &Ia_idivb_AL_Eb }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG3Ew[8] = {
- /* 0 */ { 0, &Ia_testw_Ew_Iw },
- /* 1 */ { 0, &Ia_testw_Ew_Iw },
- /* 2 */ { 0, &Ia_notw_Ew },
- /* 3 */ { 0, &Ia_negw_Ew },
- /* 4 */ { 0, &Ia_mulw_AX_Ew },
- /* 5 */ { 0, &Ia_imulw_AX_Ew },
- /* 6 */ { 0, &Ia_divw_AX_Ew },
- /* 7 */ { 0, &Ia_idivw_AX_Ew }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG3Ed[8] = {
- /* 0 */ { 0, &Ia_testl_Ed_Id },
- /* 1 */ { 0, &Ia_testl_Ed_Id },
- /* 2 */ { 0, &Ia_notl_Ed },
- /* 3 */ { 0, &Ia_negl_Ed },
- /* 4 */ { 0, &Ia_mull_EAX_Ed },
- /* 5 */ { 0, &Ia_imull_EAX_Ed },
- /* 6 */ { 0, &Ia_divl_EAX_Ed },
- /* 7 */ { 0, &Ia_idivl_EAX_Ed }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG3Eq[8] = {
- /* 0 */ { 0, &Ia_testq_Eq_sId },
- /* 1 */ { 0, &Ia_testq_Eq_sId },
- /* 2 */ { 0, &Ia_notq_Eq },
- /* 3 */ { 0, &Ia_negq_Eq },
- /* 4 */ { 0, &Ia_mulq_RAX_Eq },
- /* 5 */ { 0, &Ia_imulq_RAX_Eq },
- /* 6 */ { 0, &Ia_divq_RAX_Eq },
- /* 7 */ { 0, &Ia_idivq_RAX_Eq }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG4[8] = {
- /* 0 */ { 0, &Ia_incb_Eb },
- /* 1 */ { 0, &Ia_decb_Eb },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG5w[8] = {
- /* 0 */ { 0, &Ia_incw_Ew },
- /* 1 */ { 0, &Ia_decw_Ew },
- /* 2 */ { 0, &Ia_call_Ew },
- /* 3 */ { 0, &Ia_lcall_Mp },
- /* 4 */ { 0, &Ia_jmp_Ew },
- /* 5 */ { 0, &Ia_ljmp_Mp },
- /* 6 */ { 0, &Ia_pushw_Ew },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG5d[8] = {
- /* 0 */ { 0, &Ia_incl_Ed },
- /* 1 */ { 0, &Ia_decl_Ed },
- /* 2 */ { 0, &Ia_call_Ed },
- /* 3 */ { 0, &Ia_lcall_Mp },
- /* 4 */ { 0, &Ia_jmp_Ed },
- /* 5 */ { 0, &Ia_ljmp_Mp },
- /* 6 */ { 0, &Ia_pushl_Ed },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroup64G5d[8] = {
- /* 0 */ { 0, &Ia_incl_Ed },
- /* 1 */ { 0, &Ia_decl_Ed },
- /* 2 */ { 0, &Ia_call_Eq },
- /* 3 */ { 0, &Ia_lcall_Mp },
- /* 4 */ { 0, &Ia_jmp_Eq },
- /* 5 */ { 0, &Ia_ljmp_Mp },
- /* 6 */ { 0, &Ia_pushq_Eq },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroup64G5q[8] = {
- /* 0 */ { 0, &Ia_incq_Eq },
- /* 1 */ { 0, &Ia_decq_Eq },
- /* 2 */ { 0, &Ia_call_Eq },
- /* 3 */ { 0, &Ia_lcall_Mp },
- /* 4 */ { 0, &Ia_jmp_Eq },
- /* 5 */ { 0, &Ia_ljmp_Mp },
- /* 6 */ { 0, &Ia_pushq_Eq },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG6[8] = {
- /* 0 */ { 0, &Ia_sldt },
- /* 1 */ { 0, &Ia_str },
- /* 2 */ { 0, &Ia_lldt },
- /* 3 */ { 0, &Ia_ltr },
- /* 4 */ { 0, &Ia_verr },
- /* 5 */ { 0, &Ia_verw },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupRmINVLPG[8] = {
- /* 0 */ { 0, &Ia_swapgs },
- /* 1 */ { 0, &Ia_rdtscp },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModINVLPG[2] = {
- /* R */ { GRPRM(INVLPG) },
- /* M */ { 0, &Ia_invlpg }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupRmSIDT[8] = {
- /* 0 */ { 0, &Ia_monitor },
- /* 1 */ { 0, &Ia_mwait },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModSIDT[2] = {
- /* R */ { GRPRM(SIDT) },
- /* M */ { 0, &Ia_sidt }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG7[8] = {
- /* 0 */ { 0, &Ia_sgdt },
- /* 1 */ { GRPMOD(SIDT) },
- /* 2 */ { 0, &Ia_lgdt },
- /* 3 */ { 0, &Ia_lidt },
- /* 4 */ { 0, &Ia_smsw_Ew },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_lmsw_Ew },
- /* 7 */ { GRPMOD(INVLPG) },
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG8EwIb[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_btw_Ew_Ib },
- /* 5 */ { 0, &Ia_btsw_Ew_Ib },
- /* 6 */ { 0, &Ia_btrw_Ew_Ib },
- /* 7 */ { 0, &Ia_btcw_Ew_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG8EdIb[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_btl_Ed_Ib },
- /* 5 */ { 0, &Ia_btsl_Ed_Ib },
- /* 6 */ { 0, &Ia_btrl_Ed_Ib },
- /* 7 */ { 0, &Ia_btcl_Ed_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG8EqIb[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_btq_Eq_Ib },
- /* 5 */ { 0, &Ia_btsq_Eq_Ib },
- /* 6 */ { 0, &Ia_btrq_Eq_Ib },
- /* 7 */ { 0, &Ia_btcq_Eq_Ib }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG9[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_cmpxchg8b },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG9q[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_cmpxchg16b },
- /* 2 */ { 0, &Ia_Invalid },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG12[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { GRPSSE(G1202) },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { GRPSSE(G1204) },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { GRPSSE(G1206) },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG13[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { GRPSSE(G1302) },
- /* 3 */ { 0, &Ia_Invalid },
- /* 4 */ { GRPSSE(G1304) },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { GRPSSE(G1306) },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG14[8] = {
- /* 0 */ { 0, &Ia_Invalid },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { GRPSSE(G1402) },
- /* 3 */ { GRPSSE(G1403) },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { GRPSSE(G1406) },
- /* 7 */ { GRPSSE(G1407) }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupModCFLUSH[2] = {
- /* R */ { 0, &Ia_sfence },
- /* M */ { 0, &Ia_cflush }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG15[8] = {
- /* 0 */ { 0, &Ia_fxsave },
- /* 1 */ { 0, &Ia_fxrstor },
- /* 2 */ { 0, &Ia_ldmxcsr },
- /* 3 */ { 0, &Ia_stmxcsr },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_lfence },
- /* 6 */ { 0, &Ia_mfence },
- /* 7 */ { GRPMOD(CFLUSH) } /* SFENCE/CFLUSH */
-};
-
-static BxDisasmOpcodeTable_t BxDisasmGroupG16[8] =
-{
- /* 0 */ { 0, &Ia_prefetchnta },
- /* 1 */ { 0, &Ia_prefetcht0 },
- /* 2 */ { 0, &Ia_prefetcht1 },
- /* 3 */ { 0, &Ia_prefetcht2 },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_Invalid }
-};
-
-/* ************************************************************************ */
-/* 3DNow! opcodes */
-
-static BxDisasmOpcodeTable_t BxDisasm3DNowGroup[256] = {
- // 256 entries for 3DNow opcodes_by suffix
- /* 00 */ { 0, &Ia_Invalid },
- /* 01 */ { 0, &Ia_Invalid },
- /* 02 */ { 0, &Ia_Invalid },
- /* 03 */ { 0, &Ia_Invalid },
- /* 04 */ { 0, &Ia_Invalid },
- /* 05 */ { 0, &Ia_Invalid },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_Invalid },
- /* 09 */ { 0, &Ia_Invalid },
- /* 0A */ { 0, &Ia_Invalid },
- /* 0B */ { 0, &Ia_Invalid },
- /* 0C */ { 0, &Ia_pi2fw_Pq_Qq },
- /* 0D */ { 0, &Ia_pi2fd_Pq_Qq },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_Invalid },
- /* 10 */ { 0, &Ia_Invalid },
- /* 11 */ { 0, &Ia_Invalid },
- /* 12 */ { 0, &Ia_Invalid },
- /* 13 */ { 0, &Ia_Invalid },
- /* 14 */ { 0, &Ia_Invalid },
- /* 15 */ { 0, &Ia_Invalid },
- /* 16 */ { 0, &Ia_Invalid },
- /* 17 */ { 0, &Ia_Invalid },
- /* 18 */ { 0, &Ia_Invalid },
- /* 19 */ { 0, &Ia_Invalid },
- /* 1A */ { 0, &Ia_Invalid },
- /* 1B */ { 0, &Ia_Invalid },
- /* 1C */ { 0, &Ia_pf2iw_Pq_Qq },
- /* 1D */ { 0, &Ia_pf2id_Pq_Qq },
- /* 1E */ { 0, &Ia_Invalid },
- /* 1F */ { 0, &Ia_Invalid },
- /* 20 */ { 0, &Ia_Invalid },
- /* 21 */ { 0, &Ia_Invalid },
- /* 22 */ { 0, &Ia_Invalid },
- /* 23 */ { 0, &Ia_Invalid },
- /* 24 */ { 0, &Ia_Invalid },
- /* 25 */ { 0, &Ia_Invalid },
- /* 26 */ { 0, &Ia_Invalid },
- /* 27 */ { 0, &Ia_Invalid },
- /* 28 */ { 0, &Ia_Invalid },
- /* 29 */ { 0, &Ia_Invalid },
- /* 2A */ { 0, &Ia_Invalid },
- /* 2B */ { 0, &Ia_Invalid },
- /* 2C */ { 0, &Ia_Invalid },
- /* 2D */ { 0, &Ia_Invalid },
- /* 2E */ { 0, &Ia_Invalid },
- /* 2F */ { 0, &Ia_Invalid },
- /* 30 */ { 0, &Ia_Invalid },
- /* 31 */ { 0, &Ia_Invalid },
- /* 32 */ { 0, &Ia_Invalid },
- /* 33 */ { 0, &Ia_Invalid },
- /* 34 */ { 0, &Ia_Invalid },
- /* 35 */ { 0, &Ia_Invalid },
- /* 36 */ { 0, &Ia_Invalid },
- /* 37 */ { 0, &Ia_Invalid },
- /* 38 */ { 0, &Ia_Invalid },
- /* 39 */ { 0, &Ia_Invalid },
- /* 3A */ { 0, &Ia_Invalid },
- /* 3B */ { 0, &Ia_Invalid },
- /* 3C */ { 0, &Ia_Invalid },
- /* 3D */ { 0, &Ia_Invalid },
- /* 3E */ { 0, &Ia_Invalid },
- /* 3F */ { 0, &Ia_Invalid },
- /* 40 */ { 0, &Ia_Invalid },
- /* 41 */ { 0, &Ia_Invalid },
- /* 42 */ { 0, &Ia_Invalid },
- /* 43 */ { 0, &Ia_Invalid },
- /* 44 */ { 0, &Ia_Invalid },
- /* 45 */ { 0, &Ia_Invalid },
- /* 46 */ { 0, &Ia_Invalid },
- /* 47 */ { 0, &Ia_Invalid },
- /* 48 */ { 0, &Ia_Invalid },
- /* 49 */ { 0, &Ia_Invalid },
- /* 4A */ { 0, &Ia_Invalid },
- /* 4B */ { 0, &Ia_Invalid },
- /* 4C */ { 0, &Ia_Invalid },
- /* 4D */ { 0, &Ia_Invalid },
- /* 4E */ { 0, &Ia_Invalid },
- /* 4F */ { 0, &Ia_Invalid },
- /* 50 */ { 0, &Ia_Invalid },
- /* 51 */ { 0, &Ia_Invalid },
- /* 52 */ { 0, &Ia_Invalid },
- /* 53 */ { 0, &Ia_Invalid },
- /* 54 */ { 0, &Ia_Invalid },
- /* 55 */ { 0, &Ia_Invalid },
- /* 56 */ { 0, &Ia_Invalid },
- /* 57 */ { 0, &Ia_Invalid },
- /* 58 */ { 0, &Ia_Invalid },
- /* 59 */ { 0, &Ia_Invalid },
- /* 5A */ { 0, &Ia_Invalid },
- /* 5B */ { 0, &Ia_Invalid },
- /* 5C */ { 0, &Ia_Invalid },
- /* 5D */ { 0, &Ia_Invalid },
- /* 5E */ { 0, &Ia_Invalid },
- /* 5F */ { 0, &Ia_Invalid },
- /* 60 */ { 0, &Ia_Invalid },
- /* 61 */ { 0, &Ia_Invalid },
- /* 62 */ { 0, &Ia_Invalid },
- /* 63 */ { 0, &Ia_Invalid },
- /* 64 */ { 0, &Ia_Invalid },
- /* 65 */ { 0, &Ia_Invalid },
- /* 66 */ { 0, &Ia_Invalid },
- /* 67 */ { 0, &Ia_Invalid },
- /* 68 */ { 0, &Ia_Invalid },
- /* 69 */ { 0, &Ia_Invalid },
- /* 6A */ { 0, &Ia_Invalid },
- /* 6B */ { 0, &Ia_Invalid },
- /* 6C */ { 0, &Ia_Invalid },
- /* 6D */ { 0, &Ia_Invalid },
- /* 6E */ { 0, &Ia_Invalid },
- /* 6F */ { 0, &Ia_Invalid },
- /* 70 */ { 0, &Ia_Invalid },
- /* 71 */ { 0, &Ia_Invalid },
- /* 72 */ { 0, &Ia_Invalid },
- /* 73 */ { 0, &Ia_Invalid },
- /* 74 */ { 0, &Ia_Invalid },
- /* 75 */ { 0, &Ia_Invalid },
- /* 76 */ { 0, &Ia_Invalid },
- /* 77 */ { 0, &Ia_Invalid },
- /* 78 */ { 0, &Ia_Invalid },
- /* 79 */ { 0, &Ia_Invalid },
- /* 7A */ { 0, &Ia_Invalid },
- /* 7B */ { 0, &Ia_Invalid },
- /* 7C */ { 0, &Ia_Invalid },
- /* 7D */ { 0, &Ia_Invalid },
- /* 7E */ { 0, &Ia_Invalid },
- /* 7F */ { 0, &Ia_Invalid },
- /* 80 */ { 0, &Ia_Invalid },
- /* 81 */ { 0, &Ia_Invalid },
- /* 82 */ { 0, &Ia_Invalid },
- /* 83 */ { 0, &Ia_Invalid },
- /* 84 */ { 0, &Ia_Invalid },
- /* 85 */ { 0, &Ia_Invalid },
- /* 86 */ { 0, &Ia_Invalid },
- /* 87 */ { 0, &Ia_Invalid },
- /* 88 */ { 0, &Ia_Invalid },
- /* 89 */ { 0, &Ia_Invalid },
- /* 8A */ { 0, &Ia_pfnacc_Pq_Qq },
- /* 8B */ { 0, &Ia_Invalid },
- /* 8C */ { 0, &Ia_Invalid },
- /* 8D */ { 0, &Ia_Invalid },
- /* 8E */ { 0, &Ia_pfpnacc_Pq_Qq },
- /* 8F */ { 0, &Ia_Invalid },
- /* 90 */ { 0, &Ia_pfcmpge_Pq_Qq },
- /* 91 */ { 0, &Ia_Invalid },
- /* 92 */ { 0, &Ia_Invalid },
- /* 93 */ { 0, &Ia_Invalid },
- /* 94 */ { 0, &Ia_pfmin_Pq_Qq },
- /* 95 */ { 0, &Ia_Invalid },
- /* 96 */ { 0, &Ia_pfrcp_Pq_Qq },
- /* 97 */ { 0, &Ia_pfrsqrt_Pq_Qq },
- /* 98 */ { 0, &Ia_Invalid },
- /* 99 */ { 0, &Ia_Invalid },
- /* 9A */ { 0, &Ia_pfsub_Pq_Qq },
- /* 9B */ { 0, &Ia_Invalid },
- /* 9C */ { 0, &Ia_Invalid },
- /* 9D */ { 0, &Ia_Invalid },
- /* 9E */ { 0, &Ia_pfadd_Pq_Qq },
- /* 9F */ { 0, &Ia_Invalid },
- /* A0 */ { 0, &Ia_pfcmpgt_Pq_Qq },
- /* A1 */ { 0, &Ia_Invalid },
- /* A2 */ { 0, &Ia_Invalid },
- /* A3 */ { 0, &Ia_Invalid },
- /* A4 */ { 0, &Ia_pfmax_Pq_Qq },
- /* A5 */ { 0, &Ia_Invalid },
- /* A6 */ { 0, &Ia_pfrcpit1_Pq_Qq },
- /* A7 */ { 0, &Ia_pfrsqit1_Pq_Qq },
- /* A8 */ { 0, &Ia_Invalid },
- /* A9 */ { 0, &Ia_Invalid },
- /* AA */ { 0, &Ia_pfsubr_Pq_Qq },
- /* AB */ { 0, &Ia_Invalid },
- /* AC */ { 0, &Ia_Invalid },
- /* AD */ { 0, &Ia_Invalid },
- /* AE */ { 0, &Ia_pfacc_Pq_Qq },
- /* AF */ { 0, &Ia_Invalid },
- /* B0 */ { 0, &Ia_pfcmpeq_Pq_Qq },
- /* B1 */ { 0, &Ia_Invalid },
- /* B2 */ { 0, &Ia_Invalid },
- /* B3 */ { 0, &Ia_Invalid },
- /* B4 */ { 0, &Ia_pfmul_Pq_Qq },
- /* B5 */ { 0, &Ia_Invalid },
- /* B6 */ { 0, &Ia_pfrcpit2_Pq_Qq },
- /* B7 */ { 0, &Ia_pmulhrw_Pq_Qq },
- /* B8 */ { 0, &Ia_Invalid },
- /* B9 */ { 0, &Ia_Invalid },
- /* BA */ { 0, &Ia_Invalid },
- /* BB */ { 0, &Ia_pswapd_Pq_Qq },
- /* BC */ { 0, &Ia_Invalid },
- /* BD */ { 0, &Ia_Invalid },
- /* BE */ { 0, &Ia_Invalid },
- /* BF */ { 0, &Ia_pavgb_Pq_Qq },
- /* C0 */ { 0, &Ia_Invalid },
- /* C1 */ { 0, &Ia_Invalid },
- /* C2 */ { 0, &Ia_Invalid },
- /* C3 */ { 0, &Ia_Invalid },
- /* C4 */ { 0, &Ia_Invalid },
- /* C5 */ { 0, &Ia_Invalid },
- /* C6 */ { 0, &Ia_Invalid },
- /* C7 */ { 0, &Ia_Invalid },
- /* C8 */ { 0, &Ia_Invalid },
- /* C9 */ { 0, &Ia_Invalid },
- /* CA */ { 0, &Ia_Invalid },
- /* CB */ { 0, &Ia_Invalid },
- /* CC */ { 0, &Ia_Invalid },
- /* CD */ { 0, &Ia_Invalid },
- /* CE */ { 0, &Ia_Invalid },
- /* CF */ { 0, &Ia_Invalid },
- /* D0 */ { 0, &Ia_Invalid },
- /* D1 */ { 0, &Ia_Invalid },
- /* D2 */ { 0, &Ia_Invalid },
- /* D3 */ { 0, &Ia_Invalid },
- /* D4 */ { 0, &Ia_Invalid },
- /* D5 */ { 0, &Ia_Invalid },
- /* D6 */ { 0, &Ia_Invalid },
- /* D7 */ { 0, &Ia_Invalid },
- /* D8 */ { 0, &Ia_Invalid },
- /* D9 */ { 0, &Ia_Invalid },
- /* DA */ { 0, &Ia_Invalid },
- /* DB */ { 0, &Ia_Invalid },
- /* DC */ { 0, &Ia_Invalid },
- /* DD */ { 0, &Ia_Invalid },
- /* DE */ { 0, &Ia_Invalid },
- /* DF */ { 0, &Ia_Invalid },
- /* E0 */ { 0, &Ia_Invalid },
- /* E1 */ { 0, &Ia_Invalid },
- /* E2 */ { 0, &Ia_Invalid },
- /* E3 */ { 0, &Ia_Invalid },
- /* E4 */ { 0, &Ia_Invalid },
- /* E5 */ { 0, &Ia_Invalid },
- /* E6 */ { 0, &Ia_Invalid },
- /* E7 */ { 0, &Ia_Invalid },
- /* E8 */ { 0, &Ia_Invalid },
- /* E9 */ { 0, &Ia_Invalid },
- /* EA */ { 0, &Ia_Invalid },
- /* EB */ { 0, &Ia_Invalid },
- /* EC */ { 0, &Ia_Invalid },
- /* ED */ { 0, &Ia_Invalid },
- /* EE */ { 0, &Ia_Invalid },
- /* EF */ { 0, &Ia_Invalid },
- /* F0 */ { 0, &Ia_Invalid },
- /* F1 */ { 0, &Ia_Invalid },
- /* F2 */ { 0, &Ia_Invalid },
- /* F3 */ { 0, &Ia_Invalid },
- /* F4 */ { 0, &Ia_Invalid },
- /* F5 */ { 0, &Ia_Invalid },
- /* F6 */ { 0, &Ia_Invalid },
- /* F7 */ { 0, &Ia_Invalid },
- /* F8 */ { 0, &Ia_Invalid },
- /* F9 */ { 0, &Ia_Invalid },
- /* FA */ { 0, &Ia_Invalid },
- /* FB */ { 0, &Ia_Invalid },
- /* FC */ { 0, &Ia_Invalid },
- /* FD */ { 0, &Ia_Invalid },
- /* FE */ { 0, &Ia_Invalid },
- /* FF */ { 0, &Ia_Invalid }
-};
-
-/* ************************************************************************ */
-/* FPU Opcodes */
-
-// floating point instructions when mod!=11b.
-// the following tables will be accessed like groups using the nnn (reg) field of
-// the modrm byte. (the first byte is D8-DF)
-
- // D8 (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupD8[8] = {
- /* 0 */ { 0, &Ia_fadds_Md },
- /* 1 */ { 0, &Ia_fmuls_Md },
- /* 2 */ { 0, &Ia_fcoms_Md },
- /* 3 */ { 0, &Ia_fcomps_Md },
- /* 4 */ { 0, &Ia_fsubs_Md },
- /* 5 */ { 0, &Ia_fsubrs_Md },
- /* 6 */ { 0, &Ia_fdivs_Md },
- /* 7 */ { 0, &Ia_fdivrs_Md }
-};
-
- // D9 (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupD9[8] = {
- /* 0 */ { 0, &Ia_flds_Md },
- /* 1 */ { 0, &Ia_Invalid },
- /* 2 */ { 0, &Ia_fsts_Md },
- /* 3 */ { 0, &Ia_fstps_Md },
- /* 4 */ { 0, &Ia_fldenv },
- /* 5 */ { 0, &Ia_fldcw },
- /* 6 */ { 0, &Ia_fnstenv },
- /* 7 */ { 0, &Ia_fnstcw }
-};
-
- // DA (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupDA[8] = {
- /* 0 */ { 0, &Ia_fiaddl_Md },
- /* 1 */ { 0, &Ia_fimull_Md },
- /* 2 */ { 0, &Ia_ficoml_Md },
- /* 3 */ { 0, &Ia_ficompl_Md },
- /* 4 */ { 0, &Ia_fisubl_Md },
- /* 5 */ { 0, &Ia_fisubrl_Md },
- /* 6 */ { 0, &Ia_fidivl_Md },
- /* 7 */ { 0, &Ia_fidivrl_Md }
-};
-
- // DB (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupDB[8] = {
- /* 0 */ { 0, &Ia_fildl_Md },
- /* 1 */ { 0, &Ia_fisttpl_Md },
- /* 2 */ { 0, &Ia_fistl_Md },
- /* 3 */ { 0, &Ia_fistpl_Md },
- /* 4 */ { 0, &Ia_Invalid },
- /* 5 */ { 0, &Ia_fldt_Mt },
- /* 6 */ { 0, &Ia_Invalid },
- /* 7 */ { 0, &Ia_fstpt_Mt }
-};
-
- // DC (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupDC[8] = {
- /* 0 */ { 0, &Ia_faddl_Mq },
- /* 1 */ { 0, &Ia_fmull_Mq },
- /* 2 */ { 0, &Ia_fcoml_Mq },
- /* 3 */ { 0, &Ia_fcompl_Mq },
- /* 4 */ { 0, &Ia_fsubl_Mq },
- /* 5 */ { 0, &Ia_fsubrl_Mq },
- /* 6 */ { 0, &Ia_fdivl_Mq },
- /* 7 */ { 0, &Ia_fdivrl_Mq }
-};
-
- // DD (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupDD[8] = {
- /* 0 */ { 0, &Ia_fldl_Mq },
- /* 1 */ { 0, &Ia_fisttpq_Mq },
- /* 2 */ { 0, &Ia_fstl_Mq },
- /* 3 */ { 0, &Ia_fstpl_Mq },
- /* 4 */ { 0, &Ia_frstor },
- /* 5 */ { 0, &Ia_Invalid },
- /* 6 */ { 0, &Ia_fnsave },
- /* 7 */ { 0, &Ia_fnstsw }
-};
-
- // DE (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupDE[8] = {
- /* 0 */ { 0, &Ia_fiadds_Mw },
- /* 1 */ { 0, &Ia_fimuls_Mw },
- /* 2 */ { 0, &Ia_ficoms_Mw },
- /* 3 */ { 0, &Ia_ficomps_Mw },
- /* 4 */ { 0, &Ia_fisubs_Mw },
- /* 5 */ { 0, &Ia_fisubrs_Mw },
- /* 6 */ { 0, &Ia_fidivs_Mw },
- /* 7 */ { 0, &Ia_fidivrs_Mw }
-};
-
- // DF (modrm is outside 00h - BFh) (mod != 11)
-static BxDisasmOpcodeTable_t BxDisasmFPGroupDF[8] = {
- /* 0 */ { 0, &Ia_filds_Mw },
- /* 1 */ { 0, &Ia_fisttps_Mw },
- /* 2 */ { 0, &Ia_fists_Mw },
- /* 3 */ { 0, &Ia_fistps_Mw },
- /* 4 */ { 0, &Ia_fbldt_Mt },
- /* 5 */ { 0, &Ia_fildq_Mq },
- /* 6 */ { 0, &Ia_fbstpt_Mt },
- /* 7 */ { 0, &Ia_fistpq_Mq }
-};
-
-// 512 entries for second byte of floating point instructions. (when mod==11b)
-static BxDisasmOpcodeTable_t BxDisasmOpcodeInfoFP[512] = {
- // D8 (modrm is outside 00h - BFh) (mod == 11)
- /* D8 C0 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C1 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C2 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C3 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C4 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C5 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C6 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C7 */ { 0, &Ia_fadd_ST0_STi },
- /* D8 C8 */ { 0, &Ia_fmul_ST0_STi },
- /* D8 C9 */ { 0, &Ia_fmul_ST0_STi },
- /* D8 CA */ { 0, &Ia_fmul_ST0_STi },
- /* D8 CB */ { 0, &Ia_fmul_ST0_STi },
- /* D8 CC */ { 0, &Ia_fmul_ST0_STi },
- /* D8 CD */ { 0, &Ia_fmul_ST0_STi },
- /* D8 CE */ { 0, &Ia_fmul_ST0_STi },
- /* D8 CF */ { 0, &Ia_fmul_ST0_STi },
- /* D8 D0 */ { 0, &Ia_fcom_STi },
- /* D8 D1 */ { 0, &Ia_fcom_STi },
- /* D8 D2 */ { 0, &Ia_fcom_STi },
- /* D8 D3 */ { 0, &Ia_fcom_STi },
- /* D8 D4 */ { 0, &Ia_fcom_STi },
- /* D8 D5 */ { 0, &Ia_fcom_STi },
- /* D8 D6 */ { 0, &Ia_fcom_STi },
- /* D8 D7 */ { 0, &Ia_fcom_STi },
- /* D8 D8 */ { 0, &Ia_fcomp_STi },
- /* D8 D9 */ { 0, &Ia_fcomp_STi },
- /* D8 DA */ { 0, &Ia_fcomp_STi },
- /* D8 DB */ { 0, &Ia_fcomp_STi },
- /* D8 DC */ { 0, &Ia_fcomp_STi },
- /* D8 DD */ { 0, &Ia_fcomp_STi },
- /* D8 DE */ { 0, &Ia_fcomp_STi },
- /* D8 DF */ { 0, &Ia_fcomp_STi },
- /* D8 E0 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E1 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E2 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E3 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E4 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E5 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E6 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E7 */ { 0, &Ia_fsub_ST0_STi },
- /* D8 E8 */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 E9 */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 EA */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 EB */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 EC */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 ED */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 EE */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 EF */ { 0, &Ia_fsubr_ST0_STi },
- /* D8 F0 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F1 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F2 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F3 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F4 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F5 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F6 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F7 */ { 0, &Ia_fdiv_ST0_STi },
- /* D8 F8 */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 F9 */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 FA */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 FB */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 FC */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 FD */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 FE */ { 0, &Ia_fdivr_ST0_STi },
- /* D8 FF */ { 0, &Ia_fdivr_ST0_STi },
-
- // D9 (modrm is outside 00h - BFh) (mod == 11)
- /* D9 C0 */ { 0, &Ia_fld_STi },
- /* D9 C1 */ { 0, &Ia_fld_STi },
- /* D9 C2 */ { 0, &Ia_fld_STi },
- /* D9 C3 */ { 0, &Ia_fld_STi },
- /* D9 C4 */ { 0, &Ia_fld_STi },
- /* D9 C5 */ { 0, &Ia_fld_STi },
- /* D9 C6 */ { 0, &Ia_fld_STi },
- /* D9 C7 */ { 0, &Ia_fld_STi },
- /* D9 C8 */ { 0, &Ia_fxch },
- /* D9 C9 */ { 0, &Ia_fxch },
- /* D9 CA */ { 0, &Ia_fxch },
- /* D9 CB */ { 0, &Ia_fxch },
- /* D9 CC */ { 0, &Ia_fxch },
- /* D9 CD */ { 0, &Ia_fxch },
- /* D9 CE */ { 0, &Ia_fxch },
- /* D9 CF */ { 0, &Ia_fxch },
- /* D9 D0 */ { 0, &Ia_fnop },
- /* D9 D1 */ { 0, &Ia_Invalid },
- /* D9 D2 */ { 0, &Ia_Invalid },
- /* D9 D3 */ { 0, &Ia_Invalid },
- /* D9 D4 */ { 0, &Ia_Invalid },
- /* D9 D5 */ { 0, &Ia_Invalid },
- /* D9 D6 */ { 0, &Ia_Invalid },
- /* D9 D7 */ { 0, &Ia_Invalid },
- /* D9 D8 */ { 0, &Ia_Invalid },
- /* D9 D9 */ { 0, &Ia_Invalid },
- /* D9 DA */ { 0, &Ia_Invalid },
- /* D9 DB */ { 0, &Ia_Invalid },
- /* D9 DC */ { 0, &Ia_Invalid },
- /* D9 DD */ { 0, &Ia_Invalid },
- /* D9 DE */ { 0, &Ia_Invalid },
- /* D9 DF */ { 0, &Ia_Invalid },
- /* D9 E0 */ { 0, &Ia_fchs },
- /* D9 E1 */ { 0, &Ia_fabs },
- /* D9 E2 */ { 0, &Ia_Invalid },
- /* D9 E3 */ { 0, &Ia_Invalid },
- /* D9 E4 */ { 0, &Ia_ftst },
- /* D9 E5 */ { 0, &Ia_fxam },
- /* D9 E6 */ { 0, &Ia_Invalid },
- /* D9 E7 */ { 0, &Ia_Invalid },
- /* D9 E8 */ { 0, &Ia_fld1 },
- /* D9 E9 */ { 0, &Ia_fldl2t },
- /* D9 EA */ { 0, &Ia_fldl2e },
- /* D9 EB */ { 0, &Ia_fldpi },
- /* D9 EC */ { 0, &Ia_fldlg2 },
- /* D9 ED */ { 0, &Ia_fldln2 },
- /* D9 EE */ { 0, &Ia_fldz },
- /* D9 EF */ { 0, &Ia_Invalid },
- /* D9 F0 */ { 0, &Ia_f2xm1 },
- /* D9 F1 */ { 0, &Ia_fyl2x },
- /* D9 F2 */ { 0, &Ia_fptan },
- /* D9 F3 */ { 0, &Ia_fpatan },
- /* D9 F4 */ { 0, &Ia_fxtract },
- /* D9 F5 */ { 0, &Ia_fprem1 },
- /* D9 F6 */ { 0, &Ia_fdecstp },
- /* D9 F7 */ { 0, &Ia_fincstp },
- /* D9 F8 */ { 0, &Ia_fprem },
- /* D9 F9 */ { 0, &Ia_fyl2xp1 },
- /* D9 FA */ { 0, &Ia_fsqrt },
- /* D9 FB */ { 0, &Ia_fsincos },
- /* D9 FC */ { 0, &Ia_frndint },
- /* D9 FD */ { 0, &Ia_fscale },
- /* D9 FE */ { 0, &Ia_fsin },
- /* D9 FF */ { 0, &Ia_fcos },
-
- // DA (modrm is outside 00h - BFh) (mod == 11)
- /* DA C0 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C1 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C2 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C3 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C4 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C5 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C6 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C7 */ { 0, &Ia_fcmovb_ST0_STi },
- /* DA C8 */ { 0, &Ia_fcmove_ST0_STi },
- /* DA C9 */ { 0, &Ia_fcmove_ST0_STi },
- /* DA CA */ { 0, &Ia_fcmove_ST0_STi },
- /* DA CB */ { 0, &Ia_fcmove_ST0_STi },
- /* DA CC */ { 0, &Ia_fcmove_ST0_STi },
- /* DA CD */ { 0, &Ia_fcmove_ST0_STi },
- /* DA CE */ { 0, &Ia_fcmove_ST0_STi },
- /* DA CF */ { 0, &Ia_fcmove_ST0_STi },
- /* DA D0 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D1 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D2 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D3 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D4 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D5 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D6 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D7 */ { 0, &Ia_fcmovbe_ST0_STi },
- /* DA D8 */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA D9 */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA DA */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA DB */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA DC */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA DD */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA DE */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA DF */ { 0, &Ia_fcmovu_ST0_STi },
- /* DA E0 */ { 0, &Ia_Invalid },
- /* DA E1 */ { 0, &Ia_Invalid },
- /* DA E2 */ { 0, &Ia_Invalid },
- /* DA E3 */ { 0, &Ia_Invalid },
- /* DA E4 */ { 0, &Ia_Invalid },
- /* DA E5 */ { 0, &Ia_Invalid },
- /* DA E6 */ { 0, &Ia_Invalid },
- /* DA E7 */ { 0, &Ia_Invalid },
- /* DA E8 */ { 0, &Ia_Invalid },
- /* DA E9 */ { 0, &Ia_fucompp },
- /* DA EA */ { 0, &Ia_Invalid },
- /* DA EB */ { 0, &Ia_Invalid },
- /* DA EC */ { 0, &Ia_Invalid },
- /* DA ED */ { 0, &Ia_Invalid },
- /* DA EE */ { 0, &Ia_Invalid },
- /* DA EF */ { 0, &Ia_Invalid },
- /* DA F0 */ { 0, &Ia_Invalid },
- /* DA F1 */ { 0, &Ia_Invalid },
- /* DA F2 */ { 0, &Ia_Invalid },
- /* DA F3 */ { 0, &Ia_Invalid },
- /* DA F4 */ { 0, &Ia_Invalid },
- /* DA F5 */ { 0, &Ia_Invalid },
- /* DA F6 */ { 0, &Ia_Invalid },
- /* DA F7 */ { 0, &Ia_Invalid },
- /* DA F8 */ { 0, &Ia_Invalid },
- /* DA F9 */ { 0, &Ia_Invalid },
- /* DA FA */ { 0, &Ia_Invalid },
- /* DA FB */ { 0, &Ia_Invalid },
- /* DA FC */ { 0, &Ia_Invalid },
- /* DA FD */ { 0, &Ia_Invalid },
- /* DA FE */ { 0, &Ia_Invalid },
- /* DA FF */ { 0, &Ia_Invalid },
-
- // DB (modrm is outside 00h - BFh) (mod == 11)
- /* DB C0 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C1 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C2 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C3 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C4 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C5 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C6 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C7 */ { 0, &Ia_fcmovnb_ST0_STi },
- /* DB C8 */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB C9 */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB CA */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB CB */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB CC */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB CD */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB CE */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB CF */ { 0, &Ia_fcmovne_ST0_STi },
- /* DB D0 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D1 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D2 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D3 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D4 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D5 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D6 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D7 */ { 0, &Ia_fcmovnbe_ST0_STi },
- /* DB D8 */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB D9 */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB DA */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB DB */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB DC */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB DD */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB DE */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB DF */ { 0, &Ia_fcmovnu_ST0_STi },
- /* DB E0 */ { 0, &Ia_feni },
- /* DB E1 */ { 0, &Ia_fdisi },
- /* DB E2 */ { 0, &Ia_fnclex },
- /* DB E3 */ { 0, &Ia_fninit },
- /* DB E4 */ { 0, &Ia_fsetpm },
- /* DB E5 */ { 0, &Ia_Invalid },
- /* DB E6 */ { 0, &Ia_Invalid },
- /* DB E7 */ { 0, &Ia_Invalid },
- /* DB E8 */ { 0, &Ia_fucomi_ST0_STi },
- /* DB E9 */ { 0, &Ia_fucomi_ST0_STi },
- /* DB EA */ { 0, &Ia_fucomi_ST0_STi },
- /* DB EB */ { 0, &Ia_fucomi_ST0_STi },
- /* DB EC */ { 0, &Ia_fucomi_ST0_STi },
- /* DB ED */ { 0, &Ia_fucomi_ST0_STi },
- /* DB EE */ { 0, &Ia_fucomi_ST0_STi },
- /* DB EF */ { 0, &Ia_fucomi_ST0_STi },
- /* DB F0 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F1 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F2 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F3 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F4 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F5 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F6 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F7 */ { 0, &Ia_fcomi_ST0_STi },
- /* DB F8 */ { 0, &Ia_Invalid },
- /* DB F9 */ { 0, &Ia_Invalid },
- /* DB FA */ { 0, &Ia_Invalid },
- /* DB FB */ { 0, &Ia_Invalid },
- /* DB FC */ { 0, &Ia_Invalid },
- /* DB FD */ { 0, &Ia_Invalid },
- /* DB FE */ { 0, &Ia_Invalid },
- /* DB FF */ { 0, &Ia_Invalid },
-
- // DC (modrm is outside 00h - BFh) (mod == 11)
- /* DC C0 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C1 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C2 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C3 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C4 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C5 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C6 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C7 */ { 0, &Ia_fadd_STi_ST0 },
- /* DC C8 */ { 0, &Ia_fmul_STi_ST0 },
- /* DC C9 */ { 0, &Ia_fmul_STi_ST0 },
- /* DC CA */ { 0, &Ia_fmul_STi_ST0 },
- /* DC CB */ { 0, &Ia_fmul_STi_ST0 },
- /* DC CC */ { 0, &Ia_fmul_STi_ST0 },
- /* DC CD */ { 0, &Ia_fmul_STi_ST0 },
- /* DC CE */ { 0, &Ia_fmul_STi_ST0 },
- /* DC CF */ { 0, &Ia_fmul_STi_ST0 },
- /* DC D0 */ { 0, &Ia_Invalid },
- /* DC D1 */ { 0, &Ia_Invalid },
- /* DC D2 */ { 0, &Ia_Invalid },
- /* DC D3 */ { 0, &Ia_Invalid },
- /* DC D4 */ { 0, &Ia_Invalid },
- /* DC D5 */ { 0, &Ia_Invalid },
- /* DC D6 */ { 0, &Ia_Invalid },
- /* DC D7 */ { 0, &Ia_Invalid },
- /* DC D8 */ { 0, &Ia_Invalid },
- /* DC D9 */ { 0, &Ia_Invalid },
- /* DC DA */ { 0, &Ia_Invalid },
- /* DC DB */ { 0, &Ia_Invalid },
- /* DC DC */ { 0, &Ia_Invalid },
- /* DC DD */ { 0, &Ia_Invalid },
- /* DC DE */ { 0, &Ia_Invalid },
- /* DC DF */ { 0, &Ia_Invalid },
- /* DC E0 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E1 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E2 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E3 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E4 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E5 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E6 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E7 */ { 0, &Ia_fsubr_STi_ST0 },
- /* DC E8 */ { 0, &Ia_fsub_STi_ST0 },
- /* DC E9 */ { 0, &Ia_fsub_STi_ST0 },
- /* DC EA */ { 0, &Ia_fsub_STi_ST0 },
- /* DC EB */ { 0, &Ia_fsub_STi_ST0 },
- /* DC EC */ { 0, &Ia_fsub_STi_ST0 },
- /* DC ED */ { 0, &Ia_fsub_STi_ST0 },
- /* DC EE */ { 0, &Ia_fsub_STi_ST0 },
- /* DC EF */ { 0, &Ia_fsub_STi_ST0 },
- /* DC F0 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F1 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F2 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F3 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F4 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F5 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F6 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F7 */ { 0, &Ia_fdivr_STi_ST0 },
- /* DC F8 */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC F9 */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC FA */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC FB */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC FC */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC FD */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC FE */ { 0, &Ia_fdiv_STi_ST0 },
- /* DC FF */ { 0, &Ia_fdiv_STi_ST0 },
-
- // DD (modrm is outside 00h - BFh) (mod == 11)
- /* DD C0 */ { 0, &Ia_ffree_STi },
- /* DD C1 */ { 0, &Ia_ffree_STi },
- /* DD C2 */ { 0, &Ia_ffree_STi },
- /* DD C3 */ { 0, &Ia_ffree_STi },
- /* DD C4 */ { 0, &Ia_ffree_STi },
- /* DD C5 */ { 0, &Ia_ffree_STi },
- /* DD C6 */ { 0, &Ia_ffree_STi },
- /* DD C7 */ { 0, &Ia_ffree_STi },
- /* DD C8 */ { 0, &Ia_Invalid },
- /* DD C9 */ { 0, &Ia_Invalid },
- /* DD CA */ { 0, &Ia_Invalid },
- /* DD CB */ { 0, &Ia_Invalid },
- /* DD CC */ { 0, &Ia_Invalid },
- /* DD CD */ { 0, &Ia_Invalid },
- /* DD CE */ { 0, &Ia_Invalid },
- /* DD CF */ { 0, &Ia_Invalid },
- /* DD D0 */ { 0, &Ia_fst_STi },
- /* DD D1 */ { 0, &Ia_fst_STi },
- /* DD D2 */ { 0, &Ia_fst_STi },
- /* DD D3 */ { 0, &Ia_fst_STi },
- /* DD D4 */ { 0, &Ia_fst_STi },
- /* DD D5 */ { 0, &Ia_fst_STi },
- /* DD D6 */ { 0, &Ia_fst_STi },
- /* DD D7 */ { 0, &Ia_fst_STi },
- /* DD D8 */ { 0, &Ia_fstp_STi },
- /* DD D9 */ { 0, &Ia_fstp_STi },
- /* DD DA */ { 0, &Ia_fstp_STi },
- /* DD DB */ { 0, &Ia_fstp_STi },
- /* DD DC */ { 0, &Ia_fstp_STi },
- /* DD DD */ { 0, &Ia_fstp_STi },
- /* DD DE */ { 0, &Ia_fstp_STi },
- /* DD DF */ { 0, &Ia_fstp_STi },
- /* DD E0 */ { 0, &Ia_fucom_STi },
- /* DD E1 */ { 0, &Ia_fucom_STi },
- /* DD E2 */ { 0, &Ia_fucom_STi },
- /* DD E3 */ { 0, &Ia_fucom_STi },
- /* DD E4 */ { 0, &Ia_fucom_STi },
- /* DD E5 */ { 0, &Ia_fucom_STi },
- /* DD E6 */ { 0, &Ia_fucom_STi },
- /* DD E7 */ { 0, &Ia_fucom_STi },
- /* DD E8 */ { 0, &Ia_fucomp_STi },
- /* DD E9 */ { 0, &Ia_fucomp_STi },
- /* DD EA */ { 0, &Ia_fucomp_STi },
- /* DD EB */ { 0, &Ia_fucomp_STi },
- /* DD EC */ { 0, &Ia_fucomp_STi },
- /* DD ED */ { 0, &Ia_fucomp_STi },
- /* DD EE */ { 0, &Ia_fucomp_STi },
- /* DD EF */ { 0, &Ia_fucomp_STi },
- /* DD F0 */ { 0, &Ia_Invalid },
- /* DD F1 */ { 0, &Ia_Invalid },
- /* DD F2 */ { 0, &Ia_Invalid },
- /* DD F3 */ { 0, &Ia_Invalid },
- /* DD F4 */ { 0, &Ia_Invalid },
- /* DD F5 */ { 0, &Ia_Invalid },
- /* DD F6 */ { 0, &Ia_Invalid },
- /* DD F7 */ { 0, &Ia_Invalid },
- /* DD F8 */ { 0, &Ia_Invalid },
- /* DD F9 */ { 0, &Ia_Invalid },
- /* DD FA */ { 0, &Ia_Invalid },
- /* DD FB */ { 0, &Ia_Invalid },
- /* DD FC */ { 0, &Ia_Invalid },
- /* DD FD */ { 0, &Ia_Invalid },
- /* DD FE */ { 0, &Ia_Invalid },
- /* DD FF */ { 0, &Ia_Invalid },
-
- // DE (modrm is outside 00h - BFh) (mod == 11)
- /* DE C0 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C1 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C2 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C3 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C4 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C5 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C6 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C7 */ { 0, &Ia_faddp_STi_ST0 },
- /* DE C8 */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE C9 */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE CA */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE CB */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE CC */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE CD */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE CE */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE CF */ { 0, &Ia_fmulp_STi_ST0 },
- /* DE D0 */ { 0, &Ia_Invalid },
- /* DE D1 */ { 0, &Ia_Invalid },
- /* DE D2 */ { 0, &Ia_Invalid },
- /* DE D3 */ { 0, &Ia_Invalid },
- /* DE D4 */ { 0, &Ia_Invalid },
- /* DE D5 */ { 0, &Ia_Invalid },
- /* DE D6 */ { 0, &Ia_Invalid },
- /* DE D7 */ { 0, &Ia_Invalid },
- /* DE D8 */ { 0, &Ia_Invalid },
- /* DE D9 */ { 0, &Ia_fcompp },
- /* DE DA */ { 0, &Ia_Invalid },
- /* DE DB */ { 0, &Ia_Invalid },
- /* DE DC */ { 0, &Ia_Invalid },
- /* DE DD */ { 0, &Ia_Invalid },
- /* DE DE */ { 0, &Ia_Invalid },
- /* DE DF */ { 0, &Ia_Invalid },
- /* DE E0 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E1 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E2 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E3 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E4 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E5 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E6 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E7 */ { 0, &Ia_fsubrp_STi_ST0 },
- /* DE E8 */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE E9 */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE EA */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE EB */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE EC */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE ED */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE EE */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE EF */ { 0, &Ia_fsubp_STi_ST0 },
- /* DE F0 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F1 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F2 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F3 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F4 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F5 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F6 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F7 */ { 0, &Ia_fdivrp_STi_ST0 },
- /* DE F8 */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE F9 */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE FA */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE FB */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE FC */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE FD */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE FE */ { 0, &Ia_fdivp_STi_ST0 },
- /* DE FF */ { 0, &Ia_fdivp_STi_ST0 },
-
- // DF (modrm is outside 00h - BFh) (mod == 11)
- /* DF C0 */ { 0, &Ia_ffreep_STi }, // 287 compatibility opcode
- /* DF C1 */ { 0, &Ia_ffreep_STi },
- /* DF C2 */ { 0, &Ia_ffreep_STi },
- /* DF C3 */ { 0, &Ia_ffreep_STi },
- /* DF C4 */ { 0, &Ia_ffreep_STi },
- /* DF C5 */ { 0, &Ia_ffreep_STi },
- /* DF C6 */ { 0, &Ia_ffreep_STi },
- /* DF C7 */ { 0, &Ia_ffreep_STi },
- /* DF C8 */ { 0, &Ia_Invalid },
- /* DF C9 */ { 0, &Ia_Invalid },
- /* DF CA */ { 0, &Ia_Invalid },
- /* DF CB */ { 0, &Ia_Invalid },
- /* DF CC */ { 0, &Ia_Invalid },
- /* DF CD */ { 0, &Ia_Invalid },
- /* DF CE */ { 0, &Ia_Invalid },
- /* DF CF */ { 0, &Ia_Invalid },
- /* DF D0 */ { 0, &Ia_Invalid },
- /* DF D1 */ { 0, &Ia_Invalid },
- /* DF D2 */ { 0, &Ia_Invalid },
- /* DF D3 */ { 0, &Ia_Invalid },
- /* DF D4 */ { 0, &Ia_Invalid },
- /* DF D5 */ { 0, &Ia_Invalid },
- /* DF D6 */ { 0, &Ia_Invalid },
- /* DF D7 */ { 0, &Ia_Invalid },
- /* DF D8 */ { 0, &Ia_Invalid },
- /* DF D9 */ { 0, &Ia_Invalid },
- /* DF DA */ { 0, &Ia_Invalid },
- /* DF DB */ { 0, &Ia_Invalid },
- /* DF DC */ { 0, &Ia_Invalid },
- /* DF DD */ { 0, &Ia_Invalid },
- /* DF DE */ { 0, &Ia_Invalid },
- /* DF DF */ { 0, &Ia_Invalid },
- /* DF E0 */ { 0, &Ia_fnstsw_AX },
- /* DF E1 */ { 0, &Ia_Invalid },
- /* DF E2 */ { 0, &Ia_Invalid },
- /* DF E3 */ { 0, &Ia_Invalid },
- /* DF E4 */ { 0, &Ia_Invalid },
- /* DF E5 */ { 0, &Ia_Invalid },
- /* DF E6 */ { 0, &Ia_Invalid },
- /* DF E7 */ { 0, &Ia_Invalid },
- /* DF E8 */ { 0, &Ia_fucomip_ST0_STi },
- /* DF E9 */ { 0, &Ia_fucomip_ST0_STi },
- /* DF EA */ { 0, &Ia_fucomip_ST0_STi },
- /* DF EB */ { 0, &Ia_fucomip_ST0_STi },
- /* DF EC */ { 0, &Ia_fucomip_ST0_STi },
- /* DF ED */ { 0, &Ia_fucomip_ST0_STi },
- /* DF EE */ { 0, &Ia_fucomip_ST0_STi },
- /* DF EF */ { 0, &Ia_fucomip_ST0_STi },
- /* DF F0 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F1 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F2 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F3 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F4 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F5 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F6 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F7 */ { 0, &Ia_fcomip_ST0_STi },
- /* DF F8 */ { 0, &Ia_Invalid },
- /* DF F9 */ { 0, &Ia_Invalid },
- /* DF FA */ { 0, &Ia_Invalid },
- /* DF FB */ { 0, &Ia_Invalid },
- /* DF FC */ { 0, &Ia_Invalid },
- /* DF FD */ { 0, &Ia_Invalid },
- /* DF FE */ { 0, &Ia_Invalid },
- /* DF FF */ { 0, &Ia_Invalid },
-};
-
-/* ************************************************************************ */
-/* 3-byte opcode table (Table A-4, 0F 38) */
-
-static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f380x[16] = {
- /* 00 */ { GRPSSE(0f3800) },
- /* 01 */ { GRPSSE(0f3801) },
- /* 02 */ { GRPSSE(0f3802) },
- /* 03 */ { GRPSSE(0f3803) },
- /* 04 */ { GRPSSE(0f3804) },
- /* 05 */ { GRPSSE(0f3805) },
- /* 06 */ { GRPSSE(0f3806) },
- /* 07 */ { GRPSSE(0f3807) },
- /* 08 */ { GRPSSE(0f3808) },
- /* 09 */ { GRPSSE(0f3809) },
- /* 0A */ { GRPSSE(0f380a) },
- /* 0B */ { GRPSSE(0f380b) },
- /* 0C */ { 0, &Ia_Invalid },
- /* 0D */ { 0, &Ia_Invalid },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f381x[16] = {
- /* 00 */ { 0, &Ia_Invalid },
- /* 01 */ { 0, &Ia_Invalid },
- /* 02 */ { 0, &Ia_Invalid },
- /* 03 */ { 0, &Ia_Invalid },
- /* 04 */ { 0, &Ia_Invalid },
- /* 05 */ { 0, &Ia_Invalid },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_Invalid },
- /* 09 */ { 0, &Ia_Invalid },
- /* 0A */ { 0, &Ia_Invalid },
- /* 0B */ { 0, &Ia_Invalid },
- /* 0C */ { GRPSSE(0f381c) },
- /* 0D */ { GRPSSE(0f381d) },
- /* 0E */ { GRPSSE(0f381e) },
- /* 0F */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasm3ByteTableA4[16] = {
- /* 00 */ { GR3BOP(0f380x) },
- /* 01 */ { GR3BOP(0f381x) },
- /* 02 */ { 0, &Ia_Invalid },
- /* 03 */ { 0, &Ia_Invalid },
- /* 04 */ { 0, &Ia_Invalid },
- /* 05 */ { 0, &Ia_Invalid },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_Invalid },
- /* 09 */ { 0, &Ia_Invalid },
- /* 0A */ { 0, &Ia_Invalid },
- /* 0B */ { 0, &Ia_Invalid },
- /* 0C */ { 0, &Ia_Invalid },
- /* 0D */ { 0, &Ia_Invalid },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_Invalid }
-};
-
-/* ************************************************************************ */
-/* 3-byte opcode table (Table A-5, 0F 3A) */
-
-static BxDisasmOpcodeTable_t BxDisasm3ByteOp0f3a0x[16] = {
- /* 00 */ { 0, &Ia_Invalid },
- /* 01 */ { 0, &Ia_Invalid },
- /* 02 */ { 0, &Ia_Invalid },
- /* 03 */ { 0, &Ia_Invalid },
- /* 04 */ { 0, &Ia_Invalid },
- /* 05 */ { 0, &Ia_Invalid },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_Invalid },
- /* 09 */ { 0, &Ia_Invalid },
- /* 0A */ { 0, &Ia_Invalid },
- /* 0B */ { 0, &Ia_Invalid },
- /* 0C */ { 0, &Ia_Invalid },
- /* 0D */ { 0, &Ia_Invalid },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { GRPSSE(0f3a0f) }
-};
-
-static BxDisasmOpcodeTable_t BxDisasm3ByteTableA5[16] = {
- /* 00 */ { GR3BOP(0f3a0x) },
- /* 01 */ { 0, &Ia_Invalid },
- /* 02 */ { 0, &Ia_Invalid },
- /* 03 */ { 0, &Ia_Invalid },
- /* 04 */ { 0, &Ia_Invalid },
- /* 05 */ { 0, &Ia_Invalid },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_Invalid },
- /* 09 */ { 0, &Ia_Invalid },
- /* 0A */ { 0, &Ia_Invalid },
- /* 0B */ { 0, &Ia_Invalid },
- /* 0C */ { 0, &Ia_Invalid },
- /* 0D */ { 0, &Ia_Invalid },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_Invalid }
-};
-
-/* ************************************************************************ */
-/* 16-bit operand size */
-
-static BxDisasmOpcodeTable_t BxDisasmOpcodes16[256*2] = {
- // 256 entries for single byte opcodes
- /* 00 */ { 0, &Ia_addb_Eb_Gb },
- /* 01 */ { 0, &Ia_addw_Ew_Gw },
- /* 02 */ { 0, &Ia_addb_Gb_Eb },
- /* 03 */ { 0, &Ia_addw_Gw_Ew },
- /* 04 */ { 0, &Ia_addb_AL_Ib },
- /* 05 */ { 0, &Ia_addw_AX_Iw },
- /* 06 */ { 0, &Ia_pushw_ES },
- /* 07 */ { 0, &Ia_popw_ES },
- /* 08 */ { 0, &Ia_orb_Eb_Gb },
- /* 09 */ { 0, &Ia_orw_Ew_Gw },
- /* 0A */ { 0, &Ia_orb_Gb_Eb },
- /* 0B */ { 0, &Ia_orw_Gw_Ew },
- /* 0C */ { 0, &Ia_orb_AL_Ib },
- /* 0D */ { 0, &Ia_orw_AX_Iw },
- /* 0E */ { 0, &Ia_pushw_CS },
- /* 0F */ { 0, &Ia_error }, // 2 byte escape
- /* 10 */ { 0, &Ia_adcb_Eb_Gb },
- /* 11 */ { 0, &Ia_adcw_Ew_Gw },
- /* 12 */ { 0, &Ia_adcb_Gb_Eb },
- /* 13 */ { 0, &Ia_adcw_Gw_Ew },
- /* 14 */ { 0, &Ia_adcb_AL_Ib },
- /* 15 */ { 0, &Ia_adcw_AX_Iw },
- /* 16 */ { 0, &Ia_pushw_SS },
- /* 17 */ { 0, &Ia_popw_SS },
- /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
- /* 19 */ { 0, &Ia_sbbw_Ew_Gw },
- /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
- /* 1B */ { 0, &Ia_sbbw_Gw_Ew },
- /* 1C */ { 0, &Ia_sbbb_AL_Ib },
- /* 1D */ { 0, &Ia_sbbw_AX_Iw },
- /* 1E */ { 0, &Ia_pushw_DS },
- /* 1F */ { 0, &Ia_popw_DS },
- /* 20 */ { 0, &Ia_andb_Eb_Gb },
- /* 21 */ { 0, &Ia_andw_Ew_Gw },
- /* 22 */ { 0, &Ia_andb_Gb_Eb },
- /* 23 */ { 0, &Ia_andw_Gw_Ew },
- /* 24 */ { 0, &Ia_andb_AL_Ib },
- /* 25 */ { 0, &Ia_andw_AX_Iw },
- /* 26 */ { 0, &Ia_prefix_es }, // ES:
- /* 27 */ { 0, &Ia_daa },
- /* 28 */ { 0, &Ia_subb_Eb_Gb },
- /* 29 */ { 0, &Ia_subw_Ew_Gw },
- /* 2A */ { 0, &Ia_subb_Gb_Eb },
- /* 2B */ { 0, &Ia_subw_Gw_Ew },
- /* 2C */ { 0, &Ia_subb_AL_Ib },
- /* 2D */ { 0, &Ia_subw_AX_Iw },
- /* 2E */ { 0, &Ia_prefix_cs }, // CS:
- /* 2F */ { 0, &Ia_das },
- /* 30 */ { 0, &Ia_xorb_Eb_Gb },
- /* 31 */ { 0, &Ia_xorw_Ew_Gw },
- /* 32 */ { 0, &Ia_xorb_Gb_Eb },
- /* 33 */ { 0, &Ia_xorw_Gw_Ew },
- /* 34 */ { 0, &Ia_xorb_AL_Ib },
- /* 35 */ { 0, &Ia_xorw_AX_Iw },
- /* 36 */ { 0, &Ia_prefix_ss }, // SS:
- /* 37 */ { 0, &Ia_aaa },
- /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
- /* 39 */ { 0, &Ia_cmpw_Ew_Gw },
- /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
- /* 3B */ { 0, &Ia_cmpw_Gw_Ew },
- /* 3C */ { 0, &Ia_cmpb_AL_Ib },
- /* 3D */ { 0, &Ia_cmpw_AX_Iw },
- /* 3E */ { 0, &Ia_prefix_ds }, // DS:
- /* 3F */ { 0, &Ia_aas },
- /* 40 */ { 0, &Ia_incw_RX },
- /* 41 */ { 0, &Ia_incw_RX },
- /* 42 */ { 0, &Ia_incw_RX },
- /* 43 */ { 0, &Ia_incw_RX },
- /* 44 */ { 0, &Ia_incw_RX },
- /* 45 */ { 0, &Ia_incw_RX },
- /* 46 */ { 0, &Ia_incw_RX },
- /* 47 */ { 0, &Ia_incw_RX },
- /* 48 */ { 0, &Ia_decw_RX },
- /* 49 */ { 0, &Ia_decw_RX },
- /* 4A */ { 0, &Ia_decw_RX },
- /* 4B */ { 0, &Ia_decw_RX },
- /* 4C */ { 0, &Ia_decw_RX },
- /* 4D */ { 0, &Ia_decw_RX },
- /* 4E */ { 0, &Ia_decw_RX },
- /* 4F */ { 0, &Ia_decw_RX },
- /* 50 */ { 0, &Ia_pushw_RX },
- /* 51 */ { 0, &Ia_pushw_RX },
- /* 52 */ { 0, &Ia_pushw_RX },
- /* 53 */ { 0, &Ia_pushw_RX },
- /* 54 */ { 0, &Ia_pushw_RX },
- /* 55 */ { 0, &Ia_pushw_RX },
- /* 56 */ { 0, &Ia_pushw_RX },
- /* 57 */ { 0, &Ia_pushw_RX },
- /* 58 */ { 0, &Ia_popw_RX },
- /* 59 */ { 0, &Ia_popw_RX },
- /* 5A */ { 0, &Ia_popw_RX },
- /* 5B */ { 0, &Ia_popw_RX },
- /* 5C */ { 0, &Ia_popw_RX },
- /* 5D */ { 0, &Ia_popw_RX },
- /* 5E */ { 0, &Ia_popw_RX },
- /* 5F */ { 0, &Ia_popw_RX },
- /* 60 */ { 0, &Ia_pushaw },
- /* 61 */ { 0, &Ia_popaw },
- /* 62 */ { 0, &Ia_boundw_Gw_Ma },
- /* 63 */ { 0, &Ia_arpl_Ew_Rw },
- /* 64 */ { 0, &Ia_prefix_fs }, // FS:
- /* 65 */ { 0, &Ia_prefix_gs }, // GS:
- /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
- /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
- /* 68 */ { 0, &Ia_pushw_Iw },
- /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw },
- /* 6A */ { 0, &Ia_pushw_sIb },
- /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb },
- /* 6C */ { 0, &Ia_insb_Yb_DX },
- /* 6D */ { 0, &Ia_insw_Yw_DX },
- /* 6E */ { 0, &Ia_outsb_DX_Xb },
- /* 6F */ { 0, &Ia_outsw_DX_Xw },
- /* 70 */ { 0, &Ia_jo_Jb },
- /* 71 */ { 0, &Ia_jno_Jb },
- /* 72 */ { 0, &Ia_jb_Jb },
- /* 73 */ { 0, &Ia_jnb_Jb },
- /* 74 */ { 0, &Ia_jz_Jb },
- /* 75 */ { 0, &Ia_jnz_Jb },
- /* 76 */ { 0, &Ia_jbe_Jb },
- /* 77 */ { 0, &Ia_jnbe_Jb },
- /* 78 */ { 0, &Ia_js_Jb },
- /* 79 */ { 0, &Ia_jns_Jb },
- /* 7A */ { 0, &Ia_jp_Jb },
- /* 7B */ { 0, &Ia_jnp_Jb },
- /* 7C */ { 0, &Ia_jl_Jb },
- /* 7D */ { 0, &Ia_jnl_Jb },
- /* 7E */ { 0, &Ia_jle_Jb },
- /* 7F */ { 0, &Ia_jnle_Jb },
- /* 80 */ { GRPN(G1EbIb) },
- /* 81 */ { GRPN(G1EwIw) },
- /* 82 */ { GRPN(G1EbIb) },
- /* 83 */ { GRPN(G1EwIb) },
- /* 84 */ { 0, &Ia_testb_Eb_Gb },
- /* 85 */ { 0, &Ia_testw_Ew_Gw },
- /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
- /* 87 */ { 0, &Ia_xchgw_Ew_Gw },
- /* 88 */ { 0, &Ia_movb_Eb_Gb },
- /* 89 */ { 0, &Ia_movw_Ew_Gw },
- /* 8A */ { 0, &Ia_movb_Gb_Eb },
- /* 8B */ { 0, &Ia_movw_Gw_Ew },
- /* 8C */ { 0, &Ia_movw_Ew_Sw },
- /* 8D */ { 0, &Ia_leaw_Gw_Mw },
- /* 8E */ { 0, &Ia_movw_Sw_Ew },
- /* 8F */ { 0, &Ia_popw_Ew },
- /* 90 */ { 0, &Ia_nop },
- /* 91 */ { 0, &Ia_xchgw_RX_AX },
- /* 92 */ { 0, &Ia_xchgw_RX_AX },
- /* 93 */ { 0, &Ia_xchgw_RX_AX },
- /* 94 */ { 0, &Ia_xchgw_RX_AX },
- /* 95 */ { 0, &Ia_xchgw_RX_AX },
- /* 96 */ { 0, &Ia_xchgw_RX_AX },
- /* 97 */ { 0, &Ia_xchgw_RX_AX },
- /* 98 */ { 0, &Ia_cbw },
- /* 99 */ { 0, &Ia_cwd },
- /* 9A */ { 0, &Ia_lcall_Apw },
- /* 9B */ { 0, &Ia_fwait },
- /* 9C */ { 0, &Ia_pushfw },
- /* 9D */ { 0, &Ia_popfw },
- /* 9E */ { 0, &Ia_sahf },
- /* 9F */ { 0, &Ia_lahf },
- /* A0 */ { 0, &Ia_movb_AL_Ob },
- /* A1 */ { 0, &Ia_movw_AX_Ow },
- /* A0 */ { 0, &Ia_movb_Ob_AL },
- /* A1 */ { 0, &Ia_movw_Ow_AX },
- /* A4 */ { 0, &Ia_movsb_Yb_Xb },
- /* A5 */ { 0, &Ia_movsw_Yw_Xw },
- /* A6 */ { 0, &Ia_cmpsb_Yb_Xb },
- /* A7 */ { 0, &Ia_cmpsw_Yw_Xw },
- /* A8 */ { 0, &Ia_testb_AL_Ib },
- /* A9 */ { 0, &Ia_testw_AX_Iw },
- /* AA */ { 0, &Ia_stosb_Yb_AL },
- /* AB */ { 0, &Ia_stosw_Yw_AX },
- /* AC */ { 0, &Ia_lodsb_AL_Xb },
- /* AD */ { 0, &Ia_lodsw_AX_Xw },
- /* AE */ { 0, &Ia_scasb_Yb_AL },
- /* AF */ { 0, &Ia_scasw_Yw_AX },
- /* B0 */ { 0, &Ia_movb_R8_Ib },
- /* B1 */ { 0, &Ia_movb_R8_Ib },
- /* B2 */ { 0, &Ia_movb_R8_Ib },
- /* B3 */ { 0, &Ia_movb_R8_Ib },
- /* B4 */ { 0, &Ia_movb_R8_Ib },
- /* B5 */ { 0, &Ia_movb_R8_Ib },
- /* B6 */ { 0, &Ia_movb_R8_Ib },
- /* B7 */ { 0, &Ia_movb_R8_Ib },
- /* B8 */ { 0, &Ia_movw_RX_Iw },
- /* B9 */ { 0, &Ia_movw_RX_Iw },
- /* BA */ { 0, &Ia_movw_RX_Iw },
- /* BB */ { 0, &Ia_movw_RX_Iw },
- /* BC */ { 0, &Ia_movw_RX_Iw },
- /* BD */ { 0, &Ia_movw_RX_Iw },
- /* BE */ { 0, &Ia_movw_RX_Iw },
- /* BF */ { 0, &Ia_movw_RX_Iw },
- /* C0 */ { GRPN(G2Eb) },
- /* C1 */ { GRPN(G2Ew) },
- /* C2 */ { 0, &Ia_ret_Iw },
- /* C3 */ { 0, &Ia_ret },
- /* C4 */ { 0, &Ia_lesw_Gw_Mp },
- /* C5 */ { 0, &Ia_ldsw_Gw_Mp },
- /* C6 */ { 0, &Ia_movb_Eb_Ib },
- /* C7 */ { 0, &Ia_movw_Ew_Iw },
- /* C8 */ { 0, &Ia_enter },
- /* C9 */ { 0, &Ia_leave },
- /* CA */ { 0, &Ia_lret_Iw },
- /* CB */ { 0, &Ia_lret },
- /* CC */ { 0, &Ia_int3 },
- /* CD */ { 0, &Ia_int_Ib },
- /* CE */ { 0, &Ia_into },
- /* CF */ { 0, &Ia_iretw },
- /* D0 */ { GRPN(G2EbI1) },
- /* D1 */ { GRPN(G2EwI1) },
- /* D2 */ { GRPN(G2EbCL) },
- /* D3 */ { GRPN(G2EwCL) },
- /* D4 */ { 0, &Ia_aam },
- /* D5 */ { 0, &Ia_aad },
- /* D6 */ { 0, &Ia_salc },
- /* D7 */ { 0, &Ia_xlat },
- /* D8 */ { GRPFP(D8) },
- /* D9 */ { GRPFP(D9) },
- /* DA */ { GRPFP(DA) },
- /* DB */ { GRPFP(DB) },
- /* DC */ { GRPFP(DC) },
- /* DD */ { GRPFP(DD) },
- /* DE */ { GRPFP(DE) },
- /* DF */ { GRPFP(DF) },
- /* E0 */ { 0, &Ia_loopne_Jb },
- /* E1 */ { 0, &Ia_loope_Jb },
- /* E2 */ { 0, &Ia_loop_Jb },
- /* E3 */ { 0, &Ia_jcxz_Jb },
- /* E4 */ { 0, &Ia_inb_AL_Ib },
- /* E5 */ { 0, &Ia_inw_AX_Ib },
- /* E6 */ { 0, &Ia_outb_Ib_AL },
- /* E7 */ { 0, &Ia_outw_Ib_AX },
- /* E8 */ { 0, &Ia_call_Jw },
- /* E9 */ { 0, &Ia_jmp_Jw },
- /* EA */ { 0, &Ia_ljmp_Apw },
- /* EB */ { 0, &Ia_jmp_Jb },
- /* EC */ { 0, &Ia_inb_AL_DX },
- /* ED */ { 0, &Ia_inw_AX_DX },
- /* EE */ { 0, &Ia_outb_DX_AL },
- /* EF */ { 0, &Ia_outw_DX_AX },
- /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
- /* F1 */ { 0, &Ia_int1 },
- /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
- /* F3 */ { 0, &Ia_prefix_rep }, // REP:
- /* F4 */ { 0, &Ia_hlt },
- /* F5 */ { 0, &Ia_cmc },
- /* F6 */ { GRPN(G3Eb) },
- /* F7 */ { GRPN(G3Ew) },
- /* F8 */ { 0, &Ia_clc },
- /* F9 */ { 0, &Ia_stc },
- /* FA */ { 0, &Ia_cli },
- /* FB */ { 0, &Ia_sti },
- /* FC */ { 0, &Ia_cld },
- /* FD */ { 0, &Ia_std },
- /* FE */ { GRPN(G4) },
- /* FF */ { GRPN(G5w) },
-
- // 256 entries for two byte opcodes
- /* 0F 00 */ { GRPN(G6) },
- /* 0F 01 */ { GRPN(G7) },
- /* 0F 02 */ { 0, &Ia_larw_Gw_Ew },
- /* 0F 03 */ { 0, &Ia_lslw_Gw_Ew },
- /* 0F 04 */ { 0, &Ia_Invalid },
- /* 0F 05 */ { 0, &Ia_syscall },
- /* 0F 06 */ { 0, &Ia_clts },
- /* 0F 07 */ { 0, &Ia_sysret },
- /* 0F 08 */ { 0, &Ia_invd },
- /* 0F 09 */ { 0, &Ia_wbinvd },
- /* 0F 0A */ { 0, &Ia_Invalid },
- /* 0F 0B */ { 0, &Ia_ud2a },
- /* 0F 0C */ { 0, &Ia_Invalid },
- /* 0F 0D */ { 0, &Ia_prefetch }, // 3DNow!
- /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
- /* 0F 0F */ { GRP3DNOW },
- /* 0F 10 */ { GRPSSE(0f10) },
- /* 0F 11 */ { GRPSSE(0f11) },
- /* 0F 12 */ { GRPSSE(0f12) },
- /* 0F 13 */ { GRPSSE(0f13) },
- /* 0F 14 */ { GRPSSE(0f14) },
- /* 0F 15 */ { GRPSSE(0f15) },
- /* 0F 16 */ { GRPSSE(0f16) },
- /* 0F 17 */ { GRPSSE(0f17) },
- /* 0F 18 */ { GRPN(G16) },
- /* 0F 19 */ { 0, &Ia_Invalid },
- /* 0F 1A */ { 0, &Ia_Invalid },
- /* 0F 1B */ { 0, &Ia_Invalid },
- /* 0F 1C */ { 0, &Ia_Invalid },
- /* 0F 1D */ { 0, &Ia_Invalid },
- /* 0F 1E */ { 0, &Ia_Invalid },
- /* 0F 1F */ { 0, &Ia_multibyte_nop },
- /* 0F 20 */ { 0, &Ia_movl_Rd_Cd },
- /* 0F 21 */ { 0, &Ia_movl_Rd_Dd },
- /* 0F 22 */ { 0, &Ia_movl_Cd_Rd },
- /* 0F 23 */ { 0, &Ia_movl_Dd_Rd },
- /* 0F 24 */ { 0, &Ia_movl_Rd_Td },
- /* 0F 25 */ { 0, &Ia_Invalid },
- /* 0F 26 */ { 0, &Ia_movl_Td_Rd },
- /* 0F 27 */ { 0, &Ia_Invalid },
- /* 0F 28 */ { GRPSSE(0f28) },
- /* 0F 29 */ { GRPSSE(0f29) },
- /* 0F 2A */ { GRPSSE(0f2a) },
- /* 0F 2B */ { GRPSSE(0f2b) },
- /* 0F 2C */ { GRPSSE(0f2c) },
- /* 0F 2D */ { GRPSSE(0f2d) },
- /* 0F 2E */ { GRPSSE(0f2e) },
- /* 0F 2F */ { GRPSSE(0f2f) },
- /* 0F 30 */ { 0, &Ia_wrmsr },
- /* 0F 31 */ { 0, &Ia_rdtsc },
- /* 0F 32 */ { 0, &Ia_rdmsr },
- /* 0F 33 */ { 0, &Ia_rdpmc },
- /* 0F 34 */ { 0, &Ia_sysenter },
- /* 0F 35 */ { 0, &Ia_sysexit },
- /* 0F 36 */ { 0, &Ia_Invalid },
- /* 0F 37 */ { 0, &Ia_Invalid },
- /* 0F 38 */ { GR3BTAB(A4) },
- /* 0F 39 */ { 0, &Ia_Invalid },
- /* 0F 3A */ { GR3BTAB(A5) },
- /* 0F 3B */ { 0, &Ia_Invalid },
- /* 0F 3C */ { 0, &Ia_Invalid },
- /* 0F 3D */ { 0, &Ia_Invalid },
- /* 0F 3E */ { 0, &Ia_Invalid },
- /* 0F 3F */ { 0, &Ia_Invalid },
- /* 0F 40 */ { 0, &Ia_cmovow_Gw_Ew },
- /* 0F 41 */ { 0, &Ia_cmovnow_Gw_Ew },
- /* 0F 42 */ { 0, &Ia_cmovcw_Gw_Ew },
- /* 0F 43 */ { 0, &Ia_cmovncw_Gw_Ew },
- /* 0F 44 */ { 0, &Ia_cmovzw_Gw_Ew },
- /* 0F 45 */ { 0, &Ia_cmovnzw_Gw_Ew },
- /* 0F 46 */ { 0, &Ia_cmovnaw_Gw_Ew },
- /* 0F 47 */ { 0, &Ia_cmovaw_Gw_Ew },
- /* 0F 48 */ { 0, &Ia_cmovsw_Gw_Ew },
- /* 0F 49 */ { 0, &Ia_cmovnsw_Gw_Ew },
- /* 0F 4A */ { 0, &Ia_cmovpw_Gw_Ew },
- /* 0F 4B */ { 0, &Ia_cmovnpw_Gw_Ew },
- /* 0F 4C */ { 0, &Ia_cmovlw_Gw_Ew },
- /* 0F 4D */ { 0, &Ia_cmovnlw_Gw_Ew },
- /* 0F 4E */ { 0, &Ia_cmovngw_Gw_Ew },
- /* 0F 4F */ { 0, &Ia_cmovgw_Gw_Ew },
- /* 0F 50 */ { GRPSSE(0f50) },
- /* 0F 51 */ { GRPSSE(0f51) },
- /* 0F 52 */ { GRPSSE(0f52) },
- /* 0F 53 */ { GRPSSE(0f53) },
- /* 0F 54 */ { GRPSSE(0f54) },
- /* 0F 55 */ { GRPSSE(0f55) },
- /* 0F 56 */ { GRPSSE(0f56) },
- /* 0F 57 */ { GRPSSE(0f57) },
- /* 0F 58 */ { GRPSSE(0f58) },
- /* 0F 59 */ { GRPSSE(0f59) },
- /* 0F 5A */ { GRPSSE(0f5a) },
- /* 0F 5B */ { GRPSSE(0f5b) },
- /* 0F 5C */ { GRPSSE(0f5c) },
- /* 0F 5D */ { GRPSSE(0f5d) },
- /* 0F 5E */ { GRPSSE(0f5e) },
- /* 0F 5F */ { GRPSSE(0f5f) },
- /* 0F 60 */ { GRPSSE(0f60) },
- /* 0F 61 */ { GRPSSE(0f61) },
- /* 0F 62 */ { GRPSSE(0f62) },
- /* 0F 63 */ { GRPSSE(0f63) },
- /* 0F 64 */ { GRPSSE(0f64) },
- /* 0F 65 */ { GRPSSE(0f65) },
- /* 0F 66 */ { GRPSSE(0f66) },
- /* 0F 67 */ { GRPSSE(0f67) },
- /* 0F 68 */ { GRPSSE(0f68) },
- /* 0F 69 */ { GRPSSE(0f69) },
- /* 0F 6A */ { GRPSSE(0f6a) },
- /* 0F 6B */ { GRPSSE(0f6b) },
- /* 0F 6C */ { GRPSSE(0f6c) },
- /* 0F 6D */ { GRPSSE(0f6d) },
- /* 0F 6E */ { GRPSSE(0f6e) },
- /* 0F 6F */ { GRPSSE(0f6f) },
- /* 0F 70 */ { GRPSSE(0f70) },
- /* 0F 71 */ { GRPN(G12) },
- /* 0F 72 */ { GRPN(G13) },
- /* 0F 73 */ { GRPN(G14) },
- /* 0F 74 */ { GRPSSE(0f74) },
- /* 0F 75 */ { GRPSSE(0f75) },
- /* 0F 76 */ { GRPSSE(0f76) },
- /* 0F 77 */ { 0, &Ia_emms },
- /* 0F 78 */ { 0, &Ia_Invalid },
- /* 0F 79 */ { 0, &Ia_Invalid },
- /* 0F 7A */ { 0, &Ia_Invalid },
- /* 0F 7B */ { 0, &Ia_Invalid },
- /* 0F 7C */ { GRPSSE(0f7c) },
- /* 0F 7D */ { GRPSSE(0f7d) },
- /* 0F 7E */ { GRPSSE(0f7e) },
- /* 0F 7F */ { GRPSSE(0f7f) },
- /* 0F 80 */ { 0, &Ia_jo_Jw },
- /* 0F 81 */ { 0, &Ia_jno_Jw },
- /* 0F 82 */ { 0, &Ia_jb_Jw },
- /* 0F 83 */ { 0, &Ia_jnb_Jw },
- /* 0F 84 */ { 0, &Ia_jz_Jw },
- /* 0F 85 */ { 0, &Ia_jnz_Jw },
- /* 0F 86 */ { 0, &Ia_jbe_Jw },
- /* 0F 87 */ { 0, &Ia_jnbe_Jw },
- /* 0F 88 */ { 0, &Ia_js_Jw },
- /* 0F 89 */ { 0, &Ia_jns_Jw },
- /* 0F 8A */ { 0, &Ia_jp_Jw },
- /* 0F 8B */ { 0, &Ia_jnp_Jw },
- /* 0F 8C */ { 0, &Ia_jl_Jw },
- /* 0F 8D */ { 0, &Ia_jnl_Jw },
- /* 0F 8E */ { 0, &Ia_jle_Jw },
- /* 0F 8F */ { 0, &Ia_jnle_Jw },
- /* 0F 90 */ { 0, &Ia_seto_Eb },
- /* 0F 91 */ { 0, &Ia_setno_Eb },
- /* 0F 92 */ { 0, &Ia_setb_Eb },
- /* 0F 93 */ { 0, &Ia_setnb_Eb },
- /* 0F 94 */ { 0, &Ia_setz_Eb },
- /* 0F 95 */ { 0, &Ia_setnz_Eb },
- /* 0F 96 */ { 0, &Ia_setbe_Eb },
- /* 0F 97 */ { 0, &Ia_setnbe_Eb },
- /* 0F 98 */ { 0, &Ia_sets_Eb },
- /* 0F 99 */ { 0, &Ia_setns_Eb },
- /* 0F 9A */ { 0, &Ia_setp_Eb },
- /* 0F 9B */ { 0, &Ia_setnp_Eb },
- /* 0F 9C */ { 0, &Ia_setl_Eb },
- /* 0F 9D */ { 0, &Ia_setnl_Eb },
- /* 0F 9E */ { 0, &Ia_setle_Eb },
- /* 0F 9F */ { 0, &Ia_setnle_Eb },
- /* 0F A0 */ { 0, &Ia_pushw_FS },
- /* 0F A1 */ { 0, &Ia_popw_FS },
- /* 0F A2 */ { 0, &Ia_cpuid },
- /* 0F A3 */ { 0, &Ia_btw_Ew_Gw },
- /* 0F A4 */ { 0, &Ia_shldw_Ew_Gw_Ib },
- /* 0F A5 */ { 0, &Ia_shldw_Ew_Gw_CL },
- /* 0F A6 */ { 0, &Ia_Invalid },
- /* 0F A7 */ { 0, &Ia_Invalid },
- /* 0F A8 */ { 0, &Ia_pushw_GS },
- /* 0F A9 */ { 0, &Ia_popw_GS },
- /* 0F AA */ { 0, &Ia_rsm },
- /* 0F AB */ { 0, &Ia_btsw_Ew_Gw },
- /* 0F AC */ { 0, &Ia_shrdw_Ew_Gw_Ib },
- /* 0F AD */ { 0, &Ia_shrdw_Ew_Gw_CL },
- /* 0F AE */ { GRPN(G15) },
- /* 0F AF */ { 0, &Ia_imulw_Gw_Ew },
- /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
- /* 0F B1 */ { 0, &Ia_cmpxchgw_Ew_Gw },
- /* 0F B2 */ { 0, &Ia_lssw_Gw_Mp },
- /* 0F B3 */ { 0, &Ia_btrw_Ew_Gw },
- /* 0F B4 */ { 0, &Ia_lfsw_Gw_Mp },
- /* 0F B5 */ { 0, &Ia_lgsw_Gw_Mp },
- /* 0F B6 */ { 0, &Ia_movzbw_Gw_Eb },
- /* 0F B7 */ { 0, &Ia_movw_Gw_Ew },
- /* 0F B8 */ { 0, &Ia_Invalid },
- /* 0F B9 */ { 0, &Ia_ud2b },
- /* 0F BA */ { GRPN(G8EwIb) },
- /* 0F BB */ { 0, &Ia_btcw_Ew_Gw },
- /* 0F BC */ { 0, &Ia_bsfw_Gw_Ew },
- /* 0F BD */ { 0, &Ia_bsrw_Gw_Ew },
- /* 0F BE */ { 0, &Ia_movsbw_Gw_Eb },
- /* 0F BF */ { 0, &Ia_movw_Gw_Ew },
- /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
- /* 0F C0 */ { 0, &Ia_xaddw_Ew_Gw },
- /* 0F C2 */ { GRPSSE(0fc2) },
- /* 0F C3 */ { GRPSSE(0fc3) },
- /* 0F C4 */ { GRPSSE(0fc4) },
- /* 0F C5 */ { GRPSSE(0fc5) },
- /* 0F C6 */ { GRPSSE(0fc6) },
- /* 0F C7 */ { GRPN(G9) },
- /* 0F C8 */ { 0, &Ia_bswapl_ERX },
- /* 0F C9 */ { 0, &Ia_bswapl_ERX },
- /* 0F CA */ { 0, &Ia_bswapl_ERX },
- /* 0F CB */ { 0, &Ia_bswapl_ERX },
- /* 0F CC */ { 0, &Ia_bswapl_ERX },
- /* 0F CD */ { 0, &Ia_bswapl_ERX },
- /* 0F CE */ { 0, &Ia_bswapl_ERX },
- /* 0F CF */ { 0, &Ia_bswapl_ERX },
- /* 0F D0 */ { GRPSSE(0fd0) },
- /* 0F D1 */ { GRPSSE(0fd1) },
- /* 0F D2 */ { GRPSSE(0fd2) },
- /* 0F D3 */ { GRPSSE(0fd3) },
- /* 0F D4 */ { GRPSSE(0fd4) },
- /* 0F D5 */ { GRPSSE(0fd5) },
- /* 0F D6 */ { GRPSSE(0fd6) },
- /* 0F D7 */ { GRPSSE(0fd7) },
- /* 0F D8 */ { GRPSSE(0fd8) },
- /* 0F D9 */ { GRPSSE(0fd9) },
- /* 0F DA */ { GRPSSE(0fda) },
- /* 0F DB */ { GRPSSE(0fdb) },
- /* 0F DC */ { GRPSSE(0fdc) },
- /* 0F DD */ { GRPSSE(0fdd) },
- /* 0F DE */ { GRPSSE(0fde) },
- /* 0F DF */ { GRPSSE(0fdf) },
- /* 0F E0 */ { GRPSSE(0fe0) },
- /* 0F E1 */ { GRPSSE(0fe1) },
- /* 0F E2 */ { GRPSSE(0fe2) },
- /* 0F E3 */ { GRPSSE(0fe3) },
- /* 0F E4 */ { GRPSSE(0fe4) },
- /* 0F E5 */ { GRPSSE(0fe5) },
- /* 0F E6 */ { GRPSSE(0fe6) },
- /* 0F E7 */ { GRPSSE(0fe7) },
- /* 0F E8 */ { GRPSSE(0fe8) },
- /* 0F E9 */ { GRPSSE(0fe9) },
- /* 0F EA */ { GRPSSE(0fea) },
- /* 0F EB */ { GRPSSE(0feb) },
- /* 0F EC */ { GRPSSE(0fec) },
- /* 0F ED */ { GRPSSE(0fed) },
- /* 0F EE */ { GRPSSE(0fee) },
- /* 0F EF */ { GRPSSE(0fef) },
- /* 0F F0 */ { GRPSSE(0ff0) },
- /* 0F F1 */ { GRPSSE(0ff1) },
- /* 0F F2 */ { GRPSSE(0ff2) },
- /* 0F F3 */ { GRPSSE(0ff3) },
- /* 0F F4 */ { GRPSSE(0ff4) },
- /* 0F F5 */ { GRPSSE(0ff5) },
- /* 0F F6 */ { GRPSSE(0ff6) },
- /* 0F F7 */ { GRPSSE(0ff7) },
- /* 0F F8 */ { GRPSSE(0ff8) },
- /* 0F F9 */ { GRPSSE(0ff9) },
- /* 0F FA */ { GRPSSE(0ffa) },
- /* 0F FB */ { GRPSSE(0ffb) },
- /* 0F FC */ { GRPSSE(0ffc) },
- /* 0F FD */ { GRPSSE(0ffd) },
- /* 0F FE */ { GRPSSE(0ffe) },
- /* 0F FF */ { 0, &Ia_Invalid }
-};
-
-/* ************************************************************************ */
-/* 32-bit operand size */
-
-static BxDisasmOpcodeTable_t BxDisasmOpcodes32[256*2] = {
- // 256 entries for single byte opcodes
- /* 00 */ { 0, &Ia_addb_Eb_Gb },
- /* 01 */ { 0, &Ia_addl_Ed_Gd },
- /* 02 */ { 0, &Ia_addb_Gb_Eb },
- /* 03 */ { 0, &Ia_addl_Gd_Ed },
- /* 04 */ { 0, &Ia_addb_AL_Ib, },
- /* 05 */ { 0, &Ia_addl_EAX_Id, },
- /* 06 */ { 0, &Ia_pushl_ES },
- /* 07 */ { 0, &Ia_popl_ES },
- /* 08 */ { 0, &Ia_orb_Eb_Gb },
- /* 09 */ { 0, &Ia_orl_Ed_Gd },
- /* 0A */ { 0, &Ia_orb_Gb_Eb },
- /* 0B */ { 0, &Ia_orl_Gd_Ed },
- /* 0C */ { 0, &Ia_orb_AL_Ib },
- /* 0D */ { 0, &Ia_orl_EAX_Id },
- /* 0E */ { 0, &Ia_pushl_CS },
- /* 0F */ { 0, &Ia_error }, // 2 byte escape
- /* 10 */ { 0, &Ia_adcb_Eb_Gb },
- /* 11 */ { 0, &Ia_adcl_Ed_Gd },
- /* 12 */ { 0, &Ia_adcb_Gb_Eb },
- /* 13 */ { 0, &Ia_adcl_Gd_Ed },
- /* 14 */ { 0, &Ia_adcb_AL_Ib },
- /* 15 */ { 0, &Ia_adcl_EAX_Id },
- /* 16 */ { 0, &Ia_pushl_SS },
- /* 17 */ { 0, &Ia_popl_SS },
- /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
- /* 19 */ { 0, &Ia_sbbl_Ed_Gd },
- /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
- /* 1B */ { 0, &Ia_sbbl_Gd_Ed },
- /* 1C */ { 0, &Ia_sbbb_AL_Ib },
- /* 1D */ { 0, &Ia_sbbl_EAX_Id },
- /* 1E */ { 0, &Ia_pushl_DS },
- /* 1F */ { 0, &Ia_popl_DS },
- /* 20 */ { 0, &Ia_andb_Eb_Gb },
- /* 21 */ { 0, &Ia_andl_Ed_Gd },
- /* 22 */ { 0, &Ia_andb_Gb_Eb },
- /* 23 */ { 0, &Ia_andl_Gd_Ed },
- /* 24 */ { 0, &Ia_andb_AL_Ib },
- /* 25 */ { 0, &Ia_andl_EAX_Id },
- /* 26 */ { 0, &Ia_prefix_es }, // ES:
- /* 27 */ { 0, &Ia_daa },
- /* 28 */ { 0, &Ia_subb_Eb_Gb },
- /* 29 */ { 0, &Ia_subl_Ed_Gd },
- /* 2A */ { 0, &Ia_subb_Gb_Eb },
- /* 2B */ { 0, &Ia_subl_Gd_Ed },
- /* 2C */ { 0, &Ia_subb_AL_Ib },
- /* 2D */ { 0, &Ia_subl_EAX_Id },
- /* 2E */ { 0, &Ia_prefix_cs }, // CS:
- /* 2F */ { 0, &Ia_das },
- /* 30 */ { 0, &Ia_xorb_Eb_Gb },
- /* 31 */ { 0, &Ia_xorl_Ed_Gd },
- /* 32 */ { 0, &Ia_xorb_Gb_Eb },
- /* 33 */ { 0, &Ia_xorl_Gd_Ed },
- /* 34 */ { 0, &Ia_xorb_AL_Ib },
- /* 35 */ { 0, &Ia_xorl_EAX_Id },
- /* 36 */ { 0, &Ia_prefix_ss }, // SS:
- /* 37 */ { 0, &Ia_aaa },
- /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
- /* 39 */ { 0, &Ia_cmpl_Ed_Gd },
- /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
- /* 3B */ { 0, &Ia_cmpl_Gd_Ed },
- /* 3C */ { 0, &Ia_cmpb_AL_Ib },
- /* 3D */ { 0, &Ia_cmpl_EAX_Id },
- /* 3E */ { 0, &Ia_prefix_ds }, // DS:
- /* 3F */ { 0, &Ia_aas },
- /* 40 */ { 0, &Ia_incl_ERX },
- /* 41 */ { 0, &Ia_incl_ERX },
- /* 42 */ { 0, &Ia_incl_ERX },
- /* 43 */ { 0, &Ia_incl_ERX },
- /* 44 */ { 0, &Ia_incl_ERX },
- /* 45 */ { 0, &Ia_incl_ERX },
- /* 46 */ { 0, &Ia_incl_ERX },
- /* 47 */ { 0, &Ia_incl_ERX },
- /* 48 */ { 0, &Ia_decl_ERX },
- /* 49 */ { 0, &Ia_decl_ERX },
- /* 4A */ { 0, &Ia_decl_ERX },
- /* 4B */ { 0, &Ia_decl_ERX },
- /* 4C */ { 0, &Ia_decl_ERX },
- /* 4D */ { 0, &Ia_decl_ERX },
- /* 4E */ { 0, &Ia_decl_ERX },
- /* 4F */ { 0, &Ia_decl_ERX },
- /* 50 */ { 0, &Ia_pushl_ERX },
- /* 51 */ { 0, &Ia_pushl_ERX },
- /* 52 */ { 0, &Ia_pushl_ERX },
- /* 53 */ { 0, &Ia_pushl_ERX },
- /* 54 */ { 0, &Ia_pushl_ERX },
- /* 55 */ { 0, &Ia_pushl_ERX },
- /* 56 */ { 0, &Ia_pushl_ERX },
- /* 57 */ { 0, &Ia_pushl_ERX },
- /* 58 */ { 0, &Ia_popl_ERX },
- /* 59 */ { 0, &Ia_popl_ERX },
- /* 5A */ { 0, &Ia_popl_ERX },
- /* 5B */ { 0, &Ia_popl_ERX },
- /* 5C */ { 0, &Ia_popl_ERX },
- /* 5D */ { 0, &Ia_popl_ERX },
- /* 5E */ { 0, &Ia_popl_ERX },
- /* 5F */ { 0, &Ia_popl_ERX },
- /* 60 */ { 0, &Ia_pushal },
- /* 61 */ { 0, &Ia_popal },
- /* 62 */ { 0, &Ia_boundl_Gd_Ma },
- /* 63 */ { 0, &Ia_arpl_Ew_Rw },
- /* 64 */ { 0, &Ia_prefix_fs }, // FS:
- /* 65 */ { 0, &Ia_prefix_gs }, // GS:
- /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
- /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
- /* 68 */ { 0, &Ia_pushl_Id },
- /* 69 */ { 0, &Ia_imull_Gd_Ed_Id },
- /* 6A */ { 0, &Ia_pushl_sIb },
- /* 6B */ { 0, &Ia_imull_Gd_Ed_sIb },
- /* 6C */ { 0, &Ia_insb_Yb_DX },
- /* 6D */ { 0, &Ia_insl_Yd_DX },
- /* 6E */ { 0, &Ia_outsb_DX_Xb },
- /* 6F */ { 0, &Ia_outsl_DX_Xd },
- /* 70 */ { 0, &Ia_jo_Jb },
- /* 71 */ { 0, &Ia_jno_Jb },
- /* 72 */ { 0, &Ia_jb_Jb },
- /* 73 */ { 0, &Ia_jnb_Jb },
- /* 74 */ { 0, &Ia_jz_Jb },
- /* 75 */ { 0, &Ia_jnz_Jb },
- /* 76 */ { 0, &Ia_jbe_Jb },
- /* 77 */ { 0, &Ia_jnbe_Jb },
- /* 78 */ { 0, &Ia_js_Jb },
- /* 79 */ { 0, &Ia_jns_Jb },
- /* 7A */ { 0, &Ia_jp_Jb },
- /* 7B */ { 0, &Ia_jnp_Jb },
- /* 7C */ { 0, &Ia_jl_Jb },
- /* 7D */ { 0, &Ia_jnl_Jb },
- /* 7E */ { 0, &Ia_jle_Jb },
- /* 7F */ { 0, &Ia_jnle_Jb },
- /* 80 */ { GRPN(G1EbIb) },
- /* 81 */ { GRPN(G1EdId) },
- /* 82 */ { GRPN(G1EbIb) },
- /* 83 */ { GRPN(G1EdIb) },
- /* 84 */ { 0, &Ia_testb_Eb_Gb },
- /* 85 */ { 0, &Ia_testl_Ed_Gd },
- /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
- /* 87 */ { 0, &Ia_xchgl_Ed_Gd },
- /* 88 */ { 0, &Ia_movb_Eb_Gb },
- /* 89 */ { 0, &Ia_movl_Ed_Gd },
- /* 8A */ { 0, &Ia_movb_Gb_Eb },
- /* 8B */ { 0, &Ia_movl_Gd_Ed },
- /* 8C */ { 0, &Ia_movw_Ew_Sw },
- /* 8D */ { 0, &Ia_leal_Gd_Md },
- /* 8E */ { 0, &Ia_movw_Sw_Ew },
- /* 8F */ { 0, &Ia_popl_Ed },
- /* 90 */ { 0, &Ia_nop },
- /* 91 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 92 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 93 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 94 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 95 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 96 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 97 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 98 */ { 0, &Ia_cwde },
- /* 99 */ { 0, &Ia_cdq },
- /* 9A */ { 0, &Ia_lcall_Apd },
- /* 9B */ { 0, &Ia_fwait },
- /* 9C */ { 0, &Ia_pushfl },
- /* 9D */ { 0, &Ia_popfl },
- /* 9E */ { 0, &Ia_sahf },
- /* 9F */ { 0, &Ia_lahf },
- /* A0 */ { 0, &Ia_movb_AL_Ob },
- /* A1 */ { 0, &Ia_movl_EAX_Od },
- /* A0 */ { 0, &Ia_movb_Ob_AL },
- /* A1 */ { 0, &Ia_movl_Od_EAX },
- /* A4 */ { 0, &Ia_movsb_Yb_Xb },
- /* A5 */ { 0, &Ia_movsl_Yd_Xd },
- /* A6 */ { 0, &Ia_cmpsb_Yb_Xb },
- /* A7 */ { 0, &Ia_cmpsl_Yd_Xd },
- /* A8 */ { 0, &Ia_testb_AL_Ib },
- /* A9 */ { 0, &Ia_testl_EAX_Id },
- /* AA */ { 0, &Ia_stosb_Yb_AL },
- /* AB */ { 0, &Ia_stosl_Yd_EAX },
- /* AC */ { 0, &Ia_lodsb_AL_Xb },
- /* AD */ { 0, &Ia_lodsl_EAX_Xd },
- /* AE */ { 0, &Ia_scasb_Yb_AL },
- /* AF */ { 0, &Ia_scasl_Yd_EAX },
- /* B0 */ { 0, &Ia_movb_R8_Ib },
- /* B1 */ { 0, &Ia_movb_R8_Ib },
- /* B2 */ { 0, &Ia_movb_R8_Ib },
- /* B3 */ { 0, &Ia_movb_R8_Ib },
- /* B4 */ { 0, &Ia_movb_R8_Ib },
- /* B5 */ { 0, &Ia_movb_R8_Ib },
- /* B6 */ { 0, &Ia_movb_R8_Ib },
- /* B7 */ { 0, &Ia_movb_R8_Ib },
- /* B8 */ { 0, &Ia_movl_ERX_Id },
- /* B9 */ { 0, &Ia_movl_ERX_Id },
- /* BA */ { 0, &Ia_movl_ERX_Id },
- /* BB */ { 0, &Ia_movl_ERX_Id },
- /* BC */ { 0, &Ia_movl_ERX_Id },
- /* BD */ { 0, &Ia_movl_ERX_Id },
- /* BE */ { 0, &Ia_movl_ERX_Id },
- /* BF */ { 0, &Ia_movl_ERX_Id },
- /* C0 */ { GRPN(G2Eb) },
- /* C1 */ { GRPN(G2Ed) },
- /* C2 */ { 0, &Ia_ret_Iw },
- /* C3 */ { 0, &Ia_ret },
- /* C4 */ { 0, &Ia_lesl_Gd_Mp },
- /* C5 */ { 0, &Ia_ldsl_Gd_Mp },
- /* C6 */ { 0, &Ia_movb_Eb_Ib },
- /* C7 */ { 0, &Ia_movl_Ed_Id },
- /* C8 */ { 0, &Ia_enter },
- /* C9 */ { 0, &Ia_leave },
- /* CA */ { 0, &Ia_lret_Iw },
- /* CB */ { 0, &Ia_lret },
- /* CC */ { 0, &Ia_int3 },
- /* CD */ { 0, &Ia_int_Ib },
- /* CE */ { 0, &Ia_into },
- /* CF */ { 0, &Ia_iretl },
- /* D0 */ { GRPN(G2EbI1) },
- /* D1 */ { GRPN(G2EdI1) },
- /* D2 */ { GRPN(G2EbCL) },
- /* D3 */ { GRPN(G2EdCL) },
- /* D4 */ { 0, &Ia_aam },
- /* D5 */ { 0, &Ia_aad },
- /* D6 */ { 0, &Ia_salc },
- /* D7 */ { 0, &Ia_xlat },
- /* D8 */ { GRPFP(D8) },
- /* D9 */ { GRPFP(D9) },
- /* DA */ { GRPFP(DA) },
- /* DB */ { GRPFP(DB) },
- /* DC */ { GRPFP(DC) },
- /* DD */ { GRPFP(DD) },
- /* DE */ { GRPFP(DE) },
- /* DF */ { GRPFP(DF) },
- /* E0 */ { 0, &Ia_loopne_Jb },
- /* E1 */ { 0, &Ia_loope_Jb },
- /* E2 */ { 0, &Ia_loop_Jb },
- /* E3 */ { 0, &Ia_jcxz_Jb },
- /* E4 */ { 0, &Ia_inb_AL_Ib },
- /* E5 */ { 0, &Ia_inl_EAX_Ib },
- /* E6 */ { 0, &Ia_outb_Ib_AL },
- /* E7 */ { 0, &Ia_outl_Ib_EAX },
- /* E8 */ { 0, &Ia_call_Jd },
- /* E9 */ { 0, &Ia_jmp_Jd },
- /* EA */ { 0, &Ia_ljmp_Apd },
- /* EB */ { 0, &Ia_jmp_Jb },
- /* EC */ { 0, &Ia_inb_AL_DX },
- /* ED */ { 0, &Ia_inl_EAX_DX },
- /* EE */ { 0, &Ia_outb_DX_AL },
- /* EF */ { 0, &Ia_outl_DX_EAX },
- /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
- /* F1 */ { 0, &Ia_int1 },
- /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
- /* F3 */ { 0, &Ia_prefix_rep }, // REP:
- /* F4 */ { 0, &Ia_hlt },
- /* F5 */ { 0, &Ia_cmc },
- /* F6 */ { GRPN(G3Eb) },
- /* F7 */ { GRPN(G3Ed) },
- /* F8 */ { 0, &Ia_clc },
- /* F9 */ { 0, &Ia_stc },
- /* FA */ { 0, &Ia_cli },
- /* FB */ { 0, &Ia_sti },
- /* FC */ { 0, &Ia_cld },
- /* FD */ { 0, &Ia_std },
- /* FE */ { GRPN(G4) },
- /* FF */ { GRPN(G5d) },
-
- // 256 entries for two byte opcodes
- /* 0F 00 */ { GRPN(G6) },
- /* 0F 01 */ { GRPN(G7) },
- /* 0F 02 */ { 0, &Ia_larl_Gd_Ew },
- /* 0F 03 */ { 0, &Ia_lsll_Gd_Ew },
- /* 0F 04 */ { 0, &Ia_Invalid },
- /* 0F 05 */ { 0, &Ia_syscall },
- /* 0F 06 */ { 0, &Ia_clts },
- /* 0F 07 */ { 0, &Ia_sysret },
- /* 0F 08 */ { 0, &Ia_invd },
- /* 0F 09 */ { 0, &Ia_wbinvd },
- /* 0F 0A */ { 0, &Ia_Invalid },
- /* 0F 0B */ { 0, &Ia_ud2a },
- /* 0F 0C */ { 0, &Ia_Invalid },
- /* 0F 0D */ { 0, &Ia_prefetch }, // 3DNow!
- /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
- /* 0F 0F */ { GRP3DNOW },
- /* 0F 10 */ { GRPSSE(0f10) },
- /* 0F 11 */ { GRPSSE(0f11) },
- /* 0F 12 */ { GRPSSE(0f12) },
- /* 0F 13 */ { GRPSSE(0f13) },
- /* 0F 14 */ { GRPSSE(0f14) },
- /* 0F 15 */ { GRPSSE(0f15) },
- /* 0F 16 */ { GRPSSE(0f16) },
- /* 0F 17 */ { GRPSSE(0f17) },
- /* 0F 18 */ { GRPN(G16) },
- /* 0F 19 */ { 0, &Ia_Invalid },
- /* 0F 1A */ { 0, &Ia_Invalid },
- /* 0F 1B */ { 0, &Ia_Invalid },
- /* 0F 1C */ { 0, &Ia_Invalid },
- /* 0F 1D */ { 0, &Ia_Invalid },
- /* 0F 1E */ { 0, &Ia_Invalid },
- /* 0F 1F */ { 0, &Ia_multibyte_nop },
- /* 0F 20 */ { 0, &Ia_movl_Rd_Cd },
- /* 0F 21 */ { 0, &Ia_movl_Rd_Dd },
- /* 0F 22 */ { 0, &Ia_movl_Cd_Rd },
- /* 0F 23 */ { 0, &Ia_movl_Dd_Rd },
- /* 0F 24 */ { 0, &Ia_movl_Rd_Td },
- /* 0F 25 */ { 0, &Ia_Invalid },
- /* 0F 26 */ { 0, &Ia_movl_Td_Rd },
- /* 0F 27 */ { 0, &Ia_Invalid },
- /* 0F 28 */ { GRPSSE(0f28) },
- /* 0F 29 */ { GRPSSE(0f29) },
- /* 0F 2A */ { GRPSSE(0f2a) },
- /* 0F 2B */ { GRPSSE(0f2b) },
- /* 0F 2C */ { GRPSSE(0f2c) },
- /* 0F 2D */ { GRPSSE(0f2d) },
- /* 0F 2E */ { GRPSSE(0f2e) },
- /* 0F 2F */ { GRPSSE(0f2f) },
- /* 0F 30 */ { 0, &Ia_wrmsr },
- /* 0F 31 */ { 0, &Ia_rdtsc },
- /* 0F 32 */ { 0, &Ia_rdmsr },
- /* 0F 33 */ { 0, &Ia_rdpmc },
- /* 0F 34 */ { 0, &Ia_sysenter },
- /* 0F 35 */ { 0, &Ia_sysexit },
- /* 0F 36 */ { 0, &Ia_Invalid },
- /* 0F 37 */ { 0, &Ia_Invalid },
- /* 0F 38 */ { GR3BTAB(A4) },
- /* 0F 39 */ { 0, &Ia_Invalid },
- /* 0F 3A */ { GR3BTAB(A5) },
- /* 0F 3B */ { 0, &Ia_Invalid },
- /* 0F 3C */ { 0, &Ia_Invalid },
- /* 0F 3D */ { 0, &Ia_Invalid },
- /* 0F 3E */ { 0, &Ia_Invalid },
- /* 0F 3F */ { 0, &Ia_Invalid },
- /* 0F 40 */ { 0, &Ia_cmovol_Gd_Ed },
- /* 0F 41 */ { 0, &Ia_cmovnol_Gd_Ed },
- /* 0F 42 */ { 0, &Ia_cmovcl_Gd_Ed },
- /* 0F 43 */ { 0, &Ia_cmovncl_Gd_Ed },
- /* 0F 44 */ { 0, &Ia_cmovzl_Gd_Ed },
- /* 0F 45 */ { 0, &Ia_cmovnzl_Gd_Ed },
- /* 0F 46 */ { 0, &Ia_cmovnal_Gd_Ed },
- /* 0F 47 */ { 0, &Ia_cmoval_Gd_Ed },
- /* 0F 48 */ { 0, &Ia_cmovsl_Gd_Ed },
- /* 0F 49 */ { 0, &Ia_cmovnsl_Gd_Ed },
- /* 0F 4A */ { 0, &Ia_cmovpl_Gd_Ed },
- /* 0F 4B */ { 0, &Ia_cmovnpl_Gd_Ed },
- /* 0F 4C */ { 0, &Ia_cmovll_Gd_Ed },
- /* 0F 4D */ { 0, &Ia_cmovnll_Gd_Ed },
- /* 0F 4E */ { 0, &Ia_cmovngl_Gd_Ed },
- /* 0F 4F */ { 0, &Ia_cmovgl_Gd_Ed },
- /* 0F 50 */ { GRPSSE(0f50) },
- /* 0F 51 */ { GRPSSE(0f51) },
- /* 0F 52 */ { GRPSSE(0f52) },
- /* 0F 53 */ { GRPSSE(0f53) },
- /* 0F 54 */ { GRPSSE(0f54) },
- /* 0F 55 */ { GRPSSE(0f55) },
- /* 0F 56 */ { GRPSSE(0f56) },
- /* 0F 57 */ { GRPSSE(0f57) },
- /* 0F 58 */ { GRPSSE(0f58) },
- /* 0F 59 */ { GRPSSE(0f59) },
- /* 0F 5A */ { GRPSSE(0f5a) },
- /* 0F 5B */ { GRPSSE(0f5b) },
- /* 0F 5C */ { GRPSSE(0f5c) },
- /* 0F 5D */ { GRPSSE(0f5d) },
- /* 0F 5E */ { GRPSSE(0f5e) },
- /* 0F 5F */ { GRPSSE(0f5f) },
- /* 0F 60 */ { GRPSSE(0f60) },
- /* 0F 61 */ { GRPSSE(0f61) },
- /* 0F 62 */ { GRPSSE(0f62) },
- /* 0F 63 */ { GRPSSE(0f63) },
- /* 0F 64 */ { GRPSSE(0f64) },
- /* 0F 65 */ { GRPSSE(0f65) },
- /* 0F 66 */ { GRPSSE(0f66) },
- /* 0F 67 */ { GRPSSE(0f67) },
- /* 0F 68 */ { GRPSSE(0f68) },
- /* 0F 69 */ { GRPSSE(0f69) },
- /* 0F 6A */ { GRPSSE(0f6a) },
- /* 0F 6B */ { GRPSSE(0f6b) },
- /* 0F 6C */ { GRPSSE(0f6c) },
- /* 0F 6D */ { GRPSSE(0f6d) },
- /* 0F 6E */ { GRPSSE(0f6e) },
- /* 0F 6F */ { GRPSSE(0f6f) },
- /* 0F 70 */ { GRPSSE(0f70) },
- /* 0F 71 */ { GRPN(G12) },
- /* 0F 72 */ { GRPN(G13) },
- /* 0F 73 */ { GRPN(G14) },
- /* 0F 74 */ { GRPSSE(0f74) },
- /* 0F 75 */ { GRPSSE(0f75) },
- /* 0F 76 */ { GRPSSE(0f76) },
- /* 0F 77 */ { 0, &Ia_emms },
- /* 0F 78 */ { 0, &Ia_Invalid },
- /* 0F 79 */ { 0, &Ia_Invalid },
- /* 0F 7A */ { 0, &Ia_Invalid },
- /* 0F 7B */ { 0, &Ia_Invalid },
- /* 0F 7C */ { GRPSSE(0f7c) },
- /* 0F 7D */ { GRPSSE(0f7d) },
- /* 0F 7E */ { GRPSSE(0f7e) },
- /* 0F 7F */ { GRPSSE(0f7f) },
- /* 0F 80 */ { 0, &Ia_jo_Jd },
- /* 0F 81 */ { 0, &Ia_jno_Jd },
- /* 0F 82 */ { 0, &Ia_jb_Jd },
- /* 0F 83 */ { 0, &Ia_jnb_Jd },
- /* 0F 84 */ { 0, &Ia_jz_Jd },
- /* 0F 85 */ { 0, &Ia_jnz_Jd },
- /* 0F 86 */ { 0, &Ia_jbe_Jd },
- /* 0F 87 */ { 0, &Ia_jnbe_Jd },
- /* 0F 88 */ { 0, &Ia_js_Jd },
- /* 0F 89 */ { 0, &Ia_jns_Jd },
- /* 0F 8A */ { 0, &Ia_jp_Jd },
- /* 0F 8B */ { 0, &Ia_jnp_Jd },
- /* 0F 8C */ { 0, &Ia_jl_Jd },
- /* 0F 8D */ { 0, &Ia_jnl_Jd },
- /* 0F 8E */ { 0, &Ia_jle_Jd },
- /* 0F 8F */ { 0, &Ia_jnle_Jd },
- /* 0F 90 */ { 0, &Ia_seto_Eb },
- /* 0F 91 */ { 0, &Ia_setno_Eb },
- /* 0F 92 */ { 0, &Ia_setb_Eb },
- /* 0F 93 */ { 0, &Ia_setnb_Eb },
- /* 0F 94 */ { 0, &Ia_setz_Eb },
- /* 0F 95 */ { 0, &Ia_setnz_Eb },
- /* 0F 96 */ { 0, &Ia_setbe_Eb },
- /* 0F 97 */ { 0, &Ia_setnbe_Eb },
- /* 0F 98 */ { 0, &Ia_sets_Eb },
- /* 0F 99 */ { 0, &Ia_setns_Eb },
- /* 0F 9A */ { 0, &Ia_setp_Eb },
- /* 0F 9B */ { 0, &Ia_setnp_Eb },
- /* 0F 9C */ { 0, &Ia_setl_Eb },
- /* 0F 9D */ { 0, &Ia_setnl_Eb },
- /* 0F 9E */ { 0, &Ia_setle_Eb },
- /* 0F 9F */ { 0, &Ia_setnle_Eb },
- /* 0F A0 */ { 0, &Ia_pushl_FS },
- /* 0F A1 */ { 0, &Ia_popl_FS },
- /* 0F A2 */ { 0, &Ia_cpuid },
- /* 0F A3 */ { 0, &Ia_btl_Ed_Gd },
- /* 0F A4 */ { 0, &Ia_shldl_Ed_Gd_Ib },
- /* 0F A5 */ { 0, &Ia_shldl_Ed_Gd_CL },
- /* 0F A6 */ { 0, &Ia_Invalid },
- /* 0F A7 */ { 0, &Ia_Invalid },
- /* 0F A8 */ { 0, &Ia_pushl_GS },
- /* 0F A9 */ { 0, &Ia_popl_GS },
- /* 0F AA */ { 0, &Ia_rsm },
- /* 0F AB */ { 0, &Ia_btsl_Ed_Gd },
- /* 0F AC */ { 0, &Ia_shrdl_Ed_Gd_Ib },
- /* 0F AD */ { 0, &Ia_shrdl_Ed_Gd_CL },
- /* 0F AE */ { GRPN(G15) },
- /* 0F AF */ { 0, &Ia_imull_Gd_Ed },
- /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
- /* 0F B1 */ { 0, &Ia_cmpxchgl_Ed_Gd },
- /* 0F B2 */ { 0, &Ia_lssl_Gd_Mp },
- /* 0F B3 */ { 0, &Ia_btrl_Ed_Gd },
- /* 0F B4 */ { 0, &Ia_lfsl_Gd_Mp },
- /* 0F B5 */ { 0, &Ia_lgsl_Gd_Mp },
- /* 0F B6 */ { 0, &Ia_movzbl_Gd_Eb },
- /* 0F B7 */ { 0, &Ia_movzwl_Gd_Ew },
- /* 0F B8 */ { 0, &Ia_Invalid },
- /* 0F B9 */ { 0, &Ia_ud2b },
- /* 0F BA */ { GRPN(G8EdIb) },
- /* 0F BB */ { 0, &Ia_btcl_Ed_Gd },
- /* 0F BC */ { 0, &Ia_bsfl_Gd_Ed },
- /* 0F BD */ { 0, &Ia_bsrl_Gd_Ed },
- /* 0F BE */ { 0, &Ia_movsbl_Gd_Eb },
- /* 0F BF */ { 0, &Ia_movswl_Gd_Ew },
- /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
- /* 0F C0 */ { 0, &Ia_xaddl_Ed_Gd },
- /* 0F C2 */ { GRPSSE(0fc2) },
- /* 0F C3 */ { GRPSSE(0fc3) },
- /* 0F C4 */ { GRPSSE(0fc4) },
- /* 0F C5 */ { GRPSSE(0fc5) },
- /* 0F C6 */ { GRPSSE(0fc6) },
- /* 0F C7 */ { GRPN(G9) },
- /* 0F C8 */ { 0, &Ia_bswapl_ERX },
- /* 0F C9 */ { 0, &Ia_bswapl_ERX },
- /* 0F CA */ { 0, &Ia_bswapl_ERX },
- /* 0F CB */ { 0, &Ia_bswapl_ERX },
- /* 0F CC */ { 0, &Ia_bswapl_ERX },
- /* 0F CD */ { 0, &Ia_bswapl_ERX },
- /* 0F CE */ { 0, &Ia_bswapl_ERX },
- /* 0F CF */ { 0, &Ia_bswapl_ERX },
- /* 0F D0 */ { GRPSSE(0fd0) },
- /* 0F D1 */ { GRPSSE(0fd1) },
- /* 0F D2 */ { GRPSSE(0fd2) },
- /* 0F D3 */ { GRPSSE(0fd3) },
- /* 0F D4 */ { GRPSSE(0fd4) },
- /* 0F D5 */ { GRPSSE(0fd5) },
- /* 0F D6 */ { GRPSSE(0fd6) },
- /* 0F D7 */ { GRPSSE(0fd7) },
- /* 0F D8 */ { GRPSSE(0fd8) },
- /* 0F D9 */ { GRPSSE(0fd9) },
- /* 0F DA */ { GRPSSE(0fda) },
- /* 0F DB */ { GRPSSE(0fdb) },
- /* 0F DC */ { GRPSSE(0fdc) },
- /* 0F DD */ { GRPSSE(0fdd) },
- /* 0F DE */ { GRPSSE(0fde) },
- /* 0F DF */ { GRPSSE(0fdf) },
- /* 0F E0 */ { GRPSSE(0fe0) },
- /* 0F E1 */ { GRPSSE(0fe1) },
- /* 0F E2 */ { GRPSSE(0fe2) },
- /* 0F E3 */ { GRPSSE(0fe3) },
- /* 0F E4 */ { GRPSSE(0fe4) },
- /* 0F E5 */ { GRPSSE(0fe5) },
- /* 0F E6 */ { GRPSSE(0fe6) },
- /* 0F E7 */ { GRPSSE(0fe7) },
- /* 0F E8 */ { GRPSSE(0fe8) },
- /* 0F E9 */ { GRPSSE(0fe9) },
- /* 0F EA */ { GRPSSE(0fea) },
- /* 0F EB */ { GRPSSE(0feb) },
- /* 0F EC */ { GRPSSE(0fec) },
- /* 0F ED */ { GRPSSE(0fed) },
- /* 0F EE */ { GRPSSE(0fee) },
- /* 0F EF */ { GRPSSE(0fef) },
- /* 0F F0 */ { GRPSSE(0ff0) },
- /* 0F F1 */ { GRPSSE(0ff1) },
- /* 0F F2 */ { GRPSSE(0ff2) },
- /* 0F F3 */ { GRPSSE(0ff3) },
- /* 0F F4 */ { GRPSSE(0ff4) },
- /* 0F F5 */ { GRPSSE(0ff5) },
- /* 0F F6 */ { GRPSSE(0ff6) },
- /* 0F F7 */ { GRPSSE(0ff7) },
- /* 0F F8 */ { GRPSSE(0ff8) },
- /* 0F F9 */ { GRPSSE(0ff9) },
- /* 0F FA */ { GRPSSE(0ffa) },
- /* 0F FB */ { GRPSSE(0ffb) },
- /* 0F FC */ { GRPSSE(0ffc) },
- /* 0F FD */ { GRPSSE(0ffd) },
- /* 0F FE */ { GRPSSE(0ffe) },
- /* 0F FF */ { 0, &Ia_Invalid }
-};
-
-/* ************************************************************************ */
-/* Long mode */
-
-static BxDisasmOpcodeTable_t BxDisasmOpcodes64w[256*2] = {
- // 256 entries for single byte opcodes
- /* 00 */ { 0, &Ia_addb_Eb_Gb },
- /* 01 */ { 0, &Ia_addw_Ew_Gw },
- /* 02 */ { 0, &Ia_addb_Gb_Eb },
- /* 03 */ { 0, &Ia_addw_Gw_Ew },
- /* 04 */ { 0, &Ia_addb_AL_Ib },
- /* 05 */ { 0, &Ia_addw_AX_Iw },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_orb_Eb_Gb },
- /* 09 */ { 0, &Ia_orw_Ew_Gw },
- /* 0A */ { 0, &Ia_orb_Gb_Eb },
- /* 0B */ { 0, &Ia_orw_Gw_Ew },
- /* 0C */ { 0, &Ia_orb_AL_Ib },
- /* 0D */ { 0, &Ia_orw_AX_Iw },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_error }, // 2 byte escape
- /* 10 */ { 0, &Ia_adcb_Eb_Gb },
- /* 11 */ { 0, &Ia_adcw_Ew_Gw },
- /* 12 */ { 0, &Ia_adcb_Gb_Eb },
- /* 13 */ { 0, &Ia_adcw_Gw_Ew },
- /* 14 */ { 0, &Ia_adcb_AL_Ib },
- /* 15 */ { 0, &Ia_adcw_AX_Iw },
- /* 16 */ { 0, &Ia_Invalid },
- /* 17 */ { 0, &Ia_Invalid },
- /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
- /* 19 */ { 0, &Ia_sbbw_Ew_Gw },
- /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
- /* 1B */ { 0, &Ia_sbbw_Gw_Ew },
- /* 1C */ { 0, &Ia_sbbb_AL_Ib },
- /* 1D */ { 0, &Ia_sbbw_AX_Iw },
- /* 1E */ { 0, &Ia_Invalid },
- /* 1F */ { 0, &Ia_Invalid },
- /* 20 */ { 0, &Ia_andb_Eb_Gb },
- /* 21 */ { 0, &Ia_andw_Ew_Gw },
- /* 22 */ { 0, &Ia_andb_Gb_Eb },
- /* 23 */ { 0, &Ia_andw_Gw_Ew },
- /* 24 */ { 0, &Ia_andb_AL_Ib },
- /* 25 */ { 0, &Ia_andw_AX_Iw },
- /* 26 */ { 0, &Ia_prefix_es }, // ES:
- /* 27 */ { 0, &Ia_Invalid },
- /* 28 */ { 0, &Ia_subb_Eb_Gb },
- /* 29 */ { 0, &Ia_subw_Ew_Gw },
- /* 2A */ { 0, &Ia_subb_Gb_Eb },
- /* 2B */ { 0, &Ia_subw_Gw_Ew },
- /* 2C */ { 0, &Ia_subb_AL_Ib },
- /* 2D */ { 0, &Ia_subw_AX_Iw },
- /* 2E */ { 0, &Ia_prefix_cs }, // CS:
- /* 2F */ { 0, &Ia_Invalid },
- /* 30 */ { 0, &Ia_xorb_Eb_Gb },
- /* 31 */ { 0, &Ia_xorw_Ew_Gw },
- /* 32 */ { 0, &Ia_xorb_Gb_Eb },
- /* 33 */ { 0, &Ia_xorw_Gw_Ew },
- /* 34 */ { 0, &Ia_xorb_AL_Ib },
- /* 35 */ { 0, &Ia_xorw_AX_Iw },
- /* 36 */ { 0, &Ia_prefix_ss }, // SS:
- /* 37 */ { 0, &Ia_Invalid },
- /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
- /* 39 */ { 0, &Ia_cmpw_Ew_Gw },
- /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
- /* 3B */ { 0, &Ia_cmpw_Gw_Ew },
- /* 3C */ { 0, &Ia_cmpb_AL_Ib },
- /* 3D */ { 0, &Ia_cmpw_AX_Iw },
- /* 3E */ { 0, &Ia_prefix_ds }, // DS:
- /* 3F */ { 0, &Ia_Invalid },
- /* 40 */ { 0, &Ia_prefix_rex }, // REX:
- /* 41 */ { 0, &Ia_prefix_rex }, // REX:
- /* 42 */ { 0, &Ia_prefix_rex }, // REX:
- /* 43 */ { 0, &Ia_prefix_rex }, // REX:
- /* 44 */ { 0, &Ia_prefix_rex }, // REX:
- /* 45 */ { 0, &Ia_prefix_rex }, // REX:
- /* 46 */ { 0, &Ia_prefix_rex }, // REX:
- /* 47 */ { 0, &Ia_prefix_rex }, // REX:
- /* 48 */ { 0, &Ia_prefix_rex }, // REX:
- /* 49 */ { 0, &Ia_prefix_rex }, // REX:
- /* 4A */ { 0, &Ia_prefix_rex }, // REX:
- /* 4B */ { 0, &Ia_prefix_rex }, // REX:
- /* 4C */ { 0, &Ia_prefix_rex }, // REX:
- /* 4D */ { 0, &Ia_prefix_rex }, // REX:
- /* 4E */ { 0, &Ia_prefix_rex }, // REX:
- /* 4F */ { 0, &Ia_prefix_rex }, // REX:
- /* 50 */ { 0, &Ia_pushw_RX },
- /* 51 */ { 0, &Ia_pushw_RX },
- /* 52 */ { 0, &Ia_pushw_RX },
- /* 53 */ { 0, &Ia_pushw_RX },
- /* 54 */ { 0, &Ia_pushw_RX },
- /* 55 */ { 0, &Ia_pushw_RX },
- /* 56 */ { 0, &Ia_pushw_RX },
- /* 57 */ { 0, &Ia_pushw_RX },
- /* 58 */ { 0, &Ia_popw_RX },
- /* 59 */ { 0, &Ia_popw_RX },
- /* 5A */ { 0, &Ia_popw_RX },
- /* 5B */ { 0, &Ia_popw_RX },
- /* 5C */ { 0, &Ia_popw_RX },
- /* 5D */ { 0, &Ia_popw_RX },
- /* 5E */ { 0, &Ia_popw_RX },
- /* 5F */ { 0, &Ia_popw_RX },
- /* 60 */ { 0, &Ia_Invalid },
- /* 61 */ { 0, &Ia_Invalid },
- /* 62 */ { 0, &Ia_Invalid },
- /* 63 */ { 0, &Ia_movw_Gw_Ew },
- /* 64 */ { 0, &Ia_prefix_fs }, // FS:
- /* 65 */ { 0, &Ia_prefix_gs }, // GS:
- /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
- /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
- /* 68 */ { 0, &Ia_pushw_Iw },
- /* 69 */ { 0, &Ia_imulw_Gw_Ew_Iw },
- /* 6A */ { 0, &Ia_pushw_sIb },
- /* 6B */ { 0, &Ia_imulw_Gw_Ew_sIb },
- /* 6C */ { 0, &Ia_insb_Yb_DX },
- /* 6D */ { 0, &Ia_insw_Yw_DX },
- /* 6E */ { 0, &Ia_outsb_DX_Xb },
- /* 6F */ { 0, &Ia_outsw_DX_Xw },
- /* 70 */ { 0, &Ia_jo_Jb },
- /* 71 */ { 0, &Ia_jno_Jb },
- /* 72 */ { 0, &Ia_jb_Jb },
- /* 73 */ { 0, &Ia_jnb_Jb },
- /* 74 */ { 0, &Ia_jz_Jb },
- /* 75 */ { 0, &Ia_jnz_Jb },
- /* 76 */ { 0, &Ia_jbe_Jb },
- /* 77 */ { 0, &Ia_jnbe_Jb },
- /* 78 */ { 0, &Ia_js_Jb },
- /* 79 */ { 0, &Ia_jns_Jb },
- /* 7A */ { 0, &Ia_jp_Jb },
- /* 7B */ { 0, &Ia_jnp_Jb },
- /* 7C */ { 0, &Ia_jl_Jb },
- /* 7D */ { 0, &Ia_jnl_Jb },
- /* 7E */ { 0, &Ia_jle_Jb },
- /* 7F */ { 0, &Ia_jnle_Jb },
- /* 80 */ { GRPN(G1EbIb) },
- /* 81 */ { GRPN(G1EwIw) },
- /* 82 */ { 9, &Ia_Invalid },
- /* 83 */ { GRPN(G1EwIb) },
- /* 84 */ { 0, &Ia_testb_Eb_Gb },
- /* 85 */ { 0, &Ia_testw_Ew_Gw },
- /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
- /* 87 */ { 0, &Ia_xchgw_Ew_Gw },
- /* 88 */ { 0, &Ia_movb_Eb_Gb },
- /* 89 */ { 0, &Ia_movw_Ew_Gw },
- /* 8A */ { 0, &Ia_movb_Gb_Eb },
- /* 8B */ { 0, &Ia_movw_Gw_Ew },
- /* 8C */ { 0, &Ia_movw_Ew_Sw },
- /* 8D */ { 0, &Ia_leaw_Gw_Mw },
- /* 8E */ { 0, &Ia_movw_Sw_Ew },
- /* 8F */ { 0, &Ia_popw_Ew },
- /* 90 */ { 0, &Ia_xchgw_RX_AX }, // handle XCHG R8w, AX
- /* 91 */ { 0, &Ia_xchgw_RX_AX },
- /* 92 */ { 0, &Ia_xchgw_RX_AX },
- /* 93 */ { 0, &Ia_xchgw_RX_AX },
- /* 94 */ { 0, &Ia_xchgw_RX_AX },
- /* 95 */ { 0, &Ia_xchgw_RX_AX },
- /* 96 */ { 0, &Ia_xchgw_RX_AX },
- /* 97 */ { 0, &Ia_xchgw_RX_AX },
- /* 98 */ { 0, &Ia_cbw },
- /* 99 */ { 0, &Ia_cwd },
- /* 9A */ { 0, &Ia_Invalid },
- /* 9B */ { 0, &Ia_fwait },
- /* 9C */ { 0, &Ia_pushfw },
- /* 9D */ { 0, &Ia_popfw },
- /* 9E */ { 0, &Ia_sahf },
- /* 9F */ { 0, &Ia_lahf },
- /* A0 */ { 0, &Ia_movb_AL_Ob },
- /* A1 */ { 0, &Ia_movw_AX_Ow },
- /* A0 */ { 0, &Ia_movb_Ob_AL },
- /* A1 */ { 0, &Ia_movw_Ow_AX },
- /* A4 */ { 0, &Ia_movsb_Yb_Xb },
- /* A5 */ { 0, &Ia_movsw_Yw_Xw },
- /* A6 */ { 0, &Ia_cmpsb_Yb_Xb },
- /* A7 */ { 0, &Ia_cmpsw_Yw_Xw },
- /* A8 */ { 0, &Ia_testb_AL_Ib },
- /* A9 */ { 0, &Ia_testw_AX_Iw },
- /* AA */ { 0, &Ia_stosb_Yb_AL },
- /* AB */ { 0, &Ia_stosw_Yw_AX },
- /* AC */ { 0, &Ia_lodsb_AL_Xb },
- /* AD */ { 0, &Ia_lodsw_AX_Xw },
- /* AE */ { 0, &Ia_scasb_Yb_AL },
- /* AF */ { 0, &Ia_scasw_Yw_AX },
- /* B0 */ { 0, &Ia_movb_R8_Ib },
- /* B1 */ { 0, &Ia_movb_R8_Ib },
- /* B2 */ { 0, &Ia_movb_R8_Ib },
- /* B3 */ { 0, &Ia_movb_R8_Ib },
- /* B4 */ { 0, &Ia_movb_R8_Ib },
- /* B5 */ { 0, &Ia_movb_R8_Ib },
- /* B6 */ { 0, &Ia_movb_R8_Ib },
- /* B7 */ { 0, &Ia_movb_R8_Ib },
- /* B8 */ { 0, &Ia_movw_RX_Iw },
- /* B9 */ { 0, &Ia_movw_RX_Iw },
- /* BA */ { 0, &Ia_movw_RX_Iw },
- /* BB */ { 0, &Ia_movw_RX_Iw },
- /* BC */ { 0, &Ia_movw_RX_Iw },
- /* BD */ { 0, &Ia_movw_RX_Iw },
- /* BE */ { 0, &Ia_movw_RX_Iw },
- /* BF */ { 0, &Ia_movw_RX_Iw },
- /* C0 */ { GRPN(G2Eb) },
- /* C1 */ { GRPN(G2Ew) },
- /* C2 */ { 0, &Ia_ret_Iw },
- /* C3 */ { 0, &Ia_ret },
- /* C4 */ { 0, &Ia_Invalid },
- /* C5 */ { 0, &Ia_Invalid },
- /* C6 */ { 0, &Ia_movb_Eb_Ib },
- /* C7 */ { 0, &Ia_movw_Ew_Iw },
- /* C8 */ { 0, &Ia_enter },
- /* C9 */ { 0, &Ia_leave },
- /* CA */ { 0, &Ia_lret_Iw },
- /* CB */ { 0, &Ia_lret },
- /* CC */ { 0, &Ia_int3 },
- /* CD */ { 0, &Ia_int_Ib },
- /* CE */ { 0, &Ia_Invalid },
- /* CF */ { 0, &Ia_iretw },
- /* D0 */ { GRPN(G2EbI1) },
- /* D1 */ { GRPN(G2EwI1) },
- /* D2 */ { GRPN(G2EbCL) },
- /* D3 */ { GRPN(G2EwCL) },
- /* D4 */ { 0, &Ia_Invalid },
- /* D5 */ { 0, &Ia_Invalid },
- /* D6 */ { 0, &Ia_Invalid },
- /* D7 */ { 0, &Ia_xlat },
- /* D8 */ { GRPFP(D8) },
- /* D9 */ { GRPFP(D9) },
- /* DA */ { GRPFP(DA) },
- /* DB */ { GRPFP(DB) },
- /* DC */ { GRPFP(DC) },
- /* DD */ { GRPFP(DD) },
- /* DE */ { GRPFP(DE) },
- /* DF */ { GRPFP(DF) },
- /* E0 */ { 0, &Ia_loopne_Jb },
- /* E1 */ { 0, &Ia_loope_Jb },
- /* E2 */ { 0, &Ia_loop_Jb },
- /* E3 */ { 0, &Ia_jrcxz_Jb },
- /* E4 */ { 0, &Ia_inb_AL_Ib },
- /* E5 */ { 0, &Ia_inw_AX_Ib },
- /* E6 */ { 0, &Ia_outb_Ib_AL },
- /* E7 */ { 0, &Ia_outw_Ib_AX },
- /* E8 */ { 0, &Ia_call_Jd },
- /* E9 */ { 0, &Ia_jmp_Jd },
- /* EA */ { 0, &Ia_Invalid },
- /* EB */ { 0, &Ia_jmp_Jb },
- /* EC */ { 0, &Ia_inb_AL_DX },
- /* ED */ { 0, &Ia_inw_AX_DX },
- /* EE */ { 0, &Ia_outb_DX_AL },
- /* EF */ { 0, &Ia_outw_DX_AX },
- /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
- /* F1 */ { 0, &Ia_int1 },
- /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
- /* F3 */ { 0, &Ia_prefix_rep }, // REP:
- /* F4 */ { 0, &Ia_hlt },
- /* F5 */ { 0, &Ia_cmc },
- /* F6 */ { GRPN(G3Eb) },
- /* F7 */ { GRPN(G3Ew) },
- /* F8 */ { 0, &Ia_clc },
- /* F9 */ { 0, &Ia_stc },
- /* FA */ { 0, &Ia_cli },
- /* FB */ { 0, &Ia_sti },
- /* FC */ { 0, &Ia_cld },
- /* FD */ { 0, &Ia_std },
- /* FE */ { GRPN(G4) },
- /* FF */ { GRPN(G5w) },
-
- // 256 entries for two byte opcodes
- /* 0F 00 */ { GRPN(G6) },
- /* 0F 01 */ { GRPN(G7) },
- /* 0F 02 */ { 0, &Ia_larw_Gw_Ew },
- /* 0F 03 */ { 0, &Ia_lslw_Gw_Ew },
- /* 0F 04 */ { 0, &Ia_Invalid },
- /* 0F 05 */ { 0, &Ia_syscall },
- /* 0F 06 */ { 0, &Ia_clts },
- /* 0F 07 */ { 0, &Ia_sysret },
- /* 0F 08 */ { 0, &Ia_invd },
- /* 0F 09 */ { 0, &Ia_wbinvd },
- /* 0F 0A */ { 0, &Ia_Invalid },
- /* 0F 0B */ { 0, &Ia_ud2a },
- /* 0F 0C */ { 0, &Ia_Invalid },
- /* 0F 0D */ { 0, &Ia_prefetch }, // 3DNow!
- /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
- /* 0F 0F */ { GRP3DNOW },
- /* 0F 10 */ { GRPSSE(0f10) },
- /* 0F 11 */ { GRPSSE(0f11) },
- /* 0F 12 */ { GRPSSE(0f12) },
- /* 0F 13 */ { GRPSSE(0f13) },
- /* 0F 14 */ { GRPSSE(0f14) },
- /* 0F 15 */ { GRPSSE(0f15) },
- /* 0F 16 */ { GRPSSE(0f16) },
- /* 0F 17 */ { GRPSSE(0f17) },
- /* 0F 18 */ { GRPN(G16) },
- /* 0F 19 */ { 0, &Ia_Invalid },
- /* 0F 1A */ { 0, &Ia_Invalid },
- /* 0F 1B */ { 0, &Ia_Invalid },
- /* 0F 1C */ { 0, &Ia_Invalid },
- /* 0F 1D */ { 0, &Ia_Invalid },
- /* 0F 1E */ { 0, &Ia_Invalid },
- /* 0F 1F */ { 0, &Ia_multibyte_nop },
- /* 0F 20 */ { 0, &Ia_movq_Rq_Cq },
- /* 0F 21 */ { 0, &Ia_movq_Rq_Dq },
- /* 0F 22 */ { 0, &Ia_movq_Cq_Rq },
- /* 0F 23 */ { 0, &Ia_movq_Dq_Rq },
- /* 0F 24 */ { 0, &Ia_Invalid },
- /* 0F 25 */ { 0, &Ia_Invalid },
- /* 0F 26 */ { 0, &Ia_Invalid },
- /* 0F 27 */ { 0, &Ia_Invalid },
- /* 0F 28 */ { GRPSSE(0f28) },
- /* 0F 29 */ { GRPSSE(0f29) },
- /* 0F 2A */ { GRPSSE(0f2a) },
- /* 0F 2B */ { GRPSSE(0f2b) },
- /* 0F 2C */ { GRPSSE(0f2c) },
- /* 0F 2D */ { GRPSSE(0f2d) },
- /* 0F 2E */ { GRPSSE(0f2e) },
- /* 0F 2F */ { GRPSSE(0f2f) },
- /* 0F 30 */ { 0, &Ia_wrmsr },
- /* 0F 31 */ { 0, &Ia_rdtsc },
- /* 0F 32 */ { 0, &Ia_rdmsr },
- /* 0F 33 */ { 0, &Ia_rdpmc },
- /* 0F 34 */ { 0, &Ia_sysenter },
- /* 0F 35 */ { 0, &Ia_sysexit },
- /* 0F 36 */ { 0, &Ia_Invalid },
- /* 0F 37 */ { 0, &Ia_Invalid },
- /* 0F 38 */ { GR3BTAB(A4) },
- /* 0F 39 */ { 0, &Ia_Invalid },
- /* 0F 3A */ { GR3BTAB(A5) },
- /* 0F 3B */ { 0, &Ia_Invalid },
- /* 0F 3C */ { 0, &Ia_Invalid },
- /* 0F 3D */ { 0, &Ia_Invalid },
- /* 0F 3E */ { 0, &Ia_Invalid },
- /* 0F 3F */ { 0, &Ia_Invalid },
- /* 0F 40 */ { 0, &Ia_cmovow_Gw_Ew },
- /* 0F 41 */ { 0, &Ia_cmovnow_Gw_Ew },
- /* 0F 42 */ { 0, &Ia_cmovcw_Gw_Ew },
- /* 0F 43 */ { 0, &Ia_cmovncw_Gw_Ew },
- /* 0F 44 */ { 0, &Ia_cmovzw_Gw_Ew },
- /* 0F 45 */ { 0, &Ia_cmovnzw_Gw_Ew },
- /* 0F 46 */ { 0, &Ia_cmovnaw_Gw_Ew },
- /* 0F 47 */ { 0, &Ia_cmovaw_Gw_Ew },
- /* 0F 48 */ { 0, &Ia_cmovsw_Gw_Ew },
- /* 0F 49 */ { 0, &Ia_cmovnsw_Gw_Ew },
- /* 0F 4A */ { 0, &Ia_cmovpw_Gw_Ew },
- /* 0F 4B */ { 0, &Ia_cmovnpw_Gw_Ew },
- /* 0F 4C */ { 0, &Ia_cmovlw_Gw_Ew },
- /* 0F 4D */ { 0, &Ia_cmovnlw_Gw_Ew },
- /* 0F 4E */ { 0, &Ia_cmovngw_Gw_Ew },
- /* 0F 4F */ { 0, &Ia_cmovgw_Gw_Ew },
- /* 0F 50 */ { GRPSSE(0f50) },
- /* 0F 51 */ { GRPSSE(0f51) },
- /* 0F 52 */ { GRPSSE(0f52) },
- /* 0F 53 */ { GRPSSE(0f53) },
- /* 0F 54 */ { GRPSSE(0f54) },
- /* 0F 55 */ { GRPSSE(0f55) },
- /* 0F 56 */ { GRPSSE(0f56) },
- /* 0F 57 */ { GRPSSE(0f57) },
- /* 0F 58 */ { GRPSSE(0f58) },
- /* 0F 59 */ { GRPSSE(0f59) },
- /* 0F 5A */ { GRPSSE(0f5a) },
- /* 0F 5B */ { GRPSSE(0f5b) },
- /* 0F 5C */ { GRPSSE(0f5c) },
- /* 0F 5D */ { GRPSSE(0f5d) },
- /* 0F 5E */ { GRPSSE(0f5e) },
- /* 0F 5F */ { GRPSSE(0f5f) },
- /* 0F 60 */ { GRPSSE(0f60) },
- /* 0F 61 */ { GRPSSE(0f61) },
- /* 0F 62 */ { GRPSSE(0f62) },
- /* 0F 63 */ { GRPSSE(0f63) },
- /* 0F 64 */ { GRPSSE(0f64) },
- /* 0F 65 */ { GRPSSE(0f65) },
- /* 0F 66 */ { GRPSSE(0f66) },
- /* 0F 67 */ { GRPSSE(0f67) },
- /* 0F 68 */ { GRPSSE(0f68) },
- /* 0F 69 */ { GRPSSE(0f69) },
- /* 0F 6A */ { GRPSSE(0f6a) },
- /* 0F 6B */ { GRPSSE(0f6b) },
- /* 0F 6C */ { GRPSSE(0f6c) },
- /* 0F 6D */ { GRPSSE(0f6d) },
- /* 0F 6E */ { GRPSSE(0f6e) },
- /* 0F 6F */ { GRPSSE(0f6f) },
- /* 0F 70 */ { GRPSSE(0f70) },
- /* 0F 71 */ { GRPN(G12) },
- /* 0F 72 */ { GRPN(G13) },
- /* 0F 73 */ { GRPN(G14) },
- /* 0F 74 */ { GRPSSE(0f74) },
- /* 0F 75 */ { GRPSSE(0f75) },
- /* 0F 76 */ { GRPSSE(0f76) },
- /* 0F 77 */ { 0, &Ia_emms },
- /* 0F 78 */ { 0, &Ia_Invalid },
- /* 0F 79 */ { 0, &Ia_Invalid },
- /* 0F 7A */ { 0, &Ia_Invalid },
- /* 0F 7B */ { 0, &Ia_Invalid },
- /* 0F 7C */ { GRPSSE(0f7c) },
- /* 0F 7D */ { GRPSSE(0f7d) },
- /* 0F 7E */ { GRPSSE(0f7e) },
- /* 0F 7F */ { GRPSSE(0f7f) },
- /* 0F 80 */ { 0, &Ia_jo_Jd },
- /* 0F 81 */ { 0, &Ia_jno_Jd },
- /* 0F 82 */ { 0, &Ia_jb_Jd },
- /* 0F 83 */ { 0, &Ia_jnb_Jd },
- /* 0F 84 */ { 0, &Ia_jz_Jd },
- /* 0F 85 */ { 0, &Ia_jnz_Jd },
- /* 0F 86 */ { 0, &Ia_jbe_Jd },
- /* 0F 87 */ { 0, &Ia_jnbe_Jd },
- /* 0F 88 */ { 0, &Ia_js_Jd },
- /* 0F 89 */ { 0, &Ia_jns_Jd },
- /* 0F 8A */ { 0, &Ia_jp_Jd },
- /* 0F 8B */ { 0, &Ia_jnp_Jd },
- /* 0F 8C */ { 0, &Ia_jl_Jd },
- /* 0F 8D */ { 0, &Ia_jnl_Jd },
- /* 0F 8E */ { 0, &Ia_jle_Jd },
- /* 0F 8F */ { 0, &Ia_jnle_Jd },
- /* 0F 90 */ { 0, &Ia_seto_Eb },
- /* 0F 91 */ { 0, &Ia_setno_Eb },
- /* 0F 92 */ { 0, &Ia_setb_Eb },
- /* 0F 93 */ { 0, &Ia_setnb_Eb },
- /* 0F 94 */ { 0, &Ia_setz_Eb },
- /* 0F 95 */ { 0, &Ia_setnz_Eb },
- /* 0F 96 */ { 0, &Ia_setbe_Eb },
- /* 0F 97 */ { 0, &Ia_setnbe_Eb },
- /* 0F 98 */ { 0, &Ia_sets_Eb },
- /* 0F 99 */ { 0, &Ia_setns_Eb },
- /* 0F 9A */ { 0, &Ia_setp_Eb },
- /* 0F 9B */ { 0, &Ia_setnp_Eb },
- /* 0F 9C */ { 0, &Ia_setl_Eb },
- /* 0F 9D */ { 0, &Ia_setnl_Eb },
- /* 0F 9E */ { 0, &Ia_setle_Eb },
- /* 0F 9F */ { 0, &Ia_setnle_Eb },
- /* 0F A0 */ { 0, &Ia_pushw_FS },
- /* 0F A1 */ { 0, &Ia_popw_FS },
- /* 0F A2 */ { 0, &Ia_cpuid },
- /* 0F A3 */ { 0, &Ia_btw_Ew_Gw },
- /* 0F A4 */ { 0, &Ia_shldw_Ew_Gw_Ib },
- /* 0F A5 */ { 0, &Ia_shldw_Ew_Gw_CL },
- /* 0F A6 */ { 0, &Ia_Invalid },
- /* 0F A7 */ { 0, &Ia_Invalid },
- /* 0F A8 */ { 0, &Ia_pushw_GS },
- /* 0F A9 */ { 0, &Ia_popw_GS },
- /* 0F AA */ { 0, &Ia_rsm },
- /* 0F AB */ { 0, &Ia_btsw_Ew_Gw },
- /* 0F AC */ { 0, &Ia_shrdw_Ew_Gw_Ib },
- /* 0F AD */ { 0, &Ia_shrdw_Ew_Gw_CL },
- /* 0F AE */ { GRPN(G15) },
- /* 0F AF */ { 0, &Ia_imulw_Gw_Ew },
- /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
- /* 0F B1 */ { 0, &Ia_cmpxchgw_Ew_Gw },
- /* 0F B2 */ { 0, &Ia_lssw_Gw_Mp },
- /* 0F B3 */ { 0, &Ia_btrw_Ew_Gw },
- /* 0F B4 */ { 0, &Ia_lfsw_Gw_Mp },
- /* 0F B5 */ { 0, &Ia_lgsw_Gw_Mp },
- /* 0F B6 */ { 0, &Ia_movzbw_Gw_Eb },
- /* 0F B7 */ { 0, &Ia_movw_Gw_Ew },
- /* 0F B8 */ { 0, &Ia_Invalid },
- /* 0F B9 */ { 0, &Ia_ud2b },
- /* 0F BA */ { GRPN(G8EwIb) },
- /* 0F BB */ { 0, &Ia_btcw_Ew_Gw },
- /* 0F BC */ { 0, &Ia_bsfw_Gw_Ew },
- /* 0F BD */ { 0, &Ia_bsrw_Gw_Ew },
- /* 0F BE */ { 0, &Ia_movsbw_Gw_Eb },
- /* 0F BF */ { 0, &Ia_movw_Gw_Ew },
- /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
- /* 0F C0 */ { 0, &Ia_xaddw_Ew_Gw },
- /* 0F C2 */ { GRPSSE(0fc2) },
- /* 0F C3 */ { GRPSSE(0fc3) },
- /* 0F C4 */ { GRPSSE(0fc4) },
- /* 0F C5 */ { GRPSSE(0fc5) },
- /* 0F C6 */ { GRPSSE(0fc6) },
- /* 0F C7 */ { GRPN(G9) },
- /* 0F C8 */ { 0, &Ia_bswapl_ERX },
- /* 0F C9 */ { 0, &Ia_bswapl_ERX },
- /* 0F CA */ { 0, &Ia_bswapl_ERX },
- /* 0F CB */ { 0, &Ia_bswapl_ERX },
- /* 0F CC */ { 0, &Ia_bswapl_ERX },
- /* 0F CD */ { 0, &Ia_bswapl_ERX },
- /* 0F CE */ { 0, &Ia_bswapl_ERX },
- /* 0F CF */ { 0, &Ia_bswapl_ERX },
- /* 0F D0 */ { GRPSSE(0fd0) },
- /* 0F D1 */ { GRPSSE(0fd1) },
- /* 0F D2 */ { GRPSSE(0fd2) },
- /* 0F D3 */ { GRPSSE(0fd3) },
- /* 0F D4 */ { GRPSSE(0fd4) },
- /* 0F D5 */ { GRPSSE(0fd5) },
- /* 0F D6 */ { GRPSSE(0fd6) },
- /* 0F D7 */ { GRPSSE(0fd7) },
- /* 0F D8 */ { GRPSSE(0fd8) },
- /* 0F D9 */ { GRPSSE(0fd9) },
- /* 0F DA */ { GRPSSE(0fda) },
- /* 0F DB */ { GRPSSE(0fdb) },
- /* 0F DC */ { GRPSSE(0fdc) },
- /* 0F DD */ { GRPSSE(0fdd) },
- /* 0F DE */ { GRPSSE(0fde) },
- /* 0F DF */ { GRPSSE(0fdf) },
- /* 0F E0 */ { GRPSSE(0fe0) },
- /* 0F E1 */ { GRPSSE(0fe1) },
- /* 0F E2 */ { GRPSSE(0fe2) },
- /* 0F E3 */ { GRPSSE(0fe3) },
- /* 0F E4 */ { GRPSSE(0fe4) },
- /* 0F E5 */ { GRPSSE(0fe5) },
- /* 0F E6 */ { GRPSSE(0fe6) },
- /* 0F E7 */ { GRPSSE(0fe7) },
- /* 0F E8 */ { GRPSSE(0fe8) },
- /* 0F E9 */ { GRPSSE(0fe9) },
- /* 0F EA */ { GRPSSE(0fea) },
- /* 0F EB */ { GRPSSE(0feb) },
- /* 0F EC */ { GRPSSE(0fec) },
- /* 0F ED */ { GRPSSE(0fed) },
- /* 0F EE */ { GRPSSE(0fee) },
- /* 0F EF */ { GRPSSE(0fef) },
- /* 0F F0 */ { GRPSSE(0ff0) },
- /* 0F F1 */ { GRPSSE(0ff1) },
- /* 0F F2 */ { GRPSSE(0ff2) },
- /* 0F F3 */ { GRPSSE(0ff3) },
- /* 0F F4 */ { GRPSSE(0ff4) },
- /* 0F F5 */ { GRPSSE(0ff5) },
- /* 0F F6 */ { GRPSSE(0ff6) },
- /* 0F F7 */ { GRPSSE(0ff7) },
- /* 0F F8 */ { GRPSSE(0ff8) },
- /* 0F F9 */ { GRPSSE(0ff9) },
- /* 0F FA */ { GRPSSE(0ffa) },
- /* 0F FB */ { GRPSSE(0ffb) },
- /* 0F FC */ { GRPSSE(0ffc) },
- /* 0F FD */ { GRPSSE(0ffd) },
- /* 0F FE */ { GRPSSE(0ffe) },
- /* 0F FF */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmOpcodes64d[256*2] = {
- // 256 entries for single byte opcodes
- /* 00 */ { 0, &Ia_addb_Eb_Gb },
- /* 01 */ { 0, &Ia_addl_Ed_Gd },
- /* 02 */ { 0, &Ia_addb_Gb_Eb },
- /* 03 */ { 0, &Ia_addl_Gd_Ed },
- /* 04 */ { 0, &Ia_addb_AL_Ib, },
- /* 05 */ { 0, &Ia_addl_EAX_Id, },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_orb_Eb_Gb },
- /* 09 */ { 0, &Ia_orl_Ed_Gd },
- /* 0A */ { 0, &Ia_orb_Gb_Eb },
- /* 0B */ { 0, &Ia_orl_Gd_Ed },
- /* 0C */ { 0, &Ia_orb_AL_Ib },
- /* 0D */ { 0, &Ia_orl_EAX_Id },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_error }, // 2 byte escape
- /* 10 */ { 0, &Ia_adcb_Eb_Gb },
- /* 11 */ { 0, &Ia_adcl_Ed_Gd },
- /* 12 */ { 0, &Ia_adcb_Gb_Eb },
- /* 13 */ { 0, &Ia_adcl_Gd_Ed },
- /* 14 */ { 0, &Ia_adcb_AL_Ib },
- /* 15 */ { 0, &Ia_adcl_EAX_Id },
- /* 16 */ { 0, &Ia_Invalid },
- /* 17 */ { 0, &Ia_Invalid },
- /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
- /* 19 */ { 0, &Ia_sbbl_Ed_Gd },
- /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
- /* 1B */ { 0, &Ia_sbbl_Gd_Ed },
- /* 1C */ { 0, &Ia_sbbb_AL_Ib },
- /* 1D */ { 0, &Ia_sbbl_EAX_Id },
- /* 1E */ { 0, &Ia_Invalid },
- /* 1F */ { 0, &Ia_Invalid },
- /* 20 */ { 0, &Ia_andb_Eb_Gb },
- /* 21 */ { 0, &Ia_andl_Ed_Gd },
- /* 22 */ { 0, &Ia_andb_Gb_Eb },
- /* 23 */ { 0, &Ia_andl_Gd_Ed },
- /* 24 */ { 0, &Ia_andb_AL_Ib },
- /* 25 */ { 0, &Ia_andl_EAX_Id },
- /* 26 */ { 0, &Ia_prefix_es }, // ES:
- /* 27 */ { 0, &Ia_Invalid },
- /* 28 */ { 0, &Ia_subb_Eb_Gb },
- /* 29 */ { 0, &Ia_subl_Ed_Gd },
- /* 2A */ { 0, &Ia_subb_Gb_Eb },
- /* 2B */ { 0, &Ia_subl_Gd_Ed },
- /* 2C */ { 0, &Ia_subb_AL_Ib },
- /* 2D */ { 0, &Ia_subl_EAX_Id },
- /* 2E */ { 0, &Ia_prefix_cs }, // CS:
- /* 2F */ { 0, &Ia_Invalid },
- /* 30 */ { 0, &Ia_xorb_Eb_Gb },
- /* 31 */ { 0, &Ia_xorl_Ed_Gd },
- /* 32 */ { 0, &Ia_xorb_Gb_Eb },
- /* 33 */ { 0, &Ia_xorl_Gd_Ed },
- /* 34 */ { 0, &Ia_xorb_AL_Ib },
- /* 35 */ { 0, &Ia_xorl_EAX_Id },
- /* 36 */ { 0, &Ia_prefix_ss }, // SS:
- /* 37 */ { 0, &Ia_Invalid },
- /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
- /* 39 */ { 0, &Ia_cmpl_Ed_Gd },
- /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
- /* 3B */ { 0, &Ia_cmpl_Gd_Ed },
- /* 3C */ { 0, &Ia_cmpb_AL_Ib },
- /* 3D */ { 0, &Ia_cmpl_EAX_Id },
- /* 3E */ { 0, &Ia_prefix_ds }, // DS:
- /* 3F */ { 0, &Ia_Invalid },
- /* 40 */ { 0, &Ia_prefix_rex }, // REX:
- /* 41 */ { 0, &Ia_prefix_rex }, // REX:
- /* 42 */ { 0, &Ia_prefix_rex }, // REX:
- /* 43 */ { 0, &Ia_prefix_rex }, // REX:
- /* 44 */ { 0, &Ia_prefix_rex }, // REX:
- /* 45 */ { 0, &Ia_prefix_rex }, // REX:
- /* 46 */ { 0, &Ia_prefix_rex }, // REX:
- /* 47 */ { 0, &Ia_prefix_rex }, // REX:
- /* 48 */ { 0, &Ia_prefix_rex }, // REX:
- /* 49 */ { 0, &Ia_prefix_rex }, // REX:
- /* 4A */ { 0, &Ia_prefix_rex }, // REX:
- /* 4B */ { 0, &Ia_prefix_rex }, // REX:
- /* 4C */ { 0, &Ia_prefix_rex }, // REX:
- /* 4D */ { 0, &Ia_prefix_rex }, // REX:
- /* 4E */ { 0, &Ia_prefix_rex }, // REX:
- /* 4F */ { 0, &Ia_prefix_rex }, // REX:
- /* 50 */ { 0, &Ia_pushq_RRX },
- /* 51 */ { 0, &Ia_pushq_RRX },
- /* 52 */ { 0, &Ia_pushq_RRX },
- /* 53 */ { 0, &Ia_pushq_RRX },
- /* 54 */ { 0, &Ia_pushq_RRX },
- /* 55 */ { 0, &Ia_pushq_RRX },
- /* 56 */ { 0, &Ia_pushq_RRX },
- /* 57 */ { 0, &Ia_pushq_RRX },
- /* 58 */ { 0, &Ia_popq_RRX },
- /* 59 */ { 0, &Ia_popq_RRX },
- /* 5A */ { 0, &Ia_popq_RRX },
- /* 5B */ { 0, &Ia_popq_RRX },
- /* 5C */ { 0, &Ia_popq_RRX },
- /* 5D */ { 0, &Ia_popq_RRX },
- /* 5E */ { 0, &Ia_popq_RRX },
- /* 5F */ { 0, &Ia_popq_RRX },
- /* 60 */ { 0, &Ia_Invalid },
- /* 61 */ { 0, &Ia_Invalid },
- /* 62 */ { 0, &Ia_Invalid },
- /* 63 */ { 0, &Ia_movl_Gd_Ed },
- /* 64 */ { 0, &Ia_prefix_fs }, // FS:
- /* 65 */ { 0, &Ia_prefix_gs }, // GS:
- /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
- /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
- /* 68 */ { 0, &Ia_pushq_sId },
- /* 69 */ { 0, &Ia_imull_Gd_Ed_Id },
- /* 6A */ { 0, &Ia_pushq_sIb },
- /* 6B */ { 0, &Ia_imull_Gd_Ed_sIb },
- /* 6C */ { 0, &Ia_insb_Yb_DX },
- /* 6D */ { 0, &Ia_insl_Yd_DX },
- /* 6E */ { 0, &Ia_outsb_DX_Xb },
- /* 6F */ { 0, &Ia_outsl_DX_Xd },
- /* 70 */ { 0, &Ia_jo_Jb },
- /* 71 */ { 0, &Ia_jno_Jb },
- /* 72 */ { 0, &Ia_jb_Jb },
- /* 73 */ { 0, &Ia_jnb_Jb },
- /* 74 */ { 0, &Ia_jz_Jb },
- /* 75 */ { 0, &Ia_jnz_Jb },
- /* 76 */ { 0, &Ia_jbe_Jb },
- /* 77 */ { 0, &Ia_jnbe_Jb },
- /* 78 */ { 0, &Ia_js_Jb },
- /* 79 */ { 0, &Ia_jns_Jb },
- /* 7A */ { 0, &Ia_jp_Jb },
- /* 7B */ { 0, &Ia_jnp_Jb },
- /* 7C */ { 0, &Ia_jl_Jb },
- /* 7D */ { 0, &Ia_jnl_Jb },
- /* 7E */ { 0, &Ia_jle_Jb },
- /* 7F */ { 0, &Ia_jnle_Jb },
- /* 80 */ { GRPN(G1EbIb) },
- /* 81 */ { GRPN(G1EdId) },
- /* 82 */ { 0, &Ia_Invalid },
- /* 83 */ { GRPN(G1EdIb) },
- /* 84 */ { 0, &Ia_testb_Eb_Gb },
- /* 85 */ { 0, &Ia_testl_Ed_Gd },
- /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
- /* 87 */ { 0, &Ia_xchgl_Ed_Gd },
- /* 88 */ { 0, &Ia_movb_Eb_Gb },
- /* 89 */ { 0, &Ia_movl_Ed_Gd },
- /* 8A */ { 0, &Ia_movb_Gb_Eb },
- /* 8B */ { 0, &Ia_movl_Gd_Ed },
- /* 8C */ { 0, &Ia_movw_Ew_Sw },
- /* 8D */ { 0, &Ia_leal_Gd_Md },
- /* 8E */ { 0, &Ia_movw_Sw_Ew },
- /* 8F */ { 0, &Ia_popq_Eq },
- /* 90 */ { 0, &Ia_xchgl_ERX_EAX }, // handle XCHG R8d, EAX
- /* 91 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 92 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 93 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 94 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 95 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 96 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 97 */ { 0, &Ia_xchgl_ERX_EAX },
- /* 98 */ { 0, &Ia_cwde },
- /* 99 */ { 0, &Ia_cdq },
- /* 9A */ { 0, &Ia_Invalid },
- /* 9B */ { 0, &Ia_fwait },
- /* 9C */ { 0, &Ia_pushfq },
- /* 9D */ { 0, &Ia_popfq },
- /* 9E */ { 0, &Ia_sahf },
- /* 9F */ { 0, &Ia_lahf },
- /* A0 */ { 0, &Ia_movb_AL_Ob },
- /* A1 */ { 0, &Ia_movl_EAX_Od },
- /* A0 */ { 0, &Ia_movb_Ob_AL },
- /* A1 */ { 0, &Ia_movl_Od_EAX },
- /* A4 */ { 0, &Ia_movsb_Yb_Xb },
- /* A5 */ { 0, &Ia_movsl_Yd_Xd },
- /* A6 */ { 0, &Ia_cmpsb_Yb_Xb },
- /* A7 */ { 0, &Ia_cmpsl_Yd_Xd },
- /* A8 */ { 0, &Ia_testb_AL_Ib },
- /* A9 */ { 0, &Ia_testl_EAX_Id },
- /* AA */ { 0, &Ia_stosb_Yb_AL },
- /* AB */ { 0, &Ia_stosl_Yd_EAX },
- /* AC */ { 0, &Ia_lodsb_AL_Xb },
- /* AD */ { 0, &Ia_lodsl_EAX_Xd },
- /* AE */ { 0, &Ia_scasb_Yb_AL },
- /* AF */ { 0, &Ia_scasl_Yd_EAX },
- /* B0 */ { 0, &Ia_movb_R8_Ib },
- /* B1 */ { 0, &Ia_movb_R8_Ib },
- /* B2 */ { 0, &Ia_movb_R8_Ib },
- /* B3 */ { 0, &Ia_movb_R8_Ib },
- /* B4 */ { 0, &Ia_movb_R8_Ib },
- /* B5 */ { 0, &Ia_movb_R8_Ib },
- /* B6 */ { 0, &Ia_movb_R8_Ib },
- /* B7 */ { 0, &Ia_movb_R8_Ib },
- /* B8 */ { 0, &Ia_movl_ERX_Id },
- /* B9 */ { 0, &Ia_movl_ERX_Id },
- /* BA */ { 0, &Ia_movl_ERX_Id },
- /* BB */ { 0, &Ia_movl_ERX_Id },
- /* BC */ { 0, &Ia_movl_ERX_Id },
- /* BD */ { 0, &Ia_movl_ERX_Id },
- /* BE */ { 0, &Ia_movl_ERX_Id },
- /* BF */ { 0, &Ia_movl_ERX_Id },
- /* C0 */ { GRPN(G2Eb) },
- /* C1 */ { GRPN(G2Ed) },
- /* C2 */ { 0, &Ia_ret_Iw },
- /* C3 */ { 0, &Ia_ret },
- /* C4 */ { 0, &Ia_Invalid },
- /* C5 */ { 0, &Ia_Invalid },
- /* C6 */ { 0, &Ia_movb_Eb_Ib },
- /* C7 */ { 0, &Ia_movl_Ed_Id },
- /* C8 */ { 0, &Ia_enter },
- /* C9 */ { 0, &Ia_leave },
- /* CA */ { 0, &Ia_lret_Iw },
- /* CB */ { 0, &Ia_lret },
- /* CC */ { 0, &Ia_int3 },
- /* CD */ { 0, &Ia_int_Ib },
- /* CE */ { 0, &Ia_Invalid },
- /* CF */ { 0, &Ia_iretl },
- /* D0 */ { GRPN(G2EbI1) },
- /* D1 */ { GRPN(G2EdI1) },
- /* D2 */ { GRPN(G2EbCL) },
- /* D3 */ { GRPN(G2EdCL) },
- /* D4 */ { 0, &Ia_Invalid },
- /* D5 */ { 0, &Ia_Invalid },
- /* D6 */ { 0, &Ia_Invalid },
- /* D7 */ { 0, &Ia_xlat },
- /* D8 */ { GRPFP(D8) },
- /* D9 */ { GRPFP(D9) },
- /* DA */ { GRPFP(DA) },
- /* DB */ { GRPFP(DB) },
- /* DC */ { GRPFP(DC) },
- /* DD */ { GRPFP(DD) },
- /* DE */ { GRPFP(DE) },
- /* DF */ { GRPFP(DF) },
- /* E0 */ { 0, &Ia_loopne_Jb },
- /* E1 */ { 0, &Ia_loope_Jb },
- /* E2 */ { 0, &Ia_loop_Jb },
- /* E3 */ { 0, &Ia_jrcxz_Jb },
- /* E4 */ { 0, &Ia_inb_AL_Ib },
- /* E5 */ { 0, &Ia_inl_EAX_Ib },
- /* E6 */ { 0, &Ia_outb_Ib_AL },
- /* E7 */ { 0, &Ia_outl_Ib_EAX },
- /* E8 */ { 0, &Ia_call_Jd },
- /* E9 */ { 0, &Ia_jmp_Jd },
- /* EA */ { 0, &Ia_Invalid },
- /* EB */ { 0, &Ia_jmp_Jb },
- /* EC */ { 0, &Ia_inb_AL_DX },
- /* ED */ { 0, &Ia_inl_EAX_DX },
- /* EE */ { 0, &Ia_outb_DX_AL },
- /* EF */ { 0, &Ia_outl_DX_EAX },
- /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
- /* F1 */ { 0, &Ia_int1 },
- /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
- /* F3 */ { 0, &Ia_prefix_rep }, // REP:
- /* F4 */ { 0, &Ia_hlt },
- /* F5 */ { 0, &Ia_cmc },
- /* F6 */ { GRPN(G3Eb) },
- /* F7 */ { GRPN(G3Ed) },
- /* F8 */ { 0, &Ia_clc },
- /* F9 */ { 0, &Ia_stc },
- /* FA */ { 0, &Ia_cli },
- /* FB */ { 0, &Ia_sti },
- /* FC */ { 0, &Ia_cld },
- /* FD */ { 0, &Ia_std },
- /* FE */ { GRPN(G4) },
- /* FF */ { GRPN(64G5d) },
-
- // 256 entries for two byte opcodes
- /* 0F 00 */ { GRPN(G6) },
- /* 0F 01 */ { GRPN(G7) },
- /* 0F 02 */ { 0, &Ia_larl_Gd_Ew },
- /* 0F 03 */ { 0, &Ia_lsll_Gd_Ew },
- /* 0F 04 */ { 0, &Ia_Invalid },
- /* 0F 05 */ { 0, &Ia_syscall },
- /* 0F 06 */ { 0, &Ia_clts },
- /* 0F 07 */ { 0, &Ia_sysret },
- /* 0F 08 */ { 0, &Ia_invd },
- /* 0F 09 */ { 0, &Ia_wbinvd },
- /* 0F 0A */ { 0, &Ia_Invalid },
- /* 0F 0B */ { 0, &Ia_ud2a },
- /* 0F 0C */ { 0, &Ia_Invalid },
- /* 0F 0D */ { 0, &Ia_prefetch }, // 3DNow!
- /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
- /* 0F 0F */ { GRP3DNOW },
- /* 0F 10 */ { GRPSSE(0f10) },
- /* 0F 11 */ { GRPSSE(0f11) },
- /* 0F 12 */ { GRPSSE(0f12) },
- /* 0F 13 */ { GRPSSE(0f13) },
- /* 0F 14 */ { GRPSSE(0f14) },
- /* 0F 15 */ { GRPSSE(0f15) },
- /* 0F 16 */ { GRPSSE(0f16) },
- /* 0F 17 */ { GRPSSE(0f17) },
- /* 0F 18 */ { GRPN(G16) },
- /* 0F 19 */ { 0, &Ia_Invalid },
- /* 0F 1A */ { 0, &Ia_Invalid },
- /* 0F 1B */ { 0, &Ia_Invalid },
- /* 0F 1C */ { 0, &Ia_Invalid },
- /* 0F 1D */ { 0, &Ia_Invalid },
- /* 0F 1E */ { 0, &Ia_Invalid },
- /* 0F 1F */ { 0, &Ia_multibyte_nop },
- /* 0F 20 */ { 0, &Ia_movq_Rq_Cq },
- /* 0F 21 */ { 0, &Ia_movq_Rq_Dq },
- /* 0F 22 */ { 0, &Ia_movq_Cq_Rq },
- /* 0F 23 */ { 0, &Ia_movq_Dq_Rq },
- /* 0F 24 */ { 0, &Ia_Invalid },
- /* 0F 25 */ { 0, &Ia_Invalid },
- /* 0F 26 */ { 0, &Ia_Invalid },
- /* 0F 27 */ { 0, &Ia_Invalid },
- /* 0F 28 */ { GRPSSE(0f28) },
- /* 0F 29 */ { GRPSSE(0f29) },
- /* 0F 2A */ { GRPSSE(0f2a) },
- /* 0F 2B */ { GRPSSE(0f2b) },
- /* 0F 2C */ { GRPSSE(0f2c) },
- /* 0F 2D */ { GRPSSE(0f2d) },
- /* 0F 2E */ { GRPSSE(0f2e) },
- /* 0F 2F */ { GRPSSE(0f2f) },
- /* 0F 30 */ { 0, &Ia_wrmsr },
- /* 0F 31 */ { 0, &Ia_rdtsc },
- /* 0F 32 */ { 0, &Ia_rdmsr },
- /* 0F 33 */ { 0, &Ia_rdpmc },
- /* 0F 34 */ { 0, &Ia_sysenter },
- /* 0F 35 */ { 0, &Ia_sysexit },
- /* 0F 36 */ { 0, &Ia_Invalid },
- /* 0F 37 */ { 0, &Ia_Invalid },
- /* 0F 38 */ { GR3BTAB(A4) },
- /* 0F 39 */ { 0, &Ia_Invalid },
- /* 0F 3A */ { GR3BTAB(A5) },
- /* 0F 3B */ { 0, &Ia_Invalid },
- /* 0F 3C */ { 0, &Ia_Invalid },
- /* 0F 3D */ { 0, &Ia_Invalid },
- /* 0F 3E */ { 0, &Ia_Invalid },
- /* 0F 3F */ { 0, &Ia_Invalid },
- /* 0F 40 */ { 0, &Ia_cmovol_Gd_Ed },
- /* 0F 41 */ { 0, &Ia_cmovnol_Gd_Ed },
- /* 0F 42 */ { 0, &Ia_cmovcl_Gd_Ed },
- /* 0F 43 */ { 0, &Ia_cmovncl_Gd_Ed },
- /* 0F 44 */ { 0, &Ia_cmovzl_Gd_Ed },
- /* 0F 45 */ { 0, &Ia_cmovnzl_Gd_Ed },
- /* 0F 46 */ { 0, &Ia_cmovnal_Gd_Ed },
- /* 0F 47 */ { 0, &Ia_cmoval_Gd_Ed },
- /* 0F 48 */ { 0, &Ia_cmovsl_Gd_Ed },
- /* 0F 49 */ { 0, &Ia_cmovnsl_Gd_Ed },
- /* 0F 4A */ { 0, &Ia_cmovpl_Gd_Ed },
- /* 0F 4B */ { 0, &Ia_cmovnpl_Gd_Ed },
- /* 0F 4C */ { 0, &Ia_cmovll_Gd_Ed },
- /* 0F 4D */ { 0, &Ia_cmovnll_Gd_Ed },
- /* 0F 4E */ { 0, &Ia_cmovngl_Gd_Ed },
- /* 0F 4F */ { 0, &Ia_cmovgl_Gd_Ed },
- /* 0F 50 */ { GRPSSE(0f50) },
- /* 0F 51 */ { GRPSSE(0f51) },
- /* 0F 52 */ { GRPSSE(0f52) },
- /* 0F 53 */ { GRPSSE(0f53) },
- /* 0F 54 */ { GRPSSE(0f54) },
- /* 0F 55 */ { GRPSSE(0f55) },
- /* 0F 56 */ { GRPSSE(0f56) },
- /* 0F 57 */ { GRPSSE(0f57) },
- /* 0F 58 */ { GRPSSE(0f58) },
- /* 0F 59 */ { GRPSSE(0f59) },
- /* 0F 5A */ { GRPSSE(0f5a) },
- /* 0F 5B */ { GRPSSE(0f5b) },
- /* 0F 5C */ { GRPSSE(0f5c) },
- /* 0F 5D */ { GRPSSE(0f5d) },
- /* 0F 5E */ { GRPSSE(0f5e) },
- /* 0F 5F */ { GRPSSE(0f5f) },
- /* 0F 60 */ { GRPSSE(0f60) },
- /* 0F 61 */ { GRPSSE(0f61) },
- /* 0F 62 */ { GRPSSE(0f62) },
- /* 0F 63 */ { GRPSSE(0f63) },
- /* 0F 64 */ { GRPSSE(0f64) },
- /* 0F 65 */ { GRPSSE(0f65) },
- /* 0F 66 */ { GRPSSE(0f66) },
- /* 0F 67 */ { GRPSSE(0f67) },
- /* 0F 68 */ { GRPSSE(0f68) },
- /* 0F 69 */ { GRPSSE(0f69) },
- /* 0F 6A */ { GRPSSE(0f6a) },
- /* 0F 6B */ { GRPSSE(0f6b) },
- /* 0F 6C */ { GRPSSE(0f6c) },
- /* 0F 6D */ { GRPSSE(0f6d) },
- /* 0F 6E */ { GRPSSE(0f6e) },
- /* 0F 6F */ { GRPSSE(0f6f) },
- /* 0F 70 */ { GRPSSE(0f70) },
- /* 0F 71 */ { GRPN(G12) },
- /* 0F 72 */ { GRPN(G13) },
- /* 0F 73 */ { GRPN(G14) },
- /* 0F 74 */ { GRPSSE(0f74) },
- /* 0F 75 */ { GRPSSE(0f75) },
- /* 0F 76 */ { GRPSSE(0f76) },
- /* 0F 77 */ { 0, &Ia_emms },
- /* 0F 78 */ { 0, &Ia_Invalid },
- /* 0F 79 */ { 0, &Ia_Invalid },
- /* 0F 7A */ { 0, &Ia_Invalid },
- /* 0F 7B */ { 0, &Ia_Invalid },
- /* 0F 7C */ { GRPSSE(0f7c) },
- /* 0F 7D */ { GRPSSE(0f7d) },
- /* 0F 7E */ { GRPSSE(0f7e) },
- /* 0F 7F */ { GRPSSE(0f7f) },
- /* 0F 80 */ { 0, &Ia_jo_Jd },
- /* 0F 81 */ { 0, &Ia_jno_Jd },
- /* 0F 82 */ { 0, &Ia_jb_Jd },
- /* 0F 83 */ { 0, &Ia_jnb_Jd },
- /* 0F 84 */ { 0, &Ia_jz_Jd },
- /* 0F 85 */ { 0, &Ia_jnz_Jd },
- /* 0F 86 */ { 0, &Ia_jbe_Jd },
- /* 0F 87 */ { 0, &Ia_jnbe_Jd },
- /* 0F 88 */ { 0, &Ia_js_Jd },
- /* 0F 89 */ { 0, &Ia_jns_Jd },
- /* 0F 8A */ { 0, &Ia_jp_Jd },
- /* 0F 8B */ { 0, &Ia_jnp_Jd },
- /* 0F 8C */ { 0, &Ia_jl_Jd },
- /* 0F 8D */ { 0, &Ia_jnl_Jd },
- /* 0F 8E */ { 0, &Ia_jle_Jd },
- /* 0F 8F */ { 0, &Ia_jnle_Jd },
- /* 0F 90 */ { 0, &Ia_seto_Eb },
- /* 0F 91 */ { 0, &Ia_setno_Eb },
- /* 0F 92 */ { 0, &Ia_setb_Eb },
- /* 0F 93 */ { 0, &Ia_setnb_Eb },
- /* 0F 94 */ { 0, &Ia_setz_Eb },
- /* 0F 95 */ { 0, &Ia_setnz_Eb },
- /* 0F 96 */ { 0, &Ia_setbe_Eb },
- /* 0F 97 */ { 0, &Ia_setnbe_Eb },
- /* 0F 98 */ { 0, &Ia_sets_Eb },
- /* 0F 99 */ { 0, &Ia_setns_Eb },
- /* 0F 9A */ { 0, &Ia_setp_Eb },
- /* 0F 9B */ { 0, &Ia_setnp_Eb },
- /* 0F 9C */ { 0, &Ia_setl_Eb },
- /* 0F 9D */ { 0, &Ia_setnl_Eb },
- /* 0F 9E */ { 0, &Ia_setle_Eb },
- /* 0F 9F */ { 0, &Ia_setnle_Eb },
- /* 0F A0 */ { 0, &Ia_pushq_FS },
- /* 0F A1 */ { 0, &Ia_popq_FS },
- /* 0F A2 */ { 0, &Ia_cpuid },
- /* 0F A3 */ { 0, &Ia_btl_Ed_Gd },
- /* 0F A4 */ { 0, &Ia_shldl_Ed_Gd_Ib },
- /* 0F A5 */ { 0, &Ia_shldl_Ed_Gd_CL },
- /* 0F A6 */ { 0, &Ia_Invalid },
- /* 0F A7 */ { 0, &Ia_Invalid },
- /* 0F A8 */ { 0, &Ia_pushq_GS },
- /* 0F A9 */ { 0, &Ia_popq_GS },
- /* 0F AA */ { 0, &Ia_rsm },
- /* 0F AB */ { 0, &Ia_btsl_Ed_Gd },
- /* 0F AC */ { 0, &Ia_shrdl_Ed_Gd_Ib },
- /* 0F AD */ { 0, &Ia_shrdl_Ed_Gd_CL },
- /* 0F AE */ { GRPN(G15) },
- /* 0F AF */ { 0, &Ia_imull_Gd_Ed },
- /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
- /* 0F B1 */ { 0, &Ia_cmpxchgl_Ed_Gd },
- /* 0F B2 */ { 0, &Ia_lssl_Gd_Mp },
- /* 0F B3 */ { 0, &Ia_btrl_Ed_Gd },
- /* 0F B4 */ { 0, &Ia_lfsl_Gd_Mp },
- /* 0F B5 */ { 0, &Ia_lgsl_Gd_Mp },
- /* 0F B6 */ { 0, &Ia_movzbl_Gd_Eb },
- /* 0F B7 */ { 0, &Ia_movzwl_Gd_Ew },
- /* 0F B8 */ { 0, &Ia_Invalid },
- /* 0F B9 */ { 0, &Ia_ud2b },
- /* 0F BA */ { GRPN(G8EdIb) },
- /* 0F BB */ { 0, &Ia_btcl_Ed_Gd },
- /* 0F BC */ { 0, &Ia_bsfl_Gd_Ed },
- /* 0F BD */ { 0, &Ia_bsrl_Gd_Ed },
- /* 0F BE */ { 0, &Ia_movsbl_Gd_Eb },
- /* 0F BF */ { 0, &Ia_movswl_Gd_Ew },
- /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
- /* 0F C0 */ { 0, &Ia_xaddl_Ed_Gd },
- /* 0F C2 */ { GRPSSE(0fc2) },
- /* 0F C3 */ { GRPSSE(0fc3) },
- /* 0F C4 */ { GRPSSE(0fc4) },
- /* 0F C5 */ { GRPSSE(0fc5) },
- /* 0F C6 */ { GRPSSE(0fc6) },
- /* 0F C7 */ { GRPN(G9) },
- /* 0F C8 */ { 0, &Ia_bswapl_ERX },
- /* 0F C9 */ { 0, &Ia_bswapl_ERX },
- /* 0F CA */ { 0, &Ia_bswapl_ERX },
- /* 0F CB */ { 0, &Ia_bswapl_ERX },
- /* 0F CC */ { 0, &Ia_bswapl_ERX },
- /* 0F CD */ { 0, &Ia_bswapl_ERX },
- /* 0F CE */ { 0, &Ia_bswapl_ERX },
- /* 0F CF */ { 0, &Ia_bswapl_ERX },
- /* 0F D0 */ { GRPSSE(0fd0) },
- /* 0F D1 */ { GRPSSE(0fd1) },
- /* 0F D2 */ { GRPSSE(0fd2) },
- /* 0F D3 */ { GRPSSE(0fd3) },
- /* 0F D4 */ { GRPSSE(0fd4) },
- /* 0F D5 */ { GRPSSE(0fd5) },
- /* 0F D6 */ { GRPSSE(0fd6) },
- /* 0F D7 */ { GRPSSE(0fd7) },
- /* 0F D8 */ { GRPSSE(0fd8) },
- /* 0F D9 */ { GRPSSE(0fd9) },
- /* 0F DA */ { GRPSSE(0fda) },
- /* 0F DB */ { GRPSSE(0fdb) },
- /* 0F DC */ { GRPSSE(0fdc) },
- /* 0F DD */ { GRPSSE(0fdd) },
- /* 0F DE */ { GRPSSE(0fde) },
- /* 0F DF */ { GRPSSE(0fdf) },
- /* 0F E0 */ { GRPSSE(0fe0) },
- /* 0F E1 */ { GRPSSE(0fe1) },
- /* 0F E2 */ { GRPSSE(0fe2) },
- /* 0F E3 */ { GRPSSE(0fe3) },
- /* 0F E4 */ { GRPSSE(0fe4) },
- /* 0F E5 */ { GRPSSE(0fe5) },
- /* 0F E6 */ { GRPSSE(0fe6) },
- /* 0F E7 */ { GRPSSE(0fe7) },
- /* 0F E8 */ { GRPSSE(0fe8) },
- /* 0F E9 */ { GRPSSE(0fe9) },
- /* 0F EA */ { GRPSSE(0fea) },
- /* 0F EB */ { GRPSSE(0feb) },
- /* 0F EC */ { GRPSSE(0fec) },
- /* 0F ED */ { GRPSSE(0fed) },
- /* 0F EE */ { GRPSSE(0fee) },
- /* 0F EF */ { GRPSSE(0fef) },
- /* 0F F0 */ { GRPSSE(0ff0) },
- /* 0F F1 */ { GRPSSE(0ff1) },
- /* 0F F2 */ { GRPSSE(0ff2) },
- /* 0F F3 */ { GRPSSE(0ff3) },
- /* 0F F4 */ { GRPSSE(0ff4) },
- /* 0F F5 */ { GRPSSE(0ff5) },
- /* 0F F6 */ { GRPSSE(0ff6) },
- /* 0F F7 */ { GRPSSE(0ff7) },
- /* 0F F8 */ { GRPSSE(0ff8) },
- /* 0F F9 */ { GRPSSE(0ff9) },
- /* 0F FA */ { GRPSSE(0ffa) },
- /* 0F FB */ { GRPSSE(0ffb) },
- /* 0F FC */ { GRPSSE(0ffc) },
- /* 0F FD */ { GRPSSE(0ffd) },
- /* 0F FE */ { GRPSSE(0ffe) },
- /* 0F FF */ { 0, &Ia_Invalid }
-};
-
-static BxDisasmOpcodeTable_t BxDisasmOpcodes64q[256*2] = {
- // 256 entries for single byte opcodes
- /* 00 */ { 0, &Ia_addb_Eb_Gb },
- /* 01 */ { 0, &Ia_addq_Eq_Gq },
- /* 02 */ { 0, &Ia_addb_Gb_Eb },
- /* 03 */ { 0, &Ia_addq_Gq_Eq },
- /* 04 */ { 0, &Ia_addb_AL_Ib, },
- /* 05 */ { 0, &Ia_addq_RAX_sId },
- /* 06 */ { 0, &Ia_Invalid },
- /* 07 */ { 0, &Ia_Invalid },
- /* 08 */ { 0, &Ia_orb_Eb_Gb },
- /* 09 */ { 0, &Ia_orq_Eq_Gq },
- /* 0A */ { 0, &Ia_orb_Gb_Eb },
- /* 0B */ { 0, &Ia_orq_Gq_Eq },
- /* 0C */ { 0, &Ia_orb_AL_Ib },
- /* 0D */ { 0, &Ia_orq_RAX_sId },
- /* 0E */ { 0, &Ia_Invalid },
- /* 0F */ { 0, &Ia_error }, // 2 byte escape
- /* 10 */ { 0, &Ia_adcb_Eb_Gb },
- /* 11 */ { 0, &Ia_adcq_Eq_Gq },
- /* 12 */ { 0, &Ia_adcb_Gb_Eb },
- /* 13 */ { 0, &Ia_adcq_Gq_Eq },
- /* 14 */ { 0, &Ia_adcb_AL_Ib },
- /* 15 */ { 0, &Ia_adcq_RAX_sId },
- /* 16 */ { 0, &Ia_Invalid },
- /* 17 */ { 0, &Ia_Invalid },
- /* 18 */ { 0, &Ia_sbbb_Eb_Gb },
- /* 19 */ { 0, &Ia_sbbq_Eq_Gq },
- /* 1A */ { 0, &Ia_sbbb_Gb_Eb },
- /* 1B */ { 0, &Ia_sbbq_Gq_Eq },
- /* 1C */ { 0, &Ia_sbbb_AL_Ib },
- /* 1D */ { 0, &Ia_sbbq_RAX_sId },
- /* 1E */ { 0, &Ia_Invalid },
- /* 1F */ { 0, &Ia_Invalid },
- /* 20 */ { 0, &Ia_andb_Eb_Gb },
- /* 21 */ { 0, &Ia_andq_Eq_Gq },
- /* 22 */ { 0, &Ia_andb_Gb_Eb },
- /* 23 */ { 0, &Ia_andq_Gq_Eq },
- /* 24 */ { 0, &Ia_andb_AL_Ib },
- /* 25 */ { 0, &Ia_andq_RAX_sId },
- /* 26 */ { 0, &Ia_prefix_es }, // ES:
- /* 27 */ { 0, &Ia_Invalid },
- /* 28 */ { 0, &Ia_subb_Eb_Gb },
- /* 29 */ { 0, &Ia_subq_Eq_Gq },
- /* 2A */ { 0, &Ia_subb_Gb_Eb },
- /* 2B */ { 0, &Ia_subq_Gq_Eq },
- /* 2C */ { 0, &Ia_subb_AL_Ib },
- /* 2D */ { 0, &Ia_subq_RAX_sId },
- /* 2E */ { 0, &Ia_prefix_cs }, // CS:
- /* 2F */ { 0, &Ia_Invalid },
- /* 30 */ { 0, &Ia_xorb_Eb_Gb },
- /* 31 */ { 0, &Ia_xorq_Eq_Gq },
- /* 32 */ { 0, &Ia_xorb_Gb_Eb },
- /* 33 */ { 0, &Ia_xorq_Gq_Eq },
- /* 34 */ { 0, &Ia_xorb_AL_Ib },
- /* 35 */ { 0, &Ia_xorq_RAX_sId },
- /* 36 */ { 0, &Ia_prefix_ss }, // SS:
- /* 37 */ { 0, &Ia_Invalid },
- /* 38 */ { 0, &Ia_cmpb_Eb_Gb },
- /* 39 */ { 0, &Ia_cmpq_Eq_Gq },
- /* 3A */ { 0, &Ia_cmpb_Gb_Eb },
- /* 3B */ { 0, &Ia_cmpq_Gq_Eq },
- /* 3C */ { 0, &Ia_cmpb_AL_Ib },
- /* 3D */ { 0, &Ia_cmpq_RAX_sId },
- /* 3E */ { 0, &Ia_prefix_ds }, // DS:
- /* 3F */ { 0, &Ia_Invalid },
- /* 40 */ { 0, &Ia_prefix_rex }, // REX:
- /* 41 */ { 0, &Ia_prefix_rex }, // REX:
- /* 42 */ { 0, &Ia_prefix_rex }, // REX:
- /* 43 */ { 0, &Ia_prefix_rex }, // REX:
- /* 44 */ { 0, &Ia_prefix_rex }, // REX:
- /* 45 */ { 0, &Ia_prefix_rex }, // REX:
- /* 46 */ { 0, &Ia_prefix_rex }, // REX:
- /* 47 */ { 0, &Ia_prefix_rex }, // REX:
- /* 48 */ { 0, &Ia_prefix_rex }, // REX:
- /* 49 */ { 0, &Ia_prefix_rex }, // REX:
- /* 4A */ { 0, &Ia_prefix_rex }, // REX:
- /* 4B */ { 0, &Ia_prefix_rex }, // REX:
- /* 4C */ { 0, &Ia_prefix_rex }, // REX:
- /* 4D */ { 0, &Ia_prefix_rex }, // REX:
- /* 4E */ { 0, &Ia_prefix_rex }, // REX:
- /* 4F */ { 0, &Ia_prefix_rex }, // REX:
- /* 50 */ { 0, &Ia_pushq_RRX },
- /* 51 */ { 0, &Ia_pushq_RRX },
- /* 52 */ { 0, &Ia_pushq_RRX },
- /* 53 */ { 0, &Ia_pushq_RRX },
- /* 54 */ { 0, &Ia_pushq_RRX },
- /* 55 */ { 0, &Ia_pushq_RRX },
- /* 56 */ { 0, &Ia_pushq_RRX },
- /* 57 */ { 0, &Ia_pushq_RRX },
- /* 58 */ { 0, &Ia_popq_RRX },
- /* 59 */ { 0, &Ia_popq_RRX },
- /* 5A */ { 0, &Ia_popq_RRX },
- /* 5B */ { 0, &Ia_popq_RRX },
- /* 5C */ { 0, &Ia_popq_RRX },
- /* 5D */ { 0, &Ia_popq_RRX },
- /* 5E */ { 0, &Ia_popq_RRX },
- /* 5F */ { 0, &Ia_popq_RRX },
- /* 60 */ { 0, &Ia_Invalid },
- /* 61 */ { 0, &Ia_Invalid },
- /* 62 */ { 0, &Ia_Invalid },
- /* 63 */ { 0, &Ia_movslq_Gq_Ed },
- /* 64 */ { 0, &Ia_prefix_fs }, // FS:
- /* 65 */ { 0, &Ia_prefix_gs }, // GS:
- /* 66 */ { 0, &Ia_prefix_osize }, // OSIZE:
- /* 67 */ { 0, &Ia_prefix_asize }, // ASIZE:
- /* 68 */ { 0, &Ia_pushq_sId },
- /* 69 */ { 0, &Ia_imulq_Gq_Eq_sId },
- /* 6A */ { 0, &Ia_pushq_sIb },
- /* 6B */ { 0, &Ia_imulq_Gq_Eq_sIb },
- /* 6C */ { 0, &Ia_insb_Yb_DX },
- /* 6D */ { 0, &Ia_insl_Yd_DX },
- /* 6E */ { 0, &Ia_outsb_DX_Xb },
- /* 6F */ { 0, &Ia_outsl_DX_Xd },
- /* 70 */ { 0, &Ia_jo_Jb },
- /* 71 */ { 0, &Ia_jno_Jb },
- /* 72 */ { 0, &Ia_jb_Jb },
- /* 73 */ { 0, &Ia_jnb_Jb },
- /* 74 */ { 0, &Ia_jz_Jb },
- /* 75 */ { 0, &Ia_jnz_Jb },
- /* 76 */ { 0, &Ia_jbe_Jb },
- /* 77 */ { 0, &Ia_jnbe_Jb },
- /* 78 */ { 0, &Ia_js_Jb },
- /* 79 */ { 0, &Ia_jns_Jb },
- /* 7A */ { 0, &Ia_jp_Jb },
- /* 7B */ { 0, &Ia_jnp_Jb },
- /* 7C */ { 0, &Ia_jl_Jb },
- /* 7D */ { 0, &Ia_jnl_Jb },
- /* 7E */ { 0, &Ia_jle_Jb },
- /* 7F */ { 0, &Ia_jnle_Jb },
- /* 80 */ { GRPN(G1EbIb) },
- /* 81 */ { GRPN(G1EqId) },
- /* 82 */ { 0, &Ia_Invalid },
- /* 83 */ { GRPN(G1EqIb) },
- /* 84 */ { 0, &Ia_testb_Eb_Gb },
- /* 85 */ { 0, &Ia_testq_Eq_Gq },
- /* 86 */ { 0, &Ia_xchgb_Eb_Gb },
- /* 87 */ { 0, &Ia_xchgq_Eq_Gq },
- /* 88 */ { 0, &Ia_movb_Eb_Gb },
- /* 89 */ { 0, &Ia_movq_Eq_Gq },
- /* 8A */ { 0, &Ia_movb_Gb_Eb },
- /* 8B */ { 0, &Ia_movq_Gq_Eq },
- /* 8C */ { 0, &Ia_movw_Ew_Sw },
- /* 8D */ { 0, &Ia_leaq_Gq_Mq },
- /* 8E */ { 0, &Ia_movw_Sw_Ew },
- /* 8F */ { 0, &Ia_popq_Eq },
- /* 90 */ { 0, &Ia_xchgq_RRX_RAX }, // handle XCHG R8, RAX
- /* 91 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 92 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 93 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 94 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 95 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 96 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 97 */ { 0, &Ia_xchgq_RRX_RAX },
- /* 98 */ { 0, &Ia_cdqe },
- /* 99 */ { 0, &Ia_cqo },
- /* 9A */ { 0, &Ia_Invalid },
- /* 9B */ { 0, &Ia_fwait },
- /* 9C */ { 0, &Ia_pushfq },
- /* 9D */ { 0, &Ia_popfq },
- /* 9E */ { 0, &Ia_sahf },
- /* 9F */ { 0, &Ia_lahf },
- /* A0 */ { 0, &Ia_movb_AL_Ob },
- /* A1 */ { 0, &Ia_movq_RAX_Oq },
- /* A0 */ { 0, &Ia_movb_Ob_AL },
- /* A1 */ { 0, &Ia_movq_Oq_RAX },
- /* A4 */ { 0, &Ia_movsb_Yb_Xb },
- /* A5 */ { 0, &Ia_movsq_Yq_Xq },
- /* A6 */ { 0, &Ia_cmpsb_Yb_Xb },
- /* A7 */ { 0, &Ia_cmpsq_Yq_Xq },
- /* A8 */ { 0, &Ia_testb_AL_Ib },
- /* A9 */ { 0, &Ia_testq_RAX_sId },
- /* AA */ { 0, &Ia_stosb_Yb_AL },
- /* AB */ { 0, &Ia_stosq_Yq_RAX },
- /* AC */ { 0, &Ia_lodsb_AL_Xb },
- /* AD */ { 0, &Ia_lodsq_RAX_Xq },
- /* AE */ { 0, &Ia_scasb_Yb_AL },
- /* AF */ { 0, &Ia_scasq_Yq_RAX },
- /* B0 */ { 0, &Ia_movb_R8_Ib },
- /* B1 */ { 0, &Ia_movb_R8_Ib },
- /* B2 */ { 0, &Ia_movb_R8_Ib },
- /* B3 */ { 0, &Ia_movb_R8_Ib },
- /* B4 */ { 0, &Ia_movb_R8_Ib },
- /* B5 */ { 0, &Ia_movb_R8_Ib },
- /* B6 */ { 0, &Ia_movb_R8_Ib },
- /* B7 */ { 0, &Ia_movb_R8_Ib },
- /* B8 */ { 0, &Ia_movq_RRX_Iq },
- /* B9 */ { 0, &Ia_movq_RRX_Iq },
- /* BA */ { 0, &Ia_movq_RRX_Iq },
- /* BB */ { 0, &Ia_movq_RRX_Iq },
- /* BC */ { 0, &Ia_movq_RRX_Iq },
- /* BD */ { 0, &Ia_movq_RRX_Iq },
- /* BE */ { 0, &Ia_movq_RRX_Iq },
- /* BF */ { 0, &Ia_movq_RRX_Iq },
- /* C0 */ { GRPN(G2Eb) },
- /* C1 */ { GRPN(G2Eq) },
- /* C2 */ { 0, &Ia_ret_Iw },
- /* C3 */ { 0, &Ia_ret },
- /* C4 */ { 0, &Ia_Invalid },
- /* C5 */ { 0, &Ia_Invalid },
- /* C6 */ { 0, &Ia_movb_Eb_Ib },
- /* C7 */ { 0, &Ia_movq_Eq_sId },
- /* C8 */ { 0, &Ia_enter },
- /* C9 */ { 0, &Ia_leave },
- /* CA */ { 0, &Ia_lret_Iw },
- /* CB */ { 0, &Ia_lret },
- /* CC */ { 0, &Ia_int3 },
- /* CD */ { 0, &Ia_int_Ib },
- /* CE */ { 0, &Ia_Invalid },
- /* CF */ { 0, &Ia_iretq },
- /* D0 */ { GRPN(G2EbI1) },
- /* D1 */ { GRPN(G2EqI1) },
- /* D2 */ { GRPN(G2EbCL) },
- /* D3 */ { GRPN(G2EqCL) },
- /* D4 */ { 0, &Ia_Invalid },
- /* D5 */ { 0, &Ia_Invalid },
- /* D6 */ { 0, &Ia_Invalid },
- /* D7 */ { 0, &Ia_xlat },
- /* D8 */ { GRPFP(D8) },
- /* D9 */ { GRPFP(D9) },
- /* DA */ { GRPFP(DA) },
- /* DB */ { GRPFP(DB) },
- /* DC */ { GRPFP(DC) },
- /* DD */ { GRPFP(DD) },
- /* DE */ { GRPFP(DE) },
- /* DF */ { GRPFP(DF) },
- /* E0 */ { 0, &Ia_loopne_Jb },
- /* E1 */ { 0, &Ia_loope_Jb },
- /* E2 */ { 0, &Ia_loop_Jb },
- /* E3 */ { 0, &Ia_jrcxz_Jb },
- /* E4 */ { 0, &Ia_inb_AL_Ib },
- /* E5 */ { 0, &Ia_inl_EAX_Ib },
- /* E6 */ { 0, &Ia_outb_Ib_AL },
- /* E7 */ { 0, &Ia_outl_Ib_EAX },
- /* E8 */ { 0, &Ia_call_Jd },
- /* E9 */ { 0, &Ia_jmp_Jd },
- /* EA */ { 0, &Ia_Invalid },
- /* EB */ { 0, &Ia_jmp_Jb },
- /* EC */ { 0, &Ia_inb_AL_DX },
- /* ED */ { 0, &Ia_inl_EAX_DX },
- /* EE */ { 0, &Ia_outb_DX_AL },
- /* EF */ { 0, &Ia_outl_DX_EAX },
- /* F0 */ { 0, &Ia_prefix_lock }, // LOCK:
- /* F1 */ { 0, &Ia_int1 },
- /* F2 */ { 0, &Ia_prefix_repne }, // REPNE:
- /* F3 */ { 0, &Ia_prefix_rep }, // REP:
- /* F4 */ { 0, &Ia_hlt },
- /* F5 */ { 0, &Ia_cmc },
- /* F6 */ { GRPN(G3Eb) },
- /* F7 */ { GRPN(G3Eq) },
- /* F8 */ { 0, &Ia_clc },
- /* F9 */ { 0, &Ia_stc },
- /* FA */ { 0, &Ia_cli },
- /* FB */ { 0, &Ia_sti },
- /* FC */ { 0, &Ia_cld },
- /* FD */ { 0, &Ia_std },
- /* FE */ { GRPN(G4) },
- /* FF */ { GRPN(64G5q) },
-
- // 256 entries for two byte opcodes
- /* 0F 00 */ { GRPN(G6) },
- /* 0F 01 */ { GRPN(G7) },
- /* 0F 02 */ { 0, &Ia_larq_Gq_Ew },
- /* 0F 03 */ { 0, &Ia_lslq_Gq_Ew },
- /* 0F 04 */ { 0, &Ia_Invalid },
- /* 0F 05 */ { 0, &Ia_syscall },
- /* 0F 06 */ { 0, &Ia_clts },
- /* 0F 07 */ { 0, &Ia_sysret },
- /* 0F 08 */ { 0, &Ia_invd },
- /* 0F 09 */ { 0, &Ia_wbinvd },
- /* 0F 0A */ { 0, &Ia_Invalid },
- /* 0F 0B */ { 0, &Ia_ud2a },
- /* 0F 0C */ { 0, &Ia_Invalid },
- /* 0F 0D */ { 0, &Ia_prefetch }, // 3DNow!
- /* 0F 0E */ { 0, &Ia_femms }, // 3DNow!
- /* 0F 0F */ { GRP3DNOW },
- /* 0F 10 */ { GRPSSE(0f10) },
- /* 0F 11 */ { GRPSSE(0f11) },
- /* 0F 12 */ { GRPSSE(0f12) },
- /* 0F 13 */ { GRPSSE(0f13) },
- /* 0F 14 */ { GRPSSE(0f14) },
- /* 0F 15 */ { GRPSSE(0f15) },
- /* 0F 16 */ { GRPSSE(0f16) },
- /* 0F 17 */ { GRPSSE(0f17) },
- /* 0F 18 */ { GRPN(G16) },
- /* 0F 19 */ { 0, &Ia_Invalid },
- /* 0F 1A */ { 0, &Ia_Invalid },
- /* 0F 1B */ { 0, &Ia_Invalid },
- /* 0F 1C */ { 0, &Ia_Invalid },
- /* 0F 1D */ { 0, &Ia_Invalid },
- /* 0F 1E */ { 0, &Ia_Invalid },
- /* 0F 1F */ { 0, &Ia_multibyte_nop },
- /* 0F 20 */ { 0, &Ia_movq_Rq_Cq },
- /* 0F 21 */ { 0, &Ia_movq_Rq_Dq },
- /* 0F 22 */ { 0, &Ia_movq_Cq_Rq },
- /* 0F 23 */ { 0, &Ia_movq_Dq_Rq },
- /* 0F 24 */ { 0, &Ia_Invalid },
- /* 0F 25 */ { 0, &Ia_Invalid },
- /* 0F 26 */ { 0, &Ia_Invalid },
- /* 0F 27 */ { 0, &Ia_Invalid },
- /* 0F 28 */ { GRPSSE(0f28) },
- /* 0F 29 */ { GRPSSE(0f29) },
- /* 0F 2A */ { GRPSSE(640f2a) },
- /* 0F 2B */ { GRPSSE(0f2b) },
- /* 0F 2C */ { GRPSSE(0f2cQ) },
- /* 0F 2D */ { GRPSSE(0f2dQ) },
- /* 0F 2E */ { GRPSSE(0f2e) },
- /* 0F 2F */ { GRPSSE(0f2f) },
- /* 0F 30 */ { 0, &Ia_wrmsr },
- /* 0F 31 */ { 0, &Ia_rdtsc },
- /* 0F 32 */ { 0, &Ia_rdmsr },
- /* 0F 33 */ { 0, &Ia_rdpmc },
- /* 0F 34 */ { 0, &Ia_sysenter },
- /* 0F 35 */ { 0, &Ia_sysexit },
- /* 0F 36 */ { 0, &Ia_Invalid },
- /* 0F 37 */ { 0, &Ia_Invalid },
- /* 0F 38 */ { GR3BTAB(A4) },
- /* 0F 39 */ { 0, &Ia_Invalid },
- /* 0F 3A */ { GR3BTAB(A5) },
- /* 0F 3B */ { 0, &Ia_Invalid },
- /* 0F 3C */ { 0, &Ia_Invalid },
- /* 0F 3D */ { 0, &Ia_Invalid },
- /* 0F 3E */ { 0, &Ia_Invalid },
- /* 0F 3F */ { 0, &Ia_Invalid },
- /* 0F 40 */ { 0, &Ia_cmovoq_Gq_Eq },
- /* 0F 41 */ { 0, &Ia_cmovnoq_Gq_Eq },
- /* 0F 42 */ { 0, &Ia_cmovcq_Gq_Eq },
- /* 0F 43 */ { 0, &Ia_cmovncq_Gq_Eq },
- /* 0F 44 */ { 0, &Ia_cmovzq_Gq_Eq },
- /* 0F 45 */ { 0, &Ia_cmovnzq_Gq_Eq },
- /* 0F 46 */ { 0, &Ia_cmovnaq_Gq_Eq },
- /* 0F 47 */ { 0, &Ia_cmovaq_Gq_Eq },
- /* 0F 48 */ { 0, &Ia_cmovsq_Gq_Eq },
- /* 0F 49 */ { 0, &Ia_cmovnsq_Gq_Eq },
- /* 0F 4A */ { 0, &Ia_cmovpq_Gq_Eq },
- /* 0F 4B */ { 0, &Ia_cmovnpq_Gq_Eq },
- /* 0F 4C */ { 0, &Ia_cmovlq_Gq_Eq },
- /* 0F 4D */ { 0, &Ia_cmovnlq_Gq_Eq },
- /* 0F 4E */ { 0, &Ia_cmovngq_Gq_Eq },
- /* 0F 4F */ { 0, &Ia_cmovgq_Gq_Eq },
- /* 0F 50 */ { GRPSSE(0f50) },
- /* 0F 51 */ { GRPSSE(0f51) },
- /* 0F 52 */ { GRPSSE(0f52) },
- /* 0F 53 */ { GRPSSE(0f53) },
- /* 0F 54 */ { GRPSSE(0f54) },
- /* 0F 55 */ { GRPSSE(0f55) },
- /* 0F 56 */ { GRPSSE(0f56) },
- /* 0F 57 */ { GRPSSE(0f57) },
- /* 0F 58 */ { GRPSSE(0f58) },
- /* 0F 59 */ { GRPSSE(0f59) },
- /* 0F 5A */ { GRPSSE(0f5a) },
- /* 0F 5B */ { GRPSSE(0f5b) },
- /* 0F 5C */ { GRPSSE(0f5c) },
- /* 0F 5D */ { GRPSSE(0f5d) },
- /* 0F 5E */ { GRPSSE(0f5e) },
- /* 0F 5F */ { GRPSSE(0f5f) },
- /* 0F 60 */ { GRPSSE(0f60) },
- /* 0F 61 */ { GRPSSE(0f61) },
- /* 0F 62 */ { GRPSSE(0f62) },
- /* 0F 63 */ { GRPSSE(0f63) },
- /* 0F 64 */ { GRPSSE(0f64) },
- /* 0F 65 */ { GRPSSE(0f65) },
- /* 0F 66 */ { GRPSSE(0f66) },
- /* 0F 67 */ { GRPSSE(0f67) },
- /* 0F 68 */ { GRPSSE(0f68) },
- /* 0F 69 */ { GRPSSE(0f69) },
- /* 0F 6A */ { GRPSSE(0f6a) },
- /* 0F 6B */ { GRPSSE(0f6b) },
- /* 0F 6C */ { GRPSSE(0f6c) },
- /* 0F 6D */ { GRPSSE(0f6d) },
- /* 0F 6E */ { GRPSSE(0f6eQ) },
- /* 0F 6F */ { GRPSSE(0f6f) },
- /* 0F 70 */ { GRPSSE(0f70) },
- /* 0F 71 */ { GRPN(G12) },
- /* 0F 72 */ { GRPN(G13) },
- /* 0F 73 */ { GRPN(G14) },
- /* 0F 74 */ { GRPSSE(0f74) },
- /* 0F 75 */ { GRPSSE(0f75) },
- /* 0F 76 */ { GRPSSE(0f76) },
- /* 0F 77 */ { 0, &Ia_emms },
- /* 0F 78 */ { 0, &Ia_Invalid },
- /* 0F 79 */ { 0, &Ia_Invalid },
- /* 0F 7A */ { 0, &Ia_Invalid },
- /* 0F 7B */ { 0, &Ia_Invalid },
- /* 0F 7C */ { GRPSSE(0f7c) },
- /* 0F 7D */ { GRPSSE(0f7d) },
- /* 0F 7E */ { GRPSSE(0f7eQ) },
- /* 0F 7F */ { GRPSSE(0f7f) },
- /* 0F 80 */ { 0, &Ia_jo_Jd },
- /* 0F 81 */ { 0, &Ia_jno_Jd },
- /* 0F 82 */ { 0, &Ia_jb_Jd },
- /* 0F 83 */ { 0, &Ia_jnb_Jd },
- /* 0F 84 */ { 0, &Ia_jz_Jd },
- /* 0F 85 */ { 0, &Ia_jnz_Jd },
- /* 0F 86 */ { 0, &Ia_jbe_Jd },
- /* 0F 87 */ { 0, &Ia_jnbe_Jd },
- /* 0F 88 */ { 0, &Ia_js_Jd },
- /* 0F 89 */ { 0, &Ia_jns_Jd },
- /* 0F 8A */ { 0, &Ia_jp_Jd },
- /* 0F 8B */ { 0, &Ia_jnp_Jd },
- /* 0F 8C */ { 0, &Ia_jl_Jd },
- /* 0F 8D */ { 0, &Ia_jnl_Jd },
- /* 0F 8E */ { 0, &Ia_jle_Jd },
- /* 0F 8F */ { 0, &Ia_jnle_Jd },
- /* 0F 90 */ { 0, &Ia_seto_Eb },
- /* 0F 91 */ { 0, &Ia_setno_Eb },
- /* 0F 92 */ { 0, &Ia_setb_Eb },
- /* 0F 93 */ { 0, &Ia_setnb_Eb },
- /* 0F 94 */ { 0, &Ia_setz_Eb },
- /* 0F 95 */ { 0, &Ia_setnz_Eb },
- /* 0F 96 */ { 0, &Ia_setbe_Eb },
- /* 0F 97 */ { 0, &Ia_setnbe_Eb },
- /* 0F 98 */ { 0, &Ia_sets_Eb },
- /* 0F 99 */ { 0, &Ia_setns_Eb },
- /* 0F 9A */ { 0, &Ia_setp_Eb },
- /* 0F 9B */ { 0, &Ia_setnp_Eb },
- /* 0F 9C */ { 0, &Ia_setl_Eb },
- /* 0F 9D */ { 0, &Ia_setnl_Eb },
- /* 0F 9E */ { 0, &Ia_setle_Eb },
- /* 0F 9F */ { 0, &Ia_setnle_Eb },
- /* 0F A0 */ { 0, &Ia_pushq_FS },
- /* 0F A1 */ { 0, &Ia_popq_FS },
- /* 0F A2 */ { 0, &Ia_cpuid },
- /* 0F A3 */ { 0, &Ia_btq_Eq_Gq },
- /* 0F A4 */ { 0, &Ia_shldq_Eq_Gq_Ib },
- /* 0F A5 */ { 0, &Ia_shldq_Eq_Gq_CL },
- /* 0F A6 */ { 0, &Ia_Invalid },
- /* 0F A7 */ { 0, &Ia_Invalid },
- /* 0F A8 */ { 0, &Ia_pushq_GS },
- /* 0F A9 */ { 0, &Ia_popq_GS },
- /* 0F AA */ { 0, &Ia_rsm },
- /* 0F AB */ { 0, &Ia_btsq_Eq_Gq },
- /* 0F AC */ { 0, &Ia_shrdq_Eq_Gq_Ib },
- /* 0F AD */ { 0, &Ia_shrdq_Eq_Gq_CL },
- /* 0F AE */ { GRPN(G15) },
- /* 0F AF */ { 0, &Ia_imulq_Gq_Eq },
- /* 0F B0 */ { 0, &Ia_cmpxchgb_Eb_Gb },
- /* 0F B1 */ { 0, &Ia_cmpxchgq_Eq_Gq },
- /* 0F B2 */ { 0, &Ia_lssq_Gq_Mp },
- /* 0F B3 */ { 0, &Ia_btrq_Eq_Gq },
- /* 0F B4 */ { 0, &Ia_lfsq_Gq_Mp },
- /* 0F B5 */ { 0, &Ia_lgsq_Gq_Mp },
- /* 0F B6 */ { 0, &Ia_movzbq_Gq_Eb },
- /* 0F B7 */ { 0, &Ia_movzwq_Gq_Ew },
- /* 0F B8 */ { 0, &Ia_Invalid },
- /* 0F B9 */ { 0, &Ia_ud2b },
- /* 0F BA */ { GRPN(G8EqIb) },
- /* 0F BB */ { 0, &Ia_btcq_Eq_Gq },
- /* 0F BC */ { 0, &Ia_bsfq_Gq_Eq },
- /* 0F BD */ { 0, &Ia_bsrq_Gq_Eq },
- /* 0F BE */ { 0, &Ia_movsbq_Gq_Eb },
- /* 0F BF */ { 0, &Ia_movswq_Gq_Ew },
- /* 0F C0 */ { 0, &Ia_xaddb_Eb_Gb },
- /* 0F C0 */ { 0, &Ia_xaddq_Eq_Gq },
- /* 0F C2 */ { GRPSSE(0fc2) },
- /* 0F C3 */ { GRPSSE(640fc3) },
- /* 0F C4 */ { GRPSSE(0fc4) },
- /* 0F C5 */ { GRPSSE(0fc5) },
- /* 0F C6 */ { GRPSSE(0fc6) },
- /* 0F C7 */ { GRPN(G9q) },
- /* 0F C8 */ { 0, &Ia_bswapq_RRX },
- /* 0F C9 */ { 0, &Ia_bswapq_RRX },
- /* 0F CA */ { 0, &Ia_bswapq_RRX },
- /* 0F CB */ { 0, &Ia_bswapq_RRX },
- /* 0F CC */ { 0, &Ia_bswapq_RRX },
- /* 0F CD */ { 0, &Ia_bswapq_RRX },
- /* 0F CE */ { 0, &Ia_bswapq_RRX },
- /* 0F CF */ { 0, &Ia_bswapq_RRX },
- /* 0F D0 */ { GRPSSE(0fd0) },
- /* 0F D1 */ { GRPSSE(0fd1) },
- /* 0F D2 */ { GRPSSE(0fd2) },
- /* 0F D3 */ { GRPSSE(0fd3) },
- /* 0F D4 */ { GRPSSE(0fd4) },
- /* 0F D5 */ { GRPSSE(0fd5) },
- /* 0F D6 */ { GRPSSE(0fd6) },
- /* 0F D7 */ { GRPSSE(0fd7) },
- /* 0F D8 */ { GRPSSE(0fd8) },
- /* 0F D9 */ { GRPSSE(0fd9) },
- /* 0F DA */ { GRPSSE(0fda) },
- /* 0F DB */ { GRPSSE(0fdb) },
- /* 0F DC */ { GRPSSE(0fdc) },
- /* 0F DD */ { GRPSSE(0fdd) },
- /* 0F DE */ { GRPSSE(0fde) },
- /* 0F DF */ { GRPSSE(0fdf) },
- /* 0F E0 */ { GRPSSE(0fe0) },
- /* 0F E1 */ { GRPSSE(0fe1) },
- /* 0F E2 */ { GRPSSE(0fe2) },
- /* 0F E3 */ { GRPSSE(0fe3) },
- /* 0F E4 */ { GRPSSE(0fe4) },
- /* 0F E5 */ { GRPSSE(0fe5) },
- /* 0F E6 */ { GRPSSE(0fe6) },
- /* 0F E7 */ { GRPSSE(0fe7) },
- /* 0F E8 */ { GRPSSE(0fe8) },
- /* 0F E9 */ { GRPSSE(0fe9) },
- /* 0F EA */ { GRPSSE(0fea) },
- /* 0F EB */ { GRPSSE(0feb) },
- /* 0F EC */ { GRPSSE(0fec) },
- /* 0F ED */ { GRPSSE(0fed) },
- /* 0F EE */ { GRPSSE(0fee) },
- /* 0F EF */ { GRPSSE(0fef) },
- /* 0F F0 */ { GRPSSE(0ff0) },
- /* 0F F1 */ { GRPSSE(0ff1) },
- /* 0F F2 */ { GRPSSE(0ff2) },
- /* 0F F3 */ { GRPSSE(0ff3) },
- /* 0F F4 */ { GRPSSE(0ff4) },
- /* 0F F5 */ { GRPSSE(0ff5) },
- /* 0F F6 */ { GRPSSE(0ff6) },
- /* 0F F7 */ { GRPSSE(0ff7) },
- /* 0F F8 */ { GRPSSE(0ff8) },
- /* 0F F9 */ { GRPSSE(0ff9) },
- /* 0F FA */ { GRPSSE(0ffa) },
- /* 0F FB */ { GRPSSE(0ffb) },
- /* 0F FC */ { GRPSSE(0ffc) },
- /* 0F FD */ { GRPSSE(0ffd) },
- /* 0F FE */ { GRPSSE(0ffe) },
- /* 0F FF */ { 0, &Ia_Invalid }
-};
diff --git a/Externals/Bochs_disasm/dis_tables_avx.inc b/Externals/Bochs_disasm/dis_tables_avx.inc
new file mode 100644
index 0000000000..86bb55d14c
--- /dev/null
+++ b/Externals/Bochs_disasm/dis_tables_avx.inc
@@ -0,0 +1,1478 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: dis_tables_avx.inc 11878 2013-10-11 20:09:51Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2011 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+/* ************************************************************************ */
+/* AVX VEX-encoded 0x0F, 0x0F 0x38 and 0x0F 0x3A opcodes */
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f10[4] = {
+ /* -- */ { 0, &Ia_vmovups_Vps_Wps },
+ /* 66 */ { 0, &Ia_vmovupd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_vmovss_Vss_Wss },
+ /* F2 */ { 0, &Ia_vmovsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f11[4] = {
+ /* -- */ { 0, &Ia_vmovups_Wps_Vps },
+ /* 66 */ { 0, &Ia_vmovupd_Wpd_Vpd },
+ /* F3 */ { 0, &Ia_vmovss_Wss_Vss },
+ /* F2 */ { 0, &Ia_vmovsd_Wsd_Vsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModVMOVHLPS[2] = {
+ /* R */ { 0, &Ia_vmovhlps_Vps_Hdq_Udq },
+ /* M */ { 0, &Ia_vmovlps_Vps_Hdq_Mq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f12[4] = {
+ /* -- */ { GRPMOD(VMOVHLPS) },
+ /* 66 */ { 0, &Ia_vmovlpd_Vpd_Hdq_Mq },
+ /* F3 */ { 0, &Ia_vmovsldup_Vdq_Wdq },
+ /* F2 */ { 0, &Ia_vmovddup_Vdq_Wq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f13[2] = {
+ /* -- */ { 0, &Ia_vmovlps_Mq_Vps },
+ /* 66 */ { 0, &Ia_vmovlpd_Mq_Vpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f14[2] = {
+ /* -- */ { 0, &Ia_vunpcklps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vunpcklpd_Vpd_Hpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f15[2] = {
+ /* -- */ { 0, &Ia_vunpckhps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vunpckhpd_Vpd_Hpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModVMOVLHPS[2] = {
+ /* R */ { 0, &Ia_vmovlhps_Vps_Hdq_Udq },
+ /* M */ { 0, &Ia_vmovhps_Vps_Hdq_Mq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f16[4] = {
+ /* -- */ { GRPMOD(VMOVLHPS) },
+ /* 66 */ { 0, &Ia_vmovhpd_Vpd_Hdq_Mq },
+ /* F3 */ { 0, &Ia_vmovshdup_Vdq_Wdq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f17[2] = {
+ /* -- */ { 0, &Ia_vmovhps_Mq_Vps },
+ /* 66 */ { 0, &Ia_vmovhpd_Mq_Vpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f28[2] = {
+ /* -- */ { 0, &Ia_vmovaps_Vps_Wps },
+ /* 66 */ { 0, &Ia_vmovapd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f29[2] = {
+ /* -- */ { 0, &Ia_vmovaps_Wps_Vps },
+ /* 66 */ { 0, &Ia_vmovapd_Wpd_Vpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f2a[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_vcvtsi2ss_Vss_Hps_Ey },
+ /* F2 */ { 0, &Ia_vcvtsi2sd_Vsd_Hpd_Ey }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f2b[2] = {
+ /* -- */ { 0, &Ia_vmovntps_Mps_Vps },
+ /* 66 */ { 0, &Ia_vmovntpd_Mpd_Vpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f2c[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_vcvttss2si_Gy_Wss },
+ /* F2 */ { 0, &Ia_vcvttsd2si_Gy_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f2d[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_vcvtss2si_Gy_Wss },
+ /* F2 */ { 0, &Ia_vcvtsd2si_Gy_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f2e[2] = {
+ /* -- */ { 0, &Ia_vucomiss_Vss_Wss },
+ /* 66 */ { 0, &Ia_vucomisd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f2f[2] = {
+ /* -- */ { 0, &Ia_vcomiss_Vss_Wss },
+ /* 66 */ { 0, &Ia_vcomisd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f50[2] = {
+ /* -- */ { 0, &Ia_vmovmskps_Gd_Ups },
+ /* 66 */ { 0, &Ia_vmovmskpd_Gd_Upd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f51[4] = {
+ /* -- */ { 0, &Ia_vsqrtps_Vps_Wps },
+ /* 66 */ { 0, &Ia_vsqrtpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_vsqrtss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vsqrtsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f52[4] = {
+ /* -- */ { 0, &Ia_vrsqrtps_Vps_Wps },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_vrsqrtss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f53[4] = {
+ /* -- */ { 0, &Ia_vrcpps_Vps_Wps },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_vrcpss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f54[2] = {
+ /* -- */ { 0, &Ia_vandps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vandpd_Vpd_Hpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f55[2] = {
+ /* -- */ { 0, &Ia_vandnps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vandnpd_Vpd_Hpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f56[2] = {
+ /* -- */ { 0, &Ia_vorps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vorpd_Vpd_Hpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f57[2] = {
+ /* -- */ { 0, &Ia_vxorps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vxorpd_Vpd_Hpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f58[4] = {
+ /* -- */ { 0, &Ia_vaddps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vaddpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_vaddss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vaddsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f59[4] = {
+ /* -- */ { 0, &Ia_vmulps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vmulpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_vmulss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vmulsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f5a[4] = {
+ /* -- */ { 0, &Ia_vcvtps2pd_Vpd_Wps },
+ /* 66 */ { 0, &Ia_vcvtpd2ps_Vps_Wpd },
+ /* F3 */ { 0, &Ia_vcvtss2sd_Vsd_Hpd_Wss },
+ /* F2 */ { 0, &Ia_vcvtsd2ss_Vss_Hps_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f5b[4] = {
+ /* -- */ { 0, &Ia_vcvtdq2ps_Vps_Wdq },
+ /* 66 */ { 0, &Ia_vcvtps2dq_Vdq_Wps },
+ /* F3 */ { 0, &Ia_vcvttps2dq_Vdq_Wps },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f5c[4] = {
+ /* -- */ { 0, &Ia_vsubps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vsubpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_vsubss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vsubsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f5d[4] = {
+ /* -- */ { 0, &Ia_vminps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vminpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_vminss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vminsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f5e[4] = {
+ /* -- */ { 0, &Ia_vdivps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vdivpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_vdivss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vdivsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f5f[4] = {
+ /* -- */ { 0, &Ia_vmaxps_Vps_Hps_Wps },
+ /* 66 */ { 0, &Ia_vmaxpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_vmaxss_Vss_Hps_Wss },
+ /* F2 */ { 0, &Ia_vmaxsd_Vsd_Hpd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_AVX0f6e[3] = {
+ /* 0 */ { GRPSSE66(Ia_vmovd_Vdq_Ed) },
+ /* 1 */ { GRPSSE66(Ia_vmovq_Vdq_Eq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f6f[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vmovdqa_Vdq_Wdq },
+ /* F3 */ { 0, &Ia_vmovdqu_Vdq_Wdq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f70[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vpshufd_Vdq_Hdq_Wdq_Ib },
+ /* F3 */ { 0, &Ia_vpshufhw_Vdq_Hdq_Wdq_Ib },
+ /* F2 */ { 0, &Ia_vpshuflw_Vdq_Hdq_Wdq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f7c[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vhaddpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_vhaddps_Vps_Hps_Wps }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f7d[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vhsubpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_vhsubps_Vps_Hps_Wps }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_AVX660f7e[3] = {
+ /* 0 */ { 0, &Ia_vmovd_Ed_Vd },
+ /* 1 */ { 0, &Ia_vmovq_Eq_Vq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f7e[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { GRPVEXW(AVX660f7e) },
+ /* F3 */ { 0, &Ia_vmovq_Vq_Wq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f7f[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vmovdqa_Wdq_Vdq },
+ /* F3 */ { 0, &Ia_vmovdqu_Wdq_Vdq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0fc2[4] = {
+ /* -- */ { 0, &Ia_vcmpps_Vps_Hps_Wps_Ib },
+ /* 66 */ { 0, &Ia_vcmppd_Vpd_Hpd_Wpd_Ib },
+ /* F3 */ { 0, &Ia_vcmpss_Vss_Hps_Wss_Ib },
+ /* F2 */ { 0, &Ia_vcmpsd_Vsd_Hpd_Wsd_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0fc6[2] = {
+ /* -- */ { 0, &Ia_vshufps_Vps_Hps_Wps_Ib },
+ /* 66 */ { 0, &Ia_vshufpd_Vpd_Hpd_Wpd_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0fd0[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vaddsubpd_Vpd_Hpd_Wpd },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_vaddsubps_Vps_Hps_Wps }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0fe6[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_vcvttpd2dq_Vq_Wpd },
+ /* F3 */ { 0, &Ia_vcvtdq2pd_Vpd_Wq },
+ /* F2 */ { 0, &Ia_vcvtpd2dq_Vq_Wpd }
+};
+
+/* Group12 */
+static BxDisasmOpcodeTable_t BxDisasmGroupAVXG12[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { GRPSSE66(Ia_vpsrlw_Hdq_Udq_Ib) },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { GRPSSE66(Ia_vpsraw_Hdq_Udq_Ib) },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE66(Ia_vpsllw_Hdq_Udq_Ib) },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group13 */
+static BxDisasmOpcodeTable_t BxDisasmGroupAVXG13[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { GRPSSE66(Ia_vpsrld_Hdq_Udq_Ib) },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { GRPSSE66(Ia_vpsrad_Hdq_Udq_Ib) },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE66(Ia_vpslld_Hdq_Udq_Ib) },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+/* Group14 */
+static BxDisasmOpcodeTable_t BxDisasmGroupAVXG14[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { GRPSSE66(Ia_vpsrlq_Hdq_Udq_Ib) },
+ /* 3 */ { GRPSSE66(Ia_vpsrldq_Hdq_Udq_Ib) },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { GRPSSE66(Ia_vpsllq_Hdq_Udq_Ib) },
+ /* 7 */ { GRPSSE66(Ia_vpslldq_Hdq_Udq_Ib) }
+};
+
+/* Group15 */
+static BxDisasmOpcodeTable_t BxDisasmGroupAVXG15M[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_vldmxcsr },
+ /* 3 */ { 0, &Ia_vstmxcsr },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModAVXG15[2] = {
+ /* R */ { 0, &Ia_Invalid },
+ /* M */ { GRPN(AVXG15M) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a16[2] = {
+ /* 0 */ { GRPSSE66(Ia_vpextrd_Ed_Vdq_Ib) },
+ /* 1 */ { GRPSSE66(Ia_vpextrq_Eq_Vdq_Ib) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a22[2] = {
+ /* 0 */ { GRPSSE66(Ia_vpinsrd_Vdq_Hdq_Ed_Ib) },
+ /* 1 */ { GRPSSE66(Ia_vpinsrq_Vdq_Hdq_Eq_Ib) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a00[2] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { GRPSSE66(Ia_vpermq_Vdq_Wdq_Ib) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a01[2] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { GRPSSE66(Ia_vpermpd_Vpd_Wpd_Ib) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3845[2] = {
+ /* 0 */ { GRPSSE66(Ia_vpsrlvd_Vdq_Hdq_Wdq) },
+ /* 1 */ { GRPSSE66(Ia_vpsrlvq_Vdq_Hdq_Wdq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3847[2] = {
+ /* 0 */ { GRPSSE66(Ia_vpsllvd_Vdq_Hdq_Wdq) },
+ /* 1 */ { GRPSSE66(Ia_vpsllvq_Vdq_Hdq_Wdq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f388c[2] = {
+ /* 0 */ { GRPSSE66(Ia_vmaskmovd_Vdq_Hdq_Mdq) },
+ /* 1 */ { GRPSSE66(Ia_vmaskmovq_Vdq_Hdq_Mdq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f388e[2] = {
+ /* 0 */ { GRPSSE66(Ia_vmaskmovd_Mdq_Hdq_Vdq) },
+ /* 1 */ { GRPSSE66(Ia_vmaskmovq_Mdq_Hdq_Vdq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3890[2] = {
+ /* 0 */ { GRPSSE66(Ia_vgatherdd_Vdq_VSib_Hdq) },
+ /* 1 */ { GRPSSE66(Ia_vgatherdq_Vdq_VSib_Hdq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3891[2] = {
+ /* 0 */ { GRPSSE66(Ia_vgatherqd_Vdq_VSib_Hdq) },
+ /* 1 */ { GRPSSE66(Ia_vgatherqq_Vdq_VSib_Hdq) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3892[2] = {
+ /* 0 */ { GRPSSE66(Ia_vgatherdps_Vps_VSib_Hps) },
+ /* 1 */ { GRPSSE66(Ia_vgatherdpd_Vpd_VSib_Hpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3893[2] = {
+ /* 0 */ { GRPSSE66(Ia_vgatherqps_Vps_VSib_Hps) },
+ /* 1 */ { GRPSSE66(Ia_vgatherqpd_Vpd_VSib_Hpd) }
+};
+
+// FMA
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3896[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddsub132ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddsub132pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3897[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubadd132ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubadd132pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3898[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmadd132ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmadd132pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3899[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmadd132ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfmadd132sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f389a[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsub132ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmsub132pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f389b[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsub132ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfmsub132sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f389c[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmadd132ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfnmadd132pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f389d[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmadd132ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfnmadd132sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f389e[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsub132ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsub132pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f389f[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsub132ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsub132sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38a6[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddsub213ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddsub213pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38a7[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubadd213ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubadd213pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38a8[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmadd213ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmadd213pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38a9[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmadd213ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfmadd213sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38aa[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsub213ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmsub213pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38ab[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsub213ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfmsub213sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38ac[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmadd213ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfnmadd213pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38ad[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmadd213ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfnmadd213sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38ae[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsub213ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsub213pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38af[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsub213ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsub213sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38b6[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddsub231ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddsub231pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38b7[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubadd231ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubadd231pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38b8[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmadd231ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmadd231pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38b9[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmadd231ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfmadd231sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38ba[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsub231ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfmsub231pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38bb[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsub231ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfmsub231sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38bc[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmadd231ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfnmadd231pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38bd[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmadd231ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfnmadd231sd_Vpd_Hsd_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38be[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsub231ps_Vps_Hps_Wps) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsub231pd_Vpd_Hpd_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f38bf[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsub231ss_Vps_Hss_Wss) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsub231sd_Vpd_Hsd_Wsd) }
+};
+// FMA
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f38f5[4] = {
+ /* -- */ { 0, &Ia_bzhi_Gy_Ey_By },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_pext_Gy_By_Ey },
+ /* F2 */ { 0, &Ia_pdep_Gy_By_Ey }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupAVX_0f38f7[4] = {
+ /* -- */ { 0, &Ia_bextr_Gy_Ey_By },
+ /* 66 */ { 0, &Ia_shlx_Gy_Ey_By },
+ /* F3 */ { 0, &Ia_sarx_Gy_Ey_By },
+ /* F2 */ { 0, &Ia_shrx_Gy_Ey_By }
+};
+
+/* Group17 */
+static BxDisasmOpcodeTable_t BxDisasmGroupAVXG17[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_blsr_By_Ey },
+ /* 2 */ { 0, &Ia_blsmsk_By_Ey },
+ /* 3 */ { 0, &Ia_blsi_By_Ey },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+// FMA4 (AMD)
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a5c[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddsubps_Vps_Hps_Wps_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddsubps_Vps_Hps_VIb_Wps) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a5d[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddsubpd_Vpd_Hpd_Wpd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddsubpd_Vpd_Hpd_VIb_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a5e[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubaddps_Vps_Hps_Wps_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubaddps_Vps_Hps_VIb_Wps) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a5f[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubaddpd_Vpd_Hpd_Wpd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubaddpd_Vpd_Hpd_VIb_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a68[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddps_Vps_Hps_Wps_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddps_Vps_Hps_VIb_Wps) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a69[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddpd_Vpd_Hpd_Wpd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddpd_Vpd_Hpd_VIb_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a6a[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddss_Vss_Hss_Wss_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddss_Vss_Hss_VIb_Wss) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a6b[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmaddsd_Vsd_Hsd_Wsd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmaddsd_Vsd_Hsd_VIb_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a6c[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubps_Vps_Hps_Wps_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubps_Vps_Hps_VIb_Wps) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a6d[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubpd_Vpd_Hpd_Wpd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubpd_Vpd_Hpd_VIb_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a6e[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubss_Vss_Hss_Wss_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubss_Vss_Hss_VIb_Wss) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a6f[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfmsubsd_Vsd_Hsd_Wsd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfmsubsd_Vsd_Hsd_VIb_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a78[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmaddps_Vps_Hps_Wps_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmaddps_Vps_Hps_VIb_Wps) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a79[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmaddpd_Vpd_Hpd_Wpd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmaddpd_Vpd_Hpd_VIb_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a7a[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmaddss_Vss_Hss_Wss_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmaddss_Vss_Hss_VIb_Wss) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a7b[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmaddsd_Vsd_Hsd_Wsd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmaddsd_Vsd_Hsd_VIb_Wsd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a7c[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsubps_Vps_Hps_Wps_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsubps_Vps_Hps_VIb_Wps) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a7d[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsubpd_Vpd_Hpd_Wpd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsubpd_Vpd_Hpd_VIb_Wpd) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a7e[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsubss_Vss_Hss_Wss_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsubss_Vss_Hss_VIb_Wss) }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_0f3a7f[2] = {
+ /* 0 */ { GRPSSE66(Ia_vfnmsubsd_Vsd_Hsd_Wsd_VIb) },
+ /* 1 */ { GRPSSE66(Ia_vfnmsubsd_Vsd_Hsd_VIb_Wsd) }
+};
+// FMA4 (AMD)
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodesAVX[256*3] = {
+ // 256 entries for VEX-encoded 0x0F opcodes
+ /* 00 */ { 0, &Ia_Invalid },
+ /* 01 */ { 0, &Ia_Invalid },
+ /* 02 */ { 0, &Ia_Invalid },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { 0, &Ia_Invalid },
+ /* 05 */ { 0, &Ia_Invalid },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_Invalid },
+ /* 09 */ { 0, &Ia_Invalid },
+ /* 0A */ { 0, &Ia_Invalid },
+ /* 0B */ { 0, &Ia_Invalid },
+ /* 0C */ { 0, &Ia_Invalid },
+ /* 0D */ { 0, &Ia_Invalid },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_Invalid },
+ /* 10 */ { GRPAVX(0f10) },
+ /* 11 */ { GRPAVX(0f11) },
+ /* 12 */ { GRPAVX(0f12) },
+ /* 13 */ { GRPAVX2(0f13) },
+ /* 14 */ { GRPAVX2(0f14) },
+ /* 15 */ { GRPAVX2(0f15) },
+ /* 16 */ { GRPAVX(0f16) },
+ /* 17 */ { GRPAVX2(0f17) },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_Invalid },
+ /* 1D */ { 0, &Ia_Invalid },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_Invalid },
+ /* 21 */ { 0, &Ia_Invalid },
+ /* 22 */ { 0, &Ia_Invalid },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { GRPAVX2(0f28) },
+ /* 29 */ { GRPAVX2(0f29) },
+ /* 2A */ { GRPAVX(0f2a) },
+ /* 2B */ { GRPAVX2(0f2b) },
+ /* 2C */ { GRPAVX(0f2c) },
+ /* 2C */ { GRPAVX(0f2d) },
+ /* 2E */ { GRPAVX2(0f2e) },
+ /* 2F */ { GRPAVX2(0f2f) },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_Invalid },
+ /* 39 */ { 0, &Ia_Invalid },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_Invalid },
+ /* 41 */ { 0, &Ia_Invalid },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { GRPAVX2(0f50) },
+ /* 51 */ { GRPAVX(0f51) },
+ /* 52 */ { GRPAVX(0f52) },
+ /* 53 */ { GRPAVX(0f53) },
+ /* 54 */ { GRPAVX2(0f54) },
+ /* 55 */ { GRPAVX2(0f55) },
+ /* 56 */ { GRPAVX2(0f56) },
+ /* 57 */ { GRPAVX2(0f57) },
+ /* 58 */ { GRPAVX(0f58) },
+ /* 59 */ { GRPAVX(0f59) },
+ /* 5A */ { GRPAVX(0f5a) },
+ /* 5B */ { GRPAVX(0f5b) },
+ /* 5C */ { GRPAVX(0f5c) },
+ /* 5D */ { GRPAVX(0f5d) },
+ /* 5E */ { GRPAVX(0f5e) },
+ /* 5F */ { GRPAVX(0f5f) },
+ /* 60 */ { GRPSSE66(Ia_vpunpcklbw_Vdq_Hdq_Wdq) },
+ /* 61 */ { GRPSSE66(Ia_vpunpcklwd_Vdq_Hdq_Wdq) },
+ /* 62 */ { GRPSSE66(Ia_vpunpckldq_Vdq_Hdq_Wdq) },
+ /* 63 */ { GRPSSE66(Ia_vpacksswb_Vdq_Hdq_Wdq) },
+ /* 64 */ { GRPSSE66(Ia_vpcmpgtb_Vdq_Hdq_Wdq) },
+ /* 65 */ { GRPSSE66(Ia_vpcmpgtw_Vdq_Hdq_Wdq) },
+ /* 66 */ { GRPSSE66(Ia_vpcmpgtd_Vdq_Hdq_Wdq) },
+ /* 67 */ { GRPSSE66(Ia_vpackuswb_Vdq_Hdq_Wdq) },
+ /* 68 */ { GRPSSE66(Ia_vpunpckhbw_Vdq_Hdq_Wdq) },
+ /* 69 */ { GRPSSE66(Ia_vpunpckhwd_Vdq_Hdq_Wdq) },
+ /* 6A */ { GRPSSE66(Ia_vpunpckhdq_Vdq_Hdq_Wdq) },
+ /* 6B */ { GRPSSE66(Ia_vpackssdw_Vdq_Hdq_Wdq) },
+ /* 6C */ { GRPSSE66(Ia_vpunpcklqdq_Vdq_Hdq_Wdq) },
+ /* 6D */ { GRPSSE66(Ia_vpunpckhqdq_Vdq_Hdq_Wdq) },
+ /* 6E */ { GRPVEXW(AVX0f6e) },
+ /* 6F */ { GRPAVX(0f6f) },
+ /* 70 */ { GRPAVX(0f70) },
+ /* 71 */ { GRPN(AVXG12) },
+ /* 72 */ { GRPN(AVXG13) },
+ /* 73 */ { GRPN(AVXG14) },
+ /* 74 */ { GRPSSE66(Ia_vpcmpeqb_Vdq_Hdq_Wdq) },
+ /* 75 */ { GRPSSE66(Ia_vpcmpeqw_Vdq_Hdq_Wdq) },
+ /* 76 */ { GRPSSE66(Ia_vpcmpeqd_Vdq_Hdq_Wdq) },
+ /* 77 */ { GRPSSENONE(Ia_vzeroupper) },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { GRPAVX(0f7c) },
+ /* 7D */ { GRPAVX(0f7d) },
+ /* 7E */ { GRPAVX(0f7e) },
+ /* 7F */ { GRPAVX(0f7f) },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_Invalid },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { 0, &Ia_Invalid },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { 0, &Ia_Invalid },
+ /* 97 */ { 0, &Ia_Invalid },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_Invalid },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_Invalid },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { GRPMOD(AVXG15) },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_Invalid },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { GRPAVX(0fc2) },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { GRPSSE66(Ia_vpinsrw_Vdq_Hdq_Ew_Ib) },
+ /* C5 */ { GRPSSE66(Ia_vpextrw_Gd_Udq_Ib) },
+ /* C6 */ { GRPAVX2(0fc6) },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { 0, &Ia_Invalid },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { GRPAVX(0fd0) },
+ /* D1 */ { GRPSSE66(Ia_vpsrlw_Vdq_Hdq_Wdq) },
+ /* D2 */ { GRPSSE66(Ia_vpsrld_Vdq_Hdq_Wdq) },
+ /* D3 */ { GRPSSE66(Ia_vpsrlq_Vdq_Hdq_Wdq) },
+ /* D4 */ { GRPSSE66(Ia_vpaddq_Vdq_Hdq_Wdq) },
+ /* D5 */ { GRPSSE66(Ia_vpmullw_Vdq_Hdq_Wdq) },
+ /* D6 */ { GRPSSE66(Ia_vmovq_Wq_Vq) },
+ /* D7 */ { GRPSSE66(Ia_vpmovmskb_Gd_Udq) },
+ /* D8 */ { GRPSSE66(Ia_vpsubusb_Vdq_Hdq_Wdq) },
+ /* D9 */ { GRPSSE66(Ia_vpsubusw_Vdq_Hdq_Wdq) },
+ /* DA */ { GRPSSE66(Ia_vpminub_Vdq_Hdq_Wdq) },
+ /* DB */ { GRPSSE66(Ia_vpand_Vdq_Hdq_Wdq) },
+ /* DC */ { GRPSSE66(Ia_vpaddusb_Vdq_Hdq_Wdq) },
+ /* DD */ { GRPSSE66(Ia_vpaddusw_Vdq_Hdq_Wdq) },
+ /* DE */ { GRPSSE66(Ia_vpmaxub_Vdq_Hdq_Wdq) },
+ /* DF */ { GRPSSE66(Ia_vpandn_Vdq_Hdq_Wdq) },
+ /* E0 */ { GRPSSE66(Ia_vpavgb_Vdq_Hdq_Wdq) },
+ /* E1 */ { GRPSSE66(Ia_vpsraw_Vdq_Hdq_Wdq) },
+ /* E2 */ { GRPSSE66(Ia_vpsrad_Vdq_Hdq_Wdq) },
+ /* E3 */ { GRPSSE66(Ia_vpavgw_Vdq_Hdq_Wdq) },
+ /* E4 */ { GRPSSE66(Ia_vpmulhuw_Vdq_Hdq_Wdq) },
+ /* E5 */ { GRPSSE66(Ia_vpmulhw_Vdq_Hdq_Wdq) },
+ /* E6 */ { GRPAVX(0fe6) },
+ /* E7 */ { GRPSSE66(Ia_vmovntdq_Mdq_Vdq) },
+ /* E8 */ { GRPSSE66(Ia_vpsubsb_Vdq_Hdq_Wdq) },
+ /* E9 */ { GRPSSE66(Ia_vpsubsw_Vdq_Hdq_Wdq) },
+ /* EA */ { GRPSSE66(Ia_vpminsw_Vdq_Hdq_Wdq) },
+ /* EB */ { GRPSSE66(Ia_vpor_Vdq_Hdq_Wdq) },
+ /* EC */ { GRPSSE66(Ia_vpaddsb_Vdq_Hdq_Wdq) },
+ /* ED */ { GRPSSE66(Ia_vpaddsw_Vdq_Hdq_Wdq) },
+ /* EE */ { GRPSSE66(Ia_vpmaxsw_Vdq_Hdq_Wdq) },
+ /* EF */ { GRPSSE66(Ia_vpxor_Vdq_Hdq_Wdq) },
+ /* F0 */ { GRPSSEF2(Ia_vlddqu_Vdq_Mdq) },
+ /* F1 */ { GRPSSE66(Ia_vpsllw_Vdq_Hdq_Wdq) },
+ /* F2 */ { GRPSSE66(Ia_vpslld_Vdq_Hdq_Wdq) },
+ /* F3 */ { GRPSSE66(Ia_vpsllq_Vdq_Hdq_Wdq) },
+ /* F4 */ { GRPSSE66(Ia_vpmuludq_Vdq_Hdq_Wdq) },
+ /* F5 */ { GRPSSE66(Ia_vpmaddwd_Vdq_Hdq_Wdq) },
+ /* F6 */ { GRPSSE66(Ia_vpsadbw_Vdq_Hdq_Wdq) },
+ /* F7 */ { GRPSSE66(Ia_vmaskmovdqu_Vdq_Udq) },
+ /* F8 */ { GRPSSE66(Ia_vpsubb_Vdq_Hdq_Wdq) },
+ /* F9 */ { GRPSSE66(Ia_vpsubw_Vdq_Hdq_Wdq) },
+ /* FA */ { GRPSSE66(Ia_vpsubd_Vdq_Hdq_Wdq) },
+ /* FB */ { GRPSSE66(Ia_vpsubq_Vdq_Hdq_Wdq) },
+ /* FC */ { GRPSSE66(Ia_vpaddb_Vdq_Hdq_Wdq) },
+ /* FD */ { GRPSSE66(Ia_vpaddw_Vdq_Hdq_Wdq) },
+ /* FE */ { GRPSSE66(Ia_vpaddd_Vdq_Hdq_Wdq) },
+ /* FF */ { 0, &Ia_Invalid },
+
+ // 256 entries for VEX-encoded 0x0F 0x38 opcodes
+ /* 00 */ { GRPSSE66(Ia_vpshufb_Vdq_Hdq_Wdq) },
+ /* 01 */ { GRPSSE66(Ia_vphaddw_Vdq_Hdq_Wdq) },
+ /* 02 */ { GRPSSE66(Ia_vphaddd_Vdq_Hdq_Wdq) },
+ /* 03 */ { GRPSSE66(Ia_vphaddsw_Vdq_Hdq_Wdq) },
+ /* 04 */ { GRPSSE66(Ia_vpmaddubsw_Vdq_Hdq_Wdq) },
+ /* 05 */ { GRPSSE66(Ia_vphsubw_Vdq_Hdq_Wdq) },
+ /* 06 */ { GRPSSE66(Ia_vphsubd_Vdq_Hdq_Wdq) },
+ /* 07 */ { GRPSSE66(Ia_vphsubsw_Vdq_Hdq_Wdq) },
+ /* 08 */ { GRPSSE66(Ia_vpsignb_Vdq_Hdq_Wdq) },
+ /* 09 */ { GRPSSE66(Ia_vpsignw_Vdq_Hdq_Wdq) },
+ /* 0A */ { GRPSSE66(Ia_vpsignd_Vdq_Hdq_Wdq) },
+ /* 0B */ { GRPSSE66(Ia_vpmulhrsw_Vdq_Hdq_Wdq) },
+ /* 0C */ { GRPSSE66(Ia_vpermilps_Vps_Hps_Wps) },
+ /* 0D */ { GRPSSE66(Ia_vpermilpd_Vpd_Hpd_Wpd) },
+ /* 0E */ { GRPSSE66(Ia_vtestps_Vps_Wps) },
+ /* 0F */ { GRPSSE66(Ia_vtestpd_Vpd_Wpd) },
+ /* 10 */ { 0, &Ia_Invalid },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { GRPSSE66(Ia_vcvtph2ps_Vps_Wq) },
+ /* 14 */ { 0, &Ia_Invalid },
+ /* 15 */ { 0, &Ia_Invalid },
+ /* 16 */ { GRPSSE66(Ia_vpermps_Vps_Hps_Wps) },
+ /* 17 */ { GRPSSE66(Ia_vptest_Vdq_Wdq) },
+ /* 18 */ { GRPSSE66(Ia_vbroadcastss_Vps_Wss) },
+ /* 19 */ { GRPSSE66(Ia_vbroadcastsd_Vpd_Wsd) },
+ /* 1A */ { GRPSSE66(Ia_vbroadcastf128_Vdq_Mdq) },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { GRPSSE66(Ia_vpabsb_Vdq_Hdq_Wdq) },
+ /* 1D */ { GRPSSE66(Ia_vpabsw_Vdq_Hdq_Wdq) },
+ /* 1E */ { GRPSSE66(Ia_vpabsd_Vdq_Hdq_Wdq) },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { GRPSSE66(Ia_vpmovsxbw_Vdq_Wq) },
+ /* 21 */ { GRPSSE66(Ia_vpmovsxbd_Vdq_Wd) },
+ /* 22 */ { GRPSSE66(Ia_vpmovsxbq_Vdq_Ww) },
+ /* 23 */ { GRPSSE66(Ia_vpmovsxwd_Vdq_Wq) },
+ /* 24 */ { GRPSSE66(Ia_vpmovsxwq_Vdq_Wd) },
+ /* 25 */ { GRPSSE66(Ia_vpmovsxdq_Vdq_Wq) },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { GRPSSE66(Ia_vpmuldq_Vdq_Hdq_Wdq) },
+ /* 29 */ { GRPSSE66(Ia_vpcmpeqq_Vdq_Hdq_Wdq) },
+ /* 2A */ { GRPSSE66(Ia_vmovntdqa_Vdq_Mdq) },
+ /* 2B */ { GRPSSE66(Ia_vpackusdw_Vdq_Hdq_Wdq) },
+ /* 2C */ { GRPSSE66(Ia_vmaskmovps_Vps_Hps_Mps) },
+ /* 2D */ { GRPSSE66(Ia_vmaskmovpd_Vpd_Hpd_Mpd) },
+ /* 2E */ { GRPSSE66(Ia_vmaskmovps_Mps_Hps_Vps) },
+ /* 2F */ { GRPSSE66(Ia_vmaskmovpd_Mpd_Hpd_Vpd) },
+ /* 30 */ { GRPSSE66(Ia_vpmovzxbw_Vdq_Wq) },
+ /* 31 */ { GRPSSE66(Ia_vpmovzxbd_Vdq_Wd) },
+ /* 32 */ { GRPSSE66(Ia_vpmovzxbq_Vdq_Ww) },
+ /* 33 */ { GRPSSE66(Ia_vpmovzxwd_Vdq_Wq) },
+ /* 34 */ { GRPSSE66(Ia_vpmovzxwq_Vdq_Wd) },
+ /* 35 */ { GRPSSE66(Ia_vpmovzxdq_Vdq_Wq) },
+ /* 36 */ { GRPSSE66(Ia_vpermd_Vdq_Hdq_Wdq) },
+ /* 37 */ { GRPSSE66(Ia_vpcmpgtq_Vdq_Hdq_Wdq) },
+ /* 38 */ { GRPSSE66(Ia_vpminsb_Vdq_Hdq_Wdq) },
+ /* 39 */ { GRPSSE66(Ia_vpminsd_Vdq_Hdq_Wdq) },
+ /* 3A */ { GRPSSE66(Ia_vpminuw_Vdq_Hdq_Wdq) },
+ /* 3B */ { GRPSSE66(Ia_vpminud_Vdq_Hdq_Wdq) },
+ /* 3C */ { GRPSSE66(Ia_vpmaxsb_Vdq_Hdq_Wdq) },
+ /* 3D */ { GRPSSE66(Ia_vpmaxsd_Vdq_Hdq_Wdq) },
+ /* 3E */ { GRPSSE66(Ia_vpmaxuw_Vdq_Hdq_Wdq) },
+ /* 3F */ { GRPSSE66(Ia_vpmaxud_Vdq_Hdq_Wdq) },
+ /* 40 */ { GRPSSE66(Ia_vpmulld_Vdq_Hdq_Wdq) },
+ /* 41 */ { GRPSSE66(Ia_vphminposuw_Vdq_Wdq) },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { GRPVEXW(0f3845) },
+ /* 46 */ { GRPSSE66(Ia_vpsravd_Vdq_Hdq_Wdq) },
+ /* 47 */ { GRPVEXW(0f3847) },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { GRPSSE66(Ia_vpbroadcastd_Vdq_Wd) },
+ /* 59 */ { GRPSSE66(Ia_vpbroadcastq_Vdq_Wq) },
+ /* 5A */ { GRPSSE66(Ia_vbroadcasti128_Vdq_Mdq) },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_Invalid },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { GRPSSE66(Ia_vpbroadcastb_Vdq_Wb) },
+ /* 79 */ { GRPSSE66(Ia_vpbroadcastw_Vdq_Ww) },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { GRPVEXW(0f388c) },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { GRPVEXW(0f388e) },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { GRPVEXW(0f3890) },
+ /* 91 */ { GRPVEXW(0f3891) },
+ /* 92 */ { GRPVEXW(0f3892) },
+ /* 93 */ { GRPVEXW(0f3893) },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { GRPVEXW(0f3896) },
+ /* 97 */ { GRPVEXW(0f3897) },
+ /* 98 */ { GRPVEXW(0f3898) },
+ /* 99 */ { GRPVEXW(0f3899) },
+ /* 9A */ { GRPVEXW(0f389a) },
+ /* 9B */ { GRPVEXW(0f389b) },
+ /* 9C */ { GRPVEXW(0f389c) },
+ /* 9D */ { GRPVEXW(0f389d) },
+ /* 9E */ { GRPVEXW(0f389e) },
+ /* 9F */ { GRPVEXW(0f389f) },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { GRPVEXW(0f38a6) },
+ /* A7 */ { GRPVEXW(0f38a7) },
+ /* A8 */ { GRPVEXW(0f38a8) },
+ /* A9 */ { GRPVEXW(0f38a9) },
+ /* AA */ { GRPVEXW(0f38aa) },
+ /* AB */ { GRPVEXW(0f38ab) },
+ /* AC */ { GRPVEXW(0f38ac) },
+ /* AD */ { GRPVEXW(0f38ad) },
+ /* AE */ { GRPVEXW(0f38ae) },
+ /* AF */ { GRPVEXW(0f38af) },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { GRPVEXW(0f38b6) },
+ /* B7 */ { GRPVEXW(0f38b7) },
+ /* B8 */ { GRPVEXW(0f38b8) },
+ /* B9 */ { GRPVEXW(0f38b9) },
+ /* BA */ { GRPVEXW(0f38ba) },
+ /* BB */ { GRPVEXW(0f38bb) },
+ /* BC */ { GRPVEXW(0f38bc) },
+ /* BD */ { GRPVEXW(0f38bd) },
+ /* BE */ { GRPVEXW(0f38be) },
+ /* BF */ { GRPVEXW(0f38bf) },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { 0, &Ia_Invalid },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { 0, &Ia_Invalid },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { GRPSSE66(Ia_vaesimc_Vdq_Wdq) },
+ /* DC */ { GRPSSE66(Ia_vaesenc_Vdq_Hdq_Wdq) },
+ /* DD */ { GRPSSE66(Ia_vaesenclast_Vdq_Hdq_Wdq) },
+ /* DE */ { GRPSSE66(Ia_vaesdec_Vdq_Hdq_Wdq) },
+ /* DF */ { GRPSSE66(Ia_vaesdeclast_Vdq_Hdq_Wdq) },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { 0, &Ia_Invalid },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_andn_Gy_By_Ey },
+ /* F3 */ { GRPN(AVXG17) },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { GRPAVX(0f38f5) },
+ /* F6 */ { GRPSSEF2(Ia_mulx_By_Gy_Ey) },
+ /* F7 */ { GRPAVX(0f38f7) },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid },
+
+ // 256 entries for VEX-encoded 0x0F 0x3A opcodes
+ /* 00 */ { GRPVEXW(0f3a00) },
+ /* 01 */ { GRPVEXW(0f3a01) },
+ /* 02 */ { GRPSSE66(Ia_vpblendd_Vdq_Hdq_Wdq_Ib) },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { GRPSSE66(Ia_vpermilps_Vps_Wps_Ib) },
+ /* 05 */ { GRPSSE66(Ia_vpermilpd_Vpd_Wpd_Ib) },
+ /* 06 */ { GRPSSE66(Ia_vperm2f128_Vdq_Hdq_Wdq_Ib) },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { GRPSSE66(Ia_vroundps_Vps_Wps_Ib) },
+ /* 09 */ { GRPSSE66(Ia_vroundpd_Vpd_Wpd_Ib) },
+ /* 0A */ { GRPSSE66(Ia_vroundss_Vss_Hps_Wss_Ib) },
+ /* 0B */ { GRPSSE66(Ia_vroundsd_Vsd_Hpd_Wsd_Ib) },
+ /* 0C */ { GRPSSE66(Ia_vblendps_Vps_Hps_Wps_Ib) },
+ /* 0D */ { GRPSSE66(Ia_vblendpd_Vpd_Hpd_Wpd_Ib) },
+ /* 0E */ { GRPSSE66(Ia_vpblendw_Vdq_Hdq_Wdq_Ib) },
+ /* 0F */ { GRPSSE66(Ia_vpalignr_Vdq_Hdq_Wdq_Ib) },
+ /* 10 */ { 0, &Ia_Invalid },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { GRPSSE66(Ia_vpextrb_Ebd_Vdq_Ib) },
+ /* 15 */ { GRPSSE66(Ia_vpextrw_Ewd_Vdq_Ib) },
+ /* 16 */ { GRPVEXW(0f3a16) },
+ /* 17 */ { GRPSSE66(Ia_vextractps_Ed_Vdq_Ib) },
+ /* 18 */ { GRPSSE66(Ia_vinsertf128_Vdq_Hdq_Wdq_Ib) },
+ /* 19 */ { GRPSSE66(Ia_vextractf128_Wdq_Vdq_Ib) },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_Invalid },
+ /* 1D */ { GRPSSE66(Ia_vcvtps2ph_Wq_Vps_Ib) },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { GRPSSE66(Ia_vpinsrb_Vdq_Hdq_Ew_Ib) },
+ /* 21 */ { GRPSSE66(Ia_vinsertps_Vps_Hps_Wss_Ib) },
+ /* 22 */ { GRPVEXW(0f3a22) },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_Invalid },
+ /* 29 */ { 0, &Ia_Invalid },
+ /* 2A */ { 0, &Ia_Invalid },
+ /* 2B */ { 0, &Ia_Invalid },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { GRPSSE66(Ia_vinserti128_Vdq_Hdq_Wdq_Ib) },
+ /* 39 */ { GRPSSE66(Ia_vextracti128_Wdq_Vdq_Ib) },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { GRPSSE66(Ia_vdpps_Vps_Hps_Wps_Ib) },
+ /* 41 */ { GRPSSE66(Ia_vdppd_Vpd_Hpd_Wpd_Ib) },
+ /* 42 */ { GRPSSE66(Ia_vmpsadbw_Vdq_Hdq_Wdq_Ib) },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { GRPSSE66(Ia_vpclmulqdq_Vdq_Hdq_Wdq_Ib) },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { GRPSSE66(Ia_vperm2i128_Vdq_Hdq_Wdq_Ib) },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { GRPSSE66(Ia_vblendvps_Vps_Hps_Wps_Ib) },
+ /* 4B */ { GRPSSE66(Ia_vblendvpd_Vpd_Hpd_Wpd_Ib) },
+ /* 4C */ { GRPSSE66(Ia_vpblendvb_Vdq_Hdq_Wdq_Ib) },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { GRPVEXW(0f3a5c) },
+ /* 5D */ { GRPVEXW(0f3a5d) },
+ /* 5E */ { GRPVEXW(0f3a5e) },
+ /* 5F */ { GRPVEXW(0f3a5f) },
+ /* 60 */ { GRPSSE66(Ia_vpcmpestrm_Vdq_Wdq_Ib) },
+ /* 61 */ { GRPSSE66(Ia_vpcmpestri_Vdq_Wdq_Ib) },
+ /* 62 */ { GRPSSE66(Ia_vpcmpistrm_Vdq_Wdq_Ib) },
+ /* 63 */ { GRPSSE66(Ia_vpcmpistri_Vdq_Wdq_Ib) },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { GRPVEXW(0f3a68) },
+ /* 69 */ { GRPVEXW(0f3a69) },
+ /* 6A */ { GRPVEXW(0f3a6a) },
+ /* 6B */ { GRPVEXW(0f3a6b) },
+ /* 6C */ { GRPVEXW(0f3a6c) },
+ /* 6D */ { GRPVEXW(0f3a6d) },
+ /* 6E */ { GRPVEXW(0f3a6e) },
+ /* 6F */ { GRPVEXW(0f3a6f) },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { GRPVEXW(0f3a78) },
+ /* 79 */ { GRPVEXW(0f3a79) },
+ /* 7A */ { GRPVEXW(0f3a7a) },
+ /* 7B */ { GRPVEXW(0f3a7b) },
+ /* 7C */ { GRPVEXW(0f3a7c) },
+ /* 7D */ { GRPVEXW(0f3a7d) },
+ /* 7E */ { GRPVEXW(0f3a7e) },
+ /* 7F */ { GRPVEXW(0f3a7f) },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_Invalid },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { 0, &Ia_Invalid },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { 0, &Ia_Invalid },
+ /* 97 */ { 0, &Ia_Invalid },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_Invalid },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_Invalid },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_Invalid },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_Invalid },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { 0, &Ia_Invalid },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { 0, &Ia_Invalid },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { 0, &Ia_Invalid },
+ /* DC */ { 0, &Ia_Invalid },
+ /* DD */ { 0, &Ia_Invalid },
+ /* DE */ { 0, &Ia_Invalid },
+ /* DF */ { GRPSSE66(Ia_vaeskeygenassist_Vdq_Wdq_Ib) },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { 0, &Ia_rorx_Gy_Ey_Ib },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { 0, &Ia_Invalid },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid }
+};
diff --git a/Externals/Bochs_disasm/dis_tables_sse.inc b/Externals/Bochs_disasm/dis_tables_sse.inc
new file mode 100644
index 0000000000..e31fdec200
--- /dev/null
+++ b/Externals/Bochs_disasm/dis_tables_sse.inc
@@ -0,0 +1,1452 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: dis_tables_sse.inc 11878 2013-10-11 20:09:51Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2013 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+/* ************************************************************************ */
+/* SSE opcodes */
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_ERR[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f10[4] = {
+ /* -- */ { 0, &Ia_movups_Vps_Wps },
+ /* 66 */ { 0, &Ia_movupd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_movss_Vss_Wss },
+ /* F2 */ { 0, &Ia_movsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f11[4] = {
+ /* -- */ { 0, &Ia_movups_Wps_Vps },
+ /* 66 */ { 0, &Ia_movupd_Wpd_Vpd },
+ /* F3 */ { 0, &Ia_movss_Wss_Vss },
+ /* F2 */ { 0, &Ia_movsd_Wsd_Vsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModMOVHLPS[2] = {
+ /* R */ { 0, &Ia_movhlps_Vps_Udq },
+ /* M */ { 0, &Ia_movlps_Vps_Mq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f12[4] = {
+ /* -- */ { GRPMOD(MOVHLPS) },
+ /* 66 */ { 0, &Ia_movlpd_Vpd_Mq },
+ /* F3 */ { 0, &Ia_movsldup_Vdq_Wdq },
+ /* F2 */ { 0, &Ia_movddup_Vdq_Wq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f13[2] = {
+ /* -- */ { 0, &Ia_movlps_Mq_Vps },
+ /* 66 */ { 0, &Ia_movlpd_Mq_Vpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f14[2] = {
+ /* -- */ { 0, &Ia_unpcklps_Vps_Wps },
+ /* 66 */ { 0, &Ia_unpcklpd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f15[2] = {
+ /* -- */ { 0, &Ia_unpckhps_Vps_Wps },
+ /* 66 */ { 0, &Ia_unpckhpd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupModMOVLHPS[2] = {
+ /* R */ { 0, &Ia_movlhps_Vps_Udq },
+ /* M */ { 0, &Ia_movhps_Vps_Mq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f16[4] = {
+ /* -- */ { GRPMOD(MOVLHPS) },
+ /* 66 */ { 0, &Ia_movhpd_Vpd_Mq },
+ /* F3 */ { 0, &Ia_movshdup_Vdq_Wdq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f17[2] = {
+ /* -- */ { 0, &Ia_movhps_Mq_Vps },
+ /* 66 */ { 0, &Ia_movhpd_Mq_Vpd },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f28[2] = {
+ /* -- */ { 0, &Ia_movaps_Vps_Wps },
+ /* 66 */ { 0, &Ia_movapd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f29[2] = {
+ /* -- */ { 0, &Ia_movaps_Wps_Vps },
+ /* 66 */ { 0, &Ia_movapd_Wpd_Vpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2a[4] = {
+ /* -- */ { 0, &Ia_cvtpi2ps_Vps_Qq },
+ /* 66 */ { 0, &Ia_cvtpi2pd_Vpd_Qq },
+ /* F3 */ { 0, &Ia_cvtsi2ss_Vss_Ey },
+ /* F2 */ { 0, &Ia_cvtsi2sd_Vsd_Ey }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2b[4] = {
+ /* -- */ { 0, &Ia_movntps_Mps_Vps },
+ /* 66 */ { 0, &Ia_movntpd_Mpd_Vpd },
+ /* F3 */ { 0, &Ia_movntss_Mss_Vss }, // SSE4A
+ /* F2 */ { 0, &Ia_movntsd_Msd_Vsd } // SSE4A
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2c[4] = {
+ /* -- */ { 0, &Ia_cvttps2pi_Pq_Wps },
+ /* 66 */ { 0, &Ia_cvttpd2pi_Pq_Wpd },
+ /* F3 */ { 0, &Ia_cvttss2si_Gy_Wss },
+ /* F2 */ { 0, &Ia_cvttsd2si_Gy_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2d[4] = {
+ /* -- */ { 0, &Ia_cvtps2pi_Pq_Wps },
+ /* 66 */ { 0, &Ia_cvtpd2pi_Pq_Wpd },
+ /* F3 */ { 0, &Ia_cvtss2si_Gy_Wss },
+ /* F2 */ { 0, &Ia_cvtsd2si_Gy_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2e[2] = {
+ /* -- */ { 0, &Ia_ucomiss_Vss_Wss },
+ /* 66 */ { 0, &Ia_ucomisd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f2f[2] = {
+ /* -- */ { 0, &Ia_comiss_Vss_Wss },
+ /* 66 */ { 0, &Ia_comisd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f50[2] = {
+ /* -- */ { 0, &Ia_movmskps_Gd_Ups },
+ /* 66 */ { 0, &Ia_movmskpd_Gd_Upd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f51[4] = {
+ /* -- */ { 0, &Ia_sqrtps_Vps_Wps },
+ /* 66 */ { 0, &Ia_sqrtpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_sqrtss_Vss_Wss },
+ /* F2 */ { 0, &Ia_sqrtsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f52[4] = {
+ /* -- */ { 0, &Ia_rsqrtps_Vps_Wps },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_rsqrtss_Vss_Wss },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f53[4] = {
+ /* -- */ { 0, &Ia_rcpps_Vps_Wps },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_rcpss_Vss_Wss },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f54[2] = {
+ /* -- */ { 0, &Ia_andps_Vps_Wps },
+ /* 66 */ { 0, &Ia_andpd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f55[2] = {
+ /* -- */ { 0, &Ia_andnps_Vps_Wps },
+ /* 66 */ { 0, &Ia_andnpd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f56[2] = {
+ /* -- */ { 0, &Ia_orps_Vps_Wps },
+ /* 66 */ { 0, &Ia_orpd_Vpd_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f57[2] = {
+ /* -- */ { 0, &Ia_xorps_Vps_Wps },
+ /* 66 */ { 0, &Ia_xorpd_Vpd_Wpd },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f58[4] = {
+ /* -- */ { 0, &Ia_addps_Vps_Wps },
+ /* 66 */ { 0, &Ia_addpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_addss_Vss_Wss },
+ /* F2 */ { 0, &Ia_addsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f59[4] = {
+ /* -- */ { 0, &Ia_mulps_Vps_Wps },
+ /* 66 */ { 0, &Ia_mulpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_mulss_Vss_Wss },
+ /* F2 */ { 0, &Ia_mulsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5a[4] = {
+ /* -- */ { 0, &Ia_cvtps2pd_Vpd_Wps },
+ /* 66 */ { 0, &Ia_cvtpd2ps_Vps_Wpd },
+ /* F3 */ { 0, &Ia_cvtss2sd_Vsd_Wss },
+ /* F2 */ { 0, &Ia_cvtsd2ss_Vss_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5b[4] = {
+ /* -- */ { 0, &Ia_cvtdq2ps_Vps_Wdq },
+ /* 66 */ { 0, &Ia_cvtps2dq_Vdq_Wps },
+ /* F3 */ { 0, &Ia_cvttps2dq_Vdq_Wps },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5c[4] = {
+ /* -- */ { 0, &Ia_subps_Vps_Wps },
+ /* 66 */ { 0, &Ia_subpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_subss_Vss_Wss },
+ /* F2 */ { 0, &Ia_subsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5d[4] = {
+ /* -- */ { 0, &Ia_minps_Vps_Wps },
+ /* 66 */ { 0, &Ia_minpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_minss_Vss_Wss },
+ /* F2 */ { 0, &Ia_minsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5e[4] = {
+ /* -- */ { 0, &Ia_divps_Vps_Wps },
+ /* 66 */ { 0, &Ia_divpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_divss_Vss_Wss },
+ /* F2 */ { 0, &Ia_divsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f5f[4] = {
+ /* -- */ { 0, &Ia_maxps_Vps_Wps },
+ /* 66 */ { 0, &Ia_maxpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_maxss_Vss_Wss },
+ /* F2 */ { 0, &Ia_maxsd_Vsd_Wsd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f60[2] = {
+ /* -- */ { 0, &Ia_punpcklbw_Pq_Qd },
+ /* 66 */ { 0, &Ia_punpcklbw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f61[2] = {
+ /* -- */ { 0, &Ia_punpcklwd_Pq_Qd },
+ /* 66 */ { 0, &Ia_punpcklwd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f62[2] = {
+ /* -- */ { 0, &Ia_punpckldq_Pq_Qd },
+ /* 66 */ { 0, &Ia_punpckldq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f63[2] = {
+ /* -- */ { 0, &Ia_packsswb_Pq_Qq },
+ /* 66 */ { 0, &Ia_packsswb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f64[2] = {
+ /* -- */ { 0, &Ia_pcmpgtb_Pq_Qq },
+ /* 66 */ { 0, &Ia_pcmpgtb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f65[2] = {
+ /* -- */ { 0, &Ia_pcmpgtw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pcmpgtw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f66[2] = {
+ /* -- */ { 0, &Ia_pcmpgtd_Pq_Qq },
+ /* 66 */ { 0, &Ia_pcmpgtd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f67[2] = {
+ /* -- */ { 0, &Ia_packuswb_Pq_Qq },
+ /* 66 */ { 0, &Ia_packuswb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f68[2] = {
+ /* -- */ { 0, &Ia_punpckhbw_Pq_Qq },
+ /* 66 */ { 0, &Ia_punpckhbw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f69[2] = {
+ /* -- */ { 0, &Ia_punpckhwd_Pq_Qq },
+ /* 66 */ { 0, &Ia_punpckhwd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6a[2] = {
+ /* -- */ { 0, &Ia_punpckhdq_Pq_Qq },
+ /* 66 */ { 0, &Ia_punpckhdq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6b[2] = {
+ /* -- */ { 0, &Ia_packssdw_Pq_Qq },
+ /* 66 */ { 0, &Ia_packssdw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6e[2] = {
+ /* -- */ { 0, &Ia_movd_Pq_Ed },
+ /* 66 */ { 0, &Ia_movd_Vdq_Ed }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6eQ[2] = {
+ /* -- */ { 0, &Ia_movq_Pq_Eq },
+ /* 66 */ { 0, &Ia_movq_Vdq_Eq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f6f[4] = {
+ /* -- */ { 0, &Ia_movq_Pq_Qq },
+ /* 66 */ { 0, &Ia_movdqa_Vdq_Wdq },
+ /* F3 */ { 0, &Ia_movdqu_Vdq_Wdq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f70[4] = {
+ /* -- */ { 0, &Ia_pshufw_Pq_Qq_Ib },
+ /* 66 */ { 0, &Ia_pshufd_Vdq_Wdq_Ib },
+ /* F3 */ { 0, &Ia_pshufhw_Vdq_Wdq_Ib },
+ /* F2 */ { 0, &Ia_pshuflw_Vdq_Wdq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f74[2] = {
+ /* -- */ { 0, &Ia_pcmpeqb_Pq_Qq },
+ /* 66 */ { 0, &Ia_pcmpeqb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f75[2] = {
+ /* -- */ { 0, &Ia_pcmpeqw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pcmpeqw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f76[2] = {
+ /* -- */ { 0, &Ia_pcmpeqd_Pq_Qq },
+ /* 66 */ { 0, &Ia_pcmpeqd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE4A_G17[8] = {
+ /* 0 */ { 0, &Ia_extrq_Udq_Ib_Ib }, // SSE4A
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f78[4] = {
+ /* -- */ { 0, &Ia_vmread_Ed_Gd }, // VMX
+ /* 66 */ { GRPN(SSE4A_G17) }, // SSE4A
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_insertq_Vdq_Uq_Ib_Ib } // SSE4A
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f78Q[4] = {
+ /* -- */ { 0, &Ia_vmread_Eq_Gq }, // VMX
+ /* 66 */ { GRPN(SSE4A_G17) }, // SSE4A
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_insertq_Vdq_Uq_Ib_Ib } // SSE4A
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f79[4] = {
+ /* -- */ { 0, &Ia_vmwrite_Gd_Ed }, // VMX
+ /* 66 */ { 0, &Ia_extrq_Vdq_Uq }, // SSE4A
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_insertq_Vdq_Udq } // SSE4A
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f79Q[4] = {
+ /* -- */ { 0, &Ia_vmwrite_Gq_Eq }, // VMX
+ /* 66 */ { 0, &Ia_extrq_Vdq_Uq }, // SSE4A
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_insertq_Vdq_Udq } // SSE4A
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7c[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_haddpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_haddps_Vps_Wps }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7d[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_hsubpd_Vpd_Wpd },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_hsubps_Vps_Wps }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7e[4] = {
+ /* -- */ { 0, &Ia_movd_Ed_Pq },
+ /* 66 */ { 0, &Ia_movd_Ed_Vd },
+ /* F3 */ { 0, &Ia_movq_Vq_Wq },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7eQ[4] = {
+ /* -- */ { 0, &Ia_movq_Eq_Pq },
+ /* 66 */ { 0, &Ia_movq_Eq_Vq },
+ /* F2 */ { 0, &Ia_movq_Vq_Wq },
+ /* F3 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f7f[4] = {
+ /* -- */ { 0, &Ia_movq_Qq_Pq },
+ /* 66 */ { 0, &Ia_movdqa_Wdq_Vdq },
+ /* F2 */ { 0, &Ia_movdqu_Wdq_Vdq },
+ /* F3 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc2[4] = {
+ /* -- */ { 0, &Ia_cmpps_Vps_Wps_Ib },
+ /* 66 */ { 0, &Ia_cmppd_Vpd_Wpd_Ib },
+ /* F3 */ { 0, &Ia_cmpss_Vss_Wss_Ib },
+ /* F2 */ { 0, &Ia_cmpsd_Vsd_Wsd_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc4[2] = {
+ /* -- */ { 0, &Ia_pinsrw_Pq_Ew_Ib },
+ /* 66 */ { 0, &Ia_pinsrw_Vdq_Ew_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc5[2] = {
+ /* -- */ { 0, &Ia_pextrw_Gd_Nq_Ib },
+ /* 66 */ { 0, &Ia_pextrw_Gd_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fc6[2] = {
+ /* -- */ { 0, &Ia_shufps_Vps_Wps_Ib },
+ /* 66 */ { 0, &Ia_shufpd_Vpd_Wpd_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd0[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_addsubpd_Vpd_Wpd },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_addsubps_Vps_Wps },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd1[2] = {
+ /* -- */ { 0, &Ia_psrlw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psrlw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd2[2] = {
+ /* -- */ { 0, &Ia_psrld_Pq_Qq },
+ /* 66 */ { 0, &Ia_psrld_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd3[2] = {
+ /* -- */ { 0, &Ia_psrlq_Pq_Qq },
+ /* 66 */ { 0, &Ia_psrlq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd4[2] = {
+ /* -- */ { 0, &Ia_paddq_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd5[2] = {
+ /* -- */ { 0, &Ia_pmullw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmullw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd6[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_movq_Wq_Vq },
+ /* F3 */ { 0, &Ia_movq2dq_Vdq_Qq },
+ /* F2 */ { 0, &Ia_movdq2q_Pq_Udq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd7[2] = {
+ /* -- */ { 0, &Ia_pmovmskb_Gd_Nq },
+ /* 66 */ { 0, &Ia_pmovmskb_Gd_Udq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd8[2] = {
+ /* -- */ { 0, &Ia_psubusb_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubusb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fd9[2] = {
+ /* -- */ { 0, &Ia_psubusw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubusw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fda[2] = {
+ /* -- */ { 0, &Ia_pminub_Pq_Qq },
+ /* 66 */ { 0, &Ia_pminub_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdb[2] = {
+ /* -- */ { 0, &Ia_pand_Pq_Qq },
+ /* 66 */ { 0, &Ia_pand_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdc[2] = {
+ /* -- */ { 0, &Ia_paddusb_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddusb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdd[2] = {
+ /* -- */ { 0, &Ia_paddusw_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddusw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fde[2] = {
+ /* -- */ { 0, &Ia_pmaxub_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmaxub_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fdf[2] = {
+ /* -- */ { 0, &Ia_pandn_Pq_Qq },
+ /* 66 */ { 0, &Ia_pandn_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe0[2] = {
+ /* -- */ { 0, &Ia_pavgb_Pq_Qq },
+ /* 66 */ { 0, &Ia_pavgb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe1[2] = {
+ /* -- */ { 0, &Ia_psraw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psraw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe2[2] = {
+ /* -- */ { 0, &Ia_psrad_Pq_Qq },
+ /* 66 */ { 0, &Ia_psrad_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe3[2] = {
+ /* -- */ { 0, &Ia_pavgw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pavgw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe4[2] = {
+ /* -- */ { 0, &Ia_pmulhuw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmulhuw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe5[2] = {
+ /* -- */ { 0, &Ia_pmulhw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmulhw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe6[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_cvttpd2dq_Vq_Wpd },
+ /* F3 */ { 0, &Ia_cvtdq2pd_Vpd_Wq },
+ /* F2 */ { 0, &Ia_cvtpd2dq_Vq_Wpd }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe7[2] = {
+ /* -- */ { 0, &Ia_movntq_Mq_Pq },
+ /* 66 */ { 0, &Ia_movntdq_Mdq_Vdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe8[2] = {
+ /* -- */ { 0, &Ia_psubsb_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubsb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fe9[2] = {
+ /* -- */ { 0, &Ia_psubsw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fea[2] = {
+ /* -- */ { 0, &Ia_pminsw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pminsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0feb[2] = {
+ /* -- */ { 0, &Ia_por_Pq_Qq },
+ /* 66 */ { 0, &Ia_por_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fec[2] = {
+ /* -- */ { 0, &Ia_paddsb_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddsb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fed[2] = {
+ /* -- */ { 0, &Ia_paddsw_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fee[2] = {
+ /* -- */ { 0, &Ia_pmaxsw_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmaxsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fef[2] = {
+ /* -- */ { 0, &Ia_pxor_Pq_Qq },
+ /* 66 */ { 0, &Ia_pxor_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff1[2] = {
+ /* -- */ { 0, &Ia_psllw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psllw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff2[2] = {
+ /* -- */ { 0, &Ia_pslld_Pq_Qq },
+ /* 66 */ { 0, &Ia_pslld_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff3[2] = {
+ /* -- */ { 0, &Ia_psllq_Pq_Qq },
+ /* 66 */ { 0, &Ia_psllq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff4[2] = {
+ /* -- */ { 0, &Ia_pmuludq_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmuludq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff5[2] = {
+ /* -- */ { 0, &Ia_pmaddwd_Pq_Qq },
+ /* 66 */ { 0, &Ia_pmaddwd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff6[2] = {
+ /* -- */ { 0, &Ia_psadbw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psadbw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff7[2] = {
+ /* -- */ { 0, &Ia_maskmovq_Pq_Nq },
+ /* 66 */ { 0, &Ia_maskmovdqu_Vdq_Udq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff8[2] = {
+ /* -- */ { 0, &Ia_psubb_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ff9[2] = {
+ /* -- */ { 0, &Ia_psubw_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffa[2] = {
+ /* -- */ { 0, &Ia_psubd_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffb[2] = {
+ /* -- */ { 0, &Ia_psubq_Pq_Qq },
+ /* 66 */ { 0, &Ia_psubq_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffc[2] = {
+ /* -- */ { 0, &Ia_paddb_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffd[2] = {
+ /* -- */ { 0, &Ia_paddw_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0ffe[2] = {
+ /* -- */ { 0, &Ia_paddd_Pq_Qq },
+ /* 66 */ { 0, &Ia_paddd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1202[2] = {
+ /* -- */ { 0, &Ia_psrlw_Nq_Ib },
+ /* 66 */ { 0, &Ia_psrlw_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1204[2] = {
+ /* -- */ { 0, &Ia_psraw_Nq_Ib },
+ /* 66 */ { 0, &Ia_psraw_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1206[2] = {
+ /* -- */ { 0, &Ia_psllw_Nq_Ib },
+ /* 66 */ { 0, &Ia_psllw_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1302[2] = {
+ /* -- */ { 0, &Ia_psrld_Nq_Ib },
+ /* 66 */ { 0, &Ia_psrld_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1304[2] = {
+ /* -- */ { 0, &Ia_psrad_Nq_Ib },
+ /* 66 */ { 0, &Ia_psrad_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1306[2] = {
+ /* -- */ { 0, &Ia_pslld_Nq_Ib },
+ /* 66 */ { 0, &Ia_pslld_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1402[2] = {
+ /* -- */ { 0, &Ia_psrlq_Nq_Ib },
+ /* 66 */ { 0, &Ia_psrlq_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_G1406[2] = {
+ /* -- */ { 0, &Ia_psllq_Nq_Ib },
+ /* 66 */ { 0, &Ia_psllq_Udq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3800[2] = {
+ /* -- */ { 0, &Ia_pshufb_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_pshufb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3801[2] = {
+ /* -- */ { 0, &Ia_phaddw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_phaddw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3802[2] = {
+ /* -- */ { 0, &Ia_phaddd_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_phaddd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3803[2] = {
+ /* -- */ { 0, &Ia_phaddsw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_phaddsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3804[2] = {
+ /* -- */ { 0, &Ia_pmaddubsw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_pmaddubsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3805[2] = {
+ /* -- */ { 0, &Ia_phsubw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_phsubw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3806[2] = {
+ /* -- */ { 0, &Ia_phsubd_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_phsubd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3807[2] = {
+ /* -- */ { 0, &Ia_phsubsw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_phsubsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3808[2] = {
+ /* -- */ { 0, &Ia_psignb_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_psignb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3809[2] = {
+ /* -- */ { 0, &Ia_psignw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_psignw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380a[2] = {
+ /* -- */ { 0, &Ia_psignd_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_psignd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f380b[2] = {
+ /* -- */ { 0, &Ia_pmulhrsw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_pmulhrsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381c[2] = {
+ /* -- */ { 0, &Ia_pabsb_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_pabsb_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381d[2] = {
+ /* -- */ { 0, &Ia_pabsw_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_pabsw_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f381e[2] = {
+ /* -- */ { 0, &Ia_pabsd_Pq_Qq }, // SSSE3
+ /* 66 */ { 0, &Ia_pabsd_Vdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f0w[4] = {
+ /* -- */ { 0, &Ia_movbe_Gw_Mw },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_crc32_Gd_Eb }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f0d[4] = {
+ /* -- */ { 0, &Ia_movbe_Gd_Md },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_crc32_Gd_Eb }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f0q[4] = {
+ /* -- */ { 0, &Ia_movbe_Gq_Mq },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_crc32_Gd_Eb }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_0f38f0[3] = {
+ /* 16 */ { GRPSSE(0f38f0w) },
+ /* 32 */ { GRPSSE(0f38f0d) },
+ /* 64 */ { GRPSSE(0f38f0q) },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1w[4] = {
+ /* -- */ { 0, &Ia_movbe_Mw_Gw },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_crc32_Gd_Ew }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1d[4] = {
+ /* -- */ { 0, &Ia_movbe_Md_Gd },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_crc32_Gd_Ed }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f1q[4] = {
+ /* -- */ { 0, &Ia_movbe_Mq_Gq },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_crc32_Gd_Eq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_0f38f1[3] = {
+ /* 16 */ { GRPSSE(0f38f1w) },
+ /* 32 */ { GRPSSE(0f38f1d) },
+ /* 64 */ { GRPSSE(0f38f1q) },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_adcx[3] = {
+ /* 16 */ { 0, &Ia_adcx_Gd_Ed },
+ /* 32 */ { 0, &Ia_adcx_Gd_Ed },
+ /* 64 */ { 0, &Ia_adcx_Gq_Eq },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_adox[3] = {
+ /* 16 */ { 0, &Ia_adox_Gd_Ed },
+ /* 32 */ { 0, &Ia_adox_Gd_Ed },
+ /* 64 */ { 0, &Ia_adox_Gq_Eq },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f38f6[4] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { GR64BIT(adcx) },
+ /* F3 */ { GR64BIT(adox) },
+ /* F2 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a0f[2] = {
+ /* -- */ { 0, &Ia_palignr_Pq_Qq_Ib }, // SSSE3
+ /* 66 */ { 0, &Ia_palignr_Vdq_Wdq_Ib }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_pextr[3] = {
+ /* 16 */ { 0, &Ia_pextrd_Ed_Vdq_Ib },
+ /* 32 */ { 0, &Ia_pextrd_Ed_Vdq_Ib },
+ /* 64 */ { 0, &Ia_pextrq_Eq_Vdq_Ib },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a16[2] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { GR64BIT(pextr) } // SSE4
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpOs64B_pinsr[3] = {
+ /* 16 */ { 0, &Ia_pinsrd_Vdq_Ed_Ib },
+ /* 32 */ { 0, &Ia_pinsrd_Vdq_Ed_Ib },
+ /* 64 */ { 0, &Ia_pinsrq_Vdq_Eq_Ib },
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0f3a22[2] = {
+ /* -- */ { 0, &Ia_Invalid },
+ /* 66 */ { GR64BIT(pinsr) } // SSE4
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbcw[4] = {
+ /* -- */ { 0, &Ia_bsfw_Gw_Ew },
+ /* 66 */ { 0, &Ia_bsfw_Gw_Ew },
+ /* F3 */ { 0, &Ia_tzcntw_Gw_Ew },
+ /* F2 */ { 0, &Ia_bsfw_Gw_Ew }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbcd[4] = {
+ /* -- */ { 0, &Ia_bsfl_Gd_Ed },
+ /* 66 */ { 0, &Ia_bsfl_Gd_Ed },
+ /* F3 */ { 0, &Ia_tzcntl_Gd_Ed },
+ /* F2 */ { 0, &Ia_bsfl_Gd_Ed }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbcq[4] = {
+ /* -- */ { 0, &Ia_bsfq_Gq_Eq },
+ /* 66 */ { 0, &Ia_bsfq_Gq_Eq },
+ /* F3 */ { 0, &Ia_tzcntq_Gq_Eq },
+ /* F2 */ { 0, &Ia_bsfq_Gq_Eq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbdw[4] = {
+ /* -- */ { 0, &Ia_bsrw_Gw_Ew },
+ /* 66 */ { 0, &Ia_bsrw_Gw_Ew },
+ /* F3 */ { 0, &Ia_lzcntw_Gw_Ew },
+ /* F2 */ { 0, &Ia_bsrw_Gw_Ew }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbdd[4] = {
+ /* -- */ { 0, &Ia_bsrl_Gd_Ed },
+ /* 66 */ { 0, &Ia_bsrl_Gd_Ed },
+ /* F3 */ { 0, &Ia_lzcntl_Gd_Ed },
+ /* F2 */ { 0, &Ia_bsrl_Gd_Ed }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupSSE_0fbdq[4] = {
+ /* -- */ { 0, &Ia_bsrq_Gq_Eq },
+ /* 66 */ { 0, &Ia_bsrq_Gq_Eq },
+ /* F3 */ { 0, &Ia_lzcntq_Gq_Eq },
+ /* F2 */ { 0, &Ia_bsrq_Gq_Eq }
+};
+
+/* ************************************************************************ */
+/* 3-byte opcode table (Table A-4, 0F 38) */
+
+static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f38[256] = {
+ /* 00 */ { GRPSSE2(0f3800) },
+ /* 01 */ { GRPSSE2(0f3801) },
+ /* 02 */ { GRPSSE2(0f3802) },
+ /* 03 */ { GRPSSE2(0f3803) },
+ /* 04 */ { GRPSSE2(0f3804) },
+ /* 05 */ { GRPSSE2(0f3805) },
+ /* 06 */ { GRPSSE2(0f3806) },
+ /* 07 */ { GRPSSE2(0f3807) },
+ /* 08 */ { GRPSSE2(0f3808) },
+ /* 09 */ { GRPSSE2(0f3809) },
+ /* 0A */ { GRPSSE2(0f380a) },
+ /* 0B */ { GRPSSE2(0f380b) },
+ /* 0C */ { 0, &Ia_Invalid },
+ /* 0D */ { 0, &Ia_Invalid },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_Invalid },
+ /* 10 */ { GRPSSE66(Ia_pblendvb_Vdq_Wdq) },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { GRPSSE66(Ia_blendvps_Vps_Wps) },
+ /* 15 */ { GRPSSE66(Ia_blendvpd_Vpd_Wpd) },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { GRPSSE66(Ia_ptest_Vdq_Wdq) },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { GRPSSE2(0f381c) },
+ /* 1D */ { GRPSSE2(0f381d) },
+ /* 1E */ { GRPSSE2(0f381e) },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { GRPSSE66(Ia_pmovsxbw_Vdq_Wq) },
+ /* 21 */ { GRPSSE66(Ia_pmovsxbd_Vdq_Wd) },
+ /* 22 */ { GRPSSE66(Ia_pmovsxbq_Vdq_Ww) },
+ /* 23 */ { GRPSSE66(Ia_pmovsxwd_Vdq_Wq) },
+ /* 24 */ { GRPSSE66(Ia_pmovsxwq_Vdq_Wd) },
+ /* 25 */ { GRPSSE66(Ia_pmovsxdq_Vdq_Wq) },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { GRPSSE66(Ia_pmuldq_Vdq_Wdq) },
+ /* 29 */ { GRPSSE66(Ia_pcmpeqq_Vdq_Wdq) },
+ /* 2A */ { GRPSSE66(Ia_movntdqa_Vdq_Mdq) },
+ /* 2B */ { GRPSSE66(Ia_packusdw_Vdq_Wdq) },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { GRPSSE66(Ia_pmovzxbw_Vdq_Wq) },
+ /* 31 */ { GRPSSE66(Ia_pmovzxbd_Vdq_Wd) },
+ /* 32 */ { GRPSSE66(Ia_pmovzxbq_Vdq_Ww) },
+ /* 33 */ { GRPSSE66(Ia_pmovzxwd_Vdq_Wq) },
+ /* 34 */ { GRPSSE66(Ia_pmovzxwq_Vdq_Wd) },
+ /* 35 */ { GRPSSE66(Ia_pmovzxdq_Vdq_Wq) },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { GRPSSE66(Ia_pcmpgtq_Vdq_Wdq) },
+ /* 38 */ { GRPSSE66(Ia_pminsb_Vdq_Wdq) },
+ /* 39 */ { GRPSSE66(Ia_pminsd_Vdq_Wdq) },
+ /* 3A */ { GRPSSE66(Ia_pminuw_Vdq_Wdq) },
+ /* 3B */ { GRPSSE66(Ia_pminud_Vdq_Wdq) },
+ /* 3C */ { GRPSSE66(Ia_pmaxsb_Vdq_Wdq) },
+ /* 3D */ { GRPSSE66(Ia_pmaxsd_Vdq_Wdq) },
+ /* 3E */ { GRPSSE66(Ia_pmaxuw_Vdq_Wdq) },
+ /* 3F */ { GRPSSE66(Ia_pmaxud_Vdq_Wdq) },
+ /* 40 */ { GRPSSE66(Ia_pmulld_Vdq_Wdq) },
+ /* 41 */ { GRPSSE66(Ia_phminposuw_Vdq_Wdq) },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_Invalid },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { GRPSSE66(Ia_invept_Gy_Mdq) },
+ /* 81 */ { GRPSSE66(Ia_invvpid_Gy_Mdq) },
+ /* 82 */ { GRPSSE66(Ia_invpcid_Gy_Mdq) },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_Invalid },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { 0, &Ia_Invalid },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { 0, &Ia_Invalid },
+ /* 97 */ { 0, &Ia_Invalid },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_Invalid },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_Invalid },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_Invalid },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_Invalid },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { 0, &Ia_Invalid },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { GRPSSENONE(Ia_sha1nexte_Vdq_Wdq) },
+ /* C9 */ { GRPSSENONE(Ia_sha1msg1_Vdq_Wdq) },
+ /* CA */ { GRPSSENONE(Ia_sha1msg2_Vdq_Wdq) },
+ /* CB */ { GRPSSENONE(Ia_sha256rnds2_Vdq_Wdq) },
+ /* CC */ { GRPSSENONE(Ia_sha256msg1_Vdq_Wdq) },
+ /* CD */ { GRPSSENONE(Ia_sha256msg2_Vdq_Wdq) },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { GRPSSE66(Ia_aesimc_Vdq_Wdq) },
+ /* DC */ { GRPSSE66(Ia_aesenc_Vdq_Wdq) },
+ /* DD */ { GRPSSE66(Ia_aesenclast_Vdq_Wdq) },
+ /* DE */ { GRPSSE66(Ia_aesdec_Vdq_Wdq) },
+ /* DF */ { GRPSSE66(Ia_aesdeclast_Vdq_Wdq) },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { GR64BIT(0f38f0) },
+ /* F1 */ { GR64BIT(0f38f1) },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { GRPSSE(0f38f6) },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid }
+};
+
+/* ************************************************************************ */
+/* 3-byte opcode table (Table A-5, 0F 3A) */
+
+static BxDisasmOpcodeTable_t BxDisasm3ByteOpTable0f3a[256] = {
+ /* 00 */ { 0, &Ia_Invalid },
+ /* 01 */ { 0, &Ia_Invalid },
+ /* 02 */ { 0, &Ia_Invalid },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { 0, &Ia_Invalid },
+ /* 05 */ { 0, &Ia_Invalid },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { GRPSSE66(Ia_roundps_Vps_Wps_Ib) },
+ /* 09 */ { GRPSSE66(Ia_roundpd_Vpd_Wpd_Ib) },
+ /* 0A */ { GRPSSE66(Ia_roundss_Vss_Wss_Ib) },
+ /* 0B */ { GRPSSE66(Ia_roundsd_Vsd_Wsd_Ib) },
+ /* 0C */ { GRPSSE66(Ia_blendps_Vps_Wps_Ib) },
+ /* 0D */ { GRPSSE66(Ia_blendpd_Vpd_Wpd_Ib) },
+ /* 0E */ { GRPSSE66(Ia_pblendw_Vdq_Wdq_Ib) },
+ /* 0F */ { GRPSSE2(0f3a0f) },
+ /* 10 */ { 0, &Ia_Invalid },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { GRPSSE66(Ia_pextrb_Ebd_Vdq_Ib) },
+ /* 15 */ { GRPSSE66(Ia_pextrw_Ewd_Vdq_Ib) },
+ /* 16 */ { GRPSSE2(0f3a16) },
+ /* 17 */ { GRPSSE66(Ia_extractps_Ed_Vdq_Ib) },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_Invalid },
+ /* 1D */ { 0, &Ia_Invalid },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { GRPSSE66(Ia_pinsrb_Vdq_Ew_Ib) },
+ /* 21 */ { GRPSSE66(Ia_insertps_Vps_Wss_Ib) },
+ /* 22 */ { GRPSSE2(0f3a22) },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_Invalid },
+ /* 29 */ { 0, &Ia_Invalid },
+ /* 2A */ { 0, &Ia_Invalid },
+ /* 2B */ { 0, &Ia_Invalid },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_Invalid },
+ /* 39 */ { 0, &Ia_Invalid },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { GRPSSE66(Ia_dpps_Vps_Wps_Ib) },
+ /* 41 */ { GRPSSE66(Ia_dppd_Vpd_Wpd_Ib) },
+ /* 42 */ { GRPSSE66(Ia_mpsadbw_Vdq_Wdq_Ib) },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { GRPSSE66(Ia_pclmulqdq_Vdq_Wdq_Ib) },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { GRPSSE66(Ia_pcmpestrm_Vdq_Wdq_Ib) },
+ /* 61 */ { GRPSSE66(Ia_pcmpestri_Vdq_Wdq_Ib) },
+ /* 62 */ { GRPSSE66(Ia_pcmpistrm_Vdq_Wdq_Ib) },
+ /* 63 */ { GRPSSE66(Ia_pcmpistri_Vdq_Wdq_Ib) },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_Invalid },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { 0, &Ia_Invalid },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { 0, &Ia_Invalid },
+ /* 97 */ { 0, &Ia_Invalid },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_Invalid },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_Invalid },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_Invalid },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_Invalid },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { 0, &Ia_Invalid },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { GRPSSENONE(Ia_sha1rnds4_Vdq_Wdq_Ib) },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { 0, &Ia_Invalid },
+ /* DC */ { 0, &Ia_Invalid },
+ /* DD */ { 0, &Ia_Invalid },
+ /* DE */ { 0, &Ia_Invalid },
+ /* DF */ { GRPSSE66(Ia_aeskeygenassist_Vdq_Wdq_Ib) },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { 0, &Ia_Invalid },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { 0, &Ia_Invalid },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid }
+};
diff --git a/Externals/Bochs_disasm/dis_tables_x87.inc b/Externals/Bochs_disasm/dis_tables_x87.inc
new file mode 100644
index 0000000000..230110e6bd
--- /dev/null
+++ b/Externals/Bochs_disasm/dis_tables_x87.inc
@@ -0,0 +1,919 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: dis_tables_x87.inc 10298 2011-04-03 10:29:19Z vruppert $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2010 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+/* ************************************************************************ */
+/* 3DNow! opcodes */
+
+static BxDisasmOpcodeTable_t BxDisasm3DNowGroup[256] = {
+ // 256 entries for 3DNow opcodes_by suffix
+ /* 00 */ { 0, &Ia_Invalid },
+ /* 01 */ { 0, &Ia_Invalid },
+ /* 02 */ { 0, &Ia_Invalid },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { 0, &Ia_Invalid },
+ /* 05 */ { 0, &Ia_Invalid },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_Invalid },
+ /* 09 */ { 0, &Ia_Invalid },
+ /* 0A */ { 0, &Ia_Invalid },
+ /* 0B */ { 0, &Ia_Invalid },
+ /* 0C */ { 0, &Ia_pi2fw_Pq_Qq },
+ /* 0D */ { 0, &Ia_pi2fd_Pq_Qq },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_Invalid },
+ /* 10 */ { 0, &Ia_Invalid },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { 0, &Ia_Invalid },
+ /* 15 */ { 0, &Ia_Invalid },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_pf2iw_Pq_Qq },
+ /* 1D */ { 0, &Ia_pf2id_Pq_Qq },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_Invalid },
+ /* 21 */ { 0, &Ia_Invalid },
+ /* 22 */ { 0, &Ia_Invalid },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_Invalid },
+ /* 29 */ { 0, &Ia_Invalid },
+ /* 2A */ { 0, &Ia_Invalid },
+ /* 2B */ { 0, &Ia_Invalid },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_Invalid },
+ /* 39 */ { 0, &Ia_Invalid },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_Invalid },
+ /* 41 */ { 0, &Ia_Invalid },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_Invalid },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_pfnacc_Pq_Qq },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_pfpnacc_Pq_Qq },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { 0, &Ia_pfcmpge_Pq_Qq },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_pfmin_Pq_Qq },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { 0, &Ia_pfrcp_Pq_Qq },
+ /* 97 */ { 0, &Ia_pfrsqrt_Pq_Qq },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_pfsub_Pq_Qq },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_pfadd_Pq_Qq },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_pfcmpgt_Pq_Qq },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_pfmax_Pq_Qq },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_pfrcpit1_Pq_Qq },
+ /* A7 */ { 0, &Ia_pfrsqit1_Pq_Qq },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_pfsubr_Pq_Qq },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_pfacc_Pq_Qq },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_pfcmpeq_Pq_Qq },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_pfmul_Pq_Qq },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_pfrcpit2_Pq_Qq },
+ /* B7 */ { 0, &Ia_pmulhrw_Pq_Qq },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_pswapd_Pq_Qq },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_pavgb_Pq_Qq },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { 0, &Ia_Invalid },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { 0, &Ia_Invalid },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { 0, &Ia_Invalid },
+ /* DC */ { 0, &Ia_Invalid },
+ /* DD */ { 0, &Ia_Invalid },
+ /* DE */ { 0, &Ia_Invalid },
+ /* DF */ { 0, &Ia_Invalid },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { 0, &Ia_Invalid },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { 0, &Ia_Invalid },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid }
+};
+
+/* ************************************************************************ */
+/* FPU Opcodes */
+
+// floating point instructions when mod!=11b.
+// the following tables will be accessed like groups using the nnn (reg) field of
+// the modrm byte. (the first byte is D8-DF)
+
+ // D8 (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupD8[8] = {
+ /* 0 */ { 0, &Ia_fadds_Md },
+ /* 1 */ { 0, &Ia_fmuls_Md },
+ /* 2 */ { 0, &Ia_fcoms_Md },
+ /* 3 */ { 0, &Ia_fcomps_Md },
+ /* 4 */ { 0, &Ia_fsubs_Md },
+ /* 5 */ { 0, &Ia_fsubrs_Md },
+ /* 6 */ { 0, &Ia_fdivs_Md },
+ /* 7 */ { 0, &Ia_fdivrs_Md }
+};
+
+ // D9 (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupD9[8] = {
+ /* 0 */ { 0, &Ia_flds_Md },
+ /* 1 */ { 0, &Ia_Invalid },
+ /* 2 */ { 0, &Ia_fsts_Md },
+ /* 3 */ { 0, &Ia_fstps_Md },
+ /* 4 */ { 0, &Ia_fldenv },
+ /* 5 */ { 0, &Ia_fldcw },
+ /* 6 */ { 0, &Ia_fnstenv },
+ /* 7 */ { 0, &Ia_fnstcw }
+};
+
+ // DA (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupDA[8] = {
+ /* 0 */ { 0, &Ia_fiaddl_Md },
+ /* 1 */ { 0, &Ia_fimull_Md },
+ /* 2 */ { 0, &Ia_ficoml_Md },
+ /* 3 */ { 0, &Ia_ficompl_Md },
+ /* 4 */ { 0, &Ia_fisubl_Md },
+ /* 5 */ { 0, &Ia_fisubrl_Md },
+ /* 6 */ { 0, &Ia_fidivl_Md },
+ /* 7 */ { 0, &Ia_fidivrl_Md }
+};
+
+ // DB (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupDB[8] = {
+ /* 0 */ { 0, &Ia_fildl_Md },
+ /* 1 */ { 0, &Ia_fisttpl_Md },
+ /* 2 */ { 0, &Ia_fistl_Md },
+ /* 3 */ { 0, &Ia_fistpl_Md },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_fldt_Mt },
+ /* 6 */ { 0, &Ia_Invalid },
+ /* 7 */ { 0, &Ia_fstpt_Mt }
+};
+
+ // DC (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupDC[8] = {
+ /* 0 */ { 0, &Ia_faddl_Mq },
+ /* 1 */ { 0, &Ia_fmull_Mq },
+ /* 2 */ { 0, &Ia_fcoml_Mq },
+ /* 3 */ { 0, &Ia_fcompl_Mq },
+ /* 4 */ { 0, &Ia_fsubl_Mq },
+ /* 5 */ { 0, &Ia_fsubrl_Mq },
+ /* 6 */ { 0, &Ia_fdivl_Mq },
+ /* 7 */ { 0, &Ia_fdivrl_Mq }
+};
+
+ // DD (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupDD[8] = {
+ /* 0 */ { 0, &Ia_fldl_Mq },
+ /* 1 */ { 0, &Ia_fisttpq_Mq },
+ /* 2 */ { 0, &Ia_fstl_Mq },
+ /* 3 */ { 0, &Ia_fstpl_Mq },
+ /* 4 */ { 0, &Ia_frstor },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_fnsave },
+ /* 7 */ { 0, &Ia_fnstsw }
+};
+
+ // DE (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupDE[8] = {
+ /* 0 */ { 0, &Ia_fiadds_Mw },
+ /* 1 */ { 0, &Ia_fimuls_Mw },
+ /* 2 */ { 0, &Ia_ficoms_Mw },
+ /* 3 */ { 0, &Ia_ficomps_Mw },
+ /* 4 */ { 0, &Ia_fisubs_Mw },
+ /* 5 */ { 0, &Ia_fisubrs_Mw },
+ /* 6 */ { 0, &Ia_fidivs_Mw },
+ /* 7 */ { 0, &Ia_fidivrs_Mw }
+};
+
+ // DF (modrm is outside 00h - BFh) (mod != 11)
+static BxDisasmOpcodeTable_t BxDisasmFPGroupDF[8] = {
+ /* 0 */ { 0, &Ia_filds_Mw },
+ /* 1 */ { 0, &Ia_fisttps_Mw },
+ /* 2 */ { 0, &Ia_fists_Mw },
+ /* 3 */ { 0, &Ia_fistps_Mw },
+ /* 4 */ { 0, &Ia_fbldt_Mt },
+ /* 5 */ { 0, &Ia_fildq_Mq },
+ /* 6 */ { 0, &Ia_fbstpt_Mt },
+ /* 7 */ { 0, &Ia_fistpq_Mq }
+};
+
+// 512 entries for second byte of floating point instructions. (when mod==11b)
+static BxDisasmOpcodeTable_t BxDisasmOpcodeInfoFP[512] = {
+ // D8 (modrm is outside 00h - BFh) (mod == 11)
+ /* D8 C0 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C1 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C2 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C3 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C4 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C5 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C6 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C7 */ { 0, &Ia_fadd_ST0_STi },
+ /* D8 C8 */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 C9 */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 CA */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 CB */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 CC */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 CD */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 CE */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 CF */ { 0, &Ia_fmul_ST0_STi },
+ /* D8 D0 */ { 0, &Ia_fcom_STi },
+ /* D8 D1 */ { 0, &Ia_fcom_STi },
+ /* D8 D2 */ { 0, &Ia_fcom_STi },
+ /* D8 D3 */ { 0, &Ia_fcom_STi },
+ /* D8 D4 */ { 0, &Ia_fcom_STi },
+ /* D8 D5 */ { 0, &Ia_fcom_STi },
+ /* D8 D6 */ { 0, &Ia_fcom_STi },
+ /* D8 D7 */ { 0, &Ia_fcom_STi },
+ /* D8 D8 */ { 0, &Ia_fcomp_STi },
+ /* D8 D9 */ { 0, &Ia_fcomp_STi },
+ /* D8 DA */ { 0, &Ia_fcomp_STi },
+ /* D8 DB */ { 0, &Ia_fcomp_STi },
+ /* D8 DC */ { 0, &Ia_fcomp_STi },
+ /* D8 DD */ { 0, &Ia_fcomp_STi },
+ /* D8 DE */ { 0, &Ia_fcomp_STi },
+ /* D8 DF */ { 0, &Ia_fcomp_STi },
+ /* D8 E0 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E1 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E2 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E3 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E4 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E5 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E6 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E7 */ { 0, &Ia_fsub_ST0_STi },
+ /* D8 E8 */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 E9 */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 EA */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 EB */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 EC */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 ED */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 EE */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 EF */ { 0, &Ia_fsubr_ST0_STi },
+ /* D8 F0 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F1 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F2 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F3 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F4 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F5 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F6 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F7 */ { 0, &Ia_fdiv_ST0_STi },
+ /* D8 F8 */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 F9 */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 FA */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 FB */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 FC */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 FD */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 FE */ { 0, &Ia_fdivr_ST0_STi },
+ /* D8 FF */ { 0, &Ia_fdivr_ST0_STi },
+
+ // D9 (modrm is outside 00h - BFh) (mod == 11)
+ /* D9 C0 */ { 0, &Ia_fld_STi },
+ /* D9 C1 */ { 0, &Ia_fld_STi },
+ /* D9 C2 */ { 0, &Ia_fld_STi },
+ /* D9 C3 */ { 0, &Ia_fld_STi },
+ /* D9 C4 */ { 0, &Ia_fld_STi },
+ /* D9 C5 */ { 0, &Ia_fld_STi },
+ /* D9 C6 */ { 0, &Ia_fld_STi },
+ /* D9 C7 */ { 0, &Ia_fld_STi },
+ /* D9 C8 */ { 0, &Ia_fxch },
+ /* D9 C9 */ { 0, &Ia_fxch },
+ /* D9 CA */ { 0, &Ia_fxch },
+ /* D9 CB */ { 0, &Ia_fxch },
+ /* D9 CC */ { 0, &Ia_fxch },
+ /* D9 CD */ { 0, &Ia_fxch },
+ /* D9 CE */ { 0, &Ia_fxch },
+ /* D9 CF */ { 0, &Ia_fxch },
+ /* D9 D0 */ { 0, &Ia_fnop },
+ /* D9 D1 */ { 0, &Ia_Invalid },
+ /* D9 D2 */ { 0, &Ia_Invalid },
+ /* D9 D3 */ { 0, &Ia_Invalid },
+ /* D9 D4 */ { 0, &Ia_Invalid },
+ /* D9 D5 */ { 0, &Ia_Invalid },
+ /* D9 D6 */ { 0, &Ia_Invalid },
+ /* D9 D7 */ { 0, &Ia_Invalid },
+ /* D9 D8 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 D9 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 DA */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 DB */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 DC */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 DD */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 DE */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 DF */ { 0, &Ia_fstp_STi }, // undocumented
+ /* D9 E0 */ { 0, &Ia_fchs },
+ /* D9 E1 */ { 0, &Ia_fabs },
+ /* D9 E2 */ { 0, &Ia_Invalid },
+ /* D9 E3 */ { 0, &Ia_Invalid },
+ /* D9 E4 */ { 0, &Ia_ftst },
+ /* D9 E5 */ { 0, &Ia_fxam },
+ /* D9 E6 */ { 0, &Ia_Invalid },
+ /* D9 E7 */ { 0, &Ia_Invalid },
+ /* D9 E8 */ { 0, &Ia_fld1 },
+ /* D9 E9 */ { 0, &Ia_fldl2t },
+ /* D9 EA */ { 0, &Ia_fldl2e },
+ /* D9 EB */ { 0, &Ia_fldpi },
+ /* D9 EC */ { 0, &Ia_fldlg2 },
+ /* D9 ED */ { 0, &Ia_fldln2 },
+ /* D9 EE */ { 0, &Ia_fldz },
+ /* D9 EF */ { 0, &Ia_Invalid },
+ /* D9 F0 */ { 0, &Ia_f2xm1 },
+ /* D9 F1 */ { 0, &Ia_fyl2x },
+ /* D9 F2 */ { 0, &Ia_fptan },
+ /* D9 F3 */ { 0, &Ia_fpatan },
+ /* D9 F4 */ { 0, &Ia_fxtract },
+ /* D9 F5 */ { 0, &Ia_fprem1 },
+ /* D9 F6 */ { 0, &Ia_fdecstp },
+ /* D9 F7 */ { 0, &Ia_fincstp },
+ /* D9 F8 */ { 0, &Ia_fprem },
+ /* D9 F9 */ { 0, &Ia_fyl2xp1 },
+ /* D9 FA */ { 0, &Ia_fsqrt },
+ /* D9 FB */ { 0, &Ia_fsincos },
+ /* D9 FC */ { 0, &Ia_frndint },
+ /* D9 FD */ { 0, &Ia_fscale },
+ /* D9 FE */ { 0, &Ia_fsin },
+ /* D9 FF */ { 0, &Ia_fcos },
+
+ // DA (modrm is outside 00h - BFh) (mod == 11)
+ /* DA C0 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C1 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C2 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C3 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C4 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C5 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C6 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C7 */ { 0, &Ia_fcmovb_ST0_STi },
+ /* DA C8 */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA C9 */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA CA */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA CB */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA CC */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA CD */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA CE */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA CF */ { 0, &Ia_fcmove_ST0_STi },
+ /* DA D0 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D1 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D2 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D3 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D4 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D5 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D6 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D7 */ { 0, &Ia_fcmovbe_ST0_STi },
+ /* DA D8 */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA D9 */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA DA */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA DB */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA DC */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA DD */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA DE */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA DF */ { 0, &Ia_fcmovu_ST0_STi },
+ /* DA E0 */ { 0, &Ia_Invalid },
+ /* DA E1 */ { 0, &Ia_Invalid },
+ /* DA E2 */ { 0, &Ia_Invalid },
+ /* DA E3 */ { 0, &Ia_Invalid },
+ /* DA E4 */ { 0, &Ia_Invalid },
+ /* DA E5 */ { 0, &Ia_Invalid },
+ /* DA E6 */ { 0, &Ia_Invalid },
+ /* DA E7 */ { 0, &Ia_Invalid },
+ /* DA E8 */ { 0, &Ia_Invalid },
+ /* DA E9 */ { 0, &Ia_fucompp },
+ /* DA EA */ { 0, &Ia_Invalid },
+ /* DA EB */ { 0, &Ia_Invalid },
+ /* DA EC */ { 0, &Ia_Invalid },
+ /* DA ED */ { 0, &Ia_Invalid },
+ /* DA EE */ { 0, &Ia_Invalid },
+ /* DA EF */ { 0, &Ia_Invalid },
+ /* DA F0 */ { 0, &Ia_Invalid },
+ /* DA F1 */ { 0, &Ia_Invalid },
+ /* DA F2 */ { 0, &Ia_Invalid },
+ /* DA F3 */ { 0, &Ia_Invalid },
+ /* DA F4 */ { 0, &Ia_Invalid },
+ /* DA F5 */ { 0, &Ia_Invalid },
+ /* DA F6 */ { 0, &Ia_Invalid },
+ /* DA F7 */ { 0, &Ia_Invalid },
+ /* DA F8 */ { 0, &Ia_Invalid },
+ /* DA F9 */ { 0, &Ia_Invalid },
+ /* DA FA */ { 0, &Ia_Invalid },
+ /* DA FB */ { 0, &Ia_Invalid },
+ /* DA FC */ { 0, &Ia_Invalid },
+ /* DA FD */ { 0, &Ia_Invalid },
+ /* DA FE */ { 0, &Ia_Invalid },
+ /* DA FF */ { 0, &Ia_Invalid },
+
+ // DB (modrm is outside 00h - BFh) (mod == 11)
+ /* DB C0 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C1 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C2 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C3 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C4 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C5 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C6 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C7 */ { 0, &Ia_fcmovnb_ST0_STi },
+ /* DB C8 */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB C9 */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB CA */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB CB */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB CC */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB CD */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB CE */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB CF */ { 0, &Ia_fcmovne_ST0_STi },
+ /* DB D0 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D1 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D2 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D3 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D4 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D5 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D6 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D7 */ { 0, &Ia_fcmovnbe_ST0_STi },
+ /* DB D8 */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB D9 */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB DA */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB DB */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB DC */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB DD */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB DE */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB DF */ { 0, &Ia_fcmovnu_ST0_STi },
+ /* DB E0 */ { 0, &Ia_feni },
+ /* DB E1 */ { 0, &Ia_fdisi },
+ /* DB E2 */ { 0, &Ia_fnclex },
+ /* DB E3 */ { 0, &Ia_fninit },
+ /* DB E4 */ { 0, &Ia_fsetpm },
+ /* DB E5 */ { 0, &Ia_Invalid },
+ /* DB E6 */ { 0, &Ia_Invalid },
+ /* DB E7 */ { 0, &Ia_Invalid },
+ /* DB E8 */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB E9 */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB EA */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB EB */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB EC */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB ED */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB EE */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB EF */ { 0, &Ia_fucomi_ST0_STi },
+ /* DB F0 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F1 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F2 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F3 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F4 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F5 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F6 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F7 */ { 0, &Ia_fcomi_ST0_STi },
+ /* DB F8 */ { 0, &Ia_Invalid },
+ /* DB F9 */ { 0, &Ia_Invalid },
+ /* DB FA */ { 0, &Ia_Invalid },
+ /* DB FB */ { 0, &Ia_Invalid },
+ /* DB FC */ { 0, &Ia_Invalid },
+ /* DB FD */ { 0, &Ia_Invalid },
+ /* DB FE */ { 0, &Ia_Invalid },
+ /* DB FF */ { 0, &Ia_Invalid },
+
+ // DC (modrm is outside 00h - BFh) (mod == 11)
+ /* DC C0 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C1 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C2 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C3 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C4 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C5 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C6 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C7 */ { 0, &Ia_fadd_STi_ST0 },
+ /* DC C8 */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC C9 */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC CA */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC CB */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC CC */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC CD */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC CE */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC CF */ { 0, &Ia_fmul_STi_ST0 },
+ /* DC D0 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D1 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D2 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D3 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D4 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D5 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D6 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D7 */ { 0, &Ia_fcom_STi }, // undocumented
+ /* DC D8 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC D9 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC DA */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC DB */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC DC */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC DD */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC DE */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC DF */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DC E0 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E1 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E2 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E3 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E4 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E5 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E6 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E7 */ { 0, &Ia_fsubr_STi_ST0 },
+ /* DC E8 */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC E9 */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC EA */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC EB */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC EC */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC ED */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC EE */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC EF */ { 0, &Ia_fsub_STi_ST0 },
+ /* DC F0 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F1 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F2 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F3 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F4 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F5 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F6 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F7 */ { 0, &Ia_fdivr_STi_ST0 },
+ /* DC F8 */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC F9 */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC FA */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC FB */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC FC */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC FD */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC FE */ { 0, &Ia_fdiv_STi_ST0 },
+ /* DC FF */ { 0, &Ia_fdiv_STi_ST0 },
+
+ // DD (modrm is outside 00h - BFh) (mod == 11)
+ /* DD C0 */ { 0, &Ia_ffree_STi },
+ /* DD C1 */ { 0, &Ia_ffree_STi },
+ /* DD C2 */ { 0, &Ia_ffree_STi },
+ /* DD C3 */ { 0, &Ia_ffree_STi },
+ /* DD C4 */ { 0, &Ia_ffree_STi },
+ /* DD C5 */ { 0, &Ia_ffree_STi },
+ /* DD C6 */ { 0, &Ia_ffree_STi },
+ /* DD C7 */ { 0, &Ia_ffree_STi },
+ /* DD C8 */ { 0, &Ia_fxch }, // undocumented
+ /* DD C9 */ { 0, &Ia_fxch }, // undocumented
+ /* DD CA */ { 0, &Ia_fxch }, // undocumented
+ /* DD CB */ { 0, &Ia_fxch }, // undocumented
+ /* DD CC */ { 0, &Ia_fxch }, // undocumented
+ /* DD CD */ { 0, &Ia_fxch }, // undocumented
+ /* DD CE */ { 0, &Ia_fxch }, // undocumented
+ /* DD CF */ { 0, &Ia_fxch }, // undocumented
+ /* DD D0 */ { 0, &Ia_fst_STi },
+ /* DD D1 */ { 0, &Ia_fst_STi },
+ /* DD D2 */ { 0, &Ia_fst_STi },
+ /* DD D3 */ { 0, &Ia_fst_STi },
+ /* DD D4 */ { 0, &Ia_fst_STi },
+ /* DD D5 */ { 0, &Ia_fst_STi },
+ /* DD D6 */ { 0, &Ia_fst_STi },
+ /* DD D7 */ { 0, &Ia_fst_STi },
+ /* DD D8 */ { 0, &Ia_fstp_STi },
+ /* DD D9 */ { 0, &Ia_fstp_STi },
+ /* DD DA */ { 0, &Ia_fstp_STi },
+ /* DD DB */ { 0, &Ia_fstp_STi },
+ /* DD DC */ { 0, &Ia_fstp_STi },
+ /* DD DD */ { 0, &Ia_fstp_STi },
+ /* DD DE */ { 0, &Ia_fstp_STi },
+ /* DD DF */ { 0, &Ia_fstp_STi },
+ /* DD E0 */ { 0, &Ia_fucom_STi },
+ /* DD E1 */ { 0, &Ia_fucom_STi },
+ /* DD E2 */ { 0, &Ia_fucom_STi },
+ /* DD E3 */ { 0, &Ia_fucom_STi },
+ /* DD E4 */ { 0, &Ia_fucom_STi },
+ /* DD E5 */ { 0, &Ia_fucom_STi },
+ /* DD E6 */ { 0, &Ia_fucom_STi },
+ /* DD E7 */ { 0, &Ia_fucom_STi },
+ /* DD E8 */ { 0, &Ia_fucomp_STi },
+ /* DD E9 */ { 0, &Ia_fucomp_STi },
+ /* DD EA */ { 0, &Ia_fucomp_STi },
+ /* DD EB */ { 0, &Ia_fucomp_STi },
+ /* DD EC */ { 0, &Ia_fucomp_STi },
+ /* DD ED */ { 0, &Ia_fucomp_STi },
+ /* DD EE */ { 0, &Ia_fucomp_STi },
+ /* DD EF */ { 0, &Ia_fucomp_STi },
+ /* DD F0 */ { 0, &Ia_Invalid },
+ /* DD F1 */ { 0, &Ia_Invalid },
+ /* DD F2 */ { 0, &Ia_Invalid },
+ /* DD F3 */ { 0, &Ia_Invalid },
+ /* DD F4 */ { 0, &Ia_Invalid },
+ /* DD F5 */ { 0, &Ia_Invalid },
+ /* DD F6 */ { 0, &Ia_Invalid },
+ /* DD F7 */ { 0, &Ia_Invalid },
+ /* DD F8 */ { 0, &Ia_Invalid },
+ /* DD F9 */ { 0, &Ia_Invalid },
+ /* DD FA */ { 0, &Ia_Invalid },
+ /* DD FB */ { 0, &Ia_Invalid },
+ /* DD FC */ { 0, &Ia_Invalid },
+ /* DD FD */ { 0, &Ia_Invalid },
+ /* DD FE */ { 0, &Ia_Invalid },
+ /* DD FF */ { 0, &Ia_Invalid },
+
+ // DE (modrm is outside 00h - BFh) (mod == 11)
+ /* DE C0 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C1 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C2 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C3 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C4 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C5 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C6 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C7 */ { 0, &Ia_faddp_STi_ST0 },
+ /* DE C8 */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE C9 */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE CA */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE CB */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE CC */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE CD */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE CE */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE CF */ { 0, &Ia_fmulp_STi_ST0 },
+ /* DE D0 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D1 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D2 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D3 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D4 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D5 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D6 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D7 */ { 0, &Ia_fcomp_STi }, // undocumented
+ /* DE D8 */ { 0, &Ia_Invalid },
+ /* DE D9 */ { 0, &Ia_fcompp },
+ /* DE DA */ { 0, &Ia_Invalid },
+ /* DE DB */ { 0, &Ia_Invalid },
+ /* DE DC */ { 0, &Ia_Invalid },
+ /* DE DD */ { 0, &Ia_Invalid },
+ /* DE DE */ { 0, &Ia_Invalid },
+ /* DE DF */ { 0, &Ia_Invalid },
+ /* DE E0 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E1 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E2 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E3 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E4 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E5 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E6 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E7 */ { 0, &Ia_fsubrp_STi_ST0 },
+ /* DE E8 */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE E9 */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE EA */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE EB */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE EC */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE ED */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE EE */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE EF */ { 0, &Ia_fsubp_STi_ST0 },
+ /* DE F0 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F1 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F2 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F3 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F4 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F5 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F6 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F7 */ { 0, &Ia_fdivrp_STi_ST0 },
+ /* DE F8 */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE F9 */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE FA */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE FB */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE FC */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE FD */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE FE */ { 0, &Ia_fdivp_STi_ST0 },
+ /* DE FF */ { 0, &Ia_fdivp_STi_ST0 },
+
+ // DF (modrm is outside 00h - BFh) (mod == 11)
+ /* DF C0 */ { 0, &Ia_ffreep_STi }, // 287 compatibility opcode
+ /* DF C1 */ { 0, &Ia_ffreep_STi },
+ /* DF C2 */ { 0, &Ia_ffreep_STi },
+ /* DF C3 */ { 0, &Ia_ffreep_STi },
+ /* DF C4 */ { 0, &Ia_ffreep_STi },
+ /* DF C5 */ { 0, &Ia_ffreep_STi },
+ /* DF C6 */ { 0, &Ia_ffreep_STi },
+ /* DF C7 */ { 0, &Ia_ffreep_STi },
+ /* DF C8 */ { 0, &Ia_fxch }, // undocumented
+ /* DF C9 */ { 0, &Ia_fxch }, // undocumented
+ /* DF CA */ { 0, &Ia_fxch }, // undocumented
+ /* DF CB */ { 0, &Ia_fxch }, // undocumented
+ /* DF CC */ { 0, &Ia_fxch }, // undocumented
+ /* DF CD */ { 0, &Ia_fxch }, // undocumented
+ /* DF CE */ { 0, &Ia_fxch }, // undocumented
+ /* DF CF */ { 0, &Ia_fxch }, // undocumented
+ /* DF D0 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D1 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D2 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D3 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D4 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D5 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D6 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D7 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D8 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF D9 */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF DA */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF DB */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF DC */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF DD */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF DE */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF DF */ { 0, &Ia_fstp_STi }, // undocumented
+ /* DF E0 */ { 0, &Ia_fnstsw_AX },
+ /* DF E1 */ { 0, &Ia_Invalid },
+ /* DF E2 */ { 0, &Ia_Invalid },
+ /* DF E3 */ { 0, &Ia_Invalid },
+ /* DF E4 */ { 0, &Ia_Invalid },
+ /* DF E5 */ { 0, &Ia_Invalid },
+ /* DF E6 */ { 0, &Ia_Invalid },
+ /* DF E7 */ { 0, &Ia_Invalid },
+ /* DF E8 */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF E9 */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF EA */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF EB */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF EC */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF ED */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF EE */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF EF */ { 0, &Ia_fucomip_ST0_STi },
+ /* DF F0 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F1 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F2 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F3 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F4 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F5 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F6 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F7 */ { 0, &Ia_fcomip_ST0_STi },
+ /* DF F8 */ { 0, &Ia_Invalid },
+ /* DF F9 */ { 0, &Ia_Invalid },
+ /* DF FA */ { 0, &Ia_Invalid },
+ /* DF FB */ { 0, &Ia_Invalid },
+ /* DF FC */ { 0, &Ia_Invalid },
+ /* DF FD */ { 0, &Ia_Invalid },
+ /* DF FE */ { 0, &Ia_Invalid },
+ /* DF FF */ { 0, &Ia_Invalid },
+};
diff --git a/Externals/Bochs_disasm/dis_tables_xop.inc b/Externals/Bochs_disasm/dis_tables_xop.inc
new file mode 100644
index 0000000000..82ce2bca8c
--- /dev/null
+++ b/Externals/Bochs_disasm/dis_tables_xop.inc
@@ -0,0 +1,890 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: dis_tables_xop.inc 11863 2013-10-07 19:23:19Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2011-2013 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+static BxDisasmOpcodeTable_t BxDisasmGroupXOP_G1[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_blcfill_By_Ey },
+ /* 2 */ { 0, &Ia_blsfill_By_Ey },
+ /* 3 */ { 0, &Ia_blcs_By_Ey },
+ /* 4 */ { 0, &Ia_tzmsk_By_Ey },
+ /* 5 */ { 0, &Ia_blcic_By_Ey },
+ /* 6 */ { 0, &Ia_blsic_By_Ey },
+ /* 7 */ { 0, &Ia_t1mskc_By_Ey }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGroupXOP_G2[8] = {
+ /* 0 */ { 0, &Ia_Invalid },
+ /* 1 */ { 0, &Ia_blcmsk_By_Ey },
+ /* 2 */ { 0, &Ia_Invalid },
+ /* 3 */ { 0, &Ia_Invalid },
+ /* 4 */ { 0, &Ia_Invalid },
+ /* 5 */ { 0, &Ia_Invalid },
+ /* 6 */ { 0, &Ia_blci_By_Ey },
+ /* 7 */ { 0, &Ia_Invalid }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop8_a2[2] = {
+ /* 0 */ { 0, &Ia_vpcmov_Vdq_Hdq_Wdq_VIb },
+ /* 1 */ { 0, &Ia_vpcmov_Vdq_Hdq_VIb_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop8_a3[2] = {
+ /* 0 */ { 0, &Ia_vpperm_Vdq_Hdq_Wdq_VIb },
+ /* 1 */ { 0, &Ia_vpperm_Vdq_Hdq_VIb_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_88[2] = {
+ /* 0 */ { 0, &Ia_vpshab_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshab_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_89[2] = {
+ /* 0 */ { 0, &Ia_vpshaw_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshaw_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_8a[2] = {
+ /* 0 */ { 0, &Ia_vpshad_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshad_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_8b[2] = {
+ /* 0 */ { 0, &Ia_vpshaq_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshaq_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_90[2] = {
+ /* 0 */ { 0, &Ia_vprotb_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vprotb_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_91[2] = {
+ /* 0 */ { 0, &Ia_vprotw_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vprotw_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_92[2] = {
+ /* 0 */ { 0, &Ia_vprotd_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vprotd_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_93[2] = {
+ /* 0 */ { 0, &Ia_vprotq_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vprotq_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_94[2] = {
+ /* 0 */ { 0, &Ia_vpshlb_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshlb_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_95[2] = {
+ /* 0 */ { 0, &Ia_vpshlw_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshlw_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_96[2] = {
+ /* 0 */ { 0, &Ia_vpshld_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshld_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmGrpVexW_xop9_97[2] = {
+ /* 0 */ { 0, &Ia_vpshlq_Vdq_Wdq_Hdq },
+ /* 1 */ { 0, &Ia_vpshlq_Vdq_Hdq_Wdq }
+};
+
+static BxDisasmOpcodeTable_t BxDisasmOpcodesXOP[256*3] = {
+ // 256 entries for XOP map 0x8 opcodes
+ /* 00 */ { 0, &Ia_Invalid },
+ /* 01 */ { GRPN(XOP_G1) },
+ /* 02 */ { GRPN(XOP_G2) },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { 0, &Ia_Invalid },
+ /* 05 */ { 0, &Ia_Invalid },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_Invalid },
+ /* 09 */ { 0, &Ia_Invalid },
+ /* 0A */ { 0, &Ia_Invalid },
+ /* 0B */ { 0, &Ia_Invalid },
+ /* 0C */ { 0, &Ia_Invalid },
+ /* 0D */ { 0, &Ia_Invalid },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_Invalid },
+ /* 10 */ { 0, &Ia_Invalid },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { 0, &Ia_Invalid },
+ /* 15 */ { 0, &Ia_Invalid },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_Invalid },
+ /* 1D */ { 0, &Ia_Invalid },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_Invalid },
+ /* 21 */ { 0, &Ia_Invalid },
+ /* 22 */ { 0, &Ia_Invalid },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_Invalid },
+ /* 29 */ { 0, &Ia_Invalid },
+ /* 2A */ { 0, &Ia_Invalid },
+ /* 2B */ { 0, &Ia_Invalid },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_Invalid },
+ /* 39 */ { 0, &Ia_Invalid },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_Invalid },
+ /* 41 */ { 0, &Ia_Invalid },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_Invalid },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_vpmacssww_Vdq_Hdq_Wdq_VIb },
+ /* 86 */ { 0, &Ia_vpmacsswd_Vdq_Hdq_Wdq_VIb },
+ /* 87 */ { 0, &Ia_vpmacssdql_Vdq_Hdq_Wdq_VIb },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_vpmacssdd_Vdq_Hdq_Wdq_VIb },
+ /* 8F */ { 0, &Ia_vpmacssdqh_Vdq_Hdq_Wdq_VIb },
+ /* 90 */ { 0, &Ia_Invalid },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_vpmacsww_Vdq_Hdq_Wdq_VIb },
+ /* 96 */ { 0, &Ia_vpmacswd_Vdq_Hdq_Wdq_VIb },
+ /* 97 */ { 0, &Ia_vpmacsdql_Vdq_Hdq_Wdq_VIb },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_vpmacsdd_Vdq_Hdq_Wdq_VIb },
+ /* 9F */ { 0, &Ia_vpmacsdqh_Vdq_Hdq_Wdq_VIb },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { GRPVEXW(xop8_a2) },
+ /* A3 */ { GRPVEXW(xop8_a3) },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_vpmadcsswd_Vdq_Hdq_Wdq_VIb },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_Invalid },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_vpmadcswd_Vdq_Hdq_Wdq_VIb },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_vprotb_Vdq_Wdq_Ib },
+ /* C1 */ { 0, &Ia_vprotw_Vdq_Wdq_Ib },
+ /* C2 */ { 0, &Ia_vprotd_Vdq_Wdq_Ib },
+ /* C3 */ { 0, &Ia_vprotq_Vdq_Wdq_Ib },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { 0, &Ia_vpcomb_Vdq_Hdq_Wdq_Ib },
+ /* CD */ { 0, &Ia_vpcomw_Vdq_Hdq_Wdq_Ib },
+ /* CE */ { 0, &Ia_vpcomd_Vdq_Hdq_Wdq_Ib },
+ /* CF */ { 0, &Ia_vpcomq_Vdq_Hdq_Wdq_Ib },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { 0, &Ia_Invalid },
+ /* DC */ { 0, &Ia_Invalid },
+ /* DD */ { 0, &Ia_Invalid },
+ /* DE */ { 0, &Ia_Invalid },
+ /* DF */ { 0, &Ia_Invalid },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_vpcomub_Vdq_Hdq_Wdq_Ib },
+ /* ED */ { 0, &Ia_vpcomuw_Vdq_Hdq_Wdq_Ib },
+ /* EE */ { 0, &Ia_vpcomud_Vdq_Hdq_Wdq_Ib },
+ /* EF */ { 0, &Ia_vpcomuq_Vdq_Hdq_Wdq_Ib },
+ /* F0 */ { 0, &Ia_Invalid },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { 0, &Ia_Invalid },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid },
+
+ // 256 entries for XOP map 0x9 opcodes
+ /* 00 */ { 0, &Ia_Invalid },
+ /* 01 */ { 0, &Ia_Invalid },
+ /* 02 */ { 0, &Ia_Invalid },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { 0, &Ia_Invalid },
+ /* 05 */ { 0, &Ia_Invalid },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_Invalid },
+ /* 09 */ { 0, &Ia_Invalid },
+ /* 0A */ { 0, &Ia_Invalid },
+ /* 0B */ { 0, &Ia_Invalid },
+ /* 0C */ { 0, &Ia_Invalid },
+ /* 0D */ { 0, &Ia_Invalid },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_Invalid },
+ /* 10 */ { 0, &Ia_Invalid },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { 0, &Ia_Invalid },
+ /* 15 */ { 0, &Ia_Invalid },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_Invalid },
+ /* 1D */ { 0, &Ia_Invalid },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_Invalid },
+ /* 21 */ { 0, &Ia_Invalid },
+ /* 22 */ { 0, &Ia_Invalid },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_Invalid },
+ /* 29 */ { 0, &Ia_Invalid },
+ /* 2A */ { 0, &Ia_Invalid },
+ /* 2B */ { 0, &Ia_Invalid },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_Invalid },
+ /* 39 */ { 0, &Ia_Invalid },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_Invalid },
+ /* 41 */ { 0, &Ia_Invalid },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_Invalid },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { 0, &Ia_frczps_Vps_Wps },
+ /* 81 */ { 0, &Ia_frczpd_Vpd_Wpd },
+ /* 82 */ { 0, &Ia_frczss_Vss_Wss },
+ /* 83 */ { 0, &Ia_frczsd_Vsd_Wsd },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { GRPVEXW(xop9_88) },
+ /* 89 */ { GRPVEXW(xop9_89) },
+ /* 8A */ { GRPVEXW(xop9_8a) },
+ /* 8B */ { GRPVEXW(xop9_8b) },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_Invalid },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { GRPVEXW(xop9_90) },
+ /* 91 */ { GRPVEXW(xop9_91) },
+ /* 92 */ { GRPVEXW(xop9_92) },
+ /* 93 */ { GRPVEXW(xop9_93) },
+ /* 94 */ { GRPVEXW(xop9_94) },
+ /* 95 */ { GRPVEXW(xop9_95) },
+ /* 96 */ { GRPVEXW(xop9_96) },
+ /* 97 */ { GRPVEXW(xop9_97) },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_Invalid },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_Invalid },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_Invalid },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_Invalid },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_vphaddbw_Vdq_Wdq },
+ /* C2 */ { 0, &Ia_vphaddbd_Vdq_Wdq },
+ /* C3 */ { 0, &Ia_vphaddbq_Vdq_Wdq },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_vphaddwd_Vdq_Wdq },
+ /* C7 */ { 0, &Ia_vphaddwq_Vdq_Wdq },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_vphadddq_Vdq_Wdq },
+ /* CC */ { 0, &Ia_Invalid },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_vphaddubw_Vdq_Wdq },
+ /* D2 */ { 0, &Ia_vphaddubd_Vdq_Wdq },
+ /* D3 */ { 0, &Ia_vphaddubq_Vdq_Wdq },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_vphadduwd_Vdq_Wdq },
+ /* D7 */ { 0, &Ia_vphadduwq_Vdq_Wdq },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { 0, &Ia_vphaddudq_Vdq_Wdq },
+ /* DC */ { 0, &Ia_Invalid },
+ /* DD */ { 0, &Ia_Invalid },
+ /* DE */ { 0, &Ia_Invalid },
+ /* DF */ { 0, &Ia_Invalid },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_vphsubbw_Vdq_Wdq },
+ /* E2 */ { 0, &Ia_vphsubwd_Vdq_Wdq },
+ /* E3 */ { 0, &Ia_vphsubdq_Vdq_Wdq },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { 0, &Ia_Invalid },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { 0, &Ia_Invalid },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid },
+
+ // 256 entries for XOP map 0xA opcodes
+ /* 00 */ { 0, &Ia_Invalid },
+ /* 01 */ { 0, &Ia_Invalid },
+ /* 02 */ { 0, &Ia_Invalid },
+ /* 03 */ { 0, &Ia_Invalid },
+ /* 04 */ { 0, &Ia_Invalid },
+ /* 05 */ { 0, &Ia_Invalid },
+ /* 06 */ { 0, &Ia_Invalid },
+ /* 07 */ { 0, &Ia_Invalid },
+ /* 08 */ { 0, &Ia_Invalid },
+ /* 09 */ { 0, &Ia_Invalid },
+ /* 0A */ { 0, &Ia_Invalid },
+ /* 0B */ { 0, &Ia_Invalid },
+ /* 0C */ { 0, &Ia_Invalid },
+ /* 0D */ { 0, &Ia_Invalid },
+ /* 0E */ { 0, &Ia_Invalid },
+ /* 0F */ { 0, &Ia_Invalid },
+ /* 10 */ { 0, &Ia_bextr_Gy_Ey_Id },
+ /* 11 */ { 0, &Ia_Invalid },
+ /* 12 */ { 0, &Ia_Invalid },
+ /* 13 */ { 0, &Ia_Invalid },
+ /* 14 */ { 0, &Ia_Invalid },
+ /* 15 */ { 0, &Ia_Invalid },
+ /* 16 */ { 0, &Ia_Invalid },
+ /* 17 */ { 0, &Ia_Invalid },
+ /* 18 */ { 0, &Ia_Invalid },
+ /* 19 */ { 0, &Ia_Invalid },
+ /* 1A */ { 0, &Ia_Invalid },
+ /* 1B */ { 0, &Ia_Invalid },
+ /* 1C */ { 0, &Ia_Invalid },
+ /* 1D */ { 0, &Ia_Invalid },
+ /* 1E */ { 0, &Ia_Invalid },
+ /* 1F */ { 0, &Ia_Invalid },
+ /* 20 */ { 0, &Ia_Invalid },
+ /* 21 */ { 0, &Ia_Invalid },
+ /* 22 */ { 0, &Ia_Invalid },
+ /* 23 */ { 0, &Ia_Invalid },
+ /* 24 */ { 0, &Ia_Invalid },
+ /* 25 */ { 0, &Ia_Invalid },
+ /* 26 */ { 0, &Ia_Invalid },
+ /* 27 */ { 0, &Ia_Invalid },
+ /* 28 */ { 0, &Ia_Invalid },
+ /* 29 */ { 0, &Ia_Invalid },
+ /* 2A */ { 0, &Ia_Invalid },
+ /* 2B */ { 0, &Ia_Invalid },
+ /* 2C */ { 0, &Ia_Invalid },
+ /* 2D */ { 0, &Ia_Invalid },
+ /* 2E */ { 0, &Ia_Invalid },
+ /* 2F */ { 0, &Ia_Invalid },
+ /* 30 */ { 0, &Ia_Invalid },
+ /* 31 */ { 0, &Ia_Invalid },
+ /* 32 */ { 0, &Ia_Invalid },
+ /* 33 */ { 0, &Ia_Invalid },
+ /* 34 */ { 0, &Ia_Invalid },
+ /* 35 */ { 0, &Ia_Invalid },
+ /* 36 */ { 0, &Ia_Invalid },
+ /* 37 */ { 0, &Ia_Invalid },
+ /* 38 */ { 0, &Ia_Invalid },
+ /* 39 */ { 0, &Ia_Invalid },
+ /* 3A */ { 0, &Ia_Invalid },
+ /* 3B */ { 0, &Ia_Invalid },
+ /* 3C */ { 0, &Ia_Invalid },
+ /* 3D */ { 0, &Ia_Invalid },
+ /* 3E */ { 0, &Ia_Invalid },
+ /* 3F */ { 0, &Ia_Invalid },
+ /* 40 */ { 0, &Ia_Invalid },
+ /* 41 */ { 0, &Ia_Invalid },
+ /* 42 */ { 0, &Ia_Invalid },
+ /* 43 */ { 0, &Ia_Invalid },
+ /* 44 */ { 0, &Ia_Invalid },
+ /* 45 */ { 0, &Ia_Invalid },
+ /* 46 */ { 0, &Ia_Invalid },
+ /* 47 */ { 0, &Ia_Invalid },
+ /* 48 */ { 0, &Ia_Invalid },
+ /* 49 */ { 0, &Ia_Invalid },
+ /* 4A */ { 0, &Ia_Invalid },
+ /* 4B */ { 0, &Ia_Invalid },
+ /* 4C */ { 0, &Ia_Invalid },
+ /* 4D */ { 0, &Ia_Invalid },
+ /* 4E */ { 0, &Ia_Invalid },
+ /* 4F */ { 0, &Ia_Invalid },
+ /* 50 */ { 0, &Ia_Invalid },
+ /* 51 */ { 0, &Ia_Invalid },
+ /* 52 */ { 0, &Ia_Invalid },
+ /* 53 */ { 0, &Ia_Invalid },
+ /* 54 */ { 0, &Ia_Invalid },
+ /* 55 */ { 0, &Ia_Invalid },
+ /* 56 */ { 0, &Ia_Invalid },
+ /* 57 */ { 0, &Ia_Invalid },
+ /* 58 */ { 0, &Ia_Invalid },
+ /* 59 */ { 0, &Ia_Invalid },
+ /* 5A */ { 0, &Ia_Invalid },
+ /* 5B */ { 0, &Ia_Invalid },
+ /* 5C */ { 0, &Ia_Invalid },
+ /* 5D */ { 0, &Ia_Invalid },
+ /* 5E */ { 0, &Ia_Invalid },
+ /* 5F */ { 0, &Ia_Invalid },
+ /* 60 */ { 0, &Ia_Invalid },
+ /* 61 */ { 0, &Ia_Invalid },
+ /* 62 */ { 0, &Ia_Invalid },
+ /* 63 */ { 0, &Ia_Invalid },
+ /* 64 */ { 0, &Ia_Invalid },
+ /* 65 */ { 0, &Ia_Invalid },
+ /* 66 */ { 0, &Ia_Invalid },
+ /* 67 */ { 0, &Ia_Invalid },
+ /* 68 */ { 0, &Ia_Invalid },
+ /* 69 */ { 0, &Ia_Invalid },
+ /* 6A */ { 0, &Ia_Invalid },
+ /* 6B */ { 0, &Ia_Invalid },
+ /* 6C */ { 0, &Ia_Invalid },
+ /* 6D */ { 0, &Ia_Invalid },
+ /* 6E */ { 0, &Ia_Invalid },
+ /* 6F */ { 0, &Ia_Invalid },
+ /* 70 */ { 0, &Ia_Invalid },
+ /* 71 */ { 0, &Ia_Invalid },
+ /* 72 */ { 0, &Ia_Invalid },
+ /* 73 */ { 0, &Ia_Invalid },
+ /* 74 */ { 0, &Ia_Invalid },
+ /* 75 */ { 0, &Ia_Invalid },
+ /* 76 */ { 0, &Ia_Invalid },
+ /* 77 */ { 0, &Ia_Invalid },
+ /* 78 */ { 0, &Ia_Invalid },
+ /* 79 */ { 0, &Ia_Invalid },
+ /* 7A */ { 0, &Ia_Invalid },
+ /* 7B */ { 0, &Ia_Invalid },
+ /* 7C */ { 0, &Ia_Invalid },
+ /* 7D */ { 0, &Ia_Invalid },
+ /* 7E */ { 0, &Ia_Invalid },
+ /* 7F */ { 0, &Ia_Invalid },
+ /* 80 */ { 0, &Ia_Invalid },
+ /* 81 */ { 0, &Ia_Invalid },
+ /* 82 */ { 0, &Ia_Invalid },
+ /* 83 */ { 0, &Ia_Invalid },
+ /* 84 */ { 0, &Ia_Invalid },
+ /* 85 */ { 0, &Ia_Invalid },
+ /* 86 */ { 0, &Ia_Invalid },
+ /* 87 */ { 0, &Ia_Invalid },
+ /* 88 */ { 0, &Ia_Invalid },
+ /* 89 */ { 0, &Ia_Invalid },
+ /* 8A */ { 0, &Ia_Invalid },
+ /* 8B */ { 0, &Ia_Invalid },
+ /* 8C */ { 0, &Ia_Invalid },
+ /* 8D */ { 0, &Ia_Invalid },
+ /* 8E */ { 0, &Ia_Invalid },
+ /* 8F */ { 0, &Ia_Invalid },
+ /* 90 */ { 0, &Ia_Invalid },
+ /* 91 */ { 0, &Ia_Invalid },
+ /* 92 */ { 0, &Ia_Invalid },
+ /* 93 */ { 0, &Ia_Invalid },
+ /* 94 */ { 0, &Ia_Invalid },
+ /* 95 */ { 0, &Ia_Invalid },
+ /* 96 */ { 0, &Ia_Invalid },
+ /* 97 */ { 0, &Ia_Invalid },
+ /* 98 */ { 0, &Ia_Invalid },
+ /* 99 */ { 0, &Ia_Invalid },
+ /* 9A */ { 0, &Ia_Invalid },
+ /* 9B */ { 0, &Ia_Invalid },
+ /* 9C */ { 0, &Ia_Invalid },
+ /* 9D */ { 0, &Ia_Invalid },
+ /* 9E */ { 0, &Ia_Invalid },
+ /* 9F */ { 0, &Ia_Invalid },
+ /* A0 */ { 0, &Ia_Invalid },
+ /* A1 */ { 0, &Ia_Invalid },
+ /* A2 */ { 0, &Ia_Invalid },
+ /* A3 */ { 0, &Ia_Invalid },
+ /* A4 */ { 0, &Ia_Invalid },
+ /* A5 */ { 0, &Ia_Invalid },
+ /* A6 */ { 0, &Ia_Invalid },
+ /* A7 */ { 0, &Ia_Invalid },
+ /* A8 */ { 0, &Ia_Invalid },
+ /* A9 */ { 0, &Ia_Invalid },
+ /* AA */ { 0, &Ia_Invalid },
+ /* AB */ { 0, &Ia_Invalid },
+ /* AC */ { 0, &Ia_Invalid },
+ /* AD */ { 0, &Ia_Invalid },
+ /* AE */ { 0, &Ia_Invalid },
+ /* AF */ { 0, &Ia_Invalid },
+ /* B0 */ { 0, &Ia_Invalid },
+ /* B1 */ { 0, &Ia_Invalid },
+ /* B2 */ { 0, &Ia_Invalid },
+ /* B3 */ { 0, &Ia_Invalid },
+ /* B4 */ { 0, &Ia_Invalid },
+ /* B5 */ { 0, &Ia_Invalid },
+ /* B6 */ { 0, &Ia_Invalid },
+ /* B7 */ { 0, &Ia_Invalid },
+ /* B8 */ { 0, &Ia_Invalid },
+ /* B9 */ { 0, &Ia_Invalid },
+ /* BA */ { 0, &Ia_Invalid },
+ /* BB */ { 0, &Ia_Invalid },
+ /* BC */ { 0, &Ia_Invalid },
+ /* BD */ { 0, &Ia_Invalid },
+ /* BE */ { 0, &Ia_Invalid },
+ /* BF */ { 0, &Ia_Invalid },
+ /* C0 */ { 0, &Ia_Invalid },
+ /* C1 */ { 0, &Ia_Invalid },
+ /* C2 */ { 0, &Ia_Invalid },
+ /* C3 */ { 0, &Ia_Invalid },
+ /* C4 */ { 0, &Ia_Invalid },
+ /* C5 */ { 0, &Ia_Invalid },
+ /* C6 */ { 0, &Ia_Invalid },
+ /* C7 */ { 0, &Ia_Invalid },
+ /* C8 */ { 0, &Ia_Invalid },
+ /* C9 */ { 0, &Ia_Invalid },
+ /* CA */ { 0, &Ia_Invalid },
+ /* CB */ { 0, &Ia_Invalid },
+ /* CC */ { 0, &Ia_Invalid },
+ /* CD */ { 0, &Ia_Invalid },
+ /* CE */ { 0, &Ia_Invalid },
+ /* CF */ { 0, &Ia_Invalid },
+ /* D0 */ { 0, &Ia_Invalid },
+ /* D1 */ { 0, &Ia_Invalid },
+ /* D2 */ { 0, &Ia_Invalid },
+ /* D3 */ { 0, &Ia_Invalid },
+ /* D4 */ { 0, &Ia_Invalid },
+ /* D5 */ { 0, &Ia_Invalid },
+ /* D6 */ { 0, &Ia_Invalid },
+ /* D7 */ { 0, &Ia_Invalid },
+ /* D8 */ { 0, &Ia_Invalid },
+ /* D9 */ { 0, &Ia_Invalid },
+ /* DA */ { 0, &Ia_Invalid },
+ /* DB */ { 0, &Ia_Invalid },
+ /* DC */ { 0, &Ia_Invalid },
+ /* DD */ { 0, &Ia_Invalid },
+ /* DE */ { 0, &Ia_Invalid },
+ /* DF */ { 0, &Ia_Invalid },
+ /* E0 */ { 0, &Ia_Invalid },
+ /* E1 */ { 0, &Ia_Invalid },
+ /* E2 */ { 0, &Ia_Invalid },
+ /* E3 */ { 0, &Ia_Invalid },
+ /* E4 */ { 0, &Ia_Invalid },
+ /* E5 */ { 0, &Ia_Invalid },
+ /* E6 */ { 0, &Ia_Invalid },
+ /* E7 */ { 0, &Ia_Invalid },
+ /* E8 */ { 0, &Ia_Invalid },
+ /* E9 */ { 0, &Ia_Invalid },
+ /* EA */ { 0, &Ia_Invalid },
+ /* EB */ { 0, &Ia_Invalid },
+ /* EC */ { 0, &Ia_Invalid },
+ /* ED */ { 0, &Ia_Invalid },
+ /* EE */ { 0, &Ia_Invalid },
+ /* EF */ { 0, &Ia_Invalid },
+ /* F0 */ { 0, &Ia_Invalid },
+ /* F1 */ { 0, &Ia_Invalid },
+ /* F2 */ { 0, &Ia_Invalid },
+ /* F3 */ { 0, &Ia_Invalid },
+ /* F4 */ { 0, &Ia_Invalid },
+ /* F5 */ { 0, &Ia_Invalid },
+ /* F6 */ { 0, &Ia_Invalid },
+ /* F7 */ { 0, &Ia_Invalid },
+ /* F8 */ { 0, &Ia_Invalid },
+ /* F9 */ { 0, &Ia_Invalid },
+ /* FA */ { 0, &Ia_Invalid },
+ /* FB */ { 0, &Ia_Invalid },
+ /* FC */ { 0, &Ia_Invalid },
+ /* FD */ { 0, &Ia_Invalid },
+ /* FE */ { 0, &Ia_Invalid },
+ /* FF */ { 0, &Ia_Invalid }
+};
diff --git a/Externals/Bochs_disasm/disasm.h b/Externals/Bochs_disasm/disasm.h
index 0bf21e8cfb..8b15003880 100644
--- a/Externals/Bochs_disasm/disasm.h
+++ b/Externals/Bochs_disasm/disasm.h
@@ -1,3 +1,26 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: disasm.h 12420 2014-07-18 11:14:25Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2014 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
#ifndef _BX_DISASM_H_
#define _BX_DISASM_H_
@@ -15,23 +38,61 @@
base = sib_byte & 0x07; \
}
-// will be used in future
-#define IA_286 0x00000001 /* 286+ instruction */
-#define IA_386 0x00000002 /* 386+ instruction */
-#define IA_486 0x00000004 /* 486+ instruction */
-#define IA_PENTIUM 0x00000008 /* Pentium+ instruction */
-#define IA_P6 0x00000010 /* P6 new instruction */
-#define IA_SYSTEM 0x00000020 /* system instruction (require CPL=0) */
-#define IA_LEGACY 0x00000040 /* legacy instruction */
-#define IA_X87 0x00000080 /* FPU (X87) instruction */
-#define IA_MMX 0x00000100 /* MMX instruction */
-#define IA_3DNOW 0x00000200 /* 3DNow! instruction */
-#define IA_PREFETCH 0x00000400 /* Prefetch instruction */
-#define IA_SSE 0x00000800 /* SSE instruction */
-#define IA_SSE2 0x00001000 /* SSE2 instruction */
-#define IA_SSE3 0x00002000 /* SSE3 instruction */
-#define IA_SSE4 0x00004000 /* SSE4 instruction */
-#define IA_X86_64 0x00008000 /* x86-64 instruction */
+/* Instruction set attributes (duplicated in cpu.h) */
+#define IA_X87 (BX_CONST64(1) << 0) /* FPU (X87) instruction */
+#define IA_486 (BX_CONST64(1) << 1) /* 486 new instruction */
+#define IA_PENTIUM (BX_CONST64(1) << 2) /* Pentium new instruction */
+#define IA_P6 (BX_CONST64(1) << 3) /* P6 new instruction */
+#define IA_MMX (BX_CONST64(1) << 4) /* MMX instruction */
+#define IA_3DNOW (BX_CONST64(1) << 5) /* 3DNow! instruction (AMD) */
+#define IA_SYSCALL_SYSRET (BX_CONST64(1) << 6) /* SYSCALL/SYSRET in legacy mode (AMD) */
+#define IA_SYSENTER_SYSEXIT (BX_CONST64(1) << 7) /* SYSENTER/SYSEXIT instruction */
+#define IA_CLFLUSH (BX_CONST64(1) << 8) /* CLFLUSH instruction */
+#define IA_SSE (BX_CONST64(1) << 9) /* SSE instruction */
+#define IA_SSE2 (BX_CONST64(1) << 10) /* SSE2 instruction */
+#define IA_SSE3 (BX_CONST64(1) << 11) /* SSE3 instruction */
+#define IA_SSSE3 (BX_CONST64(1) << 12) /* SSSE3 instruction */
+#define IA_SSE4_1 (BX_CONST64(1) << 13) /* SSE4_1 instruction */
+#define IA_SSE4_2 (BX_CONST64(1) << 14) /* SSE4_2 instruction */
+#define IA_POPCNT (BX_CONST64(1) << 15) /* POPCNT instruction */
+#define IA_MONITOR_MWAIT (BX_CONST64(1) << 16) /* MONITOR/MWAIT instruction */
+#define IA_VMX (BX_CONST64(1) << 17) /* VMX instruction */
+#define IA_SMX (BX_CONST64(1) << 18) /* SMX instruction */
+#define IA_LM_LAHF_SAHF (BX_CONST64(1) << 19) /* Long Mode LAHF/SAHF instruction */
+#define IA_CMPXCHG16B (BX_CONST64(1) << 20) /* CMPXCHG16B instruction */
+#define IA_RDTSCP (BX_CONST64(1) << 21) /* RDTSCP instruction */
+#define IA_XSAVE (BX_CONST64(1) << 22) /* XSAVE/XRSTOR extensions instruction */
+#define IA_XSAVEOPT (BX_CONST64(1) << 23) /* XSAVEOPT instruction */
+#define IA_AES_PCLMULQDQ (BX_CONST64(1) << 24) /* AES+PCLMULQDQ instruction */
+#define IA_MOVBE (BX_CONST64(1) << 25) /* MOVBE Intel Atom(R) instruction */
+#define IA_FSGSBASE (BX_CONST64(1) << 26) /* FS/GS BASE access instruction */
+#define IA_INVPCID (BX_CONST64(1) << 27) /* INVPCID instruction */
+#define IA_AVX (BX_CONST64(1) << 28) /* AVX instruction */
+#define IA_AVX2 (BX_CONST64(1) << 29) /* AVX2 instruction */
+#define IA_AVX_F16C (BX_CONST64(1) << 30) /* AVX F16 convert instruction */
+#define IA_AVX_FMA (BX_CONST64(1) << 31) /* AVX FMA instruction */
+#define IA_SSE4A (BX_CONST64(1) << 32) /* SSE4A instruction (AMD) */
+#define IA_LZCNT (BX_CONST64(1) << 33) /* LZCNT instruction */
+#define IA_BMI1 (BX_CONST64(1) << 34) /* BMI1 instruction */
+#define IA_BMI2 (BX_CONST64(1) << 35) /* BMI2 instruction */
+#define IA_FMA4 (BX_CONST64(1) << 36) /* FMA4 instruction (AMD) */
+#define IA_XOP (BX_CONST64(1) << 37) /* XOP instruction (AMD) */
+#define IA_TBM (BX_CONST64(1) << 38) /* TBM instruction (AMD) */
+#define IA_SVM (BX_CONST64(1) << 39) /* SVM instruction (AMD) */
+#define IA_RDRAND (BX_CONST64(1) << 40) /* RDRAND instruction */
+#define IA_ADX (BX_CONST64(1) << 41) /* ADCX/ADOX instruction */
+#define IA_SMAP (BX_CONST64(1) << 42) /* SMAP support */
+#define IA_RDSEED (BX_CONST64(1) << 43) /* RDSEED instruction */
+#define IA_SHA (BX_CONST64(1) << 44) /* SHA instruction */
+#define IA_AVX512 (BX_CONST64(1) << 45) /* AVX-512 instruction */
+#define IA_AVX512_CD (BX_CONST64(1) << 46) /* AVX-512 Conflict Detection instruction */
+#define IA_AVX512_PF (BX_CONST64(1) << 47) /* AVX-512 Sparse Prefetch instruction */
+#define IA_AVX512_ER (BX_CONST64(1) << 48) /* AVX-512 Exponential/Reciprocal instruction */
+#define IA_AVX512_DQ (BX_CONST64(1) << 49) /* AVX-512DQ instruction */
+#define IA_AVX512_BW (BX_CONST64(1) << 50) /* AVX-512 Byte/Word instruction */
+#define IA_CLFLUSHOPT (BX_CONST64(1) << 51) /* CLFLUSHOPT instruction */
+#define IA_XSAVEC (BX_CONST64(1) << 52) /* XSAVEC instruction */
+#define IA_XSAVES (BX_CONST64(1) << 53) /* XSAVES instruction */
/* general purpose bit register */
enum {
@@ -70,6 +131,8 @@ struct BxDisasmOpcodeInfo_t
BxDisasmPtr_t Operand1;
BxDisasmPtr_t Operand2;
BxDisasmPtr_t Operand3;
+ BxDisasmPtr_t Operand4;
+ Bit64u Feature;
};
struct BxDisasmOpcodeTable_t
@@ -82,26 +145,27 @@ struct BxDisasmOpcodeTable_t
#define NO_SEG_OVERRIDE 0xFF
// datasize attributes
-#define X_SIZE 0x0000
-#define B_SIZE 0x0100
-#define W_SIZE 0x0200
-#define D_SIZE 0x0300
-#define Q_SIZE 0x0400
-#define Z_SIZE 0x0500
-#define V_SIZE 0x0600
-#define O_SIZE 0x0700
-#define T_SIZE 0x0800
-#define P_SIZE 0x0900
+#define X_SIZE 0x00 /* no size */
+#define B_SIZE 0x01 /* byte */
+#define W_SIZE 0x02 /* word */
+#define D_SIZE 0x03 /* double word */
+#define Q_SIZE 0x04 /* quad word */
+#define Z_SIZE 0x05 /* double word in 32-bit mode, quad word in 64-bit mode */
+#define T_SIZE 0x06 /* 10-byte x87 floating point */
+#define XMM_SIZE 0x07 /* double quad word (XMM) */
+#define YMM_SIZE 0x08 /* quadruple quad word (YMM) */
+
+#define VSIB_Index 0x80
// branch hint attribute
#define BRANCH_HINT 0x1000
-struct x86_insn
+struct x86_insn
{
public:
x86_insn(bx_bool is32, bx_bool is64);
- bx_bool is_seg_override() const {
+ bx_bool is_seg_override() const {
return (seg_override != NO_SEG_OVERRIDE);
}
@@ -113,15 +177,25 @@ public:
Bit8u extend8b;
Bit8u rex_r, rex_x, rex_b;
Bit8u seg_override;
- unsigned b1, prefixes;
+ unsigned b1;
unsigned ilen;
+#define BX_AVX_VL128 0
+#define BX_AVX_VL256 1
+ Bit8u vex_vvv, vex_l, vex_w;
+ int is_vex; // 0 - no VEX used, 1 - VEX is used, -1 - invalid VEX
+ int is_evex; // 0 - no EVEX used, 1 - EVEX is used, -1 - invalid EVEX
+ int is_xop; // 0 - no XOP used, 1 - XOP is used, -1 - invalid XOP
Bit8u modrm, mod, nnn, rm;
Bit8u sib, scale, index, base;
union {
Bit16u displ16;
Bit32u displ32;
} displacement;
+
+ bx_bool evex_b;
+ bx_bool evex_z;
+ unsigned evex_ll_rc;
};
BX_CPP_INLINE x86_insn::x86_insn(bx_bool is32, bx_bool is64)
@@ -145,48 +219,60 @@ BX_CPP_INLINE x86_insn::x86_insn(bx_bool is32, bx_bool is64)
extend8b = 0;
rex_r = rex_b = rex_x = 0;
seg_override = NO_SEG_OVERRIDE;
- prefixes = 0;
ilen = 0;
b1 = 0;
+ is_vex = 0;
+ is_evex = 0;
+ is_xop = 0;
+ vex_vvv = 0;
+ vex_l = BX_AVX_VL128;
+ vex_w = 0;
modrm = mod = nnn = rm = 0;
sib = scale = index = base = 0;
displacement.displ32 = 0;
+
+ evex_b = 0;
+ evex_ll_rc = 0;
+ evex_z = 0;
}
class disassembler {
public:
- disassembler() { set_syntax_intel(); }
+ disassembler(): offset_mode_hex(0), print_mem_datasize(1) { set_syntax_intel(); }
- unsigned disasm(bx_bool is_32, bx_bool is_64, bx_address base, bx_address ip, const Bit8u *instr, char *disbuf);
+ unsigned disasm(bx_bool is_32, bx_bool is_64, bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf);
- unsigned disasm16(bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
- { return disasm(0, 0, base, ip, instr, disbuf); }
+ unsigned disasm16(bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+ { return disasm(0, 0, cs_base, ip, instr, disbuf); }
- unsigned disasm32(bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
- { return disasm(1, 0, base, ip, instr, disbuf); }
+ unsigned disasm32(bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+ { return disasm(1, 0, cs_base, ip, instr, disbuf); }
- unsigned disasm64(bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
- { return disasm(1, 1, base, ip, instr, disbuf); }
+ unsigned disasm64(bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+ { return disasm(1, 1, cs_base, ip, instr, disbuf); }
- x86_insn decode(bx_bool is_32, bx_bool is_64, bx_address base, bx_address ip, const Bit8u *instr, char *disbuf);
+ x86_insn decode(bx_bool is_32, bx_bool is_64, bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf);
- x86_insn decode16(bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
- { return decode(0, 0, base, ip, instr, disbuf); }
+ x86_insn decode16(bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+ { return decode(0, 0, cs_base, ip, instr, disbuf); }
- x86_insn decode32(bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
- { return decode(1, 0, base, ip, instr, disbuf); }
+ x86_insn decode32(bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+ { return decode(1, 0, cs_base, ip, instr, disbuf); }
- x86_insn decode64(bx_address base, bx_address ip, const Bit8u *instr, char *disbuf)
- { return decode(1, 1, base, ip, instr, disbuf); }
+ x86_insn decode64(bx_address cs_base, bx_address ip, const Bit8u *instr, char *disbuf)
+ { return decode(1, 1, cs_base, ip, instr, disbuf); }
void set_syntax_intel();
- void set_syntax_att ();
+ void set_syntax_att();
+
+ void set_offset_mode_hex(bx_bool mode) { offset_mode_hex = mode; }
+ void set_mem_datasize_print(bx_bool mode) { print_mem_datasize = mode; }
void toggle_syntax_mode();
private:
- bx_bool intel_mode;
+ bx_bool intel_mode, offset_mode_hex, print_mem_datasize;
const char **general_16bit_regname;
const char **general_8bit_regname;
@@ -196,16 +282,16 @@ private:
const char **segment_name;
const char **index16;
+ const char **vector_reg_name;
- const char *sreg_mod01or10_rm32[8];
- const char *sreg_mod00_base32[8];
- const char *sreg_mod01or10_base32[8];
+ const char *sreg_mod00_base32[16];
+ const char *sreg_mod01or10_base32[16];
const char *sreg_mod00_rm16[8];
const char *sreg_mod01or10_rm16[8];
private:
- bx_address db_eip, db_base;
+ bx_address db_eip, db_cs_base;
const Bit8u *instruction; // for fetching of next byte of instruction
@@ -250,6 +336,9 @@ private:
void dis_putc(char symbol);
void dis_sprintf(const char *fmt, ...);
void decode_modrm(x86_insn *insn);
+ unsigned decode_vex(x86_insn *insn);
+ unsigned decode_evex(x86_insn *insn);
+ unsigned decode_xop(x86_insn *insn);
void resolve16_mod0 (const x86_insn *insn, unsigned mode);
void resolve16_mod1or2(const x86_insn *insn, unsigned mode);
@@ -268,85 +357,88 @@ private:
void initialize_modrm_segregs();
- void print_datasize (unsigned mode);
+ void print_datasize(unsigned mode);
void print_memory_access16(int datasize,
const char *seg, const char *index, Bit16u disp);
- void print_memory_access (int datasize,
- const char *seg, const char *base, const char *index, int scale, Bit32u disp);
+ void print_memory_access32(int datasize,
+ const char *seg, const char *base, const char *index, int scale, Bit32s disp);
+ void print_memory_access64(int datasize,
+ const char *seg, const char *base, const char *index, int scale, Bit32s disp);
void print_disassembly_intel(const x86_insn *insn, const BxDisasmOpcodeInfo_t *entry);
void print_disassembly_att (const x86_insn *insn, const BxDisasmOpcodeInfo_t *entry);
public:
-/*
+/*
* Codes for Addressing Method:
* ---------------------------
- * A - Direct address. The instruction has no ModR/M byte; the address
- * of the operand is encoded in the instruction; and no base register,
+ * A - Direct address. The instruction has no ModR/M byte; the address
+ * of the operand is encoded in the instruction; and no base register,
* index register, or scaling factor can be applied.
* C - The reg field of the ModR/M byte selects a control register.
* D - The reg field of the ModR/M byte selects a debug register.
- * E - A ModR/M byte follows the opcode and specifies the operand. The
- * operand is either a general-purpose register or a memory address.
- * If it is a memory address, the address is computed from a segment
- * register and any of the following values: a base register, an
- * index register, a scaling factor, a displacement.
+ * E - A ModR/M byte follows the opcode and specifies the operand. The
+ * operand is either a general-purpose register or a memory address.
+ * In case of the register operand, the R/M field of the ModR/M byte
+ * selects a general register.
* F - Flags Register.
* G - The reg field of the ModR/M byte selects a general register.
- * I - Immediate data. The operand value is encoded in subsequent bytes of
+ * I - Immediate data. The operand value is encoded in subsequent bytes of
* the instruction.
- * J - The instruction contains a relative offset to be added to the
+ * J - The instruction contains a relative offset to be added to the
* instruction pointer register.
* M - The ModR/M byte may refer only to memory.
- * N - The R/M field of the ModR/M byte selects a packed-quadword MMX
+ * N - The R/M field of the ModR/M byte selects a packed-quadword MMX
technology register.
- * O - The instruction has no ModR/M byte; the offset of the operand is
- * coded as a word or double word (depending on address size attribute)
- * in the instruction. No base register, index register, or scaling
+ * O - The instruction has no ModR/M byte; the offset of the operand is
+ * coded as a word or double word (depending on address size attribute)
+ * in the instruction. No base register, index register, or scaling
* factor can be applied.
- * P - The reg field of the ModR/M byte selects a packed quadword MMX
+ * P - The reg field of the ModR/M byte selects a packed quadword MMX
* technology register.
- * Q - A ModR/M byte follows the opcode and specifies the operand. The
- * operand is either an MMX technology register or a memory address.
- * If it is a memory address, the address is computed from a segment
- * register and any of the following values: a base register, an
+ * Q - A ModR/M byte follows the opcode and specifies the operand. The
+ * operand is either an MMX technology register or a memory address.
+ * If it is a memory address, the address is computed from a segment
+ * register and any of the following values: a base register, an
* index register, a scaling factor, and a displacement.
* R - The mod field of the ModR/M byte may refer only to a general register.
* S - The reg field of the ModR/M byte selects a segment register.
- * U - The R/M field of the ModR/M byte selects a 128-bit XMM register.
* T - The reg field of the ModR/M byte selects a test register.
- * V - The reg field of the ModR/M byte selects a 128-bit XMM register.
- * W - A ModR/M byte follows the opcode and specifies the operand. The
- * operand is either a 128-bit XMM register or a memory address. If
- * it is a memory address, the address is computed from a segment
+ * U - The R/M field of the ModR/M byte selects a 128-bit XMM/256-bit YMM register.
+ * V - The reg field of the ModR/M byte selects a 128-bit XMM/256-bit YMM register.
+ * W - A ModR/M byte follows the opcode and specifies the operand. The
+ * operand is either a 128-bit XMM/256-bit YMM register or a memory address.
+ * If it is a memory address, the address is computed from a segment
* register and any of the following values: a base register, an
* index register, a scaling factor, and a displacement.
* X - Memory addressed by the DS:rSI register pair.
* Y - Memory addressed by the ES:rDI register pair.
- */
+ */
-/*
+/*
* Codes for Operand Type:
* ----------------------
- * a - Two one-word operands in memory or two double-word operands in
+ * a - Two one-word operands in memory or two double-word operands in
* memory, depending on operand-size attribute (used only by the BOUND
* instruction).
* b - Byte, regardless of operand-size attribute.
* d - Doubleword, regardless of operand-size attribute.
* dq - Double-quadword, regardless of operand-size attribute.
* p - 32-bit or 48-bit pointer, depending on operand-size attribute.
- * pd - 128-bit packed double-precision floating-point data.
+ * pd - 128-bit/256-bit packed double-precision floating-point data.
* pi - Quadword MMX technology register (packed integer)
- * ps - 128-bit packed single-precision floating-point data.
+ * ps - 128-bit/256-bit packed single-precision floating-point data.
* q - Quadword, regardless of operand-size attribute.
* s - 6-byte or 10-byte pseudo-descriptor.
* si - Doubleword integer register (scalar integer)
- * ss - Scalar element of a 128-bit packed single-precision floating data.
- * sd - Scalar element of a 128-bit packed double-precision floating data.
+ * ss - Scalar element of a packed single-precision floating data.
+ * sd - Scalar element of a packed double-precision floating data.
* v - Word, doubleword or quadword, depending on operand-size attribute.
* w - Word, regardless of operand-size attr.
+ * y - Doubleword or quadword (in 64-bit mode) depending on 32/64 bit
+ * operand size.
*/
// far call/jmp
@@ -354,18 +446,19 @@ public:
void Apd(const x86_insn *insn);
// 8-bit general purpose registers
- void AL(const x86_insn *insn);
- void CL(const x86_insn *insn);
+ void AL_Reg(const x86_insn *insn);
+ void CL_Reg(const x86_insn *insn);
// 16-bit general purpose registers
- void AX(const x86_insn *insn);
- void DX(const x86_insn *insn);
+ void AX_Reg(const x86_insn *insn);
+ void DX_Reg(const x86_insn *insn);
// 32-bit general purpose registers
- void EAX(const x86_insn *insn);
+ void EAX_Reg(const x86_insn *insn);
// 64-bit general purpose registers
- void RAX(const x86_insn *insn);
+ void RAX_Reg(const x86_insn *insn);
+ void RCX_Reg(const x86_insn *insn);
// segment registers
void CS(const x86_insn *insn);
@@ -378,9 +471,6 @@ public:
// segment registers
void Sw(const x86_insn *insn);
- // test registers
- void Td(const x86_insn *insn);
-
// control register
void Cd(const x86_insn *insn);
void Cq(const x86_insn *insn);
@@ -390,7 +480,7 @@ public:
void Dq(const x86_insn *insn);
// 8-bit general purpose register
- void R8(const x86_insn *insn);
+ void Reg8(const x86_insn *insn);
// 16-bit general purpose register
void RX(const x86_insn *insn);
@@ -406,12 +496,20 @@ public:
void Ew(const x86_insn *insn);
void Ed(const x86_insn *insn);
void Eq(const x86_insn *insn);
+ void Ey(const x86_insn *insn);
+ void Ebd(const x86_insn *insn);
+ void Ewd(const x86_insn *insn);
+ void Edq(const x86_insn *insn);
// general purpose register
void Gb(const x86_insn *insn);
void Gw(const x86_insn *insn);
void Gd(const x86_insn *insn);
void Gq(const x86_insn *insn);
+ void Gy(const x86_insn *insn);
+
+ // vex encoded general purpose register
+ void By(const x86_insn *insn);
// immediate
void I1(const x86_insn *insn);
@@ -420,7 +518,8 @@ public:
void Id(const x86_insn *insn);
void Iq(const x86_insn *insn);
- // two immediates Iw/Ib
+ // double immediate
+ void IbIb(const x86_insn *insn);
void IwIb(const x86_insn *insn);
// sign extended immediate
@@ -437,6 +536,7 @@ public:
void Rw(const x86_insn *insn);
void Rd(const x86_insn *insn);
void Rq(const x86_insn *insn);
+ void Ry(const x86_insn *insn);
// mmx register
void Pq(const x86_insn *insn);
@@ -447,22 +547,39 @@ public:
void Vq(const x86_insn *insn);
void Nq(const x86_insn *insn);
- // xmm register
+ // xmm/ymm register
+ void Ups(const x86_insn *insn);
+ void Upd(const x86_insn *insn);
void Udq(const x86_insn *insn);
+ void Uq(const x86_insn *insn);
+
void Vdq(const x86_insn *insn);
void Vss(const x86_insn *insn);
void Vsd(const x86_insn *insn);
void Vps(const x86_insn *insn);
void Vpd(const x86_insn *insn);
+ // xmm/ymm register through imm byte
+ void VIb(const x86_insn *insn);
- // xmm register or memory operand
+ // xmm/ymm register or memory operand
+ void Wb(const x86_insn *insn);
+ void Ww(const x86_insn *insn);
+ void Wd(const x86_insn *insn);
void Wq(const x86_insn *insn);
+
void Wdq(const x86_insn *insn);
void Wss(const x86_insn *insn);
void Wsd(const x86_insn *insn);
void Wps(const x86_insn *insn);
void Wpd(const x86_insn *insn);
+ // vex encoded xmm/ymm register
+ void Hdq(const x86_insn *insn);
+ void Hps(const x86_insn *insn);
+ void Hpd(const x86_insn *insn);
+ void Hss(const x86_insn *insn);
+ void Hsd(const x86_insn *insn);
+
// direct memory access
void OP_O(const x86_insn *insn, unsigned size);
void Ob(const x86_insn *insn);
@@ -484,6 +601,11 @@ public:
void Mdq(const x86_insn *insn);
void Mps(const x86_insn *insn);
void Mpd(const x86_insn *insn);
+ void Mss(const x86_insn *insn);
+ void Msd(const x86_insn *insn);
+
+ // gather VSib
+ void VSib(const x86_insn *insn);
// string instructions
void OP_X(const x86_insn *insn, unsigned size);
@@ -499,6 +621,11 @@ public:
void Yd(const x86_insn *insn);
void Yq(const x86_insn *insn);
+ // maskmovdq/maskmovdqu
+ void OP_sY(const x86_insn *insn, unsigned size);
+ void sYq(const x86_insn *insn);
+ void sYdq(const x86_insn *insn);
+
// jump offset
void Jb(const x86_insn *insn);
void Jw(const x86_insn *insn);
diff --git a/Externals/Bochs_disasm/opcodes.inc b/Externals/Bochs_disasm/opcodes.inc
new file mode 100644
index 0000000000..d58bf6e11a
--- /dev/null
+++ b/Externals/Bochs_disasm/opcodes.inc
@@ -0,0 +1,1903 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: opcodes.inc 12247 2014-03-17 20:29:44Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2013 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+Ia_aaa = { "aaa", "aaa", XX, XX, XX, XX, 0 },
+Ia_aad = { "aad", "aad", Ib, XX, XX, XX, 0 },
+Ia_aam = { "aam", "aam", Ib, XX, XX, XX, 0 },
+Ia_aas = { "aas", "aas", XX, XX, XX, XX, 0 },
+Ia_adcb_AL_Ib = { "adc", "adcb", AL_Reg, Ib, XX, XX, 0 },
+Ia_adcb_Eb_Gb = { "adc", "adcb", Eb, Gb, XX, XX, 0 },
+Ia_adcb_Eb_Ib = { "adc", "adcb", Eb, Ib, XX, XX, 0 },
+Ia_adcb_Gb_Eb = { "adc", "adcb", Gb, Eb, XX, XX, 0 },
+Ia_adcl_EAX_Id = { "adc", "adcl", EAX_Reg, Id, XX, XX, 0 },
+Ia_adcl_Ed_Gd = { "adc", "adcl", Ed, Gd, XX, XX, 0 },
+Ia_adcl_Ed_Id = { "adc", "adcl", Ed, Id, XX, XX, 0 },
+Ia_adcl_Ed_sIb = { "adc", "adcl", Ed, sIbd, XX, XX, 0 },
+Ia_adcl_Gd_Ed = { "adc", "adcl", Gd, Ed, XX, XX, 0 },
+Ia_adcq_Eq_Gq = { "adc", "adcq", Eq, Gq, XX, XX, 0 },
+Ia_adcq_Eq_sIb = { "adc", "adcq", Eq, sIbq, XX, XX, 0 },
+Ia_adcq_Eq_sId = { "adc", "adcq", Eq, Iq, XX, XX, 0 },
+Ia_adcq_Gq_Eq = { "adc", "adcq", Gq, Eq, XX, XX, 0 },
+Ia_adcq_RAX_sId = { "adc", "adcq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_adcw_AX_Iw = { "adc", "adcw", AX_Reg, Iw, XX, XX, 0 },
+Ia_adcw_Ew_Gw = { "adc", "adcw", Ew, Gw, XX, XX, 0 },
+Ia_adcw_Ew_Iw = { "adc", "adcw", Ew, Iw, XX, XX, 0 },
+Ia_adcw_Ew_sIb = { "adc", "adcw", Ew, sIbw, XX, XX, 0 },
+Ia_adcw_Gw_Ew = { "adc", "adcw", Gw, Ew, XX, XX, 0 },
+Ia_adcx_Gd_Ed = { "adcx", "adcxd", Gd, Ed, XX, XX, IA_ADX },
+Ia_adcx_Gq_Eq = { "adcx", "adcxq", Gq, Eq, XX, XX, IA_ADX },
+Ia_addb_AL_Ib = { "add", "addb", AL_Reg, Ib, XX, XX, 0 },
+Ia_addb_Eb_Gb = { "add", "addb", Eb, Gb, XX, XX, 0 },
+Ia_addb_Eb_Ib = { "add", "addb", Eb, Ib, XX, XX, 0 },
+Ia_addb_Gb_Eb = { "add", "addb", Gb, Eb, XX, XX, 0 },
+Ia_addl_EAX_Id = { "add", "addl", EAX_Reg, Id, XX, XX, 0 },
+Ia_addl_Ed_Gd = { "add", "addl", Ed, Gd, XX, XX, 0 },
+Ia_addl_Ed_Id = { "add", "addl", Ed, Id, XX, XX, 0 },
+Ia_addl_Ed_sIb = { "add", "addl", Ed, sIbd, XX, XX, 0 },
+Ia_addl_Gd_Ed = { "add", "addl", Gd, Ed, XX, XX, 0 },
+Ia_addpd_Vpd_Wpd = { "addpd", "addpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_addps_Vps_Wps = { "addps", "addps", Vps, Wps, XX, XX, IA_SSE },
+Ia_addq_Eq_Gq = { "add", "addq", Eq, Gq, XX, XX, 0 },
+Ia_addq_Eq_sIb = { "add", "addq", Eq, sIbq, XX, XX, 0 },
+Ia_addq_Eq_sId = { "add", "addq", Eq, sIdq, XX, XX, 0 },
+Ia_addq_Gq_Eq = { "add", "addq", Gq, Eq, XX, XX, 0 },
+Ia_addq_RAX_sId = { "add", "addq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_addsd_Vsd_Wsd = { "addsd", "addsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_addss_Vss_Wss = { "addss", "addss", Vss, Wss, XX, XX, IA_SSE },
+Ia_addsubpd_Vpd_Wpd = { "addsubpd", "addsubpd", Vpd, Wpd, XX, XX, IA_SSE3 },
+Ia_addsubps_Vps_Wps = { "addsubps", "addsubps", Vps, Wps, XX, XX, IA_SSE3 },
+Ia_addw_AX_Iw = { "add", "addw", AX_Reg, Iw, XX, XX, 0 },
+Ia_addw_Ew_Gw = { "add", "addw", Ew, Gw, XX, XX, 0 },
+Ia_addw_Ew_Iw = { "add", "addw", Ew, Iw, XX, XX, 0 },
+Ia_addw_Ew_sIb = { "add", "addw", Ew, sIbw, XX, XX, 0 },
+Ia_addw_Gw_Ew = { "add", "addw", Gw, Ew, XX, XX, 0 },
+Ia_adox_Gd_Ed = { "adox", "adoxd", Gd, Ed, XX, XX, IA_ADX },
+Ia_adox_Gq_Eq = { "adox", "adoxq", Gq, Eq, XX, XX, IA_ADX },
+Ia_aesdec_Vdq_Wdq = { "aesdec", "aesdec", Vdq, Wdq, XX, XX, IA_AES_PCLMULQDQ },
+Ia_aesdeclast_Vdq_Wdq = { "aesdeclast", "aesdeclast", Vdq, Wdq, XX, XX, IA_AES_PCLMULQDQ },
+Ia_aesenc_Vdq_Wdq = { "aesenc", "aesenc", Vdq, Wdq, XX, XX, IA_AES_PCLMULQDQ },
+Ia_aesenclast_Vdq_Wdq = { "aesenclast", "aesenclast", Vdq, Wdq, XX, XX, IA_AES_PCLMULQDQ },
+Ia_aesimc_Vdq_Wdq = { "aesimc", "aesimc", Vdq, Wdq, XX, XX, IA_AES_PCLMULQDQ },
+Ia_aeskeygenassist_Vdq_Wdq_Ib = { "aeskeygenassist", "aeskeygenassist", Vdq, Wdq, Ib, XX, IA_AES_PCLMULQDQ },
+Ia_andb_AL_Ib = { "and", "andb", AL_Reg, Ib, XX, XX, 0 },
+Ia_andb_Eb_Gb = { "and", "andb", Eb, Gb, XX, XX, 0 },
+Ia_andb_Eb_Ib = { "and", "andb", Eb, Ib, XX, XX, 0 },
+Ia_andb_Gb_Eb = { "and", "andb", Gb, Eb, XX, XX, 0 },
+Ia_andl_EAX_Id = { "and", "andl", EAX_Reg, Id, XX, XX, 0 },
+Ia_andl_Ed_Gd = { "and", "andl", Ed, Gd, XX, XX, 0 },
+Ia_andl_Ed_Id = { "and", "andl", Ed, Id, XX, XX, 0 },
+Ia_andl_Ed_sIb = { "and", "andl", Ed, sIbd, XX, XX, 0 },
+Ia_andl_Gd_Ed = { "and", "andl", Gd, Ed, XX, XX, 0 },
+Ia_andn_Gy_By_Ey = { "andn", "andn", Gy, By, Ey, XX, IA_BMI1 },
+Ia_andnpd_Vpd_Wpd = { "andnpd", "andnpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_andnps_Vps_Wps = { "andnps", "andnps", Vps, Wps, XX, XX, IA_SSE },
+Ia_andpd_Vpd_Wpd = { "andpd", "andpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_andps_Vps_Wps = { "andps", "andps", Vps, Wps, XX, XX, IA_SSE },
+Ia_andq_Eq_Gq = { "and", "andq", Eq, Gq, XX, XX, 0 },
+Ia_andq_Eq_sIb = { "and", "andq", Eq, sIbq, XX, XX, 0 },
+Ia_andq_Eq_sId = { "and", "andq", Eq, sIdq, XX, XX, 0 },
+Ia_andq_Gq_Eq = { "and", "andq", Gq, Eq, XX, XX, 0 },
+Ia_andq_RAX_sId = { "and", "andq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_andw_AX_Iw = { "and", "andw", AX_Reg, Iw, XX, XX, 0 },
+Ia_andw_Ew_Gw = { "and", "andw", Ew, Gw, XX, XX, 0 },
+Ia_andw_Ew_Iw = { "and", "andw", Ew, Iw, XX, XX, 0 },
+Ia_andw_Ew_sIb = { "and", "andw", Ew, sIbw, XX, XX, 0 },
+Ia_andw_Gw_Ew = { "and", "andw", Gw, Ew, XX, XX, 0 },
+Ia_arpl_Ew_Gw = { "arpl", "arpl", Ew, Gw, XX, XX, 0 },
+Ia_bextr_Gy_Ey_By = { "bextr", "bextr", Gy, Ey, By, XX, IA_BMI1 },
+Ia_bextr_Gy_Ey_Id = { "bextr", "bextr", Gy, Ey, Id, XX, IA_TBM },
+Ia_blcfill_By_Ey = { "blcfill", "blcfill", Gy, By, Ey, XX, IA_TBM },
+Ia_blci_By_Ey = { "blci", "blci", Gy, By, Ey, XX, IA_TBM },
+Ia_blcic_By_Ey = { "blcic", "blcic", Gy, By, Ey, XX, IA_TBM },
+Ia_blcmsk_By_Ey = { "blcmsk", "blcmsk", Gy, By, Ey, XX, IA_TBM },
+Ia_blcs_By_Ey = { "blcs", "blcs", Gy, By, Ey, XX, IA_TBM },
+Ia_blendpd_Vpd_Wpd_Ib = { "blendpd", "blendpd", Vpd, Wpd, Ib, XX, IA_SSE4_1 },
+Ia_blendps_Vps_Wps_Ib = { "blendps", "blendps", Vps, Wps, Ib, XX, IA_SSE4_1 },
+Ia_blendvpd_Vpd_Wpd = { "blendvpd", "blendvpd", Vpd, Wpd, XX, XX, IA_SSE4_1 },
+Ia_blendvps_Vps_Wps = { "blendvps", "blendvps", Vps, Wps, XX, XX, IA_SSE4_1 },
+Ia_blsfill_By_Ey = { "blsfill", "blsfill", Gy, By, Ey, XX, IA_TBM },
+Ia_blsi_By_Ey = { "blsi", "blsi", By, Ey, XX, XX, IA_BMI1 },
+Ia_blsic_By_Ey = { "blsic", "blsic", Gy, By, Ey, XX, IA_TBM },
+Ia_blsmsk_By_Ey = { "blsmsk", "blsmsk", By, Ey, XX, XX, IA_BMI1 },
+Ia_blsr_By_Ey = { "blsr", "blsr", By, Ey, XX, XX, IA_BMI1 },
+Ia_boundl_Gd_Ma = { "bound", "boundl", Gd, Ma, XX, XX, 0 },
+Ia_boundw_Gw_Ma = { "bound", "boundw", Gw, Ma, XX, XX, 0 },
+Ia_bsfl_Gd_Ed = { "bsf", "bsfl", Gd, Ed, XX, XX, 0 },
+Ia_bsfq_Gq_Eq = { "bsf", "bsfq", Gq, Eq, XX, XX, 0 },
+Ia_bsfw_Gw_Ew = { "bsf", "bsfw", Gw, Ew, XX, XX, 0 },
+Ia_bsrl_Gd_Ed = { "bsr", "bsrl", Gd, Ed, XX, XX, 0 },
+Ia_bsrq_Gq_Eq = { "bsr", "bsrq", Gq, Eq, XX, XX, 0 },
+Ia_bsrw_Gw_Ew = { "bsr", "bsrw", Gw, Ew, XX, XX, 0 },
+Ia_bswapw_RX = { "bswap", "bswapw", RX, XX, XX, XX, IA_486 },
+Ia_bswapl_ERX = { "bswap", "bswapl", ERX, XX, XX, XX, IA_486 },
+Ia_bswapq_RRX = { "bswap", "bswapq", RRX, XX, XX, XX, 0 },
+Ia_btcl_Ed_Gd = { "btc", "btcl", Ed, Gd, XX, XX, 0 },
+Ia_btcl_Ed_Ib = { "btc", "btcl", Ed, Ib, XX, XX, 0 },
+Ia_btcq_Eq_Gq = { "btc", "btcq", Eq, Gq, XX, XX, 0 },
+Ia_btcq_Eq_Ib = { "btc", "btcq", Eq, Ib, XX, XX, 0 },
+Ia_btcw_Ew_Gw = { "btc", "btcw", Ew, Gw, XX, XX, 0 },
+Ia_btcw_Ew_Ib = { "btc", "btcw", Ew, Ib, XX, XX, 0 },
+Ia_btl_Ed_Gd = { "bt", "btl", Ed, Gd, XX, XX, 0 },
+Ia_btl_Ed_Ib = { "bt", "btl", Ed, Ib, XX, XX, 0 },
+Ia_btq_Eq_Gq = { "bt", "btq", Eq, Gq, XX, XX, 0 },
+Ia_btq_Eq_Ib = { "bt", "btq", Eq, Ib, XX, XX, 0 },
+Ia_btrl_Ed_Gd = { "btr", "btrl", Ed, Gd, XX, XX, 0 },
+Ia_btrl_Ed_Ib = { "btr", "btrl", Ed, Ib, XX, XX, 0 },
+Ia_btrq_Eq_Gq = { "btr", "btrq", Eq, Gq, XX, XX, 0 },
+Ia_btrq_Eq_Ib = { "btr", "btrq", Eq, Ib, XX, XX, 0 },
+Ia_btrw_Ew_Gw = { "btr", "btrw", Ew, Gw, XX, XX, 0 },
+Ia_btrw_Ew_Ib = { "btr", "btrw", Ew, Ib, XX, XX, 0 },
+Ia_btsl_Ed_Gd = { "bts", "btsl", Ed, Gd, XX, XX, 0 },
+Ia_btsl_Ed_Ib = { "bts", "btsl", Ed, Ib, XX, XX, 0 },
+Ia_btsq_Eq_Gq = { "bts", "btsq", Eq, Gq, XX, XX, 0 },
+Ia_btsq_Eq_Ib = { "bts", "btsq", Eq, Ib, XX, XX, 0 },
+Ia_btsw_Ew_Gw = { "bts", "btsw", Ew, Gw, XX, XX, 0 },
+Ia_btsw_Ew_Ib = { "bts", "btsw", Ew, Ib, XX, XX, 0 },
+Ia_btw_Ew_Gw = { "bt", "btw", Ew, Gw, XX, XX, 0 },
+Ia_btw_Ew_Ib = { "bt", "btw", Ew, Ib, XX, XX, 0 },
+Ia_bzhi_Gy_Ey_By = { "bzhi", "bzhi", Gy, Ey, By, XX, IA_BMI2 },
+Ia_call_Ed = { "call", "call", Ed, XX, XX, XX, 0 },
+Ia_call_Eq = { "call", "call", Eq, XX, XX, XX, 0 },
+Ia_call_Ew = { "call", "call", Ew, XX, XX, XX, 0 },
+Ia_call_Jd = { "call", "call", Jd, XX, XX, XX, 0 },
+Ia_call_Jw = { "call", "call", Jw, XX, XX, XX, 0 },
+Ia_cbw = { "cbw", "cbtw", XX, XX, XX, XX, 0 },
+Ia_cdq = { "cdq", "cltd", XX, XX, XX, XX, 0 },
+Ia_cdqe = { "cdqe", "cltq", XX, XX, XX, XX, 0 },
+Ia_clflush = { "clflush", "clflush", Mb, XX, XX, XX, IA_CLFLUSH },
+Ia_clac = { "clac", "clac", XX, XX, XX, XX, IA_SMAP },
+Ia_clc = { "clc", "clc", XX, XX, XX, XX, 0 },
+Ia_cld = { "cld", "cld", XX, XX, XX, XX, 0 },
+Ia_clgi = { "clgi", "clgi", XX, XX, XX, XX, IA_SVM },
+Ia_cli = { "cli", "cli", XX, XX, XX, XX, 0 },
+Ia_clts = { "clts", "clts", XX, XX, XX, XX, 0 },
+Ia_cmc = { "cmc", "cmc", XX, XX, XX, XX, 0 },
+Ia_cmovnbel_Gd_Ed = { "cmovnbe", "cmovnbel", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnbeq_Gq_Eq = { "cmovnbe", "cmovnbeq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnbew_Gw_Ew = { "cmovnbe", "cmovnbew", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovbl_Gd_Ed = { "cmovb", "cmovbl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovbq_Gq_Eq = { "cmovb", "cmovbq", Gq, Eq, XX, XX, 0 },
+Ia_cmovbw_Gw_Ew = { "cmovb", "cmovbw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnlel_Gd_Ed = { "cmovnle", "cmovnlel", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnleq_Gq_Eq = { "cmovnle", "cmovnleq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnlew_Gw_Ew = { "cmovnle", "cmovnlew", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovll_Gd_Ed = { "cmovl", "cmovll", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovlq_Gq_Eq = { "cmovl", "cmovlq", Gq, Eq, XX, XX, 0 },
+Ia_cmovlw_Gw_Ew = { "cmovl", "cmovlw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovbel_Gd_Ed = { "cmovbe", "cmovbel", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovbeq_Gq_Eq = { "cmovbe", "cmovbeq", Gq, Eq, XX, XX, 0 },
+Ia_cmovbew_Gw_Ew = { "cmovbe", "cmovbew", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnbl_Gd_Ed = { "cmovnb", "cmovnbl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnbq_Gq_Eq = { "cmovnb", "cmovnbq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnbw_Gw_Ew = { "cmovnb", "cmovnbw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovlel_Gd_Ed = { "cmovle", "cmovlel", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovleq_Gq_Eq = { "cmovle", "cmovleq", Gq, Eq, XX, XX, 0 },
+Ia_cmovlew_Gw_Ew = { "cmovle", "cmovlew", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnll_Gd_Ed = { "cmovnl", "cmovnll", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnlq_Gq_Eq = { "cmovnl", "cmovnlq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnlw_Gw_Ew = { "cmovnl", "cmovnlw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnol_Gd_Ed = { "cmovno", "cmovnol", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnoq_Gq_Eq = { "cmovno", "cmovnoq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnow_Gw_Ew = { "cmovno", "cmovnow", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnpl_Gd_Ed = { "cmovnp", "cmovnpl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnpq_Gq_Eq = { "cmovnp", "cmovnpq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnpw_Gw_Ew = { "cmovnp", "cmovnpw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnsl_Gd_Ed = { "cmovns", "cmovnsl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnsq_Gq_Eq = { "cmovns", "cmovnsq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnsw_Gw_Ew = { "cmovns", "cmovnsw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovnzl_Gd_Ed = { "cmovnz", "cmovnzl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovnzq_Gq_Eq = { "cmovnz", "cmovnzq", Gq, Eq, XX, XX, 0 },
+Ia_cmovnzw_Gw_Ew = { "cmovnz", "cmovnzw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovol_Gd_Ed = { "cmovo", "cmovol", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovoq_Gq_Eq = { "cmovo", "cmovoq", Gq, Eq, XX, XX, 0 },
+Ia_cmovow_Gw_Ew = { "cmovo", "cmovow", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovpl_Gd_Ed = { "cmovp", "cmovpl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovpq_Gq_Eq = { "cmovp", "cmovpq", Gq, Eq, XX, XX, 0 },
+Ia_cmovpw_Gw_Ew = { "cmovp", "cmovpw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovsl_Gd_Ed = { "cmovs", "cmovsl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovsq_Gq_Eq = { "cmovs", "cmovsq", Gq, Eq, XX, XX, 0 },
+Ia_cmovsw_Gw_Ew = { "cmovs", "cmovsw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmovzl_Gd_Ed = { "cmovz", "cmovzl", Gd, Ed, XX, XX, IA_P6 },
+Ia_cmovzq_Gq_Eq = { "cmovz", "cmovzq", Gq, Eq, XX, XX, 0 },
+Ia_cmovzw_Gw_Ew = { "cmovz", "cmovzw", Gw, Ew, XX, XX, IA_P6 },
+Ia_cmpb_AL_Ib = { "cmp", "cmpb", AL_Reg, Ib, XX, XX, 0 },
+Ia_cmpb_Eb_Gb = { "cmp", "cmpb", Eb, Gb, XX, XX, 0 },
+Ia_cmpb_Eb_Ib = { "cmp", "cmpb", Eb, Ib, XX, XX, 0 },
+Ia_cmpb_Gb_Eb = { "cmp", "cmpb", Gb, Eb, XX, XX, 0 },
+Ia_cmpl_EAX_Id = { "cmp", "cmpl", EAX_Reg, Id, XX, XX, 0 },
+Ia_cmpl_Ed_Gd = { "cmp", "cmpl", Ed, Gd, XX, XX, 0 },
+Ia_cmpl_Ed_Id = { "cmp", "cmpl", Ed, Id, XX, XX, 0 },
+Ia_cmpl_Ed_sIb = { "cmp", "cmpl", Ed, sIbd, XX, XX, 0 },
+Ia_cmpl_Gd_Ed = { "cmp", "cmpl", Gd, Ed, XX, XX, 0 },
+Ia_cmppd_Vpd_Wpd_Ib = { "cmppd", "cmppd", Vpd, Wpd, Ib, XX, IA_SSE2 },
+Ia_cmpps_Vps_Wps_Ib = { "cmpps", "cmpps", Vps, Wps, Ib, XX, IA_SSE },
+Ia_cmpq_Eq_Gq = { "cmp", "cmpq", Eq, Gq, XX, XX, 0 },
+Ia_cmpq_Eq_sIb = { "cmp", "cmpq", Eq, sIbq, XX, XX, 0 },
+Ia_cmpq_Eq_sId = { "cmp", "cmpq", Eq, sIdq, XX, XX, 0 },
+Ia_cmpq_Gq_Eq = { "cmp", "cmpq", Gq, Eq, XX, XX, 0 },
+Ia_cmpq_RAX_sId = { "cmp", "cmpq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_cmpsb_Xb_Yb = { "cmpsb", "cmpsb", Xb, Yb, XX, XX, 0 },
+Ia_cmpsd_Vsd_Wsd_Ib = { "cmpsd", "cmpsd", Vsd, Wsd, Ib, XX, IA_SSE2 },
+Ia_cmpsl_Xd_Yd = { "cmpsd", "cmpsl", Xd, Yd, XX, XX, 0 },
+Ia_cmpsq_Xq_Yq = { "cmpsq", "cmpsq", Xq, Yq, XX, XX, 0 },
+Ia_cmpss_Vss_Wss_Ib = { "cmpss", "cmpss", Vss, Wss, Ib, XX, IA_SSE },
+Ia_cmpsw_Xw_Yw = { "cmpsw", "cmpsw", Xw, Yw, XX, XX, 0 },
+Ia_cmpw_AX_Iw = { "cmp", "cmpw", AX_Reg, Iw, XX, XX, 0 },
+Ia_cmpw_Ew_Gw = { "cmp", "cmpw", Ew, Gw, XX, XX, 0 },
+Ia_cmpw_Ew_Iw = { "cmp", "cmpw", Ew, Iw, XX, XX, 0 },
+Ia_cmpw_Ew_sIb = { "cmp", "cmpw", Ew, sIbw, XX, XX, 0 },
+Ia_cmpw_Gw_Ew = { "cmp", "cmpw", Gw, Ew, XX, XX, 0 },
+Ia_cmpxchg16b_Mdq = { "cmpxchg16b", "cmpxchg16b", Mdq, XX, XX, XX, IA_CMPXCHG16B },
+Ia_cmpxchg8b_Mq = { "cmpxchg8b", "cmpxchg8b", Mq, XX, XX, XX, IA_PENTIUM },
+Ia_cmpxchgb_Eb_Gb = { "cmpxchg", "cmpxchgb", Eb, Gb, XX, XX, IA_486 },
+Ia_cmpxchgl_Ed_Gd = { "cmpxchg", "cmpxchgl", Ed, Gd, XX, XX, IA_486 },
+Ia_cmpxchgq_Eq_Gq = { "cmpxchg", "cmpxchgq", Eq, Gq, XX, XX, 0 },
+Ia_cmpxchgw_Ew_Gw = { "cmpxchg", "cmpxchgw", Ew, Gw, XX, XX, IA_486 },
+Ia_comisd_Vsd_Wsd = { "comisd", "comisd", Vsd, Wsd, XX, XX, 0 },
+Ia_comiss_Vss_Wss = { "comiss", "comiss", Vss, Wss, XX, XX, 0 },
+Ia_cpuid = { "cpuid", "cpuid", XX, XX, XX, XX, IA_486 },
+Ia_cqo = { "cqo", "cqto", XX, XX, XX, XX, 0 },
+Ia_crc32_Gd_Eb = { "crc32", "crc32", Gd, Eb, XX, XX, IA_SSE4_2 },
+Ia_crc32_Gd_Ed = { "crc32", "crc32", Gd, Ed, XX, XX, IA_SSE4_2 },
+Ia_crc32_Gd_Eq = { "crc32", "crc32", Gd, Eq, XX, XX, IA_SSE4_2 },
+Ia_crc32_Gd_Ew = { "crc32", "crc32", Gd, Ew, XX, XX, IA_SSE4_2 },
+Ia_cvtdq2pd_Vpd_Wq = { "cvtdq2pd", "cvtdq2pd", Vpd, Wq, XX, XX, IA_SSE2 },
+Ia_cvtdq2ps_Vps_Wdq = { "cvtdq2ps", "cvtdq2ps", Vps, Wdq, XX, XX, IA_SSE2 },
+Ia_cvtpd2dq_Vq_Wpd = { "cvtpd2dq", "cvtpd2dq", Vq, Wpd, XX, XX, IA_SSE2 },
+Ia_cvtpd2pi_Pq_Wpd = { "cvtpd2pi", "cvtpd2pi", Pq, Wpd, XX, XX, IA_SSE2 },
+Ia_cvtpd2ps_Vps_Wpd = { "cvtpd2ps", "cvtpd2ps", Vps, Wpd, XX, XX, IA_SSE2 },
+Ia_cvtpi2pd_Vpd_Qq = { "cvtpi2pd", "cvtpi2pd", Vpd, Qq, XX, XX, IA_SSE2 },
+Ia_cvtpi2ps_Vps_Qq = { "cvtpi2ps", "cvtpi2ps", Vps, Qq, XX, XX, IA_SSE },
+Ia_cvtps2dq_Vdq_Wps = { "cvtps2dq", "cvtps2dq", Vdq, Wps, XX, XX, IA_SSE2 },
+Ia_cvtps2pd_Vpd_Wps = { "cvtps2pd", "cvtps2pd", Vpd, Wps, XX, XX, IA_SSE2 },
+Ia_cvtps2pi_Pq_Wps = { "cvtps2pi", "cvtps2pi", Pq, Wps, XX, XX, IA_SSE },
+Ia_cvtsd2si_Gy_Wsd = { "cvtsd2si", "cvtsd2si", Gy, Wsd, XX, XX, IA_SSE2 },
+Ia_cvtsd2ss_Vss_Wsd = { "cvtsd2ss", "cvtsd2ss", Vss, Wsd, XX, XX, IA_SSE2 },
+Ia_cvtsi2sd_Vsd_Ey = { "cvtsi2sd", "cvtsi2sd", Vsd, Ey, XX, XX, IA_SSE2 },
+Ia_cvtsi2ss_Vss_Ey = { "cvtsi2ss", "cvtsi2ss", Vss, Ey, XX, XX, IA_SSE },
+Ia_cvtss2sd_Vsd_Wss = { "cvtss2sd", "cvtss2sd", Vsd, Wss, XX, XX, IA_SSE2 },
+Ia_cvtss2si_Gy_Wss = { "cvtss2si", "cvtss2si", Gy, Wss, XX, XX, IA_SSE },
+Ia_cvttpd2dq_Vq_Wpd = { "cvttpd2dq", "cvttpd2dq", Vq, Wpd, XX, XX, IA_SSE2 },
+Ia_cvttpd2pi_Pq_Wpd = { "cvttpd2pi", "cvttpd2pi", Pq, Wpd, XX, XX, IA_SSE2 },
+Ia_cvttps2dq_Vdq_Wps = { "cvttps2dq", "cvttps2dq", Vdq, Wps, XX, XX, IA_SSE2 },
+Ia_cvttps2pi_Pq_Wps = { "cvttps2pi", "cvttps2pi", Pq, Wps, XX, XX, IA_SSE },
+Ia_cvttsd2si_Gy_Wsd = { "cvttsd2si", "cvttsd2si", Gy, Wsd, XX, XX, IA_SSE2 },
+Ia_cvttss2si_Gy_Wss = { "cvttss2si", "cvttss2si", Gy, Wss, XX, XX, IA_SSE },
+Ia_cwd = { "cwd", "cwtd", XX, XX, XX, XX, 0 },
+Ia_cwde = { "cwde", "cwtl", XX, XX, XX, XX, 0 },
+Ia_daa = { "daa", "daa", XX, XX, XX, XX, 0 },
+Ia_das = { "das", "das", XX, XX, XX, XX, 0 },
+Ia_decb_Eb = { "dec", "decb", Eb, XX, XX, XX, 0 },
+Ia_decl_Ed = { "dec", "decl", Ed, XX, XX, XX, 0 },
+Ia_decl_ERX = { "dec", "decl", ERX, XX, XX, XX, 0 },
+Ia_decq_Eq = { "dec", "decq", Eq, XX, XX, XX, 0 },
+Ia_decw_Ew = { "dec", "decw", Ew, XX, XX, XX, 0 },
+Ia_decw_RX = { "dec", "decw", RX, XX, XX, XX, 0 },
+Ia_divb_AL_Eb = { "div", "divb", AL_Reg, Eb, XX, XX, 0 },
+Ia_divl_EAX_Ed = { "div", "divl", EAX_Reg, Ed, XX, XX, 0 },
+Ia_divpd_Vpd_Wpd = { "divpd", "divpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_divps_Vps_Wps = { "divps", "divps", Vps, Wps, XX, XX, IA_SSE },
+Ia_divq_RAX_Eq = { "div", "divq", RAX_Reg, Eq, XX, XX, 0 },
+Ia_divsd_Vsd_Wsd = { "divsd", "divsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_divss_Vss_Wss = { "divss", "divss", Vss, Wss, XX, XX, IA_SSE },
+Ia_divw_AX_Ew = { "div", "divw", AX_Reg, Ew, XX, XX, 0 },
+Ia_dppd_Vpd_Wpd_Ib = { "dppd", "dppd", Vpd, Wpd, Ib, XX, IA_SSE4_1 },
+Ia_dpps_Vps_Wps_Ib = { "dpps", "dpps", Vps, Wps, Ib, XX, IA_SSE4_1 },
+Ia_emms = { "emms", "emms", XX, XX, XX, XX, IA_MMX },
+Ia_enter = { "enter", "enter", IwIb, XX, XX, XX, 0 },
+Ia_error = { "(error)", "(error)", XX, XX, XX, XX, 0 },
+Ia_extractps_Ed_Vdq_Ib = { "extractps", "extractps", Ed, Vdq, Ib, XX, IA_SSE4_1 },
+Ia_extrq_Udq_Ib_Ib = { "extrq", "extrq", Udq, Ib, Ib, XX, IA_SSE4A },
+Ia_extrq_Vdq_Uq = { "extrq", "extrq", Vdq, Uq, XX, XX, IA_SSE4A },
+Ia_f2xm1 = { "f2xm1", "f2xm1", XX, XX, XX, XX, IA_X87 },
+Ia_fabs = { "fabs", "fabs", XX, XX, XX, XX, IA_X87 },
+Ia_fadd_ST0_STi = { "fadd", "fadd", ST0, STi, XX, XX, IA_X87 },
+Ia_fadd_STi_ST0 = { "fadd", "fadd", STi, ST0, XX, XX, IA_X87 },
+Ia_faddl_Mq = { "fadd", "faddl", Mq, XX, XX, XX, IA_X87 },
+Ia_faddp_STi_ST0 = { "faddp", "faddp", STi, ST0, XX, XX, IA_X87 },
+Ia_fadds_Md = { "fadd", "fadds", Md, XX, XX, XX, IA_X87 },
+Ia_fbldt_Mt = { "fbld", "fbldt", Mt, XX, XX, XX, IA_X87 },
+Ia_fbstpt_Mt = { "fbstp", "fbstpt", Mt, XX, XX, XX, IA_X87 },
+Ia_fchs = { "fchs", "fchs", XX, XX, XX, XX, IA_X87 },
+Ia_fcmovb_ST0_STi = { "fcmovb", "fcmovb", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmovbe_ST0_STi = { "fcmovbe", "fcmovbe", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmove_ST0_STi = { "fcmove", "fcmove", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmovnb_ST0_STi = { "fcmovnb", "fcmovnb", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmovnbe_ST0_STi = { "fcmovnbe", "fcmovnbe", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmovne_ST0_STi = { "fcmovne", "fcmovne", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmovnu_ST0_STi = { "fcmovnu", "fcmovnu", ST0, STi, XX, XX, IA_P6 },
+Ia_fcmovu_ST0_STi = { "fcmovu", "fcmovu", ST0, STi, XX, XX, IA_P6 },
+Ia_fcom_STi = { "fcom", "fcom", STi, XX, XX, XX, IA_X87 },
+Ia_fcomi_ST0_STi = { "fcomi", "fcomi", ST0, STi, XX, XX, IA_P6 },
+Ia_fcomip_ST0_STi = { "fcomip", "fcomip", ST0, STi, XX, XX, IA_X87 },
+Ia_fcoml_Mq = { "fcom", "fcoml", Mq, XX, XX, XX, IA_X87 },
+Ia_fcomp_STi = { "fcomp", "fcomp", STi, XX, XX, XX, IA_X87 },
+Ia_fcompl_Mq = { "fcomp", "fcompl", Mq, XX, XX, XX, IA_X87 },
+Ia_fcompp = { "fcompp", "fcompp", XX, XX, XX, XX, IA_X87 },
+Ia_fcomps_Md = { "fcomp", "fcomps", Md, XX, XX, XX, IA_X87 },
+Ia_fcoms_Md = { "fcom", "fcoms", Md, XX, XX, XX, IA_X87 },
+Ia_fcos = { "fcos", "fcos", XX, XX, XX, XX, IA_X87 },
+Ia_fdecstp = { "fdecstp", "fdecstp", XX, XX, XX, XX, IA_X87 },
+Ia_fdisi = { "fdisi (287 legacy)", "fdisi (287 legacy)", XX, XX, XX, XX, IA_X87 },
+Ia_fdiv_ST0_STi = { "fdiv", "fdiv", ST0, STi, XX, XX, IA_X87 },
+Ia_fdiv_STi_ST0 = { "fdiv", "fdiv", STi, ST0, XX, XX, IA_X87 },
+Ia_fdivl_Mq = { "fdiv", "fdivl", Mq, XX, XX, XX, IA_X87 },
+Ia_fdivp_STi_ST0 = { "fdivp", "fdivp", STi, ST0, XX, XX, IA_X87 },
+Ia_fdivr_ST0_STi = { "fdivr", "fdivr", ST0, STi, XX, XX, IA_X87 },
+Ia_fdivr_STi_ST0 = { "fdivr", "fdivr", STi, ST0, XX, XX, IA_X87 },
+Ia_fdivrl_Mq = { "fdivr", "fdivrl", Mq, XX, XX, XX, IA_X87 },
+Ia_fdivrp_STi_ST0 = { "fdivrp", "fdivrp", STi, ST0, XX, XX, IA_X87 },
+Ia_fdivrs_Md = { "fdivr", "fdivrs", Md, XX, XX, XX, IA_X87 },
+Ia_fdivs_Md = { "fdiv", "fdivs", Md, XX, XX, XX, IA_X87 },
+Ia_femms = { "femms", "femms", XX, XX, XX, XX, IA_3DNOW },
+Ia_feni = { "feni (287 legacy)", "feni(287 legacy)", XX, XX, XX, XX, IA_X87 },
+Ia_ffree_STi = { "ffree", "ffree", STi, XX, XX, XX, IA_X87 },
+Ia_ffreep_STi = { "ffreep", "ffreep", STi, XX, XX, XX, IA_X87 },
+Ia_fiaddl_Md = { "fiadd", "fiaddl", Md, XX, XX, XX, IA_X87 },
+Ia_fiadds_Mw = { "fiadd", "fiadds", Mw, XX, XX, XX, IA_X87 },
+Ia_ficoml_Md = { "ficom", "ficoml", Md, XX, XX, XX, IA_X87 },
+Ia_ficompl_Md = { "ficomp", "ficompl", Md, XX, XX, XX, IA_X87 },
+Ia_ficomps_Mw = { "ficomp", "ficomps", Mw, XX, XX, XX, IA_X87 },
+Ia_ficoms_Mw = { "ficom", "ficoms", Mw, XX, XX, XX, IA_X87 },
+Ia_fidivl_Md = { "fidiv", "fidivl", Md, XX, XX, XX, IA_X87 },
+Ia_fidivrl_Md = { "fidivr", "fidivrl", Md, XX, XX, XX, IA_X87 },
+Ia_fidivrs_Mw = { "fidivr", "fidivrs", Mw, XX, XX, XX, IA_X87 },
+Ia_fidivs_Mw = { "fidiv", "fidivs", Mw, XX, XX, XX, IA_X87 },
+Ia_fildl_Md = { "fild", "fildl", Md, XX, XX, XX, IA_X87 },
+Ia_fildq_Mq = { "fild", "fildq", Mq, XX, XX, XX, IA_X87 },
+Ia_filds_Mw = { "fild", "filds", Mw, XX, XX, XX, IA_X87 },
+Ia_fimull_Md = { "fimul", "fimull", Md, XX, XX, XX, IA_X87 },
+Ia_fimuls_Mw = { "fimul", "fimuls", Mw, XX, XX, XX, IA_X87 },
+Ia_fincstp = { "fincstp", "fincstp", XX, XX, XX, XX, IA_X87 },
+Ia_fistl_Md = { "fist", "fistl", Md, XX, XX, XX, IA_X87 },
+Ia_fistpl_Md = { "fistp", "fistpl", Md, XX, XX, XX, IA_X87 },
+Ia_fistpq_Mq = { "fistp", "fistpq", Mq, XX, XX, XX, IA_X87 },
+Ia_fistps_Mw = { "fistp", "fistps", Mw, XX, XX, XX, IA_X87 },
+Ia_fists_Mw = { "fist", "fists", Mw, XX, XX, XX, IA_X87 },
+Ia_fisttpl_Md = { "fisttp", "fisttpl", Md, XX, XX, XX, IA_SSE3 },
+Ia_fisttpq_Mq = { "fisttp", "fisttpq", Mq, XX, XX, XX, IA_SSE3 },
+Ia_fisttps_Mw = { "fisttp", "fisttps", Mw, XX, XX, XX, IA_SSE3 },
+Ia_fisubl_Md = { "fisub", "fisubl", Md, XX, XX, XX, IA_X87 },
+Ia_fisubrl_Md = { "fisubr", "fisubrl", Md, XX, XX, XX, IA_X87 },
+Ia_fisubrs_Mw = { "fisubr", "fisubrs", Mw, XX, XX, XX, IA_X87 },
+Ia_fisubs_Mw = { "fisub", "fisubs", Mw, XX, XX, XX, IA_X87 },
+Ia_fld_STi = { "fld", "fld", STi, XX, XX, XX, IA_X87 },
+Ia_fld1 = { "fld1", "fld1", XX, XX, XX, XX, IA_X87 },
+Ia_fldcw = { "fldcw", "fldcw", Ew, XX, XX, XX, IA_X87 },
+Ia_fldenv = { "fldenv", "fldenv", Mx, XX, XX, XX, IA_X87 },
+Ia_fldl_Mq = { "fld", "fldl", Mq, XX, XX, XX, IA_X87 },
+Ia_fldl2e = { "fldl2e", "fldl2e", XX, XX, XX, XX, IA_X87 },
+Ia_fldl2t = { "fldl2t", "fldl2t", XX, XX, XX, XX, IA_X87 },
+Ia_fldlg2 = { "fldlg2", "fldlg2", XX, XX, XX, XX, IA_X87 },
+Ia_fldln2 = { "fldln2", "fldln2", XX, XX, XX, XX, IA_X87 },
+Ia_fldpi = { "fldpi", "fldpi", XX, XX, XX, XX, IA_X87 },
+Ia_flds_Md = { "fld", "flds", Md, XX, XX, XX, IA_X87 },
+Ia_fldt_Mt = { "fld", "fldt", Mt, XX, XX, XX, IA_X87 },
+Ia_fldz = { "fldz", "fldz", XX, XX, XX, XX, IA_X87 },
+Ia_fmul_ST0_STi = { "fmul", "fmul", ST0, STi, XX, XX, IA_X87 },
+Ia_fmul_STi_ST0 = { "fmul", "fmul", STi, ST0, XX, XX, IA_X87 },
+Ia_fmull_Mq = { "fmul", "fmull", Mq, XX, XX, XX, IA_X87 },
+Ia_fmulp_STi_ST0 = { "fmulp", "fmulp", STi, ST0, XX, XX, IA_X87 },
+Ia_fmuls_Md = { "fmul", "fmuls", Md, XX, XX, XX, IA_X87 },
+Ia_fnclex = { "fnclex", "fnclex", XX, XX, XX, XX, IA_X87 },
+Ia_fninit = { "fninit", "fninit", XX, XX, XX, XX, IA_X87 },
+Ia_fnop = { "fnop", "fnop", XX, XX, XX, XX, IA_X87 },
+Ia_fnsave = { "fnsave", "fnsave", Mx, XX, XX, XX, IA_X87 },
+Ia_fnstcw = { "fnstcw", "fnstcw", Mw, XX, XX, XX, IA_X87 },
+Ia_fnstenv = { "fnstenv", "fnstenv", Mx, XX, XX, XX, IA_X87 },
+Ia_fnstsw = { "fnstsw", "fnstsw", Mw, XX, XX, XX, IA_X87 },
+Ia_fnstsw_AX = { "fnstsw", "fnstsw", AX_Reg, XX, XX, XX, IA_X87 },
+Ia_fpatan = { "fpatan", "fpatan", XX, XX, XX, XX, IA_X87 },
+Ia_fprem = { "fprem", "fprem", XX, XX, XX, XX, IA_X87 },
+Ia_fprem1 = { "fprem1", "fprem1", XX, XX, XX, XX, IA_X87 },
+Ia_fptan = { "fptan", "fptan", XX, XX, XX, XX, IA_X87 },
+Ia_frczpd_Vpd_Wpd = { "frczpd", "frczpd", Vpd, Wpd, XX, XX, IA_XOP },
+Ia_frczps_Vps_Wps = { "frczps", "frczps", Vps, Wps, XX, XX, IA_XOP },
+Ia_frczsd_Vsd_Wsd = { "frczsd", "frczsd", Vsd, Wsd, XX, XX, IA_XOP },
+Ia_frczss_Vss_Wss = { "frczss", "frczss", Vss, Wss, XX, XX, IA_XOP },
+Ia_frndint = { "frndint", "frndint", XX, XX, XX, XX, IA_X87 },
+Ia_frstor = { "frstor", "frstor", Mx, XX, XX, XX, IA_X87 },
+Ia_fscale = { "fscale", "fscale", XX, XX, XX, XX, IA_X87 },
+Ia_fsetpm = { "fsetpm (287 legacy)", "fsetpm (287 legacy)", XX, XX, XX, XX, IA_X87 },
+Ia_fsin = { "fsin", "fsin", XX, XX, XX, XX, IA_X87 },
+Ia_fsincos = { "fsincos", "fsincos", XX, XX, XX, XX, IA_X87 },
+Ia_fsqrt = { "fsqrt", "fsqrt", XX, XX, XX, XX, IA_X87 },
+Ia_fst_STi = { "fst", "fst", STi, XX, XX, XX, IA_X87 },
+Ia_fstl_Mq = { "fst", "fstl", Mq, XX, XX, XX, IA_X87 },
+Ia_fstp_STi = { "fstp", "fstp", STi, XX, XX, XX, IA_X87 },
+Ia_fstpl_Mq = { "fstp", "fstpl", Mq, XX, XX, XX, IA_X87 },
+Ia_fstps_Md = { "fstp", "fstps", Md, XX, XX, XX, IA_X87 },
+Ia_fstpt_Mt = { "fstp", "fstpt", Mt, XX, XX, XX, IA_X87 },
+Ia_fsts_Md = { "fst", "fsts", Md, XX, XX, XX, IA_X87 },
+Ia_fsub_ST0_STi = { "fsub", "fsub", ST0, STi, XX, XX, IA_X87 },
+Ia_fsub_STi_ST0 = { "fsub", "fsub", STi, ST0, XX, XX, IA_X87 },
+Ia_fsubl_Mq = { "fsub", "fsubl", Mq, XX, XX, XX, IA_X87 },
+Ia_fsubp_STi_ST0 = { "fsubp", "fsubp", STi, ST0, XX, XX, IA_X87 },
+Ia_fsubr_ST0_STi = { "fsubr", "fsubr", ST0, STi, XX, XX, IA_X87 },
+Ia_fsubr_STi_ST0 = { "fsubr", "fsubr", STi, ST0, XX, XX, IA_X87 },
+Ia_fsubrl_Mq = { "fsubr", "fsubrl", Mq, XX, XX, XX, IA_X87 },
+Ia_fsubrp_STi_ST0 = { "fsubrp", "fsubrp", STi, ST0, XX, XX, IA_X87 },
+Ia_fsubrs_Md = { "fsubr", "fsubrs", Md, XX, XX, XX, IA_X87 },
+Ia_fsubs_Md = { "fsub", "fsubs", Md, XX, XX, XX, IA_X87 },
+Ia_ftst = { "ftst", "ftst", XX, XX, XX, XX, IA_X87 },
+Ia_fucom_STi = { "fucom", "fucom", STi, XX, XX, XX, IA_X87 },
+Ia_fucomi_ST0_STi = { "fucomi", "fucomi", ST0, STi, XX, XX, IA_P6 },
+Ia_fucomip_ST0_STi = { "fucomip", "fucomip", ST0, STi, XX, XX, IA_P6 },
+Ia_fucomp_STi = { "fucomp", "fucomp", STi, XX, XX, XX, IA_X87 },
+Ia_fucompp = { "fucompp", "fucompp", XX, XX, XX, XX, IA_X87 },
+Ia_fwait = { "fwait", "fwait", XX, XX, XX, XX, IA_X87 },
+Ia_fxam = { "fxam", "fxam", XX, XX, XX, XX, IA_X87 },
+Ia_fxch = { "fxch", "fxch", STi, XX, XX, XX, IA_X87 },
+Ia_fxrstor = { "fxrstor", "fxrstor", Mx, XX, XX, XX, IA_SSE },
+Ia_fxsave = { "fxsave", "fxsave", Mx, XX, XX, XX, IA_SSE },
+Ia_fxtract = { "fxtract", "fxtract", XX, XX, XX, XX, IA_X87 },
+Ia_fyl2x = { "fyl2x", "fyl2x", XX, XX, XX, XX, IA_X87 },
+Ia_fyl2xp1 = { "fyl2xp1", "fyl2xp1", XX, XX, XX, XX, IA_X87 },
+Ia_getsec = { "getsec", "getsec", XX, XX, XX, XX, IA_SMX },
+Ia_haddpd_Vpd_Wpd = { "haddpd", "haddpd", Vpd, Wpd, XX, XX, IA_SSE3 },
+Ia_haddps_Vps_Wps = { "haddps", "haddps", Vps, Wps, XX, XX, IA_SSE3 },
+Ia_hlt = { "hlt", "hlt", XX, XX, XX, XX, 0 },
+Ia_hsubpd_Vpd_Wpd = { "hsubpd", "hsubpd", Vpd, Wpd, XX, XX, IA_SSE3 },
+Ia_hsubps_Vps_Wps = { "hsubps", "hsubps", Vps, Wps, XX, XX, IA_SSE3 },
+Ia_idivb_AL_Eb = { "idiv", "idivb", AL_Reg, Eb, XX, XX, 0 },
+Ia_idivl_EAX_Ed = { "idiv", "idivl", EAX_Reg, Ed, XX, XX, 0 },
+Ia_idivq_RAX_Eq = { "idiv", "idivq", RAX_Reg, Eq, XX, XX, 0 },
+Ia_idivw_AX_Ew = { "idiv", "idivw", AX_Reg, Ew, XX, XX, 0 },
+Ia_imulb_AL_Eb = { "imul", "imulb", AL_Reg, Eb, XX, XX, 0 },
+Ia_imull_EAX_Ed = { "imul", "imull", EAX_Reg, Ed, XX, XX, 0 },
+Ia_imull_Gd_Ed = { "imul", "imull", Gd, Ed, XX, XX, 0 },
+Ia_imull_Gd_Ed_Id = { "imul", "imull", Gd, Ed, Id, XX, 0 },
+Ia_imull_Gd_Ed_sIb = { "imul", "imull", Gd, Ed, sIbd, XX, 0 },
+Ia_imulq_Gq_Eq = { "imul", "imulq", Gq, Eq, XX, XX, 0 },
+Ia_imulq_Gq_Eq_sIb = { "imul", "imulq", Gq, Eq, sIbq, XX, 0 },
+Ia_imulq_Gq_Eq_sId = { "imul", "imulq", Gq, Eq, sIdq, XX, 0 },
+Ia_imulq_RAX_Eq = { "imul", "imulq", RAX_Reg, Eq, XX, XX, 0 },
+Ia_imulw_AX_Ew = { "imul", "imulw", AX_Reg, Ew, XX, XX, 0 },
+Ia_imulw_Gw_Ew = { "imul", "imulw", Gw, Ew, XX, XX, 0 },
+Ia_imulw_Gw_Ew_Iw = { "imul", "imulw", Gw, Ew, Iw, XX, 0 },
+Ia_imulw_Gw_Ew_sIb = { "imul", "imulw", Gw, Ew, sIbw, XX, 0 },
+Ia_inb_AL_DX = { "in", "inb", AL_Reg, DX_Reg, XX, XX, 0 },
+Ia_inb_AL_Ib = { "in", "inb", AL_Reg, Ib, XX, XX, 0 },
+Ia_incb_Eb = { "inc", "incb", Eb, XX, XX, XX, 0 },
+Ia_incl_Ed = { "inc", "incl", Ed, XX, XX, XX, 0 },
+Ia_incl_ERX = { "inc", "incl", ERX, XX, XX, XX, 0 },
+Ia_incq_Eq = { "inc", "incq", Eq, XX, XX, XX, 0 },
+Ia_incw_Ew = { "inc", "incw", Ew, XX, XX, XX, 0 },
+Ia_incw_RX = { "inc", "incw", RX, XX, XX, XX, 0 },
+Ia_inl_EAX_DX = { "in", "inl", EAX_Reg, DX_Reg, XX, XX, 0 },
+Ia_inl_EAX_Ib = { "in", "inl", EAX_Reg, Ib, XX, XX, 0 },
+Ia_insb_Yb_DX = { "insb", "insb", Yb, DX_Reg, XX, XX, 0 },
+Ia_insertps_Vps_Wss_Ib = { "insertps", "insertps", Vps, Wss, Ib, XX, IA_SSE4_1 },
+Ia_insertq_Vdq_Udq = { "insertq", "insertq", Vdq, Udq, XX, XX, IA_SSE4A },
+Ia_insertq_Vdq_Uq_Ib_Ib = { "insertq", "insertq", Vdq, Uq, Ib, Ib, IA_SSE4A },
+Ia_insl_Yd_DX = { "insd", "insl", Yd, DX_Reg, XX, XX, 0 },
+Ia_insw_Yw_DX = { "insw", "insw", Yw, DX_Reg, XX, XX, 0 },
+Ia_int_Ib = { "int", "int", Ib, XX, XX, XX, 0 },
+Ia_int1 = { "int1", "int1", XX, XX, XX, XX, 0 },
+Ia_int3 = { "int3", "int3", XX, XX, XX, XX, 0 },
+Ia_into = { "into", "into", XX, XX, XX, XX, 0 },
+Ia_Invalid = { "(invalid)", "(invalid)", XX, XX, XX, XX, 0 },
+Ia_invd = { "invd", "invd", XX, XX, XX, XX, IA_486 },
+Ia_invept_Gy_Mdq = { "invept", "invept", Gy, Mdq, XX, XX, IA_VMX },
+Ia_invlpg = { "invlpg", "invlpg", Mx, XX, XX, XX, IA_486 },
+Ia_invlpga = { "invlpga", "invlpga", RAX_Reg, RCX_Reg, XX, XX, IA_SVM },
+Ia_invpcid_Gy_Mdq = { "invpcid", "invpcid", Gy, Mdq, XX, XX, IA_INVPCID },
+Ia_invvpid_Gy_Mdq = { "invvpid", "invvpid", Gy, Mdq, XX, XX, IA_VMX },
+Ia_inw_AX_DX = { "in", "inw", AX_Reg, DX_Reg, XX, XX, 0 },
+Ia_inw_AX_Ib = { "in", "inw", AX_Reg, Ib, XX, XX, 0 },
+Ia_iretl = { "iret", "iretd", XX, XX, XX, XX, 0 },
+Ia_iretq = { "iret", "iretq", XX, XX, XX, XX, 0 },
+Ia_iretw = { "iret", "iretw", XX, XX, XX, XX, 0 },
+Ia_jb_Jb = { "jb", "jb", Jb, XX, XX, XX, 0 },
+Ia_jb_Jd = { "jb", "jb", Jd, XX, XX, XX, 0 },
+Ia_jb_Jw = { "jb", "jb", Jw, XX, XX, XX, 0 },
+Ia_jbe_Jb = { "jbe", "jbe", Jb, XX, XX, XX, 0 },
+Ia_jbe_Jd = { "jbe", "jbe", Jd, XX, XX, XX, 0 },
+Ia_jbe_Jw = { "jbe", "jbe", Jw, XX, XX, XX, 0 },
+Ia_jcxz_Jb = { "jcxz", "jcxz", Jb, XX, XX, XX, 0 },
+Ia_jecxz_Jb = { "jecxz", "jecxz", Jb, XX, XX, XX, 0 },
+Ia_jl_Jb = { "jl", "jl", Jb, XX, XX, XX, 0 },
+Ia_jl_Jd = { "jl", "jl", Jd, XX, XX, XX, 0 },
+Ia_jl_Jw = { "jl", "jl", Jw, XX, XX, XX, 0 },
+Ia_jle_Jb = { "jle", "jle", Jb, XX, XX, XX, 0 },
+Ia_jle_Jd = { "jle", "jle", Jd, XX, XX, XX, 0 },
+Ia_jle_Jw = { "jle", "jle", Jw, XX, XX, XX, 0 },
+Ia_jmp_Ed = { "jmp", "jmp", Ed, XX, XX, XX, 0 },
+Ia_jmp_Eq = { "jmp", "jmp", Eq, XX, XX, XX, 0 },
+Ia_jmp_Ew = { "jmp", "jmp", Ew, XX, XX, XX, 0 },
+Ia_jmp_Jb = { "jmp", "jmp", Jb, XX, XX, XX, 0 },
+Ia_jmp_Jd = { "jmp", "jmp", Jd, XX, XX, XX, 0 },
+Ia_jmp_Jw = { "jmp", "jmp", Jw, XX, XX, XX, 0 },
+Ia_jnb_Jb = { "jnb", "jnb", Jb, XX, XX, XX, 0 },
+Ia_jnb_Jd = { "jnb", "jnb", Jd, XX, XX, XX, 0 },
+Ia_jnb_Jw = { "jnb", "jnb", Jw, XX, XX, XX, 0 },
+Ia_jnbe_Jb = { "jnbe", "jnbe", Jb, XX, XX, XX, 0 },
+Ia_jnbe_Jd = { "jnbe", "jnbe", Jd, XX, XX, XX, 0 },
+Ia_jnbe_Jw = { "jnbe", "jnbe", Jw, XX, XX, XX, 0 },
+Ia_jnl_Jb = { "jnl", "jnl", Jb, XX, XX, XX, 0 },
+Ia_jnl_Jd = { "jnl", "jnl", Jd, XX, XX, XX, 0 },
+Ia_jnl_Jw = { "jnl", "jnl", Jw, XX, XX, XX, 0 },
+Ia_jnle_Jb = { "jnle", "jnle", Jb, XX, XX, XX, 0 },
+Ia_jnle_Jd = { "jnle", "jnle", Jd, XX, XX, XX, 0 },
+Ia_jnle_Jw = { "jnle", "jnle", Jw, XX, XX, XX, 0 },
+Ia_jno_Jb = { "jno", "jno", Jb, XX, XX, XX, 0 },
+Ia_jno_Jd = { "jno", "jno", Jd, XX, XX, XX, 0 },
+Ia_jno_Jw = { "jno", "jno", Jw, XX, XX, XX, 0 },
+Ia_jnp_Jb = { "jnp", "jnp", Jb, XX, XX, XX, 0 },
+Ia_jnp_Jd = { "jnp", "jnp", Jd, XX, XX, XX, 0 },
+Ia_jnp_Jw = { "jnp", "jnp", Jw, XX, XX, XX, 0 },
+Ia_jns_Jb = { "jns", "jns", Jb, XX, XX, XX, 0 },
+Ia_jns_Jd = { "jns", "jns", Jd, XX, XX, XX, 0 },
+Ia_jns_Jw = { "jns", "jns", Jw, XX, XX, XX, 0 },
+Ia_jnz_Jb = { "jnz", "jnz", Jb, XX, XX, XX, 0 },
+Ia_jnz_Jd = { "jnz", "jnz", Jd, XX, XX, XX, 0 },
+Ia_jnz_Jw = { "jnz", "jnz", Jw, XX, XX, XX, 0 },
+Ia_jo_Jb = { "jo", "jo", Jb, XX, XX, XX, 0 },
+Ia_jo_Jd = { "jo", "jo", Jd, XX, XX, XX, 0 },
+Ia_jo_Jw = { "jo", "jo", Jw, XX, XX, XX, 0 },
+Ia_jp_Jb = { "jp", "jp", Jb, XX, XX, XX, 0 },
+Ia_jp_Jd = { "jp", "jp", Jd, XX, XX, XX, 0 },
+Ia_jp_Jw = { "jp", "jp", Jw, XX, XX, XX, 0 },
+Ia_jrcxz_Jb = { "jrcxz", "jrcxz", Jb, XX, XX, XX, 0 },
+Ia_js_Jb = { "js", "js", Jb, XX, XX, XX, 0 },
+Ia_js_Jd = { "js", "js", Jd, XX, XX, XX, 0 },
+Ia_js_Jw = { "js", "js", Jw, XX, XX, XX, 0 },
+Ia_jz_Jb = { "jz", "jz", Jb, XX, XX, XX, 0 },
+Ia_jz_Jd = { "jz", "jz", Jd, XX, XX, XX, 0 },
+Ia_jz_Jw = { "jz", "jz", Jw, XX, XX, XX, 0 },
+Ia_lahf = { "lahf", "lahf", XX, XX, XX, XX, 0 },
+Ia_larl_Gd_Ew = { "lar", "larl", Gd, Ew, XX, XX, 0 },
+Ia_larq_Gq_Ew = { "lar", "larq", Gq, Ew, XX, XX, 0 },
+Ia_larw_Gw_Ew = { "lar", "larw", Gw, Ew, XX, XX, 0 },
+Ia_lcall_Apd = { "callf", "lcall", Apd, XX, XX, XX, 0 },
+Ia_lcall_Apw = { "callf", "lcall", Apw, XX, XX, XX, 0 },
+Ia_lcall_Mp = { "callf", "lcall", Mp, XX, XX, XX, 0 },
+Ia_lddqu_Vdq_Mdq = { "lddqu", "lddqu", Vdq, Mdq, XX, XX, IA_SSE3 },
+Ia_ldmxcsr = { "ldmxcsr", "ldmxcsr", Md, XX, XX, XX, IA_SSE },
+Ia_ldsl_Gd_Mp = { "lds", "ldsl", Gd, Mp, XX, XX, 0 },
+Ia_ldsw_Gw_Mp = { "lds", "ldsw", Gw, Mp, XX, XX, 0 },
+Ia_leal_Gd_Md = { "lea", "leal", Gd, Md, XX, XX, 0 },
+Ia_leaq_Gq_Mq = { "lea", "leaq", Gq, Mq, XX, XX, 0 },
+Ia_leave = { "leave", "leave", XX, XX, XX, XX, 0 },
+Ia_leaw_Gw_Mw = { "lea", "leaw", Gw, Mw, XX, XX, 0 },
+Ia_lesl_Gd_Mp = { "les", "lesl", Gd, Mp, XX, XX, 0 },
+Ia_lesw_Gw_Mp = { "les", "lesw", Gw, Mp, XX, XX, 0 },
+Ia_lfence = { "lfence", "lfence", XX, XX, XX, XX, IA_SSE2 },
+Ia_lfsl_Gd_Mp = { "lfs", "lfsl", Gd, Mp, XX, XX, 0 },
+Ia_lfsq_Gq_Mp = { "lfs", "lfsq", Gq, Mp, XX, XX, 0 },
+Ia_lfsw_Gw_Mp = { "lfs", "lfsw", Gw, Mp, XX, XX, 0 },
+Ia_lgdt = { "lgdt", "lgdt", Ms, XX, XX, XX, 0 },
+Ia_lgsl_Gd_Mp = { "lgs", "lgsl", Gd, Mp, XX, XX, 0 },
+Ia_lgsq_Gq_Mp = { "lgs", "lgsq", Gq, Mp, XX, XX, 0 },
+Ia_lgsw_Gw_Mp = { "lgs", "lgsw", Gw, Mp, XX, XX, 0 },
+Ia_lidt = { "lidt", "lidt", Ms, XX, XX, XX, 0 },
+Ia_ljmp_Apd = { "jmpf", "ljmp", Apd, XX, XX, XX, 0 },
+Ia_ljmp_Apw = { "jmpf", "ljmp", Apw, XX, XX, XX, 0 },
+Ia_ljmp_Mp = { "jmpf", "ljmp", Mp, XX, XX, XX, 0 },
+Ia_lldt = { "lldt", "lldt", Ew, XX, XX, XX, 0 },
+Ia_lmsw_Ew = { "lmsw", "lmsw", Ew, XX, XX, XX, 0 },
+Ia_lodsb_AL_Xb = { "lodsb", "lodsb", AL_Reg, Xb, XX, XX, 0 },
+Ia_lodsl_EAX_Xd = { "lodsd", "lodsl", EAX_Reg, Xd, XX, XX, 0 },
+Ia_lodsq_RAX_Xq = { "lodsq", "lodsq", RAX_Reg, Xq, XX, XX, 0 },
+Ia_lodsw_AX_Xw = { "lodsw", "lodsw", AX_Reg, Xw, XX, XX, 0 },
+Ia_loop_Jb = { "loop", "loop", Jb, XX, XX, XX, 0 },
+Ia_loope_Jb = { "loope", "loope", Jb, XX, XX, XX, 0 },
+Ia_loopne_Jb = { "loopne", "loopne", Jb, XX, XX, XX, 0 },
+Ia_lret = { "retf", "lret", XX, XX, XX, XX, 0 },
+Ia_lret_Iw = { "retf", "lret", Iw, XX, XX, XX, 0 },
+Ia_lsll_Gd_Ew = { "lsl", "lsll", Gd, Ew, XX, XX, 0 },
+Ia_lslq_Gq_Ew = { "lsl", "lslq", Gq, Ew, XX, XX, 0 },
+Ia_lslw_Gw_Ew = { "lsl", "lslw", Gw, Ew, XX, XX, 0 },
+Ia_lssl_Gd_Mp = { "lss", "lssl", Gd, Mp, XX, XX, 0 },
+Ia_lssq_Gq_Mp = { "lss", "lssq", Gq, Mp, XX, XX, 0 },
+Ia_lssw_Gw_Mp = { "lss", "lssw", Gw, Mp, XX, XX, 0 },
+Ia_ltr = { "ltr", "ltr", Ew, XX, XX, XX, 0 },
+Ia_lzcntl_Gd_Ed = { "lzcnt", "lzcntl", Gd, Ed, XX, XX, IA_LZCNT },
+Ia_lzcntq_Gq_Eq = { "lzcnt", "lzcntq", Gq, Eq, XX, XX, IA_LZCNT },
+Ia_lzcntw_Gw_Ew = { "lzcnt", "lzcntw", Gw, Ew, XX, XX, IA_LZCNT },
+Ia_maskmovdqu_Vdq_Udq = { "maskmovdqu", "maskmovdqu", Vdq, Udq, sYdq, XX, IA_SSE2 },
+Ia_maskmovq_Pq_Nq = { "maskmovq", "maskmovq", Pq, Nq, sYq, XX, IA_3DNOW | IA_SSE },
+Ia_maxpd_Vpd_Wpd = { "maxpd", "maxpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_maxps_Vps_Wps = { "maxps", "maxps", Vps, Wps, XX, XX, IA_SSE },
+Ia_maxsd_Vsd_Wsd = { "maxsd", "maxsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_maxss_Vss_Wss = { "maxss", "maxss", Vss, Wss, XX, XX, IA_SSE },
+Ia_mfence = { "mfence", "mfence", XX, XX, XX, XX, IA_SSE2 },
+Ia_minpd_Vpd_Wpd = { "minpd", "minpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_minps_Vps_Wps = { "minps", "minps", Vps, Wps, XX, XX, IA_SSE },
+Ia_minsd_Vsd_Wsd = { "minsd", "minsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_minss_Vss_Wss = { "minss", "minss", Vss, Wss, XX, XX, IA_SSE },
+Ia_monitor = { "monitor", "monitor", XX, XX, XX, XX, IA_MONITOR_MWAIT },
+Ia_movapd_Vpd_Wpd = { "movapd", "movapd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_movapd_Wpd_Vpd = { "movapd", "movapd", Wpd, Vpd, XX, XX, IA_SSE2 },
+Ia_movaps_Vps_Wps = { "movaps", "movaps", Vps, Wps, XX, XX, IA_SSE },
+Ia_movaps_Wps_Vps = { "movaps", "movaps", Wps, Vps, XX, XX, IA_SSE },
+Ia_movb_AL_Ob = { "mov", "movb", AL_Reg, Ob, XX, XX, 0 },
+Ia_movb_Eb_Gb = { "mov", "movb", Eb, Gb, XX, XX, 0 },
+Ia_movb_Eb_Ib = { "mov", "movb", Eb, Ib, XX, XX, 0 },
+Ia_movb_Gb_Eb = { "mov", "movb", Gb, Eb, XX, XX, 0 },
+Ia_movb_Ob_AL = { "mov", "movb", Ob, AL_Reg, XX, XX, 0 },
+Ia_movb_R8_Ib = { "mov", "movb", Reg8, Ib, XX, XX, 0 },
+Ia_movbe_Gd_Md = { "movbe", "movbel", Gd, Md, XX, XX, IA_MOVBE },
+Ia_movbe_Gq_Mq = { "movbe", "movbeq", Gq, Mq, XX, XX, IA_MOVBE },
+Ia_movbe_Gw_Mw = { "movbe", "movbew", Gw, Mw, XX, XX, IA_MOVBE },
+Ia_movbe_Md_Gd = { "movbe", "movbel", Md, Gd, XX, XX, IA_MOVBE },
+Ia_movbe_Mq_Gq = { "movbe", "movbeq", Mq, Gq, XX, XX, IA_MOVBE },
+Ia_movbe_Mw_Gw = { "movbe", "movbew", Mw, Gw, XX, XX, IA_MOVBE },
+Ia_movd_Ed_Pq = { "movd", "movd", Ed, Pq, XX, XX, IA_MMX },
+Ia_movd_Ed_Vd = { "movd", "movd", Ed, Vdq, XX, XX, IA_SSE2 },
+Ia_movd_Pq_Ed = { "movd", "movd", Pq, Ed, XX, XX, IA_MMX },
+Ia_movd_Vdq_Ed = { "movd", "movd", Vdq, Ed, XX, XX, IA_SSE2 },
+Ia_movddup_Vdq_Wq = { "movddup", "movddup", Vdq, Wq, XX, XX, IA_SSE3 },
+Ia_movdq2q_Pq_Udq = { "movdq2q", "movdq2q", Pq, Udq, XX, XX, IA_SSE2 },
+Ia_movdqa_Vdq_Wdq = { "movdqa", "movdqa", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_movdqa_Wdq_Vdq = { "movdqa", "movdqa", Wdq, Vdq, XX, XX, IA_SSE2 },
+Ia_movdqu_Vdq_Wdq = { "movdqu", "movdqu", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_movdqu_Wdq_Vdq = { "movdqu", "movdqu", Wdq, Vdq, XX, XX, IA_SSE2 },
+Ia_movhlpd_Vpd_Udq = { "movhlpd", "movhlpd", Vpd, Udq, XX, XX, IA_SSE2 },
+Ia_movhlps_Vps_Udq = { "movhlps", "movhlps", Vps, Udq, XX, XX, IA_SSE },
+Ia_movhpd_Mq_Vpd = { "movhpd", "movhpd", Mq, Vpd, XX, XX, IA_SSE2 },
+Ia_movhpd_Vpd_Mq = { "movhpd", "movhpd", Vpd, Mq, XX, XX, IA_SSE2 },
+Ia_movhps_Mq_Vps = { "movhps", "movhps", Mq, Vps, XX, XX, IA_SSE },
+Ia_movhps_Vps_Mq = { "movhps", "movhps", Vps, Mq, XX, XX, IA_SSE },
+Ia_movl_Cd_Rd = { "mov", "movl", Cd, Rd, XX, XX, 0 },
+Ia_movl_Dd_Rd = { "mov", "movl", Dd, Rd, XX, XX, 0 },
+Ia_movl_EAX_Od = { "mov", "movl", EAX_Reg, Od, XX, XX, 0 },
+Ia_movl_Ed_Gd = { "mov", "movl", Ed, Gd, XX, XX, 0 },
+Ia_movl_Ed_Id = { "mov", "movl", Ed, Id, XX, XX, 0 },
+Ia_movl_ERX_Id = { "mov", "movl", ERX, Id, XX, XX, 0 },
+Ia_movl_Gd_Ed = { "mov", "movl", Gd, Ed, XX, XX, 0 },
+Ia_movl_Od_EAX = { "mov", "movl", Od, EAX_Reg, XX, XX, 0 },
+Ia_movl_Rd_Cd = { "mov", "movl", Rd, Cd, XX, XX, 0 },
+Ia_movl_Rd_Dd = { "mov", "movl", Rd, Dd, XX, XX, 0 },
+Ia_movlhpd_Vpd_Udq = { "movlhpd", "movlhpd", Vpd, Udq, XX, XX, IA_SSE2 },
+Ia_movlhps_Vps_Udq = { "movlhps", "movlhps", Vps, Udq, XX, XX, IA_SSE },
+Ia_movlpd_Mq_Vpd = { "movlpd", "movlpd", Mq, Vpd, XX, XX, IA_SSE2 },
+Ia_movlpd_Vpd_Mq = { "movlpd", "movlpd", Vpd, Mq, XX, XX, IA_SSE2 },
+Ia_movlps_Mq_Vps = { "movlps", "movlps", Mq, Vps, XX, XX, IA_SSE },
+Ia_movlps_Vps_Mq = { "movlps", "movlps", Vps, Mq, XX, XX, IA_SSE },
+Ia_movmskpd_Gd_Upd = { "movmskpd", "movmskpd", Gd, Upd, XX, XX, IA_SSE2 },
+Ia_movmskps_Gd_Ups = { "movmskps", "movmskps", Gd, Ups, XX, XX, IA_SSE },
+Ia_movntdq_Mdq_Vdq = { "movntdq", "movntdq", Mdq, Vdq, XX, XX, IA_SSE2 },
+Ia_movntdqa_Vdq_Mdq = { "movntdqa", "movntdqa", Vdq, Mdq, XX, XX, IA_SSE4_1 },
+Ia_movnti_Md_Gd = { "movnti", "movnti", Md, Gd, XX, XX, IA_SSE2 },
+Ia_movntiq_Mq_Gq = { "movnti", "movntiq", Mq, Gq, XX, XX, 0 },
+Ia_movntpd_Mpd_Vpd = { "movntpd", "movntpd", Mpd, Vpd, XX, XX, IA_SSE2 },
+Ia_movntps_Mps_Vps = { "movntps", "movntps", Mps, Vps, XX, XX, IA_SSE },
+Ia_movntq_Mq_Pq = { "movntq", "movntq", Mq, Pq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_movntsd_Msd_Vsd = { "movntsd", "movntsd", Msd, Vsd, XX, XX, IA_SSE4A },
+Ia_movntss_Mss_Vss = { "movntss", "movntss", Mss, Vss, XX, XX, IA_SSE4A },
+Ia_movq_Cq_Rq = { "mov", "movq", Cq, Rq, XX, XX, 0 },
+Ia_movq_Dq_Rq = { "mov", "movq", Dq, Rq, XX, XX, 0 },
+Ia_movq_Eq_Gq = { "mov", "movq", Eq, Gq, XX, XX, 0 },
+Ia_movq_Eq_Pq = { "movq", "movq", Eq, Pq, XX, XX, 0 },
+Ia_movq_Eq_sId = { "mov", "movq", Eq, sIdq, XX, XX, 0 },
+Ia_movq_Eq_Vq = { "movq", "movq", Eq, Vq, XX, XX, 0 },
+Ia_movq_Gq_Eq = { "mov", "movq", Gq, Eq, XX, XX, 0 },
+Ia_movq_Oq_RAX = { "mov", "movq", Oq, RAX_Reg, XX, XX, 0 },
+Ia_movq_Pq_Eq = { "movq", "movq", Pq, Eq, XX, XX, 0 },
+Ia_movq_Pq_Qq = { "movq", "movq", Pq, Qq, XX, XX, IA_MMX },
+Ia_movq_Qq_Pq = { "movq", "movq", Qq, Pq, XX, XX, IA_MMX },
+Ia_movq_RAX_Oq = { "mov", "movq", RAX_Reg, Oq, XX, XX, 0 },
+Ia_movq_Rq_Cq = { "mov", "movq", Rq, Cq, XX, XX, 0 },
+Ia_movq_Rq_Dq = { "mov", "movq", Rq, Dq, XX, XX, 0 },
+Ia_movq_RRX_Iq = { "mov", "movq", RRX, Iq, XX, XX, 0 },
+Ia_movq_Vdq_Eq = { "movq", "movq", Vdq, Eq, XX, XX, 0 },
+Ia_movq_Vq_Wq = { "movq", "movq", Vq, Wq, XX, XX, IA_SSE2 },
+Ia_movq_Wq_Vq = { "movq", "movq", Wq, Vq, XX, XX, IA_SSE2 },
+Ia_movq2dq_Vdq_Qq = { "movq2dq", "movq2dq", Vdq, Qq, XX, XX, IA_SSE2 },
+Ia_movsb_Yb_Xb = { "movsb", "movsb", Yb, Xb, XX, XX, 0 },
+Ia_movsbl_Gd_Eb = { "movsx", "movsbl", Gd, Eb, XX, XX, 0 },
+Ia_movsbq_Gq_Eb = { "movsx", "movsbq", Gq, Eb, XX, XX, 0 },
+Ia_movsbw_Gw_Eb = { "movsx", "movsbw", Gw, Eb, XX, XX, 0 },
+Ia_movsd_Vsd_Wsd = { "movsd", "movsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_movsd_Wsd_Vsd = { "movsd", "movsd", Wsd, Vsd, XX, XX, IA_SSE2 },
+Ia_movshdup_Vdq_Wdq = { "movshdup", "movshdup", Vdq, Wdq, XX, XX, IA_SSE3 },
+Ia_movsl_Yd_Xd = { "movsd", "movsl", Yd, Xd, XX, XX, 0 },
+Ia_movsldup_Vdq_Wdq = { "movsldup", "movsldup", Vdq, Wdq, XX, XX, IA_SSE3 },
+Ia_movslq_Gq_Ed = { "movsxd", "movslq", Gq, Ed, XX, XX, 0 },
+Ia_movsq_Yq_Xq = { "movsq", "movsq", Yq, Xq, XX, XX, 0 },
+Ia_movss_Vss_Wss = { "movss", "movss", Vss, Wss, XX, XX, IA_SSE },
+Ia_movss_Wss_Vss = { "movss", "movss", Wss, Vss, XX, XX, IA_SSE },
+Ia_movsw_Yw_Xw = { "movsw", "movsw", Yw, Xw, XX, XX, 0 },
+Ia_movswl_Gd_Ew = { "movsx", "movswl", Gd, Ew, XX, XX, 0 },
+Ia_movswq_Gq_Ew = { "movsx", "movswq", Gq, Ew, XX, XX, 0 },
+Ia_movupd_Vpd_Wpd = { "movupd", "movupd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_movupd_Wpd_Vpd = { "movupd", "movupd", Wpd, Vpd, XX, XX, IA_SSE2 },
+Ia_movups_Vps_Wps = { "movups", "movups", Vps, Wps, XX, XX, IA_SSE },
+Ia_movups_Wps_Vps = { "movups", "movups", Wps, Vps, XX, XX, IA_SSE },
+Ia_movw_AX_Ow = { "mov", "movw", AX_Reg, Ow, XX, XX, 0 },
+Ia_movw_Ew_Gw = { "mov", "movw", Ew, Gw, XX, XX, 0 },
+Ia_movw_Ew_Iw = { "mov", "movw", Ew, Iw, XX, XX, 0 },
+Ia_movw_Ew_Sw = { "mov", "movw", Ew, Sw, XX, XX, 0 },
+Ia_movw_Gw_Ew = { "mov", "movw", Gw, Ew, XX, XX, 0 },
+Ia_movw_Ow_AX = { "mov", "movw", Ow, AX_Reg, XX, XX, 0 },
+Ia_movw_RX_Iw = { "mov", "movw", RX, Iw, XX, XX, 0 },
+Ia_movw_Sw_Ew = { "mov", "movw", Sw, Ew, XX, XX, 0 },
+Ia_movzbl_Gd_Eb = { "movzx", "movzbl", Gd, Eb, XX, XX, 0 },
+Ia_movzbq_Gq_Eb = { "movzx", "movzbq", Gq, Eb, XX, XX, 0 },
+Ia_movzbw_Gw_Eb = { "movzx", "movzbw", Gw, Eb, XX, XX, 0 },
+Ia_movzwl_Gd_Ew = { "movzx", "movzwl", Gd, Ew, XX, XX, 0 },
+Ia_movzwq_Gq_Ew = { "movzx", "movzwq", Gq, Ew, XX, XX, 0 },
+Ia_mpsadbw_Vdq_Wdq_Ib = { "mpsadbw", "mpsadbw", Vdq, Wdq, Ib, XX, IA_SSE4_1 },
+Ia_mulb_AL_Eb = { "mul", "mulb", AL_Reg, Eb, XX, XX, 0 },
+Ia_mull_EAX_Ed = { "mul", "mull", EAX_Reg, Ed, XX, XX, 0 },
+Ia_mulpd_Vpd_Wpd = { "mulpd", "mulpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_mulps_Vps_Wps = { "mulps", "mulps", Vps, Wps, XX, XX, IA_SSE },
+Ia_mulq_RAX_Eq = { "mul", "mulq", RAX_Reg, Eq, XX, XX, 0 },
+Ia_mulsd_Vsd_Wsd = { "mulsd", "mulsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_mulss_Vss_Wss = { "mulss", "mulss", Vss, Wss, XX, XX, IA_SSE },
+Ia_multibyte_nop = { "multibyte nop", "multibyte nop", XX, XX, XX, XX, 0 },
+Ia_mulw_AX_Ew = { "mul", "mulw", AX_Reg, Ew, XX, XX, 0 },
+Ia_mulx_By_Gy_Ey = { "mulx", "mulx", By, Gy, Ey, XX, IA_BMI2 },
+Ia_mwait = { "mwait", "mwait", XX, XX, XX, XX, IA_MONITOR_MWAIT },
+Ia_negb_Eb = { "neg", "negb", Eb, XX, XX, XX, 0 },
+Ia_negl_Ed = { "neg", "negl", Ed, XX, XX, XX, 0 },
+Ia_negq_Eq = { "neg", "negq", Eq, XX, XX, XX, 0 },
+Ia_negw_Ew = { "neg", "negw", Ew, XX, XX, XX, 0 },
+Ia_nop = { "nop", "nop", XX, XX, XX, XX, 0 },
+Ia_notb_Eb = { "not", "notb", Eb, XX, XX, XX, 0 },
+Ia_notl_Ed = { "not", "notl", Ed, XX, XX, XX, 0 },
+Ia_notq_Eq = { "not", "notq", Eq, XX, XX, XX, 0 },
+Ia_notw_Ew = { "not", "notw", Ew, XX, XX, XX, 0 },
+Ia_orb_AL_Ib = { "or", "orb", AL_Reg, Ib, XX, XX, 0 },
+Ia_orb_Eb_Gb = { "or", "orb", Eb, Gb, XX, XX, 0 },
+Ia_orb_Eb_Ib = { "or", "orb", Eb, Ib, XX, XX, 0 },
+Ia_orb_Gb_Eb = { "or", "orb", Gb, Eb, XX, XX, 0 },
+Ia_orl_EAX_Id = { "or", "orl", EAX_Reg, Id, XX, XX, 0 },
+Ia_orl_Ed_Gd = { "or", "orl", Ed, Gd, XX, XX, 0 },
+Ia_orl_Ed_Id = { "or", "orl", Ed, Id, XX, XX, 0 },
+Ia_orl_Ed_sIb = { "or", "orl", Ed, sIbd, XX, XX, 0 },
+Ia_orl_Gd_Ed = { "or", "orl", Gd, Ed, XX, XX, 0 },
+Ia_orpd_Vpd_Wpd = { "orpd", "orpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_orps_Vps_Wps = { "orps", "orps", Vps, Wps, XX, XX, IA_SSE },
+Ia_orq_Eq_Gq = { "or", "orq", Eq, Gq, XX, XX, 0 },
+Ia_orq_Eq_sIb = { "or", "orq", Eq, sIbq, XX, XX, 0 },
+Ia_orq_Eq_sId = { "or", "orq", Eq, sIdq, XX, XX, 0 },
+Ia_orq_Gq_Eq = { "or", "orq", Gq, Eq, XX, XX, 0 },
+Ia_orq_RAX_sId = { "or", "orq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_orw_AX_Iw = { "or", "orw", AX_Reg, Iw, XX, XX, 0 },
+Ia_orw_Ew_Gw = { "or", "orw", Ew, Gw, XX, XX, 0 },
+Ia_orw_Ew_Iw = { "or", "orw", Ew, Iw, XX, XX, 0 },
+Ia_orw_Ew_sIb = { "or", "orw", Ew, sIbw, XX, XX, 0 },
+Ia_orw_Gw_Ew = { "or", "orw", Gw, Ew, XX, XX, 0 },
+Ia_outb_DX_AL = { "out", "outb", DX_Reg, AL_Reg, XX, XX, 0 },
+Ia_outb_Ib_AL = { "out", "outb", Ib, AL_Reg, XX, XX, 0 },
+Ia_outl_DX_EAX = { "out", "outl", DX_Reg, EAX_Reg, XX, XX, 0 },
+Ia_outl_Ib_EAX = { "out", "outl", Ib, EAX_Reg, XX, XX, 0 },
+Ia_outsb_DX_Xb = { "outsb", "outsb", DX_Reg, Xb, XX, XX, 0 },
+Ia_outsl_DX_Xd = { "outsd", "outsl", DX_Reg, Xd, XX, XX, 0 },
+Ia_outsw_DX_Xw = { "outsw", "outsw", DX_Reg, Xw, XX, XX, 0 },
+Ia_outw_DX_AX = { "out", "outw", DX_Reg, AX_Reg, XX, XX, 0 },
+Ia_outw_Ib_AX = { "out", "outw", Ib, AX_Reg, XX, XX, 0 },
+Ia_pabsb_Pq_Qq = { "pabsb", "pabsb", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_pabsb_Vdq_Wdq = { "pabsb", "pabsb", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pabsd_Pq_Qq = { "pabsd", "pabsd", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_pabsd_Vdq_Wdq = { "pabsd", "pabsd", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pabsw_Pq_Qq = { "pabsw", "pabsw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_pabsw_Vdq_Wdq = { "pabsw", "pabsw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_packssdw_Pq_Qq = { "packssdw", "packssdw", Pq, Qq, XX, XX, IA_MMX },
+Ia_packssdw_Vdq_Wdq = { "packssdw", "packssdw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_packsswb_Pq_Qq = { "packsswb", "packsswb", Pq, Qq, XX, XX, IA_MMX },
+Ia_packsswb_Vdq_Wdq = { "packsswb", "packsswb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_packusdw_Vdq_Wdq = { "packusdw", "packusdw", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_packuswb_Pq_Qq = { "packuswb", "packuswb", Pq, Qq, XX, XX, IA_MMX },
+Ia_packuswb_Vdq_Wdq = { "packuswb", "packuswb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddb_Pq_Qq = { "paddb", "paddb", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddb_Vdq_Wdq = { "paddb", "paddb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddd_Pq_Qq = { "paddd", "paddd", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddd_Vdq_Wdq = { "paddd", "paddd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddq_Pq_Qq = { "paddq", "paddq", Pq, Qq, XX, XX, IA_SSE2 },
+Ia_paddq_Vdq_Wdq = { "paddq", "paddq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddsb_Pq_Qq = { "paddsb", "paddsb", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddsb_Vdq_Wdq = { "paddsb", "paddsb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddsw_Pq_Qq = { "paddsw", "paddsw", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddsw_Vdq_Wdq = { "paddsw", "paddsw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddusb_Pq_Qq = { "paddusb", "paddusb", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddusb_Vdq_Wdq = { "paddusb", "paddusb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddusw_Pq_Qq = { "paddusw", "paddusw", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddusw_Vdq_Wdq = { "paddusw", "paddusw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_paddw_Pq_Qq = { "paddw", "paddw", Pq, Qq, XX, XX, IA_MMX },
+Ia_paddw_Vdq_Wdq = { "paddw", "paddw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_palignr_Pq_Qq_Ib = { "palignr", "palignr", Pq, Qq, Ib, XX, IA_SSSE3 },
+Ia_palignr_Vdq_Wdq_Ib = { "palignr", "palignr", Vdq, Wdq, Ib, XX, IA_SSSE3 },
+Ia_pand_Pq_Qq = { "pand", "pand", Pq, Qq, XX, XX, IA_MMX },
+Ia_pand_Vdq_Wdq = { "pand", "pand", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pandn_Pq_Qq = { "pandn", "pandn", Pq, Qq, XX, XX, IA_MMX },
+Ia_pandn_Vdq_Wdq = { "pandn", "pandn", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pause = { "pause", "pause", XX, XX, XX, XX, 0 },
+Ia_pavgb_Pq_Qq = { "pavgb", "pavgb", Pq, Qq, XX, XX, IA_MMX },
+Ia_pavgb_Vdq_Wdq = { "pavgb", "pavgb", Vdq, Wdq, XX, XX, IA_SSE },
+Ia_pavgw_Pq_Qq = { "pavgw", "pavgw", Pq, Qq, XX, XX, IA_MMX },
+Ia_pavgw_Vdq_Wdq = { "pavgw", "pavgw", Vdq, Wdq, XX, XX, IA_SSE },
+Ia_pblendvb_Vdq_Wdq = { "pblendvb", "pblendvb", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pblendw_Vdq_Wdq_Ib = { "pblendw", "pblendw", Vdq, Wdq, Ib, XX, IA_SSE4_1 },
+Ia_pclmulqdq_Vdq_Wdq_Ib = { "pclmulqdq", "pclmulqdq", Vdq, Wdq, Ib, XX, IA_AES_PCLMULQDQ },
+Ia_pcmpeqb_Pq_Qq = { "pcmpeqb", "pcmpeqb", Pq, Qq, XX, XX, IA_MMX },
+Ia_pcmpeqb_Vdq_Wdq = { "pcmpeqb", "pcmpeqb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pcmpeqd_Pq_Qq = { "pcmpeqd", "pcmpeqd", Pq, Qq, XX, XX, IA_MMX },
+Ia_pcmpeqd_Vdq_Wdq = { "pcmpeqd", "pcmpeqd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pcmpeqq_Vdq_Wdq = { "pcmpeqq", "pcmpeqq", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pcmpeqw_Pq_Qq = { "pcmpeqw", "pcmpeqw", Pq, Qq, XX, XX, IA_MMX },
+Ia_pcmpeqw_Vdq_Wdq = { "pcmpeqw", "pcmpeqw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pcmpestri_Vdq_Wdq_Ib = { "pcmpestri", "pcmpestri", Vdq, Wdq, Ib, XX, IA_SSE4_2 },
+Ia_pcmpestrm_Vdq_Wdq_Ib = { "pcmpestrm", "pcmpestrm", Vdq, Wdq, Ib, XX, IA_SSE4_2 },
+Ia_pcmpgtb_Pq_Qq = { "pcmpgtb", "pcmpgtb", Pq, Qq, XX, XX, IA_MMX },
+Ia_pcmpgtb_Vdq_Wdq = { "pcmpgtb", "pcmpgtb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pcmpgtd_Pq_Qq = { "pcmpgtd", "pcmpgtd", Pq, Qq, XX, XX, IA_MMX },
+Ia_pcmpgtd_Vdq_Wdq = { "pcmpgtd", "pcmpgtd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pcmpgtq_Vdq_Wdq = { "pcmpgtq", "pcmpgtq", Vdq, Wdq, XX, XX, IA_SSE4_2 },
+Ia_pcmpgtw_Pq_Qq = { "pcmpgtw", "pcmpgtw", Pq, Qq, XX, XX, IA_MMX },
+Ia_pcmpgtw_Vdq_Wdq = { "pcmpgtw", "pcmpgtw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pcmpistri_Vdq_Wdq_Ib = { "pcmpistri", "pcmpistri", Vdq, Wdq, Ib, XX, IA_SSE4_2 },
+Ia_pcmpistrm_Vdq_Wdq_Ib = { "pcmpistrm", "pcmpistrm", Vdq, Wdq, Ib, XX, IA_SSE4_2 },
+Ia_pdep_Gy_By_Ey = { "pdep", "pdep", Gy, By, Ey, XX, IA_BMI2 },
+Ia_pext_Gy_By_Ey = { "pext", "pext", Gy, By, Ey, XX, IA_BMI2 },
+Ia_pextrb_Ebd_Vdq_Ib = { "pextrb", "pextrb", Ebd, Vdq, Ib, XX, IA_SSE4_1 },
+Ia_pextrd_Ed_Vdq_Ib = { "pextrd", "pextrd", Ed, Vdq, Ib, XX, IA_SSE4_1 },
+Ia_pextrq_Eq_Vdq_Ib = { "pextrq", "pextrq", Eq, Vdq, Ib, XX, IA_SSE4_1 },
+Ia_pextrw_Ewd_Vdq_Ib = { "pextrw", "pextrw", Ewd, Vdq, Ib, XX, IA_SSE4_1 },
+Ia_pextrw_Gd_Nq_Ib = { "pextrw", "pextrw", Gd, Nq, Ib, XX, IA_3DNOW | IA_SSE },
+Ia_pextrw_Gd_Udq_Ib = { "pextrw", "pextrw", Gd, Udq, Ib, XX, IA_SSE2 },
+Ia_pf2id_Pq_Qq = { "pf2id", "pf2id", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pf2iw_Pq_Qq = { "pf2iw", "pf2iw", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfacc_Pq_Qq = { "pfacc", "pfacc", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfadd_Pq_Qq = { "pfadd", "pfadd", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfcmpeq_Pq_Qq = { "pfcmpeq", "pfcmpeq", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfcmpge_Pq_Qq = { "pfcmpge", "pfcmpge", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfcmpgt_Pq_Qq = { "pfcmpgt", "pfcmpgt", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfmax_Pq_Qq = { "pfmax", "pfmax", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfmin_Pq_Qq = { "pfmin", "pfmin", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfmul_Pq_Qq = { "pfmul", "pfmul", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfnacc_Pq_Qq = { "pfnacc", "pfnacc", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfpnacc_Pq_Qq = { "pfpnacc", "pfpnacc", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfrcp_Pq_Qq = { "pfrcp", "pfrcp", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfrcpit1_Pq_Qq = { "pfrcpit1", "pfrcpit1", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfrcpit2_Pq_Qq = { "pfrcpit2", "pfrcpit2", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfrsqit1_Pq_Qq = { "pfrsqit1", "pfrsqit1", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfrsqrt_Pq_Qq = { "pfrsqrt", "pfrsqrt", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfsub_Pq_Qq = { "pfsub", "pfsub", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pfsubr_Pq_Qq = { "pfsubr", "pfsubr", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_phaddd_Pq_Qq = { "phaddd", "phaddd", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_phaddd_Vdq_Wdq = { "phaddd", "phaddd", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_phaddsw_Pq_Qq = { "phaddsw", "phaddsw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_phaddsw_Vdq_Wdq = { "phaddsw", "phaddsw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_phaddw_Pq_Qq = { "phaddw", "phaddw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_phaddw_Vdq_Wdq = { "phaddw", "phaddw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_phminposuw_Vdq_Wdq = { "phminposuw", "phminposuw", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_phsubd_Pq_Qq = { "phsubd", "phsubd", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_phsubd_Vdq_Wdq = { "phsubd", "phsubd", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_phsubsw_Pq_Qq = { "phsubsw", "phsubsw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_phsubsw_Vdq_Wdq = { "phsubsw", "phsubsw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_phsubw_Pq_Qq = { "phsubw", "phsubw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_phsubw_Vdq_Wdq = { "phsubw", "phsubw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pi2fd_Pq_Qq = { "pi2fd", "pi2fd", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pi2fw_Pq_Qq = { "pi2fw", "pi2fw", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pinsrb_Vdq_Ew_Ib = { "pinsrb", "pinsrb", Vdq, Ew, Ib, XX, IA_SSE4_1 },
+Ia_pinsrd_Vdq_Ed_Ib = { "pinsrd", "pinsrd", Vdq, Ed, Ib, XX, IA_SSE4_1 },
+Ia_pinsrq_Vdq_Eq_Ib = { "pinsrq", "pinsrq", Vdq, Eq, Ib, XX, IA_SSE4_1 },
+Ia_pinsrw_Pq_Ew_Ib = { "pinsrw", "pinsrw", Pq, Ew, Ib, XX, IA_3DNOW | IA_SSE },
+Ia_pinsrw_Vdq_Ew_Ib = { "pinsrw", "pinsrw", Vdq, Ew, Ib, XX, IA_SSE2 },
+Ia_pmaddubsw_Pq_Qq = { "pmaddubsw", "pmaddubsw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_pmaddubsw_Vdq_Wdq = { "pmaddubsw", "pmaddubsw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pmaddwd_Pq_Qq = { "pmaddwd", "pmaddwd", Pq, Qq, XX, XX, IA_MMX },
+Ia_pmaddwd_Vdq_Wdq = { "pmaddwd", "pmaddwd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pmaxsb_Vdq_Wdq = { "pmaxsb", "pmaxsb", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pmaxsd_Vdq_Wdq = { "pmaxsd", "pmaxsd", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pmaxsw_Pq_Qq = { "pmaxsw", "pmaxsw", Pq, Qq, XX, XX, 0 },
+Ia_pmaxsw_Vdq_Wdq = { "pmaxsw", "pmaxsw", Vdq, Wdq, XX, XX, 0 },
+Ia_pmaxub_Pq_Qq = { "pmaxub", "pmaxub", Pq, Qq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_pmaxub_Vdq_Wdq = { "pmaxub", "pmaxub", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pmaxud_Vdq_Wdq = { "pmaxud", "pmaxud", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pmaxuw_Vdq_Wdq = { "pmaxuw", "pmaxuw", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pminsb_Vdq_Wdq = { "pminsb", "pminsb", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pminsd_Vdq_Wdq = { "pminsd", "pminsd", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pminsw_Pq_Qq = { "pminsw", "pminsw", Pq, Qq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_pminsw_Vdq_Wdq = { "pminsw", "pminsw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pminub_Pq_Qq = { "pminub", "pminub", Pq, Qq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_pminub_Vdq_Wdq = { "pminub", "pminub", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pminud_Vdq_Wdq = { "pminud", "pminud", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pminuw_Vdq_Wdq = { "pminuw", "pminuw", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pmovmskb_Gd_Nq = { "pmovmskb", "pmovmskb", Gd, Nq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_pmovmskb_Gd_Udq = { "pmovmskb", "pmovmskb", Gd, Udq, XX, XX, IA_SSE2 },
+Ia_pmovsxbd_Vdq_Wd = { "pmovsxbd", "pmovsxbd", Vdq, Wd, XX, XX, IA_SSE4_1 },
+Ia_pmovsxbq_Vdq_Ww = { "pmovsxbq", "pmovsxbq", Vdq, Ww, XX, XX, IA_SSE4_1 },
+Ia_pmovsxbw_Vdq_Wq = { "pmovsxbw", "pmovsxbw", Vdq, Wq, XX, XX, IA_SSE4_1 },
+Ia_pmovsxdq_Vdq_Wq = { "pmovsxdq", "pmovsxdq", Vdq, Wq, XX, XX, IA_SSE4_1 },
+Ia_pmovsxwd_Vdq_Wq = { "pmovsxwd", "pmovsxwd", Vdq, Wq, XX, XX, IA_SSE4_1 },
+Ia_pmovsxwq_Vdq_Wd = { "pmovsxwq", "pmovsxwq", Vdq, Wd, XX, XX, IA_SSE4_1 },
+Ia_pmovzxbd_Vdq_Wd = { "pmovzxbd", "pmovzxbd", Vdq, Wd, XX, XX, IA_SSE4_1 },
+Ia_pmovzxbq_Vdq_Ww = { "pmovzxbq", "pmovzxbq", Vdq, Ww, XX, XX, IA_SSE4_1 },
+Ia_pmovzxbw_Vdq_Wq = { "pmovzxbw", "pmovzxbw", Vdq, Wq, XX, XX, IA_SSE4_1 },
+Ia_pmovzxdq_Vdq_Wq = { "pmovzxdq", "pmovzxdq", Vdq, Wq, XX, XX, IA_SSE4_1 },
+Ia_pmovzxwd_Vdq_Wq = { "pmovzxwd", "pmovzxwd", Vdq, Wq, XX, XX, IA_SSE4_1 },
+Ia_pmovzxwq_Vdq_Wd = { "pmovzxwq", "pmovzxwq", Vdq, Wd, XX, XX, IA_SSE4_1 },
+Ia_pmuldq_Vdq_Wdq = { "pmuldq", "pmuldq", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pmulhrsw_Pq_Qq = { "pmulhrsw", "pmulhrsw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_pmulhrsw_Vdq_Wdq = { "pmulhrsw", "pmulhrsw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pmulhrw_Pq_Qq = { "pmulhrw", "pmulhrw", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_pmulhuw_Pq_Qq = { "pmulhuw", "pmulhuw", Pq, Qq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_pmulhuw_Vdq_Wdq = { "pmulhuw", "pmulhuw", Vdq, Wdq, XX, XX, IA_SSE },
+Ia_pmulhw_Pq_Qq = { "pmulhw", "pmulhw", Pq, Qq, XX, XX, IA_MMX },
+Ia_pmulhw_Vdq_Wdq = { "pmulhw", "pmulhw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pmulld_Vdq_Wdq = { "pmulld", "pmulld", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_pmullw_Pq_Qq = { "pmullw", "pmullw", Pq, Qq, XX, XX, IA_MMX },
+Ia_pmullw_Vdq_Wdq = { "pmullw", "pmullw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pmuludq_Pq_Qq = { "pmuludq", "pmuludq", Pq, Qq, XX, XX, IA_SSE2 },
+Ia_pmuludq_Vdq_Wdq = { "pmuludq", "pmuludq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_popal = { "popa", "popal", XX, XX, XX, XX, 0 },
+Ia_popaw = { "popa", "popa", XX, XX, XX, XX, 0 },
+Ia_popcnt_Gd_Ed = { "popcnt", "popcnt", Gd, Ed, XX, XX, IA_POPCNT },
+Ia_popcnt_Gq_Eq = { "popcnt", "popcnt", Gq, Eq, XX, XX, IA_POPCNT },
+Ia_popcnt_Gw_Ew = { "popcnt", "popcnt", Gw, Ew, XX, XX, IA_POPCNT },
+Ia_popfl = { "popf", "popfl", XX, XX, XX, XX, 0 },
+Ia_popfq = { "popf", "popfq", XX, XX, XX, XX, 0 },
+Ia_popfw = { "popf", "popf", XX, XX, XX, XX, 0 },
+Ia_popl_DS = { "pop", "popl", DS, XX, XX, XX, 0 },
+Ia_popl_Ed = { "pop", "popl", Ed, XX, XX, XX, 0 },
+Ia_popl_ERX = { "pop", "popl", ERX, XX, XX, XX, 0 },
+Ia_popl_ES = { "pop", "popl", ES, XX, XX, XX, 0 },
+Ia_popl_FS = { "pop", "popl", FS, XX, XX, XX, 0 },
+Ia_popl_GS = { "pop", "popl", GS, XX, XX, XX, 0 },
+Ia_popl_SS = { "pop", "popl", SS, XX, XX, XX, 0 },
+Ia_popq_Eq = { "pop", "popq", Eq, XX, XX, XX, 0 },
+Ia_popq_FS = { "pop", "popq", FS, XX, XX, XX, 0 },
+Ia_popq_GS = { "pop", "popq", GS, XX, XX, XX, 0 },
+Ia_popq_RRX = { "pop", "popq", RRX, XX, XX, XX, 0 },
+Ia_popw_DS = { "pop", "popw", DS, XX, XX, XX, 0 },
+Ia_popw_ES = { "pop", "popw", ES, XX, XX, XX, 0 },
+Ia_popw_Ew = { "pop", "popw", Ew, XX, XX, XX, 0 },
+Ia_popw_FS = { "pop", "popw", FS, XX, XX, XX, 0 },
+Ia_popw_GS = { "pop", "popw", GS, XX, XX, XX, 0 },
+Ia_popw_RX = { "pop", "popw", RX, XX, XX, XX, 0 },
+Ia_popw_SS = { "pop", "popw", SS, XX, XX, XX, 0 },
+Ia_por_Pq_Qq = { "por", "por", Pq, Qq, XX, XX, IA_MMX },
+Ia_por_Vdq_Wdq = { "por", "por", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_prefetch_hint = { "prefetch_hint", "prefetch_hint", Mb, XX, XX, XX, IA_SSE },
+Ia_prefetchnta = { "prefetchnta", "prefetchnta", Mb, XX, XX, XX, IA_SSE },
+Ia_prefetcht0 = { "prefetcht0", "prefetcht0", Mb, XX, XX, XX, IA_SSE },
+Ia_prefetcht1 = { "prefetcht1", "prefetcht1", Mb, XX, XX, XX, IA_SSE },
+Ia_prefetcht2 = { "prefetcht2", "prefetcht2", Mb, XX, XX, XX, IA_SSE },
+Ia_prefetchw = { "prefetchw", "prefetchw", Mb, XX, XX, XX, 0 },
+Ia_prefix_asize = { "asize", "asize", XX, XX, XX, XX, 0 },
+Ia_prefix_cs = { "cs", "cs", XX, XX, XX, XX, 0 },
+Ia_prefix_ds = { "ds", "ds", XX, XX, XX, XX, 0 },
+Ia_prefix_es = { "es", "es", XX, XX, XX, XX, 0 },
+Ia_prefix_fs = { "fs", "fs", XX, XX, XX, XX, 0 },
+Ia_prefix_gs = { "gs", "gs", XX, XX, XX, XX, 0 },
+Ia_prefix_lock = { "lock", "lock", XX, XX, XX, XX, 0 },
+Ia_prefix_osize = { "osize", "osize", XX, XX, XX, XX, 0 },
+Ia_prefix_rep = { "rep", "rep", XX, XX, XX, XX, 0 },
+Ia_prefix_repne = { "repne", "repne", XX, XX, XX, XX, 0 },
+Ia_prefix_rex = { "rex", "rex", XX, XX, XX, XX, 0 },
+Ia_prefix_ss = { "ss", "ss", XX, XX, XX, XX, 0 },
+Ia_psadbw_Pq_Qq = { "psadbw", "psadbw", Pq, Qq, XX, XX, IA_3DNOW | IA_SSE },
+Ia_psadbw_Vdq_Wdq = { "psadbw", "psadbw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pshufb_Pq_Qq = { "pshufb", "pshufb", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_pshufb_Vdq_Wdq = { "pshufb", "pshufb", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pshufd_Vdq_Wdq_Ib = { "pshufd", "pshufd", Vdq, Wdq, Ib, XX, IA_SSE2 },
+Ia_pshufhw_Vdq_Wdq_Ib = { "pshufhw", "pshufhw", Vdq, Wdq, Ib, XX, IA_SSE2 },
+Ia_pshuflw_Vdq_Wdq_Ib = { "pshuflw", "pshuflw", Vdq, Wdq, Ib, XX, IA_SSE2 },
+Ia_pshufw_Pq_Qq_Ib = { "pshufw", "pshufw", Pq, Qq, Ib, XX, IA_3DNOW | IA_SSE },
+Ia_psignb_Pq_Qq = { "psignb", "psignb", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_psignb_Vdq_Wdq = { "psignb", "psignb", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_psignd_Pq_Qq = { "psignd", "psignd", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_psignd_Vdq_Wdq = { "psignd", "psignd", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_psignw_Pq_Qq = { "psignw", "psignw", Pq, Qq, XX, XX, IA_SSSE3 },
+Ia_psignw_Vdq_Wdq = { "psignw", "psignw", Vdq, Wdq, XX, XX, IA_SSSE3 },
+Ia_pslld_Nq_Ib = { "pslld", "pslld", Nq, Ib, XX, XX, IA_MMX },
+Ia_pslld_Pq_Qq = { "pslld", "pslld", Pq, Qq, XX, XX, IA_MMX },
+Ia_pslld_Udq_Ib = { "pslld", "pslld", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_pslld_Vdq_Wdq = { "pslld", "pslld", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pslldq_Udq_Ib = { "pslldq", "pslldq", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psllq_Nq_Ib = { "psllq", "psllq", Nq, Ib, XX, XX, IA_MMX },
+Ia_psllq_Pq_Qq = { "psllq", "psllq", Pq, Qq, XX, XX, IA_MMX },
+Ia_psllq_Udq_Ib = { "psllq", "psllq", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psllq_Vdq_Wdq = { "psllq", "psllq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psllw_Nq_Ib = { "psllw", "psllw", Nq, Ib, XX, XX, IA_MMX },
+Ia_psllw_Pq_Qq = { "psllw", "psllw", Pq, Qq, XX, XX, IA_MMX },
+Ia_psllw_Udq_Ib = { "psllw", "psllw", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psllw_Vdq_Wdq = { "psllw", "psllw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psrad_Nq_Ib = { "psrad", "psrad", Nq, Ib, XX, XX, IA_MMX },
+Ia_psrad_Pq_Qq = { "psrad", "psrad", Pq, Qq, XX, XX, IA_MMX },
+Ia_psrad_Udq_Ib = { "psrad", "psrad", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psrad_Vdq_Wdq = { "psrad", "psrad", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psraw_Nq_Ib = { "psraw", "psraw", Nq, Ib, XX, XX, IA_MMX },
+Ia_psraw_Pq_Qq = { "psraw", "psraw", Pq, Qq, XX, XX, IA_MMX },
+Ia_psraw_Udq_Ib = { "psraw", "psraw", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psraw_Vdq_Wdq = { "psraw", "psraw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psrld_Nq_Ib = { "psrld", "psrld", Nq, Ib, XX, XX, IA_MMX },
+Ia_psrld_Pq_Qq = { "psrld", "psrld", Pq, Qq, XX, XX, IA_MMX },
+Ia_psrld_Udq_Ib = { "psrld", "psrld", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psrld_Vdq_Wdq = { "psrld", "psrld", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psrldq_Udq_Ib = { "psrldq", "psrldq", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psrlq_Nq_Ib = { "psrlq", "psrlq", Nq, Ib, XX, XX, IA_MMX },
+Ia_psrlq_Pq_Qq = { "psrlq", "psrlq", Pq, Qq, XX, XX, IA_MMX },
+Ia_psrlq_Udq_Ib = { "psrlq", "psrlq", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psrlq_Vdq_Wdq = { "psrlq", "psrlq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psrlw_Nq_Ib = { "psrlw", "psrlw", Nq, Ib, XX, XX, IA_MMX },
+Ia_psrlw_Pq_Qq = { "psrlw", "psrlw", Pq, Qq, XX, XX, IA_MMX },
+Ia_psrlw_Udq_Ib = { "psrlw", "psrlw", Udq, Ib, XX, XX, IA_SSE2 },
+Ia_psrlw_Vdq_Wdq = { "psrlw", "psrlw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubb_Pq_Qq = { "psubb", "psubb", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubb_Vdq_Wdq = { "psubb", "psubb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubd_Pq_Qq = { "psubd", "psubd", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubd_Vdq_Wdq = { "psubd", "psubd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubq_Pq_Qq = { "psubq", "psubq", Pq, Qq, XX, XX, IA_SSE2 },
+Ia_psubq_Vdq_Wdq = { "psubq", "psubq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubsb_Pq_Qq = { "psubsb", "psubsb", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubsb_Vdq_Wdq = { "psubsb", "psubsb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubsw_Pq_Qq = { "psubsw", "psubsw", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubsw_Vdq_Wdq = { "psubsw", "psubsw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubusb_Pq_Qq = { "psubusb", "psubusb", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubusb_Vdq_Wdq = { "psubusb", "psubusb", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubusw_Pq_Qq = { "psubusw", "psubusw", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubusw_Vdq_Wdq = { "psubusw", "psubusw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_psubw_Pq_Qq = { "psubw", "psubw", Pq, Qq, XX, XX, IA_MMX },
+Ia_psubw_Vdq_Wdq = { "psubw", "psubw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pswapd_Pq_Qq = { "pswapd", "pswapd", Pq, Qq, XX, XX, IA_3DNOW },
+Ia_ptest_Vdq_Wdq = { "ptest", "ptest", Vdq, Wdq, XX, XX, IA_SSE4_1 },
+Ia_punpckhbw_Pq_Qq = { "punpckhbw", "punpckhbw", Pq, Qq, XX, XX, IA_MMX },
+Ia_punpckhbw_Vdq_Wdq = { "punpckhbw", "punpckhbw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpckhdq_Pq_Qq = { "punpckhdq", "punpckhdq", Pq, Qq, XX, XX, IA_MMX },
+Ia_punpckhdq_Vdq_Wdq = { "punpckhdq", "punpckhdq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpckhqdq_Vdq_Wdq = { "punpckhqdq", "punpckhqdq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpckhwd_Pq_Qq = { "punpckhwd", "punpckhwd", Pq, Qq, XX, XX, IA_MMX },
+Ia_punpckhwd_Vdq_Wdq = { "punpckhwd", "punpckhwd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpcklbw_Pq_Qd = { "punpcklbw", "punpcklbw", Pq, Qd, XX, XX, IA_MMX },
+Ia_punpcklbw_Vdq_Wdq = { "punpcklbw", "punpcklbw", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpckldq_Pq_Qd = { "punpckldq", "punpckldq", Pq, Qd, XX, XX, IA_MMX },
+Ia_punpckldq_Vdq_Wdq = { "punpckldq", "punpckldq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpcklqdq_Vdq_Wdq = { "punpcklqdq", "punpcklqdq", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_punpcklwd_Pq_Qd = { "punpcklwd", "punpcklwd", Pq, Qd, XX, XX, IA_MMX },
+Ia_punpcklwd_Vdq_Wdq = { "punpcklwd", "punpcklwd", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_pushal = { "pusha", "pushal", XX, XX, XX, XX, 0 },
+Ia_pushaw = { "pusha", "pusha", XX, XX, XX, XX, 0 },
+Ia_pushfl = { "pushf", "pushfl", XX, XX, XX, XX, 0 },
+Ia_pushfq = { "pushf", "pushfq", XX, XX, XX, XX, 0 },
+Ia_pushfw = { "pushf", "pushf", XX, XX, XX, XX, 0 },
+Ia_pushl_CS = { "push", "pushl", CS, XX, XX, XX, 0 },
+Ia_pushl_DS = { "push", "pushl", DS, XX, XX, XX, 0 },
+Ia_pushl_Ed = { "push", "pushl", Ed, XX, XX, XX, 0 },
+Ia_pushl_ERX = { "push", "pushl", ERX, XX, XX, XX, 0 },
+Ia_pushl_ES = { "push", "pushl", ES, XX, XX, XX, 0 },
+Ia_pushl_FS = { "push", "pushl", FS, XX, XX, XX, 0 },
+Ia_pushl_GS = { "push", "pushl", GS, XX, XX, XX, 0 },
+Ia_pushl_Id = { "push", "pushl", Id, XX, XX, XX, 0 },
+Ia_pushl_sIb = { "push", "pushl", sIbd, XX, XX, XX, 0 },
+Ia_pushl_SS = { "push", "pushl", SS, XX, XX, XX, 0 },
+Ia_pushq_Eq = { "push", "pushq", Eq, XX, XX, XX, 0 },
+Ia_pushq_FS = { "push", "pushq", FS, XX, XX, XX, 0 },
+Ia_pushq_GS = { "push", "pushq", GS, XX, XX, XX, 0 },
+Ia_pushq_RRX = { "push", "pushq", RRX, XX, XX, XX, 0 },
+Ia_pushq_sIb = { "push", "pushq", sIbq, XX, XX, XX, 0 },
+Ia_pushq_sId = { "push", "pushq", sIdq, XX, XX, XX, 0 },
+Ia_pushw_CS = { "push", "pushw", CS, XX, XX, XX, 0 },
+Ia_pushw_DS = { "push", "pushw", DS, XX, XX, XX, 0 },
+Ia_pushw_ES = { "push", "pushw", ES, XX, XX, XX, 0 },
+Ia_pushw_Ew = { "push", "pushw", Ew, XX, XX, XX, 0 },
+Ia_pushw_FS = { "push", "pushw", FS, XX, XX, XX, 0 },
+Ia_pushw_GS = { "push", "pushw", GS, XX, XX, XX, 0 },
+Ia_pushw_Iw = { "push", "pushw", Iw, XX, XX, XX, 0 },
+Ia_pushw_RX = { "push", "pushw", RX, XX, XX, XX, 0 },
+Ia_pushw_sIb = { "push", "pushw", sIbw, XX, XX, XX, 0 },
+Ia_pushw_SS = { "push", "pushw", SS, XX, XX, XX, 0 },
+Ia_pxor_Pq_Qq = { "pxor", "pxor", Pq, Qq, XX, XX, IA_MMX },
+Ia_pxor_Vdq_Wdq = { "pxor", "pxor", Vdq, Wdq, XX, XX, IA_SSE2 },
+Ia_rclb_Eb_CL = { "rcl", "rclb", Eb, CL_Reg, XX, XX, 0 },
+Ia_rclb_Eb_I1 = { "rcl", "rclb", Eb, I1, XX, XX, 0 },
+Ia_rclb_Eb_Ib = { "rcl", "rclb", Eb, Ib, XX, XX, 0 },
+Ia_rcll_Ed_CL = { "rcl", "rcll", Ed, CL_Reg, XX, XX, 0 },
+Ia_rcll_Ed_I1 = { "rcl", "rcll", Ed, I1, XX, XX, 0 },
+Ia_rcll_Ed_Ib = { "rcl", "rcll", Ed, Ib, XX, XX, 0 },
+Ia_rclq_Eq_CL = { "rcl", "rclq", Eq, CL_Reg, XX, XX, 0 },
+Ia_rclq_Eq_I1 = { "rcl", "rclq", Eq, I1, XX, XX, 0 },
+Ia_rclq_Eq_Ib = { "rcl", "rclq", Eq, Ib, XX, XX, 0 },
+Ia_rclw_Ew_CL = { "rcl", "rclw", Ew, CL_Reg, XX, XX, 0 },
+Ia_rclw_Ew_I1 = { "rcl", "rclw", Ew, I1, XX, XX, 0 },
+Ia_rclw_Ew_Ib = { "rcl", "rclw", Ew, Ib, XX, XX, 0 },
+Ia_rcpps_Vps_Wps = { "rcpps", "rcpps", Vps, Wps, XX, XX, IA_SSE },
+Ia_rcpss_Vss_Wss = { "rcpss", "rcpss", Vss, Wss, XX, XX, IA_SSE },
+Ia_rcrb_Eb_CL = { "rcr", "rcrb", Eb, CL_Reg, XX, XX, 0 },
+Ia_rcrb_Eb_I1 = { "rcr", "rcrb", Eb, I1, XX, XX, 0 },
+Ia_rcrb_Eb_Ib = { "rcr", "rcrb", Eb, Ib, XX, XX, 0 },
+Ia_rcrl_Ed_CL = { "rcr", "rcrl", Ed, CL_Reg, XX, XX, 0 },
+Ia_rcrl_Ed_I1 = { "rcr", "rcrl", Ed, I1, XX, XX, 0 },
+Ia_rcrl_Ed_Ib = { "rcr", "rcrl", Ed, Ib, XX, XX, 0 },
+Ia_rcrq_Eq_CL = { "rcr", "rcrq", Eq, CL_Reg, XX, XX, 0 },
+Ia_rcrq_Eq_I1 = { "rcr", "rcrq", Eq, I1, XX, XX, 0 },
+Ia_rcrq_Eq_Ib = { "rcr", "rcrq", Eq, Ib, XX, XX, 0 },
+Ia_rcrw_Ew_CL = { "rcr", "rcrw", Ew, CL_Reg, XX, XX, 0 },
+Ia_rcrw_Ew_I1 = { "rcr", "rcrw", Ew, I1, XX, XX, 0 },
+Ia_rcrw_Ew_Ib = { "rcr", "rcrw", Ew, Ib, XX, XX, 0 },
+Ia_rdfsbase_Ry = { "rdfsbase", "rdfsbase", Ry, XX, XX, XX, IA_FSGSBASE },
+Ia_rdgsbase_Ry = { "rdgsbase", "rdgsbase", Ry, XX, XX, XX, IA_FSGSBASE },
+Ia_rdmsr = { "rdmsr", "rdmsr", XX, XX, XX, XX, IA_PENTIUM },
+Ia_rdpmc = { "rdpmc", "rdpmc", XX, XX, XX, XX, IA_P6 },
+Ia_rdrand_Ed = { "rdrand", "rdrandd", Ed, XX, XX, XX, IA_RDRAND },
+Ia_rdrand_Eq = { "rdrand", "rdrandq", Eq, XX, XX, XX, IA_RDRAND },
+Ia_rdrand_Ew = { "rdrand", "rdrandw", Ew, XX, XX, XX, IA_RDRAND },
+Ia_rdseed_Ed = { "rdseed", "rdseedd", Ed, XX, XX, XX, IA_RDSEED },
+Ia_rdseed_Eq = { "rdseed", "rdseedq", Eq, XX, XX, XX, IA_RDSEED },
+Ia_rdseed_Ew = { "rdseed", "rdseedw", Ew, XX, XX, XX, IA_RDSEED },
+Ia_rdtsc = { "rdtsc", "rdtsc", XX, XX, XX, XX, IA_PENTIUM },
+Ia_rdtscp = { "rdtscp", "rdtscp", XX, XX, XX, XX, IA_RDTSCP },
+Ia_ret = { "ret", "ret", XX, XX, XX, XX, 0 },
+Ia_ret_Iw = { "ret", "ret", Iw, XX, XX, XX, 0 },
+Ia_rolb_Eb_CL = { "rol", "rolb", Eb, CL_Reg, XX, XX, 0 },
+Ia_rolb_Eb_I1 = { "rol", "rolb", Eb, I1, XX, XX, 0 },
+Ia_rolb_Eb_Ib = { "rol", "rolb", Eb, Ib, XX, XX, 0 },
+Ia_roll_Ed_CL = { "rol", "roll", Ed, CL_Reg, XX, XX, 0 },
+Ia_roll_Ed_I1 = { "rol", "roll", Ed, I1, XX, XX, 0 },
+Ia_roll_Ed_Ib = { "rol", "roll", Ed, Ib, XX, XX, 0 },
+Ia_rolq_Eq_CL = { "rol", "rolq", Eq, CL_Reg, XX, XX, 0 },
+Ia_rolq_Eq_I1 = { "rol", "rolq", Eq, I1, XX, XX, 0 },
+Ia_rolq_Eq_Ib = { "rol", "rolq", Eq, Ib, XX, XX, 0 },
+Ia_rolw_Ew_CL = { "rol", "rolw", Ew, CL_Reg, XX, XX, 0 },
+Ia_rolw_Ew_I1 = { "rol", "rolw", Ew, I1, XX, XX, 0 },
+Ia_rolw_Ew_Ib = { "rol", "rolw", Ew, Ib, XX, XX, 0 },
+Ia_rorb_Eb_CL = { "ror", "rorb", Eb, CL_Reg, XX, XX, 0 },
+Ia_rorb_Eb_I1 = { "ror", "rorb", Eb, I1, XX, XX, 0 },
+Ia_rorb_Eb_Ib = { "ror", "rorb", Eb, Ib, XX, XX, 0 },
+Ia_rorl_Ed_CL = { "ror", "rorl", Ed, CL_Reg, XX, XX, 0 },
+Ia_rorl_Ed_I1 = { "ror", "rorl", Ed, I1, XX, XX, 0 },
+Ia_rorl_Ed_Ib = { "ror", "rorl", Ed, Ib, XX, XX, 0 },
+Ia_rorq_Eq_CL = { "ror", "rorq", Eq, CL_Reg, XX, XX, 0 },
+Ia_rorq_Eq_I1 = { "ror", "rorq", Eq, I1, XX, XX, 0 },
+Ia_rorq_Eq_Ib = { "ror", "rorq", Eq, Ib, XX, XX, 0 },
+Ia_rorw_Ew_CL = { "ror", "rorw", Ew, CL_Reg, XX, XX, 0 },
+Ia_rorw_Ew_I1 = { "ror", "rorw", Ew, I1, XX, XX, 0 },
+Ia_rorw_Ew_Ib = { "ror", "rorw", Ew, Ib, XX, XX, 0 },
+Ia_rorx_Gy_Ey_Ib = { "rorx", "rorx", Gy, Ey, Ib, XX, IA_BMI2 },
+Ia_roundpd_Vpd_Wpd_Ib = { "roundpd", "roundpd", Vpd, Wpd, Ib, XX, IA_SSE4_1 },
+Ia_roundps_Vps_Wps_Ib = { "roundps", "roundps", Vps, Wps, Ib, XX, IA_SSE4_1 },
+Ia_roundsd_Vsd_Wsd_Ib = { "roundsd", "roundsd", Vsd, Wsd, Ib, XX, IA_SSE4_1 },
+Ia_roundss_Vss_Wss_Ib = { "roundss", "roundss", Vss, Wss, Ib, XX, IA_SSE4_1 },
+Ia_rsm = { "rsm", "rsm", XX, XX, XX, XX, 0 },
+Ia_rsqrtps_Vps_Wps = { "rsqrtps", "rsqrtps", Vps, Wps, XX, XX, IA_SSE },
+Ia_rsqrtss_Vss_Wss = { "rsqrtss", "rsqrtss", Vss, Wss, XX, XX, IA_SSE },
+Ia_sahf = { "sahf", "sahf", XX, XX, XX, XX, 0 },
+Ia_salc = { "salc", "salc", XX, XX, XX, XX, 0 },
+Ia_sarb_Eb_CL = { "sar", "sarb", Eb, CL_Reg, XX, XX, 0 },
+Ia_sarb_Eb_I1 = { "sar", "sarb", Eb, I1, XX, XX, 0 },
+Ia_sarb_Eb_Ib = { "sar", "sarb", Eb, Ib, XX, XX, 0 },
+Ia_sarl_Ed_CL = { "sar", "sarl", Ed, CL_Reg, XX, XX, 0 },
+Ia_sarl_Ed_I1 = { "sar", "sarl", Ed, I1, XX, XX, 0 },
+Ia_sarl_Ed_Ib = { "sar", "sarl", Ed, Ib, XX, XX, 0 },
+Ia_sarq_Eq_CL = { "sar", "sarq", Eq, CL_Reg, XX, XX, 0 },
+Ia_sarq_Eq_I1 = { "sar", "sarq", Eq, I1, XX, XX, 0 },
+Ia_sarq_Eq_Ib = { "sar", "sarq", Eq, Ib, XX, XX, 0 },
+Ia_sarw_Ew_CL = { "sar", "sarw", Ew, CL_Reg, XX, XX, 0 },
+Ia_sarw_Ew_I1 = { "sar", "sarw", Ew, I1, XX, XX, 0 },
+Ia_sarw_Ew_Ib = { "sar", "sarw", Ew, Ib, XX, XX, 0 },
+Ia_sarx_Gy_Ey_By = { "sarx", "sarx", Gy, Ey, By, XX, IA_BMI2 },
+Ia_sbbb_AL_Ib = { "sbb", "sbbb", AL_Reg, Ib, XX, XX, 0 },
+Ia_sbbb_Eb_Gb = { "sbb", "sbbb", Eb, Gb, XX, XX, 0 },
+Ia_sbbb_Eb_Ib = { "sbb", "sbbb", Eb, Ib, XX, XX, 0 },
+Ia_sbbb_Gb_Eb = { "sbb", "sbbb", Gb, Eb, XX, XX, 0 },
+Ia_sbbl_EAX_Id = { "sbb", "sbbl", EAX_Reg, Id, XX, XX, 0 },
+Ia_sbbl_Ed_Gd = { "sbb", "sbbl", Ed, Gd, XX, XX, 0 },
+Ia_sbbl_Ed_Id = { "sbb", "sbbl", Ed, Id, XX, XX, 0 },
+Ia_sbbl_Ed_sIb = { "sbb", "sbbl", Ed, sIbd, XX, XX, 0 },
+Ia_sbbl_Gd_Ed = { "sbb", "sbbl", Gd, Ed, XX, XX, 0 },
+Ia_sbbq_Eq_Gq = { "sbb", "sbbq", Eq, Gq, XX, XX, 0 },
+Ia_sbbq_Eq_sIb = { "sbb", "sbbq", Eq, sIbq, XX, XX, 0 },
+Ia_sbbq_Eq_sId = { "sbb", "sbbq", Eq, sIdq, XX, XX, 0 },
+Ia_sbbq_Gq_Eq = { "sbb", "sbbq", Gq, Eq, XX, XX, 0 },
+Ia_sbbq_RAX_sId = { "sbb", "sbbq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_sbbw_AX_Iw = { "sbb", "sbbw", AX_Reg, Iw, XX, XX, 0 },
+Ia_sbbw_Ew_Gw = { "sbb", "sbbw", Ew, Gw, XX, XX, 0 },
+Ia_sbbw_Ew_Iw = { "sbb", "sbbw", Ew, Iw, XX, XX, 0 },
+Ia_sbbw_Ew_sIb = { "sbb", "sbbw", Ew, sIbw, XX, XX, 0 },
+Ia_sbbw_Gw_Ew = { "sbb", "sbbw", Gw, Ew, XX, XX, 0 },
+Ia_scasb_AL_Yb = { "scasb", "scasb", AL_Reg, Yb, XX, XX, 0 },
+Ia_scasl_EAX_Yd = { "scasd", "scasl", EAX_Reg, Yd, XX, XX, 0 },
+Ia_scasq_RAX_Yq = { "scasq", "scasq", RAX_Reg, Yq, XX, XX, 0 },
+Ia_scasw_AX_Yw = { "scasw", "scasw", AX_Reg, Yw, XX, XX, 0 },
+Ia_setb_Eb = { "setb", "setb", Eb, XX, XX, XX, 0 },
+Ia_setbe_Eb = { "setbe", "setbe", Eb, XX, XX, XX, 0 },
+Ia_setl_Eb = { "setl", "setl", Eb, XX, XX, XX, 0 },
+Ia_setle_Eb = { "setle", "setle", Eb, XX, XX, XX, 0 },
+Ia_setnb_Eb = { "setnb", "setnb", Eb, XX, XX, XX, 0 },
+Ia_setnbe_Eb = { "setnbe", "setnbe", Eb, XX, XX, XX, 0 },
+Ia_setnl_Eb = { "setnl", "setnl", Eb, XX, XX, XX, 0 },
+Ia_setnle_Eb = { "setnle", "setnle", Eb, XX, XX, XX, 0 },
+Ia_setno_Eb = { "setno", "setno", Eb, XX, XX, XX, 0 },
+Ia_setnp_Eb = { "setnp", "setnp", Eb, XX, XX, XX, 0 },
+Ia_setns_Eb = { "setns", "setns", Eb, XX, XX, XX, 0 },
+Ia_setnz_Eb = { "setnz", "setnz", Eb, XX, XX, XX, 0 },
+Ia_seto_Eb = { "seto", "seto", Eb, XX, XX, XX, 0 },
+Ia_setp_Eb = { "setp", "setp", Eb, XX, XX, XX, 0 },
+Ia_sets_Eb = { "sets", "sets", Eb, XX, XX, XX, 0 },
+Ia_setz_Eb = { "setz", "setz", Eb, XX, XX, XX, 0 },
+Ia_sfence = { "sfence", "sfence", XX, XX, XX, XX, IA_SSE },
+Ia_sgdt = { "sgdt", "sgdt", Ms, XX, XX, XX, 0 },
+Ia_sha1msg1_Vdq_Wdq = { "sha1msg1", "sha1msg1", Vdq, Wdq, XX, XX, IA_SHA },
+Ia_sha1msg2_Vdq_Wdq = { "sha1msg2", "sha1msg2", Vdq, Wdq, XX, XX, IA_SHA },
+Ia_sha1nexte_Vdq_Wdq = { "sha1nexte", "sha1nexte", Vdq, Wdq, XX, XX, IA_SHA },
+Ia_sha1rnds4_Vdq_Wdq_Ib = { "sha1rnds4", "sha1rnds4", Vdq, Wdq, Ib, XX, IA_SHA },
+Ia_sha256msg1_Vdq_Wdq = { "sha256msg1", "sha256msg1", Vdq, Wdq, XX, XX, IA_SHA },
+Ia_sha256msg2_Vdq_Wdq = { "sha256msg2", "sha256msg2", Vdq, Wdq, XX, XX, IA_SHA },
+Ia_sha256rnds2_Vdq_Wdq = { "sha256rnds2", "sha256rnds2", Vdq, Wdq, XX, XX, IA_SHA },
+Ia_shlb_Eb_CL = { "shl", "shlb", Eb, CL_Reg, XX, XX, 0 },
+Ia_shlb_Eb_I1 = { "shl", "shlb", Eb, I1, XX, XX, 0 },
+Ia_shlb_Eb_Ib = { "shl", "shlb", Eb, Ib, XX, XX, 0 },
+Ia_shldl_Ed_Gd_CL = { "shld", "shldl", Ed, Gd, CL_Reg, XX, 0 },
+Ia_shldl_Ed_Gd_Ib = { "shld", "shldl", Ed, Gd, Ib, XX, 0 },
+Ia_shldq_Eq_Gq_CL = { "shld", "shldq", Eq, Gq, CL_Reg, XX, 0 },
+Ia_shldq_Eq_Gq_Ib = { "shld", "shldq", Eq, Gq, Ib, XX, 0 },
+Ia_shldw_Ew_Gw_CL = { "shld", "shldw", Ew, Gw, CL_Reg, XX, 0 },
+Ia_shldw_Ew_Gw_Ib = { "shld", "shldw", Ew, Gw, Ib, XX, 0 },
+Ia_shll_Ed_CL = { "shl", "shll", Ed, CL_Reg, XX, XX, 0 },
+Ia_shll_Ed_I1 = { "shl", "shll", Ed, I1, XX, XX, 0 },
+Ia_shll_Ed_Ib = { "shl", "shll", Ed, Ib, XX, XX, 0 },
+Ia_shlq_Eq_CL = { "shl", "shlq", Eq, CL_Reg, XX, XX, 0 },
+Ia_shlq_Eq_I1 = { "shl", "shlq", Eq, I1, XX, XX, 0 },
+Ia_shlq_Eq_Ib = { "shl", "shlq", Eq, Ib, XX, XX, 0 },
+Ia_shlw_Ew_CL = { "shl", "shlw", Ew, CL_Reg, XX, XX, 0 },
+Ia_shlw_Ew_I1 = { "shl", "shlw", Ew, I1, XX, XX, 0 },
+Ia_shlw_Ew_Ib = { "shl", "shlw", Ew, Ib, XX, XX, 0 },
+Ia_shlx_Gy_Ey_By = { "shlx", "shlx", Gy, Ey, By, XX, IA_BMI2 },
+Ia_shrb_Eb_CL = { "shr", "shrb", Eb, CL_Reg, XX, XX, 0 },
+Ia_shrb_Eb_I1 = { "shr", "shrb", Eb, I1, XX, XX, 0 },
+Ia_shrb_Eb_Ib = { "shr", "shrb", Eb, Ib, XX, XX, 0 },
+Ia_shrdl_Ed_Gd_CL = { "shrd", "shrdl", Ed, Gd, CL_Reg, XX, 0 },
+Ia_shrdl_Ed_Gd_Ib = { "shrd", "shrdl", Ed, Gd, Ib, XX, 0 },
+Ia_shrdq_Eq_Gq_CL = { "shrd", "shrdq", Eq, Gq, CL_Reg, XX, 0 },
+Ia_shrdq_Eq_Gq_Ib = { "shrd", "shrdq", Eq, Gq, Ib, XX, 0 },
+Ia_shrdw_Ew_Gw_CL = { "shrd", "shrdw", Ew, Gw, CL_Reg, XX, 0 },
+Ia_shrdw_Ew_Gw_Ib = { "shrd", "shrdw", Ew, Gw, Ib, XX, 0 },
+Ia_shrl_Ed_CL = { "shr", "shrl", Ed, CL_Reg, XX, XX, 0 },
+Ia_shrl_Ed_I1 = { "shr", "shrl", Ed, I1, XX, XX, 0 },
+Ia_shrl_Ed_Ib = { "shr", "shrl", Ed, Ib, XX, XX, 0 },
+Ia_shrq_Eq_CL = { "shr", "shrq", Eq, CL_Reg, XX, XX, 0 },
+Ia_shrq_Eq_I1 = { "shr", "shrq", Eq, I1, XX, XX, 0 },
+Ia_shrq_Eq_Ib = { "shr", "shrq", Eq, Ib, XX, XX, 0 },
+Ia_shrw_Ew_CL = { "shr", "shrw", Ew, CL_Reg, XX, XX, 0 },
+Ia_shrw_Ew_I1 = { "shr", "shrw", Ew, I1, XX, XX, 0 },
+Ia_shrw_Ew_Ib = { "shr", "shrw", Ew, Ib, XX, XX, 0 },
+Ia_shrx_Gy_Ey_By = { "shrx", "shrx", Gy, Ey, By, XX, IA_BMI2 },
+Ia_shufpd_Vpd_Wpd_Ib = { "shufpd", "shufpd", Vpd, Wpd, Ib, XX, IA_SSE2 },
+Ia_shufps_Vps_Wps_Ib = { "shufps", "shufps", Vps, Wps, Ib, XX, IA_SSE },
+Ia_sidt = { "sidt", "sidt", Ms, XX, XX, XX, 0 },
+Ia_skinit = { "skinit", "skinit", RAX_Reg, XX, XX, XX, IA_SVM },
+Ia_sldt = { "sldt", "sldt", Ew, XX, XX, XX, 0 },
+Ia_smsw_Ew = { "smsw", "smsw", Ew, XX, XX, XX, 0 },
+Ia_sqrtpd_Vpd_Wpd = { "sqrtpd", "sqrtpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_sqrtps_Vps_Wps = { "sqrtps", "sqrtps", Vps, Wps, XX, XX, IA_SSE },
+Ia_sqrtsd_Vsd_Wsd = { "sqrtsd", "sqrtsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_sqrtss_Vss_Wss = { "sqrtss", "sqrtss", Vss, Wss, XX, XX, IA_SSE },
+Ia_stac = { "stac", "stac", XX, XX, XX, XX, IA_SMAP },
+Ia_stc = { "stc", "stc", XX, XX, XX, XX, 0 },
+Ia_std = { "std", "std", XX, XX, XX, XX, 0 },
+Ia_stgi = { "stgi", "stgi", XX, XX, XX, XX, IA_SVM },
+Ia_sti = { "sti", "sti", XX, XX, XX, XX, 0 },
+Ia_stmxcsr = { "stmxcsr", "stmxcsr", Md, XX, XX, XX, IA_SSE },
+Ia_stosb_Yb_AL = { "stosb", "stosb", Yb, AL_Reg, XX, XX, 0 },
+Ia_stosl_Yd_EAX = { "stosd", "stosl", Yd, EAX_Reg, XX, XX, 0 },
+Ia_stosq_Yq_RAX = { "stosq", "stosq", Yq, RAX_Reg, XX, XX, 0 },
+Ia_stosw_Yw_AX = { "stosw", "stosw", Yw, AX_Reg, XX, XX, 0 },
+Ia_str = { "str", "str", Ew, XX, XX, XX, 0 },
+Ia_subb_AL_Ib = { "sub", "subb", AL_Reg, Ib, XX, XX, 0 },
+Ia_subb_Eb_Gb = { "sub", "subb", Eb, Gb, XX, XX, 0 },
+Ia_subb_Eb_Ib = { "sub", "subb", Eb, Ib, XX, XX, 0 },
+Ia_subb_Gb_Eb = { "sub", "subb", Gb, Eb, XX, XX, 0 },
+Ia_subl_EAX_Id = { "sub", "subl", EAX_Reg, Id, XX, XX, 0 },
+Ia_subl_Ed_Gd = { "sub", "subl", Ed, Gd, XX, XX, 0 },
+Ia_subl_Ed_Id = { "sub", "subl", Ed, Id, XX, XX, 0 },
+Ia_subl_Ed_sIb = { "sub", "subl", Ed, sIbd, XX, XX, 0 },
+Ia_subl_Gd_Ed = { "sub", "subl", Gd, Ed, XX, XX, 0 },
+Ia_subpd_Vpd_Wpd = { "subpd", "subpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_subps_Vps_Wps = { "subps", "subps", Vps, Wps, XX, XX, IA_SSE },
+Ia_subq_Eq_Gq = { "sub", "subq", Eq, Gq, XX, XX, 0 },
+Ia_subq_Eq_sIb = { "sub", "subq", Eq, sIbq, XX, XX, 0 },
+Ia_subq_Eq_sId = { "sub", "subq", Eq, sIdq, XX, XX, 0 },
+Ia_subq_Gq_Eq = { "sub", "subq", Gq, Eq, XX, XX, 0 },
+Ia_subq_RAX_sId = { "sub", "subq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_subsd_Vsd_Wsd = { "subsd", "subsd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_subss_Vss_Wss = { "subss", "subss", Vss, Wss, XX, XX, IA_SSE },
+Ia_subw_AX_Iw = { "sub", "subw", AX_Reg, Iw, XX, XX, 0 },
+Ia_subw_Ew_Gw = { "sub", "subw", Ew, Gw, XX, XX, 0 },
+Ia_subw_Ew_Iw = { "sub", "subw", Ew, Iw, XX, XX, 0 },
+Ia_subw_Ew_sIb = { "sub", "subw", Ew, sIbw, XX, XX, 0 },
+Ia_subw_Gw_Ew = { "sub", "subw", Gw, Ew, XX, XX, 0 },
+Ia_swapgs = { "swapgs", "swapgs", XX, XX, XX, XX, 0 },
+Ia_syscall = { "syscall", "syscall", XX, XX, XX, XX, 0 },
+Ia_sysenter = { "sysenter", "sysenter", XX, XX, XX, XX, IA_SYSENTER_SYSEXIT },
+Ia_sysexit = { "sysexit", "sysexit", XX, XX, XX, XX, IA_SYSENTER_SYSEXIT },
+Ia_sysret = { "sysret", "sysret", XX, XX, XX, XX, 0 },
+Ia_t1mskc_By_Ey = { "t1mskc", "t1mskc", Gy, By, Ey, XX, IA_TBM },
+Ia_testb_AL_Ib = { "test", "testb", AL_Reg, Ib, XX, XX, 0 },
+Ia_testb_Eb_Gb = { "test", "testb", Eb, Gb, XX, XX, 0 },
+Ia_testb_Eb_Ib = { "test", "testb", Eb, Ib, XX, XX, 0 },
+Ia_testl_EAX_Id = { "test", "testl", EAX_Reg, Id, XX, XX, 0 },
+Ia_testl_Ed_Gd = { "test", "testl", Ed, Gd, XX, XX, 0 },
+Ia_testl_Ed_Id = { "test", "testl", Ed, Id, XX, XX, 0 },
+Ia_testq_Eq_Gq = { "test", "testq", Eq, Gq, XX, XX, 0 },
+Ia_testq_Eq_sId = { "test", "testq", Eq, sIdq, XX, XX, 0 },
+Ia_testq_RAX_sId = { "test", "testq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_testw_AX_Iw = { "test", "testw", AX_Reg, Iw, XX, XX, 0 },
+Ia_testw_Ew_Gw = { "test", "testw", Ew, Gw, XX, XX, 0 },
+Ia_testw_Ew_Iw = { "test", "testw", Ew, Iw, XX, XX, 0 },
+Ia_tzcntl_Gd_Ed = { "tzcnt", "tzcntl", Gd, Ed, XX, XX, IA_BMI1 },
+Ia_tzcntq_Gq_Eq = { "tzcnt", "tzcntq", Gq, Eq, XX, XX, IA_BMI1 },
+Ia_tzcntw_Gw_Ew = { "tzcnt", "tzcntw", Gw, Ew, XX, XX, IA_BMI1 },
+Ia_tzmsk_By_Ey = { "tzmsk", "tzmsk", Gy, By, Ey, XX, IA_TBM },
+Ia_ucomisd_Vsd_Wsd = { "ucomisd", "ucomisd", Vsd, Wsd, XX, XX, IA_SSE2 },
+Ia_ucomiss_Vss_Wss = { "ucomiss", "ucomiss", Vss, Wss, XX, XX, IA_SSE },
+Ia_ud2a = { "ud2a", "ud2a", XX, XX, XX, XX, 0 },
+Ia_ud2b = { "ud2b", "ud2b", XX, XX, XX, XX, 0 },
+Ia_unpckhpd_Vpd_Wpd = { "unpckhpd", "unpckhpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_unpckhps_Vps_Wps = { "unpckhps", "unpckhps", Vps, Wps, XX, XX, IA_SSE },
+Ia_unpcklpd_Vpd_Wpd = { "unpcklpd", "unpcklpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_unpcklps_Vps_Wps = { "unpcklps", "unpcklps", Vps, Wps, XX, XX, IA_SSE },
+Ia_vaddpd_Vpd_Hpd_Wpd = { "vaddpd", "vaddpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vaddps_Vps_Hps_Wps = { "vaddps", "vaddps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vaddsd_Vsd_Hpd_Wsd = { "vaddsd", "vaddsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vaddss_Vss_Hps_Wss = { "vaddss", "vaddss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vaddsubpd_Vpd_Hpd_Wpd = { "vaddsubpd", "vaddsubpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vaddsubps_Vps_Hps_Wps = { "vaddsubps", "vaddsubps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vaesdec_Vdq_Hdq_Wdq = { "vaesdec", "vaesdec", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vaesdeclast_Vdq_Hdq_Wdq = { "vaesdeclast", "vaesdeclast", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vaesenc_Vdq_Hdq_Wdq = { "vaesenc", "vaesenc", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vaesenclast_Vdq_Hdq_Wdq = { "vaesenclast", "vaesenclast", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vaesimc_Vdq_Wdq = { "vaesimc", "vaesimc", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vaeskeygenassist_Vdq_Wdq_Ib = { "vaeskeygenassist", "vaeskeygenassist", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vandnpd_Vpd_Hpd_Wpd = { "vandnpd", "vandnpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vandnps_Vps_Hps_Wps = { "vandnps", "vandnps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vandpd_Vpd_Hpd_Wpd = { "vandpd", "vandpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vandps_Vps_Hps_Wps = { "vandps", "vandps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vblendpd_Vpd_Hpd_Wpd_Ib = { "vblendpd", "vblendpd", Vpd, Hpd, Wpd, Ib, IA_AVX },
+Ia_vblendps_Vps_Hps_Wps_Ib = { "vblendps", "vblendps", Vps, Hps, Wps, Ib, IA_AVX },
+Ia_vblendvpd_Vpd_Hpd_Wpd_Ib = { "vblendvpd", "vblendvpd", Vpd, Hpd, Wpd, VIb, IA_AVX },
+Ia_vblendvps_Vps_Hps_Wps_Ib = { "vblendvps", "vblendvps", Vps, Hps, Wps, VIb, IA_AVX },
+Ia_vbroadcastf128_Vdq_Mdq = { "vbroadcastf128", "vbroadcastf128", Vdq, Mdq, XX, XX, IA_AVX },
+Ia_vbroadcasti128_Vdq_Mdq = { "vbroadcasti128", "vbroadcasti128", Vdq, Mdq, XX, XX, IA_AVX2 },
+Ia_vbroadcastsd_Vpd_Wsd = { "vbroadcastsd", "vbroadcastsd", Vpd, Wsd, XX, XX, IA_AVX },
+Ia_vbroadcastss_Vps_Wss = { "vbroadcastss", "vbroadcastss", Vps, Wss, XX, XX, IA_AVX },
+Ia_vcmppd_Vpd_Hpd_Wpd_Ib = { "vcmppd", "vcmppd", Vpd, Hpd, Wpd, Ib, IA_AVX },
+Ia_vcmpps_Vps_Hps_Wps_Ib = { "vcmpps", "vcmpps", Vps, Hps, Wps, Ib, IA_AVX },
+Ia_vcmpsd_Vsd_Hpd_Wsd_Ib = { "vcmpsd", "vcmpsd", Vsd, Hpd, Wsd, Ib, IA_AVX },
+Ia_vcmpss_Vss_Hps_Wss_Ib = { "vcmpss", "vcmpss", Vss, Hps, Wss, Ib, IA_AVX },
+Ia_vcomisd_Vsd_Wsd = { "vcomisd", "vcomisd", Vsd, Wsd, XX, XX, IA_AVX },
+Ia_vcomiss_Vss_Wss = { "vcomiss", "vcomiss", Vss, Wss, XX, XX, IA_AVX },
+Ia_vcvtdq2pd_Vpd_Wq = { "vcvtdq2pd", "vcvtdq2pd", Vpd, Wq, XX, XX, IA_AVX },
+Ia_vcvtdq2ps_Vps_Wdq = { "vcvtdq2ps", "vcvtdq2ps", Vps, Wdq, XX, XX, IA_AVX },
+Ia_vcvtpd2dq_Vq_Wpd = { "vcvtpd2dq", "vcvtpd2dq", Vq, Wpd, XX, XX, IA_AVX },
+Ia_vcvtpd2ps_Vps_Wpd = { "vcvtpd2ps", "vcvtpd2ps", Vps, Wpd, XX, XX, IA_AVX },
+Ia_vcvtph2ps_Vps_Wq = { "vcvtph2ps", "vcvtph2ps", Vps, Wq, XX, XX, IA_AVX_F16C },
+Ia_vcvtps2dq_Vdq_Wps = { "vcvtps2dq", "vcvtps2dq", Vdq, Wps, XX, XX, IA_AVX },
+Ia_vcvtps2pd_Vpd_Wps = { "vcvtps2pd", "vcvtps2pd", Vpd, Wps, XX, XX, IA_AVX },
+Ia_vcvtps2ph_Wq_Vps_Ib = { "vcvtps2ph", "vcvtps2ph", Wq, Vps, Ib, XX, IA_AVX_F16C },
+Ia_vcvtsd2si_Gy_Wsd = { "vcvtsd2si", "vcvtsd2si", Gy, Wsd, XX, XX, IA_AVX },
+Ia_vcvtsd2ss_Vss_Hps_Wsd = { "vcvtsd2ss", "vcvtsd2ss", Vss, Hps, Wsd, XX, IA_AVX },
+Ia_vcvtsi2sd_Vsd_Hpd_Ey = { "vcvtsi2sd", "vcvtsi2sd", Vsd, Hpd, Ey, XX, IA_AVX },
+Ia_vcvtsi2ss_Vss_Hps_Ey = { "vcvtsi2ss", "vcvtsi2ss", Vss, Hps, Ey, XX, IA_AVX },
+Ia_vcvtss2sd_Vsd_Hpd_Wss = { "vcvtss2sd", "vcvtss2sd", Vsd, Hpd, Wss, XX, IA_AVX },
+Ia_vcvtss2si_Gy_Wss = { "vcvtss2si", "vcvtss2si", Gy, Wss, XX, XX, IA_AVX },
+Ia_vcvttpd2dq_Vq_Wpd = { "vcvttpd2dq", "vcvttpd2dq", Vq, Wpd, XX, XX, IA_AVX },
+Ia_vcvttps2dq_Vdq_Wps = { "vcvttps2dq", "vcvttps2dq", Vdq, Wps, XX, XX, IA_AVX },
+Ia_vcvttsd2si_Gy_Wsd = { "vcvttsd2si", "vcvttsd2si", Gy, Wsd, XX, XX, IA_AVX },
+Ia_vcvttss2si_Gy_Wss = { "vcvttss2si", "vcvttss2si", Gy, Wss, XX, XX, IA_AVX },
+Ia_vdivpd_Vpd_Hpd_Wpd = { "vdivpd", "vdivpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vdivps_Vps_Hps_Wps = { "vdivps", "vdivps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vdivsd_Vsd_Hpd_Wsd = { "vdivsd", "vdivsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vdivss_Vss_Hps_Wss = { "vdivss", "vdivss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vdppd_Vpd_Hpd_Wpd_Ib = { "vdppd", "vdppd", Vpd, Hpd, Wpd, Ib, IA_AVX },
+Ia_vdpps_Vps_Hps_Wps_Ib = { "vdpps", "vdpps", Vps, Hps, Wps, Ib, IA_AVX },
+Ia_verr = { "verr", "verr", Ew, XX, XX, XX, 0 },
+Ia_verw = { "verw", "verw", Ew, XX, XX, XX, 0 },
+Ia_vextractf128_Wdq_Vdq_Ib = { "vextractf128", "vextractf128", Wdq, Vdq, Ib, XX, IA_AVX },
+Ia_vextracti128_Wdq_Vdq_Ib = { "vextracti128", "vextracti128", Wdq, Vdq, Ib, XX, IA_AVX2 },
+Ia_vextractps_Ed_Vdq_Ib = { "vextractps", "vextractps", Ed, Vdq, Ib, XX, IA_AVX },
+Ia_vfmadd132pd_Vpd_Hpd_Wpd = { "vfmadd132pd", "vfmadd132pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmadd132ps_Vps_Hps_Wps = { "vfmadd132ps", "vfmadd132ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmadd132sd_Vpd_Hsd_Wsd = { "vfmadd132sd", "vfmadd132sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfmadd132ss_Vps_Hss_Wss = { "vfmadd132ss", "vfmadd132ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfmadd213pd_Vpd_Hpd_Wpd = { "vfmadd213pd", "vfmadd213pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmadd213ps_Vps_Hps_Wps = { "vfmadd213ps", "vfmadd213ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmadd213sd_Vpd_Hsd_Wsd = { "vfmadd213sd", "vfmadd213sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfmadd213ss_Vps_Hss_Wss = { "vfmadd213ss", "vfmadd213ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfmadd231pd_Vpd_Hpd_Wpd = { "vfmadd231pd", "vfmadd231pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmadd231ps_Vps_Hps_Wps = { "vfmadd231ps", "vfmadd231ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmadd231sd_Vpd_Hsd_Wsd = { "vfmadd231sd", "vfmadd231sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfmadd231ss_Vps_Hss_Wss = { "vfmadd231ss", "vfmadd231ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfmaddpd_Vpd_Hpd_VIb_Wpd = { "vfmaddpd", "vfmaddpd", Vpd, Hpd, VIb, Wpd, IA_FMA4 },
+Ia_vfmaddpd_Vpd_Hpd_Wpd_VIb = { "vfmaddpd", "vfmaddpd", Vpd, Hpd, Wpd, VIb, IA_FMA4 },
+Ia_vfmaddps_Vps_Hps_VIb_Wps = { "vfmaddps", "vfmaddps", Vps, Hps, VIb, Wps, IA_FMA4 },
+Ia_vfmaddps_Vps_Hps_Wps_VIb = { "vfmaddps", "vfmaddps", Vps, Hps, Wps, VIb, IA_FMA4 },
+Ia_vfmaddsd_Vsd_Hsd_VIb_Wsd = { "vfmaddsd", "vfmaddsd", Vsd, Hsd, VIb, Wsd, IA_FMA4 },
+Ia_vfmaddsd_Vsd_Hsd_Wsd_VIb = { "vfmaddsd", "vfmaddsd", Vsd, Hsd, Wsd, VIb, IA_FMA4 },
+Ia_vfmaddss_Vss_Hss_VIb_Wss = { "vfmaddss", "vfmaddss", Vss, Hss, VIb, Wss, IA_FMA4 },
+Ia_vfmaddss_Vss_Hss_Wss_VIb = { "vfmaddss", "vfmaddss", Vss, Hss, Wss, VIb, IA_FMA4 },
+Ia_vfmaddsub132pd_Vpd_Hpd_Wpd = { "vfmaddsub132pd", "vfmaddsub132pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmaddsub132ps_Vps_Hps_Wps = { "vfmaddsub132ps", "vfmaddsub132ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmaddsub213pd_Vpd_Hpd_Wpd = { "vfmaddsub213pd", "vfmaddsub213pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmaddsub213ps_Vps_Hps_Wps = { "vfmaddsub213ps", "vfmaddsub213ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmaddsub231pd_Vpd_Hpd_Wpd = { "vfmaddsub231pd", "vfmaddsub231pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmaddsub231ps_Vps_Hps_Wps = { "vfmaddsub231ps", "vfmaddsub231ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmaddsubpd_Vpd_Hpd_VIb_Wpd = { "vfmaddsubpd", "vfmaddsubpd", Vpd, Hpd, VIb, Wpd, IA_FMA4 },
+Ia_vfmaddsubpd_Vpd_Hpd_Wpd_VIb = { "vfmaddsubpd", "vfmaddsubpd", Vpd, Hpd, Wpd, VIb, IA_FMA4 },
+Ia_vfmaddsubps_Vps_Hps_VIb_Wps = { "vfmaddsubps", "vfmaddsubps", Vps, Hps, VIb, Wps, IA_FMA4 },
+Ia_vfmaddsubps_Vps_Hps_Wps_VIb = { "vfmaddsubps", "vfmaddsubps", Vps, Hps, Wps, VIb, IA_FMA4 },
+Ia_vfmsub132pd_Vpd_Hpd_Wpd = { "vfmsub132pd", "vfmsub132pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmsub132ps_Vps_Hps_Wps = { "vfmsub132ps", "vfmsub132ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmsub132sd_Vpd_Hsd_Wsd = { "vfmsub132sd", "vfmsub132sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfmsub132ss_Vps_Hss_Wss = { "vfmsub132ss", "vfmsub132ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfmsub213pd_Vpd_Hpd_Wpd = { "vfmsub213pd", "vfmsub213pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmsub213ps_Vps_Hps_Wps = { "vfmsub213ps", "vfmsub213ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmsub213sd_Vpd_Hsd_Wsd = { "vfmsub213sd", "vfmsub213sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfmsub213ss_Vps_Hss_Wss = { "vfmsub213ss", "vfmsub213ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfmsub231pd_Vpd_Hpd_Wpd = { "vfmsub231pd", "vfmsub231pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmsub231ps_Vps_Hps_Wps = { "vfmsub231ps", "vfmsub231ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmsub231sd_Vpd_Hsd_Wsd = { "vfmsub231sd", "vfmsub231sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfmsub231ss_Vps_Hss_Wss = { "vfmsub231ss", "vfmsub231ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfmsubadd132pd_Vpd_Hpd_Wpd = { "vfmsubadd132pd", "vfmsubadd132pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmsubadd132ps_Vps_Hps_Wps = { "vfmsubadd132ps", "vfmsubadd132ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmsubadd213pd_Vpd_Hpd_Wpd = { "vfmsubadd213pd", "vfmsubadd213pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmsubadd213ps_Vps_Hps_Wps = { "vfmsubadd213ps", "vfmsubadd213ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmsubadd231pd_Vpd_Hpd_Wpd = { "vfmsubadd231pd", "vfmsubadd231pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfmsubadd231ps_Vps_Hps_Wps = { "vfmsubadd231ps", "vfmsubadd231ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfmsubaddpd_Vpd_Hpd_VIb_Wpd = { "vfmsubaddpd", "vfmsubaddpd", Vpd, Hpd, VIb, Wpd, IA_FMA4 },
+Ia_vfmsubaddpd_Vpd_Hpd_Wpd_VIb = { "vfmsubaddpd", "vfmsubaddpd", Vpd, Hpd, Wpd, VIb, IA_FMA4 },
+Ia_vfmsubaddps_Vps_Hps_VIb_Wps = { "vfmsubaddps", "vfmsubaddps", Vps, Hps, VIb, Wps, IA_FMA4 },
+Ia_vfmsubaddps_Vps_Hps_Wps_VIb = { "vfmsubaddps", "vfmsubaddps", Vps, Hps, Wps, VIb, IA_FMA4 },
+Ia_vfmsubpd_Vpd_Hpd_VIb_Wpd = { "vfmsubpd", "vfmsubpd", Vpd, Hpd, VIb, Wpd, IA_FMA4 },
+Ia_vfmsubpd_Vpd_Hpd_Wpd_VIb = { "vfmsubpd", "vfmsubpd", Vpd, Hpd, Wpd, VIb, IA_FMA4 },
+Ia_vfmsubps_Vps_Hps_VIb_Wps = { "vfmsubps", "vfmsubps", Vps, Hps, VIb, Wps, IA_FMA4 },
+Ia_vfmsubps_Vps_Hps_Wps_VIb = { "vfmsubps", "vfmsubps", Vps, Hps, Wps, VIb, IA_FMA4 },
+Ia_vfmsubsd_Vsd_Hsd_VIb_Wsd = { "vfmsubsd", "vfmsubsd", Vsd, Hsd, VIb, Wsd, IA_FMA4 },
+Ia_vfmsubsd_Vsd_Hsd_Wsd_VIb = { "vfmsubsd", "vfmsubsd", Vsd, Hsd, Wsd, VIb, IA_FMA4 },
+Ia_vfmsubss_Vss_Hss_VIb_Wss = { "vfmsubss", "vfmsubss", Vss, Hss, VIb, Wss, IA_FMA4 },
+Ia_vfmsubss_Vss_Hss_Wss_VIb = { "vfmsubss", "vfmsubss", Vss, Hss, Wss, VIb, IA_FMA4 },
+Ia_vfnmadd132pd_Vpd_Hpd_Wpd = { "vfnmadd132pd", "vfnmadd132pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfnmadd132ps_Vps_Hps_Wps = { "vfnmadd132ps", "vfnmadd132ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfnmadd132sd_Vpd_Hsd_Wsd = { "vfnmadd132sd", "vfnmadd132sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfnmadd132ss_Vps_Hss_Wss = { "vfnmadd132ss", "vfnmadd132ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfnmadd213pd_Vpd_Hpd_Wpd = { "vfnmadd213pd", "vfnmadd213pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfnmadd213ps_Vps_Hps_Wps = { "vfnmadd213ps", "vfnmadd213ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfnmadd213sd_Vpd_Hsd_Wsd = { "vfnmadd213sd", "vfnmadd213sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfnmadd213ss_Vps_Hss_Wss = { "vfnmadd213ss", "vfnmadd213ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfnmadd231pd_Vpd_Hpd_Wpd = { "vfnmadd231pd", "vfnmadd231pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfnmadd231ps_Vps_Hps_Wps = { "vfnmadd231ps", "vfnmadd231ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfnmadd231sd_Vpd_Hsd_Wsd = { "vfnmadd231sd", "vfnmadd231sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfnmadd231ss_Vps_Hss_Wss = { "vfnmadd231ss", "vfnmadd231ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfnmaddpd_Vpd_Hpd_VIb_Wpd = { "vfnmaddpd", "vfnmaddpd", Vpd, Hpd, VIb, Wpd, IA_FMA4 },
+Ia_vfnmaddpd_Vpd_Hpd_Wpd_VIb = { "vfnmaddpd", "vfnmaddpd", Vpd, Hpd, Wpd, VIb, IA_FMA4 },
+Ia_vfnmaddps_Vps_Hps_VIb_Wps = { "vfnmaddps", "vfnmaddps", Vps, Hps, VIb, Wps, IA_FMA4 },
+Ia_vfnmaddps_Vps_Hps_Wps_VIb = { "vfnmaddps", "vfnmaddps", Vps, Hps, Wps, VIb, IA_FMA4 },
+Ia_vfnmaddsd_Vsd_Hsd_VIb_Wsd = { "vfnmaddsd", "vfnmaddsd", Vsd, Hsd, VIb, Wsd, IA_FMA4 },
+Ia_vfnmaddsd_Vsd_Hsd_Wsd_VIb = { "vfnmaddsd", "vfnmaddsd", Vsd, Hsd, Wsd, VIb, IA_FMA4 },
+Ia_vfnmaddss_Vss_Hss_VIb_Wss = { "vfnmaddss", "vfnmaddss", Vss, Hss, VIb, Wss, IA_FMA4 },
+Ia_vfnmaddss_Vss_Hss_Wss_VIb = { "vfnmaddss", "vfnmaddss", Vss, Hss, Wss, VIb, IA_FMA4 },
+Ia_vfnmsub132pd_Vpd_Hpd_Wpd = { "vfnmsub132pd", "vfnmsub132pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfnmsub132ps_Vps_Hps_Wps = { "vfnmsub132ps", "vfnmsub132ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfnmsub132sd_Vpd_Hsd_Wsd = { "vfnmsub132sd", "vfnmsub132sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfnmsub132ss_Vps_Hss_Wss = { "vfnmsub132ss", "vfnmsub132ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfnmsub213pd_Vpd_Hpd_Wpd = { "vfnmsub213pd", "vfnmsub213pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfnmsub213ps_Vps_Hps_Wps = { "vfnmsub213ps", "vfnmsub213ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfnmsub213sd_Vpd_Hsd_Wsd = { "vfnmsub213sd", "vfnmsub213sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfnmsub213ss_Vps_Hss_Wss = { "vfnmsub213ss", "vfnmsub213ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfnmsub231pd_Vpd_Hpd_Wpd = { "vfnmsub231pd", "vfnmsub231pd", Vpd, Hpd, Wpd, XX, IA_AVX_FMA },
+Ia_vfnmsub231ps_Vps_Hps_Wps = { "vfnmsub231ps", "vfnmsub231ps", Vps, Hps, Wps, XX, IA_AVX_FMA },
+Ia_vfnmsub231sd_Vpd_Hsd_Wsd = { "vfnmsub231sd", "vfnmsub231sd", Vpd, Hsd, Wsd, XX, IA_AVX_FMA },
+Ia_vfnmsub231ss_Vps_Hss_Wss = { "vfnmsub231ss", "vfnmsub231ss", Vps, Hss, Wss, XX, IA_AVX_FMA },
+Ia_vfnmsubpd_Vpd_Hpd_VIb_Wpd = { "vfnmsubpd", "vfnmsubpd", Vpd, Hpd, VIb, Wpd, IA_FMA4 },
+Ia_vfnmsubpd_Vpd_Hpd_Wpd_VIb = { "vfnmsubpd", "vfnmsubpd", Vpd, Hpd, Wpd, VIb, IA_FMA4 },
+Ia_vfnmsubps_Vps_Hps_VIb_Wps = { "vfnmsubps", "vfnmsubps", Vps, Hps, VIb, Wps, IA_FMA4 },
+Ia_vfnmsubps_Vps_Hps_Wps_VIb = { "vfnmsubps", "vfnmsubps", Vps, Hps, Wps, VIb, IA_FMA4 },
+Ia_vfnmsubsd_Vsd_Hsd_VIb_Wsd = { "vfnmsubsd", "vfnmsubsd", Vsd, Hsd, VIb, Wsd, IA_FMA4 },
+Ia_vfnmsubsd_Vsd_Hsd_Wsd_VIb = { "vfnmsubsd", "vfnmsubsd", Vsd, Hsd, Wsd, VIb, IA_FMA4 },
+Ia_vfnmsubss_Vss_Hss_VIb_Wss = { "vfnmsubss", "vfnmsubss", Vss, Hss, VIb, Wss, IA_FMA4 },
+Ia_vfnmsubss_Vss_Hss_Wss_VIb = { "vfnmsubss", "vfnmsubss", Vss, Hss, Wss, VIb, IA_FMA4 },
+Ia_vgatherdd_Vdq_VSib_Hdq = { "vgatherdd", "vgatherdd", Vdq, VSib, Hdq, XX, IA_AVX2 },
+Ia_vgatherdpd_Vpd_VSib_Hpd = { "vgatherdpd", "vgatherdpd", Vpd, VSib, Hpd, XX, IA_AVX2 },
+Ia_vgatherdps_Vps_VSib_Hps = { "vgatherdps", "vgatherdps", Vps, VSib, Hps, XX, IA_AVX2 },
+Ia_vgatherdq_Vdq_VSib_Hdq = { "vgatherdq", "vgatherdq", Vdq, VSib, Hdq, XX, IA_AVX2 },
+Ia_vgatherqd_Vdq_VSib_Hdq = { "vgatherqd", "vgatherqd", Vdq, VSib, Hdq, XX, IA_AVX2 },
+Ia_vgatherqpd_Vpd_VSib_Hpd = { "vgatherqpd", "vgatherqpd", Vpd, VSib, Hpd, XX, IA_AVX2 },
+Ia_vgatherqps_Vps_VSib_Hps = { "vgatherqps", "vgatherqps", Vps, VSib, Hps, XX, IA_AVX2 },
+Ia_vgatherqq_Vdq_VSib_Hdq = { "vgatherqq", "vgatherqq", Vdq, VSib, Hdq, XX, IA_AVX2 },
+Ia_vhaddpd_Vpd_Hpd_Wpd = { "vhaddpd", "vhaddpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vhaddps_Vps_Hps_Wps = { "vhaddps", "vhaddps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vhsubpd_Vpd_Hpd_Wpd = { "vhsubpd", "vhsubpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vhsubps_Vps_Hps_Wps = { "vhsubps", "vhsubps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vinsertf128_Vdq_Hdq_Wdq_Ib = { "vinsertf128", "vinsertf128", Vdq, Hdq, Wdq, Ib, IA_AVX },
+Ia_vinserti128_Vdq_Hdq_Wdq_Ib = { "vinserti128", "vinserti128", Vdq, Hdq, Wdq, Ib, IA_AVX2 },
+Ia_vinsertps_Vps_Hps_Wss_Ib = { "vinsertps", "vinsertps", Vps, Hps, Wss, Ib, IA_AVX },
+Ia_vlddqu_Vdq_Mdq = { "vlddqu", "vlddqu", Vdq, Mdq, XX, XX, IA_AVX },
+Ia_vldmxcsr = { "vldmxcsr", "vldmxcsr", Md, XX, XX, XX, IA_AVX },
+Ia_vmaskmovd_Mdq_Hdq_Vdq = { "vmaskmovd", "vmaskmovd", Mdq, Hdq, Vdq, XX, IA_AVX2 },
+Ia_vmaskmovd_Vdq_Hdq_Mdq = { "vmaskmovd", "vmaskmovd", Vdq, Hdq, Mdq, XX, IA_AVX2 },
+Ia_vmaskmovdqu_Vdq_Udq = { "vmaskmovdqu", "vmaskmovdqu", Vdq, Udq, XX, XX, IA_AVX },
+Ia_vmaskmovpd_Mpd_Hpd_Vpd = { "vmaskmovpd", "vmaskmovpd", Mpd, Hpd, Vpd, XX, IA_AVX },
+Ia_vmaskmovpd_Vpd_Hpd_Mpd = { "vmaskmovpd", "vmaskmovpd", Vpd, Hpd, Mpd, XX, IA_AVX },
+Ia_vmaskmovps_Mps_Hps_Vps = { "vmaskmovps", "vmaskmovps", Mps, Hps, Vps, XX, IA_AVX },
+Ia_vmaskmovps_Vps_Hps_Mps = { "vmaskmovps", "vmaskmovps", Vps, Hps, Mps, XX, IA_AVX },
+Ia_vmaskmovq_Mdq_Hdq_Vdq = { "vmaskmovq", "vmaskmovq", Mdq, Hdq, Vdq, XX, IA_AVX2 },
+Ia_vmaskmovq_Vdq_Hdq_Mdq = { "vmaskmovq", "vmaskmovq", Vdq, Hdq, Mdq, XX, IA_AVX2 },
+Ia_vmaxpd_Vpd_Hpd_Wpd = { "vmaxpd", "vmaxpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vmaxps_Vps_Hps_Wps = { "vmaxps", "vmaxps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vmaxsd_Vsd_Hpd_Wsd = { "vmaxsd", "vmaxsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vmaxss_Vss_Hps_Wss = { "vmaxss", "vmaxss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vmcall = { "vmcall", "vmcall", XX, XX, XX, XX, IA_VMX },
+Ia_vmclear_Mq = { "vmclear", "vmclear", Mq, XX, XX, XX, IA_VMX },
+Ia_vmfunc = { "vmfunc", "vmfunc", EAX_Reg, XX, XX, XX, IA_VMX },
+Ia_vminpd_Vpd_Hpd_Wpd = { "vminpd", "vminpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vminps_Vps_Hps_Wps = { "vminps", "vminps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vminsd_Vsd_Hpd_Wsd = { "vminsd", "vminsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vminss_Vss_Hps_Wss = { "vminss", "vminss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vmlaunch = { "vmlaunch", "vmlaunch", XX, XX, XX, XX, IA_VMX },
+Ia_vmload = { "vmload", "vmload", RAX_Reg, XX, XX, XX, IA_SVM },
+Ia_vmmcall = { "vmmcall", "vmmcall", XX, XX, XX, XX, IA_SVM },
+Ia_vmovapd_Vpd_Wpd = { "vmovapd", "vmovapd", Vpd, Wpd, XX, XX, IA_AVX },
+Ia_vmovapd_Wpd_Vpd = { "vmovapd", "vmovapd", Wpd, Vpd, XX, XX, IA_AVX },
+Ia_vmovaps_Vps_Wps = { "vmovaps", "vmovaps", Vps, Wps, XX, XX, IA_AVX },
+Ia_vmovaps_Wps_Vps = { "vmovaps", "vmovaps", Wps, Vps, XX, XX, IA_AVX },
+Ia_vmovd_Ed_Vd = { "vmovd", "vmovd", Ed, Vdq, XX, XX, IA_AVX },
+Ia_vmovd_Vdq_Ed = { "vmovd", "vmovd", Vdq, Ed, XX, XX, IA_AVX },
+Ia_vmovddup_Vdq_Wq = { "vmovddup", "vmovddup", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vmovdqa_Vdq_Wdq = { "vmovdqa", "vmovdqa", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vmovdqa_Wdq_Vdq = { "vmovdqa", "vmovdqa", Wdq, Vdq, XX, XX, IA_AVX },
+Ia_vmovdqu_Vdq_Wdq = { "vmovdqu", "vmovdqu", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vmovdqu_Wdq_Vdq = { "vmovdqu", "vmovdqu", Wdq, Vdq, XX, XX, IA_AVX },
+Ia_vmovhlpd_Vpd_Hdq_Udq = { "vmovhlpd", "vmovhlpd", Vpd, Hdq, Udq, XX, IA_AVX },
+Ia_vmovhlps_Vps_Hdq_Udq = { "vmovhlps", "vmovhlps", Vps, Hdq, Udq, XX, IA_AVX },
+Ia_vmovhpd_Mq_Vpd = { "vmovhpd", "vmovhpd", Mq, Vpd, XX, XX, IA_AVX },
+Ia_vmovhpd_Vpd_Hdq_Mq = { "vmovhpd", "vmovhpd", Vpd, Hdq, Mq, XX, IA_AVX },
+Ia_vmovhps_Mq_Vps = { "vmovhps", "vmovhps", Mq, Vps, XX, XX, IA_AVX },
+Ia_vmovhps_Vps_Hdq_Mq = { "vmovhps", "vmovhps", Vps, Hdq, Mq, XX, IA_AVX },
+Ia_vmovlhpd_Vpd_Hdq_Udq = { "vmovlhpd", "vmovlhpd", Vpd, Hdq, Udq, XX, IA_AVX },
+Ia_vmovlhps_Vps_Hdq_Udq = { "vmovlhps", "vmovlhps", Vps, Hdq, Udq, XX, IA_AVX },
+Ia_vmovlpd_Mq_Vpd = { "vmovlpd", "vmovlpd", Mq, Vpd, XX, XX, IA_AVX },
+Ia_vmovlpd_Vpd_Hdq_Mq = { "vmovlpd", "vmovlpd", Vpd, Hdq, Mq, XX, IA_AVX },
+Ia_vmovlps_Mq_Vps = { "vmovlps", "vmovlps", Mq, Vps, XX, XX, IA_AVX },
+Ia_vmovlps_Vps_Hdq_Mq = { "vmovlps", "vmovlps", Vps, Hdq, Mq, XX, IA_AVX },
+Ia_vmovmskpd_Gd_Upd = { "vmovmskpd", "vmovmskpd", Gd, Upd, XX, XX, IA_AVX },
+Ia_vmovmskps_Gd_Ups = { "vmovmskps", "vmovmskps", Gd, Ups, XX, XX, IA_AVX },
+Ia_vmovntdq_Mdq_Vdq = { "vmovntdq", "vmovntdq", Mdq, Vdq, XX, XX, IA_AVX },
+Ia_vmovntdqa_Vdq_Mdq = { "vmovntdqa", "vmovntdqa", Vdq, Mdq, XX, XX, IA_AVX },
+Ia_vmovntpd_Mpd_Vpd = { "vmovntpd", "vmovntpd", Mpd, Vpd, XX, XX, IA_AVX },
+Ia_vmovntps_Mps_Vps = { "vmovntps", "vmovntps", Mps, Vps, XX, XX, IA_AVX },
+Ia_vmovq_Eq_Vq = { "vmovq", "vmovq", Eq, Vq, XX, XX, IA_AVX },
+Ia_vmovq_Vdq_Eq = { "vmovq", "vmovq", Vdq, Eq, XX, XX, IA_AVX },
+Ia_vmovq_Vq_Wq = { "vmovq", "vmovq", Vq, Wq, XX, XX, IA_AVX },
+Ia_vmovq_Wq_Vq = { "vmovq", "vmovq", Wq, Vq, XX, XX, IA_AVX },
+Ia_vmovsd_Vsd_Wsd = { "vmovsd", "vmovsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vmovsd_Wsd_Vsd = { "vmovsd", "vmovsd", Wsd, Vsd, XX, XX, IA_AVX },
+Ia_vmovshdup_Vdq_Wdq = { "vmovshdup", "vmovshdup", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vmovsldup_Vdq_Wdq = { "vmovsldup", "vmovsldup", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vmovss_Vss_Wss = { "vmovss", "vmovss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vmovss_Wss_Vss = { "vmovss", "vmovss", Wss, Vss, XX, XX, IA_AVX },
+Ia_vmovupd_Vpd_Wpd = { "vmovupd", "vmovupd", Vpd, Wpd, XX, XX, IA_AVX },
+Ia_vmovupd_Wpd_Vpd = { "vmovupd", "vmovupd", Wpd, Vpd, XX, XX, IA_AVX },
+Ia_vmovups_Vps_Wps = { "vmovups", "vmovups", Vps, Wps, XX, XX, IA_AVX },
+Ia_vmovups_Wps_Vps = { "vmovups", "vmovups", Wps, Vps, XX, XX, IA_AVX },
+Ia_vmpsadbw_Vdq_Hdq_Wdq_Ib = { "vmpsadbw", "vmpsadbw", Vdq, Hdq, Wdq, Ib, IA_AVX },
+Ia_vmptrld_Mq = { "vmptrld", "vmptrld", Mq, XX, XX, XX, IA_VMX },
+Ia_vmptrst_Mq = { "vmptrst", "vmptrst", Mq, XX, XX, XX, IA_VMX },
+Ia_vmread_Ed_Gd = { "vmread", "vmread", Ed, Gd, XX, XX, IA_VMX },
+Ia_vmread_Eq_Gq = { "vmread", "vmread", Eq, Gq, XX, XX, IA_VMX },
+Ia_vmresume = { "vmresume", "vmresume", XX, XX, XX, XX, IA_VMX },
+Ia_vmrun = { "vmrun", "vmrun", RAX_Reg, XX, XX, XX, IA_SVM },
+Ia_vmsave = { "vmsave", "vmsave", RAX_Reg, XX, XX, XX, IA_SVM },
+Ia_vmulpd_Vpd_Hpd_Wpd = { "vmulpd", "vmulpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vmulps_Vps_Hps_Wps = { "vmulps", "vmulps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vmulsd_Vsd_Hpd_Wsd = { "vmulsd", "vmulsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vmulss_Vss_Hps_Wss = { "vmulss", "vmulss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vmwrite_Gd_Ed = { "vmwrite", "vmwrite", Gd, Ed, XX, XX, IA_VMX },
+Ia_vmwrite_Gq_Eq = { "vmwrite", "vmwrite", Gq, Eq, XX, XX, IA_VMX },
+Ia_vmxoff = { "vmxoff", "vmxoff", XX, XX, XX, XX, IA_VMX },
+Ia_vmxon_Mq = { "vmxon", "vmxon", Mq, XX, XX, XX, IA_VMX },
+Ia_vorpd_Vpd_Hpd_Wpd = { "vorpd", "vorpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vorps_Vps_Hps_Wps = { "vorps", "vorps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vpabsb_Vdq_Hdq_Wdq = { "vpabsb", "vpabsb", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vpabsd_Vdq_Hdq_Wdq = { "vpabsd", "vpabsd", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vpabsw_Vdq_Hdq_Wdq = { "vpabsw", "vpabsw", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vpackssdw_Vdq_Hdq_Wdq = { "vpackssdw", "vpackssdw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpacksswb_Vdq_Hdq_Wdq = { "vpacksswb", "vpacksswb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpackusdw_Vdq_Hdq_Wdq = { "vpackusdw", "vpackusdw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpackuswb_Vdq_Hdq_Wdq = { "vpackuswb", "vpackuswb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddb_Vdq_Hdq_Wdq = { "vpaddb", "vpaddb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddd_Vdq_Hdq_Wdq = { "vpaddd", "vpaddd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddq_Vdq_Hdq_Wdq = { "vpaddq", "vpaddq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddsb_Vdq_Hdq_Wdq = { "vpaddsb", "vpaddsb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddsw_Vdq_Hdq_Wdq = { "vpaddsw", "vpaddsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddusb_Vdq_Hdq_Wdq = { "vpaddusb", "vpaddusb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddusw_Vdq_Hdq_Wdq = { "vpaddusw", "vpaddusw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpaddw_Vdq_Hdq_Wdq = { "vpaddw", "vpaddw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpalignr_Vdq_Hdq_Wdq_Ib = { "vpalignr", "vpalignr", Vdq, Hdq, Wdq, Ib, IA_AVX },
+Ia_vpand_Vdq_Hdq_Wdq = { "vpand", "vpand", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpandn_Vdq_Hdq_Wdq = { "vpandn", "vpandn", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpavgb_Vdq_Hdq_Wdq = { "vpavgb", "vpavgb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpavgw_Vdq_Hdq_Wdq = { "vpavgw", "vpavgw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpblendd_Vdq_Hdq_Wdq_Ib = { "vpblendd", "vpblendd", Vdq, Hdq, Wdq, Ib, IA_AVX2 },
+Ia_vpblendvb_Vdq_Hdq_Wdq_Ib = { "vpblendvb", "vpblendvb", Vdq, Hdq, Wdq, VIb, IA_AVX },
+Ia_vpblendw_Vdq_Hdq_Wdq_Ib = { "vpblendw", "vpblendw", Vdq, Hdq, Wdq, Ib, IA_AVX },
+Ia_vpbroadcastb_Vdq_Wb = { "vpbroadcastb", "vpbroadcastb", Vdq, Wb, XX, XX, IA_AVX2 },
+Ia_vpbroadcastd_Vdq_Wd = { "vpbroadcastd", "vpbroadcastd", Vdq, Wd, XX, XX, IA_AVX2 },
+Ia_vpbroadcastq_Vdq_Wq = { "vpbroadcastq", "vpbroadcastq", Vdq, Wq, XX, XX, IA_AVX2 },
+Ia_vpbroadcastw_Vdq_Ww = { "vpbroadcastw", "vpbroadcastw", Vdq, Ww, XX, XX, IA_AVX2 },
+Ia_vpclmulqdq_Vdq_Hdq_Wdq_Ib = { "vpclmulqdq", "vpclmulqdq", Vdq, Hdq, Wdq, Ib, IA_AVX },
+Ia_vpcmov_Vdq_Hdq_VIb_Wdq = { "vpcmov", "vpcmov", Vdq, Hdq, VIb, Wdq, IA_XOP },
+Ia_vpcmov_Vdq_Hdq_Wdq_VIb = { "vpcmov", "vpcmov", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpcmpeqb_Vdq_Hdq_Wdq = { "vpcmpeqb", "vpcmpeqb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpeqd_Vdq_Hdq_Wdq = { "vpcmpeqd", "vpcmpeqd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpeqq_Vdq_Hdq_Wdq = { "vpcmpeqq", "vpcmpeqq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpeqw_Vdq_Hdq_Wdq = { "vpcmpeqw", "vpcmpeqw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpestri_Vdq_Wdq_Ib = { "vpcmpestri", "vpcmpestri", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpcmpestrm_Vdq_Wdq_Ib = { "vpcmpestrm", "vpcmpestrm", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpcmpgtb_Vdq_Hdq_Wdq = { "vpcmpgtb", "vpcmpgtb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpgtd_Vdq_Hdq_Wdq = { "vpcmpgtd", "vpcmpgtd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpgtq_Vdq_Hdq_Wdq = { "vpcmpgtq", "vpcmpgtq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpgtw_Vdq_Hdq_Wdq = { "vpcmpgtw", "vpcmpgtw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpcmpistri_Vdq_Wdq_Ib = { "vpcmpistri", "vpcmpistri", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpcmpistrm_Vdq_Wdq_Ib = { "vpcmpistrm", "vpcmpistrm", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpcomb_Vdq_Hdq_Wdq_Ib = { "vpcomb", "vpcomb", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomd_Vdq_Hdq_Wdq_Ib = { "vpcomd", "vpcomd", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomq_Vdq_Hdq_Wdq_Ib = { "vpcomq", "vpcomq", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomub_Vdq_Hdq_Wdq_Ib = { "vpcomub", "vpcomub", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomud_Vdq_Hdq_Wdq_Ib = { "vpcomud", "vpcomud", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomuq_Vdq_Hdq_Wdq_Ib = { "vpcomuq", "vpcomuq", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomuw_Vdq_Hdq_Wdq_Ib = { "vpcomuw", "vpcomuw", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vpcomw_Vdq_Hdq_Wdq_Ib = { "vpcomw", "vpcomw", Vdq, Hdq, Wdq, Ib, IA_XOP },
+Ia_vperm2f128_Vdq_Hdq_Wdq_Ib = { "vperm2f128", "vperm2f128", Vdq, Hdq, Wdq, Ib, IA_AVX },
+Ia_vperm2i128_Vdq_Hdq_Wdq_Ib = { "vperm2i128", "vperm2i128", Vdq, Hdq, Wdq, Ib, IA_AVX2 },
+Ia_vpermd_Vdq_Hdq_Wdq = { "vpermd", "vpermd", Vdq, Hdq, Wdq, XX, IA_AVX2 },
+Ia_vpermilpd_Vpd_Hpd_Wpd = { "vpermilpd", "vpermilpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vpermilpd_Vpd_Wpd_Ib = { "vpermilpd", "vpermilpd", Vpd, Wpd, Ib, XX, IA_AVX },
+Ia_vpermilps_Vps_Hps_Wps = { "vpermilps", "vpermilps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vpermilps_Vps_Wps_Ib = { "vpermilps", "vpermilps", Vps, Wps, Ib, XX, IA_AVX },
+Ia_vpermpd_Vpd_Wpd_Ib = { "vpermpd", "vpermpd", Vpd, Wpd, Ib, XX, IA_AVX2 },
+Ia_vpermps_Vps_Hps_Wps = { "vpermps", "vpermps", Vps, Hps, Wps, XX, IA_AVX2 },
+Ia_vpermq_Vdq_Wdq_Ib = { "vpermq", "vpermq", Vdq, Wdq, Ib, XX, IA_AVX2 },
+Ia_vpextrb_Ebd_Vdq_Ib = { "vpextrb", "vpextrb", Ebd, Vdq, Ib, XX, IA_AVX },
+Ia_vpextrd_Ed_Vdq_Ib = { "vpextrd", "vpextrd", Ed, Vdq, Ib, XX, IA_AVX },
+Ia_vpextrq_Eq_Vdq_Ib = { "vpextrq", "vpextrq", Eq, Vdq, Ib, XX, IA_AVX },
+Ia_vpextrw_Ewd_Vdq_Ib = { "vpextrw", "vpextrw", Ewd, Vdq, Ib, XX, IA_AVX },
+Ia_vpextrw_Gd_Udq_Ib = { "vpextrw", "vpextrw", Gd, Udq, Ib, XX, IA_AVX },
+Ia_vphaddbd_Vdq_Wdq = { "vphaddbd", "vphaddbd", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddbq_Vdq_Wdq = { "vphaddbq", "vphaddbq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddbw_Vdq_Wdq = { "vphaddbw", "vphaddbw", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddd_Vdq_Hdq_Wdq = { "vphaddd", "vphaddd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vphadddq_Vdq_Wdq = { "vphadddq", "vphadddq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddsw_Vdq_Hdq_Wdq = { "vphaddsw", "vphaddsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vphaddubd_Vdq_Wdq = { "vphaddubd", "vphaddubd", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddubq_Vdq_Wdq = { "vphaddubq", "vphaddubq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddubw_Vdq_Wdq = { "vphaddubw", "vphaddubw", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddudq_Vdq_Wdq = { "vphaddudq", "vphaddudq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphadduwd_Vdq_Wdq = { "vphadduwd", "vphadduwd", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphadduwq_Vdq_Wdq = { "vphadduwq", "vphadduwq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddw_Vdq_Hdq_Wdq = { "vphaddw", "vphaddw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vphaddwd_Vdq_Wdq = { "vphaddwd", "vphaddwd", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphaddwq_Vdq_Wdq = { "vphaddwq", "vphaddwq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphminposuw_Vdq_Wdq = { "vphminposuw", "vphminposuw", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vphsubbw_Vdq_Wdq = { "vphsubbw", "vphsubbw", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphsubd_Vdq_Hdq_Wdq = { "vphsubd", "vphsubd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vphsubdq_Vdq_Wdq = { "vphsubdq", "vphsubdq", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vphsubsw_Vdq_Hdq_Wdq = { "vphsubsw", "vphsubsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vphsubw_Vdq_Hdq_Wdq = { "vphsubw", "vphsubw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vphsubwd_Vdq_Wdq = { "vphsubwd", "vphsubwd", Vdq, Wdq, XX, XX, IA_XOP },
+Ia_vpinsrb_Vdq_Hdq_Ew_Ib = { "vpinsrb", "vpinsrb", Vdq, Hdq, Ew, Ib, IA_AVX },
+Ia_vpinsrd_Vdq_Hdq_Ed_Ib = { "vpinsrd", "vpinsrd", Vdq, Hdq, Ed, Ib, IA_AVX },
+Ia_vpinsrq_Vdq_Hdq_Eq_Ib = { "vpinsrq", "vpinsrq", Vdq, Hdq, Eq, Ib, IA_AVX },
+Ia_vpinsrw_Vdq_Hdq_Ew_Ib = { "vpinsrw", "vpinsrw", Vdq, Hdq, Ew, Ib, IA_AVX },
+Ia_vpmacsdd_Vdq_Hdq_Wdq_VIb = { "vpmacsdd", "vpmacsdd", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacsdqh_Vdq_Hdq_Wdq_VIb = { "vpmacsdqh", "vpmacsdqh", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacsdql_Vdq_Hdq_Wdq_VIb = { "vpmacsdql", "vpmacsdql", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacssdd_Vdq_Hdq_Wdq_VIb = { "vpmacssdd", "vpmacssdd", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacssdqh_Vdq_Hdq_Wdq_VIb = { "vpmacssdqh", "vpmacssdqh", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacssdql_Vdq_Hdq_Wdq_VIb = { "vpmacssdql", "vpmacssdql", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacsswd_Vdq_Hdq_Wdq_VIb = { "vpmacsswd", "vpmacsswd", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacssww_Vdq_Hdq_Wdq_VIb = { "vpmacssww", "vpmacssww", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacswd_Vdq_Hdq_Wdq_VIb = { "vpmacswd", "vpmacswd", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmacsww_Vdq_Hdq_Wdq_VIb = { "vpmacsww", "vpmacsww", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmadcsswd_Vdq_Hdq_Wdq_VIb = { "vpmadcsswd", "vpmadcsswd", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmadcswd_Vdq_Hdq_Wdq_VIb = { "vpmadcswd", "vpmadcswd", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vpmaddubsw_Vdq_Hdq_Wdq = { "vpmaddubsw", "vpmaddubsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaddwd_Vdq_Hdq_Wdq = { "vpmaddwd", "vpmaddwd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaxsb_Vdq_Hdq_Wdq = { "vpmaxsb", "vpmaxsb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaxsd_Vdq_Hdq_Wdq = { "vpmaxsd", "vpmaxsd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaxsw_Vdq_Hdq_Wdq = { "vpmaxsw", "vpmaxsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaxub_Vdq_Hdq_Wdq = { "vpmaxub", "vpmaxub", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaxud_Vdq_Hdq_Wdq = { "vpmaxud", "vpmaxud", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmaxuw_Vdq_Hdq_Wdq = { "vpmaxuw", "vpmaxuw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpminsb_Vdq_Hdq_Wdq = { "vpminsb", "vpminsb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpminsd_Vdq_Hdq_Wdq = { "vpminsd", "vpminsd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpminsw_Vdq_Hdq_Wdq = { "vpminsw", "vpminsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpminub_Vdq_Hdq_Wdq = { "vpminub", "vpminub", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpminud_Vdq_Hdq_Wdq = { "vpminud", "vpminud", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpminuw_Vdq_Hdq_Wdq = { "vpminuw", "vpminuw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmovmskb_Gd_Udq = { "vpmovmskb", "vpmovmskb", Gd, Udq, XX, XX, IA_AVX },
+Ia_vpmovsxbd_Vdq_Wd = { "vpmovsxbd", "vpmovsxbd", Vdq, Wd, XX, XX, IA_AVX },
+Ia_vpmovsxbq_Vdq_Ww = { "vpmovsxbq", "vpmovsxbq", Vdq, Ww, XX, XX, IA_AVX },
+Ia_vpmovsxbw_Vdq_Wq = { "vpmovsxbw", "vpmovsxbw", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vpmovsxdq_Vdq_Wq = { "vpmovsxdq", "vpmovsxdq", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vpmovsxwd_Vdq_Wq = { "vpmovsxwd", "vpmovsxwd", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vpmovsxwq_Vdq_Wd = { "vpmovsxwq", "vpmovsxwq", Vdq, Wd, XX, XX, IA_AVX },
+Ia_vpmovzxbd_Vdq_Wd = { "vpmovzxbd", "vpmovzxbd", Vdq, Wd, XX, XX, IA_AVX },
+Ia_vpmovzxbq_Vdq_Ww = { "vpmovzxbq", "vpmovzxbq", Vdq, Ww, XX, XX, IA_AVX },
+Ia_vpmovzxbw_Vdq_Wq = { "vpmovzxbw", "vpmovzxbw", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vpmovzxdq_Vdq_Wq = { "vpmovzxdq", "vpmovzxdq", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vpmovzxwd_Vdq_Wq = { "vpmovzxwd", "vpmovzxwd", Vdq, Wq, XX, XX, IA_AVX },
+Ia_vpmovzxwq_Vdq_Wd = { "vpmovzxwq", "vpmovzxwq", Vdq, Wd, XX, XX, IA_AVX },
+Ia_vpmuldq_Vdq_Hdq_Wdq = { "vpmuldq", "vpmuldq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmulhrsw_Vdq_Hdq_Wdq = { "vpmulhrsw", "vpmulhrsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmulhuw_Vdq_Hdq_Wdq = { "vpmulhuw", "vpmulhuw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmulhw_Vdq_Hdq_Wdq = { "vpmulhw", "vpmulhw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmulld_Vdq_Hdq_Wdq = { "vpmulld", "vpmulld", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmullw_Vdq_Hdq_Wdq = { "vpmullw", "vpmullw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpmuludq_Vdq_Hdq_Wdq = { "vpmuludq", "vpmuludq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpor_Vdq_Hdq_Wdq = { "vpor", "vpor", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpperm_Vdq_Hdq_VIb_Wdq = { "vpperm", "vpperm", Vdq, Hdq, VIb, Wdq, IA_XOP },
+Ia_vpperm_Vdq_Hdq_Wdq_VIb = { "vpperm", "vpperm", Vdq, Hdq, Wdq, VIb, IA_XOP },
+Ia_vprotb_Vdq_Hdq_Wdq = { "vprotb", "vprotb", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vprotb_Vdq_Wdq_Hdq = { "vprotb", "vprotb", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vprotb_Vdq_Wdq_Ib = { "vprotb", "vprotb", Vdq, Wdq, Ib, XX, IA_XOP },
+Ia_vprotd_Vdq_Hdq_Wdq = { "vprotd", "vprotd", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vprotd_Vdq_Wdq_Hdq = { "vprotd", "vprotd", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vprotd_Vdq_Wdq_Ib = { "vprotd", "vprotd", Vdq, Wdq, Ib, XX, IA_XOP },
+Ia_vprotq_Vdq_Hdq_Wdq = { "vprotq", "vprotq", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vprotq_Vdq_Wdq_Hdq = { "vprotq", "vprotq", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vprotq_Vdq_Wdq_Ib = { "vprotq", "vprotq", Vdq, Wdq, Ib, XX, IA_XOP },
+Ia_vprotw_Vdq_Hdq_Wdq = { "vprotw", "vprotw", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vprotw_Vdq_Wdq_Hdq = { "vprotw", "vprotw", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vprotw_Vdq_Wdq_Ib = { "vprotw", "vprotw", Vdq, Wdq, Ib, XX, IA_XOP },
+Ia_vpsadbw_Vdq_Hdq_Wdq = { "vpsadbw", "vpsadbw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpshab_Vdq_Hdq_Wdq = { "vpshab", "vpshab", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshab_Vdq_Wdq_Hdq = { "vpshab", "vpshab", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshad_Vdq_Hdq_Wdq = { "vpshad", "vpshad", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshad_Vdq_Wdq_Hdq = { "vpshad", "vpshad", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshaq_Vdq_Hdq_Wdq = { "vpshaq", "vpshaq", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshaq_Vdq_Wdq_Hdq = { "vpshaq", "vpshaq", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshaw_Vdq_Hdq_Wdq = { "vpshaw", "vpshaw", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshaw_Vdq_Wdq_Hdq = { "vpshaw", "vpshaw", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshlb_Vdq_Hdq_Wdq = { "vpshlb", "vpshlb", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshlb_Vdq_Wdq_Hdq = { "vpshlb", "vpshlb", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshld_Vdq_Hdq_Wdq = { "vpshld", "vpshld", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshld_Vdq_Wdq_Hdq = { "vpshld", "vpshld", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshlq_Vdq_Hdq_Wdq = { "vpshlq", "vpshlq", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshlq_Vdq_Wdq_Hdq = { "vpshlq", "vpshlq", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshlw_Vdq_Hdq_Wdq = { "vpshlw", "vpshlw", Vdq, Hdq, Wdq, XX, IA_XOP },
+Ia_vpshlw_Vdq_Wdq_Hdq = { "vpshlw", "vpshlw", Vdq, Wdq, Hdq, XX, IA_XOP },
+Ia_vpshufb_Vdq_Hdq_Wdq = { "vpshufb", "vpshufb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpshufd_Vdq_Hdq_Wdq_Ib = { "vpshufd", "vpshufd", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpshufhw_Vdq_Hdq_Wdq_Ib = { "vpshufhw", "vpshufhw", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpshuflw_Vdq_Hdq_Wdq_Ib = { "vpshuflw", "vpshuflw", Vdq, Wdq, Ib, XX, IA_AVX },
+Ia_vpsignb_Vdq_Hdq_Wdq = { "vpsignb", "vpsignb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsignd_Vdq_Hdq_Wdq = { "vpsignd", "vpsignd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsignw_Vdq_Hdq_Wdq = { "vpsignw", "vpsignw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpslld_Hdq_Udq_Ib = { "vpslld", "vpslld", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpslld_Vdq_Hdq_Wdq = { "vpslld", "vpslld", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpslldq_Hdq_Udq_Ib = { "vpslldq", "vpslldq", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsllq_Hdq_Udq_Ib = { "vpsllq", "vpsllq", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsllq_Vdq_Hdq_Wdq = { "vpsllq", "vpsllq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsllvd_Vdq_Hdq_Wdq = { "vpsllvd", "vpsllvd", Vdq, Hdq, Wdq, XX, IA_AVX2 },
+Ia_vpsllvq_Vdq_Hdq_Wdq = { "vpsllvq", "vpsllvq", Vdq, Hdq, Wdq, XX, IA_AVX2 },
+Ia_vpsllw_Hdq_Udq_Ib = { "vpsllw", "vpsllw", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsllw_Vdq_Hdq_Wdq = { "vpsllw", "vpsllw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsrad_Hdq_Udq_Ib = { "vpsrad", "vpsrad", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsrad_Vdq_Hdq_Wdq = { "vpsrad", "vpsrad", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsravd_Vdq_Hdq_Wdq = { "vpsravd", "vpsravd", Vdq, Hdq, Wdq, XX, IA_AVX2 },
+Ia_vpsraw_Hdq_Udq_Ib = { "vpsraw", "vpsraw", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsraw_Vdq_Hdq_Wdq = { "vpsraw", "vpsraw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsrld_Hdq_Udq_Ib = { "vpsrld", "vpsrld", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsrld_Vdq_Hdq_Wdq = { "vpsrld", "vpsrld", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsrldq_Hdq_Udq_Ib = { "vpsrldq", "vpsrldq", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsrlq_Hdq_Udq_Ib = { "vpsrlq", "vpsrlq", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsrlq_Vdq_Hdq_Wdq = { "vpsrlq", "vpsrlq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsrlvd_Vdq_Hdq_Wdq = { "vpsrlvd", "vpsrlvd", Vdq, Hdq, Wdq, XX, IA_AVX2 },
+Ia_vpsrlvq_Vdq_Hdq_Wdq = { "vpsrlvq", "vpsrlvq", Vdq, Hdq, Wdq, XX, IA_AVX2 },
+Ia_vpsrlw_Hdq_Udq_Ib = { "vpsrlw", "vpsrlw", Hdq, Udq, Ib, XX, IA_AVX },
+Ia_vpsrlw_Vdq_Hdq_Wdq = { "vpsrlw", "vpsrlw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubb_Vdq_Hdq_Wdq = { "vpsubb", "vpsubb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubd_Vdq_Hdq_Wdq = { "vpsubd", "vpsubd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubq_Vdq_Hdq_Wdq = { "vpsubq", "vpsubq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubsb_Vdq_Hdq_Wdq = { "vpsubsb", "vpsubsb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubsw_Vdq_Hdq_Wdq = { "vpsubsw", "vpsubsw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubusb_Vdq_Hdq_Wdq = { "vpsubusb", "vpsubusb", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubusw_Vdq_Hdq_Wdq = { "vpsubusw", "vpsubusw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpsubw_Vdq_Hdq_Wdq = { "vpsubw", "vpsubw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vptest_Vdq_Wdq = { "vptest", "vptest", Vdq, Wdq, XX, XX, IA_AVX },
+Ia_vpunpckhbw_Vdq_Hdq_Wdq = { "vpunpckhbw", "vpunpckhbw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpckhdq_Vdq_Hdq_Wdq = { "vpunpckhdq", "vpunpckhdq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpckhqdq_Vdq_Hdq_Wdq = { "vpunpckhqdq", "vpunpckhqdq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpckhwd_Vdq_Hdq_Wdq = { "vpunpckhwd", "vpunpckhwd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpcklbw_Vdq_Hdq_Wdq = { "vpunpcklbw", "vpunpcklbw", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpckldq_Vdq_Hdq_Wdq = { "vpunpckldq", "vpunpckldq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpcklqdq_Vdq_Hdq_Wdq = { "vpunpcklqdq", "vpunpcklqdq", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpunpcklwd_Vdq_Hdq_Wdq = { "vpunpcklwd", "vpunpcklwd", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vpxor_Vdq_Hdq_Wdq = { "vpxor", "vpxor", Vdq, Hdq, Wdq, XX, IA_AVX },
+Ia_vrcpps_Vps_Wps = { "vrcpps", "vrcpps", Vps, Wps, XX, XX, IA_AVX },
+Ia_vrcpss_Vss_Hps_Wss = { "vrcpss", "vrcpss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vroundpd_Vpd_Wpd_Ib = { "vroundpd", "vroundpd", Vpd, Wpd, Ib, XX, IA_AVX },
+Ia_vroundps_Vps_Wps_Ib = { "vroundps", "vroundps", Vps, Wps, Ib, XX, IA_AVX },
+Ia_vroundsd_Vsd_Hpd_Wsd_Ib = { "vroundsd", "vroundsd", Vsd, Hpd, Wsd, Ib, IA_AVX },
+Ia_vroundss_Vss_Hps_Wss_Ib = { "vroundss", "vroundss", Vss, Hps, Wss, Ib, IA_AVX },
+Ia_vrsqrtps_Vps_Wps = { "vrsqrtps", "vrsqrtps", Vps, Wps, XX, XX, IA_AVX },
+Ia_vrsqrtss_Vss_Hps_Wss = { "vrsqrtss", "vrsqrtss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vshufpd_Vpd_Hpd_Wpd_Ib = { "vshufpd", "vshufpd", Vpd, Hpd, Wpd, Ib, IA_AVX },
+Ia_vshufps_Vps_Hps_Wps_Ib = { "vshufps", "vshufps", Vps, Hps, Wps, Ib, IA_AVX },
+Ia_vsqrtpd_Vpd_Wpd = { "vsqrtpd", "vsqrtpd", Vpd, Wpd, XX, XX, IA_AVX },
+Ia_vsqrtps_Vps_Wps = { "vsqrtps", "vsqrtps", Vps, Wps, XX, XX, IA_AVX },
+Ia_vsqrtsd_Vsd_Hpd_Wsd = { "vsqrtsd", "vsqrtsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vsqrtss_Vss_Hps_Wss = { "vsqrtss", "vsqrtss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vstmxcsr = { "vstmxcsr", "vstmxcsr", Md, XX, XX, XX, IA_AVX },
+Ia_vsubpd_Vpd_Hpd_Wpd = { "vsubpd", "vsubpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vsubps_Vps_Hps_Wps = { "vsubps", "vsubps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vsubsd_Vsd_Hpd_Wsd = { "vsubsd", "vsubsd", Vsd, Hpd, Wsd, XX, IA_AVX },
+Ia_vsubss_Vss_Hps_Wss = { "vsubss", "vsubss", Vss, Hps, Wss, XX, IA_AVX },
+Ia_vtestpd_Vpd_Wpd = { "vtestpd", "vtestpd", Vpd, Wpd, XX, XX, IA_AVX },
+Ia_vtestps_Vps_Wps = { "vtestps", "vtestps", Vps, Wps, XX, XX, IA_AVX },
+Ia_vucomisd_Vsd_Wsd = { "vucomisd", "vucomisd", Vsd, Wsd, XX, XX, IA_AVX },
+Ia_vucomiss_Vss_Wss = { "vucomiss", "vucomiss", Vss, Wss, XX, XX, IA_AVX },
+Ia_vunpckhpd_Vpd_Hpd_Wpd = { "vunpckhpd", "vunpckhpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vunpckhps_Vps_Hps_Wps = { "vunpckhps", "vunpckhps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vunpcklpd_Vpd_Hpd_Wpd = { "vunpcklpd", "vunpcklpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vunpcklps_Vps_Hps_Wps = { "vunpcklps", "vunpcklps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vxorpd_Vpd_Hpd_Wpd = { "vxorpd", "vxorpd", Vpd, Hpd, Wpd, XX, IA_AVX },
+Ia_vxorps_Vps_Hps_Wps = { "vxorps", "vxorps", Vps, Hps, Wps, XX, IA_AVX },
+Ia_vzeroall = { "vzeroall", "vzeroall", XX, XX, XX, XX, IA_AVX },
+Ia_vzeroupper = { "vzeroupper", "vzeroupper", XX, XX, XX, XX, IA_AVX },
+Ia_wbinvd = { "wbinvd", "wbinvd", XX, XX, XX, XX, IA_486 },
+Ia_wrfsbase_Ry = { "wrfsbase", "wrfsbase", Ry, XX, XX, XX, IA_FSGSBASE },
+Ia_wrgsbase_Ry = { "wrgsbase", "wrgsbase", Ry, XX, XX, XX, IA_FSGSBASE },
+Ia_wrmsr = { "wrmsr", "wrmsr", XX, XX, XX, XX, IA_PENTIUM },
+Ia_xaddb_Eb_Gb = { "xadd", "xaddb", Eb, Gb, XX, XX, IA_486 },
+Ia_xaddl_Ed_Gd = { "xadd", "xaddl", Ed, Gd, XX, XX, IA_486 },
+Ia_xaddq_Eq_Gq = { "xadd", "xaddq", Eq, Gq, XX, XX, 0 },
+Ia_xaddw_Ew_Gw = { "xadd", "xaddw", Ew, Gw, XX, XX, IA_486 },
+Ia_xchgb_Eb_Gb = { "xchg", "xchgb", Eb, Gb, XX, XX, 0 },
+Ia_xchgl_Ed_Gd = { "xchg", "xchgl", Ed, Gd, XX, XX, 0 },
+Ia_xchgl_ERX_EAX = { "xchg", "xchgl", ERX, EAX_Reg, XX, XX, 0 },
+Ia_xchgq_Eq_Gq = { "xchg", "xchgq", Eq, Gq, XX, XX, 0 },
+Ia_xchgq_RRX_RAX = { "xchg", "xchgq", RRX, RAX_Reg, XX, XX, 0 },
+Ia_xchgw_Ew_Gw = { "xchg", "xchgw", Ew, Gw, XX, XX, 0 },
+Ia_xchgw_RX_AX = { "xchg", "xchgw", RX, AX_Reg, XX, XX, 0 },
+Ia_xgetbv = { "xgetbv", "xgetbv", XX, XX, XX, XX, IA_XSAVE },
+Ia_xlat = { "xlat", "xlat", XX, XX, XX, XX, 0 },
+Ia_xorb_AL_Ib = { "xor", "xorb", AL_Reg, Ib, XX, XX, 0 },
+Ia_xorb_Eb_Gb = { "xor", "xorb", Eb, Gb, XX, XX, 0 },
+Ia_xorb_Eb_Ib = { "xor", "xorb", Eb, Ib, XX, XX, 0 },
+Ia_xorb_Gb_Eb = { "xor", "xorb", Gb, Eb, XX, XX, 0 },
+Ia_xorl_EAX_Id = { "xor", "xorl", EAX_Reg, Id, XX, XX, 0 },
+Ia_xorl_Ed_Gd = { "xor", "xorl", Ed, Gd, XX, XX, 0 },
+Ia_xorl_Ed_Id = { "xor", "xorl", Ed, Id, XX, XX, 0 },
+Ia_xorl_Ed_sIb = { "xor", "xorl", Ed, sIbd, XX, XX, 0 },
+Ia_xorl_Gd_Ed = { "xor", "xorl", Gd, Ed, XX, XX, 0 },
+Ia_xorpd_Vpd_Wpd = { "xorpd", "xorpd", Vpd, Wpd, XX, XX, IA_SSE2 },
+Ia_xorps_Vps_Wps = { "xorps", "xorps", Vps, Wps, XX, XX, IA_SSE },
+Ia_xorq_Eq_Gq = { "xor", "xorq", Eq, Gq, XX, XX, 0 },
+Ia_xorq_Eq_sIb = { "xor", "xorq", Eq, sIbq, XX, XX, 0 },
+Ia_xorq_Eq_sId = { "xor", "xorq", Eq, sIdq, XX, XX, 0 },
+Ia_xorq_Gq_Eq = { "xor", "xorq", Gq, Eq, XX, XX, 0 },
+Ia_xorq_RAX_sId = { "xor", "xorq", RAX_Reg, sIdq, XX, XX, 0 },
+Ia_xorw_AX_Iw = { "xor", "xorw", AX_Reg, Iw, XX, XX, 0 },
+Ia_xorw_Ew_Gw = { "xor", "xorw", Ew, Gw, XX, XX, 0 },
+Ia_xorw_Ew_Iw = { "xor", "xorw", Ew, Iw, XX, XX, 0 },
+Ia_xorw_Ew_sIb = { "xor", "xorw", Ew, sIbw, XX, XX, 0 },
+Ia_xorw_Gw_Ew = { "xor", "xorw", Gw, Ew, XX, XX, 0 },
+Ia_xrstor = { "xrstor", "xrstor", Mx, XX, XX, XX, IA_XSAVE },
+Ia_xsave = { "xsave", "xsave", Mx, XX, XX, XX, IA_XSAVE },
+Ia_xsavec = { "xsavec", "xsavec", Mx, XX, XX, XX, IA_XSAVEC },
+Ia_xsaveopt = { "xsaveopt", "xsaveopt", Mx, XX, XX, XX, IA_XSAVEOPT },
+Ia_xsetbv = { "xsetbv", "xsetbv", XX, XX, XX, XX, IA_XSAVE };
diff --git a/Externals/Bochs_disasm/opcodes.inl b/Externals/Bochs_disasm/opcodes.inl
deleted file mode 100644
index fbb1b7be54..0000000000
--- a/Externals/Bochs_disasm/opcodes.inl
+++ /dev/null
@@ -1,1230 +0,0 @@
-Ia_aaa = { "aaa", "aaa", XX, XX, XX },
-Ia_aad = { "aad", "aad", Ib, XX, XX },
-Ia_aam = { "aam", "aam", Ib, XX, XX },
-Ia_aas = { "aas", "aas", XX, XX, XX },
-Ia_adcb_AL_Ib = { "adc", "adcb", AL, Ib, XX },
-Ia_adcb_Eb_Gb = { "adc", "adcb", Eb, Gb, XX },
-Ia_adcb_Eb_Ib = { "adc", "adcb", Eb, Ib, XX },
-Ia_adcb_Gb_Eb = { "adc", "adcb", Gb, Eb, XX },
-Ia_adcl_EAX_Id = { "adc", "adcl", EAX, Id, XX },
-Ia_adcl_Ed_Gd = { "adc", "adcl", Ed, Gd, XX },
-Ia_adcl_Ed_Id = { "adc", "adcl", Ed, Id, XX },
-Ia_adcl_Ed_sIb = { "adc", "adcl", Ed, sIbd, XX },
-Ia_adcl_Gd_Ed = { "adc", "adcl", Gd, Ed, XX },
-Ia_adcq_Eq_Gq = { "adc", "adcq", Eq, Gq, XX },
-Ia_adcq_Eq_sIb = { "adc", "adcq", Eq, sIbq, XX },
-Ia_adcq_Eq_sId = { "adc", "adcq", Eq, Iq, XX },
-Ia_adcq_Gq_Eq = { "adc", "adcq", Gq, Eq, XX },
-Ia_adcq_RAX_sId = { "adc", "adcq", RAX, sIdq, XX },
-Ia_adcw_AX_Iw = { "adc", "adcw", AX, Iw, XX },
-Ia_adcw_Ew_Gw = { "adc", "adcw", Ew, Gw, XX },
-Ia_adcw_Ew_Iw = { "adc", "adcw", Ew, Iw, XX },
-Ia_adcw_Ew_sIb = { "adc", "adcw", Ew, sIbw, XX },
-Ia_adcw_Gw_Ew = { "adc", "adcw", Gw, Ew, XX },
-Ia_addb_AL_Ib = { "add", "addb", AL, Ib, XX },
-Ia_addb_Eb_Gb = { "add", "addb", Eb, Gb, XX },
-Ia_addb_Eb_Ib = { "add", "addb", Eb, Ib, XX },
-Ia_addb_Gb_Eb = { "add", "addb", Gb, Eb, XX },
-Ia_addl_EAX_Id = { "add", "addl", EAX, Id, XX },
-Ia_addl_Ed_Gd = { "add", "addl", Ed, Gd, XX },
-Ia_addl_Ed_Id = { "add", "addl", Ed, Id, XX },
-Ia_addl_Ed_sIb = { "add", "addl", Ed, sIbd, XX },
-Ia_addl_Gd_Ed = { "add", "addl", Gd, Ed, XX },
-Ia_addpd_Vpd_Wpd = { "addpd", "addpd", Vpd, Wpd, XX },
-Ia_addps_Vps_Wps = { "addps", "addps", Vps, Wps, XX },
-Ia_addq_Eq_Gq = { "add", "addq", Eq, Gq, XX },
-Ia_addq_Eq_sIb = { "add", "addq", Eq, sIbq, XX },
-Ia_addq_Eq_sId = { "add", "addq", Eq, sIdq, XX },
-Ia_addq_Gq_Eq = { "add", "addq", Gq, Eq, XX },
-Ia_addq_RAX_sId = { "add", "addq", RAX, sIdq, XX },
-Ia_addsd_Vsd_Wsd = { "addsd", "addsd", Vsd, Wsd, XX },
-Ia_addss_Vss_Wss = { "addss", "addss", Vss, Wss, XX },
-Ia_addsubpd_Vpd_Wpd = { "addsubpd", "addsubpd", Vpd, Wpd, XX },
-Ia_addsubps_Vps_Wps = { "addsubps", "addsubps", Vps, Wps, XX },
-Ia_addw_AX_Iw = { "add", "addw", AX, Iw, XX },
-Ia_addw_Ew_Gw = { "add", "addw", Ew, Gw, XX },
-Ia_addw_Ew_Iw = { "add", "addw", Ew, Iw, XX },
-Ia_addw_Ew_sIb = { "add", "addw", Ew, sIbw, XX },
-Ia_addw_Gw_Ew = { "add", "addw", Gw, Ew, XX },
-Ia_andb_AL_Ib = { "and", "andb", AL, Ib, XX },
-Ia_andb_Eb_Gb = { "and", "andb", Eb, Gb, XX },
-Ia_andb_Eb_Ib = { "and", "andb", Eb, Ib, XX },
-Ia_andb_Gb_Eb = { "and", "andb", Gb, Eb, XX },
-Ia_andl_EAX_Id = { "and", "andl", EAX, Id, XX },
-Ia_andl_Ed_Gd = { "and", "andl", Ed, Gd, XX },
-Ia_andl_Ed_Id = { "and", "andl", Ed, Id, XX },
-Ia_andl_Ed_sIb = { "and", "andl", Ed, sIbd, XX },
-Ia_andl_Gd_Ed = { "and", "andl", Gd, Ed, XX },
-Ia_andnpd_Vpd_Wpd = { "andnpd", "andnpd", Vpd, Wpd, XX },
-Ia_andnps_Vps_Wps = { "andnps", "andnps", Vps, Wps, XX },
-Ia_andpd_Vpd_Wpd = { "andpd", "andpd", Vpd, Wpd, XX },
-Ia_andps_Vps_Wps = { "andps", "andps", Vps, Wps, XX },
-Ia_andq_Eq_Gq = { "and", "andq", Eq, Gq, XX },
-Ia_andq_Eq_sIb = { "and", "andq", Eq, sIbq, XX },
-Ia_andq_Eq_sId = { "and", "andq", Eq, sIdq, XX },
-Ia_andq_Gq_Eq = { "and", "andq", Gq, Eq, XX },
-Ia_andq_RAX_sId = { "and", "andq", RAX, sIdq, XX },
-Ia_andw_AX_Iw = { "and", "andw", AX, Iw, XX },
-Ia_andw_Ew_Gw = { "and", "andw", Ew, Gw, XX },
-Ia_andw_Ew_Iw = { "and", "andw", Ew, Iw, XX },
-Ia_andw_Ew_sIb = { "and", "andw", Ew, sIbw, XX },
-Ia_andw_Gw_Ew = { "and", "andw", Gw, Ew, XX },
-Ia_arpl_Ew_Rw = { "arpl", "arpl", Ew, Rw, XX },
-Ia_boundl_Gd_Ma = { "bound", "boundl", Gd, Ma, XX },
-Ia_boundw_Gw_Ma = { "bound", "boundw", Gw, Ma, XX },
-Ia_bsfl_Gd_Ed = { "bsf", "bsfl", Gd, Ed, XX },
-Ia_bsfq_Gq_Eq = { "bsf", "bsfq", Gq, Eq, XX },
-Ia_bsfw_Gw_Ew = { "bsf", "bsfw", Gw, Ew, XX },
-Ia_bsrl_Gd_Ed = { "bsr", "bsrl", Gd, Ed, XX },
-Ia_bsrq_Gq_Eq = { "bsr", "bsrq", Gq, Eq, XX },
-Ia_bsrw_Gw_Ew = { "bsr", "bsrw", Gw, Ew, XX },
-Ia_bswapl_ERX = { "bswap", "bswapl", ERX, XX, XX },
-Ia_bswapq_RRX = { "bswap", "bswapq", RRX, XX, XX },
-Ia_btcl_Ed_Gd = { "btc", "btcl", Ed, Gd, XX },
-Ia_btcl_Ed_Ib = { "btc", "btcl", Ed, Ib, XX },
-Ia_btcq_Eq_Gq = { "btc", "btcq", Eq, Gq, XX },
-Ia_btcq_Eq_Ib = { "btc", "btcq", Eq, Ib, XX },
-Ia_btcw_Ew_Gw = { "btc", "btcw", Ew, Gw, XX },
-Ia_btcw_Ew_Ib = { "btc", "btcw", Ew, Ib, XX },
-Ia_btl_Ed_Gd = { "bt", "btl", Ed, Gd, XX },
-Ia_btl_Ed_Ib = { "bt", "btl", Ed, Ib, XX },
-Ia_btq_Eq_Gq = { "bt", "btq", Eq, Gq, XX },
-Ia_btq_Eq_Ib = { "bt", "btq", Eq, Ib, XX },
-Ia_btrl_Ed_Gd = { "btr", "btrl", Ed, Gd, XX },
-Ia_btrl_Ed_Ib = { "btr", "btrl", Ed, Ib, XX },
-Ia_btrq_Eq_Gq = { "btr", "btrq", Eq, Gq, XX },
-Ia_btrq_Eq_Ib = { "btr", "btrq", Eq, Ib, XX },
-Ia_btrw_Ew_Gw = { "btr", "btrw", Ew, Gw, XX },
-Ia_btrw_Ew_Ib = { "btr", "btrw", Ew, Ib, XX },
-Ia_btsl_Ed_Gd = { "bts", "btsl", Ed, Gd, XX },
-Ia_btsl_Ed_Ib = { "bts", "btsl", Ed, Ib, XX },
-Ia_btsq_Eq_Gq = { "bts", "btsq", Eq, Gq, XX },
-Ia_btsq_Eq_Ib = { "bts", "btsq", Eq, Ib, XX },
-Ia_btsw_Ew_Gw = { "bts", "btsw", Ew, Gw, XX },
-Ia_btsw_Ew_Ib = { "bts", "btsw", Ew, Ib, XX },
-Ia_btw_Ew_Gw = { "bt", "btw", Ew, Gw, XX },
-Ia_btw_Ew_Ib = { "bt", "btw", Ew, Ib, XX },
-Ia_call_Ed = { "call", "call", Ed, XX, XX },
-Ia_call_Eq = { "call", "call", Eq, XX, XX },
-Ia_call_Ew = { "call", "call", Ew, XX, XX },
-Ia_call_Jd = { "call", "call", Jd, XX, XX },
-Ia_call_Jw = { "call", "call", Jw, XX, XX },
-Ia_cbw = { "cbw", "cbtw", XX, XX, XX },
-Ia_cdq = { "cdq", "cltd", XX, XX, XX },
-Ia_cdqe = { "cdqe", "cltq", XX, XX, XX },
-Ia_cflush = { "cflush", "cflush", Mb, XX, XX },
-Ia_clc = { "clc", "clc", XX, XX, XX },
-Ia_cld = { "cld", "cld", XX, XX, XX },
-Ia_cli = { "cli", "cli", XX, XX, XX },
-Ia_clts = { "clts", "clts", XX, XX, XX },
-Ia_cmc = { "cmc", "cmc", XX, XX, XX },
-Ia_cmoval_Gd_Ed = { "cmova", "cmoval", Gd, Ed, XX },
-Ia_cmovaq_Gq_Eq = { "cmova", "cmovaq", Gq, Eq, XX },
-Ia_cmovaw_Gw_Ew = { "cmova", "cmovaw", Gw, Ew, XX },
-Ia_cmovcl_Gd_Ed = { "cmovc", "cmovcl", Gd, Ed, XX },
-Ia_cmovcq_Gq_Eq = { "cmovc", "cmovcq", Gq, Eq, XX },
-Ia_cmovcw_Gw_Ew = { "cmovc", "cmovcw", Gw, Ew, XX },
-Ia_cmovgl_Gd_Ed = { "cmovg", "cmovgl", Gd, Ed, XX },
-Ia_cmovgq_Gq_Eq = { "cmovg", "cmovgq", Gq, Eq, XX },
-Ia_cmovgw_Gw_Ew = { "cmovg", "cmovgw", Gw, Ew, XX },
-Ia_cmovll_Gd_Ed = { "cmovl", "cmovll", Gd, Ed, XX },
-Ia_cmovlq_Gq_Eq = { "cmovl", "cmovlq", Gq, Eq, XX },
-Ia_cmovlw_Gw_Ew = { "cmovl", "cmovlw", Gw, Ew, XX },
-Ia_cmovnal_Gd_Ed = { "cmovna", "cmovnal", Gd, Ed, XX },
-Ia_cmovnaq_Gq_Eq = { "cmovna", "cmovnaq", Gq, Eq, XX },
-Ia_cmovnaw_Gw_Ew = { "cmovna", "cmovnaw", Gw, Ew, XX },
-Ia_cmovncl_Gd_Ed = { "cmovnc", "cmovncl", Gd, Ed, XX },
-Ia_cmovncq_Gq_Eq = { "cmovnc", "cmovncq", Gq, Eq, XX },
-Ia_cmovncw_Gw_Ew = { "cmovnc", "cmovncw", Gw, Ew, XX },
-Ia_cmovngl_Gd_Ed = { "cmovng", "cmovngl", Gd, Ed, XX },
-Ia_cmovngq_Gq_Eq = { "cmovng", "cmovngq", Gq, Eq, XX },
-Ia_cmovngw_Gw_Ew = { "cmovng", "cmovngw", Gw, Ew, XX },
-Ia_cmovnll_Gd_Ed = { "cmovnl", "cmovnll", Gd, Ed, XX },
-Ia_cmovnlq_Gq_Eq = { "cmovnl", "cmovnlq", Gq, Eq, XX },
-Ia_cmovnlw_Gw_Ew = { "cmovnl", "cmovnlw", Gw, Ew, XX },
-Ia_cmovnol_Gd_Ed = { "cmovno", "cmovnol", Gd, Ed, XX },
-Ia_cmovnoq_Gq_Eq = { "cmovno", "cmovnoq", Gq, Eq, XX },
-Ia_cmovnow_Gw_Ew = { "cmovno", "cmovnow", Gw, Ew, XX },
-Ia_cmovnpl_Gd_Ed = { "cmovnp", "cmovnpl", Gd, Ed, XX },
-Ia_cmovnpq_Gq_Eq = { "cmovnp", "cmovnpq", Gq, Eq, XX },
-Ia_cmovnpw_Gw_Ew = { "cmovnp", "cmovnpw", Gw, Ew, XX },
-Ia_cmovnsl_Gd_Ed = { "cmovns", "cmovnsl", Gd, Ed, XX },
-Ia_cmovnsq_Gq_Eq = { "cmovns", "cmovnsq", Gq, Eq, XX },
-Ia_cmovnsw_Gw_Ew = { "cmovns", "cmovnsw", Gw, Ew, XX },
-Ia_cmovnzl_Gd_Ed = { "cmovnz", "cmovnzl", Gd, Ed, XX },
-Ia_cmovnzq_Gq_Eq = { "cmovnz", "cmovnzq", Gq, Eq, XX },
-Ia_cmovnzw_Gw_Ew = { "cmovnz", "cmovnzw", Gw, Ew, XX },
-Ia_cmovol_Gd_Ed = { "cmovo", "cmovol", Gd, Ed, XX },
-Ia_cmovoq_Gq_Eq = { "cmovo", "cmovoq", Gq, Eq, XX },
-Ia_cmovow_Gw_Ew = { "cmovo", "cmovow", Gw, Ew, XX },
-Ia_cmovpl_Gd_Ed = { "cmovp", "cmovpl", Gd, Ed, XX },
-Ia_cmovpq_Gq_Eq = { "cmovp", "cmovpq", Gq, Eq, XX },
-Ia_cmovpw_Gw_Ew = { "cmovp", "cmovpw", Gw, Ew, XX },
-Ia_cmovsl_Gd_Ed = { "cmovs", "cmovsl", Gd, Ed, XX },
-Ia_cmovsq_Gq_Eq = { "cmovs", "cmovsq", Gq, Eq, XX },
-Ia_cmovsw_Gw_Ew = { "cmovs", "cmovsw", Gw, Ew, XX },
-Ia_cmovzl_Gd_Ed = { "cmovz", "cmovzl", Gd, Ed, XX },
-Ia_cmovzq_Gq_Eq = { "cmovz", "cmovzq", Gq, Eq, XX },
-Ia_cmovzw_Gw_Ew = { "cmovz", "cmovzw", Gw, Ew, XX },
-Ia_cmpb_AL_Ib = { "cmp", "cmpb", AL, Ib, XX },
-Ia_cmpb_Eb_Gb = { "cmp", "cmpb", Eb, Gb, XX },
-Ia_cmpb_Eb_Ib = { "cmp", "cmpb", Eb, Ib, XX },
-Ia_cmpb_Gb_Eb = { "cmp", "cmpb", Gb, Eb, XX },
-Ia_cmpl_EAX_Id = { "cmp", "cmpl", EAX, Id, XX },
-Ia_cmpl_Ed_Gd = { "cmp", "cmpl", Ed, Gd, XX },
-Ia_cmpl_Ed_Id = { "cmp", "cmpl", Ed, Id, XX },
-Ia_cmpl_Ed_sIb = { "cmp", "cmpl", Ed, sIbd, XX },
-Ia_cmpl_Gd_Ed = { "cmp", "cmpl", Gd, Ed, XX },
-Ia_cmppd_Vpd_Wpd_Ib = { "cmppd", "cmppd", Vpd, Wpd, Ib },
-Ia_cmpps_Vps_Wps_Ib = { "cmpps", "cmpps", Vps, Wps, Ib },
-Ia_cmpq_Eq_Gq = { "cmp", "cmpq", Eq, Gq, XX },
-Ia_cmpq_Eq_sIb = { "cmp", "cmpq", Eq, sIbq, XX },
-Ia_cmpq_Eq_sId = { "cmp", "cmpq", Eq, sIdq, XX },
-Ia_cmpq_Gq_Eq = { "cmp", "cmpq", Gq, Eq, XX },
-Ia_cmpq_RAX_sId = { "cmp", "cmpq", RAX, sIdq, XX },
-Ia_cmpsb_Yb_Xb = { "cmpsb", "cmpsb", Yb, Xb, XX },
-Ia_cmpsd_Vsd_Wsd_Ib = { "cmpsd", "cmpsd", Vsd, Wsd, Ib },
-Ia_cmpsl_Yd_Xd = { "cmpsd", "cmpsl", Yd, Xd, XX },
-Ia_cmpsq_Yq_Xq = { "cmpsq", "cmpsq", Yq, Xq, XX },
-Ia_cmpss_Vss_Wss_Ib = { "cmpss", "cmpss", Vss, Wss, Ib },
-Ia_cmpsw_Yw_Xw = { "cmpsw", "cmpsw", Yw, Xw, XX },
-Ia_cmpw_AX_Iw = { "cmp", "cmpw", AX, Iw, XX },
-Ia_cmpw_Ew_Gw = { "cmp", "cmpw", Ew, Gw, XX },
-Ia_cmpw_Ew_Iw = { "cmp", "cmpw", Ew, Iw, XX },
-Ia_cmpw_Ew_sIb = { "cmp", "cmpw", Ew, sIbw, XX },
-Ia_cmpw_Gw_Ew = { "cmp", "cmpw", Gw, Ew, XX },
-Ia_cmpxchg16b = { "cmpxchg16b", "cmpxchg16b", Mdq, XX, XX },
-Ia_cmpxchg8b = { "cmpxchg8b", "cmpxchg8b", Mq, XX, XX },
-Ia_cmpxchgb_Eb_Gb = { "cmpxchg", "cmpxchgb", Eb, Gb, XX },
-Ia_cmpxchgl_Ed_Gd = { "cmpxchg", "cmpxchgl", Ed, Gd, XX },
-Ia_cmpxchgq_Eq_Gq = { "cmpxchg", "cmpxchgq", Eq, Gq, XX },
-Ia_cmpxchgw_Ew_Gw = { "cmpxchg", "cmpxchgw", Ew, Gw, XX },
-Ia_comisd_Vsd_Wsd = { "comisd", "comisd", Vsd, Wsd, XX },
-Ia_comiss_Vss_Wss = { "comiss", "comiss", Vss, Wss, XX },
-Ia_cpuid = { "cpuid", "cpuid", XX, XX, XX },
-Ia_cqo = { "cqo", "cqto", XX, XX, XX },
-Ia_cvtdq2pd_Vpd_Wq = { "cvtdq2pd", "cvtdq2pd", Vpd, Wq, XX },
-Ia_cvtdq2ps_Vps_Wdq = { "cvtdq2ps", "cvtdq2ps", Vps, Wdq, XX },
-Ia_cvtpd2dq_Vq_Wpd = { "cvtpd2dq", "cvtpd2dq", Vq, Wpd, XX },
-Ia_cvtpd2pi_Pq_Wpd = { "cvtpd2pi", "cvtpd2pi", Pq, Wpd, XX },
-Ia_cvtpd2ps_Vps_Wpd = { "cvtpd2ps", "cvtpd2ps", Vps, Wpd, XX },
-Ia_cvtpi2pd_Vpd_Qq = { "cvtpi2pd", "cvtpi2pd", Vpd, Qq, XX },
-Ia_cvtpi2ps_Vps_Qq = { "cvtpi2ps", "cvtpi2ps", Vps, Qq, XX },
-Ia_cvtps2dq_Vdq_Wps = { "cvtps2dq", "cvtps2dq", Vdq, Wps, XX },
-Ia_cvtps2pd_Vpd_Wps = { "cvtps2pd", "cvtps2pd", Vpd, Wps, XX },
-Ia_cvtps2pi_Pq_Wps = { "cvtps2pi", "cvtps2pi", Pq, Wps, XX },
-Ia_cvtsd2si_Gd_Wsd = { "cvtsd2si", "cvtsd2si", Gd, Wsd, XX },
-Ia_cvtsd2si_Gq_Wsd = { "cvtsd2si", "cvtsd2si", Gq, Wsd, XX },
-Ia_cvtsd2ss_Vss_Wsd = { "cvtsd2ss", "cvtsd2ss", Vss, Wsd, XX },
-Ia_cvtsi2sd_Vsd_Ed = { "cvtsi2sd", "cvtsi2sd", Vsd, Ed, XX },
-Ia_cvtsi2sd_Vsd_Eq = { "cvtsi2sd", "cvtsi2sd", Vsd, Eq, XX },
-Ia_cvtsi2ss_Vss_Ed = { "cvtsi2ss", "cvtsi2ss", Vss, Ed, XX },
-Ia_cvtsi2ss_Vss_Eq = { "cvtsi2ss", "cvtsi2ss", Vss, Eq, XX },
-Ia_cvtss2sd_Vsd_Wss = { "cvtss2sd", "cvtss2sd", Vsd, Wss, XX },
-Ia_cvtss2si_Gd_Wss = { "cvtss2si", "cvtss2si", Gd, Wss, XX },
-Ia_cvtss2si_Gq_Wss = { "cvtss2si", "cvtss2si", Gq, Wss, XX },
-Ia_cvttpd2dq_Vq_Wpd = { "cvttpd2dq", "cvttpd2dq", Vq, Wpd, XX },
-Ia_cvttpd2pi_Pq_Wpd = { "cvttpd2pi", "cvttpd2pi", Pq, Wpd, XX },
-Ia_cvttps2dq_Vdq_Wps = { "cvttps2dq", "cvttps2dq", Vdq, Wps, XX },
-Ia_cvttps2pi_Pq_Wps = { "cvttps2pi", "cvttps2pi", Pq, Wps, XX },
-Ia_cvttsd2si_Gd_Wsd = { "cvttsd2si", "cvttsd2si", Gd, Wsd, XX },
-Ia_cvttsd2si_Gq_Wsd = { "cvttsd2si", "cvttsd2si", Gq, Wsd, XX },
-Ia_cvttss2si_Gd_Wss = { "cvttss2si", "cvttss2si", Gd, Wss, XX },
-Ia_cvttss2si_Gq_Wss = { "cvttss2si", "cvttss2si", Gq, Wss, XX },
-Ia_cwd = { "cwd", "cwtd", XX, XX, XX },
-Ia_cwde = { "cwde", "cwtl", XX, XX, XX },
-Ia_daa = { "daa", "daa", XX, XX, XX },
-Ia_das = { "das", "das", XX, XX, XX },
-Ia_decb_Eb = { "dec", "decb", Eb, XX, XX },
-Ia_decl_Ed = { "dec", "decl", Ed, XX, XX },
-Ia_decl_ERX = { "dec", "decl", ERX, XX, XX },
-Ia_decq_Eq = { "dec", "decq", Eq, XX, XX },
-Ia_decw_Ew = { "dec", "decw", Ew, XX, XX },
-Ia_decw_RX = { "dec", "decw", RX, XX, XX },
-Ia_divb_AL_Eb = { "div", "divb", AL, Eb, XX },
-Ia_divl_EAX_Ed = { "div", "divl", EAX, Ed, XX },
-Ia_divpd_Vpd_Wpd = { "divpd", "divpd", Vpd, Wpd, XX },
-Ia_divps_Vps_Wps = { "divps", "divps", Vps, Wps, XX },
-Ia_divq_RAX_Eq = { "div", "divq", RAX, Eq, XX },
-Ia_divsd_Vsd_Wsd = { "divsd", "divsd", Vsd, Wsd, XX },
-Ia_divss_Vss_Wss = { "divss", "divss", Vss, Wss, XX },
-Ia_divw_AX_Ew = { "div", "divw", AX, Ew, XX },
-Ia_emms = { "emms", "emms", XX, XX, XX },
-Ia_enter = { "enter", "enter", IwIb, XX, XX },
-Ia_error = { "(error)", "(error)", XX, XX, XX },
-Ia_f2xm1 = { "f2xm1", "f2xm1", XX, XX, XX },
-Ia_fabs = { "fabs", "fabs", XX, XX, XX },
-Ia_fadd_ST0_STi = { "fadd", "fadd", ST0, STi, XX },
-Ia_fadd_STi_ST0 = { "fadd", "fadd", STi, ST0, XX },
-Ia_faddl_Mq = { "fadd", "faddl", Mq, XX, XX },
-Ia_faddp_STi_ST0 = { "faddp", "faddp", STi, ST0, XX },
-Ia_fadds_Md = { "fadd", "fadds", Md, XX, XX },
-Ia_fbldt_Mt = { "fbld", "fbldt", Mt, XX, XX },
-Ia_fbstpt_Mt = { "fbstp", "fbstpt", Mt, XX, XX },
-Ia_fchs = { "fchs", "fchs", XX, XX, XX },
-Ia_fcmovb_ST0_STi = { "fcmovb", "fcmovb", ST0, STi, XX },
-Ia_fcmovbe_ST0_STi = { "fcmovbe", "fcmovbe", ST0, STi, XX },
-Ia_fcmove_ST0_STi = { "fcmove", "fcmove", ST0, STi, XX },
-Ia_fcmovnb_ST0_STi = { "fcmovnb", "fcmovnb", ST0, STi, XX },
-Ia_fcmovnbe_ST0_STi = { "fcmovnbe", "fcmovnbe", ST0, STi, XX },
-Ia_fcmovne_ST0_STi = { "fcmovne", "fcmovne", ST0, STi, XX },
-Ia_fcmovnu_ST0_STi = { "fcmovnu", "fcmovnu", ST0, STi, XX },
-Ia_fcmovu_ST0_STi = { "fcmovu", "fcmovu", ST0, STi, XX },
-Ia_fcom_STi = { "fcom", "fcom", STi, XX, XX },
-Ia_fcomi_ST0_STi = { "fcomi", "fcomi", ST0, STi, XX },
-Ia_fcomip_ST0_STi = { "fcomip", "fcomip", ST0, STi, XX },
-Ia_fcoml_Mq = { "fcom", "fcoml", Mq, XX, XX },
-Ia_fcomp_STi = { "fcomp", "fcomp", STi, XX, XX },
-Ia_fcompl_Mq = { "fcomp", "fcompl", Mq, XX, XX },
-Ia_fcompp = { "fcompp", "fcompp", XX, XX, XX },
-Ia_fcomps_Md = { "fcomp", "fcomps", Md, XX, XX },
-Ia_fcoms_Md = { "fcom", "fcoms", Md, XX, XX },
-Ia_fcos = { "fcos", "fcos", XX, XX, XX },
-Ia_fdecstp = { "fdecstp", "fdecstp", XX, XX, XX },
-Ia_fdisi = { "fdisi (287 legacy)", "fdisi (287 legacy)", XX, XX, XX },
-Ia_fdiv_ST0_STi = { "fdiv", "fdiv", ST0, STi, XX },
-Ia_fdiv_STi_ST0 = { "fdiv", "fdiv", STi, ST0, XX },
-Ia_fdivl_Mq = { "fdiv", "fdivl", Mq, XX, XX },
-Ia_fdivp_STi_ST0 = { "fdivp", "fdivp", STi, ST0, XX },
-Ia_fdivr_ST0_STi = { "fdivr", "fdivr", ST0, STi, XX },
-Ia_fdivr_STi_ST0 = { "fdivr", "fdivr", STi, ST0, XX },
-Ia_fdivrl_Mq = { "fdivr", "fdivrl", Mq, XX, XX },
-Ia_fdivrp_STi_ST0 = { "fdivrp", "fdivrp", STi, ST0, XX },
-Ia_fdivrs_Md = { "fdivr", "fdivrs", Md, XX, XX },
-Ia_fdivs_Md = { "fdiv", "fdivs", Md, XX, XX },
-Ia_femms = { "femms", "femms", XX, XX, XX },
-Ia_feni = { "feni (287 legacy)", "feni(287 legacy)", XX, XX, XX },
-Ia_ffree_STi = { "ffree", "ffree", STi, XX, XX },
-Ia_ffreep_STi = { "ffreep", "ffreep", STi, XX, XX },
-Ia_fiaddl_Md = { "fiadd", "fiaddl", Md, XX, XX },
-Ia_fiadds_Mw = { "fiadd", "fiadds", Mw, XX, XX },
-Ia_ficoml_Md = { "ficom", "ficoml", Md, XX, XX },
-Ia_ficompl_Md = { "ficomp", "ficompl", Md, XX, XX },
-Ia_ficomps_Mw = { "ficomp", "ficomps", Mw, XX, XX },
-Ia_ficoms_Mw = { "ficom", "ficoms", Mw, XX, XX },
-Ia_fidivl_Md = { "fidiv", "fidivl", Md, XX, XX },
-Ia_fidivrl_Md = { "fidivr", "fidivrl", Md, XX, XX },
-Ia_fidivrs_Mw = { "fidivr", "fidivrs", Mw, XX, XX },
-Ia_fidivs_Mw = { "fidiv", "fidivs", Mw, XX, XX },
-Ia_fildl_Md = { "fild", "fildl", Md, XX, XX },
-Ia_fildq_Mq = { "fild", "fildq", Mq, XX, XX },
-Ia_filds_Mw = { "fild", "filds", Mw, XX, XX },
-Ia_fimull_Md = { "fimul", "fimull", Md, XX, XX },
-Ia_fimuls_Mw = { "fimul", "fimuls", Mw, XX, XX },
-Ia_fincstp = { "fincstp", "fincstp", XX, XX, XX },
-Ia_fistl_Md = { "fist", "fistl", Md, XX, XX },
-Ia_fistpl_Md = { "fistp", "fistpl", Md, XX, XX },
-Ia_fistpq_Mq = { "fistp", "fistpq", Mq, XX, XX },
-Ia_fistps_Mw = { "fistp", "fistps", Mw, XX, XX },
-Ia_fists_Mw = { "fist", "fists", Mw, XX, XX },
-Ia_fisttpl_Md = { "fisttp", "fisttpl", Md, XX, XX },
-Ia_fisttpq_Mq = { "fisttp", "fisttpq", Mq, XX, XX },
-Ia_fisttps_Mw = { "fisttp", "fisttps", Mw, XX, XX },
-Ia_fisubl_Md = { "fisub", "fisubl", Md, XX, XX },
-Ia_fisubrl_Md = { "fisubr", "fisubrl", Md, XX, XX },
-Ia_fisubrs_Mw = { "fisubr", "fisubrs", Mw, XX, XX },
-Ia_fisubs_Mw = { "fisub", "fisubs", Mw, XX, XX },
-Ia_fld_STi = { "fld", "fld", STi, XX, XX },
-Ia_fld1 = { "fld1", "fld1", XX, XX, XX },
-Ia_fldcw = { "fldcw", "fldcw", Ew, XX, XX },
-Ia_fldenv = { "fldenv", "fldenv", Mx, XX, XX },
-Ia_fldl_Mq = { "fld", "fldl", Mq, XX, XX },
-Ia_fldl2e = { "fldl2e", "fldl2e", XX, XX, XX },
-Ia_fldl2t = { "fldl2t", "fldl2t", XX, XX, XX },
-Ia_fldlg2 = { "fldlg2", "fldlg2", XX, XX, XX },
-Ia_fldln2 = { "fldln2", "fldln2", XX, XX, XX },
-Ia_fldpi = { "fldpi", "fldpi", XX, XX, XX },
-Ia_flds_Md = { "fld", "flds", Md, XX, XX },
-Ia_fldt_Mt = { "fld", "fldt", Mt, XX, XX },
-Ia_fldz = { "fldz", "fldz", XX, XX, XX },
-Ia_fmul_ST0_STi = { "fmul", "fmul", ST0, STi, XX },
-Ia_fmul_STi_ST0 = { "fmul", "fmul", STi, ST0, XX },
-Ia_fmull_Mq = { "fmul", "fmull", Mq, XX, XX },
-Ia_fmulp_STi_ST0 = { "fmulp", "fmulp", STi, ST0, XX },
-Ia_fmuls_Md = { "fmul", "fmuls", Md, XX, XX },
-Ia_fnclex = { "fnclex", "fnclex", XX, XX, XX },
-Ia_fninit = { "fninit", "fninit", XX, XX, XX },
-Ia_fnop = { "fnop", "fnop", XX, XX, XX },
-Ia_fnsave = { "fnsave", "fnsave", Mx, XX, XX },
-Ia_fnstcw = { "fnstcw", "fnstcw", Mw, XX, XX },
-Ia_fnstenv = { "fnstenv", "fnstenv", Mx, XX, XX },
-Ia_fnstsw = { "fnstsw", "fnstsw", Mw, XX, XX },
-Ia_fnstsw_AX = { "fnstsw", "fnstsw", AX, XX, XX },
-Ia_fpatan = { "fpatan", "fpatan", XX, XX, XX },
-Ia_fprem = { "fprem", "fprem", XX, XX, XX },
-Ia_fprem1 = { "fprem1", "fprem1", XX, XX, XX },
-Ia_fptan = { "fptan", "fptan", XX, XX, XX },
-Ia_frndint = { "frndint", "frndint", XX, XX, XX },
-Ia_frstor = { "frstor", "frstor", Mx, XX, XX },
-Ia_fscale = { "fscale", "fscale", XX, XX, XX },
-Ia_fsetpm = { "fsetpm (287 legacy)", "fsetpm (287 legacy)", XX, XX, XX },
-Ia_fsin = { "fsin", "fsin", XX, XX, XX },
-Ia_fsincos = { "fsincos", "fsincos", XX, XX, XX },
-Ia_fsqrt = { "fsqrt", "fsqrt", XX, XX, XX },
-Ia_fst_STi = { "fst", "fst", STi, XX, XX },
-Ia_fstl_Mq = { "fst", "fstl", Mq, XX, XX },
-Ia_fstp_STi = { "fstp", "fstp", STi, XX, XX },
-Ia_fstpl_Mq = { "fstp", "fstpl", Mq, XX, XX },
-Ia_fstps_Md = { "fstp", "fstps", Md, XX, XX },
-Ia_fstpt_Mt = { "fstp", "fstpt", Mt, XX, XX },
-Ia_fsts_Md = { "fst", "fsts", Md, XX, XX },
-Ia_fsub_ST0_STi = { "fsub", "fsub", ST0, STi, XX },
-Ia_fsub_STi_ST0 = { "fsub", "fsub", STi, ST0, XX },
-Ia_fsubl_Mq = { "fsub", "fsubl", Mq, XX, XX },
-Ia_fsubp_STi_ST0 = { "fsubp", "fsubp", STi, ST0, XX },
-Ia_fsubr_ST0_STi = { "fsubr", "fsubr", ST0, STi, XX },
-Ia_fsubr_STi_ST0 = { "fsubr", "fsubr", STi, ST0, XX },
-Ia_fsubrl_Mq = { "fsubr", "fsubrl", Mq, XX, XX },
-Ia_fsubrp_STi_ST0 = { "fsubrp", "fsubrp", STi, ST0, XX },
-Ia_fsubrs_Md = { "fsubr", "fsubrs", Md, XX, XX },
-Ia_fsubs_Md = { "fsub", "fsubs", Md, XX, XX },
-Ia_ftst = { "ftst", "ftst", XX, XX, XX },
-Ia_fucom_STi = { "fucom", "fucom", STi, XX, XX },
-Ia_fucomi_ST0_STi = { "fucomi", "fucomi", ST0, STi, XX },
-Ia_fucomip_ST0_STi = { "fucomip", "fucomip", ST0, STi, XX },
-Ia_fucomp_STi = { "fucomp", "fucomp", STi, XX, XX },
-Ia_fucompp = { "fucompp", "fucompp", XX, XX, XX },
-Ia_fwait = { "fwait", "fwait", XX, XX, XX },
-Ia_fxam = { "fxam", "fxam", XX, XX, XX },
-Ia_fxch = { "fxch", "fxch", STi, XX, XX },
-Ia_fxrstor = { "fxrstor", "fxrstor", Mx, XX, XX },
-Ia_fxsave = { "fxsave", "fxsave", Mx, XX, XX },
-Ia_fxtract = { "fxtract", "fxtract", XX, XX, XX },
-Ia_fyl2x = { "fyl2x", "fyl2x", XX, XX, XX },
-Ia_fyl2xp1 = { "fyl2xp1", "fyl2xp1", XX, XX, XX },
-Ia_haddpd_Vpd_Wpd = { "haddpd", "haddpd", Vpd, Wpd, XX },
-Ia_haddps_Vps_Wps = { "haddps", "haddps", Vps, Wps, XX },
-Ia_hlt = { "hlt", "hlt", XX, XX, XX },
-Ia_hsubpd_Vpd_Wpd = { "hsubpd", "hsubpd", Vpd, Wpd, XX },
-Ia_hsubps_Vps_Wps = { "hsubps", "hsubps", Vps, Wps, XX },
-Ia_idivb_AL_Eb = { "idiv", "idivb", AL, Eb, XX },
-Ia_idivl_EAX_Ed = { "idiv", "idivl", EAX, Ed, XX },
-Ia_idivq_RAX_Eq = { "idiv", "idivq", RAX, Eq, XX },
-Ia_idivw_AX_Ew = { "idiv", "idivw", AX, Ew, XX },
-Ia_imulb_AL_Eb = { "imul", "imulb", AL, Eb, XX },
-Ia_imull_EAX_Ed = { "imul", "imull", EAX, Ed, XX },
-Ia_imull_Gd_Ed = { "imul", "imull", Gd, Ed, XX },
-Ia_imull_Gd_Ed_Id = { "imul", "imull", Gd, Ed, Id },
-Ia_imull_Gd_Ed_sIb = { "imul", "imull", Gd, Ed, sIbd },
-Ia_imulq_Gq_Eq = { "imul", "imulq", Gq, Eq, XX },
-Ia_imulq_Gq_Eq_sIb = { "imul", "imulq", Gq, Eq, sIbq },
-Ia_imulq_Gq_Eq_sId = { "imul", "imulq", Gq, Eq, sIdq },
-Ia_imulq_RAX_Eq = { "imul", "imulq", RAX, Eq, XX },
-Ia_imulw_AX_Ew = { "imul", "imulw", AX, Ew, XX },
-Ia_imulw_Gw_Ew = { "imul", "imulw", Gw, Ew, XX },
-Ia_imulw_Gw_Ew_Iw = { "imul", "imulw", Gw, Ew, Iw },
-Ia_imulw_Gw_Ew_sIb = { "imul", "imulw", Gw, Ew, sIbw },
-Ia_inb_AL_DX = { "in", "inb", AL, DX, XX },
-Ia_inb_AL_Ib = { "in", "inb", AL, Ib, XX },
-Ia_incb_Eb = { "inc", "incb", Eb, XX, XX },
-Ia_incl_Ed = { "inc", "incl", Ed, XX, XX },
-Ia_incl_ERX = { "inc", "incl", ERX, XX, XX },
-Ia_incq_Eq = { "inc", "incq", Eq, XX, XX },
-Ia_incw_Ew = { "inc", "incw", Ew, XX, XX },
-Ia_incw_RX = { "inc", "incw", RX, XX, XX },
-Ia_inl_EAX_DX = { "in", "inl", EAX, DX, XX },
-Ia_inl_EAX_Ib = { "in", "inl", EAX, Ib, XX },
-Ia_insb_Yb_DX = { "insb", "insb", Yb, DX, XX },
-Ia_insl_Yd_DX = { "insd", "insl", Yd, DX, XX },
-Ia_insw_Yw_DX = { "insw", "insw", Yw, DX, XX },
-Ia_int_Ib = { "int", "int", Ib, XX, XX },
-Ia_int1 = { "int1", "int1", XX, XX, XX },
-Ia_int3 = { "int3", "int3", XX, XX, XX },
-Ia_into = { "into", "into", XX, XX, XX },
-Ia_Invalid = { "(invalid)", "(invalid)", XX, XX, XX },
-Ia_invd = { "invd", "invd", XX, XX, XX },
-Ia_invlpg = { "invlpg", "invlpg", Mx, XX, XX },
-Ia_inw_AX_DX = { "in", "inw", AX, DX, XX },
-Ia_inw_AX_Ib = { "in", "inw", AX, Ib, XX },
-Ia_iretl = { "iretd", "iretd", XX, XX, XX },
-Ia_iretq = { "iretq", "iretq", XX, XX, XX },
-Ia_iretw = { "iret", "iretw", XX, XX, XX },
-Ia_jb_Jb = { "jb", "jb", Jb, XX, XX },
-Ia_jb_Jd = { "jb", "jb", Jd, XX, XX },
-Ia_jb_Jw = { "jb", "jb", Jw, XX, XX },
-Ia_jbe_Jb = { "jbe", "jbe", Jb, XX, XX },
-Ia_jbe_Jd = { "jbe", "jbe", Jd, XX, XX },
-Ia_jbe_Jw = { "jbe", "jbe", Jw, XX, XX },
-Ia_jcxz_Jb = { "jcxz", "jcxz", Jb, XX, XX },
-Ia_jecxz_Jb = { "jecxz", "jecxz", Jb, XX, XX },
-Ia_jl_Jb = { "jl", "jl", Jb, XX, XX },
-Ia_jl_Jd = { "jl", "jl", Jd, XX, XX },
-Ia_jl_Jw = { "jl", "jl", Jw, XX, XX },
-Ia_jle_Jb = { "jle", "jle", Jb, XX, XX },
-Ia_jle_Jd = { "jle", "jle", Jd, XX, XX },
-Ia_jle_Jw = { "jle", "jle", Jw, XX, XX },
-Ia_jmp_Ed = { "jmp", "jmp", Ed, XX, XX },
-Ia_jmp_Eq = { "jmp", "jmp", Eq, XX, XX },
-Ia_jmp_Ew = { "jmp", "jmp", Ew, XX, XX },
-Ia_jmp_Jb = { "jmp", "jmp", Jb, XX, XX },
-Ia_jmp_Jd = { "jmp", "jmp", Jd, XX, XX },
-Ia_jmp_Jw = { "jmp", "jmp", Jw, XX, XX },
-Ia_jnb_Jb = { "jnb", "jnb", Jb, XX, XX },
-Ia_jnb_Jd = { "jnb", "jnb", Jd, XX, XX },
-Ia_jnb_Jw = { "jnb", "jnb", Jw, XX, XX },
-Ia_jnbe_Jb = { "jnbe", "jnbe", Jb, XX, XX },
-Ia_jnbe_Jd = { "jnbe", "jnbe", Jd, XX, XX },
-Ia_jnbe_Jw = { "jnbe", "jnbe", Jw, XX, XX },
-Ia_jnl_Jb = { "jnl", "jnl", Jb, XX, XX },
-Ia_jnl_Jd = { "jnl", "jnl", Jd, XX, XX },
-Ia_jnl_Jw = { "jnl", "jnl", Jw, XX, XX },
-Ia_jnle_Jb = { "jnle", "jnle", Jb, XX, XX },
-Ia_jnle_Jd = { "jnle", "jnle", Jd, XX, XX },
-Ia_jnle_Jw = { "jnle", "jnle", Jw, XX, XX },
-Ia_jno_Jb = { "jno", "jno", Jb, XX, XX },
-Ia_jno_Jd = { "jno", "jno", Jd, XX, XX },
-Ia_jno_Jw = { "jno", "jno", Jw, XX, XX },
-Ia_jnp_Jb = { "jnp", "jnp", Jb, XX, XX },
-Ia_jnp_Jd = { "jnp", "jnp", Jd, XX, XX },
-Ia_jnp_Jw = { "jnp", "jnp", Jw, XX, XX },
-Ia_jns_Jb = { "jns", "jns", Jb, XX, XX },
-Ia_jns_Jd = { "jns", "jns", Jd, XX, XX },
-Ia_jns_Jw = { "jns", "jns", Jw, XX, XX },
-Ia_jnz_Jb = { "jnz", "jnz", Jb, XX, XX },
-Ia_jnz_Jd = { "jnz", "jnz", Jd, XX, XX },
-Ia_jnz_Jw = { "jnz", "jnz", Jw, XX, XX },
-Ia_jo_Jb = { "jo", "jo", Jb, XX, XX },
-Ia_jo_Jd = { "jo", "jo", Jd, XX, XX },
-Ia_jo_Jw = { "jo", "jo", Jw, XX, XX },
-Ia_jp_Jb = { "jp", "jp", Jb, XX, XX },
-Ia_jp_Jd = { "jp", "jp", Jd, XX, XX },
-Ia_jp_Jw = { "jp", "jp", Jw, XX, XX },
-Ia_jrcxz_Jb = { "jrcxz", "jrcxz", Jb, XX, XX },
-Ia_js_Jb = { "js", "js", Jb, XX, XX },
-Ia_js_Jd = { "js", "js", Jd, XX, XX },
-Ia_js_Jw = { "js", "js", Jw, XX, XX },
-Ia_jz_Jb = { "jz", "jz", Jb, XX, XX },
-Ia_jz_Jd = { "jz", "jz", Jd, XX, XX },
-Ia_jz_Jw = { "jz", "jz", Jw, XX, XX },
-Ia_lahf = { "lahf", "lahf", XX, XX, XX },
-Ia_larl_Gd_Ew = { "lar", "larl", Gd, Ew, XX },
-Ia_larq_Gq_Ew = { "lar", "larq", Gq, Ew, XX },
-Ia_larw_Gw_Ew = { "lar", "larw", Gw, Ew, XX },
-Ia_lcall_Apd = { "call far", "lcall", Apd, XX, XX },
-Ia_lcall_Apw = { "call far", "lcall", Apw, XX, XX },
-Ia_lcall_Mp = { "call far", "lcall", Mp, XX, XX },
-Ia_lddqu_Vdq_Mdq = { "lddqu", "lddqu", Vdq, Mdq, XX },
-Ia_ldmxcsr = { "ldmxcsr", "ldmxcsr", Md, XX, XX },
-Ia_ldsl_Gd_Mp = { "lds", "ldsl", Gd, Mp, XX },
-Ia_ldsw_Gw_Mp = { "lds", "ldsw", Gw, Mp, XX },
-Ia_leal_Gd_Md = { "lea", "leal", Gd, Md, XX },
-Ia_leaq_Gq_Mq = { "lea", "leaq", Gq, Mq, XX },
-Ia_leave = { "leave", "leave", XX, XX, XX },
-Ia_leaw_Gw_Mw = { "lea", "leaw", Gw, Mw, XX },
-Ia_lesl_Gd_Mp = { "les", "lesl", Gd, Mp, XX },
-Ia_lesw_Gw_Mp = { "les", "lesw", Gw, Mp, XX },
-Ia_lfence = { "lfence", "lfence", XX, XX, XX },
-Ia_lfsl_Gd_Mp = { "lfs", "lfsl", Gd, Mp, XX },
-Ia_lfsq_Gq_Mp = { "lfs", "lfsq", Gq, Mp, XX },
-Ia_lfsw_Gw_Mp = { "lfs", "lfsw", Gw, Mp, XX },
-Ia_lgdt = { "lgdt", "lgdt", Ms, XX, XX },
-Ia_lgsl_Gd_Mp = { "lgs", "lgsl", Gd, Mp, XX },
-Ia_lgsq_Gq_Mp = { "lgs", "lgsq", Gq, Mp, XX },
-Ia_lgsw_Gw_Mp = { "lgs", "lgsw", Gw, Mp, XX },
-Ia_lidt = { "lidt", "lidt", Ms, XX, XX },
-Ia_ljmp_Apd = { "jmp far", "ljmp", Apd, XX, XX },
-Ia_ljmp_Apw = { "jmp far", "ljmp", Apw, XX, XX },
-Ia_ljmp_Mp = { "jmp far", "ljmp", Mp, XX, XX },
-Ia_lldt = { "lldt", "lldt", Ew, XX, XX },
-Ia_lmsw_Ew = { "lmsw", "lmsw", Ew, XX, XX },
-Ia_lodsb_AL_Xb = { "lodsb", "lodsb", AL, Xb, XX },
-Ia_lodsl_EAX_Xd = { "lodsd", "lodsl", EAX, Xd, XX },
-Ia_lodsq_RAX_Xq = { "lodsq", "lodsq", RAX, Xq, XX },
-Ia_lodsw_AX_Xw = { "lodsw", "lodsw", AX, Xw, XX },
-Ia_loop_Jb = { "loop", "loop", Jb, XX, XX },
-Ia_loope_Jb = { "loope", "loope", Jb, XX, XX },
-Ia_loopne_Jb = { "loopne", "loopne", Jb, XX, XX },
-Ia_lret = { "retf", "lret", XX, XX, XX },
-Ia_lret_Iw = { "retf", "lret", Iw, XX, XX },
-Ia_lsll_Gd_Ew = { "lsl", "lsll", Gd, Ew, XX },
-Ia_lslq_Gq_Ew = { "lsl", "lslq", Gq, Ew, XX },
-Ia_lslw_Gw_Ew = { "lsl", "lslw", Gw, Ew, XX },
-Ia_lssl_Gd_Mp = { "lss", "lssl", Gd, Mp, XX },
-Ia_lssq_Gq_Mp = { "lss", "lssq", Gq, Mp, XX },
-Ia_lssw_Gw_Mp = { "lss", "lssw", Gw, Mp, XX },
-Ia_ltr = { "ltr", "ltr", Ew, XX, XX },
-Ia_maskmovdqu_Vdq_Udq = { "maskmovdqu", "maskmovdqu", Vdq, Udq, XX },
-Ia_maskmovq_Pq_Nq = { "maskmovq", "maskmovq", Pq, Nq, XX },
-Ia_maxpd_Vpd_Wpd = { "maxpd", "maxpd", Vpd, Wpd, XX },
-Ia_maxps_Vps_Wps = { "maxps", "maxps", Vps, Wps, XX },
-Ia_maxsd_Vsd_Wsd = { "maxsd", "maxsd", Vsd, Wsd, XX },
-Ia_maxss_Vss_Wss = { "maxss", "maxss", Vss, Wss, XX },
-Ia_mfence = { "mfence", "mfence", XX, XX, XX },
-Ia_minpd_Vpd_Wpd = { "minpd", "minpd", Vpd, Wpd, XX },
-Ia_minps_Vps_Wps = { "minps", "minps", Vps, Wps, XX },
-Ia_minsd_Vsd_Wsd = { "minsd", "minsd", Vsd, Wsd, XX },
-Ia_minss_Vss_Wss = { "minss", "minss", Vss, Wss, XX },
-Ia_monitor = { "monitor", "monitor", XX, XX, XX },
-Ia_movapd_Vpd_Wpd = { "movapd", "movapd", Vpd, Wpd, XX },
-Ia_movapd_Wpd_Vpd = { "movapd", "movapd", Wpd, Vpd, XX },
-Ia_movaps_Vps_Wps = { "movaps", "movaps", Vps, Wps, XX },
-Ia_movaps_Wps_Vps = { "movaps", "movaps", Wps, Vps, XX },
-Ia_movb_AL_Ob = { "mov", "movb", AL, Ob, XX },
-Ia_movb_Eb_Gb = { "mov", "movb", Eb, Gb, XX },
-Ia_movb_Eb_Ib = { "mov", "movb", Eb, Ib, XX },
-Ia_movb_Gb_Eb = { "mov", "movb", Gb, Eb, XX },
-Ia_movb_Ob_AL = { "mov", "movb", Ob, AL, XX },
-Ia_movb_R8_Ib = { "mov", "movb", R8, Ib, XX },
-Ia_movd_Ed_Pq = { "movd", "movd", Ed, Pq, XX },
-Ia_movd_Ed_Vd = { "movd", "movd", Ed, Vdq, XX },
-Ia_movd_Pq_Ed = { "movd", "movd", Pq, Ed, XX },
-Ia_movd_Vdq_Ed = { "movd", "movd", Vdq, Ed, XX },
-Ia_movddup_Vdq_Wq = { "movddup", "movddup", Vdq, Wq, XX },
-Ia_movdq2q_Pq_Vq = { "movdq2q", "movdq2q", Pq, Vq, XX },
-Ia_movdqa_Vdq_Wdq = { "movdqa", "movdqa", Vdq, Wdq, XX },
-Ia_movdqa_Wdq_Vdq = { "movdqa", "movdqa", Wdq, Vdq, XX },
-Ia_movdqu_Vdq_Wdq = { "movdqu", "movdqu", Vdq, Wdq, XX },
-Ia_movdqu_Wdq_Vdq = { "movdqu", "movdqu", Wdq, Vdq, XX },
-Ia_movhlpd_Vpd_Uq = { "movhlpd", "movhlpd", Vpd, Udq, XX },
-Ia_movhlps_Vps_Uq = { "movhlps", "movhlps", Vps, Udq, XX },
-Ia_movhpd_Mq_Vpd = { "movhpd", "movhpd", Mq, Vpd, XX },
-Ia_movhpd_Vpd_Mq = { "movhpd", "movhpd", Vpd, Mq, XX },
-Ia_movhps_Mq_Vps = { "movhps", "movhps", Mq, Vps, XX },
-Ia_movhps_Vps_Mq = { "movhps", "movhps", Vps, Mq, XX },
-Ia_movl_Cd_Rd = { "mov", "movl", Cd, Rd, XX },
-Ia_movl_Dd_Rd = { "mov", "movl", Dd, Rd, XX },
-Ia_movl_EAX_Od = { "mov", "movl", EAX, Od, XX },
-Ia_movl_Ed_Gd = { "mov", "movl", Ed, Gd, XX },
-Ia_movl_Ed_Id = { "mov", "movl", Ed, Id, XX },
-Ia_movl_ERX_Id = { "mov", "movl", ERX, Id, XX },
-Ia_movl_Gd_Ed = { "mov", "movl", Gd, Ed, XX },
-Ia_movl_Od_EAX = { "mov", "movl", Od, EAX, XX },
-Ia_movl_Rd_Cd = { "mov", "movl", Rd, Cd, XX },
-Ia_movl_Rd_Dd = { "mov", "movl", Rd, Dd, XX },
-Ia_movl_Rd_Td = { "mov", "movl", Rd, Td, XX },
-Ia_movl_Td_Rd = { "mov", "movl", Td, Rd, XX },
-Ia_movlhpd_Vpd_Uq = { "movlhpd", "movlhpd", Vpd, Udq, XX },
-Ia_movlhps_Vps_Uq = { "movlhps", "movlhps", Vps, Udq, XX },
-Ia_movlpd_Mq_Vpd = { "movlpd", "movlpd", Mq, Vpd, XX },
-Ia_movlpd_Vpd_Mq = { "movlpd", "movlpd", Vpd, Mq, XX },
-Ia_movlps_Mq_Vps = { "movlps", "movlps", Mq, Vps, XX },
-Ia_movlps_Vps_Mq = { "movlps", "movlps", Vps, Mq, XX },
-Ia_movmskpd_Gd_Vpd = { "movmskpd", "movmskpd", Gd, Vpd, XX },
-Ia_movmskps_Gd_Vps = { "movmskps", "movmskps", Gd, Vps, XX },
-Ia_movntdq_Mdq_Vdq = { "movntdq", "movntdq", Mdq, Vdq, XX },
-Ia_movnti_Md_Gd = { "movnti", "movnti", Md, Gd, XX },
-Ia_movntiq_Mq_Gq = { "movntiq", "movntiq", Mq, Gq, XX },
-Ia_movntpd_Mpd_Vpd = { "movntpd", "movntpd", Mpd, Vpd, XX },
-Ia_movntps_Mps_Vps = { "movntps", "movntps", Mps, Vps, XX },
-Ia_movntq_Mq_Pq = { "movntq", "movntq", Mq, Pq, XX },
-Ia_movq_Cq_Rq = { "mov", "movq", Cq, Rq, XX },
-Ia_movq_Dq_Rq = { "mov", "movq", Dq, Rq, XX },
-Ia_movq_Eq_Gq = { "mov", "movq", Eq, Gq, XX },
-Ia_movq_Eq_Pq = { "movq", "movq", Eq, Pq, XX },
-Ia_movq_Eq_sId = { "mov", "movq", Eq, sIdq, XX },
-Ia_movq_Eq_Vq = { "movq", "movq", Eq, Vq, XX },
-Ia_movq_Gq_Eq = { "mov", "movq", Gq, Eq, XX },
-Ia_movq_Oq_RAX = { "mov", "movq", Oq, RAX, XX },
-Ia_movq_Pq_Eq = { "movq", "movq", Pq, Eq, XX },
-Ia_movq_Pq_Qq = { "movq", "movq", Pq, Qq, XX },
-Ia_movq_Qq_Pq = { "movq", "movq", Qq, Pq, XX },
-Ia_movq_RAX_Oq = { "mov", "movq", RAX, Oq, XX },
-Ia_movq_Rq_Cq = { "mov", "movq", Rq, Cq, XX },
-Ia_movq_Rq_Dq = { "mov", "movq", Rq, Dq, XX },
-Ia_movq_RRX_Iq = { "mov", "movq", RRX, Iq, XX },
-Ia_movq_Vdq_Eq = { "movq", "movq", Vdq, Eq, XX },
-Ia_movq_Vq_Wq = { "movq", "movq", Vq, Wq, XX },
-Ia_movq_Wq_Vq = { "movq", "movq", Wq, Vq, XX },
-Ia_movq2dq_Vdq_Qq = { "movq2dq", "movq2dq", Vdq, Qq, XX },
-Ia_movsb_Yb_Xb = { "movsb", "movsb", Yb, Xb, XX },
-Ia_movsbl_Gd_Eb = { "movsx", "movsbl", Gd, Eb, XX },
-Ia_movsbq_Gq_Eb = { "movsx", "movsbq", Gq, Eb, XX },
-Ia_movsbw_Gw_Eb = { "movsx", "movsbw", Gw, Eb, XX },
-Ia_movsd_Vsd_Wsd = { "movsd", "movsd", Vsd, Wsd, XX },
-Ia_movsd_Wsd_Vsd = { "movsd", "movsd", Wsd, Vsd, XX },
-Ia_movshdup_Vdq_Wdq = { "movshdup", "movshdup", Vdq, Wdq, XX },
-Ia_movsl_Yd_Xd = { "movsd", "movsl", Yd, Xd, XX },
-Ia_movsldup_Vdq_Wdq = { "movsldup", "movsldup", Vdq, Wdq, XX },
-Ia_movslq_Gq_Ed = { "movsxd", "movslq", Gq, Ed, XX },
-Ia_movsq_Yq_Xq = { "movsq", "movsq", Yq, Xq, XX },
-Ia_movss_Vss_Wss = { "movss", "movss", Vss, Wss, XX },
-Ia_movss_Wss_Vss = { "movss", "movss", Wss, Vss, XX },
-Ia_movsw_Yw_Xw = { "movsw", "movsw", Yw, Xw, XX },
-Ia_movswl_Gd_Ew = { "movsx", "movswl", Gd, Ew, XX },
-Ia_movswq_Gq_Ew = { "movsx", "movswq", Gq, Ew, XX },
-Ia_movupd_Vpd_Wpd = { "movupd", "movupd", Vpd, Wpd, XX },
-Ia_movupd_Wpd_Vpd = { "movupd", "movupd", Wpd, Vpd, XX },
-Ia_movups_Vps_Wps = { "movups", "movups", Vps, Wps, XX },
-Ia_movups_Wps_Vps = { "movups", "movups", Wps, Vps, XX },
-Ia_movw_AX_Ow = { "mov", "movw", AX, Ow, XX },
-Ia_movw_Ew_Gw = { "mov", "movw", Ew, Gw, XX },
-Ia_movw_Ew_Iw = { "mov", "movw", Ew, Iw, XX },
-Ia_movw_Ew_Sw = { "mov", "movw", Ew, Sw, XX },
-Ia_movw_Gw_Ew = { "mov", "movw", Gw, Ew, XX },
-Ia_movw_Ow_AX = { "mov", "movw", Ow, AX, XX },
-Ia_movw_RX_Iw = { "mov", "movw", RX, Iw, XX },
-Ia_movw_Sw_Ew = { "mov", "movw", Sw, Ew, XX },
-Ia_movzbl_Gd_Eb = { "movzx", "movzbl", Gd, Eb, XX },
-Ia_movzbq_Gq_Eb = { "movzx", "movzbq", Gq, Eb, XX },
-Ia_movzbw_Gw_Eb = { "movzx", "movzbw", Gw, Eb, XX },
-Ia_movzwl_Gd_Ew = { "movzx", "movzwl", Gd, Ew, XX },
-Ia_movzwq_Gq_Ew = { "movzx", "movzwq", Gq, Ew, XX },
-Ia_mulb_AL_Eb = { "mul", "mulb", AL, Eb, XX },
-Ia_mull_EAX_Ed = { "mul", "mull", EAX, Ed, XX },
-Ia_mulpd_Vpd_Wpd = { "mulpd", "mulpd", Vpd, Wpd, XX },
-Ia_mulps_Vps_Wps = { "mulps", "mulps", Vps, Wps, XX },
-Ia_mulq_RAX_Eq = { "mul", "mulq", RAX, Eq, XX },
-Ia_mulsd_Vsd_Wsd = { "mulsd", "mulsd", Vsd, Wsd, XX },
-Ia_mulss_Vss_Wss = { "mulss", "mulss", Vss, Wss, XX },
-Ia_multibyte_nop = { "multibyte nop", "multibyte nop", XX, XX, XX },
-Ia_mulw_AX_Ew = { "mul", "mulw", AX, Ew, XX },
-Ia_mwait = { "mwait", "mwait", XX, XX, XX },
-Ia_negb_Eb = { "neg", "negb", Eb, XX, XX },
-Ia_negl_Ed = { "neg", "negl", Ed, XX, XX },
-Ia_negq_Eq = { "neg", "negq", Eq, XX, XX },
-Ia_negw_Ew = { "neg", "negw", Ew, XX, XX },
-Ia_nop = { "nop", "nop", XX, XX, XX },
-Ia_notb_Eb = { "not", "notb", Eb, XX, XX },
-Ia_notl_Ed = { "not", "notl", Ed, XX, XX },
-Ia_notq_Eq = { "not", "notq", Eq, XX, XX },
-Ia_notw_Ew = { "not", "notw", Ew, XX, XX },
-Ia_orb_AL_Ib = { "or", "orb", AL, Ib, XX },
-Ia_orb_Eb_Gb = { "or", "orb", Eb, Gb, XX },
-Ia_orb_Eb_Ib = { "or", "orb", Eb, Ib, XX },
-Ia_orb_Gb_Eb = { "or", "orb", Gb, Eb, XX },
-Ia_orl_EAX_Id = { "or", "orl", EAX, Id, XX },
-Ia_orl_Ed_Gd = { "or", "orl", Ed, Gd, XX },
-Ia_orl_Ed_Id = { "or", "orl", Ed, Id, XX },
-Ia_orl_Ed_sIb = { "or", "orl", Ed, sIbd, XX },
-Ia_orl_Gd_Ed = { "or", "orl", Gd, Ed, XX },
-Ia_orpd_Vpd_Wpd = { "orpd", "orpd", Vpd, Wpd, XX },
-Ia_orps_Vps_Wps = { "orps", "orps", Vps, Wps, XX },
-Ia_orq_Eq_Gq = { "or", "orq", Eq, Gq, XX },
-Ia_orq_Eq_sIb = { "or", "orq", Eq, sIbq, XX },
-Ia_orq_Eq_sId = { "or", "orq", Eq, sIdq, XX },
-Ia_orq_Gq_Eq = { "or", "orq", Gq, Eq, XX },
-Ia_orq_RAX_sId = { "or", "orq", RAX, sIdq, XX },
-Ia_orw_AX_Iw = { "or", "orw", AX, Iw, XX },
-Ia_orw_Ew_Gw = { "or", "orw", Ew, Gw, XX },
-Ia_orw_Ew_Iw = { "or", "orw", Ew, Iw, XX },
-Ia_orw_Ew_sIb = { "or", "orw", Ew, sIbw, XX },
-Ia_orw_Gw_Ew = { "or", "orw", Gw, Ew, XX },
-Ia_outb_DX_AL = { "out", "outb", DX, AL, XX },
-Ia_outb_Ib_AL = { "out", "outb", Ib, AL, XX },
-Ia_outl_DX_EAX = { "out", "outl", DX, EAX, XX },
-Ia_outl_Ib_EAX = { "out", "outl", Ib, EAX, XX },
-Ia_outsb_DX_Xb = { "outsb", "outsb", DX, Xb, XX },
-Ia_outsl_DX_Xd = { "outsd", "outsl", DX, Xd, XX },
-Ia_outsw_DX_Xw = { "outsw", "outsw", DX, Xw, XX },
-Ia_outw_DX_AX = { "out", "outw", DX, AX, XX },
-Ia_outw_Ib_AX = { "out", "outw", Ib, AX, XX },
-Ia_pabsb_Pq_Qq = { "pabsb", "pabsb", Pq, Qq, XX },
-Ia_pabsb_Vdq_Wdq = { "pabsb", "pabsb", Vdq, Wdq, XX },
-Ia_pabsd_Pq_Qq = { "pabsd", "pabsd", Pq, Qq, XX },
-Ia_pabsd_Vdq_Wdq = { "pabsd", "pabsd", Vdq, Wdq, XX },
-Ia_pabsw_Pq_Qq = { "pabsw", "pabsw", Pq, Qq, XX },
-Ia_pabsw_Vdq_Wdq = { "pabsw", "pabsw", Vdq, Wdq, XX },
-Ia_packssdw_Pq_Qq = { "packssdw", "packssdw", Pq, Qq, XX },
-Ia_packssdw_Vdq_Wdq = { "packssdw", "packssdw", Vdq, Wdq, XX },
-Ia_packsswb_Pq_Qq = { "packsswb", "packsswb", Pq, Qq, XX },
-Ia_packsswb_Vdq_Wq = { "packsswb", "packsswb", Vdq, Wq, XX },
-Ia_packuswb_Pq_Qq = { "packuswb", "packuswb", Pq, Qq, XX },
-Ia_packuswb_Vdq_Wdq = { "packuswb", "packuswb", Vdq, Wdq, XX },
-Ia_paddb_Pq_Qq = { "paddb", "paddb", Pq, Qq, XX },
-Ia_paddb_Vdq_Wdq = { "paddb", "paddb", Vdq, Wdq, XX },
-Ia_paddd_Pq_Qq = { "paddd", "paddd", Pq, Qq, XX },
-Ia_paddd_Vdq_Wdq = { "paddd", "paddd", Vdq, Wdq, XX },
-Ia_paddq_Pq_Qq = { "paddq", "paddq", Pq, Qq, XX },
-Ia_paddq_Vdq_Wdq = { "paddq", "paddq", Vdq, Wdq, XX },
-Ia_paddsb_Pq_Qq = { "paddsb", "paddsb", Pq, Qq, XX },
-Ia_paddsb_Vdq_Wdq = { "paddsb", "paddsb", Vdq, Wdq, XX },
-Ia_paddsw_Pq_Qq = { "paddsw", "paddsw", Pq, Qq, XX },
-Ia_paddsw_Vdq_Wdq = { "paddsw", "paddsw", Vdq, Wdq, XX },
-Ia_paddusb_Pq_Qq = { "paddusb", "paddusb", Pq, Qq, XX },
-Ia_paddusb_Vdq_Wdq = { "paddusb", "paddusb", Vdq, Wdq, XX },
-Ia_paddusw_Pq_Qq = { "paddusw", "paddusw", Pq, Qq, XX },
-Ia_paddusw_Vdq_Wdq = { "paddusw", "paddusw", Vdq, Wdq, XX },
-Ia_paddw_Pq_Qq = { "paddw", "paddw", Pq, Qq, XX },
-Ia_paddw_Vdq_Wdq = { "paddw", "paddw", Vdq, Wdq, XX },
-Ia_palignr_Pq_Qq_Ib = { "palignr", "palignr", Pq, Qq, Ib },
-Ia_palignr_Vdq_Wdq_Ib = { "palignr", "palignr", Vdq, Wdq, Ib },
-Ia_pand_Pq_Qq = { "pand", "pand", Pq, Qq, XX },
-Ia_pand_Vdq_Wdq = { "pand", "pand", Vdq, Wdq, XX },
-Ia_pandn_Pq_Qq = { "pandn", "pandn", Pq, Qq, XX },
-Ia_pandn_Vdq_Wdq = { "pandn", "pandn", Vdq, Wdq, XX },
-Ia_pause = { "pause", "pause", XX, XX, XX },
-Ia_pavgb_Pq_Qq = { "pavgb", "pavgb", Pq, Qq, XX },
-Ia_pavgb_Vdq_Wdq = { "pavgb", "pavgb", Vdq, Wdq, XX },
-Ia_pavgw_Pq_Qq = { "pavgw", "pavgw", Pq, Qq, XX },
-Ia_pavgw_Vdq_Wdq = { "pavgw", "pavgw", Vdq, Wdq, XX },
-Ia_pcmpeqb_Pq_Qq = { "pcmpeqb", "pcmpeqb", Pq, Qq, XX },
-Ia_pcmpeqb_Vdq_Wdq = { "pcmpeqb", "pcmpeqb", Vdq, Wdq, XX },
-Ia_pcmpeqd_Pq_Qq = { "pcmpeqd", "pcmpeqd", Pq, Qq, XX },
-Ia_pcmpeqd_Vdq_Wdq = { "pcmpeqd", "pcmpeqd", Vdq, Wdq, XX },
-Ia_pcmpeqw_Pq_Qq = { "pcmpeqw", "pcmpeqw", Pq, Qq, XX },
-Ia_pcmpeqw_Vdq_Wdq = { "pcmpeqw", "pcmpeqw", Vdq, Wdq, XX },
-Ia_pcmpgtb_Pq_Qq = { "pcmpgtb", "pcmpgtb", Pq, Qq, XX },
-Ia_pcmpgtb_Vdq_Wq = { "pcmpgtb", "pcmpgtb", Vdq, Wq, XX },
-Ia_pcmpgtd_Pq_Qq = { "pcmpgtd", "pcmpgtd", Pq, Qq, XX },
-Ia_pcmpgtd_Vdq_Wdq = { "pcmpgtd", "pcmpgtd", Vdq, Wdq, XX },
-Ia_pcmpgtw_Pq_Qq = { "pcmpgtw", "pcmpgtw", Pq, Qq, XX },
-Ia_pcmpgtw_Vdq_Wq = { "pcmpgtw", "pcmpgtw", Vdq, Wq, XX },
-Ia_pextrw_Gd_Nq_Ib = { "pextrw", "pextrw", Gd, Nq, Ib },
-Ia_pextrw_Gd_Udq_Ib = { "pextrw", "pextrw", Gd, Udq, Ib },
-Ia_pf2id_Pq_Qq = { "pf2id", "pf2id", Pq, Qq, XX },
-Ia_pf2iw_Pq_Qq = { "pf2iw", "pf2iw", Pq, Qq, XX },
-Ia_pfacc_Pq_Qq = { "pfacc", "pfacc", Pq, Qq, XX },
-Ia_pfadd_Pq_Qq = { "pfadd", "pfadd", Pq, Qq, XX },
-Ia_pfcmpeq_Pq_Qq = { "pfcmpeq", "pfcmpeq", Pq, Qq, XX },
-Ia_pfcmpge_Pq_Qq = { "pfcmpge", "pfcmpge", Pq, Qq, XX },
-Ia_pfcmpgt_Pq_Qq = { "pfcmpgt", "pfcmpgt", Pq, Qq, XX },
-Ia_pfmax_Pq_Qq = { "pfmax", "pfmax", Pq, Qq, XX },
-Ia_pfmin_Pq_Qq = { "pfmin", "pfmin", Pq, Qq, XX },
-Ia_pfmul_Pq_Qq = { "pfmul", "pfmul", Pq, Qq, XX },
-Ia_pfnacc_Pq_Qq = { "pfnacc", "pfnacc", Pq, Qq, XX },
-Ia_pfpnacc_Pq_Qq = { "pfpnacc", "pfpnacc", Pq, Qq, XX },
-Ia_pfrcp_Pq_Qq = { "pfrcp", "pfrcp", Pq, Qq, XX },
-Ia_pfrcpit1_Pq_Qq = { "pfrcpit1", "pfrcpit1", Pq, Qq, XX },
-Ia_pfrcpit2_Pq_Qq = { "pfrcpit2", "pfrcpit2", Pq, Qq, XX },
-Ia_pfrsqit1_Pq_Qq = { "pfrsqit1", "pfrsqit1", Pq, Qq, XX },
-Ia_pfrsqrt_Pq_Qq = { "pfrsqrt", "pfrsqrt", Pq, Qq, XX },
-Ia_pfsub_Pq_Qq = { "pfsub", "pfsub", Pq, Qq, XX },
-Ia_pfsubr_Pq_Qq = { "pfsubr", "pfsubr", Pq, Qq, XX },
-Ia_phaddd_Pq_Qq = { "phaddd", "phaddd", Pq, Qq, XX },
-Ia_phaddd_Vdq_Wdq = { "phaddd", "phaddd", Vdq, Wdq, XX },
-Ia_phaddsw_Pq_Qq = { "phaddsw", "phaddsw", Pq, Qq, XX },
-Ia_phaddsw_Vdq_Wdq = { "phaddsw", "phaddsw", Vdq, Wdq, XX },
-Ia_phaddw_Pq_Qq = { "phaddw", "phaddw", Pq, Qq, XX },
-Ia_phaddw_Vdq_Wdq = { "phaddw", "phaddw", Vdq, Wdq, XX },
-Ia_phsubd_Pq_Qq = { "phsubd", "phsubd", Pq, Qq, XX },
-Ia_phsubd_Vdq_Wdq = { "phsubd", "phsubd", Vdq, Wdq, XX },
-Ia_phsubsw_Pq_Qq = { "phsubsw", "phsubsw", Pq, Qq, XX },
-Ia_phsubsw_Vdq_Wdq = { "phsubsw", "phsubsw", Vdq, Wdq, XX },
-Ia_phsubw_Pq_Qq = { "phsubw", "phsubw", Pq, Qq, XX },
-Ia_phsubw_Vdq_Wdq = { "phsubw", "phsubw", Vdq, Wdq, XX },
-Ia_pi2fd_Pq_Qq = { "pi2fd", "pi2fd", Pq, Qq, XX },
-Ia_pi2fw_Pq_Qq = { "pi2fw", "pi2fw", Pq, Qq, XX },
-Ia_pinsrw_Pq_Ed_Ib = { "pinsrw", "pinsrw", Pq, Ed, Ib },
-Ia_pinsrw_Vdq_Ed_Ib = { "pinsrw", "pinsrw", Vdq, Ed, Ib },
-Ia_pmaddubsw_Pq_Qq = { "pmaddubsw", "pmaddubsw", Pq, Qq, XX },
-Ia_pmaddubsw_Vdq_Wdq = { "pmaddubsw", "pmaddubsw", Vdq, Wdq, XX },
-Ia_pmaddwd_Pq_Qq = { "pmaddwd", "pmaddwd", Pq, Qq, XX },
-Ia_pmaddwd_Vdq_Wdq = { "pmaddwd", "pmaddwd", Vdq, Wdq, XX },
-Ia_pmaxub_Pq_Qq = { "pmaxub", "pmaxub", Pq, Qq, XX },
-Ia_pmaxub_Vdq_Wdq = { "pmaxub", "pmaxub", Vdq, Wdq, XX },
-Ia_pmaxuw_Pq_Qq = { "pmaxuw", "pmaxuw", Pq, Qq, XX },
-Ia_pmaxuw_Vdq_Wdq = { "pmaxuw", "pmaxuw", Vdq, Wdq, XX },
-Ia_pminsw_Pq_Qq = { "pminsw", "pminsw", Pq, Qq, XX },
-Ia_pminsw_Vdq_Wdq = { "pminsw", "pminsw", Vdq, Wdq, XX },
-Ia_pminub_Pq_Qq = { "pminub", "pminub", Pq, Qq, XX },
-Ia_pminub_Vdq_Wdq = { "pminub", "pminub", Vdq, Wdq, XX },
-Ia_pmovmskb_Gd_Nq = { "pmovmskb", "pmovmskb", Gd, Nq, XX },
-Ia_pmovmskb_Gd_Udq = { "pmovmskb", "pmovmskb", Gd, Udq, XX },
-Ia_pmulhrsw_Pq_Qq = { "pmulhrsw", "pmulhrsw", Pq, Qq, XX },
-Ia_pmulhrsw_Vdq_Wdq = { "pmulhrsw", "pmulhrsw", Vdq, Wdq, XX },
-Ia_pmulhrw_Pq_Qq = { "pmulhrw", "pmulhrw", Pq, Qq, XX },
-Ia_pmulhuw_Pq_Qq = { "pmulhuw", "pmulhuw", Pq, Qq, XX },
-Ia_pmulhuw_Vdq_Wdq = { "pmulhuw", "pmulhuw", Vdq, Wdq, XX },
-Ia_pmulhw_Pq_Qq = { "pmulhw", "pmulhw", Pq, Qq, XX },
-Ia_pmulhw_Vdq_Wdq = { "pmulhw", "pmulhw", Vdq, Wdq, XX },
-Ia_pmullw_Pq_Qq = { "pmullw", "pmullw", Pq, Qq, XX },
-Ia_pmullw_Vdq_Wdq = { "pmullw", "pmullw", Vdq, Wdq, XX },
-Ia_pmuludq_Pq_Qq = { "pmuludq", "pmuludq", Pq, Qq, XX },
-Ia_pmuludq_Vdq_Wdq = { "pmuludq", "pmuludq", Vdq, Wdq, XX },
-Ia_popal = { "popad", "popal", XX, XX, XX },
-Ia_popaw = { "popa", "popa", XX, XX, XX },
-Ia_popfl = { "popfd", "popfl", XX, XX, XX },
-Ia_popfq = { "popfq", "popfq", XX, XX, XX },
-Ia_popfw = { "popf", "popf", XX, XX, XX },
-Ia_popl_DS = { "pop", "popl", DS, XX, XX },
-Ia_popl_Ed = { "pop", "popl", Ed, XX, XX },
-Ia_popl_ERX = { "pop", "popl", ERX, XX, XX },
-Ia_popl_ES = { "pop", "popl", ES, XX, XX },
-Ia_popl_FS = { "pop", "popl", FS, XX, XX },
-Ia_popl_GS = { "pop", "popl", GS, XX, XX },
-Ia_popl_SS = { "pop", "popl", SS, XX, XX },
-Ia_popq_Eq = { "pop", "popq", Eq, XX, XX },
-Ia_popq_FS = { "pop", "popq", FS, XX, XX },
-Ia_popq_GS = { "pop", "popq", GS, XX, XX },
-Ia_popq_RRX = { "pop", "popq", RRX, XX, XX },
-Ia_popw_DS = { "pop", "popw", DS, XX, XX },
-Ia_popw_ES = { "pop", "popw", ES, XX, XX },
-Ia_popw_Ew = { "pop", "popw", Ew, XX, XX },
-Ia_popw_FS = { "pop", "popw", FS, XX, XX },
-Ia_popw_GS = { "pop", "popw", GS, XX, XX },
-Ia_popw_RX = { "pop", "popw", RX, XX, XX },
-Ia_popw_SS = { "pop", "popw", SS, XX, XX },
-Ia_por_Pq_Qq = { "por", "por", Pq, Qq, XX },
-Ia_por_Vdq_Wdq = { "por", "por", Vdq, Wdq, XX },
-Ia_prefetch = { "prefetch (3dnow!)", "prefetch (3dnow!)", Mb, XX, XX },
-Ia_prefetchnta = { "prefetchnta", "prefetchnta", Mb, XX, XX },
-Ia_prefetcht0 = { "prefetcht0", "prefetcht0", Mb, XX, XX },
-Ia_prefetcht1 = { "prefetcht1", "prefetcht1", Mb, XX, XX },
-Ia_prefetcht2 = { "prefetcht2", "prefetcht2", Mb, XX, XX },
-Ia_prefix_asize = { "asize", "asize", XX, XX, XX },
-Ia_prefix_cs = { "cs", "cs", XX, XX, XX },
-Ia_prefix_ds = { "ds", "ds", XX, XX, XX },
-Ia_prefix_es = { "es", "es", XX, XX, XX },
-Ia_prefix_fs = { "fs", "fs", XX, XX, XX },
-Ia_prefix_gs = { "gs", "gs", XX, XX, XX },
-Ia_prefix_lock = { "lock", "lock", XX, XX, XX },
-Ia_prefix_osize = { "osize", "osize", XX, XX, XX },
-Ia_prefix_rep = { "rep", "rep", XX, XX, XX },
-Ia_prefix_repne = { "repne", "repne", XX, XX, XX },
-Ia_prefix_rex = { "rex", "rex", XX, XX, XX },
-Ia_prefix_ss = { "ss", "ss", XX, XX, XX },
-Ia_psadbw_Pq_Qq = { "psadbw", "psadbw", Pq, Qq, XX },
-Ia_psadbw_Vdq_Wdq = { "psadbw", "psadbw", Vdq, Wdq, XX },
-Ia_pshufb_Pq_Qq = { "pshufb", "pshufb", Pq, Qq, XX },
-Ia_pshufb_Vdq_Wdq = { "pshufb", "pshufb", Vdq, Wdq, XX },
-Ia_pshufd_Vdq_Wdq_Ib = { "pshufd", "pshufd", Vdq, Wdq, Ib },
-Ia_pshufhw_Vq_Wq_Ib = { "pshufhw", "pshufhw", Vq, Wq, Ib },
-Ia_pshuflw_Vq_Wq_Ib = { "pshuflw", "pshuflw", Vq, Wq, Ib },
-Ia_pshufw_Pq_Qq_Ib = { "pshufw", "pshufw", Pq, Qq, Ib },
-Ia_psignb_Pq_Qq = { "psignb", "psignb", Pq, Qq, XX },
-Ia_psignb_Vdq_Wdq = { "psignb", "psignb", Vdq, Wdq, XX },
-Ia_psignd_Pq_Qq = { "psignd", "psignd", Pq, Qq, XX },
-Ia_psignd_Vdq_Wdq = { "psignd", "psignd", Vdq, Wdq, XX },
-Ia_psignw_Pq_Qq = { "psignw", "psignw", Pq, Qq, XX },
-Ia_psignw_Vdq_Wdq = { "psignw", "psignw", Vdq, Wdq, XX },
-Ia_pslld_Nq_Ib = { "pslld", "pslld", Nq, Ib, XX },
-Ia_pslld_Pq_Qq = { "pslld", "pslld", Pq, Qq, XX },
-Ia_pslld_Udq_Ib = { "pslld", "pslld", Udq, Ib, XX },
-Ia_pslld_Vdq_Wdq = { "pslld", "pslld", Vdq, Wdq, XX },
-Ia_pslldq_Udq_Ib = { "pslldq", "pslldq", Udq, Ib, XX },
-Ia_psllq_Nq_Ib = { "psllq", "psllq", Nq, Ib, XX },
-Ia_psllq_Pq_Qq = { "psllq", "psllq", Pq, Qq, XX },
-Ia_psllq_Udq_Ib = { "psllq", "psllq", Udq, Ib, XX },
-Ia_psllq_Vdq_Wdq = { "psllq", "psllq", Vdq, Wdq, XX },
-Ia_psllw_Nq_Ib = { "psllw", "psllw", Nq, Ib, XX },
-Ia_psllw_Pq_Qq = { "psllw", "psllw", Pq, Qq, XX },
-Ia_psllw_Udq_Ib = { "psllw", "psllw", Udq, Ib, XX },
-Ia_psllw_Vdq_Wdq = { "psllw", "psllw", Vdq, Wdq, XX },
-Ia_psrad_Nq_Ib = { "psrad", "psrad", Nq, Ib, XX },
-Ia_psrad_Pq_Qq = { "psrad", "psrad", Pq, Qq, XX },
-Ia_psrad_Udq_Ib = { "psrad", "psrad", Udq, Ib, XX },
-Ia_psrad_Vdq_Wdq = { "psrad", "psrad", Vdq, Wdq, XX },
-Ia_psraw_Nq_Ib = { "psraw", "psraw", Nq, Ib, XX },
-Ia_psraw_Pq_Qq = { "psraw", "psraw", Pq, Qq, XX },
-Ia_psraw_Udq_Ib = { "psraw", "psraw", Udq, Ib, XX },
-Ia_psraw_Vdq_Wdq = { "psraw", "psraw", Vdq, Wdq, XX },
-Ia_psrld_Nq_Ib = { "psrld", "psrld", Nq, Ib, XX },
-Ia_psrld_Pq_Qq = { "psrld", "psrld", Pq, Qq, XX },
-Ia_psrld_Udq_Ib = { "psrld", "psrld", Udq, Ib, XX },
-Ia_psrld_Vdq_Wdq = { "psrld", "psrld", Vdq, Wdq, XX },
-Ia_psrldq_Udq_Ib = { "psrldq", "psrldq", Udq, Ib, XX },
-Ia_psrlq_Nq_Ib = { "psrlq", "psrlq", Nq, Ib, XX },
-Ia_psrlq_Pq_Qq = { "psrlq", "psrlq", Pq, Qq, XX },
-Ia_psrlq_Udq_Ib = { "psrlq", "psrlq", Udq, Ib, XX },
-Ia_psrlq_Vdq_Wdq = { "psrlq", "psrlq", Vdq, Wdq, XX },
-Ia_psrlw_Nq_Ib = { "psrlw", "psrlw", Nq, Ib, XX },
-Ia_psrlw_Pq_Qq = { "psrlw", "psrlw", Pq, Qq, XX },
-Ia_psrlw_Udq_Ib = { "psrlw", "psrlw", Udq, Ib, XX },
-Ia_psrlw_Vdq_Wdq = { "psrlw", "psrlw", Vdq, Wdq, XX },
-Ia_psubb_Pq_Qq = { "psubb", "psubb", Pq, Qq, XX },
-Ia_psubb_Vdq_Wdq = { "psubb", "psubb", Vdq, Wdq, XX },
-Ia_psubd_Pq_Qq = { "psubd", "psubd", Pq, Qq, XX },
-Ia_psubd_Vdq_Wdq = { "psubd", "psubd", Vdq, Wdq, XX },
-Ia_psubq_Pq_Qq = { "psubq", "psubq", Pq, Qq, XX },
-Ia_psubq_Vdq_Wdq = { "psubq", "psubq", Vdq, Wdq, XX },
-Ia_psubsb_Pq_Qq = { "psubsb", "psubsb", Pq, Qq, XX },
-Ia_psubsb_Vdq_Wdq = { "psubsb", "psubsb", Vdq, Wdq, XX },
-Ia_psubsw_Pq_Qq = { "psubsw", "psubsw", Pq, Qq, XX },
-Ia_psubsw_Vdq_Wdq = { "psubsw", "psubsw", Vdq, Wdq, XX },
-Ia_psubusb_Pq_Qq = { "psubusb", "psubusb", Pq, Qq, XX },
-Ia_psubusb_Vdq_Wdq = { "psubusb", "psubusb", Vdq, Wdq, XX },
-Ia_psubusw_Pq_Qq = { "psubusw", "psubusw", Pq, Qq, XX },
-Ia_psubusw_Vdq_Wdq = { "psubusw", "psubusw", Vdq, Wdq, XX },
-Ia_psubw_Pq_Qq = { "psubw", "psubw", Pq, Qq, XX },
-Ia_psubw_Vdq_Wdq = { "psubw", "psubw", Vdq, Wdq, XX },
-Ia_pswapd_Pq_Qq = { "pswapd", "pswapd", Pq, Qq, XX },
-Ia_punpckhbw_Pq_Qq = { "punpckhbw", "punpckhbw", Pq, Qq, XX },
-Ia_punpckhbw_Vdq_Wq = { "punpckhbw", "punpckhbw", Vdq, Wq, XX },
-Ia_punpckhdq_Pq_Qq = { "punpckhdq", "punpckhdq", Pq, Qq, XX },
-Ia_punpckhdq_Vdq_Wq = { "punpckhdq", "punpckhdq", Vdq, Wq, XX },
-Ia_punpckhqdq_Vdq_Wq = { "punpckhqdq", "punpckhqdq", Vdq, Wq, XX },
-Ia_punpckhwd_Pq_Qq = { "punpckhwd", "punpckhwd", Pq, Qq, XX },
-Ia_punpckhwd_Vdq_Wq = { "punpckhwd", "punpckhwd", Vdq, Wq, XX },
-Ia_punpcklbw_Pq_Qd = { "punpcklbw", "punpcklbw", Pq, Qd, XX },
-Ia_punpcklbw_Vdq_Wq = { "punpcklbw", "punpcklbw", Vdq, Wq, XX },
-Ia_punpckldq_Pq_Qd = { "punpckldq", "punpckldq", Pq, Qd, XX },
-Ia_punpckldq_Vdq_Wq = { "punpckldq", "punpckldq", Vdq, Wq, XX },
-Ia_punpcklqdq_Vdq_Wq = { "punpcklqdq", "punpcklqdq", Vdq, Wq, XX },
-Ia_punpcklwd_Pq_Qd = { "punpcklwd", "punpcklwd", Pq, Qd, XX },
-Ia_punpcklwd_Vdq_Wq = { "punpcklwd", "punpcklwd", Vdq, Wq, XX },
-Ia_pushal = { "pushad", "pushal", XX, XX, XX },
-Ia_pushaw = { "pusha", "pusha", XX, XX, XX },
-Ia_pushfl = { "pushfd", "pushfl", XX, XX, XX },
-Ia_pushfq = { "pushfq", "pushfq", XX, XX, XX },
-Ia_pushfw = { "pushf", "pushf", XX, XX, XX },
-Ia_pushl_CS = { "push", "pushl", CS, XX, XX },
-Ia_pushl_DS = { "push", "pushl", DS, XX, XX },
-Ia_pushl_Ed = { "push", "pushl", Ed, XX, XX },
-Ia_pushl_ERX = { "push", "pushl", ERX, XX, XX },
-Ia_pushl_ES = { "push", "pushl", ES, XX, XX },
-Ia_pushl_FS = { "push", "pushl", FS, XX, XX },
-Ia_pushl_GS = { "push", "pushl", GS, XX, XX },
-Ia_pushl_Id = { "push", "pushl", Id, XX, XX },
-Ia_pushl_sIb = { "push", "pushl", sIbd, XX, XX },
-Ia_pushl_SS = { "push", "pushl", SS, XX, XX },
-Ia_pushq_Eq = { "push", "pushq", Eq, XX, XX },
-Ia_pushq_FS = { "push", "pushq", FS, XX, XX },
-Ia_pushq_GS = { "push", "pushq", GS, XX, XX },
-Ia_pushq_RRX = { "push", "pushq", RRX, XX, XX },
-Ia_pushq_sIb = { "push", "pushq", sIbq, XX, XX },
-Ia_pushq_sId = { "push", "pushq", sIdq, XX, XX },
-Ia_pushw_CS = { "push", "pushw", CS, XX, XX },
-Ia_pushw_DS = { "push", "pushw", DS, XX, XX },
-Ia_pushw_ES = { "push", "pushw", ES, XX, XX },
-Ia_pushw_Ew = { "push", "pushw", Ew, XX, XX },
-Ia_pushw_FS = { "push", "pushw", FS, XX, XX },
-Ia_pushw_GS = { "push", "pushw", GS, XX, XX },
-Ia_pushw_Iw = { "push", "pushw", Iw, XX, XX },
-Ia_pushw_RX = { "push", "pushw", RX, XX, XX },
-Ia_pushw_sIb = { "push", "pushw", sIbw, XX, XX },
-Ia_pushw_SS = { "push", "pushw", SS, XX, XX },
-Ia_pxor_Pq_Qq = { "pxor", "pxor", Pq, Qq, XX },
-Ia_pxor_Vdq_Wdq = { "pxor", "pxor", Vdq, Wdq, XX },
-Ia_rclb_Eb_CL = { "rcl", "rclb", Eb, CL, XX },
-Ia_rclb_Eb_I1 = { "rcl", "rclb", Eb, I1, XX },
-Ia_rclb_Eb_Ib = { "rcl", "rclb", Eb, Ib, XX },
-Ia_rcll_Ed_CL = { "rcl", "rcll", Ed, CL, XX },
-Ia_rcll_Ed_I1 = { "rcl", "rcll", Ed, I1, XX },
-Ia_rcll_Ed_Ib = { "rcl", "rcll", Ed, Ib, XX },
-Ia_rclq_Eq_CL = { "rcl", "rclq", Eq, CL, XX },
-Ia_rclq_Eq_I1 = { "rcl", "rclq", Eq, I1, XX },
-Ia_rclq_Eq_Ib = { "rcl", "rclq", Eq, Ib, XX },
-Ia_rclw_Ew_CL = { "rcl", "rclw", Ew, CL, XX },
-Ia_rclw_Ew_I1 = { "rcl", "rclw", Ew, I1, XX },
-Ia_rclw_Ew_Ib = { "rcl", "rclw", Ew, Ib, XX },
-Ia_rcpps_Vps_Wps = { "rcpps", "rcpps", Vps, Wps, XX },
-Ia_rcpss_Vss_Wss = { "rcpss", "rcpss", Vss, Wss, XX },
-Ia_rcrb_Eb_CL = { "rcr", "rcrb", Eb, CL, XX },
-Ia_rcrb_Eb_I1 = { "rcr", "rcrb", Eb, I1, XX },
-Ia_rcrb_Eb_Ib = { "rcr", "rcrb", Eb, Ib, XX },
-Ia_rcrl_Ed_CL = { "rcr", "rcrl", Ed, CL, XX },
-Ia_rcrl_Ed_I1 = { "rcr", "rcrl", Ed, I1, XX },
-Ia_rcrl_Ed_Ib = { "rcr", "rcrl", Ed, Ib, XX },
-Ia_rcrq_Eq_CL = { "rcr", "rcrq", Eq, CL, XX },
-Ia_rcrq_Eq_I1 = { "rcr", "rcrq", Eq, I1, XX },
-Ia_rcrq_Eq_Ib = { "rcr", "rcrq", Eq, Ib, XX },
-Ia_rcrw_Ew_CL = { "rcr", "rcrw", Ew, CL, XX },
-Ia_rcrw_Ew_I1 = { "rcr", "rcrw", Ew, I1, XX },
-Ia_rcrw_Ew_Ib = { "rcr", "rcrw", Ew, Ib, XX },
-Ia_rdmsr = { "rdmsr", "rdmsr", XX, XX, XX },
-Ia_rdpmc = { "rdpmc", "rdpmc", XX, XX, XX },
-Ia_rdtsc = { "rdtsc", "rdtsc", XX, XX, XX },
-Ia_rdtscp = { "rdtscp", "rdtscp", XX, XX, XX },
-Ia_ret = { "ret", "ret", XX, XX, XX },
-Ia_ret_Iw = { "ret", "ret", Iw, XX, XX },
-Ia_rolb_Eb_CL = { "rol", "rolb", Eb, CL, XX },
-Ia_rolb_Eb_I1 = { "rol", "rolb", Eb, I1, XX },
-Ia_rolb_Eb_Ib = { "rol", "rolb", Eb, Ib, XX },
-Ia_roll_Ed_CL = { "rol", "roll", Ed, CL, XX },
-Ia_roll_Ed_I1 = { "rol", "roll", Ed, I1, XX },
-Ia_roll_Ed_Ib = { "rol", "roll", Ed, Ib, XX },
-Ia_rolq_Eq_CL = { "rol", "rolq", Eq, CL, XX },
-Ia_rolq_Eq_I1 = { "rol", "rolq", Eq, I1, XX },
-Ia_rolq_Eq_Ib = { "rol", "rolq", Eq, Ib, XX },
-Ia_rolw_Ew_CL = { "rol", "rolw", Ew, CL, XX },
-Ia_rolw_Ew_I1 = { "rol", "rolw", Ew, I1, XX },
-Ia_rolw_Ew_Ib = { "rol", "rolw", Ew, Ib, XX },
-Ia_rorb_Eb_CL = { "ror", "rorb", Eb, CL, XX },
-Ia_rorb_Eb_I1 = { "ror", "rorb", Eb, I1, XX },
-Ia_rorb_Eb_Ib = { "ror", "rorb", Eb, Ib, XX },
-Ia_rorl_Ed_CL = { "ror", "rorl", Ed, CL, XX },
-Ia_rorl_Ed_I1 = { "ror", "rorl", Ed, I1, XX },
-Ia_rorl_Ed_Ib = { "ror", "rorl", Ed, Ib, XX },
-Ia_rorq_Eq_CL = { "ror", "rorq", Eq, CL, XX },
-Ia_rorq_Eq_I1 = { "ror", "rorq", Eq, I1, XX },
-Ia_rorq_Eq_Ib = { "ror", "rorq", Eq, Ib, XX },
-Ia_rorw_Ew_CL = { "ror", "rorw", Ew, CL, XX },
-Ia_rorw_Ew_I1 = { "ror", "rorw", Ew, I1, XX },
-Ia_rorw_Ew_Ib = { "ror", "rorw", Ew, Ib, XX },
-Ia_rsm = { "rsm", "rsm", XX, XX, XX },
-Ia_rsqrtps_Vps_Wps = { "rsqrtps", "rsqrtps", Vps, Wps, XX },
-Ia_rsqrtss_Vss_Wss = { "rsqrtss", "rsqrtss", Vss, Wss, XX },
-Ia_sahf = { "sahf", "sahf", XX, XX, XX },
-Ia_salc = { "salc", "salc", XX, XX, XX },
-Ia_sarb_Eb_CL = { "sar", "sarb", Eb, CL, XX },
-Ia_sarb_Eb_I1 = { "sar", "sarb", Eb, I1, XX },
-Ia_sarb_Eb_Ib = { "sar", "sarb", Eb, Ib, XX },
-Ia_sarl_Ed_CL = { "sar", "sarl", Ed, CL, XX },
-Ia_sarl_Ed_I1 = { "sar", "sarl", Ed, I1, XX },
-Ia_sarl_Ed_Ib = { "sar", "sarl", Ed, Ib, XX },
-Ia_sarq_Eq_CL = { "sar", "sarq", Eq, CL, XX },
-Ia_sarq_Eq_I1 = { "sar", "sarq", Eq, I1, XX },
-Ia_sarq_Eq_Ib = { "sar", "sarq", Eq, Ib, XX },
-Ia_sarw_Ew_CL = { "sar", "sarw", Ew, CL, XX },
-Ia_sarw_Ew_I1 = { "sar", "sarw", Ew, I1, XX },
-Ia_sarw_Ew_Ib = { "sar", "sarw", Ew, Ib, XX },
-Ia_sbbb_AL_Ib = { "sbb", "sbbb", AL, Ib, XX },
-Ia_sbbb_Eb_Gb = { "sbb", "sbbb", Eb, Gb, XX },
-Ia_sbbb_Eb_Ib = { "sbb", "sbbb", Eb, Ib, XX },
-Ia_sbbb_Gb_Eb = { "sbb", "sbbb", Gb, Eb, XX },
-Ia_sbbl_EAX_Id = { "sbb", "sbbl", EAX, Id, XX },
-Ia_sbbl_Ed_Gd = { "sbb", "sbbl", Ed, Gd, XX },
-Ia_sbbl_Ed_Id = { "sbb", "sbbl", Ed, Id, XX },
-Ia_sbbl_Ed_sIb = { "sbb", "sbbl", Ed, sIbd, XX },
-Ia_sbbl_Gd_Ed = { "sbb", "sbbl", Gd, Ed, XX },
-Ia_sbbq_Eq_Gq = { "sbb", "sbbq", Eq, Gq, XX },
-Ia_sbbq_Eq_sIb = { "sbb", "sbbq", Eq, sIbq, XX },
-Ia_sbbq_Eq_sId = { "sbb", "sbbq", Eq, sIdq, XX },
-Ia_sbbq_Gq_Eq = { "sbb", "sbbq", Gq, Eq, XX },
-Ia_sbbq_RAX_sId = { "sbb", "sbbq", RAX, sIdq, XX },
-Ia_sbbw_AX_Iw = { "sbb", "sbbw", AX, Iw, XX },
-Ia_sbbw_Ew_Gw = { "sbb", "sbbw", Ew, Gw, XX },
-Ia_sbbw_Ew_Iw = { "sbb", "sbbw", Ew, Iw, XX },
-Ia_sbbw_Ew_sIb = { "sbb", "sbbw", Ew, sIbw, XX },
-Ia_sbbw_Gw_Ew = { "sbb", "sbbw", Gw, Ew, XX },
-Ia_scasb_Yb_AL = { "scasb", "scasb", Yb, AL, XX },
-Ia_scasl_Yd_EAX = { "scasd", "scasl", Yd, EAX, XX },
-Ia_scasq_Yq_RAX = { "scasq", "scasq", Yq, RAX, XX },
-Ia_scasw_Yw_AX = { "scasw", "scasw", Yw, AX, XX },
-Ia_setb_Eb = { "setb", "setb", Eb, XX, XX },
-Ia_setbe_Eb = { "setbe", "setbe", Eb, XX, XX },
-Ia_setl_Eb = { "setl", "setl", Eb, XX, XX },
-Ia_setle_Eb = { "setle", "setle", Eb, XX, XX },
-Ia_setnb_Eb = { "setnb", "setnb", Eb, XX, XX },
-Ia_setnbe_Eb = { "setnbe", "setnbe", Eb, XX, XX },
-Ia_setnl_Eb = { "setnl", "setnl", Eb, XX, XX },
-Ia_setnle_Eb = { "setnle", "setnle", Eb, XX, XX },
-Ia_setno_Eb = { "setno", "setno", Eb, XX, XX },
-Ia_setnp_Eb = { "setnp", "setnp", Eb, XX, XX },
-Ia_setns_Eb = { "setns", "setns", Eb, XX, XX },
-Ia_setnz_Eb = { "setnz", "setnz", Eb, XX, XX },
-Ia_seto_Eb = { "seto", "seto", Eb, XX, XX },
-Ia_setp_Eb = { "setp", "setp", Eb, XX, XX },
-Ia_sets_Eb = { "sets", "sets", Eb, XX, XX },
-Ia_setz_Eb = { "setz", "setz", Eb, XX, XX },
-Ia_sfence = { "sfence", "sfence", XX, XX, XX },
-Ia_sgdt = { "sgdt", "sgdt", Ms, XX, XX },
-Ia_shlb_Eb_CL = { "shl", "shlb", Eb, CL, XX },
-Ia_shlb_Eb_I1 = { "shl", "shlb", Eb, I1, XX },
-Ia_shlb_Eb_Ib = { "shl", "shlb", Eb, Ib, XX },
-Ia_shldl_Ed_Gd_CL = { "shld", "shldl", Ed, Gd, CL },
-Ia_shldl_Ed_Gd_Ib = { "shld", "shldl", Ed, Gd, Ib },
-Ia_shldq_Eq_Gq_CL = { "shld", "shldq", Eq, Gq, CL },
-Ia_shldq_Eq_Gq_Ib = { "shld", "shldq", Eq, Gq, Ib },
-Ia_shldw_Ew_Gw_CL = { "shld", "shldw", Ew, Gw, CL },
-Ia_shldw_Ew_Gw_Ib = { "shld", "shldw", Ew, Gw, Ib },
-Ia_shll_Ed_CL = { "shl", "shll", Ed, CL, XX },
-Ia_shll_Ed_I1 = { "shl", "shll", Ed, I1, XX },
-Ia_shll_Ed_Ib = { "shl", "shll", Ed, Ib, XX },
-Ia_shlq_Eq_CL = { "shl", "shlq", Eq, CL, XX },
-Ia_shlq_Eq_I1 = { "shl", "shlq", Eq, I1, XX },
-Ia_shlq_Eq_Ib = { "shl", "shlq", Eq, Ib, XX },
-Ia_shlw_Ew_CL = { "shl", "shlw", Ew, CL, XX },
-Ia_shlw_Ew_I1 = { "shl", "shlw", Ew, I1, XX },
-Ia_shlw_Ew_Ib = { "shl", "shlw", Ew, Ib, XX },
-Ia_shrb_Eb_CL = { "shr", "shrb", Eb, CL, XX },
-Ia_shrb_Eb_I1 = { "shr", "shrb", Eb, I1, XX },
-Ia_shrb_Eb_Ib = { "shr", "shrb", Eb, Ib, XX },
-Ia_shrdl_Ed_Gd_CL = { "shrd", "shrdl", Ed, Gd, CL },
-Ia_shrdl_Ed_Gd_Ib = { "shrd", "shrdl", Ed, Gd, Ib },
-Ia_shrdq_Eq_Gq_CL = { "shrd", "shrdq", Eq, Gq, CL },
-Ia_shrdq_Eq_Gq_Ib = { "shrd", "shrdq", Eq, Gq, Ib },
-Ia_shrdw_Ew_Gw_CL = { "shrd", "shrdw", Ew, Gw, CL },
-Ia_shrdw_Ew_Gw_Ib = { "shrd", "shrdw", Ew, Gw, Ib },
-Ia_shrl_Ed_CL = { "shr", "shrl", Ed, CL, XX },
-Ia_shrl_Ed_I1 = { "shr", "shrl", Ed, I1, XX },
-Ia_shrl_Ed_Ib = { "shr", "shrl", Ed, Ib, XX },
-Ia_shrq_Eq_CL = { "shr", "shrq", Eq, CL, XX },
-Ia_shrq_Eq_I1 = { "shr", "shrq", Eq, I1, XX },
-Ia_shrq_Eq_Ib = { "shr", "shrq", Eq, Ib, XX },
-Ia_shrw_Ew_CL = { "shr", "shrw", Ew, CL, XX },
-Ia_shrw_Ew_I1 = { "shr", "shrw", Ew, I1, XX },
-Ia_shrw_Ew_Ib = { "shr", "shrw", Ew, Ib, XX },
-Ia_shufpd_Vpd_Wpd_Ib = { "shufpd", "shufpd", Vpd, Wpd, Ib },
-Ia_shufps_Vps_Wps_Ib = { "shufps", "shufps", Vps, Wps, Ib },
-Ia_sidt = { "sidt", "sidt", Ms, XX, XX },
-Ia_sldt = { "sldt", "sldt", Ew, XX, XX },
-Ia_smsw_Ew = { "smsw", "smsw", Ew, XX, XX },
-Ia_sqrtpd_Vpd_Wpd = { "sqrtpd", "sqrtpd", Vpd, Wpd, XX },
-Ia_sqrtps_Vps_Wps = { "sqrtps", "sqrtps", Vps, Wps, XX },
-Ia_sqrtsd_Vsd_Wsd = { "sqrtsd", "sqrtsd", Vsd, Wsd, XX },
-Ia_sqrtss_Vss_Wss = { "sqrtss", "sqrtss", Vss, Wss, XX },
-Ia_stc = { "stc", "stc", XX, XX, XX },
-Ia_std = { "std", "std", XX, XX, XX },
-Ia_sti = { "sti", "sti", XX, XX, XX },
-Ia_stmxcsr = { "stmxcsr", "stmxcsr", Md, XX, XX },
-Ia_stosb_Yb_AL = { "stosb", "stosb", Yb, AL, XX },
-Ia_stosl_Yd_EAX = { "stosd", "stosl", Yd, EAX, XX },
-Ia_stosq_Yq_RAX = { "stosq", "stosq", Yq, RAX, XX },
-Ia_stosw_Yw_AX = { "stosw", "stosw", Yw, AX, XX },
-Ia_str = { "str", "str", Ew, XX, XX },
-Ia_subb_AL_Ib = { "sub", "subb", AL, Ib, XX },
-Ia_subb_Eb_Gb = { "sub", "subb", Eb, Gb, XX },
-Ia_subb_Eb_Ib = { "sub", "subb", Eb, Ib, XX },
-Ia_subb_Gb_Eb = { "sub", "subb", Gb, Eb, XX },
-Ia_subl_EAX_Id = { "sub", "subl", EAX, Id, XX },
-Ia_subl_Ed_Gd = { "sub", "subl", Ed, Gd, XX },
-Ia_subl_Ed_Id = { "sub", "subl", Ed, Id, XX },
-Ia_subl_Ed_sIb = { "sub", "subl", Ed, sIbd, XX },
-Ia_subl_Gd_Ed = { "sub", "subl", Gd, Ed, XX },
-Ia_subpd_Vpd_Wpd = { "subpd", "subpd", Vpd, Wpd, XX },
-Ia_subps_Vps_Wps = { "subps", "subps", Vps, Wps, XX },
-Ia_subq_Eq_Gq = { "sub", "subq", Eq, Gq, XX },
-Ia_subq_Eq_sIb = { "sub", "subq", Eq, sIbq, XX },
-Ia_subq_Eq_sId = { "sub", "subq", Eq, sIdq, XX },
-Ia_subq_Gq_Eq = { "sub", "subq", Gq, Eq, XX },
-Ia_subq_RAX_sId = { "sub", "subq", RAX, sIdq, XX },
-Ia_subsd_Vsd_Wsd = { "subsd", "subsd", Vsd, Wsd, XX },
-Ia_subss_Vss_Wss = { "subss", "subss", Vss, Wss, XX },
-Ia_subw_AX_Iw = { "sub", "subw", AX, Iw, XX },
-Ia_subw_Ew_Gw = { "sub", "subw", Ew, Gw, XX },
-Ia_subw_Ew_Iw = { "sub", "subw", Ew, Iw, XX },
-Ia_subw_Ew_sIb = { "sub", "subw", Ew, sIbw, XX },
-Ia_subw_Gw_Ew = { "sub", "subw", Gw, Ew, XX },
-Ia_swapgs = { "swapgs", "swapgs", XX, XX, XX },
-Ia_syscall = { "syscall", "syscall", XX, XX, XX },
-Ia_sysenter = { "sysenter", "sysenter", XX, XX, XX },
-Ia_sysexit = { "sysexit", "sysexit", XX, XX, XX },
-Ia_sysret = { "sysret", "sysret", XX, XX, XX },
-Ia_testb_AL_Ib = { "test", "testb", AL, Ib, XX },
-Ia_testb_Eb_Gb = { "test", "testb", Eb, Gb, XX },
-Ia_testb_Eb_Ib = { "test", "testb", Eb, Ib, XX },
-Ia_testl_EAX_Id = { "test", "testl", EAX, Id, XX },
-Ia_testl_Ed_Gd = { "test", "testl", Ed, Gd, XX },
-Ia_testl_Ed_Id = { "test", "testl", Ed, Id, XX },
-Ia_testq_Eq_Gq = { "test", "testq", Eq, Gq, XX },
-Ia_testq_Eq_sId = { "test", "testq", Eq, sIdq, XX },
-Ia_testq_RAX_sId = { "test", "testq", RAX, sIdq, XX },
-Ia_testw_AX_Iw = { "test", "testw", AX, Iw, XX },
-Ia_testw_Ew_Gw = { "test", "testw", Ew, Gw, XX },
-Ia_testw_Ew_Iw = { "test", "testw", Ew, Iw, XX },
-Ia_ucomisd_Vsd_Wss = { "ucomisd", "ucomisd", Vsd, Wsd, XX },
-Ia_ucomiss_Vss_Wss = { "ucomiss", "ucomiss", Vss, Wss, XX },
-Ia_ud2a = { "ud2a", "ud2a", XX, XX, XX },
-Ia_ud2b = { "ud2b", "ud2b", XX, XX, XX },
-Ia_unpckhpd_Vpd_Wdq = { "unpckhpd", "unpckhpd", Vpd, Wdq, XX },
-Ia_unpckhps_Vps_Wdq = { "unpckhps", "unpckhps", Vps, Wdq, XX },
-Ia_unpcklpd_Vpd_Wq = { "unpcklpd", "unpcklpd", Vpd, Wq, XX },
-Ia_unpcklps_Vps_Wq = { "unpcklps", "unpcklps", Vps, Wq, XX },
-Ia_verr = { "verr", "verr", Ew, XX, XX },
-Ia_verw = { "verw", "verw", Ew, XX, XX },
-Ia_wbinvd = { "wbinvd", "wbinvd", XX, XX, XX },
-Ia_wrmsr = { "wrmsr", "wrmsr", XX, XX, XX },
-Ia_xaddb_Eb_Gb = { "xadd", "xaddb", Eb, Gb, XX },
-Ia_xaddl_Ed_Gd = { "xadd", "xaddl", Ed, Gd, XX },
-Ia_xaddq_Eq_Gq = { "xadd", "xaddq", Eq, Gq, XX },
-Ia_xaddw_Ew_Gw = { "xadd", "xaddw", Ew, Gw, XX },
-Ia_xchgb_Eb_Gb = { "xchg", "xchgb", Eb, Gb, XX },
-Ia_xchgl_Ed_Gd = { "xchg", "xchgl", Ed, Gd, XX },
-Ia_xchgl_ERX_EAX = { "xchg", "xchgl", ERX, EAX, XX },
-Ia_xchgq_Eq_Gq = { "xchg", "xchgq", Eq, Gq, XX },
-Ia_xchgq_RRX_RAX = { "xchg", "xchgq", RRX, RAX, XX },
-Ia_xchgw_Ew_Gw = { "xchg", "xchgw", Ew, Gw, XX },
-Ia_xchgw_RX_AX = { "xchg", "xchgw", RX, AX, XX },
-Ia_xlat = { "xlat", "xlat", XX, XX, XX },
-Ia_xorb_AL_Ib = { "xor", "xorb", AL, Ib, XX },
-Ia_xorb_Eb_Gb = { "xor", "xorb", Eb, Gb, XX },
-Ia_xorb_Eb_Ib = { "xor", "xorb", Eb, Ib, XX },
-Ia_xorb_Gb_Eb = { "xor", "xorb", Gb, Eb, XX },
-Ia_xorl_EAX_Id = { "xor", "xorl", EAX, Id, XX },
-Ia_xorl_Ed_Gd = { "xor", "xorl", Ed, Gd, XX },
-Ia_xorl_Ed_Id = { "xor", "xorl", Ed, Id, XX },
-Ia_xorl_Ed_sIb = { "xor", "xorl", Ed, sIbd, XX },
-Ia_xorl_Gd_Ed = { "xor", "xorl", Gd, Ed, XX },
-Ia_xorpd_Vpd_Wpd = { "xorpd", "xorpd", Vpd, Wpd, XX },
-Ia_xorps_Vps_Wps = { "xorps", "xorps", Vps, Wps, XX },
-Ia_xorq_Eq_Gq = { "xor", "xorq", Eq, Gq, XX },
-Ia_xorq_Eq_sIb = { "xor", "xorq", Eq, sIbq, XX },
-Ia_xorq_Eq_sId = { "xor", "xorq", Eq, sIdq, XX },
-Ia_xorq_Gq_Eq = { "xor", "xorq", Gq, Eq, XX },
-Ia_xorq_RAX_sId = { "xor", "xorq", RAX, sIdq, XX },
-Ia_xorw_AX_Iw = { "xor", "xorw", AX, Iw, XX },
-Ia_xorw_Ew_Gw = { "xor", "xorw", Ew, Gw, XX },
-Ia_xorw_Ew_Iw = { "xor", "xorw", Ew, Iw, XX },
-Ia_xorw_Ew_sIb = { "xor", "xorw", Ew, sIbw, XX },
-Ia_xorw_Gw_Ew = { "xor", "xorw", Gw, Ew, XX };
diff --git a/Externals/Bochs_disasm/resolve.cc b/Externals/Bochs_disasm/resolve.cc
new file mode 100644
index 0000000000..e72f8d11b5
--- /dev/null
+++ b/Externals/Bochs_disasm/resolve.cc
@@ -0,0 +1,696 @@
+/////////////////////////////////////////////////////////////////////////
+// $Id: resolve.cc 11863 2013-10-07 19:23:19Z sshwarts $
+/////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2005-2013 Stanislav Shwartsman
+// Written by Stanislav Shwartsman [sshwarts at sourceforge net]
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+//
+/////////////////////////////////////////////////////////////////////////
+
+#include
+#include
+#include "disasm.h"
+
+void disassembler::decode_modrm(x86_insn *insn)
+{
+ insn->modrm = fetch_byte();
+ BX_DECODE_MODRM(insn->modrm, insn->mod, insn->nnn, insn->rm);
+ // MOVs with CRx and DRx always use register ops and ignore the mod field.
+ if ((insn->b1 & ~3) == 0x120) insn->mod = 3;
+ insn->nnn |= insn->rex_r;
+ insn->rm |= insn->rex_b;
+
+ if (insn->mod == 3) {
+ return; /* mod, reg, reg */
+ }
+
+ if (insn->as_64)
+ {
+ if ((insn->rm & 7) != 4) { /* rm != 100b, no s-i-b byte */
+ // one byte modrm
+ switch (insn->mod) {
+ case 0:
+ resolve_modrm = &disassembler::resolve64_mod0;
+ if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ case 1:
+ /* reg, 8-bit displacement, sign extend */
+ resolve_modrm = &disassembler::resolve64_mod1or2;
+ insn->displacement.displ32 = (Bit8s) fetch_byte();
+ break;
+ case 2:
+ /* reg, 32-bit displacement */
+ resolve_modrm = &disassembler::resolve64_mod1or2;
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ } /* switch (mod) */
+ } /* if (rm != 4) */
+ else { /* rm == 4, s-i-b byte follows */
+ insn->sib = fetch_byte();
+ BX_DECODE_SIB(insn->sib, insn->scale, insn->index, insn->base);
+ insn->base |= insn->rex_b;
+ insn->index |= insn->rex_x;
+
+ switch (insn->mod) {
+ case 0:
+ resolve_modrm = &disassembler::resolve64_mod0_rm4;
+ if ((insn->base & 7) == 5)
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ case 1:
+ resolve_modrm = &disassembler::resolve64_mod1or2_rm4;
+ insn->displacement.displ32 = (Bit8s) fetch_byte();
+ break;
+ case 2:
+ resolve_modrm = &disassembler::resolve64_mod1or2_rm4;
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ }
+ } /* s-i-b byte follows */
+ }
+ else
+ {
+ if (insn->as_32)
+ {
+ if ((insn->rm & 7) != 4) { /* rm != 100b, no s-i-b byte */
+ // one byte modrm
+ switch (insn->mod) {
+ case 0:
+ resolve_modrm = &disassembler::resolve32_mod0;
+ if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ case 1:
+ /* reg, 8-bit displacement, sign extend */
+ resolve_modrm = &disassembler::resolve32_mod1or2;
+ insn->displacement.displ32 = (Bit8s) fetch_byte();
+ break;
+ case 2:
+ /* reg, 32-bit displacement */
+ resolve_modrm = &disassembler::resolve32_mod1or2;
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ } /* switch (mod) */
+ } /* if (rm != 4) */
+ else { /* rm == 4, s-i-b byte follows */
+ insn->sib = fetch_byte();
+ BX_DECODE_SIB(insn->sib, insn->scale, insn->index, insn->base);
+ insn->base |= insn->rex_b;
+ insn->index |= insn->rex_x;
+
+ switch (insn->mod) {
+ case 0:
+ resolve_modrm = &disassembler::resolve32_mod0_rm4;
+ if ((insn->base & 7) == 5)
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ case 1:
+ resolve_modrm = &disassembler::resolve32_mod1or2_rm4;
+ insn->displacement.displ32 = (Bit8s) fetch_byte();
+ break;
+ case 2:
+ resolve_modrm = &disassembler::resolve32_mod1or2_rm4;
+ insn->displacement.displ32 = fetch_dword();
+ break;
+ }
+ } /* s-i-b byte follows */
+ }
+ else {
+ assert(insn->rex_b == 0);
+ assert(insn->rex_x == 0);
+ assert(insn->rex_r == 0);
+ /* 16 bit addressing modes. */
+ switch (insn->mod) {
+ case 0:
+ resolve_modrm = &disassembler::resolve16_mod0;
+ if(insn->rm == 6)
+ insn->displacement.displ16 = fetch_word();
+ break;
+ case 1:
+ /* reg, 8-bit displacement, sign extend */
+ resolve_modrm = &disassembler::resolve16_mod1or2;
+ insn->displacement.displ16 = (Bit8s) fetch_byte();
+ break;
+ case 2:
+ resolve_modrm = &disassembler::resolve16_mod1or2;
+ insn->displacement.displ16 = fetch_word();
+ break;
+ } /* switch (mod) ... */
+ }
+ }
+}
+
+void disassembler::resolve16_mod0(const x86_insn *insn, unsigned datasize)
+{
+ const char *seg;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod00_rm16[insn->rm];
+
+ if(insn->rm == 6)
+ print_memory_access16(datasize, seg, NULL, insn->displacement.displ16);
+ else
+ print_memory_access16(datasize, seg, index16[insn->rm], 0);
+}
+
+void disassembler::resolve16_mod1or2(const x86_insn *insn, unsigned datasize)
+{
+ const char *seg;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod01or10_rm16[insn->rm];
+
+ print_memory_access16(datasize, seg, index16[insn->rm], insn->displacement.displ16);
+}
+
+void disassembler::resolve32_mod0(const x86_insn *insn, unsigned datasize)
+{
+ const char *seg, *eip_regname = NULL;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = segment_name[DS_REG];
+
+ if (insn->is_64) {
+ if (intel_mode) eip_regname = "eip";
+ else eip_regname = "%eip";
+ }
+
+ if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
+ print_memory_access32(datasize, seg, eip_regname, NULL, 0, insn->displacement.displ32);
+ else
+ print_memory_access32(datasize, seg, general_32bit_regname[insn->rm], NULL, 0, 0);
+}
+
+void disassembler::resolve32_mod1or2(const x86_insn *insn, unsigned datasize)
+{
+ const char *seg;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod01or10_base32[insn->rm];
+
+ print_memory_access32(datasize, seg,
+ general_32bit_regname[insn->rm], NULL, 0, insn->displacement.displ32);
+}
+
+void disassembler::resolve32_mod0_rm4(const x86_insn *insn, unsigned datasize)
+{
+ char vsib_index[8];
+ const char *seg, *base = NULL, *index = NULL;
+ Bit32u disp32 = 0;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod00_base32[insn->base];
+
+ if ((insn->base & 7) != 5)
+ base = general_32bit_regname[insn->base];
+ else
+ disp32 = insn->displacement.displ32;
+
+ if (datasize & VSIB_Index) {
+ sprintf(vsib_index, "%s%d", vector_reg_name[insn->vex_l], insn->index);
+ index = vsib_index;
+ }
+ else {
+ if (insn->index != 4)
+ index = general_32bit_regname[insn->index];
+ }
+
+ print_memory_access32(datasize, seg, base, index, insn->scale, disp32);
+}
+
+void disassembler::resolve32_mod1or2_rm4(const x86_insn *insn, unsigned datasize)
+{
+ char vsib_index[8];
+ const char *seg, *index = NULL;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod01or10_base32[insn->base];
+
+ if (datasize & VSIB_Index) {
+ sprintf(vsib_index, "%s%d", vector_reg_name[insn->vex_l], insn->index);
+ index = vsib_index;
+ }
+ else {
+ if (insn->index != 4)
+ index = general_32bit_regname[insn->index];
+ }
+
+ print_memory_access32(datasize, seg,
+ general_32bit_regname[insn->base], index, insn->scale, insn->displacement.displ32);
+}
+
+void disassembler::resolve64_mod0(const x86_insn *insn, unsigned datasize)
+{
+ const char *seg, *rip_regname;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = segment_name[DS_REG];
+
+ if (intel_mode) rip_regname = "rip";
+ else rip_regname = "%rip";
+
+ if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
+ print_memory_access64(datasize, seg, rip_regname, NULL, 0, (Bit32s) insn->displacement.displ32);
+ else
+ print_memory_access64(datasize, seg, general_64bit_regname[insn->rm], NULL, 0, 0);
+}
+
+void disassembler::resolve64_mod1or2(const x86_insn *insn, unsigned datasize)
+{
+ const char *seg;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod01or10_base32[insn->rm];
+
+ print_memory_access64(datasize, seg,
+ general_64bit_regname[insn->rm], NULL, 0, (Bit32s) insn->displacement.displ32);
+}
+
+void disassembler::resolve64_mod0_rm4(const x86_insn *insn, unsigned datasize)
+{
+ char vsib_index[8];
+ const char *seg, *base = NULL, *index = NULL;
+ Bit32s disp32 = 0;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod00_base32[insn->base];
+
+ if ((insn->base & 7) != 5)
+ base = general_64bit_regname[insn->base];
+ else
+ disp32 = (Bit32s) insn->displacement.displ32;
+
+ if (datasize & VSIB_Index) {
+ sprintf(vsib_index, "%s%d", vector_reg_name[insn->vex_l], insn->index);
+ index = vsib_index;
+ }
+ else {
+ if (insn->index != 4)
+ index = general_64bit_regname[insn->index];
+ }
+
+ print_memory_access64(datasize, seg, base, index, insn->scale, disp32);
+}
+
+void disassembler::resolve64_mod1or2_rm4(const x86_insn *insn, unsigned datasize)
+{
+ char vsib_index[8];
+ const char *seg, *index = NULL;
+
+ if (insn->is_seg_override())
+ seg = segment_name[insn->seg_override];
+ else
+ seg = sreg_mod01or10_base32[insn->base];
+
+ if (datasize & VSIB_Index) {
+ sprintf(vsib_index, "%s%d", vector_reg_name[insn->vex_l], insn->index);
+ index = vsib_index;
+ }
+ else {
+ if (insn->index != 4)
+ index = general_64bit_regname[insn->index];
+ }
+
+ print_memory_access64(datasize, seg,
+ general_64bit_regname[insn->base], index, insn->scale, (Bit32s) insn->displacement.displ32);
+}
+
+void disassembler::print_datasize(unsigned size)
+{
+ if (!intel_mode || !print_mem_datasize) return;
+
+ switch(size & 0xf)
+ {
+ case B_SIZE:
+ dis_sprintf("byte ptr ");
+ break;
+ case W_SIZE:
+ dis_sprintf("word ptr ");
+ break;
+ case D_SIZE:
+ dis_sprintf("dword ptr ");
+ break;
+ case Q_SIZE:
+ dis_sprintf("qword ptr ");
+ break;
+ case T_SIZE:
+ dis_sprintf("tbyte ptr ");
+ break;
+ case XMM_SIZE:
+ dis_sprintf("dqword ptr ");
+ break;
+ case YMM_SIZE:
+ dis_sprintf("qqword ptr ");
+ break;
+ case X_SIZE:
+ break;
+ };
+}
+
+void disassembler::print_memory_access16(int datasize,
+ const char *seg, const char *index, Bit16u disp)
+{
+ print_datasize(datasize);
+
+ dis_sprintf("%s:", seg);
+
+ if (intel_mode)
+ {
+ if (index == NULL)
+ {
+ dis_sprintf("0x%04x", (unsigned) disp);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+0x%04x]", index, (unsigned) disp);
+ else
+ dis_sprintf("[%s%+d]", index, (int) (Bit16s) disp);
+ }
+ else
+ dis_sprintf("[%s]", index);
+ }
+ }
+ else
+ {
+ if (index == NULL)
+ {
+ dis_sprintf("0x%04x", (unsigned) disp);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%04x(%s,1)", (unsigned) disp, index);
+ else
+ dis_sprintf("%d(%s,1)", (int) (Bit16s) disp, index);
+ }
+ else
+ dis_sprintf("(%s,1)", index);
+ }
+ }
+}
+
+void disassembler::print_memory_access32(int datasize,
+ const char *seg, const char *base, const char *index, int scale, Bit32s disp)
+{
+ print_datasize(datasize);
+
+ dis_sprintf("%s:", seg);
+
+ scale = 1 << scale;
+
+ if (intel_mode)
+ {
+ if (base == NULL)
+ {
+ if (index == NULL)
+ {
+ dis_sprintf("0x%08x", (unsigned) disp);
+ }
+ else
+ {
+ if (scale != 1)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s*%d+0x%08x]", index, scale, (unsigned) disp);
+ else
+ dis_sprintf("[%s*%d%+d]", index, scale, (int) disp);
+ }
+ else
+ dis_sprintf("[%s*%d]", index, scale);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+0x%08x]", index, (unsigned) disp);
+ else
+ dis_sprintf("[%s%+d]", index, (int) disp);
+ }
+ else {
+ dis_sprintf("[%s]", index);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (index == NULL)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+0x%08x]", base, (unsigned) disp);
+ else
+ dis_sprintf("[%s%+d]", base, (int) disp);
+ }
+ else {
+ dis_sprintf("[%s]", base);
+ }
+ }
+ else
+ {
+ if (scale != 1)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+%s*%d+0x%08x]", base, index, scale, (unsigned) disp);
+ else
+ dis_sprintf("[%s+%s*%d%+d]", base, index, scale, (int) disp);
+ }
+ else {
+ dis_sprintf("[%s+%s*%d]", base, index, scale);
+ }
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+%s+0x%08x]", base, index, (unsigned) disp);
+ else
+ dis_sprintf("[%s+%s%+d]", base, index, (int) disp);
+ }
+ else
+ dis_sprintf("[%s+%s]", base, index);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (base == NULL)
+ {
+ if (index == NULL)
+ {
+ dis_sprintf("0x%08x", (unsigned) disp);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%08x(,%s,%d)", (unsigned) disp, index, scale);
+ else
+ dis_sprintf("%d(,%s,%d)", (int) disp, index, scale);
+ }
+ else
+ dis_sprintf("(,%s,%d)", index, scale);
+ }
+ }
+ else
+ {
+ if (index == NULL)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%08x(%s)", (unsigned) disp, base);
+ else
+ dis_sprintf("%d(%s)", (int) disp, base);
+ }
+ else
+ dis_sprintf("(%s)", base);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%08x(%s,%s,%d)", (unsigned) disp, base, index, scale);
+ else
+ dis_sprintf("%d(%s,%s,%d)", (int) disp, base, index, scale);
+ }
+ else
+ dis_sprintf("(%s,%s,%d)", base, index, scale);
+ }
+ }
+ }
+}
+
+void disassembler::print_memory_access64(int datasize,
+ const char *seg, const char *base, const char *index, int scale, Bit32s disp)
+{
+ Bit64u disp64 = (Bit64s) disp;
+
+ print_datasize(datasize);
+
+ dis_sprintf("%s:", seg);
+
+ scale = 1 << scale;
+
+ if (intel_mode)
+ {
+ if (base == NULL)
+ {
+ if (index == NULL)
+ {
+ dis_sprintf("0x%08x%08x", GET32H(disp64), GET32L(disp64));
+ }
+ else
+ {
+ if (scale != 1)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s*%d+0x%08x%08x]", index, scale, GET32H(disp64), GET32L(disp64));
+ else
+ dis_sprintf("[%s*%d%+d]", index, scale, (int) disp);
+ }
+ else
+ dis_sprintf("[%s*%d]", index, scale);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+0x%08x%08x]", index, GET32H(disp64), GET32L(disp64));
+ else
+ dis_sprintf("[%s%+d]", index, (int) disp);
+ }
+ else {
+ dis_sprintf("[%s]", index);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (index == NULL)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+0x%08x%08x]", base, GET32H(disp64), GET32L(disp64));
+ else
+ dis_sprintf("[%s%+d]", base, (int) disp);
+ }
+ else {
+ dis_sprintf("[%s]", base);
+ }
+ }
+ else
+ {
+ if (scale != 1)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+%s*%d+0x%08x%08x]", base, index, scale, GET32H(disp64), GET32L(disp64));
+ else
+ dis_sprintf("[%s+%s*%d%+d]", base, index, scale, (int) disp);
+ }
+ else {
+ dis_sprintf("[%s+%s*%d]", base, index, scale);
+ }
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("[%s+%s+0x%08x%08x]", base, index, GET32H(disp64), GET32L(disp64));
+ else
+ dis_sprintf("[%s+%s%+d]", base, index, (int) disp);
+ }
+ else
+ dis_sprintf("[%s+%s]", base, index);
+ }
+ }
+ }
+ }
+ else
+ {
+ if (base == NULL)
+ {
+ if (index == NULL)
+ {
+ dis_sprintf("0x%08x%08x", GET32H(disp64), GET32L(disp64));
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%08x%08x(,%s,%d)", GET32H(disp64), GET32L(disp64), index, scale);
+ else
+ dis_sprintf("%d(,%s,%d)", (int) disp, index, scale);
+ }
+ else
+ dis_sprintf("(,%s,%d)", index, scale);
+ }
+ }
+ else
+ {
+ if (index == NULL)
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%08x%08x(%s)", GET32H(disp64), GET32L(disp64), base);
+ else
+ dis_sprintf("%d(%s)", (int) disp, base);
+ }
+ else
+ dis_sprintf("(%s)", base);
+ }
+ else
+ {
+ if (disp != 0) {
+ if (offset_mode_hex)
+ dis_sprintf("0x%08x%08x(%s,%s,%d)", GET32H(disp64), GET32L(disp64), base, index, scale);
+ else
+ dis_sprintf("%d(%s,%s,%d)", (int) disp, base, index, scale);
+ }
+ else
+ dis_sprintf("(%s,%s,%d)", base, index, scale);
+ }
+ }
+ }
+}
diff --git a/Externals/Bochs_disasm/resolve.cpp b/Externals/Bochs_disasm/resolve.cpp
deleted file mode 100644
index 3bf2d344dc..0000000000
--- a/Externals/Bochs_disasm/resolve.cpp
+++ /dev/null
@@ -1,460 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-// $Id: resolve.cc,v 1.13 2006/08/11 17:22:43 sshwarts Exp $
-/////////////////////////////////////////////////////////////////////////
-#include
-#include
-#include "disasm.h"
-
-void disassembler::decode_modrm(x86_insn *insn)
-{
- insn->modrm = fetch_byte();
- BX_DECODE_MODRM(insn->modrm, insn->mod, insn->nnn, insn->rm);
- // MOVs with CRx and DRx always use register ops and ignore the mod field.
- if ((insn->b1 & ~3) == 0x120) insn->mod = 3;
- insn->nnn |= insn->rex_r;
-
- if (insn->mod == 3) {
- /* mod, reg, reg */
- insn->rm |= insn->rex_b;
- return;
- }
-
- if (insn->as_64)
- {
- if (insn->rm != 4) { /* rm != 100b, no s-i-b byte */
- insn->rm |= insn->rex_b;
- // one byte modrm
- switch (insn->mod) {
- case 0:
- resolve_modrm = &disassembler::resolve64_mod0;
- if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
- insn->displacement.displ32 = fetch_dword();
- break;
- case 1:
- /* reg, 8-bit displacement, sign extend */
- resolve_modrm = &disassembler::resolve64_mod1or2;
- insn->displacement.displ32 = (Bit8s) fetch_byte();
- break;
- case 2:
- /* reg, 32-bit displacement */
- resolve_modrm = &disassembler::resolve64_mod1or2;
- insn->displacement.displ32 = fetch_dword();
- break;
- } /* switch (mod) */
- } /* if (rm != 4) */
- else { /* rm == 4, s-i-b byte follows */
- insn->sib = fetch_byte();
- BX_DECODE_SIB(insn->sib, insn->scale, insn->index, insn->base);
- insn->base |= insn->rex_b;
- insn->index |= insn->rex_x;
-
- switch (insn->mod) {
- case 0:
- resolve_modrm = &disassembler::resolve64_mod0_rm4;
- if ((insn->base & 7) == 5)
- insn->displacement.displ32 = fetch_dword();
- break;
- case 1:
- resolve_modrm = &disassembler::resolve64_mod1or2_rm4;
- insn->displacement.displ32 = (Bit8s) fetch_byte();
- break;
- case 2:
- resolve_modrm = &disassembler::resolve64_mod1or2_rm4;
- insn->displacement.displ32 = fetch_dword();
- break;
- }
- } /* s-i-b byte follows */
- }
- else
- {
- if (insn->as_32)
- {
- if (insn->rm != 4) { /* rm != 100b, no s-i-b byte */
- insn->rm |= insn->rex_b;
- // one byte modrm
- switch (insn->mod) {
- case 0:
- resolve_modrm = &disassembler::resolve32_mod0;
- if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
- insn->displacement.displ32 = fetch_dword();
- break;
- case 1:
- /* reg, 8-bit displacement, sign extend */
- resolve_modrm = &disassembler::resolve32_mod1or2;
- insn->displacement.displ32 = (Bit8s) fetch_byte();
- break;
- case 2:
- /* reg, 32-bit displacement */
- resolve_modrm = &disassembler::resolve32_mod1or2;
- insn->displacement.displ32 = fetch_dword();
- break;
- } /* switch (mod) */
- } /* if (rm != 4) */
- else { /* rm == 4, s-i-b byte follows */
- insn->sib = fetch_byte();
- BX_DECODE_SIB(insn->sib, insn->scale, insn->index, insn->base);
- insn->base |= insn->rex_b;
- insn->index |= insn->rex_x;
-
- switch (insn->mod) {
- case 0:
- resolve_modrm = &disassembler::resolve32_mod0_rm4;
- if ((insn->base & 7) == 5)
- insn->displacement.displ32 = fetch_dword();
- break;
- case 1:
- resolve_modrm = &disassembler::resolve32_mod1or2_rm4;
- insn->displacement.displ32 = (Bit8s) fetch_byte();
- break;
- case 2:
- resolve_modrm = &disassembler::resolve32_mod1or2_rm4;
- insn->displacement.displ32 = fetch_dword();
- break;
- }
- } /* s-i-b byte follows */
- }
- else {
- assert(insn->rex_b == 0);
- assert(insn->rex_x == 0);
- assert(insn->rex_r == 0);
- /* 16 bit addressing modes. */
- switch (insn->mod) {
- case 0:
- resolve_modrm = &disassembler::resolve16_mod0;
- if(insn->rm == 6)
- insn->displacement.displ16 = fetch_word();
- break;
- case 1:
- /* reg, 8-bit displacement, sign extend */
- resolve_modrm = &disassembler::resolve16_mod1or2;
- insn->displacement.displ16 = (Bit8s) fetch_byte();
- break;
- case 2:
- resolve_modrm = &disassembler::resolve16_mod1or2;
- insn->displacement.displ16 = fetch_word();
- break;
- } /* switch (mod) ... */
- }
- }
-}
-
-void disassembler::resolve16_mod0(const x86_insn *insn, unsigned mode)
-{
- const char *seg;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod00_rm16[insn->rm];
-
- if(insn->rm == 6)
- print_memory_access16(mode, seg, NULL, insn->displacement.displ16);
- else
- print_memory_access16(mode, seg, index16[insn->rm], 0);
-}
-
-void disassembler::resolve16_mod1or2(const x86_insn *insn, unsigned mode)
-{
- const char *seg;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod01or10_rm16[insn->rm];
-
- print_memory_access16(mode, seg, index16[insn->rm], insn->displacement.displ16);
-}
-
-void disassembler::resolve32_mod0(const x86_insn *insn, unsigned mode)
-{
- const char *seg;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = segment_name[DS_REG];
-
- if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
- print_memory_access(mode, seg, NULL, NULL, 0, insn->displacement.displ32);
- else
- print_memory_access(mode, seg, general_32bit_regname[insn->rm], NULL, 0, 0);
-}
-
-void disassembler::resolve32_mod1or2(const x86_insn *insn, unsigned mode)
-{
- const char *seg;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod01or10_rm32[insn->rm];
-
- print_memory_access(mode, seg,
- general_32bit_regname[insn->rm], NULL, 0, insn->displacement.displ32);
-}
-
-void disassembler::resolve32_mod0_rm4(const x86_insn *insn, unsigned mode)
-{
- const char *seg, *base = NULL, *index = NULL;
- Bit32u disp32 = 0;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod00_base32[insn->base];
-
- if ((insn->base & 7) != 5)
- base = general_32bit_regname[insn->base];
- else
- disp32 = insn->displacement.displ32;
-
- if (insn->index != 4)
- index = general_32bit_regname[insn->index];
-
- print_memory_access(mode, seg, base, index, insn->scale, disp32);
-}
-
-void disassembler::resolve32_mod1or2_rm4(const x86_insn *insn, unsigned mode)
-{
- const char *seg, *index = NULL;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod01or10_base32[insn->base];
-
- if (insn->index != 4)
- index = general_32bit_regname[insn->index];
-
- print_memory_access(mode, seg,
- general_32bit_regname[insn->base], index, insn->scale, insn->displacement.displ32);
-}
-
-void disassembler::resolve64_mod0(const x86_insn *insn, unsigned mode)
-{
- const char *seg, *rip_regname;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = segment_name[DS_REG];
-
- if (intel_mode) rip_regname = "rip";
- else rip_regname = "%rip";
-
- if ((insn->rm & 7) == 5) /* no reg, 32-bit displacement */
- print_memory_access(mode, seg, rip_regname, NULL, 0, insn->displacement.displ32);
- else
- print_memory_access(mode, seg, general_64bit_regname[insn->rm], NULL, 0, 0);
-}
-
-void disassembler::resolve64_mod1or2(const x86_insn *insn, unsigned mode)
-{
- const char *seg;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod01or10_rm32[insn->rm];
-
- print_memory_access(mode, seg,
- general_64bit_regname[insn->rm], NULL, 0, insn->displacement.displ32);
-}
-
-void disassembler::resolve64_mod0_rm4(const x86_insn *insn, unsigned mode)
-{
- const char *seg, *base = NULL, *index = NULL;
- Bit32u disp32 = 0;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod00_base32[insn->base];
-
- if ((insn->base & 7) != 5)
- base = general_64bit_regname[insn->base];
- else
- disp32 = insn->displacement.displ32;
-
- if (insn->index != 4)
- index = general_64bit_regname[insn->index];
-
- print_memory_access(mode, seg, base, index, insn->scale, disp32);
-}
-
-void disassembler::resolve64_mod1or2_rm4(const x86_insn *insn, unsigned mode)
-{
- const char *seg, *index = NULL;
-
- if (insn->is_seg_override())
- seg = segment_name[insn->seg_override];
- else
- seg = sreg_mod01or10_base32[insn->base];
-
- if (insn->index != 4)
- index = general_64bit_regname[insn->index];
-
- print_memory_access(mode, seg,
- general_64bit_regname[insn->base], index, insn->scale, insn->displacement.displ32);
-}
-
-void disassembler::print_datasize(unsigned size)
-{
- if (!intel_mode) return;
-
- switch(size)
- {
- case B_SIZE:
- dis_sprintf("byte ptr ");
- break;
- case W_SIZE:
- dis_sprintf("word ptr ");
- break;
- case D_SIZE:
- dis_sprintf("dword ptr ");
- break;
- case Q_SIZE:
- dis_sprintf("qword ptr ");
- break;
- case O_SIZE:
- dis_sprintf("dqword ptr ");
- break;
- case T_SIZE:
- dis_sprintf("tbyte ptr ");
- break;
- case P_SIZE:
- break;
- case X_SIZE:
- break;
- };
-}
-
-void disassembler::print_memory_access16(int datasize,
- const char *seg, const char *index, Bit16u disp)
-{
- print_datasize(datasize);
-
- if (intel_mode)
- {
- if (index == NULL)
- {
- dis_sprintf("%s:0x%x", seg, (unsigned) disp);
- }
- else
- {
- if (disp != 0)
- dis_sprintf("%s:[%s+0x%x]", seg, index, (unsigned) disp);
- else
- dis_sprintf("%s:[%s]", seg, index);
- }
- }
- else
- {
- if (index == NULL)
- {
- dis_sprintf("%s:0x%x", seg, (unsigned) disp);
- }
- else
- {
- if (disp != 0)
- dis_sprintf("%s:0x%x(%s,1)", seg, (unsigned) disp, index);
- else
- dis_sprintf("%s:(%s,1)", seg, index);
- }
- }
-}
-
-void disassembler::print_memory_access(int datasize,
- const char *seg, const char *base, const char *index, int scale, Bit32u disp)
-{
- print_datasize(datasize);
-
- if (intel_mode)
- {
- if (base == NULL)
- {
- if (index == NULL)
- {
- dis_sprintf("%s:0x%x", seg, (unsigned) disp);
- }
- else
- {
- if (scale != 0)
- {
- if (disp != 0)
- dis_sprintf("%s:[%s*%d+0x%x]", seg, index, 1<
#include "disasm.h"
@@ -8,10 +28,6 @@
// Intel STYLE
//////////////////
-#define BX_DISASM_SUPPORT_X86_64
-
-#ifdef BX_DISASM_SUPPORT_X86_64
-
static const char *intel_general_16bit_regname[16] = {
"ax", "cx", "dx", "bx", "sp", "bp", "si", "di",
"r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
@@ -32,18 +48,6 @@ static const char *intel_general_8bit_regname_rex[16] = {
"r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"
};
-#else
-
-static const char *intel_general_16bit_regname[8] = {
- "ax", "cx", "dx", "bx", "sp", "bp", "si", "di"
-};
-
-static const char *intel_general_32bit_regname[8] = {
- "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi"
-};
-
-#endif
-
static const char *intel_general_8bit_regname[8] = {
"al", "cl", "dl", "bl", "ah", "ch", "dh", "bh"
};
@@ -53,23 +57,24 @@ static const char *intel_segment_name[8] = {
};
static const char *intel_index16[8] = {
- "bx+si",
- "bx+di",
- "bp+si",
- "bp+di",
- "si",
- "di",
- "bp",
+ "bx+si",
+ "bx+di",
+ "bp+si",
+ "bp+di",
+ "si",
+ "di",
+ "bp",
"bx"
};
+static const char *intel_vector_reg_name[4] = {
+ "xmm", "ymm", "???", "zmm"
+};
//////////////////
// AT&T STYLE
//////////////////
-#ifdef BX_DISASM_SUPPORT_X86_64
-
static const char *att_general_16bit_regname[16] = {
"%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di",
"%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w"
@@ -90,18 +95,6 @@ static const char *att_general_8bit_regname_rex[16] = {
"%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b"
};
-#else
-
-static const char *att_general_16bit_regname[8] = {
- "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di"
-};
-
-static const char *att_general_32bit_regname[8] = {
- "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi"
-};
-
-#endif
-
static const char *att_general_8bit_regname[8] = {
"%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh"
};
@@ -111,16 +104,20 @@ static const char *att_segment_name[8] = {
};
static const char *att_index16[8] = {
- "%bx, %si",
- "%bx, %di",
- "%bp, %si",
- "%bp, %di",
- "%si",
- "%di",
- "%bp",
+ "%bx,%si",
+ "%bx,%di",
+ "%bp,%si",
+ "%bp,%di",
+ "%si",
+ "%di",
+ "%bp",
"%bx"
};
+static const char *att_vector_reg_name[4] = {
+ "%xmm", "%ymm", "%???", "%zmm"
+};
+
#define NULL_SEGMENT_REGISTER 7
void disassembler::initialize_modrm_segregs()
@@ -143,32 +140,39 @@ void disassembler::initialize_modrm_segregs()
sreg_mod01or10_rm16[6] = segment_name[SS_REG];
sreg_mod01or10_rm16[7] = segment_name[DS_REG];
- sreg_mod01or10_rm32[0] = segment_name[DS_REG];
- sreg_mod01or10_rm32[1] = segment_name[DS_REG];
- sreg_mod01or10_rm32[2] = segment_name[DS_REG];
- sreg_mod01or10_rm32[3] = segment_name[DS_REG];
- sreg_mod01or10_rm32[4] = segment_name[NULL_SEGMENT_REGISTER];
- sreg_mod01or10_rm32[5] = segment_name[SS_REG];
- sreg_mod01or10_rm32[6] = segment_name[DS_REG];
- sreg_mod01or10_rm32[7] = segment_name[DS_REG];
+ sreg_mod00_base32[0] = segment_name[DS_REG];
+ sreg_mod00_base32[1] = segment_name[DS_REG];
+ sreg_mod00_base32[2] = segment_name[DS_REG];
+ sreg_mod00_base32[3] = segment_name[DS_REG];
+ sreg_mod00_base32[4] = segment_name[SS_REG];
+ sreg_mod00_base32[5] = segment_name[DS_REG];
+ sreg_mod00_base32[6] = segment_name[DS_REG];
+ sreg_mod00_base32[7] = segment_name[DS_REG];
+ sreg_mod00_base32[8] = segment_name[DS_REG];
+ sreg_mod00_base32[9] = segment_name[DS_REG];
+ sreg_mod00_base32[10] = segment_name[DS_REG];
+ sreg_mod00_base32[11] = segment_name[DS_REG];
+ sreg_mod00_base32[12] = segment_name[DS_REG];
+ sreg_mod00_base32[13] = segment_name[DS_REG];
+ sreg_mod00_base32[14] = segment_name[DS_REG];
+ sreg_mod00_base32[15] = segment_name[DS_REG];
- sreg_mod00_base32[0] = segment_name[DS_REG];
- sreg_mod00_base32[1] = segment_name[DS_REG];
- sreg_mod00_base32[2] = segment_name[DS_REG];
- sreg_mod00_base32[3] = segment_name[DS_REG];
- sreg_mod00_base32[4] = segment_name[SS_REG];
- sreg_mod00_base32[5] = segment_name[DS_REG];
- sreg_mod00_base32[6] = segment_name[DS_REG];
- sreg_mod00_base32[7] = segment_name[DS_REG];
-
- sreg_mod01or10_base32[0] = segment_name[DS_REG];
- sreg_mod01or10_base32[1] = segment_name[DS_REG];
- sreg_mod01or10_base32[2] = segment_name[DS_REG];
- sreg_mod01or10_base32[3] = segment_name[DS_REG];
- sreg_mod01or10_base32[4] = segment_name[SS_REG];
- sreg_mod01or10_base32[5] = segment_name[SS_REG];
- sreg_mod01or10_base32[6] = segment_name[DS_REG];
- sreg_mod01or10_base32[7] = segment_name[DS_REG];
+ sreg_mod01or10_base32[0] = segment_name[DS_REG];
+ sreg_mod01or10_base32[1] = segment_name[DS_REG];
+ sreg_mod01or10_base32[2] = segment_name[DS_REG];
+ sreg_mod01or10_base32[3] = segment_name[DS_REG];
+ sreg_mod01or10_base32[4] = segment_name[SS_REG];
+ sreg_mod01or10_base32[5] = segment_name[SS_REG];
+ sreg_mod01or10_base32[6] = segment_name[DS_REG];
+ sreg_mod01or10_base32[7] = segment_name[DS_REG];
+ sreg_mod01or10_base32[8] = segment_name[DS_REG];
+ sreg_mod01or10_base32[9] = segment_name[DS_REG];
+ sreg_mod01or10_base32[10] = segment_name[DS_REG];
+ sreg_mod01or10_base32[11] = segment_name[DS_REG];
+ sreg_mod01or10_base32[12] = segment_name[DS_REG];
+ sreg_mod01or10_base32[13] = segment_name[DS_REG];
+ sreg_mod01or10_base32[14] = segment_name[DS_REG];
+ sreg_mod01or10_base32[15] = segment_name[DS_REG];
}
//////////////////
@@ -187,6 +191,7 @@ void disassembler::set_syntax_intel()
segment_name = intel_segment_name;
index16 = intel_index16;
+ vector_reg_name = intel_vector_reg_name;
initialize_modrm_segregs();
}
@@ -207,12 +212,16 @@ void disassembler::print_disassembly_intel(const x86_insn *insn, const BxDisasmO
dis_sprintf(", ");
(this->*entry->Operand3)(insn);
}
+ if (entry->Operand4) {
+ dis_sprintf(", ");
+ (this->*entry->Operand4)(insn);
+ }
}
//////////////////
// AT&T STYLE
//////////////////
-
+
void disassembler::set_syntax_att()
{
intel_mode = 0;
@@ -225,6 +234,7 @@ void disassembler::set_syntax_att()
segment_name = att_segment_name;
index16 = att_index16;
+ vector_reg_name = att_vector_reg_name;
initialize_modrm_segregs();
}
@@ -240,7 +250,11 @@ void disassembler::print_disassembly_att(const x86_insn *insn, const BxDisasmOpc
// print opcode
dis_sprintf("%s ", entry->AttOpcode);
- if (entry->Operand3) {
+ if (entry->Operand4) {
+ (this->*entry->Operand4)(insn);
+ dis_sprintf(", ");
+ }
+ if (entry->Operand3) {
(this->*entry->Operand3)(insn);
dis_sprintf(", ");
}