1 /////////////////////////////////////////////////////////////////////////
2 // $Id: fetchdecode64.cc,v 1.220 2008/09/16 19:20:02 sshwarts Exp $
3 /////////////////////////////////////////////////////////////////////////
5 // Copyright (C) 2001 MandrakeSoft S.A.
9 // 75002 Paris - France
10 // http://www.linux-mandrake.com/
11 // http://www.mandrakesoft.com/
13 // This library is free software; you can redistribute it and/or
14 // modify it under the terms of the GNU Lesser General Public
15 // License as published by the Free Software Foundation; either
16 // version 2 of the License, or (at your option) any later version.
18 // This library is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 // Lesser General Public License for more details.
23 // You should have received a copy of the GNU Lesser General Public
24 // License along with this library; if not, write to the Free Software
25 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 /////////////////////////////////////////////////////////////////////////
29 #define NEED_CPU_REG_SHORTCUTS 1
32 #define LOG_THIS BX_CPU_THIS_PTR
36 ///////////////////////////
40 // address displacement
42 ///////////////////////////
44 // The table for 64-bit is slightly different from the
45 // table for 32-bit due to undefined opcodes, which
46 // were valid in 32-bit mode
48 #define X 0 /* undefined opcode */
50 static const Bit8u BxOpcodeHasModrm64
[512] = {
51 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
52 /* ------------------------------- */
53 /* 00 */ 1,1,1,1,0,0,X
,X
,1,1,1,1,0,0,X
,X
,
54 /* 10 */ 1,1,1,1,0,0,X
,X
,1,1,1,1,0,0,X
,X
,
55 /* 20 */ 1,1,1,1,0,0,X
,X
,1,1,1,1,0,0,X
,X
,
56 /* 30 */ 1,1,1,1,0,0,X
,X
,1,1,1,1,0,0,X
,X
,
57 /* 40 */ X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,X
,
58 /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
59 /* 60 */ X
,X
,X
,1,X
,X
,X
,X
,0,1,0,1,0,0,0,0,
60 /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
61 /* 80 */ 1,1,X
,1,1,1,1,1,1,1,1,1,1,1,1,1,
62 /* 90 */ 0,0,0,0,0,0,0,0,0,0,X
,0,0,0,0,0,
63 /* A0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
64 /* B0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
65 /* C0 */ 1,1,0,0,X
,X
,1,1,0,0,0,0,0,0,X
,0,
66 /* D0 */ 1,1,1,1,X
,X
,X
,0,1,1,1,1,1,1,1,1,
67 /* E0 */ 0,0,0,0,0,0,0,0,0,0,X
,0,0,0,0,0,
68 /* F0 */ X
,0,X
,X
,0,0,1,1,0,0,0,0,0,0,1,1,
69 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
70 /* ------------------------------- */
71 1,1,1,1,X
,0,0,0,0,0,X
,0,X
,1,0,1, /* 0F 00 */
72 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 10 */
73 1,1,1,1,X
,X
,X
,X
,1,1,1,1,1,1,1,1, /* 0F 20 */
74 0,0,0,0,X
,X
,X
,X
,1,X
,1,X
,X
,X
,X
,X
, /* 0F 30 */
75 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 40 */
76 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 50 */
77 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 60 */
78 1,1,1,1,1,1,1,0,X
,X
,X
,X
,1,1,1,1, /* 0F 70 */
79 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 0F 80 */
80 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F 90 */
81 0,0,0,1,1,1,X
,X
,0,0,0,1,1,1,1,1, /* 0F A0 */
82 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F B0 */
83 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* 0F C0 */
84 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F D0 */
85 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 0F E0 */
86 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,X
/* 0F F0 */
87 /* ------------------------------- */
88 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
98 * The LOCK prefix can be prepended only to the following instructions
99 * and only to those forms of the instructions where the destination
100 * operand is a memory operand: ADD, ADC, AND, BTC, BTR, BTS, CMPXCHG,
101 * CMPXCH8B, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR, XADD, and XCHG. If
102 * the LOCK prefix is used with one of these instructions and the source
103 * operand is a memory operand, an undefined opcode exception (#UD) will
104 * be generated. An undefined opcode exception will also be generated if
105 * the LOCK prefix is used with any instruction not in the above list.
106 * The XCHG instruction always asserts the LOCK# signal regardless of the
107 * presence or absence of the LOCK prefix.
110 // Segment override prefixes
111 // -------------------------
112 // In 64-bit mode the CS, DS, ES, and SS segment overrides are ignored.
114 // decoding instructions; accessing seg reg's by index
115 static unsigned sreg_mod01or10_rm32
[16] = {
120 BX_SEG_REG_NULL
, // escape to SIB-byte
128 BX_SEG_REG_NULL
, // escape to SIB-byte
134 static unsigned sreg_mod0_base32
[16] = {
153 static unsigned sreg_mod1or2_base32
[16] = {
172 // common fetchdecode32/64 opcode tables
173 #include "fetchdecode.h"
175 // table of all Bochs opcodes
176 extern struct bxIAOpcodeTable BxOpcodesTable
[];
178 // 512 entries for 16bit operand size
179 // 512 entries for 32bit operand size
180 // 512 entries for 64bit operand size
182 static const BxOpcodeInfo_t BxOpcodeInfo64R
[512*3] = {
183 // 512 entries for 16bit operand size
184 /* 00 /wr */ { BxArithDstRM
, BX_IA_ADD_GbEbR
},
185 /* 01 /wr */ { BxArithDstRM
, BX_IA_ADD_GwEwR
},
186 /* 02 /wr */ { 0, BX_IA_ADD_GbEbR
},
187 /* 03 /wr */ { 0, BX_IA_ADD_GwEwR
},
188 /* 04 /wr */ { BxImmediate_Ib
, BX_IA_ADD_ALIb
},
189 /* 05 /wr */ { BxImmediate_Iw
, BX_IA_ADD_AXIw
},
190 /* 06 /wr */ { 0, BX_IA_ERROR
},
191 /* 07 /wr */ { 0, BX_IA_ERROR
},
192 /* 08 /wr */ { BxArithDstRM
, BX_IA_OR_GbEbR
},
193 /* 09 /wr */ { BxArithDstRM
, BX_IA_OR_GwEwR
},
194 /* 0A /wr */ { 0, BX_IA_OR_GbEbR
},
195 /* 0B /wr */ { 0, BX_IA_OR_GwEwR
},
196 /* 0C /wr */ { BxImmediate_Ib
, BX_IA_OR_ALIb
},
197 /* 0D /wr */ { BxImmediate_Iw
, BX_IA_OR_AXIw
},
198 /* 0E /wr */ { 0, BX_IA_ERROR
},
199 /* 0F /wr */ { 0, BX_IA_ERROR
}, // 2-byte escape
200 /* 10 /wr */ { BxArithDstRM
, BX_IA_ADC_GbEbR
},
201 /* 11 /wr */ { BxArithDstRM
, BX_IA_ADC_GwEwR
},
202 /* 12 /wr */ { 0, BX_IA_ADC_GbEbR
},
203 /* 13 /wr */ { 0, BX_IA_ADC_GwEwR
},
204 /* 14 /wr */ { BxImmediate_Ib
, BX_IA_ADC_ALIb
},
205 /* 15 /wr */ { BxImmediate_Iw
, BX_IA_ADC_AXIw
},
206 /* 16 /wr */ { 0, BX_IA_ERROR
},
207 /* 17 /wr */ { 0, BX_IA_ERROR
},
208 /* 18 /wr */ { BxArithDstRM
, BX_IA_SBB_GbEbR
},
209 /* 19 /wr */ { BxArithDstRM
, BX_IA_SBB_GwEwR
},
210 /* 1A /wr */ { 0, BX_IA_SBB_GbEbR
},
211 /* 1B /wr */ { 0, BX_IA_SBB_GwEwR
},
212 /* 1C /wr */ { BxImmediate_Ib
, BX_IA_SBB_ALIb
},
213 /* 1D /wr */ { BxImmediate_Iw
, BX_IA_SBB_AXIw
},
214 /* 1E /wr */ { 0, BX_IA_ERROR
},
215 /* 1F /wr */ { 0, BX_IA_ERROR
},
216 /* 20 /wr */ { BxArithDstRM
, BX_IA_AND_GbEbR
},
217 /* 21 /wr */ { BxArithDstRM
, BX_IA_AND_GwEwR
},
218 /* 22 /wr */ { 0, BX_IA_AND_GbEbR
},
219 /* 23 /wr */ { 0, BX_IA_AND_GwEwR
},
220 /* 24 /wr */ { BxImmediate_Ib
, BX_IA_AND_ALIb
},
221 /* 25 /wr */ { BxImmediate_Iw
, BX_IA_AND_AXIw
},
222 /* 26 /wr */ { 0, BX_IA_ERROR
}, // ES:
223 /* 27 /wr */ { 0, BX_IA_ERROR
},
224 /* 28 /wr */ { BxArithDstRM
, BX_IA_SUB_GbEbR
},
225 /* 29 /wr */ { BxArithDstRM
, BX_IA_SUB_GwEwR
},
226 /* 2A /wr */ { 0, BX_IA_SUB_GbEbR
},
227 /* 2B /wr */ { 0, BX_IA_SUB_GwEwR
},
228 /* 2C /wr */ { BxImmediate_Ib
, BX_IA_SUB_ALIb
},
229 /* 2D /wr */ { BxImmediate_Iw
, BX_IA_SUB_AXIw
},
230 /* 2E /wr */ { 0, BX_IA_ERROR
}, // CS:
231 /* 2F /wr */ { 0, BX_IA_ERROR
},
232 /* 30 /wr */ { BxArithDstRM
, BX_IA_XOR_GbEbR
},
233 /* 31 /wr */ { BxArithDstRM
, BX_IA_XOR_GwEwR
},
234 /* 32 /wr */ { 0, BX_IA_XOR_GbEbR
},
235 /* 33 /wr */ { 0, BX_IA_XOR_GwEwR
},
236 /* 34 /wr */ { BxImmediate_Ib
, BX_IA_XOR_ALIb
},
237 /* 35 /wr */ { BxImmediate_Iw
, BX_IA_XOR_AXIw
},
238 /* 36 /wr */ { 0, BX_IA_ERROR
}, // SS:
239 /* 37 /wr */ { 0, BX_IA_ERROR
},
240 /* 38 /wr */ { BxArithDstRM
, BX_IA_CMP_GbEbR
},
241 /* 39 /wr */ { BxArithDstRM
, BX_IA_CMP_GwEwR
},
242 /* 3A /wr */ { 0, BX_IA_CMP_GbEbR
},
243 /* 3B /wr */ { 0, BX_IA_CMP_GwEwR
},
244 /* 3C /wr */ { BxImmediate_Ib
, BX_IA_CMP_ALIb
},
245 /* 3D /wr */ { BxImmediate_Iw
, BX_IA_CMP_AXIw
},
246 /* 3E /wr */ { 0, BX_IA_ERROR
}, // DS:
247 /* 3F /wr */ { 0, BX_IA_ERROR
},
248 /* 40 /wr */ { 0, BX_IA_ERROR
}, // REX:
249 /* 41 /wr */ { 0, BX_IA_ERROR
}, // REX:
250 /* 42 /wr */ { 0, BX_IA_ERROR
}, // REX:
251 /* 43 /wr */ { 0, BX_IA_ERROR
}, // REX:
252 /* 44 /wr */ { 0, BX_IA_ERROR
}, // REX:
253 /* 45 /wr */ { 0, BX_IA_ERROR
}, // REX:
254 /* 46 /wr */ { 0, BX_IA_ERROR
}, // REX:
255 /* 47 /wr */ { 0, BX_IA_ERROR
}, // REX:
256 /* 48 /wr */ { 0, BX_IA_ERROR
}, // REX:
257 /* 49 /wr */ { 0, BX_IA_ERROR
}, // REX:
258 /* 4A /wr */ { 0, BX_IA_ERROR
}, // REX:
259 /* 4B /wr */ { 0, BX_IA_ERROR
}, // REX:
260 /* 4C /wr */ { 0, BX_IA_ERROR
}, // REX:
261 /* 4D /wr */ { 0, BX_IA_ERROR
}, // REX:
262 /* 4E /wr */ { 0, BX_IA_ERROR
}, // REX:
263 /* 4F /wr */ { 0, BX_IA_ERROR
}, // REX:
264 /* 50 /wr */ { 0, BX_IA_PUSH_RX
},
265 /* 51 /wr */ { 0, BX_IA_PUSH_RX
},
266 /* 52 /wr */ { 0, BX_IA_PUSH_RX
},
267 /* 53 /wr */ { 0, BX_IA_PUSH_RX
},
268 /* 54 /wr */ { 0, BX_IA_PUSH_RX
},
269 /* 55 /wr */ { 0, BX_IA_PUSH_RX
},
270 /* 56 /wr */ { 0, BX_IA_PUSH_RX
},
271 /* 57 /wr */ { 0, BX_IA_PUSH_RX
},
272 /* 58 /wr */ { 0, BX_IA_POP_RX
},
273 /* 59 /wr */ { 0, BX_IA_POP_RX
},
274 /* 5A /wr */ { 0, BX_IA_POP_RX
},
275 /* 5B /wr */ { 0, BX_IA_POP_RX
},
276 /* 5C /wr */ { 0, BX_IA_POP_RX
},
277 /* 5D /wr */ { 0, BX_IA_POP_RX
},
278 /* 5E /wr */ { 0, BX_IA_POP_RX
},
279 /* 5F /wr */ { 0, BX_IA_POP_RX
},
280 /* 60 /wr */ { 0, BX_IA_ERROR
},
281 /* 61 /wr */ { 0, BX_IA_ERROR
},
282 /* 62 /wr */ { 0, BX_IA_ERROR
},
283 /* 63 /wr */ { 0, BX_IA_MOV_GwEwR
}, // MOVSX_GwEw
284 /* 64 /wr */ { 0, BX_IA_ERROR
}, // FS:
285 /* 65 /wr */ { 0, BX_IA_ERROR
}, // GS:
286 /* 66 /wr */ { 0, BX_IA_ERROR
}, // OS:
287 /* 67 /wr */ { 0, BX_IA_ERROR
}, // AS:
288 /* 68 /wr */ { BxImmediate_Iw
, BX_IA_PUSH_Iw
},
289 /* 69 /wr */ { BxImmediate_Iw
, BX_IA_IMUL_GwEwIwR
},
290 /* 6A /wr */ { BxImmediate_Ib_SE
, BX_IA_PUSH_Iw
},
291 /* 6B /wr */ { BxImmediate_Ib_SE
, BX_IA_IMUL_GwEwIwR
},
292 /* 6C /wr */ { 0, BX_IA_REP_INSB_YbDX
},
293 /* 6D /wr */ { 0, BX_IA_REP_INSW_YwDX
},
294 /* 6E /wr */ { 0, BX_IA_REP_OUTSB_DXXb
},
295 /* 6F /wr */ { 0, BX_IA_REP_OUTSW_DXXw
},
296 /* 70 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JO_Jq
},
297 /* 71 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNO_Jq
},
298 /* 72 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JB_Jq
},
299 /* 73 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNB_Jq
},
300 /* 74 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JZ_Jq
},
301 /* 75 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNZ_Jq
},
302 /* 76 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JBE_Jq
},
303 /* 77 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNBE_Jq
},
304 /* 78 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JS_Jq
},
305 /* 79 /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNS_Jq
},
306 /* 7A /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JP_Jq
},
307 /* 7B /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNP_Jq
},
308 /* 7C /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JL_Jq
},
309 /* 7D /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNL_Jq
},
310 /* 7E /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JLE_Jq
},
311 /* 7F /wr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNLE_Jq
},
312 /* 80 /wr */ { BxGroup1
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG1EbIbR
},
313 /* 81 /wr */ { BxGroup1
| BxImmediate_Iw
, BX_IA_ERROR
, BxOpcodeInfoG1EwR
},
314 /* 82 /wr */ { 0, BX_IA_ERROR
},
315 /* 83 /wr */ { BxGroup1
| BxImmediate_Ib_SE
, BX_IA_ERROR
, BxOpcodeInfoG1EwR
},
316 /* 84 /wr */ { 0, BX_IA_TEST_EbGbR
},
317 /* 85 /wr */ { 0, BX_IA_TEST_EwGwR
},
318 /* 86 /wr */ { 0, BX_IA_XCHG_EbGbR
},
319 /* 87 /wr */ { 0, BX_IA_XCHG_EwGwR
},
320 /* 88 /wr */ { BxArithDstRM
, BX_IA_MOV_GbEbR
},
321 /* 89 /wr */ { BxArithDstRM
, BX_IA_MOV_GwEwR
},
322 /* 8A /wr */ { 0, BX_IA_MOV_GbEbR
},
323 /* 8B /wr */ { 0, BX_IA_MOV_GwEwR
},
324 /* 8C /wr */ { 0, BX_IA_MOV_EwSwR
},
325 /* 8D /wr */ { 0, BX_IA_ERROR
}, // LEA
326 /* 8E /wr */ { 0, BX_IA_MOV_SwEw
},
327 /* 8F /wr */ { BxGroup1A
, BX_IA_ERROR
, BxOpcodeInfoG1AEwR
},
328 /* 90 /wr */ { 0, BX_IA_XCHG_RXAX
}, // handles XCHG R8w, AX
329 /* 91 /wr */ { 0, BX_IA_XCHG_RXAX
},
330 /* 92 /wr */ { 0, BX_IA_XCHG_RXAX
},
331 /* 93 /wr */ { 0, BX_IA_XCHG_RXAX
},
332 /* 94 /wr */ { 0, BX_IA_XCHG_RXAX
},
333 /* 95 /wr */ { 0, BX_IA_XCHG_RXAX
},
334 /* 96 /wr */ { 0, BX_IA_XCHG_RXAX
},
335 /* 97 /wr */ { 0, BX_IA_XCHG_RXAX
},
336 /* 98 /wr */ { 0, BX_IA_CBW
},
337 /* 99 /wr */ { 0, BX_IA_CWD
},
338 /* 9A /wr */ { 0, BX_IA_ERROR
},
339 /* 9B /wr */ { 0, BX_IA_FWAIT
},
340 /* 9C /wr */ { 0, BX_IA_PUSHF_Fw
},
341 /* 9D /wr */ { 0, BX_IA_POPF_Fw
},
342 /* 9E /wr */ { 0, BX_IA_SAHF
},
343 /* 9F /wr */ { 0, BX_IA_LAHF
},
344 /* A0 /wr */ { BxImmediate_O
, BX_IA_MOV_ALOq
},
345 /* A1 /wr */ { BxImmediate_O
, BX_IA_MOV_AXOq
},
346 /* A2 /wr */ { BxImmediate_O
, BX_IA_MOV_OqAL
},
347 /* A3 /wr */ { BxImmediate_O
, BX_IA_MOV_OqAX
},
348 /* A4 /wr */ { 0, BX_IA_REP_MOVSB_XbYb
},
349 /* A5 /wr */ { 0, BX_IA_REP_MOVSW_XwYw
},
350 /* A6 /wr */ { 0, BX_IA_REP_CMPSB_XbYb
},
351 /* A7 /wr */ { 0, BX_IA_REP_CMPSW_XwYw
},
352 /* A8 /wr */ { BxImmediate_Ib
, BX_IA_TEST_ALIb
},
353 /* A9 /wr */ { BxImmediate_Iw
, BX_IA_TEST_AXIw
},
354 /* AA /wr */ { 0, BX_IA_REP_STOSB_YbAL
},
355 /* AB /wr */ { 0, BX_IA_REP_STOSW_YwAX
},
356 /* AC /wr */ { 0, BX_IA_REP_LODSB_ALXb
},
357 /* AD /wr */ { 0, BX_IA_REP_LODSW_AXXw
},
358 /* AE /wr */ { 0, BX_IA_REP_SCASB_ALXb
},
359 /* AF /wr */ { 0, BX_IA_REP_SCASW_AXXw
},
360 /* B0 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
361 /* B1 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
362 /* B2 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
363 /* B3 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
364 /* B4 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
365 /* B5 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
366 /* B6 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
367 /* B7 /wr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
368 /* B8 /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
369 /* B9 /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
370 /* BA /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
371 /* BB /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
372 /* BC /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
373 /* BD /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
374 /* BE /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
375 /* BF /wr */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
376 /* C0 /wr */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
377 /* C1 /wr */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Ew
},
378 /* C2 /wr */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETnear64_Iw
},
379 /* C3 /wr */ { BxTraceEnd
, BX_IA_RETnear64
},
380 /* C4 /wr */ { 0, BX_IA_ERROR
},
381 /* C5 /wr */ { 0, BX_IA_ERROR
},
382 /* C6 /wr */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EbR
},
383 /* C7 /wr */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EwR
},
384 /* C8 /wr */ { BxImmediate_IwIb
, BX_IA_ENTER64_IwIb
},
385 /* C9 /wr */ { 0, BX_IA_LEAVE64
},
386 /* CA /wr */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETfar16_Iw
},
387 /* CB /wr */ { BxTraceEnd
, BX_IA_RETfar16
},
388 /* CC /wr */ { BxTraceEnd
, BX_IA_INT3
},
389 /* CD /wr */ { BxImmediate_Ib
| BxTraceEnd
, BX_IA_INT_Ib
},
390 /* CE /wr */ { 0, BX_IA_ERROR
},
391 /* CF /wr */ { BxTraceEnd
, BX_IA_IRET64
},
392 /* D0 /wr */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
393 /* D1 /wr */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Ew
},
394 /* D2 /wr */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
395 /* D3 /wr */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Ew
},
396 /* D4 /wr */ { 0, BX_IA_ERROR
},
397 /* D5 /wr */ { 0, BX_IA_ERROR
},
398 /* D6 /wr */ { 0, BX_IA_ERROR
},
399 /* D7 /wr */ { 0, BX_IA_XLAT
},
400 /* D8 /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointD8
},
401 /* D9 /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointD9
},
402 /* DA /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDA
},
403 /* DB /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDB
},
404 /* DC /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDC
},
405 /* DD /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDD
},
406 /* DE /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDE
},
407 /* DF /wr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDF
},
408 /* E0 /wr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPNE64_Jb
},
409 /* E1 /wr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPE64_Jb
},
410 /* E2 /wr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOP64_Jb
},
411 /* E3 /wr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JRCXZ_Jb
},
412 /* E4 /wr */ { BxImmediate_Ib
, BX_IA_IN_ALIb
},
413 /* E5 /wr */ { BxImmediate_Ib
, BX_IA_IN_AXIb
},
414 /* E6 /wr */ { BxImmediate_Ib
, BX_IA_OUT_IbAL
},
415 /* E7 /wr */ { BxImmediate_Ib
, BX_IA_OUT_IbAX
},
416 /* E8 /wr */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_CALL_Jq
},
417 /* E9 /wr */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_JMP_Jq
},
418 /* EA /wr */ { 0, BX_IA_ERROR
},
419 /* EB /wr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JMP_Jq
},
420 /* EC /wr */ { 0, BX_IA_IN_ALDX
},
421 /* ED /wr */ { 0, BX_IA_IN_AXDX
},
422 /* EE /wr */ { 0, BX_IA_OUT_DXAL
},
423 /* EF /wr */ { 0, BX_IA_OUT_DXAX
},
424 /* F0 /wr */ { 0, BX_IA_ERROR
}, // LOCK
425 /* F1 /wr */ { BxTraceEnd
, BX_IA_INT1
},
426 /* F2 /wr */ { 0, BX_IA_ERROR
}, // REPNE/REPNZ
427 /* F3 /wr */ { 0, BX_IA_ERROR
}, // REP, REPE/REPZ
428 /* F4 /wr */ { BxTraceEnd
, BX_IA_HLT
},
429 /* F5 /wr */ { 0, BX_IA_CMC
},
430 /* F6 /wr */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EbR
},
431 /* F7 /wr */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EwR
},
432 /* F8 /wr */ { 0, BX_IA_CLC
},
433 /* F9 /wr */ { 0, BX_IA_STC
},
434 /* FA /wr */ { 0, BX_IA_CLI
},
435 /* FB /wr */ { 0, BX_IA_STI
},
436 /* FC /wr */ { 0, BX_IA_CLD
},
437 /* FD /wr */ { 0, BX_IA_STD
},
438 /* FE /wr */ { BxGroup4
, BX_IA_ERROR
, BxOpcodeInfoG4R
},
439 /* FF /wr */ { BxGroup5
, BX_IA_ERROR
, BxOpcodeInfo64G5wR
},
441 /* 0F 00 /wr */ { BxGroup6
, BX_IA_ERROR
, BxOpcodeInfoG6
},
442 /* 0F 01 /wr */ { BxGroup7
, BX_IA_ERROR
, BxOpcodeInfo64G7R
},
443 /* 0F 02 /wr */ { 0, BX_IA_LAR_GvEw
},
444 /* 0F 03 /wr */ { 0, BX_IA_LSL_GvEw
},
445 /* 0F 04 /wr */ { 0, BX_IA_ERROR
},
446 /* 0F 05 /wr */ { BxTraceEnd
, BX_IA_SYSCALL
},
447 /* 0F 06 /wr */ { 0, BX_IA_CLTS
},
448 /* 0F 07 /wr */ { BxTraceEnd
, BX_IA_SYSRET
},
449 /* 0F 08 /wr */ { BxTraceEnd
, BX_IA_INVD
},
450 /* 0F 09 /wr */ { BxTraceEnd
, BX_IA_WBINVD
},
451 /* 0F 0A /wr */ { 0, BX_IA_ERROR
},
452 /* 0F 0B /wr */ { BxTraceEnd
, BX_IA_UD2A
},
453 /* 0F 0C /wr */ { 0, BX_IA_ERROR
},
454 /* 0F 0D /wr */ { 0, BX_IA_NOP
}, // 3DNow! PREFETCH on AMD, NOP on Intel
455 /* 0F 0E /wr */ { 0, BX_IA_FEMMS
}, // 3DNow! FEMMS
457 /* 0F 0F /wr */ { BxImmediate_Ib
, BX_IA_ERROR
, Bx3DNowOpcodeInfo
},
459 /* 0F 0F /wr */ { 0, BX_IA_ERROR
},
461 /* 0F 10 /wr */ { BxPrefixSSE
, BX_IA_MOVUPS_VpsWps
, BxOpcodeGroupSSE_0f10
},
462 /* 0F 11 /wr */ { BxPrefixSSE
, BX_IA_MOVUPS_WpsVps
, BxOpcodeGroupSSE_0f11
},
463 /* 0F 12 /wr */ { BxPrefixSSE
, BX_IA_MOVLPS_VpsMq
, BxOpcodeGroupSSE_0f12
},
464 /* 0F 13 /wr */ { 0, BX_IA_ERROR
}, // MOVLPS/PD SSE group
465 /* 0F 14 /wr */ { BxPrefixSSE
, BX_IA_UNPCKLPS_VpsWdq
, BxOpcodeGroupSSE_0f14
},
466 /* 0F 15 /wr */ { BxPrefixSSE
, BX_IA_UNPCKHPS_VpsWdq
, BxOpcodeGroupSSE_0f15
},
467 /* 0F 16 /wr */ { BxPrefixSSE
, BX_IA_MOVHPS_VpsMq
, BxOpcodeGroupSSE_0f16
},
468 /* 0F 17 /wr */ { 0, BX_IA_ERROR
}, // MOHLPS/PD SSE group
469 /* 0F 18 /wr */ { 0, BX_IA_NOP
}, // PREFETCH HINT
470 /* 0F 19 /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
471 /* 0F 1A /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
472 /* 0F 1B /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
473 /* 0F 1C /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
474 /* 0F 1D /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
475 /* 0F 1E /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
476 /* 0F 1F /wr */ { 0, BX_IA_NOP
}, // multi-byte NOP
477 /* 0F 20 /wr */ { 0, BX_IA_MOV_RqCq
},
478 /* 0F 21 /wr */ { 0, BX_IA_MOV_RqDq
},
479 /* 0F 22 /wr */ { BxTraceEnd
, BX_IA_MOV_CqRq
},
480 /* 0F 23 /wr */ { BxTraceEnd
, BX_IA_MOV_DqRq
},
481 /* 0F 24 /wr */ { 0, BX_IA_ERROR
},
482 /* 0F 25 /wr */ { 0, BX_IA_ERROR
},
483 /* 0F 26 /wr */ { 0, BX_IA_ERROR
},
484 /* 0F 27 /wr */ { 0, BX_IA_ERROR
},
485 /* 0F 28 /wr */ { BxPrefixSSE
, BX_IA_MOVAPS_VpsWps
, BxOpcodeGroupSSE_0f28
},
486 /* 0F 29 /wr */ { BxPrefixSSE
, BX_IA_MOVAPS_WpsVps
, BxOpcodeGroupSSE_0f29
},
487 /* 0F 2A /wr */ { BxPrefixSSE
, BX_IA_CVTPI2PS_VpsQq
, BxOpcodeGroupSSE_0f2a
},
488 /* 0F 2B /wr */ { 0, BX_IA_ERROR
}, // MOVNTPS/PD/SS/SD
489 /* 0F 2C /wr */ { BxPrefixSSE
, BX_IA_CVTTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2c
},
490 /* 0F 2D /wr */ { BxPrefixSSE
, BX_IA_CVTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2d
},
491 /* 0F 2E /wr */ { BxPrefixSSE
, BX_IA_UCOMISS_VssWss
, BxOpcodeGroupSSE_0f2e
},
492 /* 0F 2F /wr */ { BxPrefixSSE
, BX_IA_COMISS_VpsWps
, BxOpcodeGroupSSE_0f2f
},
493 /* 0F 30 /wr */ { 0, BX_IA_WRMSR
},
494 /* 0F 31 /wr */ { 0, BX_IA_RDTSC
},
495 /* 0F 32 /wr */ { 0, BX_IA_RDMSR
},
496 /* 0F 33 /wr */ { 0, BX_IA_RDPMC
},
497 /* 0F 34 /wr */ { 0, BX_IA_SYSENTER
},
498 /* 0F 35 /wr */ { 0, BX_IA_SYSEXIT
},
499 /* 0F 36 /wr */ { 0, BX_IA_ERROR
},
500 /* 0F 37 /wr */ { 0, BX_IA_ERROR
},
501 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
502 /* 0F 38 /wr */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f38
}, // 3-byte escape
504 /* 0F 38 /wr */ { 0, BX_IA_ERROR
},
506 /* 0F 39 /wr */ { 0, BX_IA_ERROR
},
507 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
508 /* 0F 3A /wr */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f3a
}, // 3-byte escape
510 /* 0F 3A /wr */ { 0, BX_IA_ERROR
},
512 /* 0F 3B /wr */ { 0, BX_IA_ERROR
},
513 /* 0F 3C /wr */ { 0, BX_IA_ERROR
},
514 /* 0F 3D /wr */ { 0, BX_IA_ERROR
},
515 /* 0F 3E /wr */ { 0, BX_IA_ERROR
},
516 /* 0F 3F /wr */ { 0, BX_IA_ERROR
},
517 /* 0F 40 /wr */ { 0, BX_IA_CMOVO_GwEwR
},
518 /* 0F 41 /wr */ { 0, BX_IA_CMOVNO_GwEwR
},
519 /* 0F 42 /wr */ { 0, BX_IA_CMOVB_GwEwR
},
520 /* 0F 43 /wr */ { 0, BX_IA_CMOVNB_GwEwR
},
521 /* 0F 44 /wr */ { 0, BX_IA_CMOVZ_GwEwR
},
522 /* 0F 45 /wr */ { 0, BX_IA_CMOVNZ_GwEwR
},
523 /* 0F 46 /wr */ { 0, BX_IA_CMOVBE_GwEwR
},
524 /* 0F 47 /wr */ { 0, BX_IA_CMOVNBE_GwEwR
},
525 /* 0F 48 /wr */ { 0, BX_IA_CMOVS_GwEwR
},
526 /* 0F 49 /wr */ { 0, BX_IA_CMOVNS_GwEwR
},
527 /* 0F 4A /wr */ { 0, BX_IA_CMOVP_GwEwR
},
528 /* 0F 4B /wr */ { 0, BX_IA_CMOVNP_GwEwR
},
529 /* 0F 4C /wr */ { 0, BX_IA_CMOVL_GwEwR
},
530 /* 0F 4D /wr */ { 0, BX_IA_CMOVNL_GwEwR
},
531 /* 0F 4E /wr */ { 0, BX_IA_CMOVLE_GwEwR
},
532 /* 0F 4F /wr */ { 0, BX_IA_CMOVNLE_GwEwR
},
533 /* 0F 50 /wr */ { BxPrefixSSE
, BX_IA_MOVMSKPS_GdVRps
, BxOpcodeGroupSSE_0f50
},
534 /* 0F 51 /wr */ { BxPrefixSSE
, BX_IA_SQRTPS_VpsWps
, BxOpcodeGroupSSE_0f51
},
535 /* 0F 52 /wr */ { BxPrefixSSE
, BX_IA_RSQRTPS_VpsWps
, BxOpcodeGroupSSE_0f52
},
536 /* 0F 53 /wr */ { BxPrefixSSE
, BX_IA_RCPPS_VpsWps
, BxOpcodeGroupSSE_0f53
},
537 /* 0F 54 /wr */ { BxPrefixSSE
, BX_IA_ANDPS_VpsWps
, BxOpcodeGroupSSE_0f54
},
538 /* 0F 55 /wr */ { BxPrefixSSE
, BX_IA_ANDNPS_VpsWps
, BxOpcodeGroupSSE_0f55
},
539 /* 0F 56 /wr */ { BxPrefixSSE
, BX_IA_ORPS_VpsWps
, BxOpcodeGroupSSE_0f56
},
540 /* 0F 57 /wr */ { BxPrefixSSE
, BX_IA_XORPS_VpsWps
, BxOpcodeGroupSSE_0f57
},
541 /* 0F 58 /wr */ { BxPrefixSSE
, BX_IA_ADDPS_VpsWps
, BxOpcodeGroupSSE_0f58
},
542 /* 0F 59 /wr */ { BxPrefixSSE
, BX_IA_MULPS_VpsWps
, BxOpcodeGroupSSE_0f59
},
543 /* 0F 5A /wr */ { BxPrefixSSE
, BX_IA_CVTPS2PD_VpsWps
, BxOpcodeGroupSSE_0f5a
},
544 /* 0F 5B /wr */ { BxPrefixSSE
, BX_IA_CVTDQ2PS_VpsWdq
, BxOpcodeGroupSSE_0f5b
},
545 /* 0F 5C /wr */ { BxPrefixSSE
, BX_IA_SUBPS_VpsWps
, BxOpcodeGroupSSE_0f5c
},
546 /* 0F 5D /wr */ { BxPrefixSSE
, BX_IA_MINPS_VpsWps
, BxOpcodeGroupSSE_0f5d
},
547 /* 0F 5E /wr */ { BxPrefixSSE
, BX_IA_DIVPS_VpsWps
, BxOpcodeGroupSSE_0f5e
},
548 /* 0F 5F /wr */ { BxPrefixSSE
, BX_IA_MAXPS_VpsWps
, BxOpcodeGroupSSE_0f5f
},
549 /* 0F 60 /wr */ { BxPrefixSSE
, BX_IA_PUNPCKLBW_PqQd
, BxOpcodeGroupSSE_0f60
},
550 /* 0F 61 /wr */ { BxPrefixSSE
, BX_IA_PUNPCKLWD_PqQd
, BxOpcodeGroupSSE_0f61
},
551 /* 0F 62 /wr */ { BxPrefixSSE
, BX_IA_PUNPCKLDQ_PqQd
, BxOpcodeGroupSSE_0f62
},
552 /* 0F 63 /wr */ { BxPrefixSSE
, BX_IA_PACKSSWB_PqQq
, BxOpcodeGroupSSE_0f63
},
553 /* 0F 64 /wr */ { BxPrefixSSE
, BX_IA_PCMPGTB_PqQq
, BxOpcodeGroupSSE_0f64
},
554 /* 0F 65 /wr */ { BxPrefixSSE
, BX_IA_PCMPGTW_PqQq
, BxOpcodeGroupSSE_0f65
},
555 /* 0F 66 /wr */ { BxPrefixSSE
, BX_IA_PCMPGTD_PqQq
, BxOpcodeGroupSSE_0f66
},
556 /* 0F 67 /wr */ { BxPrefixSSE
, BX_IA_PACKUSWB_PqQq
, BxOpcodeGroupSSE_0f67
},
557 /* 0F 68 /wr */ { BxPrefixSSE
, BX_IA_PUNPCKHBW_PqQq
, BxOpcodeGroupSSE_0f68
},
558 /* 0F 69 /wr */ { BxPrefixSSE
, BX_IA_PUNPCKHWD_PqQq
, BxOpcodeGroupSSE_0f69
},
559 /* 0F 6A /wr */ { BxPrefixSSE
, BX_IA_PUNPCKHDQ_PqQq
, BxOpcodeGroupSSE_0f6a
},
560 /* 0F 6B /wr */ { BxPrefixSSE
, BX_IA_PACKSSDW_PqQq
, BxOpcodeGroupSSE_0f6b
},
561 /* 0F 6C /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6c
},
562 /* 0F 6D /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6d
},
563 /* 0F 6E /wr */ { BxPrefixSSE
, BX_IA_MOVD_PqEd
, BxOpcodeGroupSSE_0f6e
},
564 /* 0F 6F /wr */ { BxPrefixSSE
, BX_IA_MOVQ_PqQq
, BxOpcodeGroupSSE_0f6f
},
565 /* 0F 70 /wr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PSHUFW_PqQqIb
, BxOpcodeGroupSSE_0f70
},
566 /* 0F 71 /wr */ { BxGroup12
, BX_IA_ERROR
, BxOpcodeInfoG12R
},
567 /* 0F 72 /wr */ { BxGroup13
, BX_IA_ERROR
, BxOpcodeInfoG13R
},
568 /* 0F 73 /wr */ { BxGroup14
, BX_IA_ERROR
, BxOpcodeInfoG14R
},
569 /* 0F 74 /wr */ { BxPrefixSSE
, BX_IA_PCMPEQB_PqQq
, BxOpcodeGroupSSE_0f74
},
570 /* 0F 75 /wr */ { BxPrefixSSE
, BX_IA_PCMPEQW_PqQq
, BxOpcodeGroupSSE_0f75
},
571 /* 0F 76 /wr */ { BxPrefixSSE
, BX_IA_PCMPEQD_PqQq
, BxOpcodeGroupSSE_0f76
},
572 /* 0F 77 /wr */ { BxPrefixSSE
, BX_IA_EMMS
, BxOpcodeGroupSSE_ERR
},
573 /* 0F 78 /wr */ { 0, BX_IA_ERROR
},
574 /* 0F 79 /wr */ { 0, BX_IA_ERROR
},
575 /* 0F 7A /wr */ { 0, BX_IA_ERROR
},
576 /* 0F 7B /wr */ { 0, BX_IA_ERROR
},
577 /* 0F 7C /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7c
},
578 /* 0F 7D /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7d
},
579 /* 0F 7E /wr */ { BxPrefixSSE
, BX_IA_MOVD_EdPd
, BxOpcodeGroupSSE_0f7e
},
580 /* 0F 7F /wr */ { BxPrefixSSE
, BX_IA_MOVQ_QqPq
, BxOpcodeGroupSSE_0f7f
},
581 /* 0F 80 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JO_Jq
},
582 /* 0F 81 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNO_Jq
},
583 /* 0F 82 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JB_Jq
},
584 /* 0F 83 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNB_Jq
},
585 /* 0F 84 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JZ_Jq
},
586 /* 0F 85 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNZ_Jq
},
587 /* 0F 86 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JBE_Jq
},
588 /* 0F 87 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNBE_Jq
},
589 /* 0F 88 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JS_Jq
},
590 /* 0F 89 /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNS_Jq
},
591 /* 0F 8A /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JP_Jq
},
592 /* 0F 8B /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNP_Jq
},
593 /* 0F 8C /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JL_Jq
},
594 /* 0F 8D /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNL_Jq
},
595 /* 0F 8E /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JLE_Jq
},
596 /* 0F 8F /wr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNLE_Jq
},
597 /* 0F 90 /wr */ { 0, BX_IA_SETO_EbR
},
598 /* 0F 91 /wr */ { 0, BX_IA_SETNO_EbR
},
599 /* 0F 92 /wr */ { 0, BX_IA_SETB_EbR
},
600 /* 0F 93 /wr */ { 0, BX_IA_SETNB_EbR
},
601 /* 0F 94 /wr */ { 0, BX_IA_SETZ_EbR
},
602 /* 0F 95 /wr */ { 0, BX_IA_SETNZ_EbR
},
603 /* 0F 96 /wr */ { 0, BX_IA_SETBE_EbR
},
604 /* 0F 97 /wr */ { 0, BX_IA_SETNBE_EbR
},
605 /* 0F 98 /wr */ { 0, BX_IA_SETS_EbR
},
606 /* 0F 99 /wr */ { 0, BX_IA_SETNS_EbR
},
607 /* 0F 9A /wr */ { 0, BX_IA_SETP_EbR
},
608 /* 0F 9B /wr */ { 0, BX_IA_SETNP_EbR
},
609 /* 0F 9C /wr */ { 0, BX_IA_SETL_EbR
},
610 /* 0F 9D /wr */ { 0, BX_IA_SETNL_EbR
},
611 /* 0F 9E /wr */ { 0, BX_IA_SETLE_EbR
},
612 /* 0F 9F /wr */ { 0, BX_IA_SETNLE_EbR
},
613 /* 0F A0 /wr */ { 0, BX_IA_PUSH16_FS
},
614 /* 0F A1 /wr */ { 0, BX_IA_POP16_FS
},
615 /* 0F A2 /wr */ { 0, BX_IA_CPUID
},
616 /* 0F A3 /wr */ { 0, BX_IA_BT_EwGwR
},
617 /* 0F A4 /wr */ { BxImmediate_Ib
, BX_IA_SHLD_EwGwR
},
618 /* 0F A5 /wr */ { 0, BX_IA_SHLD_EwGwR
},
619 /* 0F A6 /wr */ { 0, BX_IA_ERROR
},
620 /* 0F A7 /wr */ { 0, BX_IA_ERROR
},
621 /* 0F A8 /wr */ { 0, BX_IA_PUSH16_GS
},
622 /* 0F A9 /wr */ { 0, BX_IA_POP16_GS
},
623 /* 0F AA /wr */ { BxTraceEnd
, BX_IA_RSM
},
624 /* 0F AB /wr */ { 0, BX_IA_BTS_EwGwR
},
625 /* 0F AC /wr */ { BxImmediate_Ib
, BX_IA_SHRD_EwGwR
},
626 /* 0F AD /wr */ { 0, BX_IA_SHRD_EwGwR
},
627 /* 0F AE /wr */ { BxGroup15
, BX_IA_ERROR
, BxOpcodeInfoG15R
},
628 /* 0F AF /wr */ { 0, BX_IA_IMUL_GwEwR
},
629 /* 0F B0 /wr */ { 0, BX_IA_CMPXCHG_EbGbR
},
630 /* 0F B1 /wr */ { 0, BX_IA_CMPXCHG_EwGwR
},
631 /* 0F B2 /wr */ { 0, BX_IA_ERROR
}, // LSS
632 /* 0F B3 /wr */ { 0, BX_IA_BTR_EwGwR
},
633 /* 0F B4 /wr */ { 0, BX_IA_ERROR
}, // LFS
634 /* 0F B5 /wr */ { 0, BX_IA_ERROR
}, // LGS
635 /* 0F B6 /wr */ { 0, BX_IA_MOVZX_GwEbR
},
636 /* 0F B7 /wr */ { 0, BX_IA_MOV_GwEwR
}, // MOVZX_GwEw
637 /* 0F B8 /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fb8wR
},
638 /* 0F B9 /wr */ { BxTraceEnd
, BX_IA_UD2B
},
639 /* 0F BA /wr */ { BxGroup8
, BX_IA_ERROR
, BxOpcodeInfoG8EwIbR
},
640 /* 0F BB /wr */ { 0, BX_IA_BTC_EwGwR
},
641 /* 0F BC /wr */ { 0, BX_IA_BSF_GwEwR
},
642 /* 0F BD /wr */ { 0, BX_IA_BSR_GwEwR
},
643 /* 0F BE /wr */ { 0, BX_IA_MOVSX_GwEbR
},
644 /* 0F BF /wr */ { 0, BX_IA_MOV_GwEwR
}, // MOVSX_GwEw
645 /* 0F C0 /wr */ { 0, BX_IA_XADD_EbGbR
},
646 /* 0F C1 /wr */ { 0, BX_IA_XADD_EwGwR
},
647 /* 0F C2 /wr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_CMPPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc2
},
648 /* 0F C3 /wr */ { 0, BX_IA_ERROR
}, // MOVNTI SSE group
649 /* 0F C4 /wr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PINSRW_PqEwIb
, BxOpcodeGroupSSE_0fc4
},
650 /* 0F C5 /wr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PEXTRW_GdPqIb
, BxOpcodeGroupSSE_0fc5R
},
651 /* 0F C6 /wr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_SHUFPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc6
},
652 /* 0F C7 /wr */ { 0, BX_IA_ERROR
}, // CMPXCHG8B G9 group
653 /* 0F C8 /wr */ { 0, BX_IA_BSWAP_ERX
},
654 /* 0F C9 /wr */ { 0, BX_IA_BSWAP_ERX
},
655 /* 0F CA /wr */ { 0, BX_IA_BSWAP_ERX
},
656 /* 0F CB /wr */ { 0, BX_IA_BSWAP_ERX
},
657 /* 0F CC /wr */ { 0, BX_IA_BSWAP_ERX
},
658 /* 0F CD /wr */ { 0, BX_IA_BSWAP_ERX
},
659 /* 0F CE /wr */ { 0, BX_IA_BSWAP_ERX
},
660 /* 0F CF /wr */ { 0, BX_IA_BSWAP_ERX
},
661 /* 0F D0 /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd0
},
662 /* 0F D1 /wr */ { BxPrefixSSE
, BX_IA_PSRLW_PqQq
, BxOpcodeGroupSSE_0fd1
},
663 /* 0F D2 /wr */ { BxPrefixSSE
, BX_IA_PSRLD_PqQq
, BxOpcodeGroupSSE_0fd2
},
664 /* 0F D3 /wr */ { BxPrefixSSE
, BX_IA_PSRLQ_PqQq
, BxOpcodeGroupSSE_0fd3
},
665 /* 0F D4 /wr */ { BxPrefixSSE
, BX_IA_PADDQ_PqQq
, BxOpcodeGroupSSE_0fd4
},
666 /* 0F D5 /wr */ { BxPrefixSSE
, BX_IA_PMULLW_PqQq
, BxOpcodeGroupSSE_0fd5
},
667 /* 0F D6 /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd6
},
668 /* 0F D7 /wr */ { BxPrefixSSE
, BX_IA_PMOVMSKB_GdPRq
, BxOpcodeGroupSSE_0fd7
},
669 /* 0F D8 /wr */ { BxPrefixSSE
, BX_IA_PSUBUSB_PqQq
, BxOpcodeGroupSSE_0fd8
},
670 /* 0F D9 /wr */ { BxPrefixSSE
, BX_IA_PSUBUSW_PqQq
, BxOpcodeGroupSSE_0fd9
},
671 /* 0F DA /wr */ { BxPrefixSSE
, BX_IA_PMINUB_PqQq
, BxOpcodeGroupSSE_0fda
},
672 /* 0F DB /wr */ { BxPrefixSSE
, BX_IA_PAND_PqQq
, BxOpcodeGroupSSE_0fdb
},
673 /* 0F DC /wr */ { BxPrefixSSE
, BX_IA_PADDUSB_PqQq
, BxOpcodeGroupSSE_0fdc
},
674 /* 0F DD /wr */ { BxPrefixSSE
, BX_IA_PADDUSW_PqQq
, BxOpcodeGroupSSE_0fdd
},
675 /* 0F DE /wr */ { BxPrefixSSE
, BX_IA_PMAXUB_PqQq
, BxOpcodeGroupSSE_0fde
},
676 /* 0F DF /wr */ { BxPrefixSSE
, BX_IA_PANDN_PqQq
, BxOpcodeGroupSSE_0fdf
},
677 /* 0F E0 /wr */ { BxPrefixSSE
, BX_IA_PAVGB_PqQq
, BxOpcodeGroupSSE_0fe0
},
678 /* 0F E1 /wr */ { BxPrefixSSE
, BX_IA_PSRAW_PqQq
, BxOpcodeGroupSSE_0fe1
},
679 /* 0F E2 /wr */ { BxPrefixSSE
, BX_IA_PSRAD_PqQq
, BxOpcodeGroupSSE_0fe2
},
680 /* 0F E3 /wr */ { BxPrefixSSE
, BX_IA_PAVGW_PqQq
, BxOpcodeGroupSSE_0fe3
},
681 /* 0F E4 /wr */ { BxPrefixSSE
, BX_IA_PMULHUW_PqQq
, BxOpcodeGroupSSE_0fe4
},
682 /* 0F E5 /wr */ { BxPrefixSSE
, BX_IA_PMULHW_PqQq
, BxOpcodeGroupSSE_0fe5
},
683 /* 0F E6 /wr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fe6
},
684 /* 0F E7 /wr */ { 0, BX_IA_ERROR
}, // MOVNTQ/MOVNTDQ SSE group
685 /* 0F E8 /wr */ { BxPrefixSSE
, BX_IA_PSUBSB_PqQq
, BxOpcodeGroupSSE_0fe8
},
686 /* 0F E9 /wr */ { BxPrefixSSE
, BX_IA_PSUBSW_PqQq
, BxOpcodeGroupSSE_0fe9
},
687 /* 0F EA /wr */ { BxPrefixSSE
, BX_IA_PMINSW_PqQq
, BxOpcodeGroupSSE_0fea
},
688 /* 0F EB /wr */ { BxPrefixSSE
, BX_IA_POR_PqQq
, BxOpcodeGroupSSE_0feb
},
689 /* 0F EC /wr */ { BxPrefixSSE
, BX_IA_PADDSB_PqQq
, BxOpcodeGroupSSE_0fec
},
690 /* 0F ED /wr */ { BxPrefixSSE
, BX_IA_PADDSW_PqQq
, BxOpcodeGroupSSE_0fed
},
691 /* 0F EE /wr */ { BxPrefixSSE
, BX_IA_PMAXSW_PqQq
, BxOpcodeGroupSSE_0fee
},
692 /* 0F EF /wr */ { BxPrefixSSE
, BX_IA_PXOR_PqQq
, BxOpcodeGroupSSE_0fef
},
693 /* 0F F0 /wr */ { 0, BX_IA_ERROR
}, // LDDQU SSE group
694 /* 0F F1 /wr */ { BxPrefixSSE
, BX_IA_PSLLW_PqQq
, BxOpcodeGroupSSE_0ff1
},
695 /* 0F F2 /wr */ { BxPrefixSSE
, BX_IA_PSLLD_PqQq
, BxOpcodeGroupSSE_0ff2
},
696 /* 0F F3 /wr */ { BxPrefixSSE
, BX_IA_PSLLQ_PqQq
, BxOpcodeGroupSSE_0ff3
},
697 /* 0F F4 /wr */ { BxPrefixSSE
, BX_IA_PMULUDQ_PqQq
, BxOpcodeGroupSSE_0ff4
},
698 /* 0F F5 /wr */ { BxPrefixSSE
, BX_IA_PMADDWD_PqQq
, BxOpcodeGroupSSE_0ff5
},
699 /* 0F F6 /wr */ { BxPrefixSSE
, BX_IA_PSADBW_PqQq
, BxOpcodeGroupSSE_0ff6
},
700 /* 0F F7 /wr */ { BxPrefixSSE
, BX_IA_MASKMOVQ_PqPRq
, BxOpcodeGroupSSE_0ff7R
},
701 /* 0F F8 /wr */ { BxPrefixSSE
, BX_IA_PSUBB_PqQq
, BxOpcodeGroupSSE_0ff8
},
702 /* 0F F9 /wr */ { BxPrefixSSE
, BX_IA_PSUBW_PqQq
, BxOpcodeGroupSSE_0ff9
},
703 /* 0F FA /wr */ { BxPrefixSSE
, BX_IA_PSUBD_PqQq
, BxOpcodeGroupSSE_0ffa
},
704 /* 0F FB /wr */ { BxPrefixSSE
, BX_IA_PSUBQ_PqQq
, BxOpcodeGroupSSE_0ffb
},
705 /* 0F FC /wr */ { BxPrefixSSE
, BX_IA_PADDB_PqQq
, BxOpcodeGroupSSE_0ffc
},
706 /* 0F FD /wr */ { BxPrefixSSE
, BX_IA_PADDW_PqQq
, BxOpcodeGroupSSE_0ffd
},
707 /* 0F FE /wr */ { BxPrefixSSE
, BX_IA_PADDD_PqQq
, BxOpcodeGroupSSE_0ffe
},
708 /* 0F FF /wr */ { 0, BX_IA_ERROR
},
710 // 512 entries for 32bit operand size
711 /* 00 /dr */ { BxArithDstRM
, BX_IA_ADD_GbEbR
},
712 /* 01 /dr */ { BxArithDstRM
, BX_IA_ADD_GdEdR
},
713 /* 02 /dr */ { 0, BX_IA_ADD_GbEbR
},
714 /* 03 /dr */ { 0, BX_IA_ADD_GdEdR
},
715 /* 04 /dr */ { BxImmediate_Ib
, BX_IA_ADD_ALIb
},
716 /* 05 /dr */ { BxImmediate_Id
, BX_IA_ADD_EAXId
},
717 /* 06 /dr */ { 0, BX_IA_ERROR
},
718 /* 07 /dr */ { 0, BX_IA_ERROR
},
719 /* 08 /dr */ { BxArithDstRM
, BX_IA_OR_GbEbR
},
720 /* 09 /dr */ { BxArithDstRM
, BX_IA_OR_GdEdR
},
721 /* 0A /dr */ { 0, BX_IA_OR_GbEbR
},
722 /* 0B /dr */ { 0, BX_IA_OR_GdEdR
},
723 /* 0C /dr */ { BxImmediate_Ib
, BX_IA_OR_ALIb
},
724 /* 0D /dr */ { BxImmediate_Id
, BX_IA_OR_EAXId
},
725 /* 0E /dr */ { 0, BX_IA_ERROR
},
726 /* 0F /dr */ { 0, BX_IA_ERROR
}, // 2-byte escape
727 /* 10 /dr */ { BxArithDstRM
, BX_IA_ADC_GbEbR
},
728 /* 11 /dr */ { BxArithDstRM
, BX_IA_ADC_GdEdR
},
729 /* 12 /dr */ { 0, BX_IA_ADC_GbEbR
},
730 /* 13 /dr */ { 0, BX_IA_ADC_GdEdR
},
731 /* 14 /dr */ { BxImmediate_Ib
, BX_IA_ADC_ALIb
},
732 /* 15 /dr */ { BxImmediate_Id
, BX_IA_ADC_EAXId
},
733 /* 16 /dr */ { 0, BX_IA_ERROR
},
734 /* 17 /dr */ { 0, BX_IA_ERROR
},
735 /* 18 /dr */ { BxArithDstRM
, BX_IA_SBB_GbEbR
},
736 /* 19 /dr */ { BxArithDstRM
, BX_IA_SBB_GdEdR
},
737 /* 1A /dr */ { 0, BX_IA_SBB_GbEbR
},
738 /* 1B /dr */ { 0, BX_IA_SBB_GdEdR
},
739 /* 1C /dr */ { BxImmediate_Ib
, BX_IA_SBB_ALIb
},
740 /* 1D /dr */ { BxImmediate_Id
, BX_IA_SBB_EAXId
},
741 /* 1E /dr */ { 0, BX_IA_ERROR
},
742 /* 1F /dr */ { 0, BX_IA_ERROR
},
743 /* 20 /dr */ { BxArithDstRM
, BX_IA_AND_GbEbR
},
744 /* 21 /dr */ { BxArithDstRM
, BX_IA_AND_GdEdR
},
745 /* 22 /dr */ { 0, BX_IA_AND_GbEbR
},
746 /* 23 /dr */ { 0, BX_IA_AND_GdEdR
},
747 /* 24 /dr */ { BxImmediate_Ib
, BX_IA_AND_ALIb
},
748 /* 25 /dr */ { BxImmediate_Id
, BX_IA_AND_EAXId
},
749 /* 26 /dr */ { 0, BX_IA_ERROR
}, // ES:
750 /* 27 /dr */ { 0, BX_IA_ERROR
},
751 /* 28 /dr */ { BxArithDstRM
, BX_IA_SUB_GbEbR
},
752 /* 29 /dr */ { BxArithDstRM
, BX_IA_SUB_GdEdR
},
753 /* 2A /dr */ { 0, BX_IA_SUB_GbEbR
},
754 /* 2B /dr */ { 0, BX_IA_SUB_GdEdR
},
755 /* 2C /dr */ { BxImmediate_Ib
, BX_IA_SUB_ALIb
},
756 /* 2D /dr */ { BxImmediate_Id
, BX_IA_SUB_EAXId
},
757 /* 2E /dr */ { 0, BX_IA_ERROR
}, // CS:
758 /* 2F /dr */ { 0, BX_IA_ERROR
},
759 /* 30 /dr */ { BxArithDstRM
, BX_IA_XOR_GbEbR
},
760 /* 31 /dr */ { BxArithDstRM
, BX_IA_XOR_GdEdR
},
761 /* 32 /dr */ { 0, BX_IA_XOR_GbEbR
},
762 /* 33 /dr */ { 0, BX_IA_XOR_GdEdR
},
763 /* 34 /dr */ { BxImmediate_Ib
, BX_IA_XOR_ALIb
},
764 /* 35 /dr */ { BxImmediate_Id
, BX_IA_XOR_EAXId
},
765 /* 36 /dr */ { 0, BX_IA_ERROR
}, // SS:
766 /* 37 /dr */ { 0, BX_IA_ERROR
},
767 /* 38 /dr */ { BxArithDstRM
, BX_IA_CMP_GbEbR
},
768 /* 39 /dr */ { BxArithDstRM
, BX_IA_CMP_GdEdR
},
769 /* 3A /dr */ { 0, BX_IA_CMP_GbEbR
},
770 /* 3B /dr */ { 0, BX_IA_CMP_GdEdR
},
771 /* 3C /dr */ { BxImmediate_Ib
, BX_IA_CMP_ALIb
},
772 /* 3D /dr */ { BxImmediate_Id
, BX_IA_CMP_EAXId
},
773 /* 3E /dr */ { 0, BX_IA_ERROR
}, // DS:
774 /* 3F /dr */ { 0, BX_IA_ERROR
},
775 /* 40 /dr */ { 0, BX_IA_ERROR
}, // REX:
776 /* 41 /dr */ { 0, BX_IA_ERROR
}, // REX:
777 /* 42 /dr */ { 0, BX_IA_ERROR
}, // REX:
778 /* 43 /dr */ { 0, BX_IA_ERROR
}, // REX:
779 /* 44 /dr */ { 0, BX_IA_ERROR
}, // REX:
780 /* 45 /dr */ { 0, BX_IA_ERROR
}, // REX:
781 /* 46 /dr */ { 0, BX_IA_ERROR
}, // REX:
782 /* 47 /dr */ { 0, BX_IA_ERROR
}, // REX:
783 /* 48 /dr */ { 0, BX_IA_ERROR
}, // REX:
784 /* 49 /dr */ { 0, BX_IA_ERROR
}, // REX:
785 /* 4A /dr */ { 0, BX_IA_ERROR
}, // REX:
786 /* 4B /dr */ { 0, BX_IA_ERROR
}, // REX:
787 /* 4C /dr */ { 0, BX_IA_ERROR
}, // REX:
788 /* 4D /dr */ { 0, BX_IA_ERROR
}, // REX:
789 /* 4E /dr */ { 0, BX_IA_ERROR
}, // REX:
790 /* 4F /dr */ { 0, BX_IA_ERROR
}, // REX:
791 /* 50 /dr */ { 0, BX_IA_PUSH_RRX
},
792 /* 51 /dr */ { 0, BX_IA_PUSH_RRX
},
793 /* 52 /dr */ { 0, BX_IA_PUSH_RRX
},
794 /* 53 /dr */ { 0, BX_IA_PUSH_RRX
},
795 /* 54 /dr */ { 0, BX_IA_PUSH_RRX
},
796 /* 55 /dr */ { 0, BX_IA_PUSH_RRX
},
797 /* 56 /dr */ { 0, BX_IA_PUSH_RRX
},
798 /* 57 /dr */ { 0, BX_IA_PUSH_RRX
},
799 /* 58 /dr */ { 0, BX_IA_POP_RRX
},
800 /* 59 /dr */ { 0, BX_IA_POP_RRX
},
801 /* 5A /dr */ { 0, BX_IA_POP_RRX
},
802 /* 5B /dr */ { 0, BX_IA_POP_RRX
},
803 /* 5C /dr */ { 0, BX_IA_POP_RRX
},
804 /* 5D /dr */ { 0, BX_IA_POP_RRX
},
805 /* 5E /dr */ { 0, BX_IA_POP_RRX
},
806 /* 5F /dr */ { 0, BX_IA_POP_RRX
},
807 /* 60 /dr */ { 0, BX_IA_ERROR
},
808 /* 61 /dr */ { 0, BX_IA_ERROR
},
809 /* 62 /dr */ { 0, BX_IA_ERROR
},
810 /* 63 /dr */ { 0, BX_IA_MOV_GdEdR
}, // MOVSX_GdEd
811 /* 64 /dr */ { 0, BX_IA_ERROR
}, // FS:
812 /* 65 /dr */ { 0, BX_IA_ERROR
}, // GS:
813 /* 66 /dr */ { 0, BX_IA_ERROR
}, // OS:
814 /* 67 /dr */ { 0, BX_IA_ERROR
}, // AS:
815 /* 68 /dr */ { BxImmediate_Id
, BX_IA_PUSH64_Id
},
816 /* 69 /dr */ { BxImmediate_Id
, BX_IA_IMUL_GdEdIdR
},
817 /* 6A /dr */ { BxImmediate_Ib_SE
, BX_IA_PUSH64_Id
},
818 /* 6B /dr */ { BxImmediate_Ib_SE
, BX_IA_IMUL_GdEdIdR
},
819 /* 6C /dr */ { 0, BX_IA_REP_INSB_YbDX
},
820 /* 6D /dr */ { 0, BX_IA_REP_INSD_YdDX
},
821 /* 6E /dr */ { 0, BX_IA_REP_OUTSB_DXXb
},
822 /* 6F /dr */ { 0, BX_IA_REP_OUTSD_DXXd
},
823 /* 70 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JO_Jq
},
824 /* 71 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNO_Jq
},
825 /* 72 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JB_Jq
},
826 /* 73 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNB_Jq
},
827 /* 74 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JZ_Jq
},
828 /* 75 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNZ_Jq
},
829 /* 76 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JBE_Jq
},
830 /* 77 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNBE_Jq
},
831 /* 78 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JS_Jq
},
832 /* 79 /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNS_Jq
},
833 /* 7A /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JP_Jq
},
834 /* 7B /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNP_Jq
},
835 /* 7C /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JL_Jq
},
836 /* 7D /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNL_Jq
},
837 /* 7E /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JLE_Jq
},
838 /* 7F /dr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNLE_Jq
},
839 /* 80 /dr */ { BxGroup1
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG1EbIbR
},
840 /* 81 /dr */ { BxGroup5
| BxImmediate_Id
, BX_IA_ERROR
, BxOpcodeInfoG1EdR
},
841 /* 82 /dr */ { 0, BX_IA_ERROR
},
842 /* 83 /dr */ { BxGroup5
| BxImmediate_Ib_SE
, BX_IA_ERROR
, BxOpcodeInfoG1EdR
},
843 /* 84 /dr */ { 0, BX_IA_TEST_EbGbR
},
844 /* 85 /dr */ { 0, BX_IA_TEST_EdGdR
},
845 /* 86 /dr */ { 0, BX_IA_XCHG_EbGbR
},
846 /* 87 /dr */ { 0, BX_IA_XCHG_EdGdR
},
847 /* 88 /dr */ { BxArithDstRM
, BX_IA_MOV_GbEbR
},
848 /* 89 /dr */ { BxArithDstRM
, BX_IA_MOV_GdEdR
},
849 /* 8A /dr */ { 0, BX_IA_MOV_GbEbR
},
850 /* 8B /dr */ { 0, BX_IA_MOV_GdEdR
},
851 /* 8C /dr */ { 0, BX_IA_MOV_EwSwR
},
852 /* 8D /dr */ { 0, BX_IA_ERROR
}, // LEA
853 /* 8E /dr */ { 0, BX_IA_MOV_SwEw
},
854 /* 8F /dr */ { BxGroup1A
, BX_IA_ERROR
, BxOpcodeInfo64G1AEqR
},
855 /* 90 /dr */ { 0, BX_IA_XCHG_ERXEAX
}, // handles XCHG R8d, EAX
856 /* 91 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
857 /* 92 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
858 /* 93 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
859 /* 94 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
860 /* 95 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
861 /* 96 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
862 /* 97 /dr */ { 0, BX_IA_XCHG_ERXEAX
},
863 /* 98 /dr */ { 0, BX_IA_CWDE
},
864 /* 99 /dr */ { 0, BX_IA_CDQ
},
865 /* 9A /dr */ { 0, BX_IA_ERROR
},
866 /* 9B /dr */ { 0, BX_IA_FWAIT
},
867 /* 9C /dr */ { 0, BX_IA_PUSHF_Fq
},
868 /* 9D /dr */ { 0, BX_IA_POPF_Fq
},
869 /* 9E /dr */ { 0, BX_IA_SAHF
},
870 /* 9F /dr */ { 0, BX_IA_LAHF
},
871 /* A0 /dr */ { BxImmediate_O
, BX_IA_MOV_ALOq
},
872 /* A1 /dr */ { BxImmediate_O
, BX_IA_MOV_EAXOq
},
873 /* A2 /dr */ { BxImmediate_O
, BX_IA_MOV_OqAL
},
874 /* A3 /dr */ { BxImmediate_O
, BX_IA_MOV_OqEAX
},
875 /* A4 /dr */ { 0, BX_IA_REP_MOVSB_XbYb
},
876 /* A5 /dr */ { 0, BX_IA_REP_MOVSD_XdYd
},
877 /* A6 /dr */ { 0, BX_IA_REP_CMPSB_XbYb
},
878 /* A7 /dr */ { 0, BX_IA_REP_CMPSD_XdYd
},
879 /* A8 /dr */ { BxImmediate_Ib
, BX_IA_TEST_ALIb
},
880 /* A9 /dr */ { BxImmediate_Id
, BX_IA_TEST_EAXId
},
881 /* AA /dr */ { 0, BX_IA_REP_STOSB_YbAL
},
882 /* AB /dr */ { 0, BX_IA_REP_STOSD_YdEAX
},
883 /* AC /dr */ { 0, BX_IA_REP_LODSB_ALXb
},
884 /* AD /dr */ { 0, BX_IA_REP_LODSD_EAXXd
},
885 /* AE /dr */ { 0, BX_IA_REP_SCASB_ALXb
},
886 /* AF /dr */ { 0, BX_IA_REP_SCASD_EAXXd
},
887 /* B0 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
888 /* B1 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
889 /* B2 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
890 /* B3 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
891 /* B4 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
892 /* B5 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
893 /* B6 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
894 /* B7 /dr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
895 /* B8 /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
896 /* B9 /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
897 /* BA /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
898 /* BB /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
899 /* BC /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
900 /* BD /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
901 /* BE /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
902 /* BF /dr */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
903 /* C0 /dr */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
904 /* C1 /dr */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2EdR
},
905 /* C2 /dr */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETnear64_Iw
},
906 /* C3 /dr */ { BxTraceEnd
, BX_IA_RETnear64
},
907 /* C4 /dr */ { 0, BX_IA_ERROR
},
908 /* C5 /dr */ { 0, BX_IA_ERROR
},
909 /* C6 /dr */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EbR
},
910 /* C7 /dr */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EdR
},
911 /* C8 /dr */ { BxImmediate_IwIb
, BX_IA_ENTER64_IwIb
},
912 /* C9 /dr */ { 0, BX_IA_LEAVE64
},
913 /* CA /dr */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETfar32_Iw
},
914 /* CB /dr */ { BxTraceEnd
, BX_IA_RETfar32
},
915 /* CC /dr */ { BxTraceEnd
, BX_IA_INT3
},
916 /* CD /dr */ { BxImmediate_Ib
| BxTraceEnd
, BX_IA_INT_Ib
},
917 /* CE /dr */ { 0, BX_IA_ERROR
},
918 /* CF /dr */ { BxTraceEnd
, BX_IA_IRET64
},
919 /* D0 /dr */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
920 /* D1 /dr */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2EdR
},
921 /* D2 /dr */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
922 /* D3 /dr */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2EdR
},
923 /* D4 /dr */ { 0, BX_IA_ERROR
},
924 /* D5 /dr */ { 0, BX_IA_ERROR
},
925 /* D6 /dr */ { 0, BX_IA_ERROR
},
926 /* D7 /dr */ { 0, BX_IA_XLAT
},
927 /* D8 /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointD8
},
928 /* D9 /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointD9
},
929 /* DA /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDA
},
930 /* DB /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDB
},
931 /* DC /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDC
},
932 /* DD /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDD
},
933 /* DE /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDE
},
934 /* DF /dr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDF
},
935 /* E0 /dr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPNE64_Jb
},
936 /* E1 /dr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPE64_Jb
},
937 /* E2 /dr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOP64_Jb
},
938 /* E3 /dr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JRCXZ_Jb
},
939 /* E4 /dr */ { BxImmediate_Ib
, BX_IA_IN_ALIb
},
940 /* E5 /dr */ { BxImmediate_Ib
, BX_IA_IN_EAXIb
},
941 /* E6 /dr */ { BxImmediate_Ib
, BX_IA_OUT_IbAL
},
942 /* E7 /dr */ { BxImmediate_Ib
, BX_IA_OUT_IbEAX
},
943 /* E8 /dr */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_CALL_Jq
},
944 /* E9 /dr */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_JMP_Jq
},
945 /* EA /dr */ { 0, BX_IA_ERROR
},
946 /* EB /dr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JMP_Jq
},
947 /* EC /dr */ { 0, BX_IA_IN_ALDX
},
948 /* ED /dr */ { 0, BX_IA_IN_EAXDX
},
949 /* EE /dr */ { 0, BX_IA_OUT_DXAL
},
950 /* EF /dr */ { 0, BX_IA_OUT_DXEAX
},
951 /* F0 /dr */ { 0, BX_IA_ERROR
}, // LOCK:
952 /* F1 /dr */ { BxTraceEnd
, BX_IA_INT1
},
953 /* F2 /dr */ { 0, BX_IA_ERROR
}, // REPNE/REPNZ
954 /* F3 /dr */ { 0, BX_IA_ERROR
}, // REP,REPE/REPZ
955 /* F4 /dr */ { BxTraceEnd
, BX_IA_HLT
},
956 /* F5 /dr */ { 0, BX_IA_CMC
},
957 /* F6 /dr */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EbR
},
958 /* F7 /dr */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EdR
},
959 /* F8 /dr */ { 0, BX_IA_CLC
},
960 /* F9 /dr */ { 0, BX_IA_STC
},
961 /* FA /dr */ { 0, BX_IA_CLI
},
962 /* FB /dr */ { 0, BX_IA_STI
},
963 /* FC /dr */ { 0, BX_IA_CLD
},
964 /* FD /dr */ { 0, BX_IA_STD
},
965 /* FE /dr */ { BxGroup4
, BX_IA_ERROR
, BxOpcodeInfoG4R
},
966 /* FF /dr */ { BxGroup5
, BX_IA_ERROR
, BxOpcodeInfo64G5dR
},
968 /* 0F 00 /dr */ { BxGroup6
, BX_IA_ERROR
, BxOpcodeInfoG6
},
969 /* 0F 01 /dr */ { BxGroup7
, BX_IA_ERROR
, BxOpcodeInfo64G7R
},
970 /* 0F 02 /dr */ { 0, BX_IA_LAR_GvEw
},
971 /* 0F 03 /dr */ { 0, BX_IA_LSL_GvEw
},
972 /* 0F 04 /dr */ { 0, BX_IA_ERROR
},
973 /* 0F 05 /dr */ { BxTraceEnd
, BX_IA_SYSCALL
},
974 /* 0F 06 /dr */ { 0, BX_IA_CLTS
},
975 /* 0F 07 /dr */ { BxTraceEnd
, BX_IA_SYSRET
},
976 /* 0F 08 /dr */ { BxTraceEnd
, BX_IA_INVD
},
977 /* 0F 09 /dr */ { BxTraceEnd
, BX_IA_WBINVD
},
978 /* 0F 0A /dr */ { 0, BX_IA_ERROR
},
979 /* 0F 0B /dr */ { BxTraceEnd
, BX_IA_UD2A
},
980 /* 0F 0C /dr */ { 0, BX_IA_ERROR
},
981 /* 0F 0D /dr */ { 0, BX_IA_NOP
}, // 3DNow! PREFETCH on AMD, NOP on Intel
982 /* 0F 0E /dr */ { 0, BX_IA_FEMMS
}, // 3DNow! FEMMS
984 /* 0F 0F /dr */ { BxImmediate_Ib
, BX_IA_ERROR
, Bx3DNowOpcodeInfo
},
986 /* 0F 0F /dr */ { 0, BX_IA_ERROR
},
988 /* 0F 10 /dr */ { BxPrefixSSE
, BX_IA_MOVUPS_VpsWps
, BxOpcodeGroupSSE_0f10
},
989 /* 0F 11 /dr */ { BxPrefixSSE
, BX_IA_MOVUPS_WpsVps
, BxOpcodeGroupSSE_0f11
},
990 /* 0F 12 /dr */ { BxPrefixSSE
, BX_IA_MOVLPS_VpsMq
, BxOpcodeGroupSSE_0f12
},
991 /* 0F 13 /dr */ { 0, BX_IA_ERROR
}, // MOVLPS/PD SSE group
992 /* 0F 14 /dr */ { BxPrefixSSE
, BX_IA_UNPCKLPS_VpsWdq
, BxOpcodeGroupSSE_0f14
},
993 /* 0F 15 /dr */ { BxPrefixSSE
, BX_IA_UNPCKHPS_VpsWdq
, BxOpcodeGroupSSE_0f15
},
994 /* 0F 16 /dr */ { BxPrefixSSE
, BX_IA_MOVHPS_VpsMq
, BxOpcodeGroupSSE_0f16
},
995 /* 0F 17 /dr */ { 0, BX_IA_ERROR
}, // MOHLPS/PD SSE group
996 /* 0F 18 /dr */ { 0, BX_IA_NOP
}, // PREFETCH HINT
997 /* 0F 19 /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
998 /* 0F 1A /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
999 /* 0F 1B /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1000 /* 0F 1C /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1001 /* 0F 1D /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1002 /* 0F 1E /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1003 /* 0F 1F /dr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1004 /* 0F 20 /dr */ { 0, BX_IA_MOV_RqCq
},
1005 /* 0F 21 /dr */ { 0, BX_IA_MOV_RqDq
},
1006 /* 0F 22 /dr */ { BxTraceEnd
, BX_IA_MOV_CqRq
},
1007 /* 0F 23 /dr */ { BxTraceEnd
, BX_IA_MOV_DqRq
},
1008 /* 0F 24 /dr */ { 0, BX_IA_ERROR
},
1009 /* 0F 25 /dr */ { 0, BX_IA_ERROR
},
1010 /* 0F 26 /dr */ { 0, BX_IA_ERROR
},
1011 /* 0F 27 /dr */ { 0, BX_IA_ERROR
},
1012 /* 0F 28 /dr */ { BxPrefixSSE
, BX_IA_MOVAPS_VpsWps
, BxOpcodeGroupSSE_0f28
},
1013 /* 0F 29 /dr */ { BxPrefixSSE
, BX_IA_MOVAPS_WpsVps
, BxOpcodeGroupSSE_0f29
},
1014 /* 0F 2A /dr */ { BxPrefixSSE
, BX_IA_CVTPI2PS_VpsQq
, BxOpcodeGroupSSE_0f2a
},
1015 /* 0F 2B /dr */ { 0, BX_IA_ERROR
}, // MOVNTPS/PD/SS/SD
1016 /* 0F 2C /dr */ { BxPrefixSSE
, BX_IA_CVTTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2c
},
1017 /* 0F 2D /dr */ { BxPrefixSSE
, BX_IA_CVTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2d
},
1018 /* 0F 2E /dr */ { BxPrefixSSE
, BX_IA_UCOMISS_VssWss
, BxOpcodeGroupSSE_0f2e
},
1019 /* 0F 2F /dr */ { BxPrefixSSE
, BX_IA_COMISS_VpsWps
, BxOpcodeGroupSSE_0f2f
},
1020 /* 0F 30 /dr */ { 0, BX_IA_WRMSR
},
1021 /* 0F 31 /dr */ { 0, BX_IA_RDTSC
},
1022 /* 0F 32 /dr */ { 0, BX_IA_RDMSR
},
1023 /* 0F 33 /dr */ { 0, BX_IA_RDPMC
},
1024 /* 0F 34 /dr */ { 0, BX_IA_SYSENTER
},
1025 /* 0F 35 /dr */ { 0, BX_IA_SYSEXIT
},
1026 /* 0F 36 /dr */ { 0, BX_IA_ERROR
},
1027 /* 0F 37 /dr */ { 0, BX_IA_ERROR
},
1028 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
1029 /* 0F 38 /dr */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f38
}, // 3-byte escape
1031 /* 0F 38 /dr */ { 0, BX_IA_ERROR
},
1033 /* 0F 39 /dr */ { 0, BX_IA_ERROR
},
1034 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
1035 /* 0F 3A /dr */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f3a
}, // 3-byte escape
1037 /* 0F 3A /dr */ { 0, BX_IA_ERROR
},
1039 /* 0F 3B /dr */ { 0, BX_IA_ERROR
},
1040 /* 0F 3C /dr */ { 0, BX_IA_ERROR
},
1041 /* 0F 3D /dr */ { 0, BX_IA_ERROR
},
1042 /* 0F 3E /dr */ { 0, BX_IA_ERROR
},
1043 /* 0F 3F /dr */ { 0, BX_IA_ERROR
},
1044 /* 0F 40 /dr */ { 0, BX_IA_CMOVO_GdEdR
},
1045 /* 0F 41 /dr */ { 0, BX_IA_CMOVNO_GdEdR
},
1046 /* 0F 42 /dr */ { 0, BX_IA_CMOVB_GdEdR
},
1047 /* 0F 43 /dr */ { 0, BX_IA_CMOVNB_GdEdR
},
1048 /* 0F 44 /dr */ { 0, BX_IA_CMOVZ_GdEdR
},
1049 /* 0F 45 /dr */ { 0, BX_IA_CMOVNZ_GdEdR
},
1050 /* 0F 46 /dr */ { 0, BX_IA_CMOVBE_GdEdR
},
1051 /* 0F 47 /dr */ { 0, BX_IA_CMOVNBE_GdEdR
},
1052 /* 0F 48 /dr */ { 0, BX_IA_CMOVS_GdEdR
},
1053 /* 0F 49 /dr */ { 0, BX_IA_CMOVNS_GdEdR
},
1054 /* 0F 4A /dr */ { 0, BX_IA_CMOVP_GdEdR
},
1055 /* 0F 4B /dr */ { 0, BX_IA_CMOVNP_GdEdR
},
1056 /* 0F 4C /dr */ { 0, BX_IA_CMOVL_GdEdR
},
1057 /* 0F 4D /dr */ { 0, BX_IA_CMOVNL_GdEdR
},
1058 /* 0F 4E /dr */ { 0, BX_IA_CMOVLE_GdEdR
},
1059 /* 0F 4F /dr */ { 0, BX_IA_CMOVNLE_GdEdR
},
1060 /* 0F 50 /dr */ { BxPrefixSSE
, BX_IA_MOVMSKPS_GdVRps
, BxOpcodeGroupSSE_0f50
},
1061 /* 0F 51 /dr */ { BxPrefixSSE
, BX_IA_SQRTPS_VpsWps
, BxOpcodeGroupSSE_0f51
},
1062 /* 0F 52 /dr */ { BxPrefixSSE
, BX_IA_RSQRTPS_VpsWps
, BxOpcodeGroupSSE_0f52
},
1063 /* 0F 53 /dr */ { BxPrefixSSE
, BX_IA_RCPPS_VpsWps
, BxOpcodeGroupSSE_0f53
},
1064 /* 0F 54 /dr */ { BxPrefixSSE
, BX_IA_ANDPS_VpsWps
, BxOpcodeGroupSSE_0f54
},
1065 /* 0F 55 /dr */ { BxPrefixSSE
, BX_IA_ANDNPS_VpsWps
, BxOpcodeGroupSSE_0f55
},
1066 /* 0F 56 /dr */ { BxPrefixSSE
, BX_IA_ORPS_VpsWps
, BxOpcodeGroupSSE_0f56
},
1067 /* 0F 57 /dr */ { BxPrefixSSE
, BX_IA_XORPS_VpsWps
, BxOpcodeGroupSSE_0f57
},
1068 /* 0F 58 /dr */ { BxPrefixSSE
, BX_IA_ADDPS_VpsWps
, BxOpcodeGroupSSE_0f58
},
1069 /* 0F 59 /dr */ { BxPrefixSSE
, BX_IA_MULPS_VpsWps
, BxOpcodeGroupSSE_0f59
},
1070 /* 0F 5A /dr */ { BxPrefixSSE
, BX_IA_CVTPS2PD_VpsWps
, BxOpcodeGroupSSE_0f5a
},
1071 /* 0F 5B /dr */ { BxPrefixSSE
, BX_IA_CVTDQ2PS_VpsWdq
, BxOpcodeGroupSSE_0f5b
},
1072 /* 0F 5C /dr */ { BxPrefixSSE
, BX_IA_SUBPS_VpsWps
, BxOpcodeGroupSSE_0f5c
},
1073 /* 0F 5D /dr */ { BxPrefixSSE
, BX_IA_MINPS_VpsWps
, BxOpcodeGroupSSE_0f5d
},
1074 /* 0F 5E /dr */ { BxPrefixSSE
, BX_IA_DIVPS_VpsWps
, BxOpcodeGroupSSE_0f5e
},
1075 /* 0F 5F /dr */ { BxPrefixSSE
, BX_IA_MAXPS_VpsWps
, BxOpcodeGroupSSE_0f5f
},
1076 /* 0F 60 /dr */ { BxPrefixSSE
, BX_IA_PUNPCKLBW_PqQd
, BxOpcodeGroupSSE_0f60
},
1077 /* 0F 61 /dr */ { BxPrefixSSE
, BX_IA_PUNPCKLWD_PqQd
, BxOpcodeGroupSSE_0f61
},
1078 /* 0F 62 /dr */ { BxPrefixSSE
, BX_IA_PUNPCKLDQ_PqQd
, BxOpcodeGroupSSE_0f62
},
1079 /* 0F 63 /dr */ { BxPrefixSSE
, BX_IA_PACKSSWB_PqQq
, BxOpcodeGroupSSE_0f63
},
1080 /* 0F 64 /dr */ { BxPrefixSSE
, BX_IA_PCMPGTB_PqQq
, BxOpcodeGroupSSE_0f64
},
1081 /* 0F 65 /dr */ { BxPrefixSSE
, BX_IA_PCMPGTW_PqQq
, BxOpcodeGroupSSE_0f65
},
1082 /* 0F 66 /dr */ { BxPrefixSSE
, BX_IA_PCMPGTD_PqQq
, BxOpcodeGroupSSE_0f66
},
1083 /* 0F 67 /dr */ { BxPrefixSSE
, BX_IA_PACKUSWB_PqQq
, BxOpcodeGroupSSE_0f67
},
1084 /* 0F 68 /dr */ { BxPrefixSSE
, BX_IA_PUNPCKHBW_PqQq
, BxOpcodeGroupSSE_0f68
},
1085 /* 0F 69 /dr */ { BxPrefixSSE
, BX_IA_PUNPCKHWD_PqQq
, BxOpcodeGroupSSE_0f69
},
1086 /* 0F 6A /dr */ { BxPrefixSSE
, BX_IA_PUNPCKHDQ_PqQq
, BxOpcodeGroupSSE_0f6a
},
1087 /* 0F 6B /dr */ { BxPrefixSSE
, BX_IA_PACKSSDW_PqQq
, BxOpcodeGroupSSE_0f6b
},
1088 /* 0F 6C /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6c
},
1089 /* 0F 6D /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6d
},
1090 /* 0F 6E /dr */ { BxPrefixSSE
, BX_IA_MOVD_PqEd
, BxOpcodeGroupSSE_0f6e
},
1091 /* 0F 6F /dr */ { BxPrefixSSE
, BX_IA_MOVQ_PqQq
, BxOpcodeGroupSSE_0f6f
},
1092 /* 0F 70 /dr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PSHUFW_PqQqIb
, BxOpcodeGroupSSE_0f70
},
1093 /* 0F 71 /dr */ { BxGroup12
, BX_IA_ERROR
, BxOpcodeInfoG12R
},
1094 /* 0F 72 /dr */ { BxGroup13
, BX_IA_ERROR
, BxOpcodeInfoG13R
},
1095 /* 0F 73 /dr */ { BxGroup14
, BX_IA_ERROR
, BxOpcodeInfoG14R
},
1096 /* 0F 74 /dr */ { BxPrefixSSE
, BX_IA_PCMPEQB_PqQq
, BxOpcodeGroupSSE_0f74
},
1097 /* 0F 75 /dr */ { BxPrefixSSE
, BX_IA_PCMPEQW_PqQq
, BxOpcodeGroupSSE_0f75
},
1098 /* 0F 76 /dr */ { BxPrefixSSE
, BX_IA_PCMPEQD_PqQq
, BxOpcodeGroupSSE_0f76
},
1099 /* 0F 77 /dr */ { BxPrefixSSE
, BX_IA_EMMS
, BxOpcodeGroupSSE_ERR
},
1100 /* 0F 78 /dr */ { 0, BX_IA_ERROR
},
1101 /* 0F 79 /dr */ { 0, BX_IA_ERROR
},
1102 /* 0F 7A /dr */ { 0, BX_IA_ERROR
},
1103 /* 0F 7B /dr */ { 0, BX_IA_ERROR
},
1104 /* 0F 7C /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7c
},
1105 /* 0F 7D /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7d
},
1106 /* 0F 7E /dr */ { BxPrefixSSE
, BX_IA_MOVD_EdPd
, BxOpcodeGroupSSE_0f7e
},
1107 /* 0F 7F /dr */ { BxPrefixSSE
, BX_IA_MOVQ_QqPq
, BxOpcodeGroupSSE_0f7f
},
1108 /* 0F 80 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JO_Jq
},
1109 /* 0F 81 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNO_Jq
},
1110 /* 0F 82 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JB_Jq
},
1111 /* 0F 83 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNB_Jq
},
1112 /* 0F 84 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JZ_Jq
},
1113 /* 0F 85 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNZ_Jq
},
1114 /* 0F 86 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JBE_Jq
},
1115 /* 0F 87 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNBE_Jq
},
1116 /* 0F 88 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JS_Jq
},
1117 /* 0F 89 /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNS_Jq
},
1118 /* 0F 8A /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JP_Jq
},
1119 /* 0F 8B /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNP_Jq
},
1120 /* 0F 8C /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JL_Jq
},
1121 /* 0F 8D /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNL_Jq
},
1122 /* 0F 8E /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JLE_Jq
},
1123 /* 0F 8F /dr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNLE_Jq
},
1124 /* 0F 90 /dr */ { 0, BX_IA_SETO_EbR
},
1125 /* 0F 91 /dr */ { 0, BX_IA_SETNO_EbR
},
1126 /* 0F 92 /dr */ { 0, BX_IA_SETB_EbR
},
1127 /* 0F 93 /dr */ { 0, BX_IA_SETNB_EbR
},
1128 /* 0F 94 /dr */ { 0, BX_IA_SETZ_EbR
},
1129 /* 0F 95 /dr */ { 0, BX_IA_SETNZ_EbR
},
1130 /* 0F 96 /dr */ { 0, BX_IA_SETBE_EbR
},
1131 /* 0F 97 /dr */ { 0, BX_IA_SETNBE_EbR
},
1132 /* 0F 98 /dr */ { 0, BX_IA_SETS_EbR
},
1133 /* 0F 99 /dr */ { 0, BX_IA_SETNS_EbR
},
1134 /* 0F 9A /dr */ { 0, BX_IA_SETP_EbR
},
1135 /* 0F 9B /dr */ { 0, BX_IA_SETNP_EbR
},
1136 /* 0F 9C /dr */ { 0, BX_IA_SETL_EbR
},
1137 /* 0F 9D /dr */ { 0, BX_IA_SETNL_EbR
},
1138 /* 0F 9E /dr */ { 0, BX_IA_SETLE_EbR
},
1139 /* 0F 9F /dr */ { 0, BX_IA_SETNLE_EbR
},
1140 /* 0F A0 /dr */ { 0, BX_IA_PUSH64_FS
},
1141 /* 0F A1 /dr */ { 0, BX_IA_POP64_FS
},
1142 /* 0F A2 /dr */ { 0, BX_IA_CPUID
},
1143 /* 0F A3 /dr */ { 0, BX_IA_BT_EdGdR
},
1144 /* 0F A4 /dr */ { BxImmediate_Ib
, BX_IA_SHLD_EdGdR
},
1145 /* 0F A5 /dr */ { 0, BX_IA_SHLD_EdGdR
},
1146 /* 0F A6 /dr */ { 0, BX_IA_ERROR
},
1147 /* 0F A7 /dr */ { 0, BX_IA_ERROR
},
1148 /* 0F A8 /dr */ { 0, BX_IA_PUSH64_GS
},
1149 /* 0F A9 /dr */ { 0, BX_IA_POP64_GS
},
1150 /* 0F AA /dr */ { BxTraceEnd
, BX_IA_RSM
},
1151 /* 0F AB /dr */ { 0, BX_IA_BTS_EdGdR
},
1152 /* 0F AC /dr */ { BxImmediate_Ib
, BX_IA_SHRD_EdGdR
},
1153 /* 0F AD /dr */ { 0, BX_IA_SHRD_EdGdR
},
1154 /* 0F AE /dr */ { BxGroup15
, BX_IA_ERROR
, BxOpcodeInfoG15R
},
1155 /* 0F AF /dr */ { 0, BX_IA_IMUL_GdEdR
},
1156 /* 0F B0 /dr */ { 0, BX_IA_CMPXCHG_EbGbR
},
1157 /* 0F B1 /dr */ { 0, BX_IA_CMPXCHG_EdGdR
},
1158 /* 0F B2 /dr */ { 0, BX_IA_ERROR
}, // LSS
1159 /* 0F B3 /dr */ { 0, BX_IA_BTR_EdGdR
},
1160 /* 0F B4 /dr */ { 0, BX_IA_ERROR
}, // LFS
1161 /* 0F B5 /dr */ { 0, BX_IA_ERROR
}, // LFS
1162 /* 0F B6 /dr */ { 0, BX_IA_MOVZX_GdEbR
},
1163 /* 0F B7 /dr */ { 0, BX_IA_MOVZX_GdEwR
},
1164 /* 0F B8 /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fb8dR
},
1165 /* 0F B9 /dr */ { BxTraceEnd
, BX_IA_UD2B
},
1166 /* 0F BA /dr */ { BxGroup8
, BX_IA_ERROR
, BxOpcodeInfoG8EdIbR
},
1167 /* 0F BB /dr */ { 0, BX_IA_BTC_EdGdR
},
1168 /* 0F BC /dr */ { 0, BX_IA_BSF_GdEdR
},
1169 /* 0F BD /dr */ { 0, BX_IA_BSR_GdEdR
},
1170 /* 0F BE /dr */ { 0, BX_IA_MOVSX_GdEbR
},
1171 /* 0F BF /dr */ { 0, BX_IA_MOVSX_GdEwR
},
1172 /* 0F C0 /dr */ { 0, BX_IA_XADD_EbGbR
},
1173 /* 0F C1 /dr */ { 0, BX_IA_XADD_EdGdR
},
1174 /* 0F C2 /dr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_CMPPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc2
},
1175 /* 0F C3 /dr */ { 0, BX_IA_ERROR
}, // MOVNTI SSE group
1176 /* 0F C4 /dr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PINSRW_PqEwIb
, BxOpcodeGroupSSE_0fc4
},
1177 /* 0F C5 /dr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PEXTRW_GdPqIb
, BxOpcodeGroupSSE_0fc5R
},
1178 /* 0F C6 /dr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_SHUFPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc6
},
1179 /* 0F C7 /dr */ { 0, BX_IA_ERROR
}, // CMPXCHG8B G9 group
1180 /* 0F C8 /dr */ { 0, BX_IA_BSWAP_ERX
},
1181 /* 0F C9 /dr */ { 0, BX_IA_BSWAP_ERX
},
1182 /* 0F CA /dr */ { 0, BX_IA_BSWAP_ERX
},
1183 /* 0F CB /dr */ { 0, BX_IA_BSWAP_ERX
},
1184 /* 0F CC /dr */ { 0, BX_IA_BSWAP_ERX
},
1185 /* 0F CD /dr */ { 0, BX_IA_BSWAP_ERX
},
1186 /* 0F CE /dr */ { 0, BX_IA_BSWAP_ERX
},
1187 /* 0F CF /dr */ { 0, BX_IA_BSWAP_ERX
},
1188 /* 0F D0 /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd0
},
1189 /* 0F D1 /dr */ { BxPrefixSSE
, BX_IA_PSRLW_PqQq
, BxOpcodeGroupSSE_0fd1
},
1190 /* 0F D2 /dr */ { BxPrefixSSE
, BX_IA_PSRLD_PqQq
, BxOpcodeGroupSSE_0fd2
},
1191 /* 0F D3 /dr */ { BxPrefixSSE
, BX_IA_PSRLQ_PqQq
, BxOpcodeGroupSSE_0fd3
},
1192 /* 0F D4 /dr */ { BxPrefixSSE
, BX_IA_PADDQ_PqQq
, BxOpcodeGroupSSE_0fd4
},
1193 /* 0F D5 /dr */ { BxPrefixSSE
, BX_IA_PMULLW_PqQq
, BxOpcodeGroupSSE_0fd5
},
1194 /* 0F D6 /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd6
},
1195 /* 0F D7 /dr */ { BxPrefixSSE
, BX_IA_PMOVMSKB_GdPRq
, BxOpcodeGroupSSE_0fd7
},
1196 /* 0F D8 /dr */ { BxPrefixSSE
, BX_IA_PSUBUSB_PqQq
, BxOpcodeGroupSSE_0fd8
},
1197 /* 0F D9 /dr */ { BxPrefixSSE
, BX_IA_PSUBUSW_PqQq
, BxOpcodeGroupSSE_0fd9
},
1198 /* 0F DA /dr */ { BxPrefixSSE
, BX_IA_PMINUB_PqQq
, BxOpcodeGroupSSE_0fda
},
1199 /* 0F DB /dr */ { BxPrefixSSE
, BX_IA_PAND_PqQq
, BxOpcodeGroupSSE_0fdb
},
1200 /* 0F DC /dr */ { BxPrefixSSE
, BX_IA_PADDUSB_PqQq
, BxOpcodeGroupSSE_0fdc
},
1201 /* 0F DD /dr */ { BxPrefixSSE
, BX_IA_PADDUSW_PqQq
, BxOpcodeGroupSSE_0fdd
},
1202 /* 0F DE /dr */ { BxPrefixSSE
, BX_IA_PMAXUB_PqQq
, BxOpcodeGroupSSE_0fde
},
1203 /* 0F DF /dr */ { BxPrefixSSE
, BX_IA_PANDN_PqQq
, BxOpcodeGroupSSE_0fdf
},
1204 /* 0F E0 /dr */ { BxPrefixSSE
, BX_IA_PAVGB_PqQq
, BxOpcodeGroupSSE_0fe0
},
1205 /* 0F E1 /dr */ { BxPrefixSSE
, BX_IA_PSRAW_PqQq
, BxOpcodeGroupSSE_0fe1
},
1206 /* 0F E2 /dr */ { BxPrefixSSE
, BX_IA_PSRAD_PqQq
, BxOpcodeGroupSSE_0fe2
},
1207 /* 0F E3 /dr */ { BxPrefixSSE
, BX_IA_PAVGW_PqQq
, BxOpcodeGroupSSE_0fe3
},
1208 /* 0F E4 /dr */ { BxPrefixSSE
, BX_IA_PMULHUW_PqQq
, BxOpcodeGroupSSE_0fe4
},
1209 /* 0F E5 /dr */ { BxPrefixSSE
, BX_IA_PMULHW_PqQq
, BxOpcodeGroupSSE_0fe5
},
1210 /* 0F E6 /dr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fe6
},
1211 /* 0F E7 /dr */ { 0, BX_IA_ERROR
}, // MOVNTQ/MOVNTDQ SSE group
1212 /* 0F E8 /dr */ { BxPrefixSSE
, BX_IA_PSUBSB_PqQq
, BxOpcodeGroupSSE_0fe8
},
1213 /* 0F E9 /dr */ { BxPrefixSSE
, BX_IA_PSUBSW_PqQq
, BxOpcodeGroupSSE_0fe9
},
1214 /* 0F EA /dr */ { BxPrefixSSE
, BX_IA_PMINSW_PqQq
, BxOpcodeGroupSSE_0fea
},
1215 /* 0F EB /dr */ { BxPrefixSSE
, BX_IA_POR_PqQq
, BxOpcodeGroupSSE_0feb
},
1216 /* 0F EC /dr */ { BxPrefixSSE
, BX_IA_PADDSB_PqQq
, BxOpcodeGroupSSE_0fec
},
1217 /* 0F ED /dr */ { BxPrefixSSE
, BX_IA_PADDSW_PqQq
, BxOpcodeGroupSSE_0fed
},
1218 /* 0F EE /dr */ { BxPrefixSSE
, BX_IA_PMAXSW_PqQq
, BxOpcodeGroupSSE_0fee
},
1219 /* 0F EF /dr */ { BxPrefixSSE
, BX_IA_PXOR_PqQq
, BxOpcodeGroupSSE_0fef
},
1220 /* 0F F0 /dr */ { 0, BX_IA_ERROR
}, // LDDQU SSE group
1221 /* 0F F1 /dr */ { BxPrefixSSE
, BX_IA_PSLLW_PqQq
, BxOpcodeGroupSSE_0ff1
},
1222 /* 0F F2 /dr */ { BxPrefixSSE
, BX_IA_PSLLD_PqQq
, BxOpcodeGroupSSE_0ff2
},
1223 /* 0F F3 /dr */ { BxPrefixSSE
, BX_IA_PSLLQ_PqQq
, BxOpcodeGroupSSE_0ff3
},
1224 /* 0F F4 /dr */ { BxPrefixSSE
, BX_IA_PMULUDQ_PqQq
, BxOpcodeGroupSSE_0ff4
},
1225 /* 0F F5 /dr */ { BxPrefixSSE
, BX_IA_PMADDWD_PqQq
, BxOpcodeGroupSSE_0ff5
},
1226 /* 0F F6 /dr */ { BxPrefixSSE
, BX_IA_PSADBW_PqQq
, BxOpcodeGroupSSE_0ff6
},
1227 /* 0F F7 /dr */ { BxPrefixSSE
, BX_IA_MASKMOVQ_PqPRq
, BxOpcodeGroupSSE_0ff7R
},
1228 /* 0F F8 /dr */ { BxPrefixSSE
, BX_IA_PSUBB_PqQq
, BxOpcodeGroupSSE_0ff8
},
1229 /* 0F F9 /dr */ { BxPrefixSSE
, BX_IA_PSUBW_PqQq
, BxOpcodeGroupSSE_0ff9
},
1230 /* 0F FA /dr */ { BxPrefixSSE
, BX_IA_PSUBD_PqQq
, BxOpcodeGroupSSE_0ffa
},
1231 /* 0F FB /dr */ { BxPrefixSSE
, BX_IA_PSUBQ_PqQq
, BxOpcodeGroupSSE_0ffb
},
1232 /* 0F FC /dr */ { BxPrefixSSE
, BX_IA_PADDB_PqQq
, BxOpcodeGroupSSE_0ffc
},
1233 /* 0F FD /dr */ { BxPrefixSSE
, BX_IA_PADDW_PqQq
, BxOpcodeGroupSSE_0ffd
},
1234 /* 0F FE /dr */ { BxPrefixSSE
, BX_IA_PADDD_PqQq
, BxOpcodeGroupSSE_0ffe
},
1235 /* 0F FF /dr */ { 0, BX_IA_ERROR
},
1237 // 512 entries for 64bit operand size
1238 /* 00 /qr */ { BxArithDstRM
, BX_IA_ADD_GbEbR
},
1239 /* 01 /qr */ { BxArithDstRM
, BX_IA_ADD_GqEqR
},
1240 /* 02 /qr */ { 0, BX_IA_ADD_GbEbR
},
1241 /* 03 /qr */ { 0, BX_IA_ADD_GqEqR
},
1242 /* 04 /qr */ { BxImmediate_Ib
, BX_IA_ADD_ALIb
},
1243 /* 05 /qr */ { BxImmediate_Id
, BX_IA_ADD_RAXId
},
1244 /* 06 /qr */ { 0, BX_IA_ERROR
},
1245 /* 07 /qr */ { 0, BX_IA_ERROR
},
1246 /* 08 /qr */ { BxArithDstRM
, BX_IA_OR_GbEbR
},
1247 /* 09 /qr */ { BxArithDstRM
, BX_IA_OR_GqEqR
},
1248 /* 0A /qr */ { 0, BX_IA_OR_GbEbR
},
1249 /* 0B /qr */ { 0, BX_IA_OR_GqEqR
},
1250 /* 0C /qr */ { BxImmediate_Ib
, BX_IA_OR_ALIb
},
1251 /* 0D /qr */ { BxImmediate_Id
, BX_IA_OR_RAXId
},
1252 /* 0E /qr */ { 0, BX_IA_ERROR
},
1253 /* 0F /qr */ { 0, BX_IA_ERROR
}, // 2-byte escape
1254 /* 10 /qr */ { BxArithDstRM
, BX_IA_ADC_GbEbR
},
1255 /* 11 /qr */ { BxArithDstRM
, BX_IA_ADC_GqEqR
},
1256 /* 12 /qr */ { 0, BX_IA_ADC_GbEbR
},
1257 /* 13 /qr */ { 0, BX_IA_ADC_GqEqR
},
1258 /* 14 /qr */ { BxImmediate_Ib
, BX_IA_ADC_ALIb
},
1259 /* 15 /qr */ { BxImmediate_Id
, BX_IA_ADC_RAXId
},
1260 /* 16 /qr */ { 0, BX_IA_ERROR
},
1261 /* 17 /qr */ { 0, BX_IA_ERROR
},
1262 /* 18 /qr */ { BxArithDstRM
, BX_IA_SBB_GbEbR
},
1263 /* 19 /qr */ { BxArithDstRM
, BX_IA_SBB_GqEqR
},
1264 /* 1A /qr */ { 0, BX_IA_SBB_GbEbR
},
1265 /* 1B /qr */ { 0, BX_IA_SBB_GqEqR
},
1266 /* 1C /qr */ { BxImmediate_Ib
, BX_IA_SBB_ALIb
},
1267 /* 1D /qr */ { BxImmediate_Id
, BX_IA_SBB_RAXId
},
1268 /* 1E /qr */ { 0, BX_IA_ERROR
},
1269 /* 1F /qr */ { 0, BX_IA_ERROR
},
1270 /* 20 /qr */ { BxArithDstRM
, BX_IA_AND_GbEbR
},
1271 /* 21 /qr */ { BxArithDstRM
, BX_IA_AND_GqEqR
},
1272 /* 22 /qr */ { 0, BX_IA_AND_GbEbR
},
1273 /* 23 /qr */ { 0, BX_IA_AND_GqEqR
},
1274 /* 24 /qr */ { BxImmediate_Ib
, BX_IA_AND_ALIb
},
1275 /* 25 /qr */ { BxImmediate_Id
, BX_IA_AND_RAXId
},
1276 /* 26 /qr */ { 0, BX_IA_ERROR
}, // ES:
1277 /* 27 /qr */ { 0, BX_IA_ERROR
},
1278 /* 28 /qr */ { BxArithDstRM
, BX_IA_SUB_GbEbR
},
1279 /* 29 /qr */ { BxArithDstRM
, BX_IA_SUB_GqEqR
},
1280 /* 2A /qr */ { 0, BX_IA_SUB_GbEbR
},
1281 /* 2B /qr */ { 0, BX_IA_SUB_GqEqR
},
1282 /* 2C /qr */ { BxImmediate_Ib
, BX_IA_SUB_ALIb
},
1283 /* 2D /qr */ { BxImmediate_Id
, BX_IA_SUB_RAXId
},
1284 /* 2E /qr */ { 0, BX_IA_ERROR
}, // CS:
1285 /* 2F /qr */ { 0, BX_IA_ERROR
},
1286 /* 30 /qr */ { BxArithDstRM
, BX_IA_XOR_GbEbR
},
1287 /* 31 /qr */ { BxArithDstRM
, BX_IA_XOR_GqEqR
},
1288 /* 32 /qr */ { 0, BX_IA_XOR_GbEbR
},
1289 /* 33 /qr */ { 0, BX_IA_XOR_GqEqR
},
1290 /* 34 /qr */ { BxImmediate_Ib
, BX_IA_XOR_ALIb
},
1291 /* 35 /qr */ { BxImmediate_Id
, BX_IA_XOR_RAXId
},
1292 /* 36 /qr */ { 0, BX_IA_ERROR
}, // SS:
1293 /* 37 /qr */ { 0, BX_IA_ERROR
},
1294 /* 38 /qr */ { BxArithDstRM
, BX_IA_CMP_GbEbR
},
1295 /* 39 /qr */ { BxArithDstRM
, BX_IA_CMP_GqEqR
},
1296 /* 3A /qr */ { 0, BX_IA_CMP_GbEbR
},
1297 /* 3B /qr */ { 0, BX_IA_CMP_GqEqR
},
1298 /* 3C /qr */ { BxImmediate_Ib
, BX_IA_CMP_ALIb
},
1299 /* 3D /qr */ { BxImmediate_Id
, BX_IA_CMP_RAXId
},
1300 /* 3E /qr */ { 0, BX_IA_ERROR
}, // DS:
1301 /* 3F /qr */ { 0, BX_IA_ERROR
},
1302 /* 40 /qr */ { 0, BX_IA_ERROR
}, // REX:
1303 /* 41 /qr */ { 0, BX_IA_ERROR
}, // REX:
1304 /* 42 /qr */ { 0, BX_IA_ERROR
}, // REX:
1305 /* 43 /qr */ { 0, BX_IA_ERROR
}, // REX:
1306 /* 44 /qr */ { 0, BX_IA_ERROR
}, // REX:
1307 /* 45 /qr */ { 0, BX_IA_ERROR
}, // REX:
1308 /* 46 /qr */ { 0, BX_IA_ERROR
}, // REX:
1309 /* 47 /qr */ { 0, BX_IA_ERROR
}, // REX:
1310 /* 48 /qr */ { 0, BX_IA_ERROR
}, // REX:
1311 /* 49 /qr */ { 0, BX_IA_ERROR
}, // REX:
1312 /* 4A /qr */ { 0, BX_IA_ERROR
}, // REX:
1313 /* 4B /qr */ { 0, BX_IA_ERROR
}, // REX:
1314 /* 4C /qr */ { 0, BX_IA_ERROR
}, // REX:
1315 /* 4D /qr */ { 0, BX_IA_ERROR
}, // REX:
1316 /* 4E /qr */ { 0, BX_IA_ERROR
}, // REX:
1317 /* 4F /qr */ { 0, BX_IA_ERROR
}, // REX:
1318 /* 50 /qr */ { 0, BX_IA_PUSH_RRX
},
1319 /* 51 /qr */ { 0, BX_IA_PUSH_RRX
},
1320 /* 52 /qr */ { 0, BX_IA_PUSH_RRX
},
1321 /* 53 /qr */ { 0, BX_IA_PUSH_RRX
},
1322 /* 54 /qr */ { 0, BX_IA_PUSH_RRX
},
1323 /* 55 /qr */ { 0, BX_IA_PUSH_RRX
},
1324 /* 56 /qr */ { 0, BX_IA_PUSH_RRX
},
1325 /* 57 /qr */ { 0, BX_IA_PUSH_RRX
},
1326 /* 58 /qr */ { 0, BX_IA_POP_RRX
},
1327 /* 59 /qr */ { 0, BX_IA_POP_RRX
},
1328 /* 5A /qr */ { 0, BX_IA_POP_RRX
},
1329 /* 5B /qr */ { 0, BX_IA_POP_RRX
},
1330 /* 5C /qr */ { 0, BX_IA_POP_RRX
},
1331 /* 5D /qr */ { 0, BX_IA_POP_RRX
},
1332 /* 5E /qr */ { 0, BX_IA_POP_RRX
},
1333 /* 5F /qr */ { 0, BX_IA_POP_RRX
},
1334 /* 60 /qr */ { 0, BX_IA_ERROR
},
1335 /* 61 /qr */ { 0, BX_IA_ERROR
},
1336 /* 62 /qr */ { 0, BX_IA_ERROR
},
1337 /* 63 /qr */ { 0, BX_IA_MOVSX_GqEdR
},
1338 /* 64 /qr */ { 0, BX_IA_ERROR
}, // FS:
1339 /* 65 /qr */ { 0, BX_IA_ERROR
}, // GS:
1340 /* 66 /qr */ { 0, BX_IA_ERROR
}, // OS:
1341 /* 67 /qr */ { 0, BX_IA_ERROR
}, // AS:
1342 /* 68 /qr */ { BxImmediate_Id
, BX_IA_PUSH64_Id
},
1343 /* 69 /qr */ { BxImmediate_Id
, BX_IA_IMUL_GqEqIdR
},
1344 /* 6A /qr */ { BxImmediate_Ib_SE
, BX_IA_PUSH64_Id
},
1345 /* 6B /qr */ { BxImmediate_Ib_SE
, BX_IA_IMUL_GqEqIdR
},
1346 /* 6C /qr */ { 0, BX_IA_REP_INSB_YbDX
},
1347 /* 6D /qr */ { 0, BX_IA_REP_INSD_YdDX
},
1348 /* 6E /qr */ { 0, BX_IA_REP_OUTSB_DXXb
},
1349 /* 6F /qr */ { 0, BX_IA_REP_OUTSD_DXXd
},
1350 /* 70 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JO_Jq
},
1351 /* 71 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNO_Jq
},
1352 /* 72 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JB_Jq
},
1353 /* 73 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNB_Jq
},
1354 /* 74 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JZ_Jq
},
1355 /* 75 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNZ_Jq
},
1356 /* 76 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JBE_Jq
},
1357 /* 77 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNBE_Jq
},
1358 /* 78 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JS_Jq
},
1359 /* 79 /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNS_Jq
},
1360 /* 7A /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JP_Jq
},
1361 /* 7B /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNP_Jq
},
1362 /* 7C /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JL_Jq
},
1363 /* 7D /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNL_Jq
},
1364 /* 7E /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JLE_Jq
},
1365 /* 7F /qr */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNLE_Jq
},
1366 /* 80 /qr */ { BxGroup1
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG1EbIbR
},
1367 /* 81 /qr */ { BxGroup1
| BxImmediate_Id
, BX_IA_ERROR
, BxOpcodeInfo64G1EqR
},
1368 /* 82 /qr */ { 0, BX_IA_ERROR
},
1369 /* 83 /qr */ { BxGroup1
| BxImmediate_Ib_SE
, BX_IA_ERROR
, BxOpcodeInfo64G1EqR
},
1370 /* 84 /qr */ { 0, BX_IA_TEST_EbGbR
},
1371 /* 85 /qr */ { 0, BX_IA_TEST_EqGqR
},
1372 /* 86 /qr */ { 0, BX_IA_XCHG_EbGbR
},
1373 /* 87 /qr */ { 0, BX_IA_XCHG_EqGqR
},
1374 /* 88 /qr */ { BxArithDstRM
, BX_IA_MOV_GbEbR
},
1375 /* 89 /qr */ { BxArithDstRM
, BX_IA_MOV_GqEqR
},
1376 /* 8A /qr */ { 0, BX_IA_MOV_GbEbR
},
1377 /* 8B /qr */ { 0, BX_IA_MOV_GqEqR
},
1378 /* 8C /qr */ { 0, BX_IA_MOV_EwSwR
},
1379 /* 8D /qr */ { 0, BX_IA_ERROR
}, // LEA
1380 /* 8E /qr */ { 0, BX_IA_MOV_SwEw
},
1381 /* 8F /qr */ { BxGroup1A
, BX_IA_ERROR
, BxOpcodeInfo64G1AEqR
},
1382 /* 90 /qr */ { 0, BX_IA_XCHG_RRXRAX
}, // handles XCHG R8, RAX
1383 /* 91 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1384 /* 92 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1385 /* 93 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1386 /* 94 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1387 /* 95 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1388 /* 96 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1389 /* 97 /qr */ { 0, BX_IA_XCHG_RRXRAX
},
1390 /* 98 /qr */ { 0, BX_IA_CDQE
},
1391 /* 99 /qr */ { 0, BX_IA_CQO
},
1392 /* 9A /qr */ { 0, BX_IA_ERROR
},
1393 /* 9B /qr */ { 0, BX_IA_FWAIT
},
1394 /* 9C /qr */ { 0, BX_IA_PUSHF_Fq
},
1395 /* 9D /qr */ { 0, BX_IA_POPF_Fq
},
1396 /* 9E /qr */ { 0, BX_IA_SAHF
},
1397 /* 9F /qr */ { 0, BX_IA_LAHF
},
1398 /* A0 /qr */ { BxImmediate_O
, BX_IA_MOV_ALOq
},
1399 /* A1 /qr */ { BxImmediate_O
, BX_IA_MOV_RAXOq
},
1400 /* A2 /qr */ { BxImmediate_O
, BX_IA_MOV_OqAL
},
1401 /* A3 /qr */ { BxImmediate_O
, BX_IA_MOV_OqRAX
},
1402 /* A4 /qr */ { 0, BX_IA_REP_MOVSB_XbYb
},
1403 /* A5 /qr */ { 0, BX_IA_REP_MOVSQ_XqYq
},
1404 /* A6 /qr */ { 0, BX_IA_REP_CMPSB_XbYb
},
1405 /* A7 /qr */ { 0, BX_IA_REP_CMPSQ_XqYq
},
1406 /* A8 /qr */ { BxImmediate_Ib
, BX_IA_TEST_ALIb
},
1407 /* A9 /qr */ { BxImmediate_Id
, BX_IA_TEST_RAXId
},
1408 /* AA /qr */ { 0, BX_IA_REP_STOSB_YbAL
},
1409 /* AB /qr */ { 0, BX_IA_REP_STOSQ_YqRAX
},
1410 /* AC /qr */ { 0, BX_IA_REP_LODSB_ALXb
},
1411 /* AD /qr */ { 0, BX_IA_REP_LODSQ_RAXXq
},
1412 /* AE /qr */ { 0, BX_IA_REP_SCASB_ALXb
},
1413 /* AF /qr */ { 0, BX_IA_REP_SCASQ_RAXXq
},
1414 /* B0 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1415 /* B1 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1416 /* B2 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1417 /* B3 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1418 /* B4 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1419 /* B5 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1420 /* B6 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1421 /* B7 /qr */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1422 /* B8 /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1423 /* B9 /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1424 /* BA /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1425 /* BB /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1426 /* BC /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1427 /* BD /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1428 /* BE /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1429 /* BF /qr */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
1430 /* C0 /qr */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
1431 /* C1 /qr */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfo64G2EqR
},
1432 /* C2 /qr */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETnear64_Iw
},
1433 /* C3 /qr */ { BxTraceEnd
, BX_IA_RETnear64
},
1434 /* C4 /qr */ { 0, BX_IA_ERROR
},
1435 /* C5 /qr */ { 0, BX_IA_ERROR
},
1436 /* C6 /qr */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EbR
},
1437 /* C7 /qr */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfo64G11EqR
},
1438 /* C8 /qr */ { BxImmediate_IwIb
, BX_IA_ENTER64_IwIb
},
1439 /* C9 /qr */ { 0, BX_IA_LEAVE64
},
1440 /* CA /qr */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETfar64_Iw
},
1441 /* CB /qr */ { BxTraceEnd
, BX_IA_RETfar64
},
1442 /* CC /qr */ { BxTraceEnd
, BX_IA_INT3
},
1443 /* CD /qr */ { BxImmediate_Ib
| BxTraceEnd
, BX_IA_INT_Ib
},
1444 /* CE /qr */ { 0, BX_IA_ERROR
},
1445 /* CF /qr */ { BxTraceEnd
, BX_IA_IRET64
},
1446 /* D0 /qr */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
1447 /* D1 /qr */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfo64G2EqR
},
1448 /* D2 /qr */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
1449 /* D3 /qr */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfo64G2EqR
},
1450 /* D4 /qr */ { 0, BX_IA_ERROR
},
1451 /* D5 /qr */ { 0, BX_IA_ERROR
},
1452 /* D6 /qr */ { 0, BX_IA_ERROR
},
1453 /* D7 /qr */ { 0, BX_IA_XLAT
},
1454 /* D8 /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointD8
},
1455 /* D9 /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointD9
},
1456 /* DA /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDA
},
1457 /* DB /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDB
},
1458 /* DC /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDC
},
1459 /* DD /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDD
},
1460 /* DE /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDE
},
1461 /* DF /qr */ { BxFPEscape
, BX_IA_ERROR
, BxOpcodeInfo_FloatingPointDF
},
1462 /* E0 /qr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPNE64_Jb
},
1463 /* E1 /qr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPE64_Jb
},
1464 /* E2 /qr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOP64_Jb
},
1465 /* E3 /qr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JRCXZ_Jb
},
1466 /* E4 /qr */ { BxImmediate_Ib
, BX_IA_IN_ALIb
},
1467 /* E5 /qr */ { BxImmediate_Ib
, BX_IA_IN_EAXIb
},
1468 /* E6 /qr */ { BxImmediate_Ib
, BX_IA_OUT_IbAL
},
1469 /* E7 /qr */ { BxImmediate_Ib
, BX_IA_OUT_IbEAX
},
1470 /* E8 /qr */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_CALL_Jq
},
1471 /* E9 /qr */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_JMP_Jq
},
1472 /* EA /qr */ { 0, BX_IA_ERROR
},
1473 /* EB /qr */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JMP_Jq
},
1474 /* EC /qr */ { 0, BX_IA_IN_ALDX
},
1475 /* ED /qr */ { 0, BX_IA_IN_EAXDX
},
1476 /* EE /qr */ { 0, BX_IA_OUT_DXAL
},
1477 /* EF /qr */ { 0, BX_IA_OUT_DXEAX
},
1478 /* F0 /qr */ { 0, BX_IA_ERROR
}, // LOCK:
1479 /* F1 /qr */ { BxTraceEnd
, BX_IA_INT1
},
1480 /* F2 /qr */ { 0, BX_IA_ERROR
}, // REPNE/REPNZ
1481 /* F3 /qr */ { 0, BX_IA_ERROR
}, // REP,REPE/REPZ
1482 /* F4 /qr */ { BxTraceEnd
, BX_IA_HLT
},
1483 /* F5 /qr */ { 0, BX_IA_CMC
},
1484 /* F6 /qr */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EbR
},
1485 /* F7 /qr */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfo64G3EqR
},
1486 /* F8 /qr */ { 0, BX_IA_CLC
},
1487 /* F9 /qr */ { 0, BX_IA_STC
},
1488 /* FA /qr */ { 0, BX_IA_CLI
},
1489 /* FB /qr */ { 0, BX_IA_STI
},
1490 /* FC /qr */ { 0, BX_IA_CLD
},
1491 /* FD /qr */ { 0, BX_IA_STD
},
1492 /* FE /qr */ { BxGroup4
, BX_IA_ERROR
, BxOpcodeInfoG4R
},
1493 /* FF /qr */ { BxGroup5
, BX_IA_ERROR
, BxOpcodeInfo64G5qR
},
1495 /* 0F 00 /qr */ { BxGroup6
, BX_IA_ERROR
, BxOpcodeInfoG6
},
1496 /* 0F 01 /qr */ { BxGroup7
, BX_IA_ERROR
, BxOpcodeInfo64G7R
},
1497 /* 0F 02 /qr */ { 0, BX_IA_LAR_GvEw
},
1498 /* 0F 03 /qr */ { 0, BX_IA_LSL_GvEw
},
1499 /* 0F 04 /qr */ { 0, BX_IA_ERROR
},
1500 /* 0F 05 /qr */ { BxTraceEnd
, BX_IA_SYSCALL
},
1501 /* 0F 06 /qr */ { 0, BX_IA_CLTS
},
1502 /* 0F 07 /qr */ { BxTraceEnd
, BX_IA_SYSRET
},
1503 /* 0F 08 /qr */ { BxTraceEnd
, BX_IA_INVD
},
1504 /* 0F 09 /qr */ { BxTraceEnd
, BX_IA_WBINVD
},
1505 /* 0F 0A /qr */ { 0, BX_IA_ERROR
},
1506 /* 0F 0B /qr */ { BxTraceEnd
, BX_IA_UD2A
},
1507 /* 0F 0C /qr */ { 0, BX_IA_ERROR
},
1508 /* 0F 0D /qr */ { 0, BX_IA_NOP
}, // 3DNow! PREFETCH on AMD, NOP on Intel
1509 /* 0F 0E /qr */ { 0, BX_IA_FEMMS
}, // 3DNow! FEMMS
1510 #if BX_SUPPORT_3DNOW
1511 /* 0F 0F /qr */ { BxImmediate_Ib
, BX_IA_ERROR
, Bx3DNowOpcodeInfo
},
1513 /* 0F 0F /qr */ { 0, BX_IA_ERROR
},
1515 /* 0F 10 /qr */ { BxPrefixSSE
, BX_IA_MOVUPS_VpsWps
, BxOpcodeGroupSSE_0f10
},
1516 /* 0F 11 /qr */ { BxPrefixSSE
, BX_IA_MOVUPS_WpsVps
, BxOpcodeGroupSSE_0f11
},
1517 /* 0F 12 /qr */ { BxPrefixSSE
, BX_IA_MOVLPS_VpsMq
, BxOpcodeGroupSSE_0f12
},
1518 /* 0F 13 /qr */ { 0, BX_IA_ERROR
}, // MOVLPS/PD SSE group
1519 /* 0F 14 /qr */ { BxPrefixSSE
, BX_IA_UNPCKLPS_VpsWdq
, BxOpcodeGroupSSE_0f14
},
1520 /* 0F 15 /qr */ { BxPrefixSSE
, BX_IA_UNPCKHPS_VpsWdq
, BxOpcodeGroupSSE_0f15
},
1521 /* 0F 16 /qr */ { BxPrefixSSE
, BX_IA_MOVHPS_VpsMq
, BxOpcodeGroupSSE_0f16
},
1522 /* 0F 17 /qr */ { 0, BX_IA_ERROR
}, // MOHLPS/PD SSE group
1523 /* 0F 18 /qr */ { 0, BX_IA_NOP
}, // PREFETCH HINT
1524 /* 0F 19 /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1525 /* 0F 1A /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1526 /* 0F 1B /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1527 /* 0F 1C /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1528 /* 0F 1D /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1529 /* 0F 1E /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1530 /* 0F 1F /qr */ { 0, BX_IA_NOP
}, // multi-byte NOP
1531 /* 0F 20 /qr */ { 0, BX_IA_MOV_RqCq
},
1532 /* 0F 21 /qr */ { 0, BX_IA_MOV_RqDq
},
1533 /* 0F 22 /qr */ { BxTraceEnd
, BX_IA_MOV_CqRq
},
1534 /* 0F 23 /qr */ { BxTraceEnd
, BX_IA_MOV_DqRq
},
1535 /* 0F 24 /qr */ { 0, BX_IA_ERROR
},
1536 /* 0F 25 /qr */ { 0, BX_IA_ERROR
},
1537 /* 0F 26 /qr */ { 0, BX_IA_ERROR
},
1538 /* 0F 27 /qr */ { 0, BX_IA_ERROR
},
1539 /* 0F 28 /qr */ { BxPrefixSSE
, BX_IA_MOVAPS_VpsWps
, BxOpcodeGroupSSE_0f28
},
1540 /* 0F 29 /qr */ { BxPrefixSSE
, BX_IA_MOVAPS_WpsVps
, BxOpcodeGroupSSE_0f29
},
1541 /* 0F 2A /qr */ { BxPrefixSSE
, BX_IA_CVTPI2PS_VpsQq
, BxOpcodeGroupSSE_0f2a
},
1542 /* 0F 2B /qr */ { 0, BX_IA_ERROR
}, // MOVNTPS/PD/SS/SD
1543 /* 0F 2C /qr */ { BxPrefixSSE
, BX_IA_CVTTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2c
},
1544 /* 0F 2D /qr */ { BxPrefixSSE
, BX_IA_CVTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2d
},
1545 /* 0F 2E /qr */ { BxPrefixSSE
, BX_IA_UCOMISS_VssWss
, BxOpcodeGroupSSE_0f2e
},
1546 /* 0F 2F /qr */ { BxPrefixSSE
, BX_IA_COMISS_VpsWps
, BxOpcodeGroupSSE_0f2f
},
1547 /* 0F 30 /qr */ { 0, BX_IA_WRMSR
},
1548 /* 0F 31 /qr */ { 0, BX_IA_RDTSC
},
1549 /* 0F 32 /qr */ { 0, BX_IA_RDMSR
},
1550 /* 0F 33 /qr */ { 0, BX_IA_RDPMC
},
1551 /* 0F 34 /qr */ { 0, BX_IA_SYSENTER
},
1552 /* 0F 35 /qr */ { 0, BX_IA_SYSEXIT
},
1553 /* 0F 36 /qr */ { 0, BX_IA_ERROR
},
1554 /* 0F 37 /qr */ { 0, BX_IA_ERROR
},
1555 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
1556 /* 0F 38 /qr */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f38
}, // 3-byte escape
1558 /* 0F 38 /qr */ { 0, BX_IA_ERROR
},
1560 /* 0F 39 /qr */ { 0, BX_IA_ERROR
},
1561 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
1562 /* 0F 3A /qr */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f3a
}, // 3-byte escape
1564 /* 0F 3A /qr */ { 0, BX_IA_ERROR
},
1566 /* 0F 3B /qr */ { 0, BX_IA_ERROR
},
1567 /* 0F 3C /qr */ { 0, BX_IA_ERROR
},
1568 /* 0F 3D /qr */ { 0, BX_IA_ERROR
},
1569 /* 0F 3E /qr */ { 0, BX_IA_ERROR
},
1570 /* 0F 3F /qr */ { 0, BX_IA_ERROR
},
1571 /* 0F 40 /qr */ { 0, BX_IA_CMOVO_GqEqR
},
1572 /* 0F 41 /qr */ { 0, BX_IA_CMOVNO_GqEqR
},
1573 /* 0F 42 /qr */ { 0, BX_IA_CMOVB_GqEqR
},
1574 /* 0F 43 /qr */ { 0, BX_IA_CMOVNB_GqEqR
},
1575 /* 0F 44 /qr */ { 0, BX_IA_CMOVZ_GqEqR
},
1576 /* 0F 45 /qr */ { 0, BX_IA_CMOVNZ_GqEqR
},
1577 /* 0F 46 /qr */ { 0, BX_IA_CMOVBE_GqEqR
},
1578 /* 0F 47 /qr */ { 0, BX_IA_CMOVNBE_GqEqR
},
1579 /* 0F 48 /qr */ { 0, BX_IA_CMOVS_GqEqR
},
1580 /* 0F 49 /qr */ { 0, BX_IA_CMOVNS_GqEqR
},
1581 /* 0F 4A /qr */ { 0, BX_IA_CMOVP_GqEqR
},
1582 /* 0F 4B /qr */ { 0, BX_IA_CMOVNP_GqEqR
},
1583 /* 0F 4C /qr */ { 0, BX_IA_CMOVL_GqEqR
},
1584 /* 0F 4D /qr */ { 0, BX_IA_CMOVNL_GqEqR
},
1585 /* 0F 4E /qr */ { 0, BX_IA_CMOVLE_GqEqR
},
1586 /* 0F 4F /qr */ { 0, BX_IA_CMOVNLE_GqEqR
},
1587 /* 0F 50 /qr */ { BxPrefixSSE
, BX_IA_MOVMSKPS_GdVRps
, BxOpcodeGroupSSE_0f50
},
1588 /* 0F 51 /qr */ { BxPrefixSSE
, BX_IA_SQRTPS_VpsWps
, BxOpcodeGroupSSE_0f51
},
1589 /* 0F 52 /qr */ { BxPrefixSSE
, BX_IA_RSQRTPS_VpsWps
, BxOpcodeGroupSSE_0f52
},
1590 /* 0F 53 /qr */ { BxPrefixSSE
, BX_IA_RCPPS_VpsWps
, BxOpcodeGroupSSE_0f53
},
1591 /* 0F 54 /qr */ { BxPrefixSSE
, BX_IA_ANDPS_VpsWps
, BxOpcodeGroupSSE_0f54
},
1592 /* 0F 55 /qr */ { BxPrefixSSE
, BX_IA_ANDNPS_VpsWps
, BxOpcodeGroupSSE_0f55
},
1593 /* 0F 56 /qr */ { BxPrefixSSE
, BX_IA_ORPS_VpsWps
, BxOpcodeGroupSSE_0f56
},
1594 /* 0F 57 /qr */ { BxPrefixSSE
, BX_IA_XORPS_VpsWps
, BxOpcodeGroupSSE_0f57
},
1595 /* 0F 58 /qr */ { BxPrefixSSE
, BX_IA_ADDPS_VpsWps
, BxOpcodeGroupSSE_0f58
},
1596 /* 0F 59 /qr */ { BxPrefixSSE
, BX_IA_MULPS_VpsWps
, BxOpcodeGroupSSE_0f59
},
1597 /* 0F 5A /qr */ { BxPrefixSSE
, BX_IA_CVTPS2PD_VpsWps
, BxOpcodeGroupSSE_0f5a
},
1598 /* 0F 5B /qr */ { BxPrefixSSE
, BX_IA_CVTDQ2PS_VpsWdq
, BxOpcodeGroupSSE_0f5b
},
1599 /* 0F 5C /qr */ { BxPrefixSSE
, BX_IA_SUBPS_VpsWps
, BxOpcodeGroupSSE_0f5c
},
1600 /* 0F 5D /qr */ { BxPrefixSSE
, BX_IA_MINPS_VpsWps
, BxOpcodeGroupSSE_0f5d
},
1601 /* 0F 5E /qr */ { BxPrefixSSE
, BX_IA_DIVPS_VpsWps
, BxOpcodeGroupSSE_0f5e
},
1602 /* 0F 5F /qr */ { BxPrefixSSE
, BX_IA_MAXPS_VpsWps
, BxOpcodeGroupSSE_0f5f
},
1603 /* 0F 60 /qr */ { BxPrefixSSE
, BX_IA_PUNPCKLBW_PqQd
, BxOpcodeGroupSSE_0f60
},
1604 /* 0F 61 /qr */ { BxPrefixSSE
, BX_IA_PUNPCKLWD_PqQd
, BxOpcodeGroupSSE_0f61
},
1605 /* 0F 62 /qr */ { BxPrefixSSE
, BX_IA_PUNPCKLDQ_PqQd
, BxOpcodeGroupSSE_0f62
},
1606 /* 0F 63 /qr */ { BxPrefixSSE
, BX_IA_PACKSSWB_PqQq
, BxOpcodeGroupSSE_0f63
},
1607 /* 0F 64 /qr */ { BxPrefixSSE
, BX_IA_PCMPGTB_PqQq
, BxOpcodeGroupSSE_0f64
},
1608 /* 0F 65 /qr */ { BxPrefixSSE
, BX_IA_PCMPGTW_PqQq
, BxOpcodeGroupSSE_0f65
},
1609 /* 0F 66 /qr */ { BxPrefixSSE
, BX_IA_PCMPGTD_PqQq
, BxOpcodeGroupSSE_0f66
},
1610 /* 0F 67 /qr */ { BxPrefixSSE
, BX_IA_PACKUSWB_PqQq
, BxOpcodeGroupSSE_0f67
},
1611 /* 0F 68 /qr */ { BxPrefixSSE
, BX_IA_PUNPCKHBW_PqQq
, BxOpcodeGroupSSE_0f68
},
1612 /* 0F 69 /qr */ { BxPrefixSSE
, BX_IA_PUNPCKHWD_PqQq
, BxOpcodeGroupSSE_0f69
},
1613 /* 0F 6A /qr */ { BxPrefixSSE
, BX_IA_PUNPCKHDQ_PqQq
, BxOpcodeGroupSSE_0f6a
},
1614 /* 0F 6B /qr */ { BxPrefixSSE
, BX_IA_PACKSSDW_PqQq
, BxOpcodeGroupSSE_0f6b
},
1615 /* 0F 6C /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6c
},
1616 /* 0F 6D /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6d
},
1617 /* 0F 6E /qr */ { BxPrefixSSE
, BX_IA_MOVQ_PqEq
, BxOpcodeGroupSSE_0f6eQ
},
1618 /* 0F 6F /qr */ { BxPrefixSSE
, BX_IA_MOVQ_PqQq
, BxOpcodeGroupSSE_0f6f
},
1619 /* 0F 70 /qr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PSHUFW_PqQqIb
, BxOpcodeGroupSSE_0f70
},
1620 /* 0F 71 /qr */ { BxGroup12
, BX_IA_ERROR
, BxOpcodeInfoG12R
},
1621 /* 0F 72 /qr */ { BxGroup13
, BX_IA_ERROR
, BxOpcodeInfoG13R
},
1622 /* 0F 73 /qr */ { BxGroup14
, BX_IA_ERROR
, BxOpcodeInfoG14R
},
1623 /* 0F 74 /qr */ { BxPrefixSSE
, BX_IA_PCMPEQB_PqQq
, BxOpcodeGroupSSE_0f74
},
1624 /* 0F 75 /qr */ { BxPrefixSSE
, BX_IA_PCMPEQW_PqQq
, BxOpcodeGroupSSE_0f75
},
1625 /* 0F 76 /qr */ { BxPrefixSSE
, BX_IA_PCMPEQD_PqQq
, BxOpcodeGroupSSE_0f76
},
1626 /* 0F 77 /qr */ { BxPrefixSSE
, BX_IA_EMMS
, BxOpcodeGroupSSE_ERR
},
1627 /* 0F 78 /qr */ { 0, BX_IA_ERROR
},
1628 /* 0F 79 /qr */ { 0, BX_IA_ERROR
},
1629 /* 0F 7A /qr */ { 0, BX_IA_ERROR
},
1630 /* 0F 7B /qr */ { 0, BX_IA_ERROR
},
1631 /* 0F 7C /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7c
},
1632 /* 0F 7D /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7d
},
1633 /* 0F 7E /qr */ { BxPrefixSSE
, BX_IA_MOVQ_EqPq
, BxOpcodeGroupSSE_0f7eQ
},
1634 /* 0F 7F /qr */ { BxPrefixSSE
, BX_IA_MOVQ_QqPq
, BxOpcodeGroupSSE_0f7f
},
1635 /* 0F 80 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JO_Jq
},
1636 /* 0F 81 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNO_Jq
},
1637 /* 0F 82 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JB_Jq
},
1638 /* 0F 83 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNB_Jq
},
1639 /* 0F 84 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JZ_Jq
},
1640 /* 0F 85 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNZ_Jq
},
1641 /* 0F 86 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JBE_Jq
},
1642 /* 0F 87 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNBE_Jq
},
1643 /* 0F 88 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JS_Jq
},
1644 /* 0F 89 /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNS_Jq
},
1645 /* 0F 8A /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JP_Jq
},
1646 /* 0F 8B /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNP_Jq
},
1647 /* 0F 8C /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JL_Jq
},
1648 /* 0F 8D /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNL_Jq
},
1649 /* 0F 8E /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JLE_Jq
},
1650 /* 0F 8F /qr */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNLE_Jq
},
1651 /* 0F 90 /qr */ { 0, BX_IA_SETO_EbR
},
1652 /* 0F 91 /qr */ { 0, BX_IA_SETNO_EbR
},
1653 /* 0F 92 /qr */ { 0, BX_IA_SETB_EbR
},
1654 /* 0F 93 /qr */ { 0, BX_IA_SETNB_EbR
},
1655 /* 0F 94 /qr */ { 0, BX_IA_SETZ_EbR
},
1656 /* 0F 95 /qr */ { 0, BX_IA_SETNZ_EbR
},
1657 /* 0F 96 /qr */ { 0, BX_IA_SETBE_EbR
},
1658 /* 0F 97 /qr */ { 0, BX_IA_SETNBE_EbR
},
1659 /* 0F 98 /qr */ { 0, BX_IA_SETS_EbR
},
1660 /* 0F 99 /qr */ { 0, BX_IA_SETNS_EbR
},
1661 /* 0F 9A /qr */ { 0, BX_IA_SETP_EbR
},
1662 /* 0F 9B /qr */ { 0, BX_IA_SETNP_EbR
},
1663 /* 0F 9C /qr */ { 0, BX_IA_SETL_EbR
},
1664 /* 0F 9D /qr */ { 0, BX_IA_SETNL_EbR
},
1665 /* 0F 9E /qr */ { 0, BX_IA_SETLE_EbR
},
1666 /* 0F 9F /qr */ { 0, BX_IA_SETNLE_EbR
},
1667 /* 0F A0 /qr */ { 0, BX_IA_PUSH64_FS
},
1668 /* 0F A1 /qr */ { 0, BX_IA_POP64_FS
},
1669 /* 0F A2 /qr */ { 0, BX_IA_CPUID
},
1670 /* 0F A3 /qr */ { 0, BX_IA_BT_EqGqR
},
1671 /* 0F A4 /qr */ { BxImmediate_Ib
, BX_IA_SHLD_EqGqR
},
1672 /* 0F A5 /qr */ { 0, BX_IA_SHLD_EqGqR
},
1673 /* 0F A6 /qr */ { 0, BX_IA_ERROR
},
1674 /* 0F A7 /qr */ { 0, BX_IA_ERROR
},
1675 /* 0F A8 /qr */ { 0, BX_IA_PUSH64_GS
},
1676 /* 0F A9 /qr */ { 0, BX_IA_POP64_GS
},
1677 /* 0F AA /qr */ { BxTraceEnd
, BX_IA_RSM
},
1678 /* 0F AB /qr */ { 0, BX_IA_BTS_EqGqR
},
1679 /* 0F AC /qr */ { BxImmediate_Ib
, BX_IA_SHRD_EqGqR
},
1680 /* 0F AD /qr */ { 0, BX_IA_SHRD_EqGqR
},
1681 /* 0F AE /qr */ { BxGroup15
, BX_IA_ERROR
, BxOpcodeInfoG15R
},
1682 /* 0F AF /qr */ { 0, BX_IA_IMUL_GqEqR
},
1683 /* 0F B0 /qr */ { 0, BX_IA_CMPXCHG_EbGbR
},
1684 /* 0F B1 /qr */ { 0, BX_IA_CMPXCHG_EqGqR
},
1685 /* 0F B2 /qr */ { 0, BX_IA_ERROR
}, // LSS
1686 /* 0F B3 /qr */ { 0, BX_IA_BTR_EqGqR
},
1687 /* 0F B4 /qr */ { 0, BX_IA_ERROR
}, // LFS
1688 /* 0F B5 /qr */ { 0, BX_IA_ERROR
}, // LGS
1689 /* 0F B6 /qr */ { 0, BX_IA_MOVZX_GqEbR
},
1690 /* 0F B7 /qr */ { 0, BX_IA_MOVZX_GqEwR
},
1691 /* 0F B8 /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fb8qR
},
1692 /* 0F B9 /qr */ { BxTraceEnd
, BX_IA_UD2B
},
1693 /* 0F BA /qr */ { BxGroup8
, BX_IA_ERROR
, BxOpcodeInfo64G8EqIbR
},
1694 /* 0F BB /qr */ { 0, BX_IA_BTC_EqGqR
},
1695 /* 0F BC /qr */ { 0, BX_IA_BSF_GqEqR
},
1696 /* 0F BD /qr */ { 0, BX_IA_BSR_GqEqR
},
1697 /* 0F BE /qr */ { 0, BX_IA_MOVSX_GqEbR
},
1698 /* 0F BF /qr */ { 0, BX_IA_MOVSX_GqEwR
},
1699 /* 0F C0 /qr */ { 0, BX_IA_XADD_EbGbR
},
1700 /* 0F C1 /qr */ { 0, BX_IA_XADD_EqGqR
},
1701 /* 0F C2 /qr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_CMPPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc2
},
1702 /* 0F C3 /qr */ { 0, BX_IA_ERROR
}, // MOVNTI SSE group
1703 /* 0F C4 /qr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PINSRW_PqEwIb
, BxOpcodeGroupSSE_0fc4
},
1704 /* 0F C5 /qr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PEXTRW_GdPqIb
, BxOpcodeGroupSSE_0fc5R
},
1705 /* 0F C6 /qr */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_SHUFPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc6
},
1706 /* 0F C7 /qr */ { 0, BX_IA_ERROR
}, // CMPXCHG16B G9 group
1707 /* 0F C8 /qr */ { 0, BX_IA_BSWAP_RRX
},
1708 /* 0F C9 /qr */ { 0, BX_IA_BSWAP_RRX
},
1709 /* 0F CA /qr */ { 0, BX_IA_BSWAP_RRX
},
1710 /* 0F CB /qr */ { 0, BX_IA_BSWAP_RRX
},
1711 /* 0F CC /qr */ { 0, BX_IA_BSWAP_RRX
},
1712 /* 0F CD /qr */ { 0, BX_IA_BSWAP_RRX
},
1713 /* 0F CE /qr */ { 0, BX_IA_BSWAP_RRX
},
1714 /* 0F CF /qr */ { 0, BX_IA_BSWAP_RRX
},
1715 /* 0F D0 /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd0
},
1716 /* 0F D1 /qr */ { BxPrefixSSE
, BX_IA_PSRLW_PqQq
, BxOpcodeGroupSSE_0fd1
},
1717 /* 0F D2 /qr */ { BxPrefixSSE
, BX_IA_PSRLD_PqQq
, BxOpcodeGroupSSE_0fd2
},
1718 /* 0F D3 /qr */ { BxPrefixSSE
, BX_IA_PSRLQ_PqQq
, BxOpcodeGroupSSE_0fd3
},
1719 /* 0F D4 /qr */ { BxPrefixSSE
, BX_IA_PADDQ_PqQq
, BxOpcodeGroupSSE_0fd4
},
1720 /* 0F D5 /qr */ { BxPrefixSSE
, BX_IA_PMULLW_PqQq
, BxOpcodeGroupSSE_0fd5
},
1721 /* 0F D6 /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd6
},
1722 /* 0F D7 /qr */ { BxPrefixSSE
, BX_IA_PMOVMSKB_GdPRq
, BxOpcodeGroupSSE_0fd7
},
1723 /* 0F D8 /qr */ { BxPrefixSSE
, BX_IA_PSUBUSB_PqQq
, BxOpcodeGroupSSE_0fd8
},
1724 /* 0F D9 /qr */ { BxPrefixSSE
, BX_IA_PSUBUSW_PqQq
, BxOpcodeGroupSSE_0fd9
},
1725 /* 0F DA /qr */ { BxPrefixSSE
, BX_IA_PMINUB_PqQq
, BxOpcodeGroupSSE_0fda
},
1726 /* 0F DB /qr */ { BxPrefixSSE
, BX_IA_PAND_PqQq
, BxOpcodeGroupSSE_0fdb
},
1727 /* 0F DC /qr */ { BxPrefixSSE
, BX_IA_PADDUSB_PqQq
, BxOpcodeGroupSSE_0fdc
},
1728 /* 0F DD /qr */ { BxPrefixSSE
, BX_IA_PADDUSW_PqQq
, BxOpcodeGroupSSE_0fdd
},
1729 /* 0F DE /qr */ { BxPrefixSSE
, BX_IA_PMAXUB_PqQq
, BxOpcodeGroupSSE_0fde
},
1730 /* 0F DF /qr */ { BxPrefixSSE
, BX_IA_PANDN_PqQq
, BxOpcodeGroupSSE_0fdf
},
1731 /* 0F E0 /qr */ { BxPrefixSSE
, BX_IA_PAVGB_PqQq
, BxOpcodeGroupSSE_0fe0
},
1732 /* 0F E1 /qr */ { BxPrefixSSE
, BX_IA_PSRAW_PqQq
, BxOpcodeGroupSSE_0fe1
},
1733 /* 0F E2 /qr */ { BxPrefixSSE
, BX_IA_PSRAD_PqQq
, BxOpcodeGroupSSE_0fe2
},
1734 /* 0F E3 /qr */ { BxPrefixSSE
, BX_IA_PAVGW_PqQq
, BxOpcodeGroupSSE_0fe3
},
1735 /* 0F E4 /qr */ { BxPrefixSSE
, BX_IA_PMULHUW_PqQq
, BxOpcodeGroupSSE_0fe4
},
1736 /* 0F E5 /qr */ { BxPrefixSSE
, BX_IA_PMULHW_PqQq
, BxOpcodeGroupSSE_0fe5
},
1737 /* 0F E6 /qr */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fe6
},
1738 /* 0F E7 /qr */ { 0, BX_IA_ERROR
}, // MOVNTQ/MOVNTDQ SSE group
1739 /* 0F E8 /qr */ { BxPrefixSSE
, BX_IA_PSUBSB_PqQq
, BxOpcodeGroupSSE_0fe8
},
1740 /* 0F E9 /qr */ { BxPrefixSSE
, BX_IA_PSUBSW_PqQq
, BxOpcodeGroupSSE_0fe9
},
1741 /* 0F EA /qr */ { BxPrefixSSE
, BX_IA_PMINSW_PqQq
, BxOpcodeGroupSSE_0fea
},
1742 /* 0F EB /qr */ { BxPrefixSSE
, BX_IA_POR_PqQq
, BxOpcodeGroupSSE_0feb
},
1743 /* 0F EC /qr */ { BxPrefixSSE
, BX_IA_PADDSB_PqQq
, BxOpcodeGroupSSE_0fec
},
1744 /* 0F ED /qr */ { BxPrefixSSE
, BX_IA_PADDSW_PqQq
, BxOpcodeGroupSSE_0fed
},
1745 /* 0F EE /qr */ { BxPrefixSSE
, BX_IA_PMAXSW_PqQq
, BxOpcodeGroupSSE_0fee
},
1746 /* 0F EF /qr */ { BxPrefixSSE
, BX_IA_PXOR_PqQq
, BxOpcodeGroupSSE_0fef
},
1747 /* 0F F0 /qr */ { 0, BX_IA_ERROR
}, // LDDQU SSE group
1748 /* 0F F1 /qr */ { BxPrefixSSE
, BX_IA_PSLLW_PqQq
, BxOpcodeGroupSSE_0ff1
},
1749 /* 0F F2 /qr */ { BxPrefixSSE
, BX_IA_PSLLD_PqQq
, BxOpcodeGroupSSE_0ff2
},
1750 /* 0F F3 /qr */ { BxPrefixSSE
, BX_IA_PSLLQ_PqQq
, BxOpcodeGroupSSE_0ff3
},
1751 /* 0F F4 /qr */ { BxPrefixSSE
, BX_IA_PMULUDQ_PqQq
, BxOpcodeGroupSSE_0ff4
},
1752 /* 0F F5 /qr */ { BxPrefixSSE
, BX_IA_PMADDWD_PqQq
, BxOpcodeGroupSSE_0ff5
},
1753 /* 0F F6 /qr */ { BxPrefixSSE
, BX_IA_PSADBW_PqQq
, BxOpcodeGroupSSE_0ff6
},
1754 /* 0F F7 /qr */ { BxPrefixSSE
, BX_IA_MASKMOVQ_PqPRq
, BxOpcodeGroupSSE_0ff7R
},
1755 /* 0F F8 /qr */ { BxPrefixSSE
, BX_IA_PSUBB_PqQq
, BxOpcodeGroupSSE_0ff8
},
1756 /* 0F F9 /qr */ { BxPrefixSSE
, BX_IA_PSUBW_PqQq
, BxOpcodeGroupSSE_0ff9
},
1757 /* 0F FA /qr */ { BxPrefixSSE
, BX_IA_PSUBD_PqQq
, BxOpcodeGroupSSE_0ffa
},
1758 /* 0F FB /qr */ { BxPrefixSSE
, BX_IA_PSUBQ_PqQq
, BxOpcodeGroupSSE_0ffb
},
1759 /* 0F FC /qr */ { BxPrefixSSE
, BX_IA_PADDB_PqQq
, BxOpcodeGroupSSE_0ffc
},
1760 /* 0F FD /qr */ { BxPrefixSSE
, BX_IA_PADDW_PqQq
, BxOpcodeGroupSSE_0ffd
},
1761 /* 0F FE /qr */ { BxPrefixSSE
, BX_IA_PADDD_PqQq
, BxOpcodeGroupSSE_0ffe
},
1762 /* 0F FF /qr */ { 0, BX_IA_ERROR
}
1765 // 512 entries for 16bit operand size
1766 // 512 entries for 32bit operand size
1767 // 512 entries for 64bit operand size
1769 static const BxOpcodeInfo_t BxOpcodeInfo64M
[512*3] = {
1770 // 512 entries for 16bit operand size
1771 /* 00 /wm */ { BxLockable
, BX_IA_ADD_EbGbM
},
1772 /* 01 /wm */ { BxLockable
, BX_IA_ADD_EwGwM
},
1773 /* 02 /wm */ { 0, BX_IA_ADD_GbEbM
},
1774 /* 03 /wm */ { 0, BX_IA_ADD_GwEwM
},
1775 /* 04 /wm */ { BxImmediate_Ib
, BX_IA_ADD_ALIb
},
1776 /* 05 /wm */ { BxImmediate_Iw
, BX_IA_ADD_AXIw
},
1777 /* 06 /wm */ { 0, BX_IA_ERROR
},
1778 /* 07 /wm */ { 0, BX_IA_ERROR
},
1779 /* 08 /wm */ { BxLockable
, BX_IA_OR_EbGbM
},
1780 /* 09 /wm */ { BxLockable
, BX_IA_OR_EwGwM
},
1781 /* 0A /wm */ { 0, BX_IA_OR_GbEbM
},
1782 /* 0B /wm */ { 0, BX_IA_OR_GwEwM
},
1783 /* 0C /wm */ { BxImmediate_Ib
, BX_IA_OR_ALIb
},
1784 /* 0D /wm */ { BxImmediate_Iw
, BX_IA_OR_AXIw
},
1785 /* 0E /wm */ { 0, BX_IA_ERROR
},
1786 /* 0F /wm */ { 0, BX_IA_ERROR
}, // 2-byte escape
1787 /* 10 /wm */ { BxLockable
, BX_IA_ADC_EbGbM
},
1788 /* 11 /wm */ { BxLockable
, BX_IA_ADC_EwGwM
},
1789 /* 12 /wm */ { 0, BX_IA_ADC_GbEbM
},
1790 /* 13 /wm */ { 0, BX_IA_ADC_GwEwM
},
1791 /* 14 /wm */ { BxImmediate_Ib
, BX_IA_ADC_ALIb
},
1792 /* 15 /wm */ { BxImmediate_Iw
, BX_IA_ADC_AXIw
},
1793 /* 16 /wm */ { 0, BX_IA_ERROR
},
1794 /* 17 /wm */ { 0, BX_IA_ERROR
},
1795 /* 18 /wm */ { BxLockable
, BX_IA_SBB_EbGbM
},
1796 /* 19 /wm */ { BxLockable
, BX_IA_SBB_EwGwM
},
1797 /* 1A /wm */ { 0, BX_IA_SBB_GbEbM
},
1798 /* 1B /wm */ { 0, BX_IA_SBB_GwEwM
},
1799 /* 1C /wm */ { BxImmediate_Ib
, BX_IA_SBB_ALIb
},
1800 /* 1D /wm */ { BxImmediate_Iw
, BX_IA_SBB_AXIw
},
1801 /* 1E /wm */ { 0, BX_IA_ERROR
},
1802 /* 1F /wm */ { 0, BX_IA_ERROR
},
1803 /* 20 /wm */ { BxLockable
, BX_IA_AND_EbGbM
},
1804 /* 21 /wm */ { BxLockable
, BX_IA_AND_EwGwM
},
1805 /* 22 /wm */ { 0, BX_IA_AND_GbEbM
},
1806 /* 23 /wm */ { 0, BX_IA_AND_GwEwM
},
1807 /* 24 /wm */ { BxImmediate_Ib
, BX_IA_AND_ALIb
},
1808 /* 25 /wm */ { BxImmediate_Iw
, BX_IA_AND_AXIw
},
1809 /* 26 /wm */ { 0, BX_IA_ERROR
}, // ES:
1810 /* 27 /wm */ { 0, BX_IA_ERROR
},
1811 /* 28 /wm */ { BxLockable
, BX_IA_SUB_EbGbM
},
1812 /* 29 /wm */ { BxLockable
, BX_IA_SUB_EwGwM
},
1813 /* 2A /wm */ { 0, BX_IA_SUB_GbEbM
},
1814 /* 2B /wm */ { 0, BX_IA_SUB_GwEwM
},
1815 /* 2C /wm */ { BxImmediate_Ib
, BX_IA_SUB_ALIb
},
1816 /* 2D /wm */ { BxImmediate_Iw
, BX_IA_SUB_AXIw
},
1817 /* 2E /wm */ { 0, BX_IA_ERROR
}, // CS:
1818 /* 2F /wm */ { 0, BX_IA_ERROR
},
1819 /* 30 /wm */ { BxLockable
, BX_IA_XOR_EbGbM
},
1820 /* 31 /wm */ { BxLockable
, BX_IA_XOR_EwGwM
},
1821 /* 32 /wm */ { 0, BX_IA_XOR_GbEbM
},
1822 /* 33 /wm */ { 0, BX_IA_XOR_GwEwM
},
1823 /* 34 /wm */ { BxImmediate_Ib
, BX_IA_XOR_ALIb
},
1824 /* 35 /wm */ { BxImmediate_Iw
, BX_IA_XOR_AXIw
},
1825 /* 36 /wm */ { 0, BX_IA_ERROR
}, // SS:
1826 /* 37 /wm */ { 0, BX_IA_ERROR
},
1827 /* 38 /wm */ { 0, BX_IA_CMP_EbGbM
},
1828 /* 39 /wm */ { 0, BX_IA_CMP_EwGwM
},
1829 /* 3A /wm */ { 0, BX_IA_CMP_GbEbM
},
1830 /* 3B /wm */ { 0, BX_IA_CMP_GwEwM
},
1831 /* 3C /wm */ { BxImmediate_Ib
, BX_IA_CMP_ALIb
},
1832 /* 3D /wm */ { BxImmediate_Iw
, BX_IA_CMP_AXIw
},
1833 /* 3E /wm */ { 0, BX_IA_ERROR
}, // DS:
1834 /* 3F /wm */ { 0, BX_IA_ERROR
},
1835 /* 40 /wm */ { 0, BX_IA_ERROR
}, // REX:
1836 /* 41 /wm */ { 0, BX_IA_ERROR
}, // REX:
1837 /* 42 /wm */ { 0, BX_IA_ERROR
}, // REX:
1838 /* 43 /wm */ { 0, BX_IA_ERROR
}, // REX:
1839 /* 44 /wm */ { 0, BX_IA_ERROR
}, // REX:
1840 /* 45 /wm */ { 0, BX_IA_ERROR
}, // REX:
1841 /* 46 /wm */ { 0, BX_IA_ERROR
}, // REX:
1842 /* 47 /wm */ { 0, BX_IA_ERROR
}, // REX:
1843 /* 48 /wm */ { 0, BX_IA_ERROR
}, // REX:
1844 /* 49 /wm */ { 0, BX_IA_ERROR
}, // REX:
1845 /* 4A /wm */ { 0, BX_IA_ERROR
}, // REX:
1846 /* 4B /wm */ { 0, BX_IA_ERROR
}, // REX:
1847 /* 4C /wm */ { 0, BX_IA_ERROR
}, // REX:
1848 /* 4D /wm */ { 0, BX_IA_ERROR
}, // REX:
1849 /* 4E /wm */ { 0, BX_IA_ERROR
}, // REX:
1850 /* 4F /wm */ { 0, BX_IA_ERROR
}, // REX:
1851 /* 50 /wm */ { 0, BX_IA_PUSH_RX
},
1852 /* 51 /wm */ { 0, BX_IA_PUSH_RX
},
1853 /* 52 /wm */ { 0, BX_IA_PUSH_RX
},
1854 /* 53 /wm */ { 0, BX_IA_PUSH_RX
},
1855 /* 54 /wm */ { 0, BX_IA_PUSH_RX
},
1856 /* 55 /wm */ { 0, BX_IA_PUSH_RX
},
1857 /* 56 /wm */ { 0, BX_IA_PUSH_RX
},
1858 /* 57 /wm */ { 0, BX_IA_PUSH_RX
},
1859 /* 58 /wm */ { 0, BX_IA_POP_RX
},
1860 /* 59 /wm */ { 0, BX_IA_POP_RX
},
1861 /* 5A /wm */ { 0, BX_IA_POP_RX
},
1862 /* 5B /wm */ { 0, BX_IA_POP_RX
},
1863 /* 5C /wm */ { 0, BX_IA_POP_RX
},
1864 /* 5D /wm */ { 0, BX_IA_POP_RX
},
1865 /* 5E /wm */ { 0, BX_IA_POP_RX
},
1866 /* 5F /wm */ { 0, BX_IA_POP_RX
},
1867 /* 60 /wm */ { 0, BX_IA_ERROR
},
1868 /* 61 /wm */ { 0, BX_IA_ERROR
},
1869 /* 62 /wm */ { 0, BX_IA_ERROR
},
1870 /* 63 /wm */ { 0, BX_IA_MOV_GwEwM
}, // MOVSX_GwEw
1871 /* 64 /wm */ { 0, BX_IA_ERROR
}, // FS:
1872 /* 65 /wm */ { 0, BX_IA_ERROR
}, // GS:
1873 /* 66 /wm */ { 0, BX_IA_ERROR
}, // OS:
1874 /* 67 /wm */ { 0, BX_IA_ERROR
}, // AS:
1875 /* 68 /wm */ { BxImmediate_Iw
, BX_IA_PUSH_Iw
},
1876 /* 69 /wm */ { BxImmediate_Iw
, BX_IA_IMUL_GwEwIwM
},
1877 /* 6A /wm */ { BxImmediate_Ib_SE
, BX_IA_PUSH_Iw
},
1878 /* 6B /wm */ { BxImmediate_Ib_SE
, BX_IA_IMUL_GwEwIwM
},
1879 /* 6C /wm */ { 0, BX_IA_REP_INSB_YbDX
},
1880 /* 6D /wm */ { 0, BX_IA_REP_INSW_YwDX
},
1881 /* 6E /wm */ { 0, BX_IA_REP_OUTSB_DXXb
},
1882 /* 6F /wm */ { 0, BX_IA_REP_OUTSW_DXXw
},
1883 /* 70 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JO_Jq
},
1884 /* 71 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNO_Jq
},
1885 /* 72 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JB_Jq
},
1886 /* 73 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNB_Jq
},
1887 /* 74 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JZ_Jq
},
1888 /* 75 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNZ_Jq
},
1889 /* 76 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JBE_Jq
},
1890 /* 77 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNBE_Jq
},
1891 /* 78 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JS_Jq
},
1892 /* 79 /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNS_Jq
},
1893 /* 7A /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JP_Jq
},
1894 /* 7B /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNP_Jq
},
1895 /* 7C /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JL_Jq
},
1896 /* 7D /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNL_Jq
},
1897 /* 7E /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JLE_Jq
},
1898 /* 7F /wm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNLE_Jq
},
1899 /* 80 /wm */ { BxGroup1
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG1EbIbM
},
1900 /* 81 /wm */ { BxGroup1
| BxImmediate_Iw
, BX_IA_ERROR
, BxOpcodeInfoG1EwM
},
1901 /* 82 /wm */ { 0, BX_IA_ERROR
},
1902 /* 83 /wm */ { BxGroup1
| BxImmediate_Ib_SE
, BX_IA_ERROR
, BxOpcodeInfoG1EwM
},
1903 /* 84 /wm */ { 0, BX_IA_TEST_EbGbM
},
1904 /* 85 /wm */ { 0, BX_IA_TEST_EwGwM
},
1905 /* 86 /wm */ { BxLockable
, BX_IA_XCHG_EbGbM
},
1906 /* 87 /wm */ { BxLockable
, BX_IA_XCHG_EwGwM
},
1907 /* 88 /wm */ { 0, BX_IA_MOV_EbGbM
},
1908 /* 89 /wm */ { 0, BX_IA_MOV_EwGwM
},
1909 /* 8A /wm */ { 0, BX_IA_MOV_GbEbM
},
1910 /* 8B /wm */ { 0, BX_IA_MOV_GwEwM
},
1911 /* 8C /wm */ { 0, BX_IA_MOV_EwSwM
},
1912 /* 8D /wm */ { 0, BX_IA_LEA_GwM
},
1913 /* 8E /wm */ { 0, BX_IA_MOV_SwEw
},
1914 /* 8F /wm */ { BxGroup1A
, BX_IA_ERROR
, BxOpcodeInfoG1AEwM
},
1915 /* 90 /wm */ { 0, BX_IA_XCHG_RXAX
}, // handles XCHG R8w, AX
1916 /* 91 /wm */ { 0, BX_IA_XCHG_RXAX
},
1917 /* 92 /wm */ { 0, BX_IA_XCHG_RXAX
},
1918 /* 93 /wm */ { 0, BX_IA_XCHG_RXAX
},
1919 /* 94 /wm */ { 0, BX_IA_XCHG_RXAX
},
1920 /* 95 /wm */ { 0, BX_IA_XCHG_RXAX
},
1921 /* 96 /wm */ { 0, BX_IA_XCHG_RXAX
},
1922 /* 97 /wm */ { 0, BX_IA_XCHG_RXAX
},
1923 /* 98 /wm */ { 0, BX_IA_CBW
},
1924 /* 99 /wm */ { 0, BX_IA_CWD
},
1925 /* 9A /wm */ { 0, BX_IA_ERROR
},
1926 /* 9B /wm */ { 0, BX_IA_FWAIT
},
1927 /* 9C /wm */ { 0, BX_IA_PUSHF_Fw
},
1928 /* 9D /wm */ { 0, BX_IA_POPF_Fw
},
1929 /* 9E /wm */ { 0, BX_IA_SAHF
},
1930 /* 9F /wm */ { 0, BX_IA_LAHF
},
1931 /* A0 /wm */ { BxImmediate_O
, BX_IA_MOV_ALOq
},
1932 /* A1 /wm */ { BxImmediate_O
, BX_IA_MOV_AXOq
},
1933 /* A2 /wm */ { BxImmediate_O
, BX_IA_MOV_OqAL
},
1934 /* A3 /wm */ { BxImmediate_O
, BX_IA_MOV_OqAX
},
1935 /* A4 /wm */ { 0, BX_IA_REP_MOVSB_XbYb
},
1936 /* A5 /wm */ { 0, BX_IA_REP_MOVSW_XwYw
},
1937 /* A6 /wm */ { 0, BX_IA_REP_CMPSB_XbYb
},
1938 /* A7 /wm */ { 0, BX_IA_REP_CMPSW_XwYw
},
1939 /* A8 /wm */ { BxImmediate_Ib
, BX_IA_TEST_ALIb
},
1940 /* A9 /wm */ { BxImmediate_Iw
, BX_IA_TEST_AXIw
},
1941 /* AA /wm */ { 0, BX_IA_REP_STOSB_YbAL
},
1942 /* AB /wm */ { 0, BX_IA_REP_STOSW_YwAX
},
1943 /* AC /wm */ { 0, BX_IA_REP_LODSB_ALXb
},
1944 /* AD /wm */ { 0, BX_IA_REP_LODSW_AXXw
},
1945 /* AE /wm */ { 0, BX_IA_REP_SCASB_ALXb
},
1946 /* AF /wm */ { 0, BX_IA_REP_SCASW_AXXw
},
1947 /* B0 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1948 /* B1 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1949 /* B2 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1950 /* B3 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1951 /* B4 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1952 /* B5 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1953 /* B6 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1954 /* B7 /wm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
1955 /* B8 /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1956 /* B9 /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1957 /* BA /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1958 /* BB /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1959 /* BC /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1960 /* BD /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1961 /* BE /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1962 /* BF /wm */ { BxImmediate_Iw
, BX_IA_MOV_RXIw
},
1963 /* C0 /wm */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
1964 /* C1 /wm */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Ew
},
1965 /* C2 /wm */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETnear64_Iw
},
1966 /* C3 /wm */ { BxTraceEnd
, BX_IA_RETnear64
},
1967 /* C4 /wm */ { 0, BX_IA_ERROR
},
1968 /* C5 /wm */ { 0, BX_IA_ERROR
},
1969 /* C6 /wm */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EbM
},
1970 /* C7 /wm */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EwM
},
1971 /* C8 /wm */ { BxImmediate_IwIb
, BX_IA_ENTER16_IwIb
},
1972 /* C9 /wm */ { 0, BX_IA_LEAVE64
},
1973 /* CA /wm */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETfar16_Iw
},
1974 /* CB /wm */ { BxTraceEnd
, BX_IA_RETfar16
},
1975 /* CC /wm */ { BxTraceEnd
, BX_IA_INT3
},
1976 /* CD /wm */ { BxImmediate_Ib
| BxTraceEnd
, BX_IA_INT_Ib
},
1977 /* CE /wm */ { 0, BX_IA_ERROR
},
1978 /* CF /wm */ { BxTraceEnd
, BX_IA_IRET64
},
1979 /* D0 /wm */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
1980 /* D1 /wm */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Ew
},
1981 /* D2 /wm */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
1982 /* D3 /wm */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Ew
},
1983 /* D4 /wm */ { 0, BX_IA_ERROR
},
1984 /* D5 /wm */ { 0, BX_IA_ERROR
},
1985 /* D6 /wm */ { 0, BX_IA_ERROR
},
1986 /* D7 /wm */ { 0, BX_IA_XLAT
},
1987 /* D8 /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupD8
},
1988 /* D9 /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupD9
},
1989 /* DA /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDA
},
1990 /* DB /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDB
},
1991 /* DC /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDC
},
1992 /* DD /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDD
},
1993 /* DE /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDE
},
1994 /* DF /wm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDF
},
1995 /* E0 /wm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPNE64_Jb
},
1996 /* E1 /wm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPE64_Jb
},
1997 /* E2 /wm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOP64_Jb
},
1998 /* E3 /wm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JRCXZ_Jb
},
1999 /* E4 /wm */ { BxImmediate_Ib
, BX_IA_IN_ALIb
},
2000 /* E5 /wm */ { BxImmediate_Ib
, BX_IA_IN_AXIb
},
2001 /* E6 /wm */ { BxImmediate_Ib
, BX_IA_OUT_IbAL
},
2002 /* E7 /wm */ { BxImmediate_Ib
, BX_IA_OUT_IbAX
},
2003 /* E8 /wm */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_CALL_Jq
},
2004 /* E9 /wm */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_JMP_Jq
},
2005 /* EA /wm */ { 0, BX_IA_ERROR
},
2006 /* EB /wm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JMP_Jq
},
2007 /* EC /wm */ { 0, BX_IA_IN_ALDX
},
2008 /* ED /wm */ { 0, BX_IA_IN_AXDX
},
2009 /* EE /wm */ { 0, BX_IA_OUT_DXAL
},
2010 /* EF /wm */ { 0, BX_IA_OUT_DXAX
},
2011 /* F0 /wm */ { 0, BX_IA_ERROR
}, // LOCK
2012 /* F1 /wm */ { BxTraceEnd
, BX_IA_INT1
},
2013 /* F2 /wm */ { 0, BX_IA_ERROR
}, // REPNE/REPNZ
2014 /* F3 /wm */ { 0, BX_IA_ERROR
}, // REP, REPE/REPZ
2015 /* F4 /wm */ { BxTraceEnd
, BX_IA_HLT
},
2016 /* F5 /wm */ { 0, BX_IA_CMC
},
2017 /* F6 /wm */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EbM
},
2018 /* F7 /wm */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EwM
},
2019 /* F8 /wm */ { 0, BX_IA_CLC
},
2020 /* F9 /wm */ { 0, BX_IA_STC
},
2021 /* FA /wm */ { 0, BX_IA_CLI
},
2022 /* FB /wm */ { 0, BX_IA_STI
},
2023 /* FC /wm */ { 0, BX_IA_CLD
},
2024 /* FD /wm */ { 0, BX_IA_STD
},
2025 /* FE /wm */ { BxGroup4
, BX_IA_ERROR
, BxOpcodeInfoG4M
},
2026 /* FF /wm */ { BxGroup5
, BX_IA_ERROR
, BxOpcodeInfo64G5wM
},
2028 /* 0F 00 /wm */ { BxGroup6
, BX_IA_ERROR
, BxOpcodeInfoG6
},
2029 /* 0F 01 /wm */ { BxGroup7
, BX_IA_ERROR
, BxOpcodeInfo64G7M
},
2030 /* 0F 02 /wm */ { 0, BX_IA_LAR_GvEw
},
2031 /* 0F 03 /wm */ { 0, BX_IA_LSL_GvEw
},
2032 /* 0F 04 /wm */ { 0, BX_IA_ERROR
},
2033 /* 0F 05 /wm */ { BxTraceEnd
, BX_IA_SYSCALL
},
2034 /* 0F 06 /wm */ { 0, BX_IA_CLTS
},
2035 /* 0F 07 /wm */ { BxTraceEnd
, BX_IA_SYSRET
},
2036 /* 0F 08 /wm */ { BxTraceEnd
, BX_IA_INVD
},
2037 /* 0F 09 /wm */ { BxTraceEnd
, BX_IA_WBINVD
},
2038 /* 0F 0A /wm */ { 0, BX_IA_ERROR
},
2039 /* 0F 0B /wm */ { BxTraceEnd
, BX_IA_UD2A
},
2040 /* 0F 0C /wm */ { 0, BX_IA_ERROR
},
2041 /* 0F 0D /wm */ { 0, BX_IA_NOP
}, // 3DNow! PREFETCH on AMD, NOP on Intel
2042 /* 0F 0E /wm */ { 0, BX_IA_FEMMS
}, // 3DNow! FEMMS
2043 #if BX_SUPPORT_3DNOW
2044 /* 0F 0F /wm */ { BxImmediate_Ib
, BX_IA_ERROR
, Bx3DNowOpcodeInfo
},
2046 /* 0F 0F /wm */ { 0, BX_IA_ERROR
},
2048 /* 0F 10 /wm */ { BxPrefixSSE
, BX_IA_MOVUPS_VpsWps
, BxOpcodeGroupSSE_0f10
},
2049 /* 0F 11 /wm */ { BxPrefixSSE
, BX_IA_MOVUPS_WpsVps
, BxOpcodeGroupSSE_0f11
},
2050 /* 0F 12 /wm */ { BxPrefixSSE
, BX_IA_MOVLPS_VpsMq
, BxOpcodeGroupSSE_0f12
},
2051 /* 0F 13 /wm */ { BxPrefixSSE
, BX_IA_MOVLPS_MqVps
, BxOpcodeGroupSSE_0f13M
},
2052 /* 0F 14 /wm */ { BxPrefixSSE
, BX_IA_UNPCKLPS_VpsWdq
, BxOpcodeGroupSSE_0f14
},
2053 /* 0F 15 /wm */ { BxPrefixSSE
, BX_IA_UNPCKHPS_VpsWdq
, BxOpcodeGroupSSE_0f15
},
2054 /* 0F 16 /wm */ { BxPrefixSSE
, BX_IA_MOVHPS_VpsMq
, BxOpcodeGroupSSE_0f16
},
2055 /* 0F 17 /wm */ { BxPrefixSSE
, BX_IA_MOVHPS_MqVps
, BxOpcodeGroupSSE_0f17M
},
2056 /* 0F 18 /wm */ { 0, BX_IA_PREFETCH
}, // opcode group G16, PREFETCH hints
2057 /* 0F 19 /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2058 /* 0F 1A /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2059 /* 0F 1B /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2060 /* 0F 1C /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2061 /* 0F 1D /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2062 /* 0F 1E /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2063 /* 0F 1F /wm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2064 /* 0F 20 /wm */ { 0, BX_IA_MOV_RqCq
},
2065 /* 0F 21 /wm */ { 0, BX_IA_MOV_RqDq
},
2066 /* 0F 22 /wm */ { BxTraceEnd
, BX_IA_MOV_CqRq
},
2067 /* 0F 23 /wm */ { BxTraceEnd
, BX_IA_MOV_DqRq
},
2068 /* 0F 24 /wm */ { 0, BX_IA_ERROR
},
2069 /* 0F 25 /wm */ { 0, BX_IA_ERROR
},
2070 /* 0F 26 /wm */ { 0, BX_IA_ERROR
},
2071 /* 0F 27 /wm */ { 0, BX_IA_ERROR
},
2072 /* 0F 28 /wm */ { BxPrefixSSE
, BX_IA_MOVAPS_VpsWps
, BxOpcodeGroupSSE_0f28
},
2073 /* 0F 29 /wm */ { BxPrefixSSE
, BX_IA_MOVAPS_WpsVps
, BxOpcodeGroupSSE_0f29
},
2074 /* 0F 2A /wm */ { BxPrefixSSE
, BX_IA_CVTPI2PS_VpsQq
, BxOpcodeGroupSSE_0f2a
},
2075 /* 0F 2B /wm */ { BxPrefixSSE
, BX_IA_MOVNTPS_MpsVps
, BxOpcodeGroupSSE_0f2bM
},
2076 /* 0F 2C /wm */ { BxPrefixSSE
, BX_IA_CVTTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2c
},
2077 /* 0F 2D /wm */ { BxPrefixSSE
, BX_IA_CVTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2d
},
2078 /* 0F 2E /wm */ { BxPrefixSSE
, BX_IA_UCOMISS_VssWss
, BxOpcodeGroupSSE_0f2e
},
2079 /* 0F 2F /wm */ { BxPrefixSSE
, BX_IA_COMISS_VpsWps
, BxOpcodeGroupSSE_0f2f
},
2080 /* 0F 30 /wm */ { 0, BX_IA_WRMSR
},
2081 /* 0F 31 /wm */ { 0, BX_IA_RDTSC
},
2082 /* 0F 32 /wm */ { 0, BX_IA_RDMSR
},
2083 /* 0F 33 /wm */ { 0, BX_IA_RDPMC
},
2084 /* 0F 34 /wm */ { 0, BX_IA_SYSENTER
},
2085 /* 0F 35 /wm */ { 0, BX_IA_SYSEXIT
},
2086 /* 0F 36 /wm */ { 0, BX_IA_ERROR
},
2087 /* 0F 37 /wm */ { 0, BX_IA_ERROR
},
2088 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
2089 /* 0F 38 /wm */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f38
}, // 3-byte escape
2091 /* 0F 38 /wm */ { 0, BX_IA_ERROR
},
2093 /* 0F 39 /wm */ { 0, BX_IA_ERROR
},
2094 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
2095 /* 0F 3A /wm */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f3a
}, // 3-byte escape
2097 /* 0F 3A /wm */ { 0, BX_IA_ERROR
},
2099 /* 0F 3B /wm */ { 0, BX_IA_ERROR
},
2100 /* 0F 3C /wm */ { 0, BX_IA_ERROR
},
2101 /* 0F 3D /wm */ { 0, BX_IA_ERROR
},
2102 /* 0F 3E /wm */ { 0, BX_IA_ERROR
},
2103 /* 0F 3F /wm */ { 0, BX_IA_ERROR
},
2104 /* 0F 40 /wm */ { 0, BX_IA_CMOVO_GwEwM
},
2105 /* 0F 41 /wm */ { 0, BX_IA_CMOVNO_GwEwM
},
2106 /* 0F 42 /wm */ { 0, BX_IA_CMOVB_GwEwM
},
2107 /* 0F 43 /wm */ { 0, BX_IA_CMOVNB_GwEwM
},
2108 /* 0F 44 /wm */ { 0, BX_IA_CMOVZ_GwEwM
},
2109 /* 0F 45 /wm */ { 0, BX_IA_CMOVNZ_GwEwM
},
2110 /* 0F 46 /wm */ { 0, BX_IA_CMOVBE_GwEwM
},
2111 /* 0F 47 /wm */ { 0, BX_IA_CMOVNBE_GwEwM
},
2112 /* 0F 48 /wm */ { 0, BX_IA_CMOVS_GwEwM
},
2113 /* 0F 49 /wm */ { 0, BX_IA_CMOVNS_GwEwM
},
2114 /* 0F 4A /wm */ { 0, BX_IA_CMOVP_GwEwM
},
2115 /* 0F 4B /wm */ { 0, BX_IA_CMOVNP_GwEwM
},
2116 /* 0F 4C /wm */ { 0, BX_IA_CMOVL_GwEwM
},
2117 /* 0F 4D /wm */ { 0, BX_IA_CMOVNL_GwEwM
},
2118 /* 0F 4E /wm */ { 0, BX_IA_CMOVLE_GwEwM
},
2119 /* 0F 4F /wm */ { 0, BX_IA_CMOVNLE_GwEwM
},
2120 /* 0F 50 /wm */ { BxPrefixSSE
, BX_IA_MOVMSKPS_GdVRps
, BxOpcodeGroupSSE_0f50
},
2121 /* 0F 51 /wm */ { BxPrefixSSE
, BX_IA_SQRTPS_VpsWps
, BxOpcodeGroupSSE_0f51
},
2122 /* 0F 52 /wm */ { BxPrefixSSE
, BX_IA_RSQRTPS_VpsWps
, BxOpcodeGroupSSE_0f52
},
2123 /* 0F 53 /wm */ { BxPrefixSSE
, BX_IA_RCPPS_VpsWps
, BxOpcodeGroupSSE_0f53
},
2124 /* 0F 54 /wm */ { BxPrefixSSE
, BX_IA_ANDPS_VpsWps
, BxOpcodeGroupSSE_0f54
},
2125 /* 0F 55 /wm */ { BxPrefixSSE
, BX_IA_ANDNPS_VpsWps
, BxOpcodeGroupSSE_0f55
},
2126 /* 0F 56 /wm */ { BxPrefixSSE
, BX_IA_ORPS_VpsWps
, BxOpcodeGroupSSE_0f56
},
2127 /* 0F 57 /wm */ { BxPrefixSSE
, BX_IA_XORPS_VpsWps
, BxOpcodeGroupSSE_0f57
},
2128 /* 0F 58 /wm */ { BxPrefixSSE
, BX_IA_ADDPS_VpsWps
, BxOpcodeGroupSSE_0f58
},
2129 /* 0F 59 /wm */ { BxPrefixSSE
, BX_IA_MULPS_VpsWps
, BxOpcodeGroupSSE_0f59
},
2130 /* 0F 5A /wm */ { BxPrefixSSE
, BX_IA_CVTPS2PD_VpsWps
, BxOpcodeGroupSSE_0f5a
},
2131 /* 0F 5B /wm */ { BxPrefixSSE
, BX_IA_CVTDQ2PS_VpsWdq
, BxOpcodeGroupSSE_0f5b
},
2132 /* 0F 5C /wm */ { BxPrefixSSE
, BX_IA_SUBPS_VpsWps
, BxOpcodeGroupSSE_0f5c
},
2133 /* 0F 5D /wm */ { BxPrefixSSE
, BX_IA_MINPS_VpsWps
, BxOpcodeGroupSSE_0f5d
},
2134 /* 0F 5E /wm */ { BxPrefixSSE
, BX_IA_DIVPS_VpsWps
, BxOpcodeGroupSSE_0f5e
},
2135 /* 0F 5F /wm */ { BxPrefixSSE
, BX_IA_MAXPS_VpsWps
, BxOpcodeGroupSSE_0f5f
},
2136 /* 0F 60 /wm */ { BxPrefixSSE
, BX_IA_PUNPCKLBW_PqQd
, BxOpcodeGroupSSE_0f60
},
2137 /* 0F 61 /wm */ { BxPrefixSSE
, BX_IA_PUNPCKLWD_PqQd
, BxOpcodeGroupSSE_0f61
},
2138 /* 0F 62 /wm */ { BxPrefixSSE
, BX_IA_PUNPCKLDQ_PqQd
, BxOpcodeGroupSSE_0f62
},
2139 /* 0F 63 /wm */ { BxPrefixSSE
, BX_IA_PACKSSWB_PqQq
, BxOpcodeGroupSSE_0f63
},
2140 /* 0F 64 /wm */ { BxPrefixSSE
, BX_IA_PCMPGTB_PqQq
, BxOpcodeGroupSSE_0f64
},
2141 /* 0F 65 /wm */ { BxPrefixSSE
, BX_IA_PCMPGTW_PqQq
, BxOpcodeGroupSSE_0f65
},
2142 /* 0F 66 /wm */ { BxPrefixSSE
, BX_IA_PCMPGTD_PqQq
, BxOpcodeGroupSSE_0f66
},
2143 /* 0F 67 /wm */ { BxPrefixSSE
, BX_IA_PACKUSWB_PqQq
, BxOpcodeGroupSSE_0f67
},
2144 /* 0F 68 /wm */ { BxPrefixSSE
, BX_IA_PUNPCKHBW_PqQq
, BxOpcodeGroupSSE_0f68
},
2145 /* 0F 69 /wm */ { BxPrefixSSE
, BX_IA_PUNPCKHWD_PqQq
, BxOpcodeGroupSSE_0f69
},
2146 /* 0F 6A /wm */ { BxPrefixSSE
, BX_IA_PUNPCKHDQ_PqQq
, BxOpcodeGroupSSE_0f6a
},
2147 /* 0F 6B /wm */ { BxPrefixSSE
, BX_IA_PACKSSDW_PqQq
, BxOpcodeGroupSSE_0f6b
},
2148 /* 0F 6C /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6c
},
2149 /* 0F 6D /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6d
},
2150 /* 0F 6E /wm */ { BxPrefixSSE
, BX_IA_MOVD_PqEd
, BxOpcodeGroupSSE_0f6e
},
2151 /* 0F 6F /wm */ { BxPrefixSSE
, BX_IA_MOVQ_PqQq
, BxOpcodeGroupSSE_0f6f
},
2152 /* 0F 70 /wm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PSHUFW_PqQqIb
, BxOpcodeGroupSSE_0f70
},
2153 /* 0F 71 /wm */ { 0, BX_IA_ERROR
}, // SSE Group G12
2154 /* 0F 72 /wm */ { 0, BX_IA_ERROR
}, // SSE Group G13
2155 /* 0F 73 /wm */ { 0, BX_IA_ERROR
}, // SSE Group G14
2156 /* 0F 74 /wm */ { BxPrefixSSE
, BX_IA_PCMPEQB_PqQq
, BxOpcodeGroupSSE_0f74
},
2157 /* 0F 75 /wm */ { BxPrefixSSE
, BX_IA_PCMPEQW_PqQq
, BxOpcodeGroupSSE_0f75
},
2158 /* 0F 76 /wm */ { BxPrefixSSE
, BX_IA_PCMPEQD_PqQq
, BxOpcodeGroupSSE_0f76
},
2159 /* 0F 77 /wm */ { BxPrefixSSE
, BX_IA_EMMS
, BxOpcodeGroupSSE_ERR
},
2160 /* 0F 78 /wm */ { 0, BX_IA_ERROR
},
2161 /* 0F 79 /wm */ { 0, BX_IA_ERROR
},
2162 /* 0F 7A /wm */ { 0, BX_IA_ERROR
},
2163 /* 0F 7B /wm */ { 0, BX_IA_ERROR
},
2164 /* 0F 7C /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7c
},
2165 /* 0F 7D /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7d
},
2166 /* 0F 7E /wm */ { BxPrefixSSE
, BX_IA_MOVD_EdPd
, BxOpcodeGroupSSE_0f7e
},
2167 /* 0F 7F /wm */ { BxPrefixSSE
, BX_IA_MOVQ_QqPq
, BxOpcodeGroupSSE_0f7f
},
2168 /* 0F 80 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JO_Jq
},
2169 /* 0F 81 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNO_Jq
},
2170 /* 0F 82 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JB_Jq
},
2171 /* 0F 83 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNB_Jq
},
2172 /* 0F 84 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JZ_Jq
},
2173 /* 0F 85 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNZ_Jq
},
2174 /* 0F 86 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JBE_Jq
},
2175 /* 0F 87 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNBE_Jq
},
2176 /* 0F 88 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JS_Jq
},
2177 /* 0F 89 /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNS_Jq
},
2178 /* 0F 8A /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JP_Jq
},
2179 /* 0F 8B /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNP_Jq
},
2180 /* 0F 8C /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JL_Jq
},
2181 /* 0F 8D /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNL_Jq
},
2182 /* 0F 8E /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JLE_Jq
},
2183 /* 0F 8F /wm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNLE_Jq
},
2184 /* 0F 90 /wm */ { 0, BX_IA_SETO_EbM
},
2185 /* 0F 91 /wm */ { 0, BX_IA_SETNO_EbM
},
2186 /* 0F 92 /wm */ { 0, BX_IA_SETB_EbM
},
2187 /* 0F 93 /wm */ { 0, BX_IA_SETNB_EbM
},
2188 /* 0F 94 /wm */ { 0, BX_IA_SETZ_EbM
},
2189 /* 0F 95 /wm */ { 0, BX_IA_SETNZ_EbM
},
2190 /* 0F 96 /wm */ { 0, BX_IA_SETBE_EbM
},
2191 /* 0F 97 /wm */ { 0, BX_IA_SETNBE_EbM
},
2192 /* 0F 98 /wm */ { 0, BX_IA_SETS_EbM
},
2193 /* 0F 99 /wm */ { 0, BX_IA_SETNS_EbM
},
2194 /* 0F 9A /wm */ { 0, BX_IA_SETP_EbM
},
2195 /* 0F 9B /wm */ { 0, BX_IA_SETNP_EbM
},
2196 /* 0F 9C /wm */ { 0, BX_IA_SETL_EbM
},
2197 /* 0F 9D /wm */ { 0, BX_IA_SETNL_EbM
},
2198 /* 0F 9E /wm */ { 0, BX_IA_SETLE_EbM
},
2199 /* 0F 9F /wm */ { 0, BX_IA_SETNLE_EbM
},
2200 /* 0F A0 /wm */ { 0, BX_IA_PUSH16_FS
},
2201 /* 0F A1 /wm */ { 0, BX_IA_POP16_FS
},
2202 /* 0F A2 /wm */ { 0, BX_IA_CPUID
},
2203 /* 0F A3 /wm */ { 0, BX_IA_BT_EwGwM
},
2204 /* 0F A4 /wm */ { BxImmediate_Ib
, BX_IA_SHLD_EwGwM
},
2205 /* 0F A5 /wm */ { 0, BX_IA_SHLD_EwGwM
},
2206 /* 0F A6 /wm */ { 0, BX_IA_ERROR
},
2207 /* 0F A7 /wm */ { 0, BX_IA_ERROR
},
2208 /* 0F A8 /wm */ { 0, BX_IA_PUSH16_GS
},
2209 /* 0F A9 /wm */ { 0, BX_IA_POP16_GS
},
2210 /* 0F AA /wm */ { BxTraceEnd
, BX_IA_RSM
},
2211 /* 0F AB /wm */ { BxLockable
, BX_IA_BTS_EwGwM
},
2212 /* 0F AC /wm */ { BxImmediate_Ib
, BX_IA_SHRD_EwGwM
},
2213 /* 0F AD /wm */ { 0, BX_IA_SHRD_EwGwM
},
2214 /* 0F AE /wm */ { BxGroup15
, BX_IA_ERROR
, BxOpcodeInfoG15M
},
2215 /* 0F AF /wm */ { 0, BX_IA_IMUL_GwEwM
},
2216 /* 0F B0 /wm */ { BxLockable
, BX_IA_CMPXCHG_EbGbM
},
2217 /* 0F B1 /wm */ { BxLockable
, BX_IA_CMPXCHG_EwGwM
},
2218 /* 0F B2 /wm */ { 0, BX_IA_LSS_GwMp
},
2219 /* 0F B3 /wm */ { BxLockable
, BX_IA_BTR_EwGwM
},
2220 /* 0F B4 /wm */ { 0, BX_IA_LFS_GwMp
},
2221 /* 0F B5 /wm */ { 0, BX_IA_LGS_GwMp
},
2222 /* 0F B6 /wm */ { 0, BX_IA_MOVZX_GwEbM
},
2223 /* 0F B7 /wm */ { 0, BX_IA_MOV_GwEwM
}, // MOVZX_GwEw
2224 /* 0F B8 /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fb8wM
},
2225 /* 0F B9 /wm */ { BxTraceEnd
, BX_IA_UD2B
},
2226 /* 0F BA /wm */ { BxGroup8
, BX_IA_ERROR
, BxOpcodeInfoG8EwIbM
},
2227 /* 0F BB /wm */ { BxLockable
, BX_IA_BTC_EwGwM
},
2228 /* 0F BC /wm */ { 0, BX_IA_BSF_GwEwM
},
2229 /* 0F BD /wm */ { 0, BX_IA_BSR_GwEwM
},
2230 /* 0F BE /wm */ { 0, BX_IA_MOVSX_GwEbM
},
2231 /* 0F BF /wm */ { 0, BX_IA_MOV_GwEwM
}, // MOVSX_GwEw
2232 /* 0F C0 /wm */ { BxLockable
, BX_IA_XADD_EbGbM
},
2233 /* 0F C1 /wm */ { BxLockable
, BX_IA_XADD_EwGwM
},
2234 /* 0F C2 /wm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_CMPPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc2
},
2235 /* 0F C3 /wm */ { BxPrefixSSE
, BX_IA_MOVNTI_MdGd
, BxOpcodeGroupSSE_ERR
},
2236 /* 0F C4 /wm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PINSRW_PqEwIb
, BxOpcodeGroupSSE_0fc4
},
2237 /* 0F C5 /wm */ { 0, BX_IA_ERROR
}, // PEXTRW SSE group
2238 /* 0F C6 /wm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_SHUFPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc6
},
2239 /* 0F C7 /wm */ { BxGroup9
, BX_IA_ERROR
, BxOpcodeInfoG9M
},
2240 /* 0F C8 /wm */ { 0, BX_IA_BSWAP_ERX
},
2241 /* 0F C9 /wm */ { 0, BX_IA_BSWAP_ERX
},
2242 /* 0F CA /wm */ { 0, BX_IA_BSWAP_ERX
},
2243 /* 0F CB /wm */ { 0, BX_IA_BSWAP_ERX
},
2244 /* 0F CC /wm */ { 0, BX_IA_BSWAP_ERX
},
2245 /* 0F CD /wm */ { 0, BX_IA_BSWAP_ERX
},
2246 /* 0F CE /wm */ { 0, BX_IA_BSWAP_ERX
},
2247 /* 0F CF /wm */ { 0, BX_IA_BSWAP_ERX
},
2248 /* 0F D0 /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd0
},
2249 /* 0F D1 /wm */ { BxPrefixSSE
, BX_IA_PSRLW_PqQq
, BxOpcodeGroupSSE_0fd1
},
2250 /* 0F D2 /wm */ { BxPrefixSSE
, BX_IA_PSRLD_PqQq
, BxOpcodeGroupSSE_0fd2
},
2251 /* 0F D3 /wm */ { BxPrefixSSE
, BX_IA_PSRLQ_PqQq
, BxOpcodeGroupSSE_0fd3
},
2252 /* 0F D4 /wm */ { BxPrefixSSE
, BX_IA_PADDQ_PqQq
, BxOpcodeGroupSSE_0fd4
},
2253 /* 0F D5 /wm */ { BxPrefixSSE
, BX_IA_PMULLW_PqQq
, BxOpcodeGroupSSE_0fd5
},
2254 /* 0F D6 /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd6
},
2255 /* 0F D7 /wm */ { BxPrefixSSE
, BX_IA_PMOVMSKB_GdPRq
, BxOpcodeGroupSSE_0fd7
},
2256 /* 0F D8 /wm */ { BxPrefixSSE
, BX_IA_PSUBUSB_PqQq
, BxOpcodeGroupSSE_0fd8
},
2257 /* 0F D9 /wm */ { BxPrefixSSE
, BX_IA_PSUBUSW_PqQq
, BxOpcodeGroupSSE_0fd9
},
2258 /* 0F DA /wm */ { BxPrefixSSE
, BX_IA_PMINUB_PqQq
, BxOpcodeGroupSSE_0fda
},
2259 /* 0F DB /wm */ { BxPrefixSSE
, BX_IA_PAND_PqQq
, BxOpcodeGroupSSE_0fdb
},
2260 /* 0F DC /wm */ { BxPrefixSSE
, BX_IA_PADDUSB_PqQq
, BxOpcodeGroupSSE_0fdc
},
2261 /* 0F DD /wm */ { BxPrefixSSE
, BX_IA_PADDUSW_PqQq
, BxOpcodeGroupSSE_0fdd
},
2262 /* 0F DE /wm */ { BxPrefixSSE
, BX_IA_PMAXUB_PqQq
, BxOpcodeGroupSSE_0fde
},
2263 /* 0F DF /wm */ { BxPrefixSSE
, BX_IA_PANDN_PqQq
, BxOpcodeGroupSSE_0fdf
},
2264 /* 0F E0 /wm */ { BxPrefixSSE
, BX_IA_PAVGB_PqQq
, BxOpcodeGroupSSE_0fe0
},
2265 /* 0F E1 /wm */ { BxPrefixSSE
, BX_IA_PSRAW_PqQq
, BxOpcodeGroupSSE_0fe1
},
2266 /* 0F E2 /wm */ { BxPrefixSSE
, BX_IA_PSRAD_PqQq
, BxOpcodeGroupSSE_0fe2
},
2267 /* 0F E3 /wm */ { BxPrefixSSE
, BX_IA_PAVGW_PqQq
, BxOpcodeGroupSSE_0fe3
},
2268 /* 0F E4 /wm */ { BxPrefixSSE
, BX_IA_PMULHUW_PqQq
, BxOpcodeGroupSSE_0fe4
},
2269 /* 0F E5 /wm */ { BxPrefixSSE
, BX_IA_PMULHW_PqQq
, BxOpcodeGroupSSE_0fe5
},
2270 /* 0F E6 /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fe6
},
2271 /* 0F E7 /wm */ { BxPrefixSSE
, BX_IA_MOVNTQ_MqPq
, BxOpcodeGroupSSE_0fe7M
},
2272 /* 0F E8 /wm */ { BxPrefixSSE
, BX_IA_PSUBSB_PqQq
, BxOpcodeGroupSSE_0fe8
},
2273 /* 0F E9 /wm */ { BxPrefixSSE
, BX_IA_PSUBSW_PqQq
, BxOpcodeGroupSSE_0fe9
},
2274 /* 0F EA /wm */ { BxPrefixSSE
, BX_IA_PMINSW_PqQq
, BxOpcodeGroupSSE_0fea
},
2275 /* 0F EB /wm */ { BxPrefixSSE
, BX_IA_POR_PqQq
, BxOpcodeGroupSSE_0feb
},
2276 /* 0F EC /wm */ { BxPrefixSSE
, BX_IA_PADDSB_PqQq
, BxOpcodeGroupSSE_0fec
},
2277 /* 0F ED /wm */ { BxPrefixSSE
, BX_IA_PADDSW_PqQq
, BxOpcodeGroupSSE_0fed
},
2278 /* 0F EE /wm */ { BxPrefixSSE
, BX_IA_PMAXSW_PqQq
, BxOpcodeGroupSSE_0fee
},
2279 /* 0F EF /wm */ { BxPrefixSSE
, BX_IA_PXOR_PqQq
, BxOpcodeGroupSSE_0fef
},
2280 /* 0F F0 /wm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0ff0M
},
2281 /* 0F F1 /wm */ { BxPrefixSSE
, BX_IA_PSLLW_PqQq
, BxOpcodeGroupSSE_0ff1
},
2282 /* 0F F2 /wm */ { BxPrefixSSE
, BX_IA_PSLLD_PqQq
, BxOpcodeGroupSSE_0ff2
},
2283 /* 0F F3 /wm */ { BxPrefixSSE
, BX_IA_PSLLQ_PqQq
, BxOpcodeGroupSSE_0ff3
},
2284 /* 0F F4 /wm */ { BxPrefixSSE
, BX_IA_PMULUDQ_PqQq
, BxOpcodeGroupSSE_0ff4
},
2285 /* 0F F5 /wm */ { BxPrefixSSE
, BX_IA_PMADDWD_PqQq
, BxOpcodeGroupSSE_0ff5
},
2286 /* 0F F6 /wm */ { BxPrefixSSE
, BX_IA_PSADBW_PqQq
, BxOpcodeGroupSSE_0ff6
},
2287 /* 0F F7 /wm */ { 0, BX_IA_ERROR
}, // MASKMOV SSE group
2288 /* 0F F8 /wm */ { BxPrefixSSE
, BX_IA_PSUBB_PqQq
, BxOpcodeGroupSSE_0ff8
},
2289 /* 0F F9 /wm */ { BxPrefixSSE
, BX_IA_PSUBW_PqQq
, BxOpcodeGroupSSE_0ff9
},
2290 /* 0F FA /wm */ { BxPrefixSSE
, BX_IA_PSUBD_PqQq
, BxOpcodeGroupSSE_0ffa
},
2291 /* 0F FB /wm */ { BxPrefixSSE
, BX_IA_PSUBQ_PqQq
, BxOpcodeGroupSSE_0ffb
},
2292 /* 0F FC /wm */ { BxPrefixSSE
, BX_IA_PADDB_PqQq
, BxOpcodeGroupSSE_0ffc
},
2293 /* 0F FD /wm */ { BxPrefixSSE
, BX_IA_PADDW_PqQq
, BxOpcodeGroupSSE_0ffd
},
2294 /* 0F FE /wm */ { BxPrefixSSE
, BX_IA_PADDD_PqQq
, BxOpcodeGroupSSE_0ffe
},
2295 /* 0F FF /wm */ { 0, BX_IA_ERROR
},
2297 // 512 entries for 32bit operand size
2298 /* 00 /dm */ { BxLockable
, BX_IA_ADD_EbGbM
},
2299 /* 01 /dm */ { BxLockable
, BX_IA_ADD_EdGdM
},
2300 /* 02 /dm */ { 0, BX_IA_ADD_GbEbM
},
2301 /* 03 /dm */ { 0, BX_IA_ADD_GdEdM
},
2302 /* 04 /dm */ { BxImmediate_Ib
, BX_IA_ADD_ALIb
},
2303 /* 05 /dm */ { BxImmediate_Id
, BX_IA_ADD_EAXId
},
2304 /* 06 /dm */ { 0, BX_IA_ERROR
},
2305 /* 07 /dm */ { 0, BX_IA_ERROR
},
2306 /* 08 /dm */ { BxLockable
, BX_IA_OR_EbGbM
},
2307 /* 09 /dm */ { BxLockable
, BX_IA_OR_EdGdM
},
2308 /* 0A /dm */ { 0, BX_IA_OR_GbEbM
},
2309 /* 0B /dm */ { 0, BX_IA_OR_GdEdM
},
2310 /* 0C /dm */ { BxImmediate_Ib
, BX_IA_OR_ALIb
},
2311 /* 0D /dm */ { BxImmediate_Id
, BX_IA_OR_EAXId
},
2312 /* 0E /dm */ { 0, BX_IA_ERROR
},
2313 /* 0F /dm */ { 0, BX_IA_ERROR
}, // 2-byte escape
2314 /* 10 /dm */ { BxLockable
, BX_IA_ADC_EbGbM
},
2315 /* 11 /dm */ { BxLockable
, BX_IA_ADC_EdGdM
},
2316 /* 12 /dm */ { 0, BX_IA_ADC_GbEbM
},
2317 /* 13 /dm */ { 0, BX_IA_ADC_GdEdM
},
2318 /* 14 /dm */ { BxImmediate_Ib
, BX_IA_ADC_ALIb
},
2319 /* 15 /dm */ { BxImmediate_Id
, BX_IA_ADC_EAXId
},
2320 /* 16 /dm */ { 0, BX_IA_ERROR
},
2321 /* 17 /dm */ { 0, BX_IA_ERROR
},
2322 /* 18 /dm */ { BxLockable
, BX_IA_SBB_EbGbM
},
2323 /* 19 /dm */ { BxLockable
, BX_IA_SBB_EdGdM
},
2324 /* 1A /dm */ { 0, BX_IA_SBB_GbEbM
},
2325 /* 1B /dm */ { 0, BX_IA_SBB_GdEdM
},
2326 /* 1C /dm */ { BxImmediate_Ib
, BX_IA_SBB_ALIb
},
2327 /* 1D /dm */ { BxImmediate_Id
, BX_IA_SBB_EAXId
},
2328 /* 1E /dm */ { 0, BX_IA_ERROR
},
2329 /* 1F /dm */ { 0, BX_IA_ERROR
},
2330 /* 20 /dm */ { BxLockable
, BX_IA_AND_EbGbM
},
2331 /* 21 /dm */ { BxLockable
, BX_IA_AND_EdGdM
},
2332 /* 22 /dm */ { 0, BX_IA_AND_GbEbM
},
2333 /* 23 /dm */ { 0, BX_IA_AND_GdEdM
},
2334 /* 24 /dm */ { BxImmediate_Ib
, BX_IA_AND_ALIb
},
2335 /* 25 /dm */ { BxImmediate_Id
, BX_IA_AND_EAXId
},
2336 /* 26 /dm */ { 0, BX_IA_ERROR
}, // ES:
2337 /* 27 /dm */ { 0, BX_IA_ERROR
},
2338 /* 28 /dm */ { BxLockable
, BX_IA_SUB_EbGbM
},
2339 /* 29 /dm */ { BxLockable
, BX_IA_SUB_EdGdM
},
2340 /* 2A /dm */ { 0, BX_IA_SUB_GbEbM
},
2341 /* 2B /dm */ { 0, BX_IA_SUB_GdEdM
},
2342 /* 2C /dm */ { BxImmediate_Ib
, BX_IA_SUB_ALIb
},
2343 /* 2D /dm */ { BxImmediate_Id
, BX_IA_SUB_EAXId
},
2344 /* 2E /dm */ { 0, BX_IA_ERROR
}, // CS:
2345 /* 2F /dm */ { 0, BX_IA_ERROR
},
2346 /* 30 /dm */ { BxLockable
, BX_IA_XOR_EbGbM
},
2347 /* 31 /dm */ { BxLockable
, BX_IA_XOR_EdGdM
},
2348 /* 32 /dm */ { 0, BX_IA_XOR_GbEbM
},
2349 /* 33 /dm */ { 0, BX_IA_XOR_GdEdM
},
2350 /* 34 /dm */ { BxImmediate_Ib
, BX_IA_XOR_ALIb
},
2351 /* 35 /dm */ { BxImmediate_Id
, BX_IA_XOR_EAXId
},
2352 /* 36 /dm */ { 0, BX_IA_ERROR
}, // SS:
2353 /* 37 /dm */ { 0, BX_IA_ERROR
},
2354 /* 38 /dm */ { 0, BX_IA_CMP_EbGbM
},
2355 /* 39 /dm */ { 0, BX_IA_CMP_EdGdM
},
2356 /* 3A /dm */ { 0, BX_IA_CMP_GbEbM
},
2357 /* 3B /dm */ { 0, BX_IA_CMP_GdEdM
},
2358 /* 3C /dm */ { BxImmediate_Ib
, BX_IA_CMP_ALIb
},
2359 /* 3D /dm */ { BxImmediate_Id
, BX_IA_CMP_EAXId
},
2360 /* 3E /dm */ { 0, BX_IA_ERROR
}, // DS:
2361 /* 3F /dm */ { 0, BX_IA_ERROR
},
2362 /* 40 /dm */ { 0, BX_IA_ERROR
}, // REX:
2363 /* 41 /dm */ { 0, BX_IA_ERROR
}, // REX:
2364 /* 42 /dm */ { 0, BX_IA_ERROR
}, // REX:
2365 /* 43 /dm */ { 0, BX_IA_ERROR
}, // REX:
2366 /* 44 /dm */ { 0, BX_IA_ERROR
}, // REX:
2367 /* 45 /dm */ { 0, BX_IA_ERROR
}, // REX:
2368 /* 46 /dm */ { 0, BX_IA_ERROR
}, // REX:
2369 /* 47 /dm */ { 0, BX_IA_ERROR
}, // REX:
2370 /* 48 /dm */ { 0, BX_IA_ERROR
}, // REX:
2371 /* 49 /dm */ { 0, BX_IA_ERROR
}, // REX:
2372 /* 4A /dm */ { 0, BX_IA_ERROR
}, // REX:
2373 /* 4B /dm */ { 0, BX_IA_ERROR
}, // REX:
2374 /* 4C /dm */ { 0, BX_IA_ERROR
}, // REX:
2375 /* 4D /dm */ { 0, BX_IA_ERROR
}, // REX:
2376 /* 4E /dm */ { 0, BX_IA_ERROR
}, // REX:
2377 /* 4F /dm */ { 0, BX_IA_ERROR
}, // REX:
2378 /* 50 /dm */ { 0, BX_IA_PUSH_RRX
},
2379 /* 51 /dm */ { 0, BX_IA_PUSH_RRX
},
2380 /* 52 /dm */ { 0, BX_IA_PUSH_RRX
},
2381 /* 53 /dm */ { 0, BX_IA_PUSH_RRX
},
2382 /* 54 /dm */ { 0, BX_IA_PUSH_RRX
},
2383 /* 55 /dm */ { 0, BX_IA_PUSH_RRX
},
2384 /* 56 /dm */ { 0, BX_IA_PUSH_RRX
},
2385 /* 57 /dm */ { 0, BX_IA_PUSH_RRX
},
2386 /* 58 /dm */ { 0, BX_IA_POP_RRX
},
2387 /* 59 /dm */ { 0, BX_IA_POP_RRX
},
2388 /* 5A /dm */ { 0, BX_IA_POP_RRX
},
2389 /* 5B /dm */ { 0, BX_IA_POP_RRX
},
2390 /* 5C /dm */ { 0, BX_IA_POP_RRX
},
2391 /* 5D /dm */ { 0, BX_IA_POP_RRX
},
2392 /* 5E /dm */ { 0, BX_IA_POP_RRX
},
2393 /* 5F /dm */ { 0, BX_IA_POP_RRX
},
2394 /* 60 /dm */ { 0, BX_IA_ERROR
},
2395 /* 61 /dm */ { 0, BX_IA_ERROR
},
2396 /* 62 /dm */ { 0, BX_IA_ERROR
},
2397 /* 63 /dm */ { 0, BX_IA_MOV64_GdEdM
}, // MOVSX_GdEd
2398 /* 64 /dm */ { 0, BX_IA_ERROR
}, // FS:
2399 /* 65 /dm */ { 0, BX_IA_ERROR
}, // GS:
2400 /* 66 /dm */ { 0, BX_IA_ERROR
}, // OS:
2401 /* 67 /dm */ { 0, BX_IA_ERROR
}, // AS:
2402 /* 68 /dm */ { BxImmediate_Id
, BX_IA_PUSH64_Id
},
2403 /* 69 /dm */ { BxImmediate_Id
, BX_IA_IMUL_GdEdIdM
},
2404 /* 6A /dm */ { BxImmediate_Ib_SE
, BX_IA_PUSH64_Id
},
2405 /* 6B /dm */ { BxImmediate_Ib_SE
, BX_IA_IMUL_GdEdIdM
},
2406 /* 6C /dm */ { 0, BX_IA_REP_INSB_YbDX
},
2407 /* 6D /dm */ { 0, BX_IA_REP_INSD_YdDX
},
2408 /* 6E /dm */ { 0, BX_IA_REP_OUTSB_DXXb
},
2409 /* 6F /dm */ { 0, BX_IA_REP_OUTSD_DXXd
},
2410 /* 70 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JO_Jq
},
2411 /* 71 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNO_Jq
},
2412 /* 72 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JB_Jq
},
2413 /* 73 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNB_Jq
},
2414 /* 74 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JZ_Jq
},
2415 /* 75 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNZ_Jq
},
2416 /* 76 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JBE_Jq
},
2417 /* 77 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNBE_Jq
},
2418 /* 78 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JS_Jq
},
2419 /* 79 /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNS_Jq
},
2420 /* 7A /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JP_Jq
},
2421 /* 7B /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNP_Jq
},
2422 /* 7C /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JL_Jq
},
2423 /* 7D /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNL_Jq
},
2424 /* 7E /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JLE_Jq
},
2425 /* 7F /dm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNLE_Jq
},
2426 /* 80 /dm */ { BxGroup1
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG1EbIbM
},
2427 /* 81 /dm */ { BxGroup1
| BxImmediate_Id
, BX_IA_ERROR
, BxOpcodeInfoG1EdM
},
2428 /* 82 /dm */ { 0, BX_IA_ERROR
},
2429 /* 83 /dm */ { BxGroup1
| BxImmediate_Ib_SE
, BX_IA_ERROR
, BxOpcodeInfoG1EdM
},
2430 /* 84 /dm */ { 0, BX_IA_TEST_EbGbM
},
2431 /* 85 /dm */ { 0, BX_IA_TEST_EdGdM
},
2432 /* 86 /dm */ { BxLockable
, BX_IA_XCHG_EbGbM
},
2433 /* 87 /dm */ { BxLockable
, BX_IA_XCHG_EdGdM
},
2434 /* 88 /dm */ { 0, BX_IA_MOV_EbGbM
},
2435 /* 89 /dm */ { 0, BX_IA_MOV_EdGdM
},
2436 /* 8A /dm */ { 0, BX_IA_MOV_GbEbM
},
2437 /* 8B /dm */ { 0, BX_IA_MOV64_GdEdM
},
2438 /* 8C /dm */ { 0, BX_IA_MOV_EwSwM
},
2439 /* 8D /dm */ { 0, BX_IA_LEA_GdM
},
2440 /* 8E /dm */ { 0, BX_IA_MOV_SwEw
},
2441 /* 8F /dm */ { BxGroup1A
, BX_IA_ERROR
, BxOpcodeInfo64G1AEqM
},
2442 /* 90 /dm */ { 0, BX_IA_XCHG_ERXEAX
}, // handles XCHG R8d, EAX
2443 /* 91 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2444 /* 92 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2445 /* 93 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2446 /* 94 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2447 /* 95 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2448 /* 96 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2449 /* 97 /dm */ { 0, BX_IA_XCHG_ERXEAX
},
2450 /* 98 /dm */ { 0, BX_IA_CWDE
},
2451 /* 99 /dm */ { 0, BX_IA_CDQ
},
2452 /* 9A /dm */ { 0, BX_IA_ERROR
},
2453 /* 9B /dm */ { 0, BX_IA_FWAIT
},
2454 /* 9C /dm */ { 0, BX_IA_PUSHF_Fq
},
2455 /* 9D /dm */ { 0, BX_IA_POPF_Fq
},
2456 /* 9E /dm */ { 0, BX_IA_SAHF
},
2457 /* 9F /dm */ { 0, BX_IA_LAHF
},
2458 /* A0 /dm */ { BxImmediate_O
, BX_IA_MOV_ALOq
},
2459 /* A1 /dm */ { BxImmediate_O
, BX_IA_MOV_EAXOq
},
2460 /* A2 /dm */ { BxImmediate_O
, BX_IA_MOV_OqAL
},
2461 /* A3 /dm */ { BxImmediate_O
, BX_IA_MOV_OqEAX
},
2462 /* A4 /dm */ { 0, BX_IA_REP_MOVSB_XbYb
},
2463 /* A5 /dm */ { 0, BX_IA_REP_MOVSD_XdYd
},
2464 /* A6 /dm */ { 0, BX_IA_REP_CMPSB_XbYb
},
2465 /* A7 /dm */ { 0, BX_IA_REP_CMPSD_XdYd
},
2466 /* A8 /dm */ { BxImmediate_Ib
, BX_IA_TEST_ALIb
},
2467 /* A9 /dm */ { BxImmediate_Id
, BX_IA_TEST_EAXId
},
2468 /* AA /dm */ { 0, BX_IA_REP_STOSB_YbAL
},
2469 /* AB /dm */ { 0, BX_IA_REP_STOSD_YdEAX
},
2470 /* AC /dm */ { 0, BX_IA_REP_LODSB_ALXb
},
2471 /* AD /dm */ { 0, BX_IA_REP_LODSD_EAXXd
},
2472 /* AE /dm */ { 0, BX_IA_REP_SCASB_ALXb
},
2473 /* AF /dm */ { 0, BX_IA_REP_SCASD_EAXXd
},
2474 /* B0 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2475 /* B1 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2476 /* B2 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2477 /* B3 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2478 /* B4 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2479 /* B5 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2480 /* B6 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2481 /* B7 /dm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
2482 /* B8 /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2483 /* B9 /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2484 /* BA /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2485 /* BB /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2486 /* BC /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2487 /* BD /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2488 /* BE /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2489 /* BF /dm */ { BxImmediate_Id
, BX_IA_MOV_ERXId
},
2490 /* C0 /dm */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
2491 /* C1 /dm */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2EdM
},
2492 /* C2 /dm */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETnear64_Iw
},
2493 /* C3 /dm */ { BxTraceEnd
, BX_IA_RETnear64
},
2494 /* C4 /dm */ { 0, BX_IA_ERROR
},
2495 /* C5 /dm */ { 0, BX_IA_ERROR
},
2496 /* C6 /dm */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EbM
},
2497 /* C7 /dm */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EdM
},
2498 /* C8 /dm */ { BxImmediate_IwIb
, BX_IA_ENTER64_IwIb
},
2499 /* C9 /dm */ { 0, BX_IA_LEAVE64
},
2500 /* CA /dm */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETfar32_Iw
},
2501 /* CB /dm */ { BxTraceEnd
, BX_IA_RETfar32
},
2502 /* CC /dm */ { BxTraceEnd
, BX_IA_INT3
},
2503 /* CD /dm */ { BxImmediate_Ib
| BxTraceEnd
, BX_IA_INT_Ib
},
2504 /* CE /dm */ { 0, BX_IA_ERROR
},
2505 /* CF /dm */ { BxTraceEnd
, BX_IA_IRET64
},
2506 /* D0 /dm */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
2507 /* D1 /dm */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2EdM
},
2508 /* D2 /dm */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
2509 /* D3 /dm */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2EdM
},
2510 /* D4 /dm */ { 0, BX_IA_ERROR
},
2511 /* D5 /dm */ { 0, BX_IA_ERROR
},
2512 /* D6 /dm */ { 0, BX_IA_ERROR
},
2513 /* D7 /dm */ { 0, BX_IA_XLAT
},
2514 /* D8 /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupD8
},
2515 /* D9 /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupD9
},
2516 /* DA /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDA
},
2517 /* DB /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDB
},
2518 /* DC /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDC
},
2519 /* DD /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDD
},
2520 /* DE /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDE
},
2521 /* DF /dm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDF
},
2522 /* E0 /dm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPNE64_Jb
},
2523 /* E1 /dm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPE64_Jb
},
2524 /* E2 /dm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOP64_Jb
},
2525 /* E3 /dm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JRCXZ_Jb
},
2526 /* E4 /dm */ { BxImmediate_Ib
, BX_IA_IN_ALIb
},
2527 /* E5 /dm */ { BxImmediate_Ib
, BX_IA_IN_EAXIb
},
2528 /* E6 /dm */ { BxImmediate_Ib
, BX_IA_OUT_IbAL
},
2529 /* E7 /dm */ { BxImmediate_Ib
, BX_IA_OUT_IbEAX
},
2530 /* E8 /dm */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_CALL_Jq
},
2531 /* E9 /dm */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_JMP_Jq
},
2532 /* EA /dm */ { 0, BX_IA_ERROR
},
2533 /* EB /dm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JMP_Jq
},
2534 /* EC /dm */ { 0, BX_IA_IN_ALDX
},
2535 /* ED /dm */ { 0, BX_IA_IN_EAXDX
},
2536 /* EE /dm */ { 0, BX_IA_OUT_DXAL
},
2537 /* EF /dm */ { 0, BX_IA_OUT_DXEAX
},
2538 /* F0 /dm */ { 0, BX_IA_ERROR
}, // LOCK:
2539 /* F1 /dm */ { BxTraceEnd
, BX_IA_INT1
},
2540 /* F2 /dm */ { 0, BX_IA_ERROR
}, // REPNE/REPNZ
2541 /* F3 /dm */ { 0, BX_IA_ERROR
}, // REP,REPE/REPZ
2542 /* F4 /dm */ { BxTraceEnd
, BX_IA_HLT
},
2543 /* F5 /dm */ { 0, BX_IA_CMC
},
2544 /* F6 /dm */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EbM
},
2545 /* F7 /dm */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EdM
},
2546 /* F8 /dm */ { 0, BX_IA_CLC
},
2547 /* F9 /dm */ { 0, BX_IA_STC
},
2548 /* FA /dm */ { 0, BX_IA_CLI
},
2549 /* FB /dm */ { 0, BX_IA_STI
},
2550 /* FC /dm */ { 0, BX_IA_CLD
},
2551 /* FD /dm */ { 0, BX_IA_STD
},
2552 /* FE /dm */ { BxGroup4
, BX_IA_ERROR
, BxOpcodeInfoG4M
},
2553 /* FF /dm */ { BxGroup5
, BX_IA_ERROR
, BxOpcodeInfo64G5dM
},
2555 /* 0F 00 /dm */ { BxGroup6
, BX_IA_ERROR
, BxOpcodeInfoG6
},
2556 /* 0F 01 /dm */ { BxGroup7
, BX_IA_ERROR
, BxOpcodeInfo64G7M
},
2557 /* 0F 02 /dm */ { 0, BX_IA_LAR_GvEw
},
2558 /* 0F 03 /dm */ { 0, BX_IA_LSL_GvEw
},
2559 /* 0F 04 /dm */ { 0, BX_IA_ERROR
},
2560 /* 0F 05 /dm */ { BxTraceEnd
, BX_IA_SYSCALL
},
2561 /* 0F 06 /dm */ { 0, BX_IA_CLTS
},
2562 /* 0F 07 /dm */ { BxTraceEnd
, BX_IA_SYSRET
},
2563 /* 0F 08 /dm */ { BxTraceEnd
, BX_IA_INVD
},
2564 /* 0F 09 /dm */ { BxTraceEnd
, BX_IA_WBINVD
},
2565 /* 0F 0A /dm */ { 0, BX_IA_ERROR
},
2566 /* 0F 0B /dm */ { BxTraceEnd
, BX_IA_UD2A
},
2567 /* 0F 0C /dm */ { 0, BX_IA_ERROR
},
2568 /* 0F 0D /dm */ { 0, BX_IA_NOP
}, // 3DNow! PREFETCH on AMD, NOP on Intel
2569 /* 0F 0E /dm */ { 0, BX_IA_FEMMS
}, // 3DNow! FEMMS
2570 #if BX_SUPPORT_3DNOW
2571 /* 0F 0F /dm */ { BxImmediate_Ib
, BX_IA_ERROR
, Bx3DNowOpcodeInfo
},
2573 /* 0F 0F /dm */ { 0, BX_IA_ERROR
},
2575 /* 0F 10 /dm */ { BxPrefixSSE
, BX_IA_MOVUPS_VpsWps
, BxOpcodeGroupSSE_0f10
},
2576 /* 0F 11 /dm */ { BxPrefixSSE
, BX_IA_MOVUPS_WpsVps
, BxOpcodeGroupSSE_0f11
},
2577 /* 0F 12 /dm */ { BxPrefixSSE
, BX_IA_MOVLPS_VpsMq
, BxOpcodeGroupSSE_0f12
},
2578 /* 0F 13 /dm */ { BxPrefixSSE
, BX_IA_MOVLPS_MqVps
, BxOpcodeGroupSSE_0f13M
},
2579 /* 0F 14 /dm */ { BxPrefixSSE
, BX_IA_UNPCKLPS_VpsWdq
, BxOpcodeGroupSSE_0f14
},
2580 /* 0F 15 /dm */ { BxPrefixSSE
, BX_IA_UNPCKHPS_VpsWdq
, BxOpcodeGroupSSE_0f15
},
2581 /* 0F 16 /dm */ { BxPrefixSSE
, BX_IA_MOVHPS_VpsMq
, BxOpcodeGroupSSE_0f16
},
2582 /* 0F 17 /dm */ { BxPrefixSSE
, BX_IA_MOVHPS_MqVps
, BxOpcodeGroupSSE_0f17M
},
2583 /* 0F 18 /dm */ { 0, BX_IA_PREFETCH
}, // opcode group G16, PREFETCH hints
2584 /* 0F 19 /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2585 /* 0F 1A /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2586 /* 0F 1B /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2587 /* 0F 1C /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2588 /* 0F 1D /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2589 /* 0F 1E /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2590 /* 0F 1F /dm */ { 0, BX_IA_NOP
}, // multi-byte NOP
2591 /* 0F 20 /dm */ { 0, BX_IA_MOV_RqCq
},
2592 /* 0F 21 /dm */ { 0, BX_IA_MOV_RqDq
},
2593 /* 0F 22 /dm */ { BxTraceEnd
, BX_IA_MOV_CqRq
},
2594 /* 0F 23 /dm */ { BxTraceEnd
, BX_IA_MOV_DqRq
},
2595 /* 0F 24 /dm */ { 0, BX_IA_ERROR
},
2596 /* 0F 25 /dm */ { 0, BX_IA_ERROR
},
2597 /* 0F 26 /dm */ { 0, BX_IA_ERROR
},
2598 /* 0F 27 /dm */ { 0, BX_IA_ERROR
},
2599 /* 0F 28 /dm */ { BxPrefixSSE
, BX_IA_MOVAPS_VpsWps
, BxOpcodeGroupSSE_0f28
},
2600 /* 0F 29 /dm */ { BxPrefixSSE
, BX_IA_MOVAPS_WpsVps
, BxOpcodeGroupSSE_0f29
},
2601 /* 0F 2A /dm */ { BxPrefixSSE
, BX_IA_CVTPI2PS_VpsQq
, BxOpcodeGroupSSE_0f2a
},
2602 /* 0F 2B /dm */ { BxPrefixSSE
, BX_IA_MOVNTPS_MpsVps
, BxOpcodeGroupSSE_0f2bM
},
2603 /* 0F 2C /dm */ { BxPrefixSSE
, BX_IA_CVTTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2c
},
2604 /* 0F 2D /dm */ { BxPrefixSSE
, BX_IA_CVTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2d
},
2605 /* 0F 2E /dm */ { BxPrefixSSE
, BX_IA_UCOMISS_VssWss
, BxOpcodeGroupSSE_0f2e
},
2606 /* 0F 2F /dm */ { BxPrefixSSE
, BX_IA_COMISS_VpsWps
, BxOpcodeGroupSSE_0f2f
},
2607 /* 0F 30 /dm */ { 0, BX_IA_WRMSR
},
2608 /* 0F 31 /dm */ { 0, BX_IA_RDTSC
},
2609 /* 0F 32 /dm */ { 0, BX_IA_RDMSR
},
2610 /* 0F 33 /dm */ { 0, BX_IA_RDPMC
},
2611 /* 0F 34 /dm */ { 0, BX_IA_SYSENTER
},
2612 /* 0F 35 /dm */ { 0, BX_IA_SYSEXIT
},
2613 /* 0F 36 /dm */ { 0, BX_IA_ERROR
},
2614 /* 0F 37 /dm */ { 0, BX_IA_ERROR
},
2615 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
2616 /* 0F 38 /dm */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f38
}, // 3-byte escape
2618 /* 0F 38 /dm */ { 0, BX_IA_ERROR
},
2620 /* 0F 39 /dm */ { 0, BX_IA_ERROR
},
2621 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
2622 /* 0F 3A /dm */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f3a
}, // 3-byte escape
2624 /* 0F 3A /dm */ { 0, BX_IA_ERROR
},
2626 /* 0F 3B /dm */ { 0, BX_IA_ERROR
},
2627 /* 0F 3C /dm */ { 0, BX_IA_ERROR
},
2628 /* 0F 3D /dm */ { 0, BX_IA_ERROR
},
2629 /* 0F 3E /dm */ { 0, BX_IA_ERROR
},
2630 /* 0F 3F /dm */ { 0, BX_IA_ERROR
},
2631 /* 0F 40 /dm */ { 0, BX_IA_CMOVO_GdEdM
},
2632 /* 0F 41 /dm */ { 0, BX_IA_CMOVNO_GdEdM
},
2633 /* 0F 42 /dm */ { 0, BX_IA_CMOVB_GdEdM
},
2634 /* 0F 43 /dm */ { 0, BX_IA_CMOVNB_GdEdM
},
2635 /* 0F 44 /dm */ { 0, BX_IA_CMOVZ_GdEdM
},
2636 /* 0F 45 /dm */ { 0, BX_IA_CMOVNZ_GdEdM
},
2637 /* 0F 46 /dm */ { 0, BX_IA_CMOVBE_GdEdM
},
2638 /* 0F 47 /dm */ { 0, BX_IA_CMOVNBE_GdEdM
},
2639 /* 0F 48 /dm */ { 0, BX_IA_CMOVS_GdEdM
},
2640 /* 0F 49 /dm */ { 0, BX_IA_CMOVNS_GdEdM
},
2641 /* 0F 4A /dm */ { 0, BX_IA_CMOVP_GdEdM
},
2642 /* 0F 4B /dm */ { 0, BX_IA_CMOVNP_GdEdM
},
2643 /* 0F 4C /dm */ { 0, BX_IA_CMOVL_GdEdM
},
2644 /* 0F 4D /dm */ { 0, BX_IA_CMOVNL_GdEdM
},
2645 /* 0F 4E /dm */ { 0, BX_IA_CMOVLE_GdEdM
},
2646 /* 0F 4F /dm */ { 0, BX_IA_CMOVNLE_GdEdM
},
2647 /* 0F 50 /dm */ { BxPrefixSSE
, BX_IA_MOVMSKPS_GdVRps
, BxOpcodeGroupSSE_0f50
},
2648 /* 0F 51 /dm */ { BxPrefixSSE
, BX_IA_SQRTPS_VpsWps
, BxOpcodeGroupSSE_0f51
},
2649 /* 0F 52 /dm */ { BxPrefixSSE
, BX_IA_RSQRTPS_VpsWps
, BxOpcodeGroupSSE_0f52
},
2650 /* 0F 53 /dm */ { BxPrefixSSE
, BX_IA_RCPPS_VpsWps
, BxOpcodeGroupSSE_0f53
},
2651 /* 0F 54 /dm */ { BxPrefixSSE
, BX_IA_ANDPS_VpsWps
, BxOpcodeGroupSSE_0f54
},
2652 /* 0F 55 /dm */ { BxPrefixSSE
, BX_IA_ANDNPS_VpsWps
, BxOpcodeGroupSSE_0f55
},
2653 /* 0F 56 /dm */ { BxPrefixSSE
, BX_IA_ORPS_VpsWps
, BxOpcodeGroupSSE_0f56
},
2654 /* 0F 57 /dm */ { BxPrefixSSE
, BX_IA_XORPS_VpsWps
, BxOpcodeGroupSSE_0f57
},
2655 /* 0F 58 /dm */ { BxPrefixSSE
, BX_IA_ADDPS_VpsWps
, BxOpcodeGroupSSE_0f58
},
2656 /* 0F 59 /dm */ { BxPrefixSSE
, BX_IA_MULPS_VpsWps
, BxOpcodeGroupSSE_0f59
},
2657 /* 0F 5A /dm */ { BxPrefixSSE
, BX_IA_CVTPS2PD_VpsWps
, BxOpcodeGroupSSE_0f5a
},
2658 /* 0F 5B /dm */ { BxPrefixSSE
, BX_IA_CVTDQ2PS_VpsWdq
, BxOpcodeGroupSSE_0f5b
},
2659 /* 0F 5C /dm */ { BxPrefixSSE
, BX_IA_SUBPS_VpsWps
, BxOpcodeGroupSSE_0f5c
},
2660 /* 0F 5D /dm */ { BxPrefixSSE
, BX_IA_MINPS_VpsWps
, BxOpcodeGroupSSE_0f5d
},
2661 /* 0F 5E /dm */ { BxPrefixSSE
, BX_IA_DIVPS_VpsWps
, BxOpcodeGroupSSE_0f5e
},
2662 /* 0F 5F /dm */ { BxPrefixSSE
, BX_IA_MAXPS_VpsWps
, BxOpcodeGroupSSE_0f5f
},
2663 /* 0F 60 /dm */ { BxPrefixSSE
, BX_IA_PUNPCKLBW_PqQd
, BxOpcodeGroupSSE_0f60
},
2664 /* 0F 61 /dm */ { BxPrefixSSE
, BX_IA_PUNPCKLWD_PqQd
, BxOpcodeGroupSSE_0f61
},
2665 /* 0F 62 /dm */ { BxPrefixSSE
, BX_IA_PUNPCKLDQ_PqQd
, BxOpcodeGroupSSE_0f62
},
2666 /* 0F 63 /dm */ { BxPrefixSSE
, BX_IA_PACKSSWB_PqQq
, BxOpcodeGroupSSE_0f63
},
2667 /* 0F 64 /dm */ { BxPrefixSSE
, BX_IA_PCMPGTB_PqQq
, BxOpcodeGroupSSE_0f64
},
2668 /* 0F 65 /dm */ { BxPrefixSSE
, BX_IA_PCMPGTW_PqQq
, BxOpcodeGroupSSE_0f65
},
2669 /* 0F 66 /dm */ { BxPrefixSSE
, BX_IA_PCMPGTD_PqQq
, BxOpcodeGroupSSE_0f66
},
2670 /* 0F 67 /dm */ { BxPrefixSSE
, BX_IA_PACKUSWB_PqQq
, BxOpcodeGroupSSE_0f67
},
2671 /* 0F 68 /dm */ { BxPrefixSSE
, BX_IA_PUNPCKHBW_PqQq
, BxOpcodeGroupSSE_0f68
},
2672 /* 0F 69 /dm */ { BxPrefixSSE
, BX_IA_PUNPCKHWD_PqQq
, BxOpcodeGroupSSE_0f69
},
2673 /* 0F 6A /dm */ { BxPrefixSSE
, BX_IA_PUNPCKHDQ_PqQq
, BxOpcodeGroupSSE_0f6a
},
2674 /* 0F 6B /dm */ { BxPrefixSSE
, BX_IA_PACKSSDW_PqQq
, BxOpcodeGroupSSE_0f6b
},
2675 /* 0F 6C /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6c
},
2676 /* 0F 6D /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6d
},
2677 /* 0F 6E /dm */ { BxPrefixSSE
, BX_IA_MOVD_PqEd
, BxOpcodeGroupSSE_0f6e
},
2678 /* 0F 6F /dm */ { BxPrefixSSE
, BX_IA_MOVQ_PqQq
, BxOpcodeGroupSSE_0f6f
},
2679 /* 0F 70 /dm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PSHUFW_PqQqIb
, BxOpcodeGroupSSE_0f70
},
2680 /* 0F 71 /dm */ { 0, BX_IA_ERROR
}, // SSE Group G12
2681 /* 0F 72 /dm */ { 0, BX_IA_ERROR
}, // SSE Group G13
2682 /* 0F 73 /dm */ { 0, BX_IA_ERROR
}, // SSE Group G14
2683 /* 0F 74 /dm */ { BxPrefixSSE
, BX_IA_PCMPEQB_PqQq
, BxOpcodeGroupSSE_0f74
},
2684 /* 0F 75 /dm */ { BxPrefixSSE
, BX_IA_PCMPEQW_PqQq
, BxOpcodeGroupSSE_0f75
},
2685 /* 0F 76 /dm */ { BxPrefixSSE
, BX_IA_PCMPEQD_PqQq
, BxOpcodeGroupSSE_0f76
},
2686 /* 0F 77 /dm */ { BxPrefixSSE
, BX_IA_EMMS
, BxOpcodeGroupSSE_ERR
},
2687 /* 0F 78 /dm */ { 0, BX_IA_ERROR
},
2688 /* 0F 79 /dm */ { 0, BX_IA_ERROR
},
2689 /* 0F 7A /dm */ { 0, BX_IA_ERROR
},
2690 /* 0F 7B /dm */ { 0, BX_IA_ERROR
},
2691 /* 0F 7C /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7c
},
2692 /* 0F 7D /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7d
},
2693 /* 0F 7E /dm */ { BxPrefixSSE
, BX_IA_MOVD_EdPd
, BxOpcodeGroupSSE_0f7e
},
2694 /* 0F 7F /dm */ { BxPrefixSSE
, BX_IA_MOVQ_QqPq
, BxOpcodeGroupSSE_0f7f
},
2695 /* 0F 80 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JO_Jq
},
2696 /* 0F 81 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNO_Jq
},
2697 /* 0F 82 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JB_Jq
},
2698 /* 0F 83 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNB_Jq
},
2699 /* 0F 84 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JZ_Jq
},
2700 /* 0F 85 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNZ_Jq
},
2701 /* 0F 86 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JBE_Jq
},
2702 /* 0F 87 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNBE_Jq
},
2703 /* 0F 88 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JS_Jq
},
2704 /* 0F 89 /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNS_Jq
},
2705 /* 0F 8A /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JP_Jq
},
2706 /* 0F 8B /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNP_Jq
},
2707 /* 0F 8C /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JL_Jq
},
2708 /* 0F 8D /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNL_Jq
},
2709 /* 0F 8E /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JLE_Jq
},
2710 /* 0F 8F /dm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNLE_Jq
},
2711 /* 0F 90 /dm */ { 0, BX_IA_SETO_EbM
},
2712 /* 0F 91 /dm */ { 0, BX_IA_SETNO_EbM
},
2713 /* 0F 92 /dm */ { 0, BX_IA_SETB_EbM
},
2714 /* 0F 93 /dm */ { 0, BX_IA_SETNB_EbM
},
2715 /* 0F 94 /dm */ { 0, BX_IA_SETZ_EbM
},
2716 /* 0F 95 /dm */ { 0, BX_IA_SETNZ_EbM
},
2717 /* 0F 96 /dm */ { 0, BX_IA_SETBE_EbM
},
2718 /* 0F 97 /dm */ { 0, BX_IA_SETNBE_EbM
},
2719 /* 0F 98 /dm */ { 0, BX_IA_SETS_EbM
},
2720 /* 0F 99 /dm */ { 0, BX_IA_SETNS_EbM
},
2721 /* 0F 9A /dm */ { 0, BX_IA_SETP_EbM
},
2722 /* 0F 9B /dm */ { 0, BX_IA_SETNP_EbM
},
2723 /* 0F 9C /dm */ { 0, BX_IA_SETL_EbM
},
2724 /* 0F 9D /dm */ { 0, BX_IA_SETNL_EbM
},
2725 /* 0F 9E /dm */ { 0, BX_IA_SETLE_EbM
},
2726 /* 0F 9F /dm */ { 0, BX_IA_SETNLE_EbM
},
2727 /* 0F A0 /dm */ { 0, BX_IA_PUSH64_FS
},
2728 /* 0F A1 /dm */ { 0, BX_IA_POP64_FS
},
2729 /* 0F A2 /dm */ { 0, BX_IA_CPUID
},
2730 /* 0F A3 /dm */ { 0, BX_IA_BT_EdGdM
},
2731 /* 0F A4 /dm */ { BxImmediate_Ib
, BX_IA_SHLD_EdGdM
},
2732 /* 0F A5 /dm */ { 0, BX_IA_SHLD_EdGdM
},
2733 /* 0F A6 /dm */ { 0, BX_IA_ERROR
},
2734 /* 0F A7 /dm */ { 0, BX_IA_ERROR
},
2735 /* 0F A8 /dm */ { 0, BX_IA_PUSH64_GS
},
2736 /* 0F A9 /dm */ { 0, BX_IA_POP64_GS
},
2737 /* 0F AA /dm */ { BxTraceEnd
, BX_IA_RSM
},
2738 /* 0F AB /dm */ { BxLockable
, BX_IA_BTS_EdGdM
},
2739 /* 0F AC /dm */ { BxImmediate_Ib
, BX_IA_SHRD_EdGdM
},
2740 /* 0F AD /dm */ { 0, BX_IA_SHRD_EdGdM
},
2741 /* 0F AE /dm */ { BxGroup15
, BX_IA_ERROR
, BxOpcodeInfoG15M
},
2742 /* 0F AF /dm */ { 0, BX_IA_IMUL_GdEdM
},
2743 /* 0F B0 /dm */ { BxLockable
, BX_IA_CMPXCHG_EbGbM
},
2744 /* 0F B1 /dm */ { BxLockable
, BX_IA_CMPXCHG_EdGdM
},
2745 /* 0F B2 /dm */ { 0, BX_IA_LSS_GdMp
},
2746 /* 0F B3 /dm */ { BxLockable
, BX_IA_BTR_EdGdM
},
2747 /* 0F B4 /dm */ { 0, BX_IA_LFS_GdMp
},
2748 /* 0F B5 /dm */ { 0, BX_IA_LGS_GdMp
},
2749 /* 0F B6 /dm */ { 0, BX_IA_MOVZX_GdEbM
},
2750 /* 0F B7 /dm */ { 0, BX_IA_MOVZX_GdEwM
},
2751 /* 0F B8 /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fb8dM
},
2752 /* 0F B9 /dm */ { BxTraceEnd
, BX_IA_UD2B
},
2753 /* 0F BA /dm */ { BxGroup8
, BX_IA_ERROR
, BxOpcodeInfoG8EdIbM
},
2754 /* 0F BB /dm */ { BxLockable
, BX_IA_BTC_EdGdM
},
2755 /* 0F BC /dm */ { 0, BX_IA_BSF_GdEdM
},
2756 /* 0F BD /dm */ { 0, BX_IA_BSR_GdEdM
},
2757 /* 0F BE /dm */ { 0, BX_IA_MOVSX_GdEbM
},
2758 /* 0F BF /dm */ { 0, BX_IA_MOVSX_GdEwM
},
2759 /* 0F C0 /dm */ { BxLockable
, BX_IA_XADD_EbGbM
},
2760 /* 0F C1 /dm */ { BxLockable
, BX_IA_XADD_EdGdM
},
2761 /* 0F C2 /dm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_CMPPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc2
},
2762 /* 0F C3 /dm */ { BxPrefixSSE
, BX_IA_MOVNTI_MdGd
, BxOpcodeGroupSSE_ERR
},
2763 /* 0F C4 /dm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PINSRW_PqEwIb
, BxOpcodeGroupSSE_0fc4
},
2764 /* 0F C5 /dm */ { 0, BX_IA_ERROR
}, // PEXTRW SSE group
2765 /* 0F C6 /dm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_SHUFPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc6
},
2766 /* 0F C7 /dm */ { BxGroup9
, BX_IA_ERROR
, BxOpcodeInfoG9M
},
2767 /* 0F C8 /dm */ { 0, BX_IA_BSWAP_ERX
},
2768 /* 0F C9 /dm */ { 0, BX_IA_BSWAP_ERX
},
2769 /* 0F CA /dm */ { 0, BX_IA_BSWAP_ERX
},
2770 /* 0F CB /dm */ { 0, BX_IA_BSWAP_ERX
},
2771 /* 0F CC /dm */ { 0, BX_IA_BSWAP_ERX
},
2772 /* 0F CD /dm */ { 0, BX_IA_BSWAP_ERX
},
2773 /* 0F CE /dm */ { 0, BX_IA_BSWAP_ERX
},
2774 /* 0F CF /dm */ { 0, BX_IA_BSWAP_ERX
},
2775 /* 0F D0 /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd0
},
2776 /* 0F D1 /dm */ { BxPrefixSSE
, BX_IA_PSRLW_PqQq
, BxOpcodeGroupSSE_0fd1
},
2777 /* 0F D2 /dm */ { BxPrefixSSE
, BX_IA_PSRLD_PqQq
, BxOpcodeGroupSSE_0fd2
},
2778 /* 0F D3 /dm */ { BxPrefixSSE
, BX_IA_PSRLQ_PqQq
, BxOpcodeGroupSSE_0fd3
},
2779 /* 0F D4 /dm */ { BxPrefixSSE
, BX_IA_PADDQ_PqQq
, BxOpcodeGroupSSE_0fd4
},
2780 /* 0F D5 /dm */ { BxPrefixSSE
, BX_IA_PMULLW_PqQq
, BxOpcodeGroupSSE_0fd5
},
2781 /* 0F D6 /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd6
},
2782 /* 0F D7 /dm */ { BxPrefixSSE
, BX_IA_PMOVMSKB_GdPRq
, BxOpcodeGroupSSE_0fd7
},
2783 /* 0F D8 /dm */ { BxPrefixSSE
, BX_IA_PSUBUSB_PqQq
, BxOpcodeGroupSSE_0fd8
},
2784 /* 0F D9 /dm */ { BxPrefixSSE
, BX_IA_PSUBUSW_PqQq
, BxOpcodeGroupSSE_0fd9
},
2785 /* 0F DA /dm */ { BxPrefixSSE
, BX_IA_PMINUB_PqQq
, BxOpcodeGroupSSE_0fda
},
2786 /* 0F DB /dm */ { BxPrefixSSE
, BX_IA_PAND_PqQq
, BxOpcodeGroupSSE_0fdb
},
2787 /* 0F DC /dm */ { BxPrefixSSE
, BX_IA_PADDUSB_PqQq
, BxOpcodeGroupSSE_0fdc
},
2788 /* 0F DD /dm */ { BxPrefixSSE
, BX_IA_PADDUSW_PqQq
, BxOpcodeGroupSSE_0fdd
},
2789 /* 0F DE /dm */ { BxPrefixSSE
, BX_IA_PMAXUB_PqQq
, BxOpcodeGroupSSE_0fde
},
2790 /* 0F DF /dm */ { BxPrefixSSE
, BX_IA_PANDN_PqQq
, BxOpcodeGroupSSE_0fdf
},
2791 /* 0F E0 /dm */ { BxPrefixSSE
, BX_IA_PAVGB_PqQq
, BxOpcodeGroupSSE_0fe0
},
2792 /* 0F E1 /dm */ { BxPrefixSSE
, BX_IA_PSRAW_PqQq
, BxOpcodeGroupSSE_0fe1
},
2793 /* 0F E2 /dm */ { BxPrefixSSE
, BX_IA_PSRAD_PqQq
, BxOpcodeGroupSSE_0fe2
},
2794 /* 0F E3 /dm */ { BxPrefixSSE
, BX_IA_PAVGW_PqQq
, BxOpcodeGroupSSE_0fe3
},
2795 /* 0F E4 /dm */ { BxPrefixSSE
, BX_IA_PMULHUW_PqQq
, BxOpcodeGroupSSE_0fe4
},
2796 /* 0F E5 /dm */ { BxPrefixSSE
, BX_IA_PMULHW_PqQq
, BxOpcodeGroupSSE_0fe5
},
2797 /* 0F E6 /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fe6
},
2798 /* 0F E7 /dm */ { BxPrefixSSE
, BX_IA_MOVNTQ_MqPq
, BxOpcodeGroupSSE_0fe7M
},
2799 /* 0F E8 /dm */ { BxPrefixSSE
, BX_IA_PSUBSB_PqQq
, BxOpcodeGroupSSE_0fe8
},
2800 /* 0F E9 /dm */ { BxPrefixSSE
, BX_IA_PSUBSW_PqQq
, BxOpcodeGroupSSE_0fe9
},
2801 /* 0F EA /dm */ { BxPrefixSSE
, BX_IA_PMINSW_PqQq
, BxOpcodeGroupSSE_0fea
},
2802 /* 0F EB /dm */ { BxPrefixSSE
, BX_IA_POR_PqQq
, BxOpcodeGroupSSE_0feb
},
2803 /* 0F EC /dm */ { BxPrefixSSE
, BX_IA_PADDSB_PqQq
, BxOpcodeGroupSSE_0fec
},
2804 /* 0F ED /dm */ { BxPrefixSSE
, BX_IA_PADDSW_PqQq
, BxOpcodeGroupSSE_0fed
},
2805 /* 0F EE /dm */ { BxPrefixSSE
, BX_IA_PMAXSW_PqQq
, BxOpcodeGroupSSE_0fee
},
2806 /* 0F EF /dm */ { BxPrefixSSE
, BX_IA_PXOR_PqQq
, BxOpcodeGroupSSE_0fef
},
2807 /* 0F F0 /dm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0ff0M
},
2808 /* 0F F1 /dm */ { BxPrefixSSE
, BX_IA_PSLLW_PqQq
, BxOpcodeGroupSSE_0ff1
},
2809 /* 0F F2 /dm */ { BxPrefixSSE
, BX_IA_PSLLD_PqQq
, BxOpcodeGroupSSE_0ff2
},
2810 /* 0F F3 /dm */ { BxPrefixSSE
, BX_IA_PSLLQ_PqQq
, BxOpcodeGroupSSE_0ff3
},
2811 /* 0F F4 /dm */ { BxPrefixSSE
, BX_IA_PMULUDQ_PqQq
, BxOpcodeGroupSSE_0ff4
},
2812 /* 0F F5 /dm */ { BxPrefixSSE
, BX_IA_PMADDWD_PqQq
, BxOpcodeGroupSSE_0ff5
},
2813 /* 0F F6 /dm */ { BxPrefixSSE
, BX_IA_PSADBW_PqQq
, BxOpcodeGroupSSE_0ff6
},
2814 /* 0F F7 /dm */ { 0, BX_IA_ERROR
}, // MASKMOV SSE group
2815 /* 0F F8 /dm */ { BxPrefixSSE
, BX_IA_PSUBB_PqQq
, BxOpcodeGroupSSE_0ff8
},
2816 /* 0F F9 /dm */ { BxPrefixSSE
, BX_IA_PSUBW_PqQq
, BxOpcodeGroupSSE_0ff9
},
2817 /* 0F FA /dm */ { BxPrefixSSE
, BX_IA_PSUBD_PqQq
, BxOpcodeGroupSSE_0ffa
},
2818 /* 0F FB /dm */ { BxPrefixSSE
, BX_IA_PSUBQ_PqQq
, BxOpcodeGroupSSE_0ffb
},
2819 /* 0F FC /dm */ { BxPrefixSSE
, BX_IA_PADDB_PqQq
, BxOpcodeGroupSSE_0ffc
},
2820 /* 0F FD /dm */ { BxPrefixSSE
, BX_IA_PADDW_PqQq
, BxOpcodeGroupSSE_0ffd
},
2821 /* 0F FE /dm */ { BxPrefixSSE
, BX_IA_PADDD_PqQq
, BxOpcodeGroupSSE_0ffe
},
2822 /* 0F FF /dm */ { 0, BX_IA_ERROR
},
2824 // 512 entries for 64bit operand size
2825 /* 00 /qm */ { BxLockable
, BX_IA_ADD_EbGbM
},
2826 /* 01 /qm */ { BxLockable
, BX_IA_ADD_EqGqM
},
2827 /* 02 /qm */ { 0, BX_IA_ADD_GbEbM
},
2828 /* 03 /qm */ { 0, BX_IA_ADD_GqEqM
},
2829 /* 04 /qm */ { BxImmediate_Ib
, BX_IA_ADD_ALIb
},
2830 /* 05 /qm */ { BxImmediate_Id
, BX_IA_ADD_RAXId
},
2831 /* 06 /qm */ { 0, BX_IA_ERROR
},
2832 /* 07 /qm */ { 0, BX_IA_ERROR
},
2833 /* 08 /qm */ { BxLockable
, BX_IA_OR_EbGbM
},
2834 /* 09 /qm */ { BxLockable
, BX_IA_OR_EqGqM
},
2835 /* 0A /qm */ { 0, BX_IA_OR_GbEbM
},
2836 /* 0B /qm */ { 0, BX_IA_OR_GqEqM
},
2837 /* 0C /qm */ { BxImmediate_Ib
, BX_IA_OR_ALIb
},
2838 /* 0D /qm */ { BxImmediate_Id
, BX_IA_OR_RAXId
},
2839 /* 0E /qm */ { 0, BX_IA_ERROR
},
2840 /* 0F /qm */ { 0, BX_IA_ERROR
}, // 2-byte escape
2841 /* 10 /qm */ { BxLockable
, BX_IA_ADC_EbGbM
},
2842 /* 11 /qm */ { BxLockable
, BX_IA_ADC_EqGqM
},
2843 /* 12 /qm */ { 0, BX_IA_ADC_GbEbM
},
2844 /* 13 /qm */ { 0, BX_IA_ADC_GqEqM
},
2845 /* 14 /qm */ { BxImmediate_Ib
, BX_IA_ADC_ALIb
},
2846 /* 15 /qm */ { BxImmediate_Id
, BX_IA_ADC_RAXId
},
2847 /* 16 /qm */ { 0, BX_IA_ERROR
},
2848 /* 17 /qm */ { 0, BX_IA_ERROR
},
2849 /* 18 /qm */ { BxLockable
, BX_IA_SBB_EbGbM
},
2850 /* 19 /qm */ { BxLockable
, BX_IA_SBB_EqGqM
},
2851 /* 1A /qm */ { 0, BX_IA_SBB_GbEbM
},
2852 /* 1B /qm */ { 0, BX_IA_SBB_GqEqM
},
2853 /* 1C /qm */ { BxImmediate_Ib
, BX_IA_SBB_ALIb
},
2854 /* 1D /qm */ { BxImmediate_Id
, BX_IA_SBB_RAXId
},
2855 /* 1E /qm */ { 0, BX_IA_ERROR
},
2856 /* 1F /qm */ { 0, BX_IA_ERROR
},
2857 /* 20 /qm */ { BxLockable
, BX_IA_AND_EbGbM
},
2858 /* 21 /qm */ { BxLockable
, BX_IA_AND_EqGqM
},
2859 /* 22 /qm */ { 0, BX_IA_AND_GbEbM
},
2860 /* 23 /qm */ { 0, BX_IA_AND_GqEqM
},
2861 /* 24 /qm */ { BxImmediate_Ib
, BX_IA_AND_ALIb
},
2862 /* 25 /qm */ { BxImmediate_Id
, BX_IA_AND_RAXId
},
2863 /* 26 /qm */ { 0, BX_IA_ERROR
}, // ES:
2864 /* 27 /qm */ { 0, BX_IA_ERROR
},
2865 /* 28 /qm */ { BxLockable
, BX_IA_SUB_EbGbM
},
2866 /* 29 /qm */ { BxLockable
, BX_IA_SUB_EqGqM
},
2867 /* 2A /qm */ { 0, BX_IA_SUB_GbEbM
},
2868 /* 2B /qm */ { 0, BX_IA_SUB_GqEqM
},
2869 /* 2C /qm */ { BxImmediate_Ib
, BX_IA_SUB_ALIb
},
2870 /* 2D /qm */ { BxImmediate_Id
, BX_IA_SUB_RAXId
},
2871 /* 2E /qm */ { 0, BX_IA_ERROR
}, // CS:
2872 /* 2F /qm */ { 0, BX_IA_ERROR
},
2873 /* 30 /qm */ { BxLockable
, BX_IA_XOR_EbGbM
},
2874 /* 31 /qm */ { BxLockable
, BX_IA_XOR_EqGqM
},
2875 /* 32 /qm */ { 0, BX_IA_XOR_GbEbM
},
2876 /* 33 /qm */ { 0, BX_IA_XOR_GqEqM
},
2877 /* 34 /qm */ { BxImmediate_Ib
, BX_IA_XOR_ALIb
},
2878 /* 35 /qm */ { BxImmediate_Id
, BX_IA_XOR_RAXId
},
2879 /* 36 /qm */ { 0, BX_IA_ERROR
}, // SS:
2880 /* 37 /qm */ { 0, BX_IA_ERROR
},
2881 /* 38 /qm */ { 0, BX_IA_CMP_EbGbM
},
2882 /* 39 /qm */ { 0, BX_IA_CMP_EqGqM
},
2883 /* 3A /qm */ { 0, BX_IA_CMP_GbEbM
},
2884 /* 3B /qm */ { 0, BX_IA_CMP_GqEqM
},
2885 /* 3C /qm */ { BxImmediate_Ib
, BX_IA_CMP_ALIb
},
2886 /* 3D /qm */ { BxImmediate_Id
, BX_IA_CMP_RAXId
},
2887 /* 3E /qm */ { 0, BX_IA_ERROR
}, // DS:
2888 /* 3F /qm */ { 0, BX_IA_ERROR
},
2889 /* 40 /qm */ { 0, BX_IA_ERROR
}, // REX:
2890 /* 41 /qm */ { 0, BX_IA_ERROR
}, // REX:
2891 /* 42 /qm */ { 0, BX_IA_ERROR
}, // REX:
2892 /* 43 /qm */ { 0, BX_IA_ERROR
}, // REX:
2893 /* 44 /qm */ { 0, BX_IA_ERROR
}, // REX:
2894 /* 45 /qm */ { 0, BX_IA_ERROR
}, // REX:
2895 /* 46 /qm */ { 0, BX_IA_ERROR
}, // REX:
2896 /* 47 /qm */ { 0, BX_IA_ERROR
}, // REX:
2897 /* 48 /qm */ { 0, BX_IA_ERROR
}, // REX:
2898 /* 49 /qm */ { 0, BX_IA_ERROR
}, // REX:
2899 /* 4A /qm */ { 0, BX_IA_ERROR
}, // REX:
2900 /* 4B /qm */ { 0, BX_IA_ERROR
}, // REX:
2901 /* 4C /qm */ { 0, BX_IA_ERROR
}, // REX:
2902 /* 4D /qm */ { 0, BX_IA_ERROR
}, // REX:
2903 /* 4E /qm */ { 0, BX_IA_ERROR
}, // REX:
2904 /* 4F /qm */ { 0, BX_IA_ERROR
}, // REX:
2905 /* 50 /qm */ { 0, BX_IA_PUSH_RRX
},
2906 /* 51 /qm */ { 0, BX_IA_PUSH_RRX
},
2907 /* 52 /qm */ { 0, BX_IA_PUSH_RRX
},
2908 /* 53 /qm */ { 0, BX_IA_PUSH_RRX
},
2909 /* 54 /qm */ { 0, BX_IA_PUSH_RRX
},
2910 /* 55 /qm */ { 0, BX_IA_PUSH_RRX
},
2911 /* 56 /qm */ { 0, BX_IA_PUSH_RRX
},
2912 /* 57 /qm */ { 0, BX_IA_PUSH_RRX
},
2913 /* 58 /qm */ { 0, BX_IA_POP_RRX
},
2914 /* 59 /qm */ { 0, BX_IA_POP_RRX
},
2915 /* 5A /qm */ { 0, BX_IA_POP_RRX
},
2916 /* 5B /qm */ { 0, BX_IA_POP_RRX
},
2917 /* 5C /qm */ { 0, BX_IA_POP_RRX
},
2918 /* 5D /qm */ { 0, BX_IA_POP_RRX
},
2919 /* 5E /qm */ { 0, BX_IA_POP_RRX
},
2920 /* 5F /qm */ { 0, BX_IA_POP_RRX
},
2921 /* 60 /qm */ { 0, BX_IA_ERROR
},
2922 /* 61 /qm */ { 0, BX_IA_ERROR
},
2923 /* 62 /qm */ { 0, BX_IA_ERROR
},
2924 /* 63 /qm */ { 0, BX_IA_MOVSX_GqEdM
},
2925 /* 64 /qm */ { 0, BX_IA_ERROR
}, // FS:
2926 /* 65 /qm */ { 0, BX_IA_ERROR
}, // GS:
2927 /* 66 /qm */ { 0, BX_IA_ERROR
}, // OS:
2928 /* 67 /qm */ { 0, BX_IA_ERROR
}, // AS:
2929 /* 68 /qm */ { BxImmediate_Id
, BX_IA_PUSH64_Id
},
2930 /* 69 /qm */ { BxImmediate_Id
, BX_IA_IMUL_GqEqIdM
},
2931 /* 6A /qm */ { BxImmediate_Ib_SE
, BX_IA_PUSH64_Id
},
2932 /* 6B /qm */ { BxImmediate_Ib_SE
, BX_IA_IMUL_GqEqIdM
},
2933 /* 6C /qm */ { 0, BX_IA_REP_INSB_YbDX
},
2934 /* 6D /qm */ { 0, BX_IA_REP_INSD_YdDX
},
2935 /* 6E /qm */ { 0, BX_IA_REP_OUTSB_DXXb
},
2936 /* 6F /qm */ { 0, BX_IA_REP_OUTSD_DXXd
},
2937 /* 70 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JO_Jq
},
2938 /* 71 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNO_Jq
},
2939 /* 72 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JB_Jq
},
2940 /* 73 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNB_Jq
},
2941 /* 74 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JZ_Jq
},
2942 /* 75 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNZ_Jq
},
2943 /* 76 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JBE_Jq
},
2944 /* 77 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNBE_Jq
},
2945 /* 78 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JS_Jq
},
2946 /* 79 /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNS_Jq
},
2947 /* 7A /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JP_Jq
},
2948 /* 7B /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNP_Jq
},
2949 /* 7C /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JL_Jq
},
2950 /* 7D /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNL_Jq
},
2951 /* 7E /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JLE_Jq
},
2952 /* 7F /qm */ { BxImmediate_BrOff8
| BxTraceJCC
, BX_IA_JNLE_Jq
},
2953 /* 80 /qm */ { BxGroup1
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG1EbIbM
},
2954 /* 81 /qm */ { BxGroup1
| BxImmediate_Id
, BX_IA_ERROR
, BxOpcodeInfo64G1EqM
},
2955 /* 82 /qm */ { 0, BX_IA_ERROR
},
2956 /* 83 /qm */ { BxGroup1
| BxImmediate_Ib_SE
, BX_IA_ERROR
, BxOpcodeInfo64G1EqM
},
2957 /* 84 /qm */ { 0, BX_IA_TEST_EbGbM
},
2958 /* 85 /qm */ { 0, BX_IA_TEST_EqGqM
},
2959 /* 86 /qm */ { BxLockable
, BX_IA_XCHG_EbGbM
},
2960 /* 87 /qm */ { BxLockable
, BX_IA_XCHG_EqGqM
},
2961 /* 88 /qm */ { 0, BX_IA_MOV_EbGbM
},
2962 /* 89 /qm */ { 0, BX_IA_MOV_EqGqM
},
2963 /* 8A /qm */ { 0, BX_IA_MOV_GbEbM
},
2964 /* 8B /qm */ { 0, BX_IA_MOV_GqEqM
},
2965 /* 8C /qm */ { 0, BX_IA_MOV_EwSwM
},
2966 /* 8D /qm */ { 0, BX_IA_LEA_GqM
},
2967 /* 8E /qm */ { 0, BX_IA_MOV_SwEw
},
2968 /* 8F /qm */ { BxGroup1A
, BX_IA_ERROR
, BxOpcodeInfo64G1AEqM
},
2969 /* 90 /qm */ { 0, BX_IA_XCHG_RRXRAX
}, // handles XCHG R8, RAX
2970 /* 91 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2971 /* 92 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2972 /* 93 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2973 /* 94 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2974 /* 95 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2975 /* 96 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2976 /* 97 /qm */ { 0, BX_IA_XCHG_RRXRAX
},
2977 /* 98 /qm */ { 0, BX_IA_CDQE
},
2978 /* 99 /qm */ { 0, BX_IA_CQO
},
2979 /* 9A /qm */ { 0, BX_IA_ERROR
},
2980 /* 9B /qm */ { 0, BX_IA_FWAIT
},
2981 /* 9C /qm */ { 0, BX_IA_PUSHF_Fq
},
2982 /* 9D /qm */ { 0, BX_IA_POPF_Fq
},
2983 /* 9E /qm */ { 0, BX_IA_SAHF
},
2984 /* 9F /qm */ { 0, BX_IA_LAHF
},
2985 /* A0 /qm */ { BxImmediate_O
, BX_IA_MOV_ALOq
},
2986 /* A1 /qm */ { BxImmediate_O
, BX_IA_MOV_RAXOq
},
2987 /* A2 /qm */ { BxImmediate_O
, BX_IA_MOV_OqAL
},
2988 /* A3 /qm */ { BxImmediate_O
, BX_IA_MOV_OqRAX
},
2989 /* A4 /qm */ { 0, BX_IA_REP_MOVSB_XbYb
},
2990 /* A5 /qm */ { 0, BX_IA_REP_MOVSQ_XqYq
},
2991 /* A6 /qm */ { 0, BX_IA_REP_CMPSB_XbYb
},
2992 /* A7 /qm */ { 0, BX_IA_REP_CMPSQ_XqYq
},
2993 /* A8 /qm */ { BxImmediate_Ib
, BX_IA_TEST_ALIb
},
2994 /* A9 /qm */ { BxImmediate_Id
, BX_IA_TEST_RAXId
},
2995 /* AA /qm */ { 0, BX_IA_REP_STOSB_YbAL
},
2996 /* AB /qm */ { 0, BX_IA_REP_STOSQ_YqRAX
},
2997 /* AC /qm */ { 0, BX_IA_REP_LODSB_ALXb
},
2998 /* AD /qm */ { 0, BX_IA_REP_LODSQ_RAXXq
},
2999 /* AE /qm */ { 0, BX_IA_REP_SCASB_ALXb
},
3000 /* AF /qm */ { 0, BX_IA_REP_SCASQ_RAXXq
},
3001 /* B0 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3002 /* B1 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3003 /* B2 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3004 /* B3 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3005 /* B4 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3006 /* B5 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3007 /* B6 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3008 /* B7 /qm */ { BxImmediate_Ib
, BX_IA_MOV_RLIb
},
3009 /* B8 /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3010 /* B9 /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3011 /* BA /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3012 /* BB /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3013 /* BC /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3014 /* BD /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3015 /* BE /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3016 /* BF /qm */ { BxImmediate_Iq
, BX_IA_MOV_RRXIq
},
3017 /* C0 /qm */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
3018 /* C1 /qm */ { BxGroup2
| BxImmediate_Ib
, BX_IA_ERROR
, BxOpcodeInfo64G2EqM
},
3019 /* C2 /qm */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETnear64_Iw
},
3020 /* C3 /qm */ { BxTraceEnd
, BX_IA_RETnear64
},
3021 /* C4 /qm */ { 0, BX_IA_ERROR
},
3022 /* C5 /qm */ { 0, BX_IA_ERROR
},
3023 /* C6 /qm */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfoG11EbM
},
3024 /* C7 /qm */ { BxGroup11
, BX_IA_ERROR
, BxOpcodeInfo64G11EqM
},
3025 /* C8 /qm */ { BxImmediate_IwIb
, BX_IA_ENTER64_IwIb
},
3026 /* C9 /qm */ { 0, BX_IA_LEAVE64
},
3027 /* CA /qm */ { BxImmediate_Iw
| BxTraceEnd
, BX_IA_RETfar64_Iw
},
3028 /* CB /qm */ { BxTraceEnd
, BX_IA_RETfar64
},
3029 /* CC /qm */ { BxTraceEnd
, BX_IA_INT3
},
3030 /* CD /qm */ { BxImmediate_Ib
| BxTraceEnd
, BX_IA_INT_Ib
},
3031 /* CE /qm */ { 0, BX_IA_ERROR
},
3032 /* CF /qm */ { BxTraceEnd
, BX_IA_IRET64
},
3033 /* D0 /qm */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
3034 /* D1 /qm */ { BxGroup2
| BxImmediate_I1
, BX_IA_ERROR
, BxOpcodeInfo64G2EqM
},
3035 /* D2 /qm */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfoG2Eb
},
3036 /* D3 /qm */ { BxGroup2
, BX_IA_ERROR
, BxOpcodeInfo64G2EqM
},
3037 /* D4 /qm */ { 0, BX_IA_ERROR
},
3038 /* D5 /qm */ { 0, BX_IA_ERROR
},
3039 /* D6 /qm */ { 0, BX_IA_ERROR
},
3040 /* D7 /qm */ { 0, BX_IA_XLAT
},
3041 /* D8 /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupD8
},
3042 /* D9 /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupD9
},
3043 /* DA /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDA
},
3044 /* DB /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDB
},
3045 /* DC /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDC
},
3046 /* DD /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDD
},
3047 /* DE /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDE
},
3048 /* DF /qm */ { BxGroupFP
, BX_IA_ERROR
, BxOpcodeInfo_FPGroupDF
},
3049 /* E0 /qm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPNE64_Jb
},
3050 /* E1 /qm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOPE64_Jb
},
3051 /* E2 /qm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_LOOP64_Jb
},
3052 /* E3 /qm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JRCXZ_Jb
},
3053 /* E4 /qm */ { BxImmediate_Ib
, BX_IA_IN_ALIb
},
3054 /* E5 /qm */ { BxImmediate_Ib
, BX_IA_IN_EAXIb
},
3055 /* E6 /qm */ { BxImmediate_Ib
, BX_IA_OUT_IbAL
},
3056 /* E7 /qm */ { BxImmediate_Ib
, BX_IA_OUT_IbEAX
},
3057 /* E8 /qm */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_CALL_Jq
},
3058 /* E9 /qm */ { BxImmediate_BrOff32
| BxTraceEnd
, BX_IA_JMP_Jq
},
3059 /* EA /qm */ { 0, BX_IA_ERROR
},
3060 /* EB /qm */ { BxImmediate_BrOff8
| BxTraceEnd
, BX_IA_JMP_Jq
},
3061 /* EC /qm */ { 0, BX_IA_IN_ALDX
},
3062 /* ED /qm */ { 0, BX_IA_IN_EAXDX
},
3063 /* EE /qm */ { 0, BX_IA_OUT_DXAL
},
3064 /* EF /qm */ { 0, BX_IA_OUT_DXEAX
},
3065 /* F0 /qm */ { 0, BX_IA_ERROR
}, // LOCK:
3066 /* F1 /qm */ { BxTraceEnd
, BX_IA_INT1
},
3067 /* F2 /qm */ { 0, BX_IA_ERROR
}, // REPNE/REPNZ
3068 /* F3 /qm */ { 0, BX_IA_ERROR
}, // REP,REPE/REPZ
3069 /* F4 /qm */ { BxTraceEnd
, BX_IA_HLT
},
3070 /* F5 /qm */ { 0, BX_IA_CMC
},
3071 /* F6 /qm */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfoG3EbM
},
3072 /* F7 /qm */ { BxGroup3
, BX_IA_ERROR
, BxOpcodeInfo64G3EqM
},
3073 /* F8 /qm */ { 0, BX_IA_CLC
},
3074 /* F9 /qm */ { 0, BX_IA_STC
},
3075 /* FA /qm */ { 0, BX_IA_CLI
},
3076 /* FB /qm */ { 0, BX_IA_STI
},
3077 /* FC /qm */ { 0, BX_IA_CLD
},
3078 /* FD /qm */ { 0, BX_IA_STD
},
3079 /* FE /qm */ { BxGroup4
, BX_IA_ERROR
, BxOpcodeInfoG4M
},
3080 /* FF /qm */ { BxGroup5
, BX_IA_ERROR
, BxOpcodeInfo64G5qM
},
3082 /* 0F 00 /qm */ { BxGroup6
, BX_IA_ERROR
, BxOpcodeInfoG6
},
3083 /* 0F 01 /qm */ { BxGroup7
, BX_IA_ERROR
, BxOpcodeInfo64G7M
},
3084 /* 0F 02 /qm */ { 0, BX_IA_LAR_GvEw
},
3085 /* 0F 03 /qm */ { 0, BX_IA_LSL_GvEw
},
3086 /* 0F 04 /qm */ { 0, BX_IA_ERROR
},
3087 /* 0F 05 /qm */ { BxTraceEnd
, BX_IA_SYSCALL
},
3088 /* 0F 06 /qm */ { 0, BX_IA_CLTS
},
3089 /* 0F 07 /qm */ { BxTraceEnd
, BX_IA_SYSRET
},
3090 /* 0F 08 /qm */ { BxTraceEnd
, BX_IA_INVD
},
3091 /* 0F 09 /qm */ { BxTraceEnd
, BX_IA_WBINVD
},
3092 /* 0F 0A /qm */ { 0, BX_IA_ERROR
},
3093 /* 0F 0B /qm */ { BxTraceEnd
, BX_IA_UD2A
},
3094 /* 0F 0C /qm */ { 0, BX_IA_ERROR
},
3095 /* 0F 0D /qm */ { 0, BX_IA_NOP
}, // 3DNow! PREFETCH on AMD, NOP on Intel
3096 /* 0F 0E /qm */ { 0, BX_IA_FEMMS
}, // 3DNow! FEMMS
3097 #if BX_SUPPORT_3DNOW
3098 /* 0F 0F /qm */ { BxImmediate_Ib
, BX_IA_ERROR
, Bx3DNowOpcodeInfo
},
3100 /* 0F 0F /qm */ { 0, BX_IA_ERROR
},
3102 /* 0F 10 /qm */ { BxPrefixSSE
, BX_IA_MOVUPS_VpsWps
, BxOpcodeGroupSSE_0f10
},
3103 /* 0F 11 /qm */ { BxPrefixSSE
, BX_IA_MOVUPS_WpsVps
, BxOpcodeGroupSSE_0f11
},
3104 /* 0F 12 /qm */ { BxPrefixSSE
, BX_IA_MOVLPS_VpsMq
, BxOpcodeGroupSSE_0f12
},
3105 /* 0F 13 /qm */ { BxPrefixSSE
, BX_IA_MOVLPS_MqVps
, BxOpcodeGroupSSE_0f13M
},
3106 /* 0F 14 /qm */ { BxPrefixSSE
, BX_IA_UNPCKLPS_VpsWdq
, BxOpcodeGroupSSE_0f14
},
3107 /* 0F 15 /qm */ { BxPrefixSSE
, BX_IA_UNPCKHPS_VpsWdq
, BxOpcodeGroupSSE_0f15
},
3108 /* 0F 16 /qm */ { BxPrefixSSE
, BX_IA_MOVHPS_VpsMq
, BxOpcodeGroupSSE_0f16
},
3109 /* 0F 17 /qm */ { BxPrefixSSE
, BX_IA_MOVHPS_MqVps
, BxOpcodeGroupSSE_0f17M
},
3110 /* 0F 18 /qm */ { 0, BX_IA_PREFETCH
}, // opcode group G16, PREFETCH hints
3111 /* 0F 19 /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3112 /* 0F 1A /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3113 /* 0F 1B /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3114 /* 0F 1C /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3115 /* 0F 1D /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3116 /* 0F 1E /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3117 /* 0F 1F /qm */ { 0, BX_IA_NOP
}, // multi-byte NOP
3118 /* 0F 20 /qm */ { 0, BX_IA_MOV_RqCq
},
3119 /* 0F 21 /qm */ { 0, BX_IA_MOV_RqDq
},
3120 /* 0F 22 /qm */ { BxTraceEnd
, BX_IA_MOV_CqRq
},
3121 /* 0F 23 /qm */ { BxTraceEnd
, BX_IA_MOV_DqRq
},
3122 /* 0F 24 /qm */ { 0, BX_IA_ERROR
},
3123 /* 0F 25 /qm */ { 0, BX_IA_ERROR
},
3124 /* 0F 26 /qm */ { 0, BX_IA_ERROR
},
3125 /* 0F 27 /qm */ { 0, BX_IA_ERROR
},
3126 /* 0F 28 /qm */ { BxPrefixSSE
, BX_IA_MOVAPS_VpsWps
, BxOpcodeGroupSSE_0f28
},
3127 /* 0F 29 /qm */ { BxPrefixSSE
, BX_IA_MOVAPS_WpsVps
, BxOpcodeGroupSSE_0f29
},
3128 /* 0F 2A /qm */ { BxPrefixSSE
, BX_IA_CVTPI2PS_VpsQq
, BxOpcodeGroupSSE_0f2a
},
3129 /* 0F 2B /qm */ { BxPrefixSSE
, BX_IA_MOVNTPS_MpsVps
, BxOpcodeGroupSSE_0f2bM
},
3130 /* 0F 2C /qm */ { BxPrefixSSE
, BX_IA_CVTTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2c
},
3131 /* 0F 2D /qm */ { BxPrefixSSE
, BX_IA_CVTPS2PI_PqWps
, BxOpcodeGroupSSE_0f2d
},
3132 /* 0F 2E /qm */ { BxPrefixSSE
, BX_IA_UCOMISS_VssWss
, BxOpcodeGroupSSE_0f2e
},
3133 /* 0F 2F /qm */ { BxPrefixSSE
, BX_IA_COMISS_VpsWps
, BxOpcodeGroupSSE_0f2f
},
3134 /* 0F 30 /qm */ { 0, BX_IA_WRMSR
},
3135 /* 0F 31 /qm */ { 0, BX_IA_RDTSC
},
3136 /* 0F 32 /qm */ { 0, BX_IA_RDMSR
},
3137 /* 0F 33 /qm */ { 0, BX_IA_RDPMC
},
3138 /* 0F 34 /qm */ { 0, BX_IA_SYSENTER
},
3139 /* 0F 35 /qm */ { 0, BX_IA_SYSEXIT
},
3140 /* 0F 36 /qm */ { 0, BX_IA_ERROR
},
3141 /* 0F 37 /qm */ { 0, BX_IA_ERROR
},
3142 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
3143 /* 0F 38 /qm */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f38
}, // 3-byte escape
3145 /* 0F 38 /qm */ { 0, BX_IA_ERROR
},
3147 /* 0F 39 /qm */ { 0, BX_IA_ERROR
},
3148 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
3149 /* 0F 3A /qm */ { Bx3ByteOp
, BX_IA_ERROR
, BxOpcode3ByteTable0f3a
}, // 3-byte escape
3151 /* 0F 3A /qm */ { 0, BX_IA_ERROR
},
3153 /* 0F 3B /qm */ { 0, BX_IA_ERROR
},
3154 /* 0F 3C /qm */ { 0, BX_IA_ERROR
},
3155 /* 0F 3D /qm */ { 0, BX_IA_ERROR
},
3156 /* 0F 3E /qm */ { 0, BX_IA_ERROR
},
3157 /* 0F 3F /qm */ { 0, BX_IA_ERROR
},
3158 /* 0F 40 /qm */ { 0, BX_IA_CMOVO_GqEqM
},
3159 /* 0F 41 /qm */ { 0, BX_IA_CMOVNO_GqEqM
},
3160 /* 0F 42 /qm */ { 0, BX_IA_CMOVB_GqEqM
},
3161 /* 0F 43 /qm */ { 0, BX_IA_CMOVNB_GqEqM
},
3162 /* 0F 44 /qm */ { 0, BX_IA_CMOVZ_GqEqM
},
3163 /* 0F 45 /qm */ { 0, BX_IA_CMOVNZ_GqEqM
},
3164 /* 0F 46 /qm */ { 0, BX_IA_CMOVBE_GqEqM
},
3165 /* 0F 47 /qm */ { 0, BX_IA_CMOVNBE_GqEqM
},
3166 /* 0F 48 /qm */ { 0, BX_IA_CMOVS_GqEqM
},
3167 /* 0F 49 /qm */ { 0, BX_IA_CMOVNS_GqEqM
},
3168 /* 0F 4A /qm */ { 0, BX_IA_CMOVP_GqEqM
},
3169 /* 0F 4B /qm */ { 0, BX_IA_CMOVNP_GqEqM
},
3170 /* 0F 4C /qm */ { 0, BX_IA_CMOVL_GqEqM
},
3171 /* 0F 4D /qm */ { 0, BX_IA_CMOVNL_GqEqM
},
3172 /* 0F 4E /qm */ { 0, BX_IA_CMOVLE_GqEqM
},
3173 /* 0F 4F /qm */ { 0, BX_IA_CMOVNLE_GqEqM
},
3174 /* 0F 50 /qm */ { BxPrefixSSE
, BX_IA_MOVMSKPS_GdVRps
, BxOpcodeGroupSSE_0f50
},
3175 /* 0F 51 /qm */ { BxPrefixSSE
, BX_IA_SQRTPS_VpsWps
, BxOpcodeGroupSSE_0f51
},
3176 /* 0F 52 /qm */ { BxPrefixSSE
, BX_IA_RSQRTPS_VpsWps
, BxOpcodeGroupSSE_0f52
},
3177 /* 0F 53 /qm */ { BxPrefixSSE
, BX_IA_RCPPS_VpsWps
, BxOpcodeGroupSSE_0f53
},
3178 /* 0F 54 /qm */ { BxPrefixSSE
, BX_IA_ANDPS_VpsWps
, BxOpcodeGroupSSE_0f54
},
3179 /* 0F 55 /qm */ { BxPrefixSSE
, BX_IA_ANDNPS_VpsWps
, BxOpcodeGroupSSE_0f55
},
3180 /* 0F 56 /qm */ { BxPrefixSSE
, BX_IA_ORPS_VpsWps
, BxOpcodeGroupSSE_0f56
},
3181 /* 0F 57 /qm */ { BxPrefixSSE
, BX_IA_XORPS_VpsWps
, BxOpcodeGroupSSE_0f57
},
3182 /* 0F 58 /qm */ { BxPrefixSSE
, BX_IA_ADDPS_VpsWps
, BxOpcodeGroupSSE_0f58
},
3183 /* 0F 59 /qm */ { BxPrefixSSE
, BX_IA_MULPS_VpsWps
, BxOpcodeGroupSSE_0f59
},
3184 /* 0F 5A /qm */ { BxPrefixSSE
, BX_IA_CVTPS2PD_VpsWps
, BxOpcodeGroupSSE_0f5a
},
3185 /* 0F 5B /qm */ { BxPrefixSSE
, BX_IA_CVTDQ2PS_VpsWdq
, BxOpcodeGroupSSE_0f5b
},
3186 /* 0F 5C /qm */ { BxPrefixSSE
, BX_IA_SUBPS_VpsWps
, BxOpcodeGroupSSE_0f5c
},
3187 /* 0F 5D /qm */ { BxPrefixSSE
, BX_IA_MINPS_VpsWps
, BxOpcodeGroupSSE_0f5d
},
3188 /* 0F 5E /qm */ { BxPrefixSSE
, BX_IA_DIVPS_VpsWps
, BxOpcodeGroupSSE_0f5e
},
3189 /* 0F 5F /qm */ { BxPrefixSSE
, BX_IA_MAXPS_VpsWps
, BxOpcodeGroupSSE_0f5f
},
3190 /* 0F 60 /qm */ { BxPrefixSSE
, BX_IA_PUNPCKLBW_PqQd
, BxOpcodeGroupSSE_0f60
},
3191 /* 0F 61 /qm */ { BxPrefixSSE
, BX_IA_PUNPCKLWD_PqQd
, BxOpcodeGroupSSE_0f61
},
3192 /* 0F 62 /qm */ { BxPrefixSSE
, BX_IA_PUNPCKLDQ_PqQd
, BxOpcodeGroupSSE_0f62
},
3193 /* 0F 63 /qm */ { BxPrefixSSE
, BX_IA_PACKSSWB_PqQq
, BxOpcodeGroupSSE_0f63
},
3194 /* 0F 64 /qm */ { BxPrefixSSE
, BX_IA_PCMPGTB_PqQq
, BxOpcodeGroupSSE_0f64
},
3195 /* 0F 65 /qm */ { BxPrefixSSE
, BX_IA_PCMPGTW_PqQq
, BxOpcodeGroupSSE_0f65
},
3196 /* 0F 66 /qm */ { BxPrefixSSE
, BX_IA_PCMPGTD_PqQq
, BxOpcodeGroupSSE_0f66
},
3197 /* 0F 67 /qm */ { BxPrefixSSE
, BX_IA_PACKUSWB_PqQq
, BxOpcodeGroupSSE_0f67
},
3198 /* 0F 68 /qm */ { BxPrefixSSE
, BX_IA_PUNPCKHBW_PqQq
, BxOpcodeGroupSSE_0f68
},
3199 /* 0F 69 /qm */ { BxPrefixSSE
, BX_IA_PUNPCKHWD_PqQq
, BxOpcodeGroupSSE_0f69
},
3200 /* 0F 6A /qm */ { BxPrefixSSE
, BX_IA_PUNPCKHDQ_PqQq
, BxOpcodeGroupSSE_0f6a
},
3201 /* 0F 6B /qm */ { BxPrefixSSE
, BX_IA_PACKSSDW_PqQq
, BxOpcodeGroupSSE_0f6b
},
3202 /* 0F 6C /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6c
},
3203 /* 0F 6D /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f6d
},
3204 /* 0F 6E /qm */ { BxPrefixSSE
, BX_IA_MOVQ_PqEq
, BxOpcodeGroupSSE_0f6eQ
},
3205 /* 0F 6F /qm */ { BxPrefixSSE
, BX_IA_MOVQ_PqQq
, BxOpcodeGroupSSE_0f6f
},
3206 /* 0F 70 /qm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PSHUFW_PqQqIb
, BxOpcodeGroupSSE_0f70
},
3207 /* 0F 71 /qm */ { 0, BX_IA_ERROR
}, // SSE Group G12
3208 /* 0F 72 /qm */ { 0, BX_IA_ERROR
}, // SSE Group G13
3209 /* 0F 73 /qm */ { 0, BX_IA_ERROR
}, // SSE Group G14
3210 /* 0F 74 /qm */ { BxPrefixSSE
, BX_IA_PCMPEQB_PqQq
, BxOpcodeGroupSSE_0f74
},
3211 /* 0F 75 /qm */ { BxPrefixSSE
, BX_IA_PCMPEQW_PqQq
, BxOpcodeGroupSSE_0f75
},
3212 /* 0F 76 /qm */ { BxPrefixSSE
, BX_IA_PCMPEQD_PqQq
, BxOpcodeGroupSSE_0f76
},
3213 /* 0F 77 /qm */ { BxPrefixSSE
, BX_IA_EMMS
, BxOpcodeGroupSSE_ERR
},
3214 /* 0F 78 /qm */ { 0, BX_IA_ERROR
},
3215 /* 0F 79 /qm */ { 0, BX_IA_ERROR
},
3216 /* 0F 7A /qm */ { 0, BX_IA_ERROR
},
3217 /* 0F 7B /qm */ { 0, BX_IA_ERROR
},
3218 /* 0F 7C /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7c
},
3219 /* 0F 7D /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0f7d
},
3220 /* 0F 7E /qm */ { BxPrefixSSE
, BX_IA_MOVQ_EqPq
, BxOpcodeGroupSSE_0f7eQ
},
3221 /* 0F 7F /qm */ { BxPrefixSSE
, BX_IA_MOVQ_QqPq
, BxOpcodeGroupSSE_0f7f
},
3222 /* 0F 80 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JO_Jq
},
3223 /* 0F 81 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNO_Jq
},
3224 /* 0F 82 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JB_Jq
},
3225 /* 0F 83 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNB_Jq
},
3226 /* 0F 84 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JZ_Jq
},
3227 /* 0F 85 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNZ_Jq
},
3228 /* 0F 86 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JBE_Jq
},
3229 /* 0F 87 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNBE_Jq
},
3230 /* 0F 88 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JS_Jq
},
3231 /* 0F 89 /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNS_Jq
},
3232 /* 0F 8A /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JP_Jq
},
3233 /* 0F 8B /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNP_Jq
},
3234 /* 0F 8C /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JL_Jq
},
3235 /* 0F 8D /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNL_Jq
},
3236 /* 0F 8E /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JLE_Jq
},
3237 /* 0F 8F /qm */ { BxImmediate_BrOff32
| BxTraceJCC
, BX_IA_JNLE_Jq
},
3238 /* 0F 90 /qm */ { 0, BX_IA_SETO_EbM
},
3239 /* 0F 91 /qm */ { 0, BX_IA_SETNO_EbM
},
3240 /* 0F 92 /qm */ { 0, BX_IA_SETB_EbM
},
3241 /* 0F 93 /qm */ { 0, BX_IA_SETNB_EbM
},
3242 /* 0F 94 /qm */ { 0, BX_IA_SETZ_EbM
},
3243 /* 0F 95 /qm */ { 0, BX_IA_SETNZ_EbM
},
3244 /* 0F 96 /qm */ { 0, BX_IA_SETBE_EbM
},
3245 /* 0F 97 /qm */ { 0, BX_IA_SETNBE_EbM
},
3246 /* 0F 98 /qm */ { 0, BX_IA_SETS_EbM
},
3247 /* 0F 99 /qm */ { 0, BX_IA_SETNS_EbM
},
3248 /* 0F 9A /qm */ { 0, BX_IA_SETP_EbM
},
3249 /* 0F 9B /qm */ { 0, BX_IA_SETNP_EbM
},
3250 /* 0F 9C /qm */ { 0, BX_IA_SETL_EbM
},
3251 /* 0F 9D /qm */ { 0, BX_IA_SETNL_EbM
},
3252 /* 0F 9E /qm */ { 0, BX_IA_SETLE_EbM
},
3253 /* 0F 9F /qm */ { 0, BX_IA_SETNLE_EbM
},
3254 /* 0F A0 /qm */ { 0, BX_IA_PUSH64_FS
},
3255 /* 0F A1 /qm */ { 0, BX_IA_POP64_FS
},
3256 /* 0F A2 /qm */ { 0, BX_IA_CPUID
},
3257 /* 0F A3 /qm */ { 0, BX_IA_BT_EqGqM
},
3258 /* 0F A4 /qm */ { BxImmediate_Ib
, BX_IA_SHLD_EqGqM
},
3259 /* 0F A5 /qm */ { 0, BX_IA_SHLD_EqGqM
},
3260 /* 0F A6 /qm */ { 0, BX_IA_ERROR
},
3261 /* 0F A7 /qm */ { 0, BX_IA_ERROR
},
3262 /* 0F A8 /qm */ { 0, BX_IA_PUSH64_GS
},
3263 /* 0F A9 /qm */ { 0, BX_IA_POP64_GS
},
3264 /* 0F AA /qm */ { BxTraceEnd
, BX_IA_RSM
},
3265 /* 0F AB /qm */ { BxLockable
, BX_IA_BTS_EqGqM
},
3266 /* 0F AC /qm */ { BxImmediate_Ib
, BX_IA_SHRD_EqGqM
},
3267 /* 0F AD /qm */ { 0, BX_IA_SHRD_EqGqM
},
3268 /* 0F AE /qm */ { BxGroup15
, BX_IA_ERROR
, BxOpcodeInfoG15M
},
3269 /* 0F AF /qm */ { 0, BX_IA_IMUL_GqEqM
},
3270 /* 0F B0 /qm */ { BxLockable
, BX_IA_CMPXCHG_EbGbM
},
3271 /* 0F B1 /qm */ { BxLockable
, BX_IA_CMPXCHG_EqGqM
},
3272 /* 0F B2 /qm */ { 0, BX_IA_LSS_GqMp
}, // TODO: LSS_GdMp for AMD CPU
3273 /* 0F B3 /qm */ { BxLockable
, BX_IA_BTR_EqGqM
},
3274 /* 0F B4 /qm */ { 0, BX_IA_LFS_GqMp
}, // TODO: LFS_GdMp for AMD CPU
3275 /* 0F B5 /qm */ { 0, BX_IA_LGS_GqMp
}, // TODO: LGS_GdMp for AMD CPU
3276 /* 0F B6 /qm */ { 0, BX_IA_MOVZX_GqEbM
},
3277 /* 0F B7 /qm */ { 0, BX_IA_MOVZX_GqEwM
},
3278 /* 0F B8 /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fb8qM
},
3279 /* 0F B9 /qm */ { BxTraceEnd
, BX_IA_UD2B
},
3280 /* 0F BA /qm */ { BxGroup8
, BX_IA_ERROR
, BxOpcodeInfo64G8EqIbM
},
3281 /* 0F BB /qm */ { BxLockable
, BX_IA_BTC_EqGqM
},
3282 /* 0F BC /qm */ { 0, BX_IA_BSF_GqEqM
},
3283 /* 0F BD /qm */ { 0, BX_IA_BSR_GqEqM
},
3284 /* 0F BE /qm */ { 0, BX_IA_MOVSX_GqEbM
},
3285 /* 0F BF /qm */ { 0, BX_IA_MOVSX_GqEwM
},
3286 /* 0F C0 /qm */ { BxLockable
, BX_IA_XADD_EbGbM
},
3287 /* 0F C1 /qm */ { BxLockable
, BX_IA_XADD_EqGqM
},
3288 /* 0F C2 /qm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_CMPPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc2
},
3289 /* 0F C3 /qm */ { BxPrefixSSE
, BX_IA_MOVNTI_MqGq
, BxOpcodeGroupSSE_ERR
},
3290 /* 0F C4 /qm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_PINSRW_PqEwIb
, BxOpcodeGroupSSE_0fc4
},
3291 /* 0F C5 /qm */ { 0, BX_IA_ERROR
}, // PEXTRW SSE group
3292 /* 0F C6 /qm */ { BxPrefixSSE
| BxImmediate_Ib
, BX_IA_SHUFPS_VpsWpsIb
, BxOpcodeGroupSSE_0fc6
},
3293 /* 0F C7 /qm */ { BxGroup9
, BX_IA_ERROR
, BxOpcodeInfo64G9qM
},
3294 /* 0F C8 /qm */ { 0, BX_IA_BSWAP_RRX
},
3295 /* 0F C9 /qm */ { 0, BX_IA_BSWAP_RRX
},
3296 /* 0F CA /qm */ { 0, BX_IA_BSWAP_RRX
},
3297 /* 0F CB /qm */ { 0, BX_IA_BSWAP_RRX
},
3298 /* 0F CC /qm */ { 0, BX_IA_BSWAP_RRX
},
3299 /* 0F CD /qm */ { 0, BX_IA_BSWAP_RRX
},
3300 /* 0F CE /qm */ { 0, BX_IA_BSWAP_RRX
},
3301 /* 0F CF /qm */ { 0, BX_IA_BSWAP_RRX
},
3302 /* 0F D0 /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd0
},
3303 /* 0F D1 /qm */ { BxPrefixSSE
, BX_IA_PSRLW_PqQq
, BxOpcodeGroupSSE_0fd1
},
3304 /* 0F D2 /qm */ { BxPrefixSSE
, BX_IA_PSRLD_PqQq
, BxOpcodeGroupSSE_0fd2
},
3305 /* 0F D3 /qm */ { BxPrefixSSE
, BX_IA_PSRLQ_PqQq
, BxOpcodeGroupSSE_0fd3
},
3306 /* 0F D4 /qm */ { BxPrefixSSE
, BX_IA_PADDQ_PqQq
, BxOpcodeGroupSSE_0fd4
},
3307 /* 0F D5 /qm */ { BxPrefixSSE
, BX_IA_PMULLW_PqQq
, BxOpcodeGroupSSE_0fd5
},
3308 /* 0F D6 /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fd6
},
3309 /* 0F D7 /qm */ { BxPrefixSSE
, BX_IA_PMOVMSKB_GdPRq
, BxOpcodeGroupSSE_0fd7
},
3310 /* 0F D8 /qm */ { BxPrefixSSE
, BX_IA_PSUBUSB_PqQq
, BxOpcodeGroupSSE_0fd8
},
3311 /* 0F D9 /qm */ { BxPrefixSSE
, BX_IA_PSUBUSW_PqQq
, BxOpcodeGroupSSE_0fd9
},
3312 /* 0F DA /qm */ { BxPrefixSSE
, BX_IA_PMINUB_PqQq
, BxOpcodeGroupSSE_0fda
},
3313 /* 0F DB /qm */ { BxPrefixSSE
, BX_IA_PAND_PqQq
, BxOpcodeGroupSSE_0fdb
},
3314 /* 0F DC /qm */ { BxPrefixSSE
, BX_IA_PADDUSB_PqQq
, BxOpcodeGroupSSE_0fdc
},
3315 /* 0F DD /qm */ { BxPrefixSSE
, BX_IA_PADDUSW_PqQq
, BxOpcodeGroupSSE_0fdd
},
3316 /* 0F DE /qm */ { BxPrefixSSE
, BX_IA_PMAXUB_PqQq
, BxOpcodeGroupSSE_0fde
},
3317 /* 0F DF /qm */ { BxPrefixSSE
, BX_IA_PANDN_PqQq
, BxOpcodeGroupSSE_0fdf
},
3318 /* 0F E0 /qm */ { BxPrefixSSE
, BX_IA_PAVGB_PqQq
, BxOpcodeGroupSSE_0fe0
},
3319 /* 0F E1 /qm */ { BxPrefixSSE
, BX_IA_PSRAW_PqQq
, BxOpcodeGroupSSE_0fe1
},
3320 /* 0F E2 /qm */ { BxPrefixSSE
, BX_IA_PSRAD_PqQq
, BxOpcodeGroupSSE_0fe2
},
3321 /* 0F E3 /qm */ { BxPrefixSSE
, BX_IA_PAVGW_PqQq
, BxOpcodeGroupSSE_0fe3
},
3322 /* 0F E4 /qm */ { BxPrefixSSE
, BX_IA_PMULHUW_PqQq
, BxOpcodeGroupSSE_0fe4
},
3323 /* 0F E5 /qm */ { BxPrefixSSE
, BX_IA_PMULHW_PqQq
, BxOpcodeGroupSSE_0fe5
},
3324 /* 0F E6 /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0fe6
},
3325 /* 0F E7 /qm */ { BxPrefixSSE
, BX_IA_MOVNTQ_MqPq
, BxOpcodeGroupSSE_0fe7M
},
3326 /* 0F E8 /qm */ { BxPrefixSSE
, BX_IA_PSUBSB_PqQq
, BxOpcodeGroupSSE_0fe8
},
3327 /* 0F E9 /qm */ { BxPrefixSSE
, BX_IA_PSUBSW_PqQq
, BxOpcodeGroupSSE_0fe9
},
3328 /* 0F EA /qm */ { BxPrefixSSE
, BX_IA_PMINSW_PqQq
, BxOpcodeGroupSSE_0fea
},
3329 /* 0F EB /qm */ { BxPrefixSSE
, BX_IA_POR_PqQq
, BxOpcodeGroupSSE_0feb
},
3330 /* 0F EC /qm */ { BxPrefixSSE
, BX_IA_PADDSB_PqQq
, BxOpcodeGroupSSE_0fec
},
3331 /* 0F ED /qm */ { BxPrefixSSE
, BX_IA_PADDSW_PqQq
, BxOpcodeGroupSSE_0fed
},
3332 /* 0F EE /qm */ { BxPrefixSSE
, BX_IA_PMAXSW_PqQq
, BxOpcodeGroupSSE_0fee
},
3333 /* 0F EF /qm */ { BxPrefixSSE
, BX_IA_PXOR_PqQq
, BxOpcodeGroupSSE_0fef
},
3334 /* 0F F0 /qm */ { BxPrefixSSE
, BX_IA_ERROR
, BxOpcodeGroupSSE_0ff0M
},
3335 /* 0F F1 /qm */ { BxPrefixSSE
, BX_IA_PSLLW_PqQq
, BxOpcodeGroupSSE_0ff1
},
3336 /* 0F F2 /qm */ { BxPrefixSSE
, BX_IA_PSLLD_PqQq
, BxOpcodeGroupSSE_0ff2
},
3337 /* 0F F3 /qm */ { BxPrefixSSE
, BX_IA_PSLLQ_PqQq
, BxOpcodeGroupSSE_0ff3
},
3338 /* 0F F4 /qm */ { BxPrefixSSE
, BX_IA_PMULUDQ_PqQq
, BxOpcodeGroupSSE_0ff4
},
3339 /* 0F F5 /qm */ { BxPrefixSSE
, BX_IA_PMADDWD_PqQq
, BxOpcodeGroupSSE_0ff5
},
3340 /* 0F F6 /qm */ { BxPrefixSSE
, BX_IA_PSADBW_PqQq
, BxOpcodeGroupSSE_0ff6
},
3341 /* 0F F7 /qm */ { 0, BX_IA_ERROR
}, // MASKMOV SSE group
3342 /* 0F F8 /qm */ { BxPrefixSSE
, BX_IA_PSUBB_PqQq
, BxOpcodeGroupSSE_0ff8
},
3343 /* 0F F9 /qm */ { BxPrefixSSE
, BX_IA_PSUBW_PqQq
, BxOpcodeGroupSSE_0ff9
},
3344 /* 0F FA /qm */ { BxPrefixSSE
, BX_IA_PSUBD_PqQq
, BxOpcodeGroupSSE_0ffa
},
3345 /* 0F FB /qm */ { BxPrefixSSE
, BX_IA_PSUBQ_PqQq
, BxOpcodeGroupSSE_0ffb
},
3346 /* 0F FC /qm */ { BxPrefixSSE
, BX_IA_PADDB_PqQq
, BxOpcodeGroupSSE_0ffc
},
3347 /* 0F FD /qm */ { BxPrefixSSE
, BX_IA_PADDW_PqQq
, BxOpcodeGroupSSE_0ffd
},
3348 /* 0F FE /qm */ { BxPrefixSSE
, BX_IA_PADDD_PqQq
, BxOpcodeGroupSSE_0ffe
},
3349 /* 0F FF /qm */ { 0, BX_IA_ERROR
}
3354 BX_RESOLVE32_BASE_INDEX
,
3356 BX_RESOLVE64_BASE_INDEX
,
3360 unsigned BX_CPP_AttrRegparmN(3)
3361 BX_CPU_C::fetchDecode64(const Bit8u
*iptr
, bxInstruction_c
*i
, unsigned remainingInPage
)
3363 // remain must be at least 1
3364 unsigned remain
= (remainingInPage
< 15) ? remainingInPage
: 15;
3366 unsigned b1
, b2
, ilen
=0, attr
, lock
=0, ia_opcode
= 0;
3367 unsigned imm_mode
, offset
= 512, rex_r
= 0, rex_x
= 0, rex_b
= 0;
3368 unsigned rm
= 0, mod
= 0, nnn
= 0, resolve
= BX_RESOLVE_NONE
;
3369 unsigned seg
= BX_SEG_REG_DS
, seg_override
= BX_SEG_REG_NULL
;
3371 #define SSE_PREFIX_NONE 0
3372 #define SSE_PREFIX_66 1
3373 #define SSE_PREFIX_F2 2
3374 #define SSE_PREFIX_F3 3
3375 unsigned sse_prefix
= SSE_PREFIX_NONE
;
3376 unsigned rex_prefix
= 0;
3378 i
->ResolveModrm
= 0;
3379 i
->init(/*os32*/ 1, // operand size 32 override defaults to 1
3380 /*as32*/ 1, // address size 32 override defaults to 1
3381 /*os64*/ 0, // operand size 64 override defaults to 0
3382 /*as64*/ 1); // address size 64 override defaults to 1
3406 if (ilen
< remain
) {
3410 case 0x0f: // 2 byte escape
3411 if (ilen
< remain
) {
3413 b1
= 0x100 | *iptr
++;
3417 case 0xf2: // REPNE/REPNZ
3418 case 0xf3: // REP/REPE/REPZ
3420 sse_prefix
= b1
& 0xf;
3421 i
->setRepUsed(b1
& 3);
3422 if (ilen
< remain
) {
3430 /* ignore segment override prefix */
3432 if (ilen
< remain
) {
3439 seg_override
= b1
& 0xf;
3440 if (ilen
< remain
) {
3444 case 0x66: // OpSize
3446 if(!sse_prefix
) sse_prefix
= SSE_PREFIX_66
;
3449 if (ilen
< remain
) {
3453 case 0x67: // AddrSize
3456 if (ilen
< remain
) {
3463 if (ilen
< remain
) {
3472 i
->assertExtend8bit();
3473 if (rex_prefix
& 0x8) {
3478 rex_r
= ((rex_prefix
& 0x4) << 1);
3479 rex_x
= ((rex_prefix
& 0x2) << 2);
3480 rex_b
= ((rex_prefix
& 0x1) << 3);
3483 attr
= BxOpcodeInfo64R
[b1
+offset
].Attr
;
3485 if (BxOpcodeHasModrm64
[b1
]) {
3487 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
3489 // handle 3-byte escape
3490 if ((attr
& BxGroupX
) == Bx3ByteOp
) {
3491 if (ilen
< remain
) {
3500 // opcode requires modrm byte
3501 if (ilen
< remain
) {
3508 // Parse mod-nnn-rm and related bytes
3510 nnn
= ((b2
>> 3) & 0x7) | rex_r
;
3511 rm
= (b2
& 0x7) | rex_b
;
3513 // MOVs with CRx and DRx always use register ops and ignore the mod field.
3514 if ((b1
& ~3) == 0x120)
3520 if (mod
== 0xc0) { // mod == 11b
3526 i
->setRm(BX_TMP_REGISTER
);
3527 i
->setSibBase(rm
); // initialize with rm to use BxResolve32Base
3528 i
->setSibIndex(BX_NIL_REGISTER
);
3529 // initialize displ32 with zero to include cases with no diplacement
3530 i
->modRMForm
.displ32u
= 0;
3533 // 64-bit addressing modes; note that mod==11b handled above
3534 resolve
= BX_RESOLVE64_BASE
;
3535 i
->ResolveModrm
= &BX_CPU_C::BxResolve64Base
;
3536 if ((rm
& 0x7) != 4) { // no s-i-b byte
3537 if (mod
== 0x00) { // mod == 00b
3538 if ((rm
& 0x7) == 5) {
3539 i
->setSibBase(BX_64BIT_REG_RIP
);
3541 if ((ilen
+3) < remain
) {
3542 i
->modRMForm
.displ32u
= FetchDWORD(iptr
);
3549 // mod==00b, rm!=4, rm!=5
3552 seg
= sreg_mod01or10_rm32
[rm
];
3553 if (mod
== 0x40) { // mod == 01b
3555 if (ilen
< remain
) {
3556 // 8 sign extended to 32
3557 i
->modRMForm
.displ32u
= (Bit8s
) *iptr
++;
3563 // (mod == 0x80) mod == 10b
3564 goto get_32bit_displ
;
3566 else { // mod!=11b, rm==4, s-i-b byte follows
3567 unsigned sib
, base
, index
, scale
;
3568 if (ilen
< remain
) {
3575 base
= (sib
& 0x7) | rex_b
; sib
>>= 3;
3576 index
= (sib
& 0x7) | rex_x
; sib
>>= 3;
3578 i
->setSibScale(scale
);
3579 i
->setSibBase(base
);
3581 resolve
= BX_RESOLVE64_BASE_INDEX
;
3582 i
->ResolveModrm
= &BX_CPU_C::BxResolve64BaseIndex
;
3583 i
->setSibIndex(index
);
3585 if (mod
== 0x00) { // mod==00b, rm==4
3586 seg
= sreg_mod0_base32
[base
];
3587 if ((base
& 0x7) == 5) {
3588 i
->setSibBase(BX_NIL_REGISTER
);
3589 goto get_32bit_displ
;
3591 // mod==00b, rm==4, base!=5
3594 seg
= sreg_mod1or2_base32
[base
];
3595 if (mod
== 0x40) // mod==01b, rm==4
3596 goto get_8bit_displ
;
3597 // (mod == 0x80), mod==10b, rm==4
3598 goto get_32bit_displ
;
3602 // 32-bit addressing modes; note that mod==11b handled above
3603 resolve
= BX_RESOLVE32_BASE
;
3604 i
->ResolveModrm
= &BX_CPU_C::BxResolve32Base
;
3605 if ((rm
& 0x7) != 4) { // no s-i-b byte
3606 if (mod
== 0x00) { // mod == 00b
3607 if ((rm
& 0x7) == 5) {
3608 i
->setSibBase(BX_32BIT_REG_EIP
);
3609 goto get_32bit_displ
;
3611 // mod==00b, rm!=4, rm!=5
3614 seg
= sreg_mod01or10_rm32
[rm
];
3615 if (mod
== 0x40) // mod == 01b
3616 goto get_8bit_displ
;
3617 // (mod == 0x80) mod == 10b
3618 goto get_32bit_displ
;
3620 else { // mod!=11b, rm==4, s-i-b byte follows
3621 unsigned sib
, base
, index
, scale
;
3622 if (ilen
< remain
) {
3629 base
= (sib
& 0x7) | rex_b
; sib
>>= 3;
3630 index
= (sib
& 0x7) | rex_x
; sib
>>= 3;
3632 i
->setSibBase(base
);
3633 i
->setSibScale(scale
);
3635 resolve
= BX_RESOLVE32_BASE_INDEX
;
3636 i
->ResolveModrm
= &BX_CPU_C::BxResolve32BaseIndex
;
3637 i
->setSibIndex(index
);
3639 if (mod
== 0x00) { // mod==00b, rm==4
3640 seg
= sreg_mod0_base32
[base
];
3641 if ((base
& 0x7) == 5) {
3642 i
->setSibBase(BX_NIL_REGISTER
);
3643 goto get_32bit_displ
;
3645 // mod==00b, rm==4, base!=5
3648 seg
= sreg_mod1or2_base32
[base
];
3649 if (mod
== 0x40) // mod==01b, rm==4
3650 goto get_8bit_displ
;
3651 // (mod == 0x80), mod==10b, rm==4
3652 goto get_32bit_displ
;
3658 // Resolve ExecutePtr and additional opcode Attr
3659 const BxOpcodeInfo_t
*OpcodeInfoPtr
;
3661 OpcodeInfoPtr
= &(BxOpcodeInfo64R
[b1
+offset
]);
3662 attr
= BxOpcodeInfo64R
[b1
+offset
].Attr
;
3665 OpcodeInfoPtr
= &(BxOpcodeInfo64M
[b1
+offset
]);
3666 attr
= BxOpcodeInfo64M
[b1
+offset
].Attr
;
3669 while(attr
& BxGroupX
) {
3670 Bit32u Group
= attr
& BxGroupX
;
3675 OpcodeInfoPtr
= &(OpcodeInfoPtr
->AnotherArray
[nnn
& 0x7]);
3678 OpcodeInfoPtr
= &(OpcodeInfoPtr
->AnotherArray
[rm
& 0x7]);
3680 #if (BX_SUPPORT_SSE >= 4) || (BX_SUPPORT_SSE >= 3 && BX_SUPPORT_SSE_EXTENSION > 0)
3682 OpcodeInfoPtr
= &(OpcodeInfoPtr
->AnotherArray
[b3
]);
3686 OpcodeInfoPtr
= &(OpcodeInfoPtr
->AnotherArray
[offset
>> 8]);
3689 /* For SSE opcodes look into another table
3690 with the opcode prefixes (NONE, 0x66, 0xF2, 0xF3) */
3692 OpcodeInfoPtr
= &(OpcodeInfoPtr
->AnotherArray
[sse_prefix
-1]);
3697 OpcodeInfoPtr
= &(OpcodeInfoPtr
->AnotherArray
[b2
& 0x3f]);
3700 BX_PANIC(("fetchdecode: Unknown opcode group"));
3703 /* get additional attributes from group table */
3704 attr
|= OpcodeInfoPtr
->Attr
;
3707 ia_opcode
= OpcodeInfoPtr
->IA
;
3710 // Opcode does not require a MODRM byte.
3711 // Note that a 2-byte opcode (0F XX) will jump to before
3712 // the if() above after fetching the 2nd byte, so this path is
3713 // taken in all cases if a modrm byte is NOT required.
3714 ia_opcode
= BxOpcodeInfo64R
[b1
+offset
].IA
;
3715 i
->setOpcodeReg((b1
& 7) | rex_b
);
3718 if (lock
) { // lock prefix invalid opcode
3719 // lock prefix not allowed or destination operand is not memory
3720 // mod == 0xc0 can't be BxLockable in fetchdecode tables
3721 if (/*(mod == 0xc0) ||*/ !(attr
& BxLockable
)) {
3722 BX_INFO(("LOCK prefix unallowed (op1=0x%x, mod=%u, nnn=%u)", b1
, mod
, nnn
));
3723 // replace execution function with undefined-opcode
3724 ia_opcode
= BX_IA_ERROR
;
3728 imm_mode
= attr
& BxImmediate
;
3731 case BxImmediate_I1
:
3732 i
->modRMForm
.Ib
= 1;
3734 case BxImmediate_Ib
:
3735 if (ilen
< remain
) {
3736 i
->modRMForm
.Ib
= *iptr
;
3743 case BxImmediate_Ib_SE
: // Sign extend to OS size
3744 if (ilen
< remain
) {
3745 Bit8s temp8s
= *iptr
;
3747 i
->modRMForm
.Id
= (Bit32s
) temp8s
;
3749 i
->modRMForm
.Iw
= (Bit16s
) temp8s
;
3756 case BxImmediate_Iw
:
3757 if ((ilen
+1) < remain
) {
3758 i
->modRMForm
.Iw
= FetchWORD(iptr
);
3765 case BxImmediate_Id
:
3766 if ((ilen
+3) < remain
) {
3767 i
->modRMForm
.Id
= FetchDWORD(iptr
);
3774 case BxImmediate_Iq
: // MOV Rx,imm64
3775 if ((ilen
+7) < remain
) {
3776 i
->IqForm
.Iq
= FetchQWORD(iptr
);
3783 case BxImmediate_BrOff8
:
3784 if (ilen
< remain
) {
3785 i
->modRMForm
.Id
= (Bit8s
) (*iptr
);
3792 case BxImmediate_IwIb
:
3793 if ((ilen
+1) < remain
) {
3794 i
->IxIxForm
.Iw
= FetchWORD(iptr
);
3799 if (ilen
< remain
) {
3800 i
->IxIxForm
.Ib2
= *iptr
;
3808 // For is which embed the address in the opcode. Note
3809 // there is only 64/32-bit addressing available in long-mode.
3811 if ((ilen
+7) < remain
) {
3812 i
->IqForm
.Iq
= FetchQWORD(iptr
);
3818 if ((ilen
+3) < remain
) {
3819 i
->IqForm
.Iq
= (Bit64u
) FetchDWORD(iptr
);
3826 BX_INFO(("b1 was %x", b1
));
3827 BX_PANIC(("fetchdecode: imm_mode = %u", imm_mode
));
3831 #if BX_SUPPORT_3DNOW
3833 ia_opcode
= Bx3DNowOpcodeInfo
[i
->modRMForm
.Ib
].IA
;
3836 if (! BX_NULL_SEG_REG(seg_override
))
3840 #if BX_SUPPORT_TRACE_CACHE
3841 if ((attr
& BxTraceEnd
) || ia_opcode
== BX_IA_ERROR
)
3842 i
->setStopTraceAttr();
3845 if (attr
& BxArithDstRM
) {
3850 i
->execute
= BxOpcodesTable
[ia_opcode
].execute1
;
3851 i
->execute2
= BxOpcodesTable
[ia_opcode
].execute2
;
3856 #if BX_INSTRUMENTATION
3857 i
->ia_opcode
= ia_opcode
;
3863 void BX_CPP_AttrRegparmN(2) BX_CPU_C::optimize64(bxInstruction_c
*i
, unsigned resolve
)
3868 #endif /* if BX_SUPPORT_X86_64 */