Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(638)

Side by Side Diff: opcodes/i386-dis.c

Issue 19803007: Update disassembler in NaCl binutils (Closed) Base URL: http://git.chromium.org/native_client/nacl-binutils.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Print i386 instructions for GDB, the GNU debugger. 1 /* Print i386 instructions for GDB, the GNU debugger.
2 Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2 Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
5 5
6 This file is part of the GNU opcodes library. 6 This file is part of the GNU opcodes library.
7 7
8 This library is free software; you can redistribute it and/or modify 8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option) 10 the Free Software Foundation; either version 3, or (at your option)
11 any later version. 11 any later version.
12 12
13 It is distributed in the hope that it will be useful, but WITHOUT 13 It is distributed in the hope that it will be useful, but WITHOUT
(...skipping 21 matching lines...) Expand all
35 the Intel manual for details. */ 35 the Intel manual for details. */
36 36
37 #include "sysdep.h" 37 #include "sysdep.h"
38 #include "dis-asm.h" 38 #include "dis-asm.h"
39 #include "opintl.h" 39 #include "opintl.h"
40 #include "opcode/i386.h" 40 #include "opcode/i386.h"
41 #include "libiberty.h" 41 #include "libiberty.h"
42 42
43 #include <setjmp.h> 43 #include <setjmp.h>
44 44
45 static int fetch_data (struct disassemble_info *, bfd_byte *);
46 static void ckprefix (void);
47 static const char *prefix_name (int, int);
48 static int print_insn (bfd_vma, disassemble_info *); 45 static int print_insn (bfd_vma, disassemble_info *);
49 static void dofloat (int); 46 static void dofloat (int);
50 static void OP_ST (int, int); 47 static void OP_ST (int, int);
51 static void OP_STi (int, int); 48 static void OP_STi (int, int);
52 static int putop (const char *, int); 49 static int putop (const char *, int);
53 static void oappend (const char *); 50 static void oappend (const char *);
54 static void append_seg (void); 51 static void append_seg (void);
55 static void OP_indirE (int, int); 52 static void OP_indirE (int, int);
56 static void print_operand_value (char *, int, bfd_vma); 53 static void print_operand_value (char *, int, bfd_vma);
57 static void OP_E_register (int, int); 54 static void OP_E_register (int, int);
58 static void OP_E_memory (int, int); 55 static void OP_E_memory (int, int);
59 static void OP_E_extended (int, int);
60 static void print_displacement (char *, bfd_vma); 56 static void print_displacement (char *, bfd_vma);
61 static void OP_E (int, int); 57 static void OP_E (int, int);
62 static void OP_G (int, int); 58 static void OP_G (int, int);
63 static bfd_vma get64 (void); 59 static bfd_vma get64 (void);
64 static bfd_signed_vma get32 (void); 60 static bfd_signed_vma get32 (void);
65 static bfd_signed_vma get32s (void); 61 static bfd_signed_vma get32s (void);
66 static int get16 (void); 62 static int get16 (void);
67 static void set_op (bfd_vma, int); 63 static void set_op (bfd_vma, int);
68 static void OP_Skip_MODRM (int, int); 64 static void OP_Skip_MODRM (int, int);
69 static void OP_REG (int, int); 65 static void OP_REG (int, int);
(...skipping 16 matching lines...) Expand all
86 static void OP_MMX (int, int); 82 static void OP_MMX (int, int);
87 static void OP_XMM (int, int); 83 static void OP_XMM (int, int);
88 static void OP_EM (int, int); 84 static void OP_EM (int, int);
89 static void OP_EX (int, int); 85 static void OP_EX (int, int);
90 static void OP_EMC (int,int); 86 static void OP_EMC (int,int);
91 static void OP_MXC (int,int); 87 static void OP_MXC (int,int);
92 static void OP_MS (int, int); 88 static void OP_MS (int, int);
93 static void OP_XS (int, int); 89 static void OP_XS (int, int);
94 static void OP_M (int, int); 90 static void OP_M (int, int);
95 static void OP_VEX (int, int); 91 static void OP_VEX (int, int);
96 static void OP_VEX_FMA (int, int);
97 static void OP_EX_Vex (int, int); 92 static void OP_EX_Vex (int, int);
98 static void OP_EX_VexW (int, int); 93 static void OP_EX_VexW (int, int);
94 static void OP_EX_VexImmW (int, int);
99 static void OP_XMM_Vex (int, int); 95 static void OP_XMM_Vex (int, int);
100 static void OP_XMM_VexW (int, int); 96 static void OP_XMM_VexW (int, int);
101 static void OP_REG_VexI4 (int, int); 97 static void OP_REG_VexI4 (int, int);
102 static void PCLMUL_Fixup (int, int); 98 static void PCLMUL_Fixup (int, int);
103 static void VEXI4_Fixup (int, int); 99 static void VEXI4_Fixup (int, int);
104 static void VZERO_Fixup (int, int); 100 static void VZERO_Fixup (int, int);
105 static void VCMP_Fixup (int, int); 101 static void VCMP_Fixup (int, int);
106 static void OP_0f07 (int, int); 102 static void OP_0f07 (int, int);
107 static void OP_Monitor (int, int); 103 static void OP_Monitor (int, int);
108 static void OP_Mwait (int, int); 104 static void OP_Mwait (int, int);
109 static void NOP_Fixup1 (int, int); 105 static void NOP_Fixup1 (int, int);
110 static void NOP_Fixup2 (int, int); 106 static void NOP_Fixup2 (int, int);
111 static void OP_3DNowSuffix (int, int); 107 static void OP_3DNowSuffix (int, int);
112 static void CMP_Fixup (int, int); 108 static void CMP_Fixup (int, int);
113 static void BadOp (void); 109 static void BadOp (void);
114 static void REP_Fixup (int, int); 110 static void REP_Fixup (int, int);
111 static void HLE_Fixup1 (int, int);
112 static void HLE_Fixup2 (int, int);
113 static void HLE_Fixup3 (int, int);
115 static void CMPXCHG8B_Fixup (int, int); 114 static void CMPXCHG8B_Fixup (int, int);
116 static void XMM_Fixup (int, int); 115 static void XMM_Fixup (int, int);
117 static void CRC32_Fixup (int, int); 116 static void CRC32_Fixup (int, int);
117 static void FXSAVE_Fixup (int, int);
118 static void OP_LWPCB_E (int, int);
119 static void OP_LWP_E (int, int);
120 static void OP_Vex_2src_1 (int, int);
121 static void OP_Vex_2src_2 (int, int);
118 122
119 static void MOVBE_Fixup (int, int); 123 static void MOVBE_Fixup (int, int);
120 124
121 struct dis_private { 125 struct dis_private {
122 /* Points to first byte not fetched. */ 126 /* Points to first byte not fetched. */
123 bfd_byte *max_fetched; 127 bfd_byte *max_fetched;
124 bfd_byte the_buffer[MAX_MNEM_SIZE]; 128 bfd_byte the_buffer[MAX_MNEM_SIZE];
125 bfd_vma insn_start; 129 bfd_vma insn_start;
126 int orig_sizeflag; 130 int orig_sizeflag;
127 jmp_buf bailout; 131 jmp_buf bailout;
128 }; 132 };
129 133
130 enum address_mode 134 enum address_mode
131 { 135 {
132 mode_16bit, 136 mode_16bit,
133 mode_32bit, 137 mode_32bit,
134 mode_64bit 138 mode_64bit
135 }; 139 };
136 140
137 enum address_mode address_mode; 141 enum address_mode address_mode;
138 142
139 /* Flags for the prefixes for the current instruction. See below. */ 143 /* Flags for the prefixes for the current instruction. See below. */
140 static int prefixes; 144 static int prefixes;
141 145
142 /* REX prefix the current instruction. See below. */ 146 /* REX prefix the current instruction. See below. */
143 static int rex; 147 static int rex;
144 /* Bits of REX we've already used. */ 148 /* Bits of REX we've already used. */
145 static int rex_used; 149 static int rex_used;
146 /* Original REX prefix. */ 150 /* REX bits in original REX prefix ignored. */
147 static int rex_original;
148 /* REX bits in original REX prefix ignored. It may not be the same
149 as rex_original since some bits may not be ignored. */
150 static int rex_ignored; 151 static int rex_ignored;
151 /* Mark parts used in the REX prefix. When we are testing for 152 /* Mark parts used in the REX prefix. When we are testing for
152 empty prefix (for 8bit register REX extension), just mask it 153 empty prefix (for 8bit register REX extension), just mask it
153 out. Otherwise test for REX bit is excuse for existence of REX 154 out. Otherwise test for REX bit is excuse for existence of REX
154 only in case value is nonzero. */ 155 only in case value is nonzero. */
155 #define USED_REX(value) \ 156 #define USED_REX(value) \
156 { \ 157 { \
157 if (value) \ 158 if (value) \
158 { \ 159 { \
159 if ((rex & value)) \ 160 if ((rex & value)) \
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 if (priv->max_fetched == priv->the_buffer) 212 if (priv->max_fetched == priv->the_buffer)
212 (*info->memory_error_func) (status, start, info); 213 (*info->memory_error_func) (status, start, info);
213 longjmp (priv->bailout, 1); 214 longjmp (priv->bailout, 1);
214 } 215 }
215 else 216 else
216 priv->max_fetched = addr; 217 priv->max_fetched = addr;
217 return 1; 218 return 1;
218 } 219 }
219 220
220 #define XX { NULL, 0 } 221 #define XX { NULL, 0 }
222 #define Bad_Opcode NULL, { { NULL, 0 } }
221 223
222 #define Eb { OP_E, b_mode } 224 #define Eb { OP_E, b_mode }
223 #define EbS { OP_E, b_swap_mode } 225 #define EbS { OP_E, b_swap_mode }
224 #define Ev { OP_E, v_mode } 226 #define Ev { OP_E, v_mode }
225 #define EvS { OP_E, v_swap_mode } 227 #define EvS { OP_E, v_swap_mode }
226 #define Ed { OP_E, d_mode } 228 #define Ed { OP_E, d_mode }
227 #define Edq { OP_E, dq_mode } 229 #define Edq { OP_E, dq_mode }
228 #define Edqw { OP_E, dqw_mode } 230 #define Edqw { OP_E, dqw_mode }
229 #define Edqb { OP_E, dqb_mode } 231 #define Edqb { OP_E, dqb_mode }
230 #define Edqd { OP_E, dqd_mode } 232 #define Edqd { OP_E, dqd_mode }
(...skipping 15 matching lines...) Expand all
246 #define Gb { OP_G, b_mode } 248 #define Gb { OP_G, b_mode }
247 #define Gv { OP_G, v_mode } 249 #define Gv { OP_G, v_mode }
248 #define Gd { OP_G, d_mode } 250 #define Gd { OP_G, d_mode }
249 #define Gdq { OP_G, dq_mode } 251 #define Gdq { OP_G, dq_mode }
250 #define Gm { OP_G, m_mode } 252 #define Gm { OP_G, m_mode }
251 #define Gw { OP_G, w_mode } 253 #define Gw { OP_G, w_mode }
252 #define Rd { OP_R, d_mode } 254 #define Rd { OP_R, d_mode }
253 #define Rm { OP_R, m_mode } 255 #define Rm { OP_R, m_mode }
254 #define Ib { OP_I, b_mode } 256 #define Ib { OP_I, b_mode }
255 #define sIb { OP_sI, b_mode } /* sign extened byte */ 257 #define sIb { OP_sI, b_mode } /* sign extened byte */
258 #define sIbT { OP_sI, b_T_mode } /* sign extened byte like 'T' */
256 #define Iv { OP_I, v_mode } 259 #define Iv { OP_I, v_mode }
260 #define sIv { OP_sI, v_mode }
257 #define Iq { OP_I, q_mode } 261 #define Iq { OP_I, q_mode }
258 #define Iv64 { OP_I64, v_mode } 262 #define Iv64 { OP_I64, v_mode }
259 #define Iw { OP_I, w_mode } 263 #define Iw { OP_I, w_mode }
260 #define I1 { OP_I, const_1_mode } 264 #define I1 { OP_I, const_1_mode }
261 #define Jb { OP_J, b_mode } 265 #define Jb { OP_J, b_mode }
262 #define Jv { OP_J, v_mode } 266 #define Jv { OP_J, v_mode }
263 #define Cm { OP_C, m_mode } 267 #define Cm { OP_C, m_mode }
264 #define Dm { OP_D, m_mode } 268 #define Dm { OP_D, m_mode }
265 #define Td { OP_T, d_mode } 269 #define Td { OP_T, d_mode }
266 #define Skip_MODRM { OP_Skip_MODRM, 0 } 270 #define Skip_MODRM { OP_Skip_MODRM, 0 }
267 271
268 #define RMeAX { OP_REG, eAX_reg } 272 #define RMeAX { OP_REG, eAX_reg }
269 #define RMeBX { OP_REG, eBX_reg } 273 #define RMeBX { OP_REG, eBX_reg }
270 #define RMeCX { OP_REG, eCX_reg } 274 #define RMeCX { OP_REG, eCX_reg }
271 #define RMeDX { OP_REG, eDX_reg } 275 #define RMeDX { OP_REG, eDX_reg }
272 #define RMeSP { OP_REG, eSP_reg } 276 #define RMeSP { OP_REG, eSP_reg }
273 #define RMeBP { OP_REG, eBP_reg } 277 #define RMeBP { OP_REG, eBP_reg }
274 #define RMeSI { OP_REG, eSI_reg } 278 #define RMeSI { OP_REG, eSI_reg }
275 #define RMeDI { OP_REG, eDI_reg } 279 #define RMeDI { OP_REG, eDI_reg }
276 #define RMrAX { OP_REG, rAX_reg } 280 #define RMrAX { OP_REG, rAX_reg }
277 #define RMrBX { OP_REG, rBX_reg } 281 #define RMrBX { OP_REG, rBX_reg }
278 #define RMrCX { OP_REG, rCX_reg } 282 #define RMrCX { OP_REG, rCX_reg }
279 #define RMrDX { OP_REG, rDX_reg } 283 #define RMrDX { OP_REG, rDX_reg }
280 #define RMrSP { OP_REG, rSP_reg } 284 #define RMrSP { OP_REG, rSP_reg }
281 #define RMrBP { OP_REG, rBP_reg } 285 #define RMrBP { OP_REG, rBP_reg }
282 #define RMrSI { OP_REG, rSI_reg } 286 #define RMrSI { OP_REG, rSI_reg }
283 #define RMrDI { OP_REG, rDI_reg } 287 #define RMrDI { OP_REG, rDI_reg }
284 #define RMAL { OP_REG, al_reg } 288 #define RMAL { OP_REG, al_reg }
285 #define RMAL { OP_REG, al_reg }
286 #define RMCL { OP_REG, cl_reg } 289 #define RMCL { OP_REG, cl_reg }
287 #define RMDL { OP_REG, dl_reg } 290 #define RMDL { OP_REG, dl_reg }
288 #define RMBL { OP_REG, bl_reg } 291 #define RMBL { OP_REG, bl_reg }
289 #define RMAH { OP_REG, ah_reg } 292 #define RMAH { OP_REG, ah_reg }
290 #define RMCH { OP_REG, ch_reg } 293 #define RMCH { OP_REG, ch_reg }
291 #define RMDH { OP_REG, dh_reg } 294 #define RMDH { OP_REG, dh_reg }
292 #define RMBH { OP_REG, bh_reg } 295 #define RMBH { OP_REG, bh_reg }
293 #define RMAX { OP_REG, ax_reg } 296 #define RMAX { OP_REG, ax_reg }
294 #define RMDX { OP_REG, dx_reg } 297 #define RMDX { OP_REG, dx_reg }
295 298
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 331
329 #define es { OP_REG, es_reg } 332 #define es { OP_REG, es_reg }
330 #define ss { OP_REG, ss_reg } 333 #define ss { OP_REG, ss_reg }
331 #define cs { OP_REG, cs_reg } 334 #define cs { OP_REG, cs_reg }
332 #define ds { OP_REG, ds_reg } 335 #define ds { OP_REG, ds_reg }
333 #define fs { OP_REG, fs_reg } 336 #define fs { OP_REG, fs_reg }
334 #define gs { OP_REG, gs_reg } 337 #define gs { OP_REG, gs_reg }
335 338
336 #define MX { OP_MMX, 0 } 339 #define MX { OP_MMX, 0 }
337 #define XM { OP_XMM, 0 } 340 #define XM { OP_XMM, 0 }
341 #define XMScalar { OP_XMM, scalar_mode }
342 #define XMGatherQ { OP_XMM, vex_vsib_q_w_dq_mode }
338 #define XMM { OP_XMM, xmm_mode } 343 #define XMM { OP_XMM, xmm_mode }
339 #define EM { OP_EM, v_mode } 344 #define EM { OP_EM, v_mode }
340 #define EMS { OP_EM, v_swap_mode } 345 #define EMS { OP_EM, v_swap_mode }
341 #define EMd { OP_EM, d_mode } 346 #define EMd { OP_EM, d_mode }
342 #define EMx { OP_EM, x_mode } 347 #define EMx { OP_EM, x_mode }
343 #define EXw { OP_EX, w_mode } 348 #define EXw { OP_EX, w_mode }
344 #define EXd { OP_EX, d_mode } 349 #define EXd { OP_EX, d_mode }
350 #define EXdScalar { OP_EX, d_scalar_mode }
345 #define EXdS { OP_EX, d_swap_mode } 351 #define EXdS { OP_EX, d_swap_mode }
346 #define EXq { OP_EX, q_mode } 352 #define EXq { OP_EX, q_mode }
353 #define EXqScalar { OP_EX, q_scalar_mode }
354 #define EXqScalarS { OP_EX, q_scalar_swap_mode }
347 #define EXqS { OP_EX, q_swap_mode } 355 #define EXqS { OP_EX, q_swap_mode }
348 #define EXx { OP_EX, x_mode } 356 #define EXx { OP_EX, x_mode }
349 #define EXxS { OP_EX, x_swap_mode } 357 #define EXxS { OP_EX, x_swap_mode }
350 #define EXxmm { OP_EX, xmm_mode } 358 #define EXxmm { OP_EX, xmm_mode }
351 #define EXxmmq { OP_EX, xmmq_mode } 359 #define EXxmmq { OP_EX, xmmq_mode }
360 #define EXxmm_mb { OP_EX, xmm_mb_mode }
361 #define EXxmm_mw { OP_EX, xmm_mw_mode }
362 #define EXxmm_md { OP_EX, xmm_md_mode }
363 #define EXxmm_mq { OP_EX, xmm_mq_mode }
364 #define EXxmmdw { OP_EX, xmmdw_mode }
365 #define EXxmmqd { OP_EX, xmmqd_mode }
352 #define EXymmq { OP_EX, ymmq_mode } 366 #define EXymmq { OP_EX, ymmq_mode }
353 #define EXVexWdq { OP_EX, vex_w_dq_mode } 367 #define EXVexWdq { OP_EX, vex_w_dq_mode }
368 #define EXVexWdqScalar { OP_EX, vex_scalar_w_dq_mode }
354 #define MS { OP_MS, v_mode } 369 #define MS { OP_MS, v_mode }
355 #define XS { OP_XS, v_mode } 370 #define XS { OP_XS, v_mode }
356 #define EMCq { OP_EMC, q_mode } 371 #define EMCq { OP_EMC, q_mode }
357 #define MXC { OP_MXC, 0 } 372 #define MXC { OP_MXC, 0 }
358 #define OPSUF { OP_3DNowSuffix, 0 } 373 #define OPSUF { OP_3DNowSuffix, 0 }
359 #define CMP { CMP_Fixup, 0 } 374 #define CMP { CMP_Fixup, 0 }
360 #define XMM0 { XMM_Fixup, 0 } 375 #define XMM0 { XMM_Fixup, 0 }
376 #define FXSAVE { FXSAVE_Fixup, 0 }
377 #define Vex_2src_1 { OP_Vex_2src_1, 0 }
378 #define Vex_2src_2 { OP_Vex_2src_2, 0 }
361 379
362 #define Vex { OP_VEX, vex_mode } 380 #define Vex { OP_VEX, vex_mode }
381 #define VexScalar { OP_VEX, vex_scalar_mode }
382 #define VexGatherQ { OP_VEX, vex_vsib_q_w_dq_mode }
363 #define Vex128 { OP_VEX, vex128_mode } 383 #define Vex128 { OP_VEX, vex128_mode }
364 #define Vex256 { OP_VEX, vex256_mode } 384 #define Vex256 { OP_VEX, vex256_mode }
385 #define VexGdq { OP_VEX, dq_mode }
365 #define VexI4 { VEXI4_Fixup, 0} 386 #define VexI4 { VEXI4_Fixup, 0}
366 #define VexFMA { OP_VEX_FMA, vex_mode }
367 #define Vex128FMA { OP_VEX_FMA, vex128_mode }
368 #define EXdVex { OP_EX_Vex, d_mode } 387 #define EXdVex { OP_EX_Vex, d_mode }
369 #define EXdVexS { OP_EX_Vex, d_swap_mode } 388 #define EXdVexS { OP_EX_Vex, d_swap_mode }
389 #define EXdVexScalarS { OP_EX_Vex, d_scalar_swap_mode }
370 #define EXqVex { OP_EX_Vex, q_mode } 390 #define EXqVex { OP_EX_Vex, q_mode }
371 #define EXqVexS { OP_EX_Vex, q_swap_mode } 391 #define EXqVexS { OP_EX_Vex, q_swap_mode }
392 #define EXqVexScalarS { OP_EX_Vex, q_scalar_swap_mode }
372 #define EXVexW { OP_EX_VexW, x_mode } 393 #define EXVexW { OP_EX_VexW, x_mode }
373 #define EXdVexW { OP_EX_VexW, d_mode } 394 #define EXdVexW { OP_EX_VexW, d_mode }
374 #define EXqVexW { OP_EX_VexW, q_mode } 395 #define EXqVexW { OP_EX_VexW, q_mode }
396 #define EXVexImmW { OP_EX_VexImmW, x_mode }
375 #define XMVex { OP_XMM_Vex, 0 } 397 #define XMVex { OP_XMM_Vex, 0 }
398 #define XMVexScalar { OP_XMM_Vex, scalar_mode }
376 #define XMVexW { OP_XMM_VexW, 0 } 399 #define XMVexW { OP_XMM_VexW, 0 }
377 #define XMVexI4 { OP_REG_VexI4, x_mode } 400 #define XMVexI4 { OP_REG_VexI4, x_mode }
378 #define PCLMUL { PCLMUL_Fixup, 0 } 401 #define PCLMUL { PCLMUL_Fixup, 0 }
379 #define VZERO { VZERO_Fixup, 0 } 402 #define VZERO { VZERO_Fixup, 0 }
380 #define VCMP { VCMP_Fixup, 0 } 403 #define VCMP { VCMP_Fixup, 0 }
381 404
405 #define MVexVSIBDWpX { OP_M, vex_vsib_d_w_dq_mode }
406 #define MVexVSIBQWpX { OP_M, vex_vsib_q_w_dq_mode }
407
382 /* Used handle "rep" prefix for string instructions. */ 408 /* Used handle "rep" prefix for string instructions. */
383 #define Xbr { REP_Fixup, eSI_reg } 409 #define Xbr { REP_Fixup, eSI_reg }
384 #define Xvr { REP_Fixup, eSI_reg } 410 #define Xvr { REP_Fixup, eSI_reg }
385 #define Ybr { REP_Fixup, eDI_reg } 411 #define Ybr { REP_Fixup, eDI_reg }
386 #define Yvr { REP_Fixup, eDI_reg } 412 #define Yvr { REP_Fixup, eDI_reg }
387 #define Yzr { REP_Fixup, eDI_reg } 413 #define Yzr { REP_Fixup, eDI_reg }
388 #define indirDXr { REP_Fixup, indir_dx_reg } 414 #define indirDXr { REP_Fixup, indir_dx_reg }
389 #define ALr { REP_Fixup, al_reg } 415 #define ALr { REP_Fixup, al_reg }
390 #define eAXr { REP_Fixup, eAX_reg } 416 #define eAXr { REP_Fixup, eAX_reg }
391 417
418 /* Used handle HLE prefix for lockable instructions. */
419 #define Ebh1 { HLE_Fixup1, b_mode }
420 #define Evh1 { HLE_Fixup1, v_mode }
421 #define Ebh2 { HLE_Fixup2, b_mode }
422 #define Evh2 { HLE_Fixup2, v_mode }
423 #define Ebh3 { HLE_Fixup3, b_mode }
424 #define Evh3 { HLE_Fixup3, v_mode }
425
392 #define cond_jump_flag { NULL, cond_jump_mode } 426 #define cond_jump_flag { NULL, cond_jump_mode }
393 #define loop_jcxz_flag { NULL, loop_jcxz_mode } 427 #define loop_jcxz_flag { NULL, loop_jcxz_mode }
394 428
395 /* bits in sizeflag */ 429 /* bits in sizeflag */
396 #define SUFFIX_ALWAYS 4 430 #define SUFFIX_ALWAYS 4
397 #define AFLAG 2 431 #define AFLAG 2
398 #define DFLAG 1 432 #define DFLAG 1
399 433
400 /* byte operand */ 434 enum
401 #define b_mode» » » 1 435 {
402 /* byte operand with operand swapped */ 436 /* byte operand */
403 #define b_swap_mode» » (b_mode + 1) 437 b_mode = 1,
404 /* operand size depends on prefixes */ 438 /* byte operand with operand swapped */
405 #define v_mode» » » (b_swap_mode + 1) 439 b_swap_mode,
406 /* operand size depends on prefixes with operand swapped */ 440 /* byte operand, sign extend like 'T' suffix */
407 #define v_swap_mode» » (v_mode + 1) 441 b_T_mode,
408 /* word operand */ 442 /* operand size depends on prefixes */
409 #define w_mode» » » (v_swap_mode + 1) 443 v_mode,
410 /* double word operand */ 444 /* operand size depends on prefixes with operand swapped */
411 #define d_mode» » » (w_mode + 1) 445 v_swap_mode,
412 /* double word operand with operand swapped */ 446 /* word operand */
413 #define d_swap_mode» » (d_mode + 1) 447 w_mode,
414 /* quad word operand */ 448 /* double word operand */
415 #define q_mode» » » (d_swap_mode + 1) 449 d_mode,
416 /* quad word operand with operand swapped */ 450 /* double word operand with operand swapped */
417 #define q_swap_mode» » (q_mode + 1) 451 d_swap_mode,
418 /* ten-byte operand */ 452 /* quad word operand */
419 #define t_mode» » » (q_swap_mode + 1) 453 q_mode,
420 /* 16-byte XMM or 32-byte YMM operand */ 454 /* quad word operand with operand swapped */
421 #define x_mode» » » (t_mode + 1) 455 q_swap_mode,
422 /* 16-byte XMM or 32-byte YMM operand with operand swapped */ 456 /* ten-byte operand */
423 #define x_swap_mode» » (x_mode + 1) 457 t_mode,
424 /* 16-byte XMM operand */ 458 /* 16-byte XMM or 32-byte YMM operand */
425 #define xmm_mode» » (x_swap_mode + 1) 459 x_mode,
426 /* 16-byte XMM or quad word operand */ 460 /* 16-byte XMM or 32-byte YMM operand with operand swapped */
427 #define xmmq_mode» » (xmm_mode + 1) 461 x_swap_mode,
428 /* 32-byte YMM or quad word operand */ 462 /* 16-byte XMM operand */
429 #define ymmq_mode» » (xmmq_mode + 1) 463 xmm_mode,
430 /* d_mode in 32bit, q_mode in 64bit mode. */ 464 /* 16-byte XMM or quad word operand */
431 #define m_mode» » » (ymmq_mode + 1) 465 xmmq_mode,
432 /* pair of v_mode operands */ 466 /* XMM register or byte memory operand */
433 #define a_mode» » » (m_mode + 1) 467 xmm_mb_mode,
434 #define cond_jump_mode» » (a_mode + 1) 468 /* XMM register or word memory operand */
435 #define loop_jcxz_mode» » (cond_jump_mode + 1) 469 xmm_mw_mode,
436 /* operand size depends on REX prefixes. */ 470 /* XMM register or double word memory operand */
437 #define dq_mode»» » (loop_jcxz_mode + 1) 471 xmm_md_mode,
438 /* registers like dq_mode, memory like w_mode. */ 472 /* XMM register or quad word memory operand */
439 #define dqw_mode» » (dq_mode + 1) 473 xmm_mq_mode,
440 /* 4- or 6-byte pointer operand */ 474 /* 16-byte XMM, word or double word operand */
441 #define f_mode» » » (dqw_mode + 1) 475 xmmdw_mode,
442 #define const_1_mode» » (f_mode + 1) 476 /* 16-byte XMM, double word or quad word operand */
443 /* v_mode for stack-related opcodes. */ 477 xmmqd_mode,
444 #define stack_v_mode» » (const_1_mode + 1) 478 /* 32-byte YMM or quad word operand */
445 /* non-quad operand size depends on prefixes */ 479 ymmq_mode,
446 #define z_mode» » » (stack_v_mode + 1) 480 /* 32-byte YMM or 16-byte word operand */
447 /* 16-byte operand */ 481 ymmxmm_mode,
448 #define o_mode» » » (z_mode + 1) 482 /* d_mode in 32bit, q_mode in 64bit mode. */
449 /* registers like dq_mode, memory like b_mode. */ 483 m_mode,
450 #define dqb_mode» » (o_mode + 1) 484 /* pair of v_mode operands */
451 /* registers like dq_mode, memory like d_mode. */ 485 a_mode,
452 #define dqd_mode» » (dqb_mode + 1) 486 cond_jump_mode,
453 /* normal vex mode */ 487 loop_jcxz_mode,
454 #define vex_mode» » (dqd_mode + 1) 488 /* operand size depends on REX prefixes. */
455 /* 128bit vex mode */ 489 dq_mode,
456 #define vex128_mode» » (vex_mode + 1) 490 /* registers like dq_mode, memory like w_mode. */
457 /* 256bit vex mode */ 491 dqw_mode,
458 #define vex256_mode» » (vex128_mode + 1) 492 /* 4- or 6-byte pointer operand */
459 /* operand size depends on the VEX.W bit. */ 493 f_mode,
460 #define vex_w_dq_mode» » (vex256_mode + 1) 494 const_1_mode,
495 /* v_mode for stack-related opcodes. */
496 stack_v_mode,
497 /* non-quad operand size depends on prefixes */
498 z_mode,
499 /* 16-byte operand */
500 o_mode,
501 /* registers like dq_mode, memory like b_mode. */
502 dqb_mode,
503 /* registers like dq_mode, memory like d_mode. */
504 dqd_mode,
505 /* normal vex mode */
506 vex_mode,
507 /* 128bit vex mode */
508 vex128_mode,
509 /* 256bit vex mode */
510 vex256_mode,
511 /* operand size depends on the VEX.W bit. */
512 vex_w_dq_mode,
461 513
462 #define es_reg» » » (vex_w_dq_mode + 1) 514 /* Similar to vex_w_dq_mode, with VSIB dword indices. */
463 #define cs_reg» » » (es_reg + 1) 515 vex_vsib_d_w_dq_mode,
464 #define ss_reg» » » (cs_reg + 1) 516 /* Similar to vex_w_dq_mode, with VSIB qword indices. */
465 #define ds_reg» » » (ss_reg + 1) 517 vex_vsib_q_w_dq_mode,
466 #define fs_reg» » » (ds_reg + 1)
467 #define gs_reg» » » (fs_reg + 1)
468 518
469 #define eAX_reg»» » (gs_reg + 1) 519 /* scalar, ignore vector length. */
470 #define eCX_reg»» » (eAX_reg + 1) 520 scalar_mode,
471 #define eDX_reg»» » (eCX_reg + 1) 521 /* like d_mode, ignore vector length. */
472 #define eBX_reg»» » (eDX_reg + 1) 522 d_scalar_mode,
473 #define eSP_reg»» » (eBX_reg + 1) 523 /* like d_swap_mode, ignore vector length. */
474 #define eBP_reg»» » (eSP_reg + 1) 524 d_scalar_swap_mode,
475 #define eSI_reg»» » (eBP_reg + 1) 525 /* like q_mode, ignore vector length. */
476 #define eDI_reg»» » (eSI_reg + 1) 526 q_scalar_mode,
527 /* like q_swap_mode, ignore vector length. */
528 q_scalar_swap_mode,
529 /* like vex_mode, ignore vector length. */
530 vex_scalar_mode,
531 /* like vex_w_dq_mode, ignore vector length. */
532 vex_scalar_w_dq_mode,
477 533
478 #define al_reg» » » (eDI_reg + 1) 534 es_reg,
479 #define cl_reg» » » (al_reg + 1) 535 cs_reg,
480 #define dl_reg» » » (cl_reg + 1) 536 ss_reg,
481 #define bl_reg» » » (dl_reg + 1) 537 ds_reg,
482 #define ah_reg» » » (bl_reg + 1) 538 fs_reg,
483 #define ch_reg» » » (ah_reg + 1) 539 gs_reg,
484 #define dh_reg» » » (ch_reg + 1)
485 #define bh_reg» » » (dh_reg + 1)
486 540
487 #define ax_reg» » » (bh_reg + 1) 541 eAX_reg,
488 #define cx_reg» » » (ax_reg + 1) 542 eCX_reg,
489 #define dx_reg» » » (cx_reg + 1) 543 eDX_reg,
490 #define bx_reg» » » (dx_reg + 1) 544 eBX_reg,
491 #define sp_reg» » » (bx_reg + 1) 545 eSP_reg,
492 #define bp_reg» » » (sp_reg + 1) 546 eBP_reg,
493 #define si_reg» » » (bp_reg + 1) 547 eSI_reg,
494 #define di_reg» » » (si_reg + 1) 548 eDI_reg,
495 549
496 #define rAX_reg»» » (di_reg + 1) 550 al_reg,
497 #define rCX_reg»» » (rAX_reg + 1) 551 cl_reg,
498 #define rDX_reg»» » (rCX_reg + 1) 552 dl_reg,
499 #define rBX_reg»» » (rDX_reg + 1) 553 bl_reg,
500 #define rSP_reg»» » (rBX_reg + 1) 554 ah_reg,
501 #define rBP_reg»» » (rSP_reg + 1) 555 ch_reg,
502 #define rSI_reg»» » (rBP_reg + 1) 556 dh_reg,
503 #define rDI_reg»» » (rSI_reg + 1) 557 bh_reg,
504 558
505 #define z_mode_ax_reg» » (rDI_reg + 1) 559 ax_reg,
506 #define indir_dx_reg» » (z_mode_ax_reg + 1) 560 cx_reg,
561 dx_reg,
562 bx_reg,
563 sp_reg,
564 bp_reg,
565 si_reg,
566 di_reg,
507 567
508 #define MAX_BYTEMODE» indir_dx_reg 568 rAX_reg,
569 rCX_reg,
570 rDX_reg,
571 rBX_reg,
572 rSP_reg,
573 rBP_reg,
574 rSI_reg,
575 rDI_reg,
509 576
577 z_mode_ax_reg,
578 indir_dx_reg
579 };
510 580
511 #define FLOATCODE» » 1 581 enum
512 #define USE_REG_TABLE» » (FLOATCODE + 1) 582 {
513 #define USE_MOD_TABLE» » (USE_REG_TABLE + 1) 583 FLOATCODE = 1,
514 #define USE_RM_TABLE» » (USE_MOD_TABLE + 1) 584 USE_REG_TABLE,
515 #define USE_PREFIX_TABLE» (USE_RM_TABLE + 1) 585 USE_MOD_TABLE,
516 #define USE_X86_64_TABLE» (USE_PREFIX_TABLE + 1) 586 USE_RM_TABLE,
517 #define USE_3BYTE_TABLE»» (USE_X86_64_TABLE + 1) 587 USE_PREFIX_TABLE,
518 #define USE_VEX_C4_TABLE» (USE_3BYTE_TABLE + 1) 588 USE_X86_64_TABLE,
519 #define USE_VEX_C5_TABLE» (USE_VEX_C4_TABLE + 1) 589 USE_3BYTE_TABLE,
520 #define USE_VEX_LEN_TABLE» (USE_VEX_C5_TABLE + 1) 590 USE_XOP_8F_TABLE,
591 USE_VEX_C4_TABLE,
592 USE_VEX_C5_TABLE,
593 USE_VEX_LEN_TABLE,
594 USE_VEX_W_TABLE
595 };
521 596
522 #define FLOAT NULL, { { NULL, FLOATCODE } } 597 #define FLOAT NULL, { { NULL, FLOATCODE } }
523 598
524 #define DIS386(T, I) NULL, { { NULL, (T)}, { NULL, (I) } } 599 #define DIS386(T, I) NULL, { { NULL, (T)}, { NULL, (I) } }
525 #define REG_TABLE(I) DIS386 (USE_REG_TABLE, (I)) 600 #define REG_TABLE(I) DIS386 (USE_REG_TABLE, (I))
526 #define MOD_TABLE(I) DIS386 (USE_MOD_TABLE, (I)) 601 #define MOD_TABLE(I) DIS386 (USE_MOD_TABLE, (I))
527 #define RM_TABLE(I) DIS386 (USE_RM_TABLE, (I)) 602 #define RM_TABLE(I) DIS386 (USE_RM_TABLE, (I))
528 #define PREFIX_TABLE(I) DIS386 (USE_PREFIX_TABLE, (I)) 603 #define PREFIX_TABLE(I) DIS386 (USE_PREFIX_TABLE, (I))
529 #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I)) 604 #define X86_64_TABLE(I) DIS386 (USE_X86_64_TABLE, (I))
530 #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I)) 605 #define THREE_BYTE_TABLE(I) DIS386 (USE_3BYTE_TABLE, (I))
606 #define XOP_8F_TABLE(I) DIS386 (USE_XOP_8F_TABLE, (I))
531 #define VEX_C4_TABLE(I) DIS386 (USE_VEX_C4_TABLE, (I)) 607 #define VEX_C4_TABLE(I) DIS386 (USE_VEX_C4_TABLE, (I))
532 #define VEX_C5_TABLE(I) DIS386 (USE_VEX_C5_TABLE, (I)) 608 #define VEX_C5_TABLE(I) DIS386 (USE_VEX_C5_TABLE, (I))
533 #define VEX_LEN_TABLE(I) DIS386 (USE_VEX_LEN_TABLE, (I)) 609 #define VEX_LEN_TABLE(I) DIS386 (USE_VEX_LEN_TABLE, (I))
610 #define VEX_W_TABLE(I) DIS386 (USE_VEX_W_TABLE, (I))
534 611
535 enum 612 enum
536 { 613 {
537 REG_80 = 0, 614 REG_80 = 0,
538 REG_81, 615 REG_81,
539 REG_82, 616 REG_82,
540 REG_8F, 617 REG_8F,
541 REG_C0, 618 REG_C0,
542 REG_C1, 619 REG_C1,
543 REG_C6, 620 REG_C6,
(...skipping 11 matching lines...) Expand all
555 REG_0F0D, 632 REG_0F0D,
556 REG_0F18, 633 REG_0F18,
557 REG_0F71, 634 REG_0F71,
558 REG_0F72, 635 REG_0F72,
559 REG_0F73, 636 REG_0F73,
560 REG_0FA6, 637 REG_0FA6,
561 REG_0FA7, 638 REG_0FA7,
562 REG_0FAE, 639 REG_0FAE,
563 REG_0FBA, 640 REG_0FBA,
564 REG_0FC7, 641 REG_0FC7,
565 REG_VEX_71, 642 REG_VEX_0F71,
566 REG_VEX_72, 643 REG_VEX_0F72,
567 REG_VEX_73, 644 REG_VEX_0F73,
568 REG_VEX_AE 645 REG_VEX_0FAE,
646 REG_VEX_0F38F3,
647 REG_XOP_LWPCB,
648 REG_XOP_LWP,
649 REG_XOP_TBM_01,
650 REG_XOP_TBM_02
569 }; 651 };
570 652
571 enum 653 enum
572 { 654 {
573 MOD_8D = 0, 655 MOD_8D = 0,
656 MOD_C6_REG_7,
657 MOD_C7_REG_7,
574 MOD_0F01_REG_0, 658 MOD_0F01_REG_0,
575 MOD_0F01_REG_1, 659 MOD_0F01_REG_1,
576 MOD_0F01_REG_2, 660 MOD_0F01_REG_2,
577 MOD_0F01_REG_3, 661 MOD_0F01_REG_3,
578 MOD_0F01_REG_7, 662 MOD_0F01_REG_7,
579 MOD_0F12_PREFIX_0, 663 MOD_0F12_PREFIX_0,
580 MOD_0F13, 664 MOD_0F13,
581 MOD_0F16_PREFIX_0, 665 MOD_0F16_PREFIX_0,
582 MOD_0F17, 666 MOD_0F17,
583 MOD_0F18_REG_0, 667 MOD_0F18_REG_0,
584 MOD_0F18_REG_1, 668 MOD_0F18_REG_1,
585 MOD_0F18_REG_2, 669 MOD_0F18_REG_2,
586 MOD_0F18_REG_3, 670 MOD_0F18_REG_3,
671 MOD_0F18_REG_4,
672 MOD_0F18_REG_5,
673 MOD_0F18_REG_6,
674 MOD_0F18_REG_7,
587 MOD_0F20, 675 MOD_0F20,
588 MOD_0F21, 676 MOD_0F21,
589 MOD_0F22, 677 MOD_0F22,
590 MOD_0F23, 678 MOD_0F23,
591 MOD_0F24, 679 MOD_0F24,
592 MOD_0F26, 680 MOD_0F26,
593 MOD_0F2B_PREFIX_0, 681 MOD_0F2B_PREFIX_0,
594 MOD_0F2B_PREFIX_1, 682 MOD_0F2B_PREFIX_1,
595 MOD_0F2B_PREFIX_2, 683 MOD_0F2B_PREFIX_2,
596 MOD_0F2B_PREFIX_3, 684 MOD_0F2B_PREFIX_3,
(...skipping 21 matching lines...) Expand all
618 MOD_0FB5, 706 MOD_0FB5,
619 MOD_0FC7_REG_6, 707 MOD_0FC7_REG_6,
620 MOD_0FC7_REG_7, 708 MOD_0FC7_REG_7,
621 MOD_0FD7, 709 MOD_0FD7,
622 MOD_0FE7_PREFIX_2, 710 MOD_0FE7_PREFIX_2,
623 MOD_0FF0_PREFIX_3, 711 MOD_0FF0_PREFIX_3,
624 MOD_0F382A_PREFIX_2, 712 MOD_0F382A_PREFIX_2,
625 MOD_62_32BIT, 713 MOD_62_32BIT,
626 MOD_C4_32BIT, 714 MOD_C4_32BIT,
627 MOD_C5_32BIT, 715 MOD_C5_32BIT,
628 MOD_VEX_12_PREFIX_0, 716 MOD_VEX_0F12_PREFIX_0,
629 MOD_VEX_13, 717 MOD_VEX_0F13,
630 MOD_VEX_16_PREFIX_0, 718 MOD_VEX_0F16_PREFIX_0,
631 MOD_VEX_17, 719 MOD_VEX_0F17,
632 MOD_VEX_2B, 720 MOD_VEX_0F2B,
633 MOD_VEX_51, 721 MOD_VEX_0F50,
634 MOD_VEX_71_REG_2, 722 MOD_VEX_0F71_REG_2,
635 MOD_VEX_71_REG_4, 723 MOD_VEX_0F71_REG_4,
636 MOD_VEX_71_REG_6, 724 MOD_VEX_0F71_REG_6,
637 MOD_VEX_72_REG_2, 725 MOD_VEX_0F72_REG_2,
638 MOD_VEX_72_REG_4, 726 MOD_VEX_0F72_REG_4,
639 MOD_VEX_72_REG_6, 727 MOD_VEX_0F72_REG_6,
640 MOD_VEX_73_REG_2, 728 MOD_VEX_0F73_REG_2,
641 MOD_VEX_73_REG_3, 729 MOD_VEX_0F73_REG_3,
642 MOD_VEX_73_REG_6, 730 MOD_VEX_0F73_REG_6,
643 MOD_VEX_73_REG_7, 731 MOD_VEX_0F73_REG_7,
644 MOD_VEX_AE_REG_2, 732 MOD_VEX_0FAE_REG_2,
645 MOD_VEX_AE_REG_3, 733 MOD_VEX_0FAE_REG_3,
646 MOD_VEX_D7_PREFIX_2, 734 MOD_VEX_0FD7_PREFIX_2,
647 MOD_VEX_E7_PREFIX_2, 735 MOD_VEX_0FE7_PREFIX_2,
648 MOD_VEX_F0_PREFIX_3, 736 MOD_VEX_0FF0_PREFIX_3,
649 MOD_VEX_3818_PREFIX_2, 737 MOD_VEX_0F381A_PREFIX_2,
650 MOD_VEX_3819_PREFIX_2, 738 MOD_VEX_0F382A_PREFIX_2,
651 MOD_VEX_381A_PREFIX_2, 739 MOD_VEX_0F382C_PREFIX_2,
652 MOD_VEX_382A_PREFIX_2, 740 MOD_VEX_0F382D_PREFIX_2,
653 MOD_VEX_382C_PREFIX_2, 741 MOD_VEX_0F382E_PREFIX_2,
654 MOD_VEX_382D_PREFIX_2, 742 MOD_VEX_0F382F_PREFIX_2,
655 MOD_VEX_382E_PREFIX_2, 743 MOD_VEX_0F385A_PREFIX_2,
656 MOD_VEX_382F_PREFIX_2 744 MOD_VEX_0F388C_PREFIX_2,
745 MOD_VEX_0F388E_PREFIX_2,
657 }; 746 };
658 747
659 enum 748 enum
660 { 749 {
661 RM_0F01_REG_0 = 0, 750 RM_C6_REG_7 = 0,
751 RM_C7_REG_7,
752 RM_0F01_REG_0,
662 RM_0F01_REG_1, 753 RM_0F01_REG_1,
663 RM_0F01_REG_2, 754 RM_0F01_REG_2,
664 RM_0F01_REG_3, 755 RM_0F01_REG_3,
665 RM_0F01_REG_7, 756 RM_0F01_REG_7,
666 RM_0FAE_REG_5, 757 RM_0FAE_REG_5,
667 RM_0FAE_REG_6, 758 RM_0FAE_REG_6,
668 RM_0FAE_REG_7 759 RM_0FAE_REG_7
669 }; 760 };
670 761
671 enum 762 enum
(...skipping 28 matching lines...) Expand all
700 PREFIX_0F6F, 791 PREFIX_0F6F,
701 PREFIX_0F70, 792 PREFIX_0F70,
702 PREFIX_0F73_REG_3, 793 PREFIX_0F73_REG_3,
703 PREFIX_0F73_REG_7, 794 PREFIX_0F73_REG_7,
704 PREFIX_0F78, 795 PREFIX_0F78,
705 PREFIX_0F79, 796 PREFIX_0F79,
706 PREFIX_0F7C, 797 PREFIX_0F7C,
707 PREFIX_0F7D, 798 PREFIX_0F7D,
708 PREFIX_0F7E, 799 PREFIX_0F7E,
709 PREFIX_0F7F, 800 PREFIX_0F7F,
801 PREFIX_0FAE_REG_0,
802 PREFIX_0FAE_REG_1,
803 PREFIX_0FAE_REG_2,
804 PREFIX_0FAE_REG_3,
710 PREFIX_0FB8, 805 PREFIX_0FB8,
806 PREFIX_0FBC,
711 PREFIX_0FBD, 807 PREFIX_0FBD,
712 PREFIX_0FC2, 808 PREFIX_0FC2,
713 PREFIX_0FC3, 809 PREFIX_0FC3,
714 PREFIX_0FC7_REG_6, 810 PREFIX_0FC7_REG_6,
715 PREFIX_0FD0, 811 PREFIX_0FD0,
716 PREFIX_0FD6, 812 PREFIX_0FD6,
717 PREFIX_0FE6, 813 PREFIX_0FE6,
718 PREFIX_0FE7, 814 PREFIX_0FE7,
719 PREFIX_0FF0, 815 PREFIX_0FF0,
720 PREFIX_0FF7, 816 PREFIX_0FF7,
(...skipping 23 matching lines...) Expand all
744 PREFIX_0F383A, 840 PREFIX_0F383A,
745 PREFIX_0F383B, 841 PREFIX_0F383B,
746 PREFIX_0F383C, 842 PREFIX_0F383C,
747 PREFIX_0F383D, 843 PREFIX_0F383D,
748 PREFIX_0F383E, 844 PREFIX_0F383E,
749 PREFIX_0F383F, 845 PREFIX_0F383F,
750 PREFIX_0F3840, 846 PREFIX_0F3840,
751 PREFIX_0F3841, 847 PREFIX_0F3841,
752 PREFIX_0F3880, 848 PREFIX_0F3880,
753 PREFIX_0F3881, 849 PREFIX_0F3881,
850 PREFIX_0F3882,
754 PREFIX_0F38DB, 851 PREFIX_0F38DB,
755 PREFIX_0F38DC, 852 PREFIX_0F38DC,
756 PREFIX_0F38DD, 853 PREFIX_0F38DD,
757 PREFIX_0F38DE, 854 PREFIX_0F38DE,
758 PREFIX_0F38DF, 855 PREFIX_0F38DF,
759 PREFIX_0F38F0, 856 PREFIX_0F38F0,
760 PREFIX_0F38F1, 857 PREFIX_0F38F1,
858 PREFIX_0F38F6,
761 PREFIX_0F3A08, 859 PREFIX_0F3A08,
762 PREFIX_0F3A09, 860 PREFIX_0F3A09,
763 PREFIX_0F3A0A, 861 PREFIX_0F3A0A,
764 PREFIX_0F3A0B, 862 PREFIX_0F3A0B,
765 PREFIX_0F3A0C, 863 PREFIX_0F3A0C,
766 PREFIX_0F3A0D, 864 PREFIX_0F3A0D,
767 PREFIX_0F3A0E, 865 PREFIX_0F3A0E,
768 PREFIX_0F3A14, 866 PREFIX_0F3A14,
769 PREFIX_0F3A15, 867 PREFIX_0F3A15,
770 PREFIX_0F3A16, 868 PREFIX_0F3A16,
771 PREFIX_0F3A17, 869 PREFIX_0F3A17,
772 PREFIX_0F3A20, 870 PREFIX_0F3A20,
773 PREFIX_0F3A21, 871 PREFIX_0F3A21,
774 PREFIX_0F3A22, 872 PREFIX_0F3A22,
775 PREFIX_0F3A40, 873 PREFIX_0F3A40,
776 PREFIX_0F3A41, 874 PREFIX_0F3A41,
777 PREFIX_0F3A42, 875 PREFIX_0F3A42,
778 PREFIX_0F3A44, 876 PREFIX_0F3A44,
779 PREFIX_0F3A60, 877 PREFIX_0F3A60,
780 PREFIX_0F3A61, 878 PREFIX_0F3A61,
781 PREFIX_0F3A62, 879 PREFIX_0F3A62,
782 PREFIX_0F3A63, 880 PREFIX_0F3A63,
783 PREFIX_0F3ADF, 881 PREFIX_0F3ADF,
784 PREFIX_VEX_10, 882 PREFIX_VEX_0F10,
785 PREFIX_VEX_11, 883 PREFIX_VEX_0F11,
786 PREFIX_VEX_12, 884 PREFIX_VEX_0F12,
787 PREFIX_VEX_16, 885 PREFIX_VEX_0F16,
788 PREFIX_VEX_2A, 886 PREFIX_VEX_0F2A,
789 PREFIX_VEX_2C, 887 PREFIX_VEX_0F2C,
790 PREFIX_VEX_2D, 888 PREFIX_VEX_0F2D,
791 PREFIX_VEX_2E, 889 PREFIX_VEX_0F2E,
792 PREFIX_VEX_2F, 890 PREFIX_VEX_0F2F,
793 PREFIX_VEX_51, 891 PREFIX_VEX_0F51,
794 PREFIX_VEX_52, 892 PREFIX_VEX_0F52,
795 PREFIX_VEX_53, 893 PREFIX_VEX_0F53,
796 PREFIX_VEX_58, 894 PREFIX_VEX_0F58,
797 PREFIX_VEX_59, 895 PREFIX_VEX_0F59,
798 PREFIX_VEX_5A, 896 PREFIX_VEX_0F5A,
799 PREFIX_VEX_5B, 897 PREFIX_VEX_0F5B,
800 PREFIX_VEX_5C, 898 PREFIX_VEX_0F5C,
801 PREFIX_VEX_5D, 899 PREFIX_VEX_0F5D,
802 PREFIX_VEX_5E, 900 PREFIX_VEX_0F5E,
803 PREFIX_VEX_5F, 901 PREFIX_VEX_0F5F,
804 PREFIX_VEX_60, 902 PREFIX_VEX_0F60,
805 PREFIX_VEX_61, 903 PREFIX_VEX_0F61,
806 PREFIX_VEX_62, 904 PREFIX_VEX_0F62,
807 PREFIX_VEX_63, 905 PREFIX_VEX_0F63,
808 PREFIX_VEX_64, 906 PREFIX_VEX_0F64,
809 PREFIX_VEX_65, 907 PREFIX_VEX_0F65,
810 PREFIX_VEX_66, 908 PREFIX_VEX_0F66,
811 PREFIX_VEX_67, 909 PREFIX_VEX_0F67,
812 PREFIX_VEX_68, 910 PREFIX_VEX_0F68,
813 PREFIX_VEX_69, 911 PREFIX_VEX_0F69,
814 PREFIX_VEX_6A, 912 PREFIX_VEX_0F6A,
815 PREFIX_VEX_6B, 913 PREFIX_VEX_0F6B,
816 PREFIX_VEX_6C, 914 PREFIX_VEX_0F6C,
817 PREFIX_VEX_6D, 915 PREFIX_VEX_0F6D,
818 PREFIX_VEX_6E, 916 PREFIX_VEX_0F6E,
819 PREFIX_VEX_6F, 917 PREFIX_VEX_0F6F,
820 PREFIX_VEX_70, 918 PREFIX_VEX_0F70,
821 PREFIX_VEX_71_REG_2, 919 PREFIX_VEX_0F71_REG_2,
822 PREFIX_VEX_71_REG_4, 920 PREFIX_VEX_0F71_REG_4,
823 PREFIX_VEX_71_REG_6, 921 PREFIX_VEX_0F71_REG_6,
824 PREFIX_VEX_72_REG_2, 922 PREFIX_VEX_0F72_REG_2,
825 PREFIX_VEX_72_REG_4, 923 PREFIX_VEX_0F72_REG_4,
826 PREFIX_VEX_72_REG_6, 924 PREFIX_VEX_0F72_REG_6,
827 PREFIX_VEX_73_REG_2, 925 PREFIX_VEX_0F73_REG_2,
828 PREFIX_VEX_73_REG_3, 926 PREFIX_VEX_0F73_REG_3,
829 PREFIX_VEX_73_REG_6, 927 PREFIX_VEX_0F73_REG_6,
830 PREFIX_VEX_73_REG_7, 928 PREFIX_VEX_0F73_REG_7,
831 PREFIX_VEX_74, 929 PREFIX_VEX_0F74,
832 PREFIX_VEX_75, 930 PREFIX_VEX_0F75,
833 PREFIX_VEX_76, 931 PREFIX_VEX_0F76,
834 PREFIX_VEX_77, 932 PREFIX_VEX_0F77,
835 PREFIX_VEX_7C, 933 PREFIX_VEX_0F7C,
836 PREFIX_VEX_7D, 934 PREFIX_VEX_0F7D,
837 PREFIX_VEX_7E, 935 PREFIX_VEX_0F7E,
838 PREFIX_VEX_7F, 936 PREFIX_VEX_0F7F,
839 PREFIX_VEX_C2, 937 PREFIX_VEX_0FC2,
840 PREFIX_VEX_C4, 938 PREFIX_VEX_0FC4,
841 PREFIX_VEX_C5, 939 PREFIX_VEX_0FC5,
842 PREFIX_VEX_D0, 940 PREFIX_VEX_0FD0,
843 PREFIX_VEX_D1, 941 PREFIX_VEX_0FD1,
844 PREFIX_VEX_D2, 942 PREFIX_VEX_0FD2,
845 PREFIX_VEX_D3, 943 PREFIX_VEX_0FD3,
846 PREFIX_VEX_D4, 944 PREFIX_VEX_0FD4,
847 PREFIX_VEX_D5, 945 PREFIX_VEX_0FD5,
848 PREFIX_VEX_D6, 946 PREFIX_VEX_0FD6,
849 PREFIX_VEX_D7, 947 PREFIX_VEX_0FD7,
850 PREFIX_VEX_D8, 948 PREFIX_VEX_0FD8,
851 PREFIX_VEX_D9, 949 PREFIX_VEX_0FD9,
852 PREFIX_VEX_DA, 950 PREFIX_VEX_0FDA,
853 PREFIX_VEX_DB, 951 PREFIX_VEX_0FDB,
854 PREFIX_VEX_DC, 952 PREFIX_VEX_0FDC,
855 PREFIX_VEX_DD, 953 PREFIX_VEX_0FDD,
856 PREFIX_VEX_DE, 954 PREFIX_VEX_0FDE,
857 PREFIX_VEX_DF, 955 PREFIX_VEX_0FDF,
858 PREFIX_VEX_E0, 956 PREFIX_VEX_0FE0,
859 PREFIX_VEX_E1, 957 PREFIX_VEX_0FE1,
860 PREFIX_VEX_E2, 958 PREFIX_VEX_0FE2,
861 PREFIX_VEX_E3, 959 PREFIX_VEX_0FE3,
862 PREFIX_VEX_E4, 960 PREFIX_VEX_0FE4,
863 PREFIX_VEX_E5, 961 PREFIX_VEX_0FE5,
864 PREFIX_VEX_E6, 962 PREFIX_VEX_0FE6,
865 PREFIX_VEX_E7, 963 PREFIX_VEX_0FE7,
866 PREFIX_VEX_E8, 964 PREFIX_VEX_0FE8,
867 PREFIX_VEX_E9, 965 PREFIX_VEX_0FE9,
868 PREFIX_VEX_EA, 966 PREFIX_VEX_0FEA,
869 PREFIX_VEX_EB, 967 PREFIX_VEX_0FEB,
870 PREFIX_VEX_EC, 968 PREFIX_VEX_0FEC,
871 PREFIX_VEX_ED, 969 PREFIX_VEX_0FED,
872 PREFIX_VEX_EE, 970 PREFIX_VEX_0FEE,
873 PREFIX_VEX_EF, 971 PREFIX_VEX_0FEF,
874 PREFIX_VEX_F0, 972 PREFIX_VEX_0FF0,
875 PREFIX_VEX_F1, 973 PREFIX_VEX_0FF1,
876 PREFIX_VEX_F2, 974 PREFIX_VEX_0FF2,
877 PREFIX_VEX_F3, 975 PREFIX_VEX_0FF3,
878 PREFIX_VEX_F4, 976 PREFIX_VEX_0FF4,
879 PREFIX_VEX_F5, 977 PREFIX_VEX_0FF5,
880 PREFIX_VEX_F6, 978 PREFIX_VEX_0FF6,
881 PREFIX_VEX_F7, 979 PREFIX_VEX_0FF7,
882 PREFIX_VEX_F8, 980 PREFIX_VEX_0FF8,
883 PREFIX_VEX_F9, 981 PREFIX_VEX_0FF9,
884 PREFIX_VEX_FA, 982 PREFIX_VEX_0FFA,
885 PREFIX_VEX_FB, 983 PREFIX_VEX_0FFB,
886 PREFIX_VEX_FC, 984 PREFIX_VEX_0FFC,
887 PREFIX_VEX_FD, 985 PREFIX_VEX_0FFD,
888 PREFIX_VEX_FE, 986 PREFIX_VEX_0FFE,
889 PREFIX_VEX_3800, 987 PREFIX_VEX_0F3800,
890 PREFIX_VEX_3801, 988 PREFIX_VEX_0F3801,
891 PREFIX_VEX_3802, 989 PREFIX_VEX_0F3802,
892 PREFIX_VEX_3803, 990 PREFIX_VEX_0F3803,
893 PREFIX_VEX_3804, 991 PREFIX_VEX_0F3804,
894 PREFIX_VEX_3805, 992 PREFIX_VEX_0F3805,
895 PREFIX_VEX_3806, 993 PREFIX_VEX_0F3806,
896 PREFIX_VEX_3807, 994 PREFIX_VEX_0F3807,
897 PREFIX_VEX_3808, 995 PREFIX_VEX_0F3808,
898 PREFIX_VEX_3809, 996 PREFIX_VEX_0F3809,
899 PREFIX_VEX_380A, 997 PREFIX_VEX_0F380A,
900 PREFIX_VEX_380B, 998 PREFIX_VEX_0F380B,
901 PREFIX_VEX_380C, 999 PREFIX_VEX_0F380C,
902 PREFIX_VEX_380D, 1000 PREFIX_VEX_0F380D,
903 PREFIX_VEX_380E, 1001 PREFIX_VEX_0F380E,
904 PREFIX_VEX_380F, 1002 PREFIX_VEX_0F380F,
905 PREFIX_VEX_3817, 1003 PREFIX_VEX_0F3813,
906 PREFIX_VEX_3818, 1004 PREFIX_VEX_0F3816,
907 PREFIX_VEX_3819, 1005 PREFIX_VEX_0F3817,
908 PREFIX_VEX_381A, 1006 PREFIX_VEX_0F3818,
909 PREFIX_VEX_381C, 1007 PREFIX_VEX_0F3819,
910 PREFIX_VEX_381D, 1008 PREFIX_VEX_0F381A,
911 PREFIX_VEX_381E, 1009 PREFIX_VEX_0F381C,
912 PREFIX_VEX_3820, 1010 PREFIX_VEX_0F381D,
913 PREFIX_VEX_3821, 1011 PREFIX_VEX_0F381E,
914 PREFIX_VEX_3822, 1012 PREFIX_VEX_0F3820,
915 PREFIX_VEX_3823, 1013 PREFIX_VEX_0F3821,
916 PREFIX_VEX_3824, 1014 PREFIX_VEX_0F3822,
917 PREFIX_VEX_3825, 1015 PREFIX_VEX_0F3823,
918 PREFIX_VEX_3828, 1016 PREFIX_VEX_0F3824,
919 PREFIX_VEX_3829, 1017 PREFIX_VEX_0F3825,
920 PREFIX_VEX_382A, 1018 PREFIX_VEX_0F3828,
921 PREFIX_VEX_382B, 1019 PREFIX_VEX_0F3829,
922 PREFIX_VEX_382C, 1020 PREFIX_VEX_0F382A,
923 PREFIX_VEX_382D, 1021 PREFIX_VEX_0F382B,
924 PREFIX_VEX_382E, 1022 PREFIX_VEX_0F382C,
925 PREFIX_VEX_382F, 1023 PREFIX_VEX_0F382D,
926 PREFIX_VEX_3830, 1024 PREFIX_VEX_0F382E,
927 PREFIX_VEX_3831, 1025 PREFIX_VEX_0F382F,
928 PREFIX_VEX_3832, 1026 PREFIX_VEX_0F3830,
929 PREFIX_VEX_3833, 1027 PREFIX_VEX_0F3831,
930 PREFIX_VEX_3834, 1028 PREFIX_VEX_0F3832,
931 PREFIX_VEX_3835, 1029 PREFIX_VEX_0F3833,
932 PREFIX_VEX_3837, 1030 PREFIX_VEX_0F3834,
933 PREFIX_VEX_3838, 1031 PREFIX_VEX_0F3835,
934 PREFIX_VEX_3839, 1032 PREFIX_VEX_0F3836,
935 PREFIX_VEX_383A, 1033 PREFIX_VEX_0F3837,
936 PREFIX_VEX_383B, 1034 PREFIX_VEX_0F3838,
937 PREFIX_VEX_383C, 1035 PREFIX_VEX_0F3839,
938 PREFIX_VEX_383D, 1036 PREFIX_VEX_0F383A,
939 PREFIX_VEX_383E, 1037 PREFIX_VEX_0F383B,
940 PREFIX_VEX_383F, 1038 PREFIX_VEX_0F383C,
941 PREFIX_VEX_3840, 1039 PREFIX_VEX_0F383D,
942 PREFIX_VEX_3841, 1040 PREFIX_VEX_0F383E,
943 PREFIX_VEX_3896, 1041 PREFIX_VEX_0F383F,
944 PREFIX_VEX_3897, 1042 PREFIX_VEX_0F3840,
945 PREFIX_VEX_3898, 1043 PREFIX_VEX_0F3841,
946 PREFIX_VEX_3899, 1044 PREFIX_VEX_0F3845,
947 PREFIX_VEX_389A, 1045 PREFIX_VEX_0F3846,
948 PREFIX_VEX_389B, 1046 PREFIX_VEX_0F3847,
949 PREFIX_VEX_389C, 1047 PREFIX_VEX_0F3858,
950 PREFIX_VEX_389D, 1048 PREFIX_VEX_0F3859,
951 PREFIX_VEX_389E, 1049 PREFIX_VEX_0F385A,
952 PREFIX_VEX_389F, 1050 PREFIX_VEX_0F3878,
953 PREFIX_VEX_38A6, 1051 PREFIX_VEX_0F3879,
954 PREFIX_VEX_38A7, 1052 PREFIX_VEX_0F388C,
955 PREFIX_VEX_38A8, 1053 PREFIX_VEX_0F388E,
956 PREFIX_VEX_38A9, 1054 PREFIX_VEX_0F3890,
957 PREFIX_VEX_38AA, 1055 PREFIX_VEX_0F3891,
958 PREFIX_VEX_38AB, 1056 PREFIX_VEX_0F3892,
959 PREFIX_VEX_38AC, 1057 PREFIX_VEX_0F3893,
960 PREFIX_VEX_38AD, 1058 PREFIX_VEX_0F3896,
961 PREFIX_VEX_38AE, 1059 PREFIX_VEX_0F3897,
962 PREFIX_VEX_38AF, 1060 PREFIX_VEX_0F3898,
963 PREFIX_VEX_38B6, 1061 PREFIX_VEX_0F3899,
964 PREFIX_VEX_38B7, 1062 PREFIX_VEX_0F389A,
965 PREFIX_VEX_38B8, 1063 PREFIX_VEX_0F389B,
966 PREFIX_VEX_38B9, 1064 PREFIX_VEX_0F389C,
967 PREFIX_VEX_38BA, 1065 PREFIX_VEX_0F389D,
968 PREFIX_VEX_38BB, 1066 PREFIX_VEX_0F389E,
969 PREFIX_VEX_38BC, 1067 PREFIX_VEX_0F389F,
970 PREFIX_VEX_38BD, 1068 PREFIX_VEX_0F38A6,
971 PREFIX_VEX_38BE, 1069 PREFIX_VEX_0F38A7,
972 PREFIX_VEX_38BF, 1070 PREFIX_VEX_0F38A8,
973 PREFIX_VEX_38DB, 1071 PREFIX_VEX_0F38A9,
974 PREFIX_VEX_38DC, 1072 PREFIX_VEX_0F38AA,
975 PREFIX_VEX_38DD, 1073 PREFIX_VEX_0F38AB,
976 PREFIX_VEX_38DE, 1074 PREFIX_VEX_0F38AC,
977 PREFIX_VEX_38DF, 1075 PREFIX_VEX_0F38AD,
978 PREFIX_VEX_3A04, 1076 PREFIX_VEX_0F38AE,
979 PREFIX_VEX_3A05, 1077 PREFIX_VEX_0F38AF,
980 PREFIX_VEX_3A06, 1078 PREFIX_VEX_0F38B6,
981 PREFIX_VEX_3A08, 1079 PREFIX_VEX_0F38B7,
982 PREFIX_VEX_3A09, 1080 PREFIX_VEX_0F38B8,
983 PREFIX_VEX_3A0A, 1081 PREFIX_VEX_0F38B9,
984 PREFIX_VEX_3A0B, 1082 PREFIX_VEX_0F38BA,
985 PREFIX_VEX_3A0C, 1083 PREFIX_VEX_0F38BB,
986 PREFIX_VEX_3A0D, 1084 PREFIX_VEX_0F38BC,
987 PREFIX_VEX_3A0E, 1085 PREFIX_VEX_0F38BD,
988 PREFIX_VEX_3A0F, 1086 PREFIX_VEX_0F38BE,
989 PREFIX_VEX_3A14, 1087 PREFIX_VEX_0F38BF,
990 PREFIX_VEX_3A15, 1088 PREFIX_VEX_0F38DB,
991 PREFIX_VEX_3A16, 1089 PREFIX_VEX_0F38DC,
992 PREFIX_VEX_3A17, 1090 PREFIX_VEX_0F38DD,
993 PREFIX_VEX_3A18, 1091 PREFIX_VEX_0F38DE,
994 PREFIX_VEX_3A19, 1092 PREFIX_VEX_0F38DF,
995 PREFIX_VEX_3A20, 1093 PREFIX_VEX_0F38F2,
996 PREFIX_VEX_3A21, 1094 PREFIX_VEX_0F38F3_REG_1,
997 PREFIX_VEX_3A22, 1095 PREFIX_VEX_0F38F3_REG_2,
998 PREFIX_VEX_3A40, 1096 PREFIX_VEX_0F38F3_REG_3,
999 PREFIX_VEX_3A41, 1097 PREFIX_VEX_0F38F5,
1000 PREFIX_VEX_3A42, 1098 PREFIX_VEX_0F38F6,
1001 PREFIX_VEX_3A44, 1099 PREFIX_VEX_0F38F7,
1002 PREFIX_VEX_3A4A, 1100 PREFIX_VEX_0F3A00,
1003 PREFIX_VEX_3A4B, 1101 PREFIX_VEX_0F3A01,
1004 PREFIX_VEX_3A4C, 1102 PREFIX_VEX_0F3A02,
1005 PREFIX_VEX_3A5C, 1103 PREFIX_VEX_0F3A04,
1006 PREFIX_VEX_3A5D, 1104 PREFIX_VEX_0F3A05,
1007 PREFIX_VEX_3A5E, 1105 PREFIX_VEX_0F3A06,
1008 PREFIX_VEX_3A5F, 1106 PREFIX_VEX_0F3A08,
1009 PREFIX_VEX_3A60, 1107 PREFIX_VEX_0F3A09,
1010 PREFIX_VEX_3A61, 1108 PREFIX_VEX_0F3A0A,
1011 PREFIX_VEX_3A62, 1109 PREFIX_VEX_0F3A0B,
1012 PREFIX_VEX_3A63, 1110 PREFIX_VEX_0F3A0C,
1013 PREFIX_VEX_3A68, 1111 PREFIX_VEX_0F3A0D,
1014 PREFIX_VEX_3A69, 1112 PREFIX_VEX_0F3A0E,
1015 PREFIX_VEX_3A6A, 1113 PREFIX_VEX_0F3A0F,
1016 PREFIX_VEX_3A6B, 1114 PREFIX_VEX_0F3A14,
1017 PREFIX_VEX_3A6C, 1115 PREFIX_VEX_0F3A15,
1018 PREFIX_VEX_3A6D, 1116 PREFIX_VEX_0F3A16,
1019 PREFIX_VEX_3A6E, 1117 PREFIX_VEX_0F3A17,
1020 PREFIX_VEX_3A6F, 1118 PREFIX_VEX_0F3A18,
1021 PREFIX_VEX_3A78, 1119 PREFIX_VEX_0F3A19,
1022 PREFIX_VEX_3A79, 1120 PREFIX_VEX_0F3A1D,
1023 PREFIX_VEX_3A7A, 1121 PREFIX_VEX_0F3A20,
1024 PREFIX_VEX_3A7B, 1122 PREFIX_VEX_0F3A21,
1025 PREFIX_VEX_3A7C, 1123 PREFIX_VEX_0F3A22,
1026 PREFIX_VEX_3A7D, 1124 PREFIX_VEX_0F3A38,
1027 PREFIX_VEX_3A7E, 1125 PREFIX_VEX_0F3A39,
1028 PREFIX_VEX_3A7F, 1126 PREFIX_VEX_0F3A40,
1029 PREFIX_VEX_3ADF 1127 PREFIX_VEX_0F3A41,
1128 PREFIX_VEX_0F3A42,
1129 PREFIX_VEX_0F3A44,
1130 PREFIX_VEX_0F3A46,
1131 PREFIX_VEX_0F3A48,
1132 PREFIX_VEX_0F3A49,
1133 PREFIX_VEX_0F3A4A,
1134 PREFIX_VEX_0F3A4B,
1135 PREFIX_VEX_0F3A4C,
1136 PREFIX_VEX_0F3A5C,
1137 PREFIX_VEX_0F3A5D,
1138 PREFIX_VEX_0F3A5E,
1139 PREFIX_VEX_0F3A5F,
1140 PREFIX_VEX_0F3A60,
1141 PREFIX_VEX_0F3A61,
1142 PREFIX_VEX_0F3A62,
1143 PREFIX_VEX_0F3A63,
1144 PREFIX_VEX_0F3A68,
1145 PREFIX_VEX_0F3A69,
1146 PREFIX_VEX_0F3A6A,
1147 PREFIX_VEX_0F3A6B,
1148 PREFIX_VEX_0F3A6C,
1149 PREFIX_VEX_0F3A6D,
1150 PREFIX_VEX_0F3A6E,
1151 PREFIX_VEX_0F3A6F,
1152 PREFIX_VEX_0F3A78,
1153 PREFIX_VEX_0F3A79,
1154 PREFIX_VEX_0F3A7A,
1155 PREFIX_VEX_0F3A7B,
1156 PREFIX_VEX_0F3A7C,
1157 PREFIX_VEX_0F3A7D,
1158 PREFIX_VEX_0F3A7E,
1159 PREFIX_VEX_0F3A7F,
1160 PREFIX_VEX_0F3ADF,
1161 PREFIX_VEX_0F3AF0
1030 }; 1162 };
1031 1163
1032 enum 1164 enum
1033 { 1165 {
1034 X86_64_06 = 0, 1166 X86_64_06 = 0,
1035 X86_64_07, 1167 X86_64_07,
1036 X86_64_0D, 1168 X86_64_0D,
1037 X86_64_16, 1169 X86_64_16,
1038 X86_64_17, 1170 X86_64_17,
1039 X86_64_1E, 1171 X86_64_1E,
(...skipping 23 matching lines...) Expand all
1063 1195
1064 enum 1196 enum
1065 { 1197 {
1066 THREE_BYTE_0F38 = 0, 1198 THREE_BYTE_0F38 = 0,
1067 THREE_BYTE_0F3A, 1199 THREE_BYTE_0F3A,
1068 THREE_BYTE_0F7A 1200 THREE_BYTE_0F7A
1069 }; 1201 };
1070 1202
1071 enum 1203 enum
1072 { 1204 {
1205 XOP_08 = 0,
1206 XOP_09,
1207 XOP_0A
1208 };
1209
1210 enum
1211 {
1073 VEX_0F = 0, 1212 VEX_0F = 0,
1074 VEX_0F38, 1213 VEX_0F38,
1075 VEX_0F3A 1214 VEX_0F3A
1076 }; 1215 };
1077 1216
1078 enum 1217 enum
1079 { 1218 {
1080 VEX_LEN_10_P_1 = 0, 1219 VEX_LEN_0F10_P_1 = 0,
1081 VEX_LEN_10_P_3, 1220 VEX_LEN_0F10_P_3,
1082 VEX_LEN_11_P_1, 1221 VEX_LEN_0F11_P_1,
1083 VEX_LEN_11_P_3, 1222 VEX_LEN_0F11_P_3,
1084 VEX_LEN_12_P_0_M_0, 1223 VEX_LEN_0F12_P_0_M_0,
1085 VEX_LEN_12_P_0_M_1, 1224 VEX_LEN_0F12_P_0_M_1,
1086 VEX_LEN_12_P_2, 1225 VEX_LEN_0F12_P_2,
1087 VEX_LEN_13_M_0, 1226 VEX_LEN_0F13_M_0,
1088 VEX_LEN_16_P_0_M_0, 1227 VEX_LEN_0F16_P_0_M_0,
1089 VEX_LEN_16_P_0_M_1, 1228 VEX_LEN_0F16_P_0_M_1,
1090 VEX_LEN_16_P_2, 1229 VEX_LEN_0F16_P_2,
1091 VEX_LEN_17_M_0, 1230 VEX_LEN_0F17_M_0,
1092 VEX_LEN_2A_P_1, 1231 VEX_LEN_0F2A_P_1,
1093 VEX_LEN_2A_P_3, 1232 VEX_LEN_0F2A_P_3,
1094 VEX_LEN_2C_P_1, 1233 VEX_LEN_0F2C_P_1,
1095 VEX_LEN_2C_P_3, 1234 VEX_LEN_0F2C_P_3,
1096 VEX_LEN_2D_P_1, 1235 VEX_LEN_0F2D_P_1,
1097 VEX_LEN_2D_P_3, 1236 VEX_LEN_0F2D_P_3,
1098 VEX_LEN_2E_P_0, 1237 VEX_LEN_0F2E_P_0,
1099 VEX_LEN_2E_P_2, 1238 VEX_LEN_0F2E_P_2,
1100 VEX_LEN_2F_P_0, 1239 VEX_LEN_0F2F_P_0,
1101 VEX_LEN_2F_P_2, 1240 VEX_LEN_0F2F_P_2,
1102 VEX_LEN_51_P_1, 1241 VEX_LEN_0F51_P_1,
1103 VEX_LEN_51_P_3, 1242 VEX_LEN_0F51_P_3,
1104 VEX_LEN_52_P_1, 1243 VEX_LEN_0F52_P_1,
1105 VEX_LEN_53_P_1, 1244 VEX_LEN_0F53_P_1,
1106 VEX_LEN_58_P_1, 1245 VEX_LEN_0F58_P_1,
1107 VEX_LEN_58_P_3, 1246 VEX_LEN_0F58_P_3,
1108 VEX_LEN_59_P_1, 1247 VEX_LEN_0F59_P_1,
1109 VEX_LEN_59_P_3, 1248 VEX_LEN_0F59_P_3,
1110 VEX_LEN_5A_P_1, 1249 VEX_LEN_0F5A_P_1,
1111 VEX_LEN_5A_P_3, 1250 VEX_LEN_0F5A_P_3,
1112 VEX_LEN_5C_P_1, 1251 VEX_LEN_0F5C_P_1,
1113 VEX_LEN_5C_P_3, 1252 VEX_LEN_0F5C_P_3,
1114 VEX_LEN_5D_P_1, 1253 VEX_LEN_0F5D_P_1,
1115 VEX_LEN_5D_P_3, 1254 VEX_LEN_0F5D_P_3,
1116 VEX_LEN_5E_P_1, 1255 VEX_LEN_0F5E_P_1,
1117 VEX_LEN_5E_P_3, 1256 VEX_LEN_0F5E_P_3,
1118 VEX_LEN_5F_P_1, 1257 VEX_LEN_0F5F_P_1,
1119 VEX_LEN_5F_P_3, 1258 VEX_LEN_0F5F_P_3,
1120 VEX_LEN_60_P_2, 1259 VEX_LEN_0F6E_P_2,
1121 VEX_LEN_61_P_2, 1260 VEX_LEN_0F7E_P_1,
1122 VEX_LEN_62_P_2, 1261 VEX_LEN_0F7E_P_2,
1123 VEX_LEN_63_P_2, 1262 VEX_LEN_0FAE_R_2_M_0,
1124 VEX_LEN_64_P_2, 1263 VEX_LEN_0FAE_R_3_M_0,
1125 VEX_LEN_65_P_2, 1264 VEX_LEN_0FC2_P_1,
1126 VEX_LEN_66_P_2, 1265 VEX_LEN_0FC2_P_3,
1127 VEX_LEN_67_P_2, 1266 VEX_LEN_0FC4_P_2,
1128 VEX_LEN_68_P_2, 1267 VEX_LEN_0FC5_P_2,
1129 VEX_LEN_69_P_2, 1268 VEX_LEN_0FD6_P_2,
1130 VEX_LEN_6A_P_2, 1269 VEX_LEN_0FF7_P_2,
1131 VEX_LEN_6B_P_2, 1270 VEX_LEN_0F3816_P_2,
1132 VEX_LEN_6C_P_2, 1271 VEX_LEN_0F3819_P_2,
1133 VEX_LEN_6D_P_2, 1272 VEX_LEN_0F381A_P_2_M_0,
1134 VEX_LEN_6E_P_2, 1273 VEX_LEN_0F3836_P_2,
1135 VEX_LEN_70_P_1, 1274 VEX_LEN_0F3841_P_2,
1136 VEX_LEN_70_P_2, 1275 VEX_LEN_0F385A_P_2_M_0,
1137 VEX_LEN_70_P_3, 1276 VEX_LEN_0F38DB_P_2,
1138 VEX_LEN_71_R_2_P_2, 1277 VEX_LEN_0F38DC_P_2,
1139 VEX_LEN_71_R_4_P_2, 1278 VEX_LEN_0F38DD_P_2,
1140 VEX_LEN_71_R_6_P_2, 1279 VEX_LEN_0F38DE_P_2,
1141 VEX_LEN_72_R_2_P_2, 1280 VEX_LEN_0F38DF_P_2,
1142 VEX_LEN_72_R_4_P_2, 1281 VEX_LEN_0F38F2_P_0,
1143 VEX_LEN_72_R_6_P_2, 1282 VEX_LEN_0F38F3_R_1_P_0,
1144 VEX_LEN_73_R_2_P_2, 1283 VEX_LEN_0F38F3_R_2_P_0,
1145 VEX_LEN_73_R_3_P_2, 1284 VEX_LEN_0F38F3_R_3_P_0,
1146 VEX_LEN_73_R_6_P_2, 1285 VEX_LEN_0F38F5_P_0,
1147 VEX_LEN_73_R_7_P_2, 1286 VEX_LEN_0F38F5_P_1,
1148 VEX_LEN_74_P_2, 1287 VEX_LEN_0F38F5_P_3,
1149 VEX_LEN_75_P_2, 1288 VEX_LEN_0F38F6_P_3,
1150 VEX_LEN_76_P_2, 1289 VEX_LEN_0F38F7_P_0,
1151 VEX_LEN_7E_P_1, 1290 VEX_LEN_0F38F7_P_1,
1152 VEX_LEN_7E_P_2, 1291 VEX_LEN_0F38F7_P_2,
1153 VEX_LEN_AE_R_2_M_0, 1292 VEX_LEN_0F38F7_P_3,
1154 VEX_LEN_AE_R_3_M_0, 1293 VEX_LEN_0F3A00_P_2,
1155 VEX_LEN_C2_P_1, 1294 VEX_LEN_0F3A01_P_2,
1156 VEX_LEN_C2_P_3, 1295 VEX_LEN_0F3A06_P_2,
1157 VEX_LEN_C4_P_2, 1296 VEX_LEN_0F3A0A_P_2,
1158 VEX_LEN_C5_P_2, 1297 VEX_LEN_0F3A0B_P_2,
1159 VEX_LEN_D1_P_2, 1298 VEX_LEN_0F3A14_P_2,
1160 VEX_LEN_D2_P_2, 1299 VEX_LEN_0F3A15_P_2,
1161 VEX_LEN_D3_P_2, 1300 VEX_LEN_0F3A16_P_2,
1162 VEX_LEN_D4_P_2, 1301 VEX_LEN_0F3A17_P_2,
1163 VEX_LEN_D5_P_2, 1302 VEX_LEN_0F3A18_P_2,
1164 VEX_LEN_D6_P_2, 1303 VEX_LEN_0F3A19_P_2,
1165 VEX_LEN_D7_P_2_M_1, 1304 VEX_LEN_0F3A20_P_2,
1166 VEX_LEN_D8_P_2, 1305 VEX_LEN_0F3A21_P_2,
1167 VEX_LEN_D9_P_2, 1306 VEX_LEN_0F3A22_P_2,
1168 VEX_LEN_DA_P_2, 1307 VEX_LEN_0F3A38_P_2,
1169 VEX_LEN_DB_P_2, 1308 VEX_LEN_0F3A39_P_2,
1170 VEX_LEN_DC_P_2, 1309 VEX_LEN_0F3A41_P_2,
1171 VEX_LEN_DD_P_2, 1310 VEX_LEN_0F3A44_P_2,
1172 VEX_LEN_DE_P_2, 1311 VEX_LEN_0F3A46_P_2,
1173 VEX_LEN_DF_P_2, 1312 VEX_LEN_0F3A60_P_2,
1174 VEX_LEN_E0_P_2, 1313 VEX_LEN_0F3A61_P_2,
1175 VEX_LEN_E1_P_2, 1314 VEX_LEN_0F3A62_P_2,
1176 VEX_LEN_E2_P_2, 1315 VEX_LEN_0F3A63_P_2,
1177 VEX_LEN_E3_P_2, 1316 VEX_LEN_0F3A6A_P_2,
1178 VEX_LEN_E4_P_2, 1317 VEX_LEN_0F3A6B_P_2,
1179 VEX_LEN_E5_P_2, 1318 VEX_LEN_0F3A6E_P_2,
1180 VEX_LEN_E8_P_2, 1319 VEX_LEN_0F3A6F_P_2,
1181 VEX_LEN_E9_P_2, 1320 VEX_LEN_0F3A7A_P_2,
1182 VEX_LEN_EA_P_2, 1321 VEX_LEN_0F3A7B_P_2,
1183 VEX_LEN_EB_P_2, 1322 VEX_LEN_0F3A7E_P_2,
1184 VEX_LEN_EC_P_2, 1323 VEX_LEN_0F3A7F_P_2,
1185 VEX_LEN_ED_P_2, 1324 VEX_LEN_0F3ADF_P_2,
1186 VEX_LEN_EE_P_2, 1325 VEX_LEN_0F3AF0_P_3,
1187 VEX_LEN_EF_P_2, 1326 VEX_LEN_0FXOP_08_CC,
1188 VEX_LEN_F1_P_2, 1327 VEX_LEN_0FXOP_08_CD,
1189 VEX_LEN_F2_P_2, 1328 VEX_LEN_0FXOP_08_CE,
1190 VEX_LEN_F3_P_2, 1329 VEX_LEN_0FXOP_08_CF,
1191 VEX_LEN_F4_P_2, 1330 VEX_LEN_0FXOP_08_EC,
1192 VEX_LEN_F5_P_2, 1331 VEX_LEN_0FXOP_08_ED,
1193 VEX_LEN_F6_P_2, 1332 VEX_LEN_0FXOP_08_EE,
1194 VEX_LEN_F7_P_2, 1333 VEX_LEN_0FXOP_08_EF,
1195 VEX_LEN_F8_P_2, 1334 VEX_LEN_0FXOP_09_80,
1196 VEX_LEN_F9_P_2, 1335 VEX_LEN_0FXOP_09_81
1197 VEX_LEN_FA_P_2, 1336 };
1198 VEX_LEN_FB_P_2, 1337
1199 VEX_LEN_FC_P_2, 1338 enum
1200 VEX_LEN_FD_P_2, 1339 {
1201 VEX_LEN_FE_P_2, 1340 VEX_W_0F10_P_0 = 0,
1202 VEX_LEN_3800_P_2, 1341 VEX_W_0F10_P_1,
1203 VEX_LEN_3801_P_2, 1342 VEX_W_0F10_P_2,
1204 VEX_LEN_3802_P_2, 1343 VEX_W_0F10_P_3,
1205 VEX_LEN_3803_P_2, 1344 VEX_W_0F11_P_0,
1206 VEX_LEN_3804_P_2, 1345 VEX_W_0F11_P_1,
1207 VEX_LEN_3805_P_2, 1346 VEX_W_0F11_P_2,
1208 VEX_LEN_3806_P_2, 1347 VEX_W_0F11_P_3,
1209 VEX_LEN_3807_P_2, 1348 VEX_W_0F12_P_0_M_0,
1210 VEX_LEN_3808_P_2, 1349 VEX_W_0F12_P_0_M_1,
1211 VEX_LEN_3809_P_2, 1350 VEX_W_0F12_P_1,
1212 VEX_LEN_380A_P_2, 1351 VEX_W_0F12_P_2,
1213 VEX_LEN_380B_P_2, 1352 VEX_W_0F12_P_3,
1214 VEX_LEN_3819_P_2_M_0, 1353 VEX_W_0F13_M_0,
1215 VEX_LEN_381A_P_2_M_0, 1354 VEX_W_0F14,
1216 VEX_LEN_381C_P_2, 1355 VEX_W_0F15,
1217 VEX_LEN_381D_P_2, 1356 VEX_W_0F16_P_0_M_0,
1218 VEX_LEN_381E_P_2, 1357 VEX_W_0F16_P_0_M_1,
1219 VEX_LEN_3820_P_2, 1358 VEX_W_0F16_P_1,
1220 VEX_LEN_3821_P_2, 1359 VEX_W_0F16_P_2,
1221 VEX_LEN_3822_P_2, 1360 VEX_W_0F17_M_0,
1222 VEX_LEN_3823_P_2, 1361 VEX_W_0F28,
1223 VEX_LEN_3824_P_2, 1362 VEX_W_0F29,
1224 VEX_LEN_3825_P_2, 1363 VEX_W_0F2B_M_0,
1225 VEX_LEN_3828_P_2, 1364 VEX_W_0F2E_P_0,
1226 VEX_LEN_3829_P_2, 1365 VEX_W_0F2E_P_2,
1227 VEX_LEN_382A_P_2_M_0, 1366 VEX_W_0F2F_P_0,
1228 VEX_LEN_382B_P_2, 1367 VEX_W_0F2F_P_2,
1229 VEX_LEN_3830_P_2, 1368 VEX_W_0F50_M_0,
1230 VEX_LEN_3831_P_2, 1369 VEX_W_0F51_P_0,
1231 VEX_LEN_3832_P_2, 1370 VEX_W_0F51_P_1,
1232 VEX_LEN_3833_P_2, 1371 VEX_W_0F51_P_2,
1233 VEX_LEN_3834_P_2, 1372 VEX_W_0F51_P_3,
1234 VEX_LEN_3835_P_2, 1373 VEX_W_0F52_P_0,
1235 VEX_LEN_3837_P_2, 1374 VEX_W_0F52_P_1,
1236 VEX_LEN_3838_P_2, 1375 VEX_W_0F53_P_0,
1237 VEX_LEN_3839_P_2, 1376 VEX_W_0F53_P_1,
1238 VEX_LEN_383A_P_2, 1377 VEX_W_0F58_P_0,
1239 VEX_LEN_383B_P_2, 1378 VEX_W_0F58_P_1,
1240 VEX_LEN_383C_P_2, 1379 VEX_W_0F58_P_2,
1241 VEX_LEN_383D_P_2, 1380 VEX_W_0F58_P_3,
1242 VEX_LEN_383E_P_2, 1381 VEX_W_0F59_P_0,
1243 VEX_LEN_383F_P_2, 1382 VEX_W_0F59_P_1,
1244 VEX_LEN_3840_P_2, 1383 VEX_W_0F59_P_2,
1245 VEX_LEN_3841_P_2, 1384 VEX_W_0F59_P_3,
1246 VEX_LEN_38DB_P_2, 1385 VEX_W_0F5A_P_0,
1247 VEX_LEN_38DC_P_2, 1386 VEX_W_0F5A_P_1,
1248 VEX_LEN_38DD_P_2, 1387 VEX_W_0F5A_P_3,
1249 VEX_LEN_38DE_P_2, 1388 VEX_W_0F5B_P_0,
1250 VEX_LEN_38DF_P_2, 1389 VEX_W_0F5B_P_1,
1251 VEX_LEN_3A06_P_2, 1390 VEX_W_0F5B_P_2,
1252 VEX_LEN_3A0A_P_2, 1391 VEX_W_0F5C_P_0,
1253 VEX_LEN_3A0B_P_2, 1392 VEX_W_0F5C_P_1,
1254 VEX_LEN_3A0E_P_2, 1393 VEX_W_0F5C_P_2,
1255 VEX_LEN_3A0F_P_2, 1394 VEX_W_0F5C_P_3,
1256 VEX_LEN_3A14_P_2, 1395 VEX_W_0F5D_P_0,
1257 VEX_LEN_3A15_P_2, 1396 VEX_W_0F5D_P_1,
1258 VEX_LEN_3A16_P_2, 1397 VEX_W_0F5D_P_2,
1259 VEX_LEN_3A17_P_2, 1398 VEX_W_0F5D_P_3,
1260 VEX_LEN_3A18_P_2, 1399 VEX_W_0F5E_P_0,
1261 VEX_LEN_3A19_P_2, 1400 VEX_W_0F5E_P_1,
1262 VEX_LEN_3A20_P_2, 1401 VEX_W_0F5E_P_2,
1263 VEX_LEN_3A21_P_2, 1402 VEX_W_0F5E_P_3,
1264 VEX_LEN_3A22_P_2, 1403 VEX_W_0F5F_P_0,
1265 VEX_LEN_3A41_P_2, 1404 VEX_W_0F5F_P_1,
1266 VEX_LEN_3A42_P_2, 1405 VEX_W_0F5F_P_2,
1267 VEX_LEN_3A44_P_2, 1406 VEX_W_0F5F_P_3,
1268 VEX_LEN_3A4C_P_2, 1407 VEX_W_0F60_P_2,
1269 VEX_LEN_3A60_P_2, 1408 VEX_W_0F61_P_2,
1270 VEX_LEN_3A61_P_2, 1409 VEX_W_0F62_P_2,
1271 VEX_LEN_3A62_P_2, 1410 VEX_W_0F63_P_2,
1272 VEX_LEN_3A63_P_2, 1411 VEX_W_0F64_P_2,
1273 VEX_LEN_3A6A_P_2, 1412 VEX_W_0F65_P_2,
1274 VEX_LEN_3A6B_P_2, 1413 VEX_W_0F66_P_2,
1275 VEX_LEN_3A6E_P_2, 1414 VEX_W_0F67_P_2,
1276 VEX_LEN_3A6F_P_2, 1415 VEX_W_0F68_P_2,
1277 VEX_LEN_3A7A_P_2, 1416 VEX_W_0F69_P_2,
1278 VEX_LEN_3A7B_P_2, 1417 VEX_W_0F6A_P_2,
1279 VEX_LEN_3A7E_P_2, 1418 VEX_W_0F6B_P_2,
1280 VEX_LEN_3A7F_P_2, 1419 VEX_W_0F6C_P_2,
1281 VEX_LEN_3ADF_P_2 1420 VEX_W_0F6D_P_2,
1421 VEX_W_0F6F_P_1,
1422 VEX_W_0F6F_P_2,
1423 VEX_W_0F70_P_1,
1424 VEX_W_0F70_P_2,
1425 VEX_W_0F70_P_3,
1426 VEX_W_0F71_R_2_P_2,
1427 VEX_W_0F71_R_4_P_2,
1428 VEX_W_0F71_R_6_P_2,
1429 VEX_W_0F72_R_2_P_2,
1430 VEX_W_0F72_R_4_P_2,
1431 VEX_W_0F72_R_6_P_2,
1432 VEX_W_0F73_R_2_P_2,
1433 VEX_W_0F73_R_3_P_2,
1434 VEX_W_0F73_R_6_P_2,
1435 VEX_W_0F73_R_7_P_2,
1436 VEX_W_0F74_P_2,
1437 VEX_W_0F75_P_2,
1438 VEX_W_0F76_P_2,
1439 VEX_W_0F77_P_0,
1440 VEX_W_0F7C_P_2,
1441 VEX_W_0F7C_P_3,
1442 VEX_W_0F7D_P_2,
1443 VEX_W_0F7D_P_3,
1444 VEX_W_0F7E_P_1,
1445 VEX_W_0F7F_P_1,
1446 VEX_W_0F7F_P_2,
1447 VEX_W_0FAE_R_2_M_0,
1448 VEX_W_0FAE_R_3_M_0,
1449 VEX_W_0FC2_P_0,
1450 VEX_W_0FC2_P_1,
1451 VEX_W_0FC2_P_2,
1452 VEX_W_0FC2_P_3,
1453 VEX_W_0FC4_P_2,
1454 VEX_W_0FC5_P_2,
1455 VEX_W_0FD0_P_2,
1456 VEX_W_0FD0_P_3,
1457 VEX_W_0FD1_P_2,
1458 VEX_W_0FD2_P_2,
1459 VEX_W_0FD3_P_2,
1460 VEX_W_0FD4_P_2,
1461 VEX_W_0FD5_P_2,
1462 VEX_W_0FD6_P_2,
1463 VEX_W_0FD7_P_2_M_1,
1464 VEX_W_0FD8_P_2,
1465 VEX_W_0FD9_P_2,
1466 VEX_W_0FDA_P_2,
1467 VEX_W_0FDB_P_2,
1468 VEX_W_0FDC_P_2,
1469 VEX_W_0FDD_P_2,
1470 VEX_W_0FDE_P_2,
1471 VEX_W_0FDF_P_2,
1472 VEX_W_0FE0_P_2,
1473 VEX_W_0FE1_P_2,
1474 VEX_W_0FE2_P_2,
1475 VEX_W_0FE3_P_2,
1476 VEX_W_0FE4_P_2,
1477 VEX_W_0FE5_P_2,
1478 VEX_W_0FE6_P_1,
1479 VEX_W_0FE6_P_2,
1480 VEX_W_0FE6_P_3,
1481 VEX_W_0FE7_P_2_M_0,
1482 VEX_W_0FE8_P_2,
1483 VEX_W_0FE9_P_2,
1484 VEX_W_0FEA_P_2,
1485 VEX_W_0FEB_P_2,
1486 VEX_W_0FEC_P_2,
1487 VEX_W_0FED_P_2,
1488 VEX_W_0FEE_P_2,
1489 VEX_W_0FEF_P_2,
1490 VEX_W_0FF0_P_3_M_0,
1491 VEX_W_0FF1_P_2,
1492 VEX_W_0FF2_P_2,
1493 VEX_W_0FF3_P_2,
1494 VEX_W_0FF4_P_2,
1495 VEX_W_0FF5_P_2,
1496 VEX_W_0FF6_P_2,
1497 VEX_W_0FF7_P_2,
1498 VEX_W_0FF8_P_2,
1499 VEX_W_0FF9_P_2,
1500 VEX_W_0FFA_P_2,
1501 VEX_W_0FFB_P_2,
1502 VEX_W_0FFC_P_2,
1503 VEX_W_0FFD_P_2,
1504 VEX_W_0FFE_P_2,
1505 VEX_W_0F3800_P_2,
1506 VEX_W_0F3801_P_2,
1507 VEX_W_0F3802_P_2,
1508 VEX_W_0F3803_P_2,
1509 VEX_W_0F3804_P_2,
1510 VEX_W_0F3805_P_2,
1511 VEX_W_0F3806_P_2,
1512 VEX_W_0F3807_P_2,
1513 VEX_W_0F3808_P_2,
1514 VEX_W_0F3809_P_2,
1515 VEX_W_0F380A_P_2,
1516 VEX_W_0F380B_P_2,
1517 VEX_W_0F380C_P_2,
1518 VEX_W_0F380D_P_2,
1519 VEX_W_0F380E_P_2,
1520 VEX_W_0F380F_P_2,
1521 VEX_W_0F3816_P_2,
1522 VEX_W_0F3817_P_2,
1523 VEX_W_0F3818_P_2,
1524 VEX_W_0F3819_P_2,
1525 VEX_W_0F381A_P_2_M_0,
1526 VEX_W_0F381C_P_2,
1527 VEX_W_0F381D_P_2,
1528 VEX_W_0F381E_P_2,
1529 VEX_W_0F3820_P_2,
1530 VEX_W_0F3821_P_2,
1531 VEX_W_0F3822_P_2,
1532 VEX_W_0F3823_P_2,
1533 VEX_W_0F3824_P_2,
1534 VEX_W_0F3825_P_2,
1535 VEX_W_0F3828_P_2,
1536 VEX_W_0F3829_P_2,
1537 VEX_W_0F382A_P_2_M_0,
1538 VEX_W_0F382B_P_2,
1539 VEX_W_0F382C_P_2_M_0,
1540 VEX_W_0F382D_P_2_M_0,
1541 VEX_W_0F382E_P_2_M_0,
1542 VEX_W_0F382F_P_2_M_0,
1543 VEX_W_0F3830_P_2,
1544 VEX_W_0F3831_P_2,
1545 VEX_W_0F3832_P_2,
1546 VEX_W_0F3833_P_2,
1547 VEX_W_0F3834_P_2,
1548 VEX_W_0F3835_P_2,
1549 VEX_W_0F3836_P_2,
1550 VEX_W_0F3837_P_2,
1551 VEX_W_0F3838_P_2,
1552 VEX_W_0F3839_P_2,
1553 VEX_W_0F383A_P_2,
1554 VEX_W_0F383B_P_2,
1555 VEX_W_0F383C_P_2,
1556 VEX_W_0F383D_P_2,
1557 VEX_W_0F383E_P_2,
1558 VEX_W_0F383F_P_2,
1559 VEX_W_0F3840_P_2,
1560 VEX_W_0F3841_P_2,
1561 VEX_W_0F3846_P_2,
1562 VEX_W_0F3858_P_2,
1563 VEX_W_0F3859_P_2,
1564 VEX_W_0F385A_P_2_M_0,
1565 VEX_W_0F3878_P_2,
1566 VEX_W_0F3879_P_2,
1567 VEX_W_0F38DB_P_2,
1568 VEX_W_0F38DC_P_2,
1569 VEX_W_0F38DD_P_2,
1570 VEX_W_0F38DE_P_2,
1571 VEX_W_0F38DF_P_2,
1572 VEX_W_0F3A00_P_2,
1573 VEX_W_0F3A01_P_2,
1574 VEX_W_0F3A02_P_2,
1575 VEX_W_0F3A04_P_2,
1576 VEX_W_0F3A05_P_2,
1577 VEX_W_0F3A06_P_2,
1578 VEX_W_0F3A08_P_2,
1579 VEX_W_0F3A09_P_2,
1580 VEX_W_0F3A0A_P_2,
1581 VEX_W_0F3A0B_P_2,
1582 VEX_W_0F3A0C_P_2,
1583 VEX_W_0F3A0D_P_2,
1584 VEX_W_0F3A0E_P_2,
1585 VEX_W_0F3A0F_P_2,
1586 VEX_W_0F3A14_P_2,
1587 VEX_W_0F3A15_P_2,
1588 VEX_W_0F3A18_P_2,
1589 VEX_W_0F3A19_P_2,
1590 VEX_W_0F3A20_P_2,
1591 VEX_W_0F3A21_P_2,
1592 VEX_W_0F3A38_P_2,
1593 VEX_W_0F3A39_P_2,
1594 VEX_W_0F3A40_P_2,
1595 VEX_W_0F3A41_P_2,
1596 VEX_W_0F3A42_P_2,
1597 VEX_W_0F3A44_P_2,
1598 VEX_W_0F3A46_P_2,
1599 VEX_W_0F3A48_P_2,
1600 VEX_W_0F3A49_P_2,
1601 VEX_W_0F3A4A_P_2,
1602 VEX_W_0F3A4B_P_2,
1603 VEX_W_0F3A4C_P_2,
1604 VEX_W_0F3A60_P_2,
1605 VEX_W_0F3A61_P_2,
1606 VEX_W_0F3A62_P_2,
1607 VEX_W_0F3A63_P_2,
1608 VEX_W_0F3ADF_P_2
1282 }; 1609 };
1283 1610
1284 typedef void (*op_rtn) (int bytemode, int sizeflag); 1611 typedef void (*op_rtn) (int bytemode, int sizeflag);
1285 1612
1286 struct dis386 { 1613 struct dis386 {
1287 const char *name; 1614 const char *name;
1288 struct 1615 struct
1289 { 1616 {
1290 op_rtn rtn; 1617 op_rtn rtn;
1291 int bytemode; 1618 int bytemode;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1324 'X' => print 's', 'd' depending on data16 prefix (for XMM) 1651 'X' => print 's', 'd' depending on data16 prefix (for XMM)
1325 'Y' => 'q' if instruction has an REX 64bit overwrite prefix and 1652 'Y' => 'q' if instruction has an REX 64bit overwrite prefix and
1326 suffix_always is true. 1653 suffix_always is true.
1327 'Z' => print 'q' in 64bit mode and behave as 'L' otherwise 1654 'Z' => print 'q' in 64bit mode and behave as 'L' otherwise
1328 '!' => change condition from true to false or from false to true. 1655 '!' => change condition from true to false or from false to true.
1329 '%' => add 1 upper case letter to the macro. 1656 '%' => add 1 upper case letter to the macro.
1330 1657
1331 2 upper case letter macros: 1658 2 upper case letter macros:
1332 "XY" => print 'x' or 'y' if no register operands or suffix_always 1659 "XY" => print 'x' or 'y' if no register operands or suffix_always
1333 is true. 1660 is true.
1334 'XW' => print 's', 'd' depending on the VEX.W bit (for FMA) 1661 "XW" => print 's', 'd' depending on the VEX.W bit (for FMA)
1335 'LQ' => print 'l' ('d' in Intel mode) or 'q' for memory operand 1662 "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand
1336 or suffix_always is true 1663 or suffix_always is true
1664 "LB" => print "abs" in 64bit mode and behave as 'B' otherwise
1665 "LS" => print "abs" in 64bit mode and behave as 'S' otherwise
1666 "LV" => print "abs" for 64bit operand and behave as 'S' otherwise
1667 "LW" => print 'd', 'q' depending on the VEX.W bit
1337 1668
1338 Many of the above letters print nothing in Intel mode. See "putop" 1669 Many of the above letters print nothing in Intel mode. See "putop"
1339 for the details. 1670 for the details.
1340 1671
1341 Braces '{' and '}', and vertical bars '|', indicate alternative 1672 Braces '{' and '}', and vertical bars '|', indicate alternative
1342 mnemonic strings for AT&T and Intel. */ 1673 mnemonic strings for AT&T and Intel. */
1343 1674
1344 static const struct dis386 dis386[] = { 1675 static const struct dis386 dis386[] = {
1345 /* 00 */ 1676 /* 00 */
1346 { "addB",» » { Eb, Gb } }, 1677 { "addB",» » { Ebh1, Gb } },
1347 { "addS",» » { Ev, Gv } }, 1678 { "addS",» » { Evh1, Gv } },
1348 { "addB", { Gb, EbS } }, 1679 { "addB", { Gb, EbS } },
1349 { "addS", { Gv, EvS } }, 1680 { "addS", { Gv, EvS } },
1350 { "addB", { AL, Ib } }, 1681 { "addB", { AL, Ib } },
1351 { "addS", { eAX, Iv } }, 1682 { "addS", { eAX, Iv } },
1352 { X86_64_TABLE (X86_64_06) }, 1683 { X86_64_TABLE (X86_64_06) },
1353 { X86_64_TABLE (X86_64_07) }, 1684 { X86_64_TABLE (X86_64_07) },
1354 /* 08 */ 1685 /* 08 */
1355 { "orB",» » { Eb, Gb } }, 1686 { "orB",» » { Ebh1, Gb } },
1356 { "orS",» » { Ev, Gv } }, 1687 { "orS",» » { Evh1, Gv } },
1357 { "orB", { Gb, EbS } }, 1688 { "orB", { Gb, EbS } },
1358 { "orS", { Gv, EvS } }, 1689 { "orS", { Gv, EvS } },
1359 { "orB", { AL, Ib } }, 1690 { "orB", { AL, Ib } },
1360 { "orS", { eAX, Iv } }, 1691 { "orS", { eAX, Iv } },
1361 { X86_64_TABLE (X86_64_0D) }, 1692 { X86_64_TABLE (X86_64_0D) },
1362 { "(bad)",» » { XX } },» /* 0x0f extended opcode escape */ 1693 { Bad_Opcode },» /* 0x0f extended opcode escape */
1363 /* 10 */ 1694 /* 10 */
1364 { "adcB",» » { Eb, Gb } }, 1695 { "adcB",» » { Ebh1, Gb } },
1365 { "adcS",» » { Ev, Gv } }, 1696 { "adcS",» » { Evh1, Gv } },
1366 { "adcB", { Gb, EbS } }, 1697 { "adcB", { Gb, EbS } },
1367 { "adcS", { Gv, EvS } }, 1698 { "adcS", { Gv, EvS } },
1368 { "adcB", { AL, Ib } }, 1699 { "adcB", { AL, Ib } },
1369 { "adcS", { eAX, Iv } }, 1700 { "adcS", { eAX, Iv } },
1370 { X86_64_TABLE (X86_64_16) }, 1701 { X86_64_TABLE (X86_64_16) },
1371 { X86_64_TABLE (X86_64_17) }, 1702 { X86_64_TABLE (X86_64_17) },
1372 /* 18 */ 1703 /* 18 */
1373 { "sbbB",» » { Eb, Gb } }, 1704 { "sbbB",» » { Ebh1, Gb } },
1374 { "sbbS",» » { Ev, Gv } }, 1705 { "sbbS",» » { Evh1, Gv } },
1375 { "sbbB", { Gb, EbS } }, 1706 { "sbbB", { Gb, EbS } },
1376 { "sbbS", { Gv, EvS } }, 1707 { "sbbS", { Gv, EvS } },
1377 { "sbbB", { AL, Ib } }, 1708 { "sbbB", { AL, Ib } },
1378 { "sbbS", { eAX, Iv } }, 1709 { "sbbS", { eAX, Iv } },
1379 { X86_64_TABLE (X86_64_1E) }, 1710 { X86_64_TABLE (X86_64_1E) },
1380 { X86_64_TABLE (X86_64_1F) }, 1711 { X86_64_TABLE (X86_64_1F) },
1381 /* 20 */ 1712 /* 20 */
1382 { "andB",» » { Eb, Gb } }, 1713 { "andB",» » { Ebh1, Gb } },
1383 { "andS",» » { Ev, Gv } }, 1714 { "andS",» » { Evh1, Gv } },
1384 { "andB", { Gb, EbS } }, 1715 { "andB", { Gb, EbS } },
1385 { "andS", { Gv, EvS } }, 1716 { "andS", { Gv, EvS } },
1386 { "andB", { AL, Ib } }, 1717 { "andB", { AL, Ib } },
1387 { "andS", { eAX, Iv } }, 1718 { "andS", { eAX, Iv } },
1388 { "(bad)",» » { XX } },» /* SEG ES prefix */ 1719 { Bad_Opcode },» /* SEG ES prefix */
1389 { X86_64_TABLE (X86_64_27) }, 1720 { X86_64_TABLE (X86_64_27) },
1390 /* 28 */ 1721 /* 28 */
1391 { "subB",» » { Eb, Gb } }, 1722 { "subB",» » { Ebh1, Gb } },
1392 { "subS",» » { Ev, Gv } }, 1723 { "subS",» » { Evh1, Gv } },
1393 { "subB", { Gb, EbS } }, 1724 { "subB", { Gb, EbS } },
1394 { "subS", { Gv, EvS } }, 1725 { "subS", { Gv, EvS } },
1395 { "subB", { AL, Ib } }, 1726 { "subB", { AL, Ib } },
1396 { "subS", { eAX, Iv } }, 1727 { "subS", { eAX, Iv } },
1397 { "(bad)",» » { XX } },» /* SEG CS prefix */ 1728 { Bad_Opcode },» /* SEG CS prefix */
1398 { X86_64_TABLE (X86_64_2F) }, 1729 { X86_64_TABLE (X86_64_2F) },
1399 /* 30 */ 1730 /* 30 */
1400 { "xorB",» » { Eb, Gb } }, 1731 { "xorB",» » { Ebh1, Gb } },
1401 { "xorS",» » { Ev, Gv } }, 1732 { "xorS",» » { Evh1, Gv } },
1402 { "xorB", { Gb, EbS } }, 1733 { "xorB", { Gb, EbS } },
1403 { "xorS", { Gv, EvS } }, 1734 { "xorS", { Gv, EvS } },
1404 { "xorB", { AL, Ib } }, 1735 { "xorB", { AL, Ib } },
1405 { "xorS", { eAX, Iv } }, 1736 { "xorS", { eAX, Iv } },
1406 { "(bad)",» » { XX } },» /* SEG SS prefix */ 1737 { Bad_Opcode },» /* SEG SS prefix */
1407 { X86_64_TABLE (X86_64_37) }, 1738 { X86_64_TABLE (X86_64_37) },
1408 /* 38 */ 1739 /* 38 */
1409 { "cmpB", { Eb, Gb } }, 1740 { "cmpB", { Eb, Gb } },
1410 { "cmpS", { Ev, Gv } }, 1741 { "cmpS", { Ev, Gv } },
1411 { "cmpB", { Gb, EbS } }, 1742 { "cmpB", { Gb, EbS } },
1412 { "cmpS", { Gv, EvS } }, 1743 { "cmpS", { Gv, EvS } },
1413 { "cmpB", { AL, Ib } }, 1744 { "cmpB", { AL, Ib } },
1414 { "cmpS", { eAX, Iv } }, 1745 { "cmpS", { eAX, Iv } },
1415 { "(bad)",» » { XX } },» /* SEG DS prefix */ 1746 { Bad_Opcode },» /* SEG DS prefix */
1416 { X86_64_TABLE (X86_64_3F) }, 1747 { X86_64_TABLE (X86_64_3F) },
1417 /* 40 */ 1748 /* 40 */
1418 { "inc{S|}", { RMeAX } }, 1749 { "inc{S|}", { RMeAX } },
1419 { "inc{S|}", { RMeCX } }, 1750 { "inc{S|}", { RMeCX } },
1420 { "inc{S|}", { RMeDX } }, 1751 { "inc{S|}", { RMeDX } },
1421 { "inc{S|}", { RMeBX } }, 1752 { "inc{S|}", { RMeBX } },
1422 { "inc{S|}", { RMeSP } }, 1753 { "inc{S|}", { RMeSP } },
1423 { "inc{S|}", { RMeBP } }, 1754 { "inc{S|}", { RMeBP } },
1424 { "inc{S|}", { RMeSI } }, 1755 { "inc{S|}", { RMeSI } },
1425 { "inc{S|}", { RMeDI } }, 1756 { "inc{S|}", { RMeDI } },
(...skipping 22 matching lines...) Expand all
1448 { "popV", { RMrBX } }, 1779 { "popV", { RMrBX } },
1449 { "popV", { RMrSP } }, 1780 { "popV", { RMrSP } },
1450 { "popV", { RMrBP } }, 1781 { "popV", { RMrBP } },
1451 { "popV", { RMrSI } }, 1782 { "popV", { RMrSI } },
1452 { "popV", { RMrDI } }, 1783 { "popV", { RMrDI } },
1453 /* 60 */ 1784 /* 60 */
1454 { X86_64_TABLE (X86_64_60) }, 1785 { X86_64_TABLE (X86_64_60) },
1455 { X86_64_TABLE (X86_64_61) }, 1786 { X86_64_TABLE (X86_64_61) },
1456 { X86_64_TABLE (X86_64_62) }, 1787 { X86_64_TABLE (X86_64_62) },
1457 { X86_64_TABLE (X86_64_63) }, 1788 { X86_64_TABLE (X86_64_63) },
1458 { "(bad)",» » { XX } },» /* seg fs */ 1789 { Bad_Opcode },» /* seg fs */
1459 { "(bad)",» » { XX } },» /* seg gs */ 1790 { Bad_Opcode },» /* seg gs */
1460 { "(bad)",» » { XX } },» /* op size prefix */ 1791 { Bad_Opcode },» /* op size prefix */
1461 { "(bad)",» » { XX } },» /* adr size prefix */ 1792 { Bad_Opcode },» /* adr size prefix */
1462 /* 68 */ 1793 /* 68 */
1463 { "pushT",» » { Iq } }, 1794 { "pushT",» » { sIv } },
1464 { "imulS", { Gv, Ev, Iv } }, 1795 { "imulS", { Gv, Ev, Iv } },
1465 { "pushT",» » { sIb } }, 1796 { "pushT",» » { sIbT } },
1466 { "imulS", { Gv, Ev, sIb } }, 1797 { "imulS", { Gv, Ev, sIb } },
1467 { "ins{b|}", { Ybr, indirDX } }, 1798 { "ins{b|}", { Ybr, indirDX } },
1468 { X86_64_TABLE (X86_64_6D) }, 1799 { X86_64_TABLE (X86_64_6D) },
1469 { "outs{b|}", { indirDXr, Xb } }, 1800 { "outs{b|}", { indirDXr, Xb } },
1470 { X86_64_TABLE (X86_64_6F) }, 1801 { X86_64_TABLE (X86_64_6F) },
1471 /* 70 */ 1802 /* 70 */
1472 { "joH", { Jb, XX, cond_jump_flag } }, 1803 { "joH", { Jb, XX, cond_jump_flag } },
1473 { "jnoH", { Jb, XX, cond_jump_flag } }, 1804 { "jnoH", { Jb, XX, cond_jump_flag } },
1474 { "jbH", { Jb, XX, cond_jump_flag } }, 1805 { "jbH", { Jb, XX, cond_jump_flag } },
1475 { "jaeH", { Jb, XX, cond_jump_flag } }, 1806 { "jaeH", { Jb, XX, cond_jump_flag } },
1476 { "jeH", { Jb, XX, cond_jump_flag } }, 1807 { "jeH", { Jb, XX, cond_jump_flag } },
1477 { "jneH", { Jb, XX, cond_jump_flag } }, 1808 { "jneH", { Jb, XX, cond_jump_flag } },
1478 { "jbeH", { Jb, XX, cond_jump_flag } }, 1809 { "jbeH", { Jb, XX, cond_jump_flag } },
1479 { "jaH", { Jb, XX, cond_jump_flag } }, 1810 { "jaH", { Jb, XX, cond_jump_flag } },
1480 /* 78 */ 1811 /* 78 */
1481 { "jsH", { Jb, XX, cond_jump_flag } }, 1812 { "jsH", { Jb, XX, cond_jump_flag } },
1482 { "jnsH", { Jb, XX, cond_jump_flag } }, 1813 { "jnsH", { Jb, XX, cond_jump_flag } },
1483 { "jpH", { Jb, XX, cond_jump_flag } }, 1814 { "jpH", { Jb, XX, cond_jump_flag } },
1484 { "jnpH", { Jb, XX, cond_jump_flag } }, 1815 { "jnpH", { Jb, XX, cond_jump_flag } },
1485 { "jlH", { Jb, XX, cond_jump_flag } }, 1816 { "jlH", { Jb, XX, cond_jump_flag } },
1486 { "jgeH", { Jb, XX, cond_jump_flag } }, 1817 { "jgeH", { Jb, XX, cond_jump_flag } },
1487 { "jleH", { Jb, XX, cond_jump_flag } }, 1818 { "jleH", { Jb, XX, cond_jump_flag } },
1488 { "jgH", { Jb, XX, cond_jump_flag } }, 1819 { "jgH", { Jb, XX, cond_jump_flag } },
1489 /* 80 */ 1820 /* 80 */
1490 { REG_TABLE (REG_80) }, 1821 { REG_TABLE (REG_80) },
1491 { REG_TABLE (REG_81) }, 1822 { REG_TABLE (REG_81) },
1492 { "(bad)",» » { XX } }, 1823 { Bad_Opcode },
1493 { REG_TABLE (REG_82) }, 1824 { REG_TABLE (REG_82) },
1494 { "testB", { Eb, Gb } }, 1825 { "testB", { Eb, Gb } },
1495 { "testS", { Ev, Gv } }, 1826 { "testS", { Ev, Gv } },
1496 { "xchgB",» » { Eb, Gb } }, 1827 { "xchgB",» » { Ebh2, Gb } },
1497 { "xchgS",» » { Ev, Gv } }, 1828 { "xchgS",» » { Evh2, Gv } },
1498 /* 88 */ 1829 /* 88 */
1499 { "movB",» » { Eb, Gb } }, 1830 { "movB",» » { Ebh3, Gb } },
1500 { "movS",» » { Ev, Gv } }, 1831 { "movS",» » { Evh3, Gv } },
1501 { "movB", { Gb, EbS } }, 1832 { "movB", { Gb, EbS } },
1502 { "movS", { Gv, EvS } }, 1833 { "movS", { Gv, EvS } },
1503 { "movD", { Sv, Sw } }, 1834 { "movD", { Sv, Sw } },
1504 { MOD_TABLE (MOD_8D) }, 1835 { MOD_TABLE (MOD_8D) },
1505 { "movD", { Sw, Sv } }, 1836 { "movD", { Sw, Sv } },
1506 { REG_TABLE (REG_8F) }, 1837 { REG_TABLE (REG_8F) },
1507 /* 90 */ 1838 /* 90 */
1508 { PREFIX_TABLE (PREFIX_90) }, 1839 { PREFIX_TABLE (PREFIX_90) },
1509 { "xchgS", { RMeCX, eAX } }, 1840 { "xchgS", { RMeCX, eAX } },
1510 { "xchgS", { RMeDX, eAX } }, 1841 { "xchgS", { RMeDX, eAX } },
1511 { "xchgS", { RMeBX, eAX } }, 1842 { "xchgS", { RMeBX, eAX } },
1512 { "xchgS", { RMeSP, eAX } }, 1843 { "xchgS", { RMeSP, eAX } },
1513 { "xchgS", { RMeBP, eAX } }, 1844 { "xchgS", { RMeBP, eAX } },
1514 { "xchgS", { RMeSI, eAX } }, 1845 { "xchgS", { RMeSI, eAX } },
1515 { "xchgS", { RMeDI, eAX } }, 1846 { "xchgS", { RMeDI, eAX } },
1516 /* 98 */ 1847 /* 98 */
1517 { "cW{t|}R", { XX } }, 1848 { "cW{t|}R", { XX } },
1518 { "cR{t|}O", { XX } }, 1849 { "cR{t|}O", { XX } },
1519 { X86_64_TABLE (X86_64_9A) }, 1850 { X86_64_TABLE (X86_64_9A) },
1520 { "(bad)",» » { XX } },» /* fwait */ 1851 { Bad_Opcode },» /* fwait */
1521 { "pushfT", { XX } }, 1852 { "pushfT", { XX } },
1522 { "popfT", { XX } }, 1853 { "popfT", { XX } },
1523 { "sahf", { XX } }, 1854 { "sahf", { XX } },
1524 { "lahf", { XX } }, 1855 { "lahf", { XX } },
1525 /* a0 */ 1856 /* a0 */
1526 { "movB",» » { AL, Ob } }, 1857 { "mov%LB",» » { AL, Ob } },
1527 { "movS",» » { eAX, Ov } }, 1858 { "mov%LS",» » { eAX, Ov } },
1528 { "movB",» » { Ob, AL } }, 1859 { "mov%LB",» » { Ob, AL } },
1529 { "movS",» » { Ov, eAX } }, 1860 { "mov%LS",» » { Ov, eAX } },
1530 { "movs{b|}", { Ybr, Xb } }, 1861 { "movs{b|}", { Ybr, Xb } },
1531 { "movs{R|}", { Yvr, Xv } }, 1862 { "movs{R|}", { Yvr, Xv } },
1532 { "cmps{b|}", { Xb, Yb } }, 1863 { "cmps{b|}", { Xb, Yb } },
1533 { "cmps{R|}", { Xv, Yv } }, 1864 { "cmps{R|}", { Xv, Yv } },
1534 /* a8 */ 1865 /* a8 */
1535 { "testB", { AL, Ib } }, 1866 { "testB", { AL, Ib } },
1536 { "testS", { eAX, Iv } }, 1867 { "testS", { eAX, Iv } },
1537 { "stosB", { Ybr, AL } }, 1868 { "stosB", { Ybr, AL } },
1538 { "stosS", { Yvr, eAX } }, 1869 { "stosS", { Yvr, eAX } },
1539 { "lodsB", { ALr, Xb } }, 1870 { "lodsB", { ALr, Xb } },
1540 { "lodsS", { eAXr, Xv } }, 1871 { "lodsS", { eAXr, Xv } },
1541 { "scasB", { AL, Yb } }, 1872 { "scasB", { AL, Yb } },
1542 { "scasS", { eAX, Yv } }, 1873 { "scasS", { eAX, Yv } },
1543 /* b0 */ 1874 /* b0 */
1544 { "movB", { RMAL, Ib } }, 1875 { "movB", { RMAL, Ib } },
1545 { "movB", { RMCL, Ib } }, 1876 { "movB", { RMCL, Ib } },
1546 { "movB", { RMDL, Ib } }, 1877 { "movB", { RMDL, Ib } },
1547 { "movB", { RMBL, Ib } }, 1878 { "movB", { RMBL, Ib } },
1548 { "movB", { RMAH, Ib } }, 1879 { "movB", { RMAH, Ib } },
1549 { "movB", { RMCH, Ib } }, 1880 { "movB", { RMCH, Ib } },
1550 { "movB", { RMDH, Ib } }, 1881 { "movB", { RMDH, Ib } },
1551 { "movB", { RMBH, Ib } }, 1882 { "movB", { RMBH, Ib } },
1552 /* b8 */ 1883 /* b8 */
1553 { "movS",» » { RMeAX, Iv64 } }, 1884 { "mov%LV",» » { RMeAX, Iv64 } },
1554 { "movS",» » { RMeCX, Iv64 } }, 1885 { "mov%LV",» » { RMeCX, Iv64 } },
1555 { "movS",» » { RMeDX, Iv64 } }, 1886 { "mov%LV",» » { RMeDX, Iv64 } },
1556 { "movS",» » { RMeBX, Iv64 } }, 1887 { "mov%LV",» » { RMeBX, Iv64 } },
1557 { "movS",» » { RMeSP, Iv64 } }, 1888 { "mov%LV",» » { RMeSP, Iv64 } },
1558 { "movS",» » { RMeBP, Iv64 } }, 1889 { "mov%LV",» » { RMeBP, Iv64 } },
1559 { "movS",» » { RMeSI, Iv64 } }, 1890 { "mov%LV",» » { RMeSI, Iv64 } },
1560 { "movS",» » { RMeDI, Iv64 } }, 1891 { "mov%LV",» » { RMeDI, Iv64 } },
1561 /* c0 */ 1892 /* c0 */
1562 { REG_TABLE (REG_C0) }, 1893 { REG_TABLE (REG_C0) },
1563 { REG_TABLE (REG_C1) }, 1894 { REG_TABLE (REG_C1) },
1564 { "retT", { Iw } }, 1895 { "retT", { Iw } },
1565 { "retT", { XX } }, 1896 { "retT", { XX } },
1566 { X86_64_TABLE (X86_64_C4) }, 1897 { X86_64_TABLE (X86_64_C4) },
1567 { X86_64_TABLE (X86_64_C5) }, 1898 { X86_64_TABLE (X86_64_C5) },
1568 { REG_TABLE (REG_C6) }, 1899 { REG_TABLE (REG_C6) },
1569 { REG_TABLE (REG_C7) }, 1900 { REG_TABLE (REG_C7) },
1570 /* c8 */ 1901 /* c8 */
1571 { "enterT", { Iw, Ib } }, 1902 { "enterT", { Iw, Ib } },
1572 { "leaveT", { XX } }, 1903 { "leaveT", { XX } },
1573 { "Jret{|f}P", { Iw } }, 1904 { "Jret{|f}P", { Iw } },
1574 { "Jret{|f}P", { XX } }, 1905 { "Jret{|f}P", { XX } },
1575 { "int3", { XX } }, 1906 { "int3", { XX } },
1576 { "int", { Ib } }, 1907 { "int", { Ib } },
1577 { X86_64_TABLE (X86_64_CE) }, 1908 { X86_64_TABLE (X86_64_CE) },
1578 { "iretP", { XX } }, 1909 { "iretP", { XX } },
1579 /* d0 */ 1910 /* d0 */
1580 { REG_TABLE (REG_D0) }, 1911 { REG_TABLE (REG_D0) },
1581 { REG_TABLE (REG_D1) }, 1912 { REG_TABLE (REG_D1) },
1582 { REG_TABLE (REG_D2) }, 1913 { REG_TABLE (REG_D2) },
1583 { REG_TABLE (REG_D3) }, 1914 { REG_TABLE (REG_D3) },
1584 { X86_64_TABLE (X86_64_D4) }, 1915 { X86_64_TABLE (X86_64_D4) },
1585 { X86_64_TABLE (X86_64_D5) }, 1916 { X86_64_TABLE (X86_64_D5) },
1586 { "(bad)",» » { XX } }, 1917 { Bad_Opcode },
1587 { "xlat", { DSBX } }, 1918 { "xlat", { DSBX } },
1588 /* d8 */ 1919 /* d8 */
1589 { FLOAT }, 1920 { FLOAT },
1590 { FLOAT }, 1921 { FLOAT },
1591 { FLOAT }, 1922 { FLOAT },
1592 { FLOAT }, 1923 { FLOAT },
1593 { FLOAT }, 1924 { FLOAT },
1594 { FLOAT }, 1925 { FLOAT },
1595 { FLOAT }, 1926 { FLOAT },
1596 { FLOAT }, 1927 { FLOAT },
1597 /* e0 */ 1928 /* e0 */
1598 { "loopneFH", { Jb, XX, loop_jcxz_flag } }, 1929 { "loopneFH", { Jb, XX, loop_jcxz_flag } },
1599 { "loopeFH", { Jb, XX, loop_jcxz_flag } }, 1930 { "loopeFH", { Jb, XX, loop_jcxz_flag } },
1600 { "loopFH", { Jb, XX, loop_jcxz_flag } }, 1931 { "loopFH", { Jb, XX, loop_jcxz_flag } },
1601 { "jEcxzH", { Jb, XX, loop_jcxz_flag } }, 1932 { "jEcxzH", { Jb, XX, loop_jcxz_flag } },
1602 { "inB", { AL, Ib } }, 1933 { "inB", { AL, Ib } },
1603 { "inG", { zAX, Ib } }, 1934 { "inG", { zAX, Ib } },
1604 { "outB", { Ib, AL } }, 1935 { "outB", { Ib, AL } },
1605 { "outG", { Ib, zAX } }, 1936 { "outG", { Ib, zAX } },
1606 /* e8 */ 1937 /* e8 */
1607 { "callT", { Jv } }, 1938 { "callT", { Jv } },
1608 { "jmpT", { Jv } }, 1939 { "jmpT", { Jv } },
1609 { X86_64_TABLE (X86_64_EA) }, 1940 { X86_64_TABLE (X86_64_EA) },
1610 { "jmp", { Jb } }, 1941 { "jmp", { Jb } },
1611 { "inB", { AL, indirDX } }, 1942 { "inB", { AL, indirDX } },
1612 { "inG", { zAX, indirDX } }, 1943 { "inG", { zAX, indirDX } },
1613 { "outB", { indirDX, AL } }, 1944 { "outB", { indirDX, AL } },
1614 { "outG", { indirDX, zAX } }, 1945 { "outG", { indirDX, zAX } },
1615 /* f0 */ 1946 /* f0 */
1616 { "(bad)",» » { XX } },» /* lock prefix */ 1947 { Bad_Opcode },» /* lock prefix */
1617 { "icebp", { XX } }, 1948 { "icebp", { XX } },
1618 { "(bad)",» » { XX } },» /* repne */ 1949 { Bad_Opcode },» /* repne */
1619 { "(bad)",» » { XX } },» /* repz */ 1950 { Bad_Opcode },» /* repz */
1620 { "hlt", { XX } }, 1951 { "hlt", { XX } },
1621 { "cmc", { XX } }, 1952 { "cmc", { XX } },
1622 { REG_TABLE (REG_F6) }, 1953 { REG_TABLE (REG_F6) },
1623 { REG_TABLE (REG_F7) }, 1954 { REG_TABLE (REG_F7) },
1624 /* f8 */ 1955 /* f8 */
1625 { "clc", { XX } }, 1956 { "clc", { XX } },
1626 { "stc", { XX } }, 1957 { "stc", { XX } },
1627 { "cli", { XX } }, 1958 { "cli", { XX } },
1628 { "sti", { XX } }, 1959 { "sti", { XX } },
1629 { "cld", { XX } }, 1960 { "cld", { XX } },
1630 { "std", { XX } }, 1961 { "std", { XX } },
1631 { REG_TABLE (REG_FE) }, 1962 { REG_TABLE (REG_FE) },
1632 { REG_TABLE (REG_FF) }, 1963 { REG_TABLE (REG_FF) },
1633 }; 1964 };
1634 1965
1635 static const struct dis386 dis386_twobyte[] = { 1966 static const struct dis386 dis386_twobyte[] = {
1636 /* 00 */ 1967 /* 00 */
1637 { REG_TABLE (REG_0F00 ) }, 1968 { REG_TABLE (REG_0F00 ) },
1638 { REG_TABLE (REG_0F01 ) }, 1969 { REG_TABLE (REG_0F01 ) },
1639 { "larS", { Gv, Ew } }, 1970 { "larS", { Gv, Ew } },
1640 { "lslS", { Gv, Ew } }, 1971 { "lslS", { Gv, Ew } },
1641 { "(bad)",» » { XX } }, 1972 { Bad_Opcode },
1642 { "syscall", { XX } }, 1973 { "syscall", { XX } },
1643 { "clts", { XX } }, 1974 { "clts", { XX } },
1644 { "sysretP", { XX } }, 1975 { "sysretP", { XX } },
1645 /* 08 */ 1976 /* 08 */
1646 { "invd", { XX } }, 1977 { "invd", { XX } },
1647 { "wbinvd", { XX } }, 1978 { "wbinvd", { XX } },
1648 { "(bad)",» » { XX } }, 1979 { Bad_Opcode },
1649 { "ud2a",» » { XX } }, 1980 { "ud2",» » { XX } },
1650 { "(bad)",» » { XX } }, 1981 { Bad_Opcode },
1651 { REG_TABLE (REG_0F0D) }, 1982 { REG_TABLE (REG_0F0D) },
1652 { "femms", { XX } }, 1983 { "femms", { XX } },
1653 { "", { MX, EM, OPSUF } }, /* See OP_3DNowSuffix. */ 1984 { "", { MX, EM, OPSUF } }, /* See OP_3DNowSuffix. */
1654 /* 10 */ 1985 /* 10 */
1655 { PREFIX_TABLE (PREFIX_0F10) }, 1986 { PREFIX_TABLE (PREFIX_0F10) },
1656 { PREFIX_TABLE (PREFIX_0F11) }, 1987 { PREFIX_TABLE (PREFIX_0F11) },
1657 { PREFIX_TABLE (PREFIX_0F12) }, 1988 { PREFIX_TABLE (PREFIX_0F12) },
1658 { MOD_TABLE (MOD_0F13) }, 1989 { MOD_TABLE (MOD_0F13) },
1659 { "unpcklpX", { XM, EXx } }, 1990 { "unpcklpX", { XM, EXx } },
1660 { "unpckhpX", { XM, EXx } }, 1991 { "unpckhpX", { XM, EXx } },
1661 { PREFIX_TABLE (PREFIX_0F16) }, 1992 { PREFIX_TABLE (PREFIX_0F16) },
1662 { MOD_TABLE (MOD_0F17) }, 1993 { MOD_TABLE (MOD_0F17) },
1663 /* 18 */ 1994 /* 18 */
1664 { REG_TABLE (REG_0F18) }, 1995 { REG_TABLE (REG_0F18) },
1665 { "nopQ", { Ev } }, 1996 { "nopQ", { Ev } },
1666 { "nopQ", { Ev } }, 1997 { "nopQ", { Ev } },
1667 { "nopQ", { Ev } }, 1998 { "nopQ", { Ev } },
1668 { "nopQ", { Ev } }, 1999 { "nopQ", { Ev } },
1669 { "nopQ", { Ev } }, 2000 { "nopQ", { Ev } },
1670 { "nopQ", { Ev } }, 2001 { "nopQ", { Ev } },
1671 { "nopQ", { Ev } }, 2002 { "nopQ", { Ev } },
1672 /* 20 */ 2003 /* 20 */
1673 { MOD_TABLE (MOD_0F20) }, 2004 { MOD_TABLE (MOD_0F20) },
1674 { MOD_TABLE (MOD_0F21) }, 2005 { MOD_TABLE (MOD_0F21) },
1675 { MOD_TABLE (MOD_0F22) }, 2006 { MOD_TABLE (MOD_0F22) },
1676 { MOD_TABLE (MOD_0F23) }, 2007 { MOD_TABLE (MOD_0F23) },
1677 { MOD_TABLE (MOD_0F24) }, 2008 { MOD_TABLE (MOD_0F24) },
1678 { "(bad)",» » { XX } }, 2009 { Bad_Opcode },
1679 { MOD_TABLE (MOD_0F26) }, 2010 { MOD_TABLE (MOD_0F26) },
1680 { "(bad)",» » { XX } }, 2011 { Bad_Opcode },
1681 /* 28 */ 2012 /* 28 */
1682 { "movapX", { XM, EXx } }, 2013 { "movapX", { XM, EXx } },
1683 { "movapX", { EXxS, XM } }, 2014 { "movapX", { EXxS, XM } },
1684 { PREFIX_TABLE (PREFIX_0F2A) }, 2015 { PREFIX_TABLE (PREFIX_0F2A) },
1685 { PREFIX_TABLE (PREFIX_0F2B) }, 2016 { PREFIX_TABLE (PREFIX_0F2B) },
1686 { PREFIX_TABLE (PREFIX_0F2C) }, 2017 { PREFIX_TABLE (PREFIX_0F2C) },
1687 { PREFIX_TABLE (PREFIX_0F2D) }, 2018 { PREFIX_TABLE (PREFIX_0F2D) },
1688 { PREFIX_TABLE (PREFIX_0F2E) }, 2019 { PREFIX_TABLE (PREFIX_0F2E) },
1689 { PREFIX_TABLE (PREFIX_0F2F) }, 2020 { PREFIX_TABLE (PREFIX_0F2F) },
1690 /* 30 */ 2021 /* 30 */
1691 { "wrmsr", { XX } }, 2022 { "wrmsr", { XX } },
1692 { "rdtsc", { XX } }, 2023 { "rdtsc", { XX } },
1693 { "rdmsr", { XX } }, 2024 { "rdmsr", { XX } },
1694 { "rdpmc", { XX } }, 2025 { "rdpmc", { XX } },
1695 { "sysenter", { XX } }, 2026 { "sysenter", { XX } },
1696 { "sysexit", { XX } }, 2027 { "sysexit", { XX } },
1697 { "(bad)",» » { XX } }, 2028 { Bad_Opcode },
1698 { "getsec", { XX } }, 2029 { "getsec", { XX } },
1699 /* 38 */ 2030 /* 38 */
1700 { THREE_BYTE_TABLE (THREE_BYTE_0F38) }, 2031 { THREE_BYTE_TABLE (THREE_BYTE_0F38) },
1701 { "(bad)",» » { XX } }, 2032 { Bad_Opcode },
1702 { THREE_BYTE_TABLE (THREE_BYTE_0F3A) }, 2033 { THREE_BYTE_TABLE (THREE_BYTE_0F3A) },
1703 { "(bad)",» » { XX } }, 2034 { Bad_Opcode },
1704 { "(bad)",» » { XX } }, 2035 { Bad_Opcode },
1705 { "(bad)",» » { XX } }, 2036 { Bad_Opcode },
1706 { "(bad)",» » { XX } }, 2037 { Bad_Opcode },
1707 { "(bad)",» » { XX } }, 2038 { Bad_Opcode },
1708 /* 40 */ 2039 /* 40 */
1709 { "cmovoS", { Gv, Ev } }, 2040 { "cmovoS", { Gv, Ev } },
1710 { "cmovnoS", { Gv, Ev } }, 2041 { "cmovnoS", { Gv, Ev } },
1711 { "cmovbS", { Gv, Ev } }, 2042 { "cmovbS", { Gv, Ev } },
1712 { "cmovaeS", { Gv, Ev } }, 2043 { "cmovaeS", { Gv, Ev } },
1713 { "cmoveS", { Gv, Ev } }, 2044 { "cmoveS", { Gv, Ev } },
1714 { "cmovneS", { Gv, Ev } }, 2045 { "cmovneS", { Gv, Ev } },
1715 { "cmovbeS", { Gv, Ev } }, 2046 { "cmovbeS", { Gv, Ev } },
1716 { "cmovaS", { Gv, Ev } }, 2047 { "cmovaS", { Gv, Ev } },
1717 /* 48 */ 2048 /* 48 */
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1765 { REG_TABLE (REG_0F72) }, 2096 { REG_TABLE (REG_0F72) },
1766 { REG_TABLE (REG_0F73) }, 2097 { REG_TABLE (REG_0F73) },
1767 { "pcmpeqb", { MX, EM } }, 2098 { "pcmpeqb", { MX, EM } },
1768 { "pcmpeqw", { MX, EM } }, 2099 { "pcmpeqw", { MX, EM } },
1769 { "pcmpeqd", { MX, EM } }, 2100 { "pcmpeqd", { MX, EM } },
1770 { "emms", { XX } }, 2101 { "emms", { XX } },
1771 /* 78 */ 2102 /* 78 */
1772 { PREFIX_TABLE (PREFIX_0F78) }, 2103 { PREFIX_TABLE (PREFIX_0F78) },
1773 { PREFIX_TABLE (PREFIX_0F79) }, 2104 { PREFIX_TABLE (PREFIX_0F79) },
1774 { THREE_BYTE_TABLE (THREE_BYTE_0F7A) }, 2105 { THREE_BYTE_TABLE (THREE_BYTE_0F7A) },
1775 { "(bad)",» » { XX } }, 2106 { Bad_Opcode },
1776 { PREFIX_TABLE (PREFIX_0F7C) }, 2107 { PREFIX_TABLE (PREFIX_0F7C) },
1777 { PREFIX_TABLE (PREFIX_0F7D) }, 2108 { PREFIX_TABLE (PREFIX_0F7D) },
1778 { PREFIX_TABLE (PREFIX_0F7E) }, 2109 { PREFIX_TABLE (PREFIX_0F7E) },
1779 { PREFIX_TABLE (PREFIX_0F7F) }, 2110 { PREFIX_TABLE (PREFIX_0F7F) },
1780 /* 80 */ 2111 /* 80 */
1781 { "joH", { Jv, XX, cond_jump_flag } }, 2112 { "joH", { Jv, XX, cond_jump_flag } },
1782 { "jnoH", { Jv, XX, cond_jump_flag } }, 2113 { "jnoH", { Jv, XX, cond_jump_flag } },
1783 { "jbH", { Jv, XX, cond_jump_flag } }, 2114 { "jbH", { Jv, XX, cond_jump_flag } },
1784 { "jaeH", { Jv, XX, cond_jump_flag } }, 2115 { "jaeH", { Jv, XX, cond_jump_flag } },
1785 { "jeH", { Jv, XX, cond_jump_flag } }, 2116 { "jeH", { Jv, XX, cond_jump_flag } },
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1819 { "cpuid", { XX } }, 2150 { "cpuid", { XX } },
1820 { "btS", { Ev, Gv } }, 2151 { "btS", { Ev, Gv } },
1821 { "shldS", { Ev, Gv, Ib } }, 2152 { "shldS", { Ev, Gv, Ib } },
1822 { "shldS", { Ev, Gv, CL } }, 2153 { "shldS", { Ev, Gv, CL } },
1823 { REG_TABLE (REG_0FA6) }, 2154 { REG_TABLE (REG_0FA6) },
1824 { REG_TABLE (REG_0FA7) }, 2155 { REG_TABLE (REG_0FA7) },
1825 /* a8 */ 2156 /* a8 */
1826 { "pushT", { gs } }, 2157 { "pushT", { gs } },
1827 { "popT", { gs } }, 2158 { "popT", { gs } },
1828 { "rsm", { XX } }, 2159 { "rsm", { XX } },
1829 { "btsS",» » { Ev, Gv } }, 2160 { "btsS",» » { Evh1, Gv } },
1830 { "shrdS", { Ev, Gv, Ib } }, 2161 { "shrdS", { Ev, Gv, Ib } },
1831 { "shrdS", { Ev, Gv, CL } }, 2162 { "shrdS", { Ev, Gv, CL } },
1832 { REG_TABLE (REG_0FAE) }, 2163 { REG_TABLE (REG_0FAE) },
1833 { "imulS", { Gv, Ev } }, 2164 { "imulS", { Gv, Ev } },
1834 /* b0 */ 2165 /* b0 */
1835 { "cmpxchgB",»» { Eb, Gb } }, 2166 { "cmpxchgB",»» { Ebh1, Gb } },
1836 { "cmpxchgS",»» { Ev, Gv } }, 2167 { "cmpxchgS",»» { Evh1, Gv } },
1837 { MOD_TABLE (MOD_0FB2) }, 2168 { MOD_TABLE (MOD_0FB2) },
1838 { "btrS",» » { Ev, Gv } }, 2169 { "btrS",» » { Evh1, Gv } },
1839 { MOD_TABLE (MOD_0FB4) }, 2170 { MOD_TABLE (MOD_0FB4) },
1840 { MOD_TABLE (MOD_0FB5) }, 2171 { MOD_TABLE (MOD_0FB5) },
1841 { "movz{bR|x}", { Gv, Eb } }, 2172 { "movz{bR|x}", { Gv, Eb } },
1842 { "movz{wR|x}", { Gv, Ew } }, /* yes, there really is movzww ! */ 2173 { "movz{wR|x}", { Gv, Ew } }, /* yes, there really is movzww ! */
1843 /* b8 */ 2174 /* b8 */
1844 { PREFIX_TABLE (PREFIX_0FB8) }, 2175 { PREFIX_TABLE (PREFIX_0FB8) },
1845 { "ud2b",» » { XX } }, 2176 { "ud1",» » { XX } },
1846 { REG_TABLE (REG_0FBA) }, 2177 { REG_TABLE (REG_0FBA) },
1847 { "btcS",» » { Ev, Gv } }, 2178 { "btcS",» » { Evh1, Gv } },
1848 { "bsfS",» » { Gv, Ev } }, 2179 { PREFIX_TABLE (PREFIX_0FBC) },
1849 { PREFIX_TABLE (PREFIX_0FBD) }, 2180 { PREFIX_TABLE (PREFIX_0FBD) },
1850 { "movs{bR|x}", { Gv, Eb } }, 2181 { "movs{bR|x}", { Gv, Eb } },
1851 { "movs{wR|x}", { Gv, Ew } }, /* yes, there really is movsww ! */ 2182 { "movs{wR|x}", { Gv, Ew } }, /* yes, there really is movsww ! */
1852 /* c0 */ 2183 /* c0 */
1853 { "xaddB",» » { Eb, Gb } }, 2184 { "xaddB",» » { Ebh1, Gb } },
1854 { "xaddS",» » { Ev, Gv } }, 2185 { "xaddS",» » { Evh1, Gv } },
1855 { PREFIX_TABLE (PREFIX_0FC2) }, 2186 { PREFIX_TABLE (PREFIX_0FC2) },
1856 { PREFIX_TABLE (PREFIX_0FC3) }, 2187 { PREFIX_TABLE (PREFIX_0FC3) },
1857 { "pinsrw", { MX, Edqw, Ib } }, 2188 { "pinsrw", { MX, Edqw, Ib } },
1858 { "pextrw", { Gdq, MS, Ib } }, 2189 { "pextrw", { Gdq, MS, Ib } },
1859 { "shufpX", { XM, EXx, Ib } }, 2190 { "shufpX", { XM, EXx, Ib } },
1860 { REG_TABLE (REG_0FC7) }, 2191 { REG_TABLE (REG_0FC7) },
1861 /* c8 */ 2192 /* c8 */
1862 { "bswap", { RMeAX } }, 2193 { "bswap", { RMeAX } },
1863 { "bswap", { RMeCX } }, 2194 { "bswap", { RMeCX } },
1864 { "bswap", { RMeDX } }, 2195 { "bswap", { RMeDX } },
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1913 { "psadbw", { MX, EM } }, 2244 { "psadbw", { MX, EM } },
1914 { PREFIX_TABLE (PREFIX_0FF7) }, 2245 { PREFIX_TABLE (PREFIX_0FF7) },
1915 /* f8 */ 2246 /* f8 */
1916 { "psubb", { MX, EM } }, 2247 { "psubb", { MX, EM } },
1917 { "psubw", { MX, EM } }, 2248 { "psubw", { MX, EM } },
1918 { "psubd", { MX, EM } }, 2249 { "psubd", { MX, EM } },
1919 { "psubq", { MX, EM } }, 2250 { "psubq", { MX, EM } },
1920 { "paddb", { MX, EM } }, 2251 { "paddb", { MX, EM } },
1921 { "paddw", { MX, EM } }, 2252 { "paddw", { MX, EM } },
1922 { "paddd", { MX, EM } }, 2253 { "paddd", { MX, EM } },
1923 { "(bad)",» » { XX } }, 2254 { Bad_Opcode },
1924 }; 2255 };
1925 2256
1926 static const unsigned char onebyte_has_modrm[256] = { 2257 static const unsigned char onebyte_has_modrm[256] = {
1927 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ 2258 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
1928 /* ------------------------------- */ 2259 /* ------------------------------- */
1929 /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 00 */ 2260 /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 00 */
1930 /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 10 */ 2261 /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 10 */
1931 /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 20 */ 2262 /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 20 */
1932 /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 30 */ 2263 /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 30 */
1933 /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */ 2264 /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1969 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ 2300 /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
1970 }; 2301 };
1971 2302
1972 static char obuf[100]; 2303 static char obuf[100];
1973 static char *obufp; 2304 static char *obufp;
1974 static char *mnemonicendp; 2305 static char *mnemonicendp;
1975 static char scratchbuf[100]; 2306 static char scratchbuf[100];
1976 static unsigned char *start_codep; 2307 static unsigned char *start_codep;
1977 static unsigned char *insn_codep; 2308 static unsigned char *insn_codep;
1978 static unsigned char *codep; 2309 static unsigned char *codep;
1979 static const char *lock_prefix; 2310 static int last_lock_prefix;
1980 static const char *data_prefix; 2311 static int last_repz_prefix;
1981 static const char *addr_prefix; 2312 static int last_repnz_prefix;
1982 static const char *repz_prefix; 2313 static int last_data_prefix;
1983 static const char *repnz_prefix; 2314 static int last_addr_prefix;
2315 static int last_rex_prefix;
2316 static int last_seg_prefix;
2317 #define MAX_CODE_LENGTH 15
2318 /* We can up to 14 prefixes since the maximum instruction length is
2319 15bytes. */
2320 static int all_prefixes[MAX_CODE_LENGTH - 1];
1984 static disassemble_info *the_info; 2321 static disassemble_info *the_info;
1985 static struct 2322 static struct
1986 { 2323 {
1987 int mod; 2324 int mod;
1988 int reg; 2325 int reg;
1989 int rm; 2326 int rm;
1990 } 2327 }
1991 modrm; 2328 modrm;
1992 static unsigned char need_modrm; 2329 static unsigned char need_modrm;
1993 static struct 2330 static struct
1994 { 2331 {
2332 int scale;
2333 int index;
2334 int base;
2335 }
2336 sib;
2337 static struct
2338 {
1995 int register_specifier; 2339 int register_specifier;
1996 int length; 2340 int length;
1997 int prefix; 2341 int prefix;
1998 int w; 2342 int w;
1999 } 2343 }
2000 vex; 2344 vex;
2001 static unsigned char need_vex; 2345 static unsigned char need_vex;
2002 static unsigned char need_vex_reg; 2346 static unsigned char need_vex_reg;
2003 static unsigned char vex_w_done; 2347 static unsigned char vex_w_done;
2004 2348
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2072 }; 2416 };
2073 static const char *att_names_seg[] = { 2417 static const char *att_names_seg[] = {
2074 "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?", 2418 "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?",
2075 }; 2419 };
2076 static const char *att_index64 = "%riz"; 2420 static const char *att_index64 = "%riz";
2077 static const char *att_index32 = "%eiz"; 2421 static const char *att_index32 = "%eiz";
2078 static const char *att_index16[] = { 2422 static const char *att_index16[] = {
2079 "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx" 2423 "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx"
2080 }; 2424 };
2081 2425
2426 static const char **names_mm;
2427 static const char *intel_names_mm[] = {
2428 "mm0", "mm1", "mm2", "mm3",
2429 "mm4", "mm5", "mm6", "mm7"
2430 };
2431 static const char *att_names_mm[] = {
2432 "%mm0", "%mm1", "%mm2", "%mm3",
2433 "%mm4", "%mm5", "%mm6", "%mm7"
2434 };
2435
2436 static const char **names_xmm;
2437 static const char *intel_names_xmm[] = {
2438 "xmm0", "xmm1", "xmm2", "xmm3",
2439 "xmm4", "xmm5", "xmm6", "xmm7",
2440 "xmm8", "xmm9", "xmm10", "xmm11",
2441 "xmm12", "xmm13", "xmm14", "xmm15"
2442 };
2443 static const char *att_names_xmm[] = {
2444 "%xmm0", "%xmm1", "%xmm2", "%xmm3",
2445 "%xmm4", "%xmm5", "%xmm6", "%xmm7",
2446 "%xmm8", "%xmm9", "%xmm10", "%xmm11",
2447 "%xmm12", "%xmm13", "%xmm14", "%xmm15"
2448 };
2449
2450 static const char **names_ymm;
2451 static const char *intel_names_ymm[] = {
2452 "ymm0", "ymm1", "ymm2", "ymm3",
2453 "ymm4", "ymm5", "ymm6", "ymm7",
2454 "ymm8", "ymm9", "ymm10", "ymm11",
2455 "ymm12", "ymm13", "ymm14", "ymm15"
2456 };
2457 static const char *att_names_ymm[] = {
2458 "%ymm0", "%ymm1", "%ymm2", "%ymm3",
2459 "%ymm4", "%ymm5", "%ymm6", "%ymm7",
2460 "%ymm8", "%ymm9", "%ymm10", "%ymm11",
2461 "%ymm12", "%ymm13", "%ymm14", "%ymm15"
2462 };
2463
2082 static const struct dis386 reg_table[][8] = { 2464 static const struct dis386 reg_table[][8] = {
2083 /* REG_80 */ 2465 /* REG_80 */
2084 { 2466 {
2085 { "addA",» { Eb, Ib } }, 2467 { "addA",» { Ebh1, Ib } },
2086 { "orA",» { Eb, Ib } }, 2468 { "orA",» { Ebh1, Ib } },
2087 { "adcA",» { Eb, Ib } }, 2469 { "adcA",» { Ebh1, Ib } },
2088 { "sbbA",» { Eb, Ib } }, 2470 { "sbbA",» { Ebh1, Ib } },
2089 { "andA",» { Eb, Ib } }, 2471 { "andA",» { Ebh1, Ib } },
2090 { "subA",» { Eb, Ib } }, 2472 { "subA",» { Ebh1, Ib } },
2091 { "xorA",» { Eb, Ib } }, 2473 { "xorA",» { Ebh1, Ib } },
2092 { "cmpA", { Eb, Ib } }, 2474 { "cmpA", { Eb, Ib } },
2093 }, 2475 },
2094 /* REG_81 */ 2476 /* REG_81 */
2095 { 2477 {
2096 { "addQ",» { Ev, Iv } }, 2478 { "addQ",» { Evh1, Iv } },
2097 { "orQ",» { Ev, Iv } }, 2479 { "orQ",» { Evh1, Iv } },
2098 { "adcQ",» { Ev, Iv } }, 2480 { "adcQ",» { Evh1, Iv } },
2099 { "sbbQ",» { Ev, Iv } }, 2481 { "sbbQ",» { Evh1, Iv } },
2100 { "andQ",» { Ev, Iv } }, 2482 { "andQ",» { Evh1, Iv } },
2101 { "subQ",» { Ev, Iv } }, 2483 { "subQ",» { Evh1, Iv } },
2102 { "xorQ",» { Ev, Iv } }, 2484 { "xorQ",» { Evh1, Iv } },
2103 { "cmpQ", { Ev, Iv } }, 2485 { "cmpQ", { Ev, Iv } },
2104 }, 2486 },
2105 /* REG_82 */ 2487 /* REG_82 */
2106 { 2488 {
2107 { "addQ",» { Ev, sIb } }, 2489 { "addQ",» { Evh1, sIb } },
2108 { "orQ",» { Ev, sIb } }, 2490 { "orQ",» { Evh1, sIb } },
2109 { "adcQ",» { Ev, sIb } }, 2491 { "adcQ",» { Evh1, sIb } },
2110 { "sbbQ",» { Ev, sIb } }, 2492 { "sbbQ",» { Evh1, sIb } },
2111 { "andQ",» { Ev, sIb } }, 2493 { "andQ",» { Evh1, sIb } },
2112 { "subQ",» { Ev, sIb } }, 2494 { "subQ",» { Evh1, sIb } },
2113 { "xorQ",» { Ev, sIb } }, 2495 { "xorQ",» { Evh1, sIb } },
2114 { "cmpQ", { Ev, sIb } }, 2496 { "cmpQ", { Ev, sIb } },
2115 }, 2497 },
2116 /* REG_8F */ 2498 /* REG_8F */
2117 { 2499 {
2118 { "popU", { stackEv } }, 2500 { "popU", { stackEv } },
2119 { "(bad)",» { XX } }, 2501 { XOP_8F_TABLE (XOP_09) },
2120 { "(bad)",» { XX } }, 2502 { Bad_Opcode },
2121 { "(bad)",» { XX } }, 2503 { Bad_Opcode },
2122 { "(bad)",» { XX } }, 2504 { Bad_Opcode },
2123 { "(bad)",» { XX } }, 2505 { XOP_8F_TABLE (XOP_09) },
2124 { "(bad)",» { XX } },
2125 { "(bad)",» { XX } },
2126 }, 2506 },
2127 /* REG_C0 */ 2507 /* REG_C0 */
2128 { 2508 {
2129 { "rolA", { Eb, Ib } }, 2509 { "rolA", { Eb, Ib } },
2130 { "rorA", { Eb, Ib } }, 2510 { "rorA", { Eb, Ib } },
2131 { "rclA", { Eb, Ib } }, 2511 { "rclA", { Eb, Ib } },
2132 { "rcrA", { Eb, Ib } }, 2512 { "rcrA", { Eb, Ib } },
2133 { "shlA", { Eb, Ib } }, 2513 { "shlA", { Eb, Ib } },
2134 { "shrA", { Eb, Ib } }, 2514 { "shrA", { Eb, Ib } },
2135 { "(bad)",» { XX } }, 2515 { Bad_Opcode },
2136 { "sarA", { Eb, Ib } }, 2516 { "sarA", { Eb, Ib } },
2137 }, 2517 },
2138 /* REG_C1 */ 2518 /* REG_C1 */
2139 { 2519 {
2140 { "rolQ", { Ev, Ib } }, 2520 { "rolQ", { Ev, Ib } },
2141 { "rorQ", { Ev, Ib } }, 2521 { "rorQ", { Ev, Ib } },
2142 { "rclQ", { Ev, Ib } }, 2522 { "rclQ", { Ev, Ib } },
2143 { "rcrQ", { Ev, Ib } }, 2523 { "rcrQ", { Ev, Ib } },
2144 { "shlQ", { Ev, Ib } }, 2524 { "shlQ", { Ev, Ib } },
2145 { "shrQ", { Ev, Ib } }, 2525 { "shrQ", { Ev, Ib } },
2146 { "(bad)",» { XX } }, 2526 { Bad_Opcode },
2147 { "sarQ", { Ev, Ib } }, 2527 { "sarQ", { Ev, Ib } },
2148 }, 2528 },
2149 /* REG_C6 */ 2529 /* REG_C6 */
2150 { 2530 {
2151 { "movA",» { Eb, Ib } }, 2531 { "movA",» { Ebh3, Ib } },
2152 { "(bad)",» { XX } }, 2532 { Bad_Opcode },
2153 { "(bad)",» { XX } }, 2533 { Bad_Opcode },
2154 { "(bad)",» { XX } }, 2534 { Bad_Opcode },
2155 { "(bad)",» { XX } }, 2535 { Bad_Opcode },
2156 { "(bad)",» { XX } }, 2536 { Bad_Opcode },
2157 { "(bad)",» { XX } }, 2537 { Bad_Opcode },
2158 { "(bad)",» { XX } }, 2538 { MOD_TABLE (MOD_C6_REG_7) },
2159 }, 2539 },
2160 /* REG_C7 */ 2540 /* REG_C7 */
2161 { 2541 {
2162 { "movQ",» { Ev, Iv } }, 2542 { "movQ",» { Evh3, Iv } },
2163 { "(bad)",» { XX } }, 2543 { Bad_Opcode },
2164 { "(bad)",» { XX } }, 2544 { Bad_Opcode },
2165 { "(bad)",» { XX } }, 2545 { Bad_Opcode },
2166 { "(bad)",» { XX } }, 2546 { Bad_Opcode },
2167 { "(bad)",» { XX } }, 2547 { Bad_Opcode },
2168 { "(bad)",» { XX } }, 2548 { Bad_Opcode },
2169 { "(bad)", { XX } }, 2549 { MOD_TABLE (MOD_C7_REG_7) },
2170 }, 2550 },
2171 /* REG_D0 */ 2551 /* REG_D0 */
2172 { 2552 {
2173 { "rolA", { Eb, I1 } }, 2553 { "rolA", { Eb, I1 } },
2174 { "rorA", { Eb, I1 } }, 2554 { "rorA", { Eb, I1 } },
2175 { "rclA", { Eb, I1 } }, 2555 { "rclA", { Eb, I1 } },
2176 { "rcrA", { Eb, I1 } }, 2556 { "rcrA", { Eb, I1 } },
2177 { "shlA", { Eb, I1 } }, 2557 { "shlA", { Eb, I1 } },
2178 { "shrA", { Eb, I1 } }, 2558 { "shrA", { Eb, I1 } },
2179 { "(bad)",» { XX } }, 2559 { Bad_Opcode },
2180 { "sarA", { Eb, I1 } }, 2560 { "sarA", { Eb, I1 } },
2181 }, 2561 },
2182 /* REG_D1 */ 2562 /* REG_D1 */
2183 { 2563 {
2184 { "rolQ", { Ev, I1 } }, 2564 { "rolQ", { Ev, I1 } },
2185 { "rorQ", { Ev, I1 } }, 2565 { "rorQ", { Ev, I1 } },
2186 { "rclQ", { Ev, I1 } }, 2566 { "rclQ", { Ev, I1 } },
2187 { "rcrQ", { Ev, I1 } }, 2567 { "rcrQ", { Ev, I1 } },
2188 { "shlQ", { Ev, I1 } }, 2568 { "shlQ", { Ev, I1 } },
2189 { "shrQ", { Ev, I1 } }, 2569 { "shrQ", { Ev, I1 } },
2190 { "(bad)",» { XX } }, 2570 { Bad_Opcode },
2191 { "sarQ", { Ev, I1 } }, 2571 { "sarQ", { Ev, I1 } },
2192 }, 2572 },
2193 /* REG_D2 */ 2573 /* REG_D2 */
2194 { 2574 {
2195 { "rolA", { Eb, CL } }, 2575 { "rolA", { Eb, CL } },
2196 { "rorA", { Eb, CL } }, 2576 { "rorA", { Eb, CL } },
2197 { "rclA", { Eb, CL } }, 2577 { "rclA", { Eb, CL } },
2198 { "rcrA", { Eb, CL } }, 2578 { "rcrA", { Eb, CL } },
2199 { "shlA", { Eb, CL } }, 2579 { "shlA", { Eb, CL } },
2200 { "shrA", { Eb, CL } }, 2580 { "shrA", { Eb, CL } },
2201 { "(bad)",» { XX } }, 2581 { Bad_Opcode },
2202 { "sarA", { Eb, CL } }, 2582 { "sarA", { Eb, CL } },
2203 }, 2583 },
2204 /* REG_D3 */ 2584 /* REG_D3 */
2205 { 2585 {
2206 { "rolQ", { Ev, CL } }, 2586 { "rolQ", { Ev, CL } },
2207 { "rorQ", { Ev, CL } }, 2587 { "rorQ", { Ev, CL } },
2208 { "rclQ", { Ev, CL } }, 2588 { "rclQ", { Ev, CL } },
2209 { "rcrQ", { Ev, CL } }, 2589 { "rcrQ", { Ev, CL } },
2210 { "shlQ", { Ev, CL } }, 2590 { "shlQ", { Ev, CL } },
2211 { "shrQ", { Ev, CL } }, 2591 { "shrQ", { Ev, CL } },
2212 { "(bad)",» { XX } }, 2592 { Bad_Opcode },
2213 { "sarQ", { Ev, CL } }, 2593 { "sarQ", { Ev, CL } },
2214 }, 2594 },
2215 /* REG_F6 */ 2595 /* REG_F6 */
2216 { 2596 {
2217 { "testA", { Eb, Ib } }, 2597 { "testA", { Eb, Ib } },
2218 { "(bad)",» { XX } }, 2598 { Bad_Opcode },
2219 { "notA",» { Eb } }, 2599 { "notA",» { Ebh1 } },
2220 { "negA",» { Eb } }, 2600 { "negA",» { Ebh1 } },
2221 { "mulA", { Eb } }, /* Don't print the implicit %al register, */ 2601 { "mulA", { Eb } }, /* Don't print the implicit %al register, */
2222 { "imulA", { Eb } }, /* to distinguish these opcodes from other */ 2602 { "imulA", { Eb } }, /* to distinguish these opcodes from other */
2223 { "divA", { Eb } }, /* mul/imul opcodes. Do the same for div */ 2603 { "divA", { Eb } }, /* mul/imul opcodes. Do the same for div */
2224 { "idivA", { Eb } }, /* and idiv for consistency. */ 2604 { "idivA", { Eb } }, /* and idiv for consistency. */
2225 }, 2605 },
2226 /* REG_F7 */ 2606 /* REG_F7 */
2227 { 2607 {
2228 { "testQ", { Ev, Iv } }, 2608 { "testQ", { Ev, Iv } },
2229 { "(bad)",» { XX } }, 2609 { Bad_Opcode },
2230 { "notQ",» { Ev } }, 2610 { "notQ",» { Evh1 } },
2231 { "negQ",» { Ev } }, 2611 { "negQ",» { Evh1 } },
2232 { "mulQ", { Ev } }, /* Don't print the implicit register. */ 2612 { "mulQ", { Ev } }, /* Don't print the implicit register. */
2233 { "imulQ", { Ev } }, 2613 { "imulQ", { Ev } },
2234 { "divQ", { Ev } }, 2614 { "divQ", { Ev } },
2235 { "idivQ", { Ev } }, 2615 { "idivQ", { Ev } },
2236 }, 2616 },
2237 /* REG_FE */ 2617 /* REG_FE */
2238 { 2618 {
2239 { "incA",» { Eb } }, 2619 { "incA",» { Ebh1 } },
2240 { "decA",» { Eb } }, 2620 { "decA",» { Ebh1 } },
2241 { "(bad)",» { XX } },
2242 { "(bad)",» { XX } },
2243 { "(bad)",» { XX } },
2244 { "(bad)",» { XX } },
2245 { "(bad)",» { XX } },
2246 { "(bad)",» { XX } },
2247 }, 2621 },
2248 /* REG_FF */ 2622 /* REG_FF */
2249 { 2623 {
2250 { "incQ",» { Ev } }, 2624 { "incQ",» { Evh1 } },
2251 { "decQ",» { Ev } }, 2625 { "decQ",» { Evh1 } },
2252 { "callT",» { indirEv } }, 2626 { "call{T|}", { indirEv } },
2253 { "JcallT",»{ indirEp } }, 2627 { "Jcall{T|}", { indirEp } },
2254 { "jmpT",» { indirEv } }, 2628 { "jmp{T|}", { indirEv } },
2255 { "JjmpT",» { indirEp } }, 2629 { "Jjmp{T|}", { indirEp } },
2256 { "pushU", { stackEv } }, 2630 { "pushU", { stackEv } },
2257 { "(bad)",» { XX } }, 2631 { Bad_Opcode },
2258 }, 2632 },
2259 /* REG_0F00 */ 2633 /* REG_0F00 */
2260 { 2634 {
2261 { "sldtD", { Sv } }, 2635 { "sldtD", { Sv } },
2262 { "strD", { Sv } }, 2636 { "strD", { Sv } },
2263 { "lldt", { Ew } }, 2637 { "lldt", { Ew } },
2264 { "ltr", { Ew } }, 2638 { "ltr", { Ew } },
2265 { "verr", { Ew } }, 2639 { "verr", { Ew } },
2266 { "verw", { Ew } }, 2640 { "verw", { Ew } },
2267 { "(bad)",» { XX } }, 2641 { Bad_Opcode },
2268 { "(bad)",» { XX } }, 2642 { Bad_Opcode },
2269 }, 2643 },
2270 /* REG_0F01 */ 2644 /* REG_0F01 */
2271 { 2645 {
2272 { MOD_TABLE (MOD_0F01_REG_0) }, 2646 { MOD_TABLE (MOD_0F01_REG_0) },
2273 { MOD_TABLE (MOD_0F01_REG_1) }, 2647 { MOD_TABLE (MOD_0F01_REG_1) },
2274 { MOD_TABLE (MOD_0F01_REG_2) }, 2648 { MOD_TABLE (MOD_0F01_REG_2) },
2275 { MOD_TABLE (MOD_0F01_REG_3) }, 2649 { MOD_TABLE (MOD_0F01_REG_3) },
2276 { "smswD", { Sv } }, 2650 { "smswD", { Sv } },
2277 { "(bad)",» { XX } }, 2651 { Bad_Opcode },
2278 { "lmsw", { Ew } }, 2652 { "lmsw", { Ew } },
2279 { MOD_TABLE (MOD_0F01_REG_7) }, 2653 { MOD_TABLE (MOD_0F01_REG_7) },
2280 }, 2654 },
2281 /* REG_0F0D */ 2655 /* REG_0F0D */
2282 { 2656 {
2283 { "prefetch",» { Eb } }, 2657 { "prefetch",» { Mb } },
2284 { "prefetchw",» { Eb } }, 2658 { "prefetchw",» { Mb } },
2285 { "(bad)",» » { XX } }, 2659 { "prefetch",» { Mb } },
2286 { "(bad)",» » { XX } }, 2660 { "prefetch",» { Mb } },
2287 { "(bad)",» » { XX } }, 2661 { "prefetch",» { Mb } },
2288 { "(bad)",» » { XX } }, 2662 { "prefetch",» { Mb } },
2289 { "(bad)",» » { XX } }, 2663 { "prefetch",» { Mb } },
2290 { "(bad)",» » { XX } }, 2664 { "prefetch",» { Mb } },
2291 }, 2665 },
2292 /* REG_0F18 */ 2666 /* REG_0F18 */
2293 { 2667 {
2294 { MOD_TABLE (MOD_0F18_REG_0) }, 2668 { MOD_TABLE (MOD_0F18_REG_0) },
2295 { MOD_TABLE (MOD_0F18_REG_1) }, 2669 { MOD_TABLE (MOD_0F18_REG_1) },
2296 { MOD_TABLE (MOD_0F18_REG_2) }, 2670 { MOD_TABLE (MOD_0F18_REG_2) },
2297 { MOD_TABLE (MOD_0F18_REG_3) }, 2671 { MOD_TABLE (MOD_0F18_REG_3) },
2298 { "(bad)",» { XX } }, 2672 { MOD_TABLE (MOD_0F18_REG_4) },
2299 { "(bad)",» { XX } }, 2673 { MOD_TABLE (MOD_0F18_REG_5) },
2300 { "(bad)",» { XX } }, 2674 { MOD_TABLE (MOD_0F18_REG_6) },
2301 { "(bad)",» { XX } }, 2675 { MOD_TABLE (MOD_0F18_REG_7) },
2302 }, 2676 },
2303 /* REG_0F71 */ 2677 /* REG_0F71 */
2304 { 2678 {
2305 { "(bad)",» { XX } }, 2679 { Bad_Opcode },
2306 { "(bad)",» { XX } }, 2680 { Bad_Opcode },
2307 { MOD_TABLE (MOD_0F71_REG_2) }, 2681 { MOD_TABLE (MOD_0F71_REG_2) },
2308 { "(bad)",» { XX } }, 2682 { Bad_Opcode },
2309 { MOD_TABLE (MOD_0F71_REG_4) }, 2683 { MOD_TABLE (MOD_0F71_REG_4) },
2310 { "(bad)",» { XX } }, 2684 { Bad_Opcode },
2311 { MOD_TABLE (MOD_0F71_REG_6) }, 2685 { MOD_TABLE (MOD_0F71_REG_6) },
2312 { "(bad)", { XX } },
2313 }, 2686 },
2314 /* REG_0F72 */ 2687 /* REG_0F72 */
2315 { 2688 {
2316 { "(bad)",» { XX } }, 2689 { Bad_Opcode },
2317 { "(bad)",» { XX } }, 2690 { Bad_Opcode },
2318 { MOD_TABLE (MOD_0F72_REG_2) }, 2691 { MOD_TABLE (MOD_0F72_REG_2) },
2319 { "(bad)",» { XX } }, 2692 { Bad_Opcode },
2320 { MOD_TABLE (MOD_0F72_REG_4) }, 2693 { MOD_TABLE (MOD_0F72_REG_4) },
2321 { "(bad)",» { XX } }, 2694 { Bad_Opcode },
2322 { MOD_TABLE (MOD_0F72_REG_6) }, 2695 { MOD_TABLE (MOD_0F72_REG_6) },
2323 { "(bad)", { XX } },
2324 }, 2696 },
2325 /* REG_0F73 */ 2697 /* REG_0F73 */
2326 { 2698 {
2327 { "(bad)",» { XX } }, 2699 { Bad_Opcode },
2328 { "(bad)",» { XX } }, 2700 { Bad_Opcode },
2329 { MOD_TABLE (MOD_0F73_REG_2) }, 2701 { MOD_TABLE (MOD_0F73_REG_2) },
2330 { MOD_TABLE (MOD_0F73_REG_3) }, 2702 { MOD_TABLE (MOD_0F73_REG_3) },
2331 { "(bad)",» { XX } }, 2703 { Bad_Opcode },
2332 { "(bad)",» { XX } }, 2704 { Bad_Opcode },
2333 { MOD_TABLE (MOD_0F73_REG_6) }, 2705 { MOD_TABLE (MOD_0F73_REG_6) },
2334 { MOD_TABLE (MOD_0F73_REG_7) }, 2706 { MOD_TABLE (MOD_0F73_REG_7) },
2335 }, 2707 },
2336 /* REG_0FA6 */ 2708 /* REG_0FA6 */
2337 { 2709 {
2338 { "montmul", { { OP_0f07, 0 } } }, 2710 { "montmul", { { OP_0f07, 0 } } },
2339 { "xsha1", { { OP_0f07, 0 } } }, 2711 { "xsha1", { { OP_0f07, 0 } } },
2340 { "xsha256", { { OP_0f07, 0 } } }, 2712 { "xsha256", { { OP_0f07, 0 } } },
2341 { "(bad)", { { OP_0f07, 0 } } },
2342 { "(bad)", { { OP_0f07, 0 } } },
2343 { "(bad)", { { OP_0f07, 0 } } },
2344 { "(bad)", { { OP_0f07, 0 } } },
2345 { "(bad)", { { OP_0f07, 0 } } },
2346 }, 2713 },
2347 /* REG_0FA7 */ 2714 /* REG_0FA7 */
2348 { 2715 {
2349 { "xstore-rng", { { OP_0f07, 0 } } }, 2716 { "xstore-rng", { { OP_0f07, 0 } } },
2350 { "xcrypt-ecb", { { OP_0f07, 0 } } }, 2717 { "xcrypt-ecb", { { OP_0f07, 0 } } },
2351 { "xcrypt-cbc", { { OP_0f07, 0 } } }, 2718 { "xcrypt-cbc", { { OP_0f07, 0 } } },
2352 { "xcrypt-ctr", { { OP_0f07, 0 } } }, 2719 { "xcrypt-ctr", { { OP_0f07, 0 } } },
2353 { "xcrypt-cfb", { { OP_0f07, 0 } } }, 2720 { "xcrypt-cfb", { { OP_0f07, 0 } } },
2354 { "xcrypt-ofb", { { OP_0f07, 0 } } }, 2721 { "xcrypt-ofb", { { OP_0f07, 0 } } },
2355 { "(bad)", { { OP_0f07, 0 } } },
2356 { "(bad)", { { OP_0f07, 0 } } },
2357 }, 2722 },
2358 /* REG_0FAE */ 2723 /* REG_0FAE */
2359 { 2724 {
2360 { MOD_TABLE (MOD_0FAE_REG_0) }, 2725 { MOD_TABLE (MOD_0FAE_REG_0) },
2361 { MOD_TABLE (MOD_0FAE_REG_1) }, 2726 { MOD_TABLE (MOD_0FAE_REG_1) },
2362 { MOD_TABLE (MOD_0FAE_REG_2) }, 2727 { MOD_TABLE (MOD_0FAE_REG_2) },
2363 { MOD_TABLE (MOD_0FAE_REG_3) }, 2728 { MOD_TABLE (MOD_0FAE_REG_3) },
2364 { MOD_TABLE (MOD_0FAE_REG_4) }, 2729 { MOD_TABLE (MOD_0FAE_REG_4) },
2365 { MOD_TABLE (MOD_0FAE_REG_5) }, 2730 { MOD_TABLE (MOD_0FAE_REG_5) },
2366 { MOD_TABLE (MOD_0FAE_REG_6) }, 2731 { MOD_TABLE (MOD_0FAE_REG_6) },
2367 { MOD_TABLE (MOD_0FAE_REG_7) }, 2732 { MOD_TABLE (MOD_0FAE_REG_7) },
2368 }, 2733 },
2369 /* REG_0FBA */ 2734 /* REG_0FBA */
2370 { 2735 {
2371 { "(bad)",» { XX } }, 2736 { Bad_Opcode },
2372 { "(bad)",» { XX } }, 2737 { Bad_Opcode },
2373 { "(bad)",» { XX } }, 2738 { Bad_Opcode },
2374 { "(bad)",» { XX } }, 2739 { Bad_Opcode },
2375 { "btQ", { Ev, Ib } }, 2740 { "btQ", { Ev, Ib } },
2376 { "btsQ",» { Ev, Ib } }, 2741 { "btsQ",» { Evh1, Ib } },
2377 { "btrQ",» { Ev, Ib } }, 2742 { "btrQ",» { Evh1, Ib } },
2378 { "btcQ",» { Ev, Ib } }, 2743 { "btcQ",» { Evh1, Ib } },
2379 }, 2744 },
2380 /* REG_0FC7 */ 2745 /* REG_0FC7 */
2381 { 2746 {
2382 { "(bad)",» { XX } }, 2747 { Bad_Opcode },
2383 { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } }, 2748 { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } },
2384 { "(bad)",» { XX } }, 2749 { Bad_Opcode },
2385 { "(bad)",» { XX } }, 2750 { Bad_Opcode },
2386 { "(bad)",» { XX } }, 2751 { Bad_Opcode },
2387 { "(bad)",» { XX } }, 2752 { Bad_Opcode },
2388 { MOD_TABLE (MOD_0FC7_REG_6) }, 2753 { MOD_TABLE (MOD_0FC7_REG_6) },
2389 { MOD_TABLE (MOD_0FC7_REG_7) }, 2754 { MOD_TABLE (MOD_0FC7_REG_7) },
2390 }, 2755 },
2391 /* REG_VEX_71 */ 2756 /* REG_VEX_0F71 */
2392 { 2757 {
2393 { "(bad)",» { XX } }, 2758 { Bad_Opcode },
2394 { "(bad)",» { XX } }, 2759 { Bad_Opcode },
2395 { MOD_TABLE (MOD_VEX_71_REG_2) }, 2760 { MOD_TABLE (MOD_VEX_0F71_REG_2) },
2396 { "(bad)",» { XX } }, 2761 { Bad_Opcode },
2397 { MOD_TABLE (MOD_VEX_71_REG_4) }, 2762 { MOD_TABLE (MOD_VEX_0F71_REG_4) },
2398 { "(bad)",» { XX } }, 2763 { Bad_Opcode },
2399 { MOD_TABLE (MOD_VEX_71_REG_6) }, 2764 { MOD_TABLE (MOD_VEX_0F71_REG_6) },
2400 { "(bad)",» { XX } },
2401 }, 2765 },
2402 /* REG_VEX_72 */ 2766 /* REG_VEX_0F72 */
2403 { 2767 {
2404 { "(bad)",» { XX } }, 2768 { Bad_Opcode },
2405 { "(bad)",» { XX } }, 2769 { Bad_Opcode },
2406 { MOD_TABLE (MOD_VEX_72_REG_2) }, 2770 { MOD_TABLE (MOD_VEX_0F72_REG_2) },
2407 { "(bad)",» { XX } }, 2771 { Bad_Opcode },
2408 { MOD_TABLE (MOD_VEX_72_REG_4) }, 2772 { MOD_TABLE (MOD_VEX_0F72_REG_4) },
2409 { "(bad)",» { XX } }, 2773 { Bad_Opcode },
2410 { MOD_TABLE (MOD_VEX_72_REG_6) }, 2774 { MOD_TABLE (MOD_VEX_0F72_REG_6) },
2411 { "(bad)",» { XX } },
2412 }, 2775 },
2413 /* REG_VEX_73 */ 2776 /* REG_VEX_0F73 */
2414 { 2777 {
2415 { "(bad)",» { XX } }, 2778 { Bad_Opcode },
2416 { "(bad)",» { XX } }, 2779 { Bad_Opcode },
2417 { MOD_TABLE (MOD_VEX_73_REG_2) }, 2780 { MOD_TABLE (MOD_VEX_0F73_REG_2) },
2418 { MOD_TABLE (MOD_VEX_73_REG_3) }, 2781 { MOD_TABLE (MOD_VEX_0F73_REG_3) },
2419 { "(bad)",» { XX } }, 2782 { Bad_Opcode },
2420 { "(bad)",» { XX } }, 2783 { Bad_Opcode },
2421 { MOD_TABLE (MOD_VEX_73_REG_6) }, 2784 { MOD_TABLE (MOD_VEX_0F73_REG_6) },
2422 { MOD_TABLE (MOD_VEX_73_REG_7) }, 2785 { MOD_TABLE (MOD_VEX_0F73_REG_7) },
2423 }, 2786 },
2424 /* REG_VEX_AE */ 2787 /* REG_VEX_0FAE */
2425 { 2788 {
2426 { "(bad)",» { XX } }, 2789 { Bad_Opcode },
2427 { "(bad)",» { XX } }, 2790 { Bad_Opcode },
2428 { MOD_TABLE (MOD_VEX_AE_REG_2) }, 2791 { MOD_TABLE (MOD_VEX_0FAE_REG_2) },
2429 { MOD_TABLE (MOD_VEX_AE_REG_3) }, 2792 { MOD_TABLE (MOD_VEX_0FAE_REG_3) },
2430 { "(bad)",» { XX } }, 2793 },
2431 { "(bad)",» { XX } }, 2794 /* REG_VEX_0F38F3 */
2432 { "(bad)",» { XX } }, 2795 {
2433 { "(bad)",» { XX } }, 2796 { Bad_Opcode },
2797 { PREFIX_TABLE (PREFIX_VEX_0F38F3_REG_1) },
2798 { PREFIX_TABLE (PREFIX_VEX_0F38F3_REG_2) },
2799 { PREFIX_TABLE (PREFIX_VEX_0F38F3_REG_3) },
2800 },
2801 /* REG_XOP_LWPCB */
2802 {
2803 { "llwpcb", { { OP_LWPCB_E, 0 } } },
2804 { "slwpcb",»{ { OP_LWPCB_E, 0 } } },
2805 },
2806 /* REG_XOP_LWP */
2807 {
2808 { "lwpins", { { OP_LWP_E, 0 }, Ed, Iq } },
2809 { "lwpval",»{ { OP_LWP_E, 0 }, Ed, Iq } },
2810 },
2811 /* REG_XOP_TBM_01 */
2812 {
2813 { Bad_Opcode },
2814 { "blcfill",» { { OP_LWP_E, 0 }, Ev } },
2815 { "blsfill",» { { OP_LWP_E, 0 }, Ev } },
2816 { "blcs",» { { OP_LWP_E, 0 }, Ev } },
2817 { "tzmsk",» { { OP_LWP_E, 0 }, Ev } },
2818 { "blcic",» { { OP_LWP_E, 0 }, Ev } },
2819 { "blsic",» { { OP_LWP_E, 0 }, Ev } },
2820 { "t1mskc",»{ { OP_LWP_E, 0 }, Ev } },
2821 },
2822 /* REG_XOP_TBM_02 */
2823 {
2824 { Bad_Opcode },
2825 { "blcmsk",»{ { OP_LWP_E, 0 }, Ev } },
2826 { Bad_Opcode },
2827 { Bad_Opcode },
2828 { Bad_Opcode },
2829 { Bad_Opcode },
2830 { "blci",» { { OP_LWP_E, 0 }, Ev } },
2434 }, 2831 },
2435 }; 2832 };
2436 2833
2437 static const struct dis386 prefix_table[][4] = { 2834 static const struct dis386 prefix_table[][4] = {
2438 /* PREFIX_90 */ 2835 /* PREFIX_90 */
2439 { 2836 {
2440 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, 2837 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } },
2441 { "pause", { XX } }, 2838 { "pause", { XX } },
2442 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } }, 2839 { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } },
2443 { "(bad)", { XX } },
2444 }, 2840 },
2445 2841
2446 /* PREFIX_0F10 */ 2842 /* PREFIX_0F10 */
2447 { 2843 {
2448 { "movups", { XM, EXx } }, 2844 { "movups", { XM, EXx } },
2449 { "movss", { XM, EXd } }, 2845 { "movss", { XM, EXd } },
2450 { "movupd", { XM, EXx } }, 2846 { "movupd", { XM, EXx } },
2451 { "movsd", { XM, EXq } }, 2847 { "movsd", { XM, EXq } },
2452 }, 2848 },
2453 2849
(...skipping 11 matching lines...) Expand all
2465 { "movsldup", { XM, EXx } }, 2861 { "movsldup", { XM, EXx } },
2466 { "movlpd", { XM, EXq } }, 2862 { "movlpd", { XM, EXq } },
2467 { "movddup", { XM, EXq } }, 2863 { "movddup", { XM, EXq } },
2468 }, 2864 },
2469 2865
2470 /* PREFIX_0F16 */ 2866 /* PREFIX_0F16 */
2471 { 2867 {
2472 { MOD_TABLE (MOD_0F16_PREFIX_0) }, 2868 { MOD_TABLE (MOD_0F16_PREFIX_0) },
2473 { "movshdup", { XM, EXx } }, 2869 { "movshdup", { XM, EXx } },
2474 { "movhpd", { XM, EXq } }, 2870 { "movhpd", { XM, EXq } },
2475 { "(bad)", { XX } },
2476 }, 2871 },
2477 2872
2478 /* PREFIX_0F2A */ 2873 /* PREFIX_0F2A */
2479 { 2874 {
2480 { "cvtpi2ps", { XM, EMCq } }, 2875 { "cvtpi2ps", { XM, EMCq } },
2481 { "cvtsi2ss%LQ", { XM, Ev } }, 2876 { "cvtsi2ss%LQ", { XM, Ev } },
2482 { "cvtpi2pd", { XM, EMCq } }, 2877 { "cvtpi2pd", { XM, EMCq } },
2483 { "cvtsi2sd%LQ", { XM, Ev } }, 2878 { "cvtsi2sd%LQ", { XM, Ev } },
2484 }, 2879 },
2485 2880
(...skipping 17 matching lines...) Expand all
2503 { 2898 {
2504 { "cvtps2pi", { MXC, EXq } }, 2899 { "cvtps2pi", { MXC, EXq } },
2505 { "cvtss2siY", { Gv, EXd } }, 2900 { "cvtss2siY", { Gv, EXd } },
2506 { "cvtpd2pi", { MXC, EXx } }, 2901 { "cvtpd2pi", { MXC, EXx } },
2507 { "cvtsd2siY", { Gv, EXq } }, 2902 { "cvtsd2siY", { Gv, EXq } },
2508 }, 2903 },
2509 2904
2510 /* PREFIX_0F2E */ 2905 /* PREFIX_0F2E */
2511 { 2906 {
2512 { "ucomiss",{ XM, EXd } }, 2907 { "ucomiss",{ XM, EXd } },
2513 { "(bad)",» { XX } }, 2908 { Bad_Opcode },
2514 { "ucomisd",{ XM, EXq } }, 2909 { "ucomisd",{ XM, EXq } },
2515 { "(bad)", { XX } },
2516 }, 2910 },
2517 2911
2518 /* PREFIX_0F2F */ 2912 /* PREFIX_0F2F */
2519 { 2913 {
2520 { "comiss", { XM, EXd } }, 2914 { "comiss", { XM, EXd } },
2521 { "(bad)",» { XX } }, 2915 { Bad_Opcode },
2522 { "comisd", { XM, EXq } }, 2916 { "comisd", { XM, EXq } },
2523 { "(bad)", { XX } },
2524 }, 2917 },
2525 2918
2526 /* PREFIX_0F51 */ 2919 /* PREFIX_0F51 */
2527 { 2920 {
2528 { "sqrtps", { XM, EXx } }, 2921 { "sqrtps", { XM, EXx } },
2529 { "sqrtss", { XM, EXd } }, 2922 { "sqrtss", { XM, EXd } },
2530 { "sqrtpd", { XM, EXx } }, 2923 { "sqrtpd", { XM, EXx } },
2531 { "sqrtsd", { XM, EXq } }, 2924 { "sqrtsd", { XM, EXq } },
2532 }, 2925 },
2533 2926
2534 /* PREFIX_0F52 */ 2927 /* PREFIX_0F52 */
2535 { 2928 {
2536 { "rsqrtps",{ XM, EXx } }, 2929 { "rsqrtps",{ XM, EXx } },
2537 { "rsqrtss",{ XM, EXd } }, 2930 { "rsqrtss",{ XM, EXd } },
2538 { "(bad)", { XX } },
2539 { "(bad)", { XX } },
2540 }, 2931 },
2541 2932
2542 /* PREFIX_0F53 */ 2933 /* PREFIX_0F53 */
2543 { 2934 {
2544 { "rcpps", { XM, EXx } }, 2935 { "rcpps", { XM, EXx } },
2545 { "rcpss", { XM, EXd } }, 2936 { "rcpss", { XM, EXd } },
2546 { "(bad)", { XX } },
2547 { "(bad)", { XX } },
2548 }, 2937 },
2549 2938
2550 /* PREFIX_0F58 */ 2939 /* PREFIX_0F58 */
2551 { 2940 {
2552 { "addps", { XM, EXx } }, 2941 { "addps", { XM, EXx } },
2553 { "addss", { XM, EXd } }, 2942 { "addss", { XM, EXd } },
2554 { "addpd", { XM, EXx } }, 2943 { "addpd", { XM, EXx } },
2555 { "addsd", { XM, EXq } }, 2944 { "addsd", { XM, EXq } },
2556 }, 2945 },
2557 2946
(...skipping 11 matching lines...) Expand all
2569 { "cvtss2sd", { XM, EXd } }, 2958 { "cvtss2sd", { XM, EXd } },
2570 { "cvtpd2ps", { XM, EXx } }, 2959 { "cvtpd2ps", { XM, EXx } },
2571 { "cvtsd2ss", { XM, EXq } }, 2960 { "cvtsd2ss", { XM, EXq } },
2572 }, 2961 },
2573 2962
2574 /* PREFIX_0F5B */ 2963 /* PREFIX_0F5B */
2575 { 2964 {
2576 { "cvtdq2ps", { XM, EXx } }, 2965 { "cvtdq2ps", { XM, EXx } },
2577 { "cvttps2dq", { XM, EXx } }, 2966 { "cvttps2dq", { XM, EXx } },
2578 { "cvtps2dq", { XM, EXx } }, 2967 { "cvtps2dq", { XM, EXx } },
2579 { "(bad)", { XX } },
2580 }, 2968 },
2581 2969
2582 /* PREFIX_0F5C */ 2970 /* PREFIX_0F5C */
2583 { 2971 {
2584 { "subps", { XM, EXx } }, 2972 { "subps", { XM, EXx } },
2585 { "subss", { XM, EXd } }, 2973 { "subss", { XM, EXd } },
2586 { "subpd", { XM, EXx } }, 2974 { "subpd", { XM, EXx } },
2587 { "subsd", { XM, EXq } }, 2975 { "subsd", { XM, EXq } },
2588 }, 2976 },
2589 2977
(...skipping 17 matching lines...) Expand all
2607 { 2995 {
2608 { "maxps", { XM, EXx } }, 2996 { "maxps", { XM, EXx } },
2609 { "maxss", { XM, EXd } }, 2997 { "maxss", { XM, EXd } },
2610 { "maxpd", { XM, EXx } }, 2998 { "maxpd", { XM, EXx } },
2611 { "maxsd", { XM, EXq } }, 2999 { "maxsd", { XM, EXq } },
2612 }, 3000 },
2613 3001
2614 /* PREFIX_0F60 */ 3002 /* PREFIX_0F60 */
2615 { 3003 {
2616 { "punpcklbw",{ MX, EMd } }, 3004 { "punpcklbw",{ MX, EMd } },
2617 { "(bad)",» { XX } }, 3005 { Bad_Opcode },
2618 { "punpcklbw",{ MX, EMx } }, 3006 { "punpcklbw",{ MX, EMx } },
2619 { "(bad)", { XX } },
2620 }, 3007 },
2621 3008
2622 /* PREFIX_0F61 */ 3009 /* PREFIX_0F61 */
2623 { 3010 {
2624 { "punpcklwd",{ MX, EMd } }, 3011 { "punpcklwd",{ MX, EMd } },
2625 { "(bad)",» { XX } }, 3012 { Bad_Opcode },
2626 { "punpcklwd",{ MX, EMx } }, 3013 { "punpcklwd",{ MX, EMx } },
2627 { "(bad)", { XX } },
2628 }, 3014 },
2629 3015
2630 /* PREFIX_0F62 */ 3016 /* PREFIX_0F62 */
2631 { 3017 {
2632 { "punpckldq",{ MX, EMd } }, 3018 { "punpckldq",{ MX, EMd } },
2633 { "(bad)",» { XX } }, 3019 { Bad_Opcode },
2634 { "punpckldq",{ MX, EMx } }, 3020 { "punpckldq",{ MX, EMx } },
2635 { "(bad)", { XX } },
2636 }, 3021 },
2637 3022
2638 /* PREFIX_0F6C */ 3023 /* PREFIX_0F6C */
2639 { 3024 {
2640 { "(bad)",» { XX } }, 3025 { Bad_Opcode },
2641 { "(bad)",» { XX } }, 3026 { Bad_Opcode },
2642 { "punpcklqdq", { XM, EXx } }, 3027 { "punpcklqdq", { XM, EXx } },
2643 { "(bad)", { XX } },
2644 }, 3028 },
2645 3029
2646 /* PREFIX_0F6D */ 3030 /* PREFIX_0F6D */
2647 { 3031 {
2648 { "(bad)",» { XX } }, 3032 { Bad_Opcode },
2649 { "(bad)",» { XX } }, 3033 { Bad_Opcode },
2650 { "punpckhqdq", { XM, EXx } }, 3034 { "punpckhqdq", { XM, EXx } },
2651 { "(bad)", { XX } },
2652 }, 3035 },
2653 3036
2654 /* PREFIX_0F6F */ 3037 /* PREFIX_0F6F */
2655 { 3038 {
2656 { "movq", { MX, EM } }, 3039 { "movq", { MX, EM } },
2657 { "movdqu", { XM, EXx } }, 3040 { "movdqu", { XM, EXx } },
2658 { "movdqa", { XM, EXx } }, 3041 { "movdqa", { XM, EXx } },
2659 { "(bad)", { XX } },
2660 }, 3042 },
2661 3043
2662 /* PREFIX_0F70 */ 3044 /* PREFIX_0F70 */
2663 { 3045 {
2664 { "pshufw", { MX, EM, Ib } }, 3046 { "pshufw", { MX, EM, Ib } },
2665 { "pshufhw",{ XM, EXx, Ib } }, 3047 { "pshufhw",{ XM, EXx, Ib } },
2666 { "pshufd", { XM, EXx, Ib } }, 3048 { "pshufd", { XM, EXx, Ib } },
2667 { "pshuflw",{ XM, EXx, Ib } }, 3049 { "pshuflw",{ XM, EXx, Ib } },
2668 }, 3050 },
2669 3051
2670 /* PREFIX_0F73_REG_3 */ 3052 /* PREFIX_0F73_REG_3 */
2671 { 3053 {
2672 { "(bad)",» { XX } }, 3054 { Bad_Opcode },
2673 { "(bad)",» { XX } }, 3055 { Bad_Opcode },
2674 { "psrldq", { XS, Ib } }, 3056 { "psrldq", { XS, Ib } },
2675 { "(bad)", { XX } },
2676 }, 3057 },
2677 3058
2678 /* PREFIX_0F73_REG_7 */ 3059 /* PREFIX_0F73_REG_7 */
2679 { 3060 {
2680 { "(bad)",» { XX } }, 3061 { Bad_Opcode },
2681 { "(bad)",» { XX } }, 3062 { Bad_Opcode },
2682 { "pslldq", { XS, Ib } }, 3063 { "pslldq", { XS, Ib } },
2683 { "(bad)", { XX } },
2684 }, 3064 },
2685 3065
2686 /* PREFIX_0F78 */ 3066 /* PREFIX_0F78 */
2687 { 3067 {
2688 {"vmread", { Em, Gm } }, 3068 {"vmread", { Em, Gm } },
2689 {"(bad)",» { XX } }, 3069 { Bad_Opcode },
2690 {"extrq", { XS, Ib, Ib } }, 3070 {"extrq", { XS, Ib, Ib } },
2691 {"insertq", { XM, XS, Ib, Ib } }, 3071 {"insertq", { XM, XS, Ib, Ib } },
2692 }, 3072 },
2693 3073
2694 /* PREFIX_0F79 */ 3074 /* PREFIX_0F79 */
2695 { 3075 {
2696 {"vmwrite", { Gm, Em } }, 3076 {"vmwrite", { Gm, Em } },
2697 {"(bad)",» { XX } }, 3077 { Bad_Opcode },
2698 {"extrq", { XM, XS } }, 3078 {"extrq", { XM, XS } },
2699 {"insertq", { XM, XS } }, 3079 {"insertq", { XM, XS } },
2700 }, 3080 },
2701 3081
2702 /* PREFIX_0F7C */ 3082 /* PREFIX_0F7C */
2703 { 3083 {
2704 { "(bad)",» { XX } }, 3084 { Bad_Opcode },
2705 { "(bad)",» { XX } }, 3085 { Bad_Opcode },
2706 { "haddpd", { XM, EXx } }, 3086 { "haddpd", { XM, EXx } },
2707 { "haddps", { XM, EXx } }, 3087 { "haddps", { XM, EXx } },
2708 }, 3088 },
2709 3089
2710 /* PREFIX_0F7D */ 3090 /* PREFIX_0F7D */
2711 { 3091 {
2712 { "(bad)",» { XX } }, 3092 { Bad_Opcode },
2713 { "(bad)",» { XX } }, 3093 { Bad_Opcode },
2714 { "hsubpd", { XM, EXx } }, 3094 { "hsubpd", { XM, EXx } },
2715 { "hsubps", { XM, EXx } }, 3095 { "hsubps", { XM, EXx } },
2716 }, 3096 },
2717 3097
2718 /* PREFIX_0F7E */ 3098 /* PREFIX_0F7E */
2719 { 3099 {
2720 { "movK", { Edq, MX } }, 3100 { "movK", { Edq, MX } },
2721 { "movq", { XM, EXq } }, 3101 { "movq", { XM, EXq } },
2722 { "movK", { Edq, XM } }, 3102 { "movK", { Edq, XM } },
2723 { "(bad)", { XX } },
2724 }, 3103 },
2725 3104
2726 /* PREFIX_0F7F */ 3105 /* PREFIX_0F7F */
2727 { 3106 {
2728 { "movq", { EMS, MX } }, 3107 { "movq", { EMS, MX } },
2729 { "movdqu", { EXxS, XM } }, 3108 { "movdqu", { EXxS, XM } },
2730 { "movdqa", { EXxS, XM } }, 3109 { "movdqa", { EXxS, XM } },
2731 { "(bad)",» { XX } }, 3110 },
3111
3112 /* PREFIX_0FAE_REG_0 */
3113 {
3114 { Bad_Opcode },
3115 { "rdfsbase", { Ev } },
3116 },
3117
3118 /* PREFIX_0FAE_REG_1 */
3119 {
3120 { Bad_Opcode },
3121 { "rdgsbase", { Ev } },
3122 },
3123
3124 /* PREFIX_0FAE_REG_2 */
3125 {
3126 { Bad_Opcode },
3127 { "wrfsbase", { Ev } },
3128 },
3129
3130 /* PREFIX_0FAE_REG_3 */
3131 {
3132 { Bad_Opcode },
3133 { "wrgsbase", { Ev } },
2732 }, 3134 },
2733 3135
2734 /* PREFIX_0FB8 */ 3136 /* PREFIX_0FB8 */
2735 { 3137 {
2736 { "(bad)", { XX } }, 3138 { Bad_Opcode },
2737 { "popcntS", { Gv, Ev } }, 3139 { "popcntS", { Gv, Ev } },
2738 { "(bad)", { XX } }, 3140 },
2739 { "(bad)", { XX } }, 3141
3142 /* PREFIX_0FBC */
3143 {
3144 { "bsfS",» { Gv, Ev } },
3145 { "tzcntS",»{ Gv, Ev } },
3146 { "bsfS",» { Gv, Ev } },
2740 }, 3147 },
2741 3148
2742 /* PREFIX_0FBD */ 3149 /* PREFIX_0FBD */
2743 { 3150 {
2744 { "bsrS", { Gv, Ev } }, 3151 { "bsrS", { Gv, Ev } },
2745 { "lzcntS", { Gv, Ev } }, 3152 { "lzcntS", { Gv, Ev } },
2746 { "bsrS", { Gv, Ev } }, 3153 { "bsrS", { Gv, Ev } },
2747 { "(bad)", { XX } },
2748 }, 3154 },
2749 3155
2750 /* PREFIX_0FC2 */ 3156 /* PREFIX_0FC2 */
2751 { 3157 {
2752 { "cmpps", { XM, EXx, CMP } }, 3158 { "cmpps", { XM, EXx, CMP } },
2753 { "cmpss", { XM, EXd, CMP } }, 3159 { "cmpss", { XM, EXd, CMP } },
2754 { "cmppd", { XM, EXx, CMP } }, 3160 { "cmppd", { XM, EXx, CMP } },
2755 { "cmpsd", { XM, EXq, CMP } }, 3161 { "cmpsd", { XM, EXq, CMP } },
2756 }, 3162 },
2757 3163
2758 /* PREFIX_0FC3 */ 3164 /* PREFIX_0FC3 */
2759 { 3165 {
2760 { "movntiS", { Ma, Gv } }, 3166 { "movntiS", { Ma, Gv } },
2761 { "(bad)", { XX } },
2762 { "(bad)", { XX } },
2763 { "(bad)", { XX } },
2764 }, 3167 },
2765 3168
2766 /* PREFIX_0FC7_REG_6 */ 3169 /* PREFIX_0FC7_REG_6 */
2767 { 3170 {
2768 { "vmptrld",{ Mq } }, 3171 { "vmptrld",{ Mq } },
2769 { "vmxon", { Mq } }, 3172 { "vmxon", { Mq } },
2770 { "vmclear",{ Mq } }, 3173 { "vmclear",{ Mq } },
2771 { "(bad)", { XX } },
2772 }, 3174 },
2773 3175
2774 /* PREFIX_0FD0 */ 3176 /* PREFIX_0FD0 */
2775 { 3177 {
2776 { "(bad)",» { XX } }, 3178 { Bad_Opcode },
2777 { "(bad)",» { XX } }, 3179 { Bad_Opcode },
2778 { "addsubpd", { XM, EXx } }, 3180 { "addsubpd", { XM, EXx } },
2779 { "addsubps", { XM, EXx } }, 3181 { "addsubps", { XM, EXx } },
2780 }, 3182 },
2781 3183
2782 /* PREFIX_0FD6 */ 3184 /* PREFIX_0FD6 */
2783 { 3185 {
2784 { "(bad)",» { XX } }, 3186 { Bad_Opcode },
2785 { "movq2dq",{ XM, MS } }, 3187 { "movq2dq",{ XM, MS } },
2786 { "movq", { EXqS, XM } }, 3188 { "movq", { EXqS, XM } },
2787 { "movdq2q",{ MX, XS } }, 3189 { "movdq2q",{ MX, XS } },
2788 }, 3190 },
2789 3191
2790 /* PREFIX_0FE6 */ 3192 /* PREFIX_0FE6 */
2791 { 3193 {
2792 { "(bad)",» { XX } }, 3194 { Bad_Opcode },
2793 { "cvtdq2pd", { XM, EXq } }, 3195 { "cvtdq2pd", { XM, EXq } },
2794 { "cvttpd2dq", { XM, EXx } }, 3196 { "cvttpd2dq", { XM, EXx } },
2795 { "cvtpd2dq", { XM, EXx } }, 3197 { "cvtpd2dq", { XM, EXx } },
2796 }, 3198 },
2797 3199
2798 /* PREFIX_0FE7 */ 3200 /* PREFIX_0FE7 */
2799 { 3201 {
2800 { "movntq", { Mq, MX } }, 3202 { "movntq", { Mq, MX } },
2801 { "(bad)",» { XX } }, 3203 { Bad_Opcode },
2802 { MOD_TABLE (MOD_0FE7_PREFIX_2) }, 3204 { MOD_TABLE (MOD_0FE7_PREFIX_2) },
2803 { "(bad)", { XX } },
2804 }, 3205 },
2805 3206
2806 /* PREFIX_0FF0 */ 3207 /* PREFIX_0FF0 */
2807 { 3208 {
2808 { "(bad)",» { XX } }, 3209 { Bad_Opcode },
2809 { "(bad)",» { XX } }, 3210 { Bad_Opcode },
2810 { "(bad)",» { XX } }, 3211 { Bad_Opcode },
2811 { MOD_TABLE (MOD_0FF0_PREFIX_3) }, 3212 { MOD_TABLE (MOD_0FF0_PREFIX_3) },
2812 }, 3213 },
2813 3214
2814 /* PREFIX_0FF7 */ 3215 /* PREFIX_0FF7 */
2815 { 3216 {
2816 { "maskmovq", { MX, MS } }, 3217 { "maskmovq", { MX, MS } },
2817 { "(bad)",» { XX } }, 3218 { Bad_Opcode },
2818 { "maskmovdqu", { XM, XS } }, 3219 { "maskmovdqu", { XM, XS } },
2819 { "(bad)", { XX } },
2820 }, 3220 },
2821 3221
2822 /* PREFIX_0F3810 */ 3222 /* PREFIX_0F3810 */
2823 { 3223 {
2824 { "(bad)",» { XX } }, 3224 { Bad_Opcode },
2825 { "(bad)",» { XX } }, 3225 { Bad_Opcode },
2826 { "pblendvb", { XM, EXx, XMM0 } }, 3226 { "pblendvb", { XM, EXx, XMM0 } },
2827 { "(bad)", { XX } },
2828 }, 3227 },
2829 3228
2830 /* PREFIX_0F3814 */ 3229 /* PREFIX_0F3814 */
2831 { 3230 {
2832 { "(bad)",» { XX } }, 3231 { Bad_Opcode },
2833 { "(bad)",» { XX } }, 3232 { Bad_Opcode },
2834 { "blendvps", { XM, EXx, XMM0 } }, 3233 { "blendvps", { XM, EXx, XMM0 } },
2835 { "(bad)", { XX } },
2836 }, 3234 },
2837 3235
2838 /* PREFIX_0F3815 */ 3236 /* PREFIX_0F3815 */
2839 { 3237 {
2840 { "(bad)",» { XX } }, 3238 { Bad_Opcode },
2841 { "(bad)",» { XX } }, 3239 { Bad_Opcode },
2842 { "blendvpd", { XM, EXx, XMM0 } }, 3240 { "blendvpd", { XM, EXx, XMM0 } },
2843 { "(bad)", { XX } },
2844 }, 3241 },
2845 3242
2846 /* PREFIX_0F3817 */ 3243 /* PREFIX_0F3817 */
2847 { 3244 {
2848 { "(bad)",» { XX } }, 3245 { Bad_Opcode },
2849 { "(bad)",» { XX } }, 3246 { Bad_Opcode },
2850 { "ptest", { XM, EXx } }, 3247 { "ptest", { XM, EXx } },
2851 { "(bad)", { XX } },
2852 }, 3248 },
2853 3249
2854 /* PREFIX_0F3820 */ 3250 /* PREFIX_0F3820 */
2855 { 3251 {
2856 { "(bad)",» { XX } }, 3252 { Bad_Opcode },
2857 { "(bad)",» { XX } }, 3253 { Bad_Opcode },
2858 { "pmovsxbw", { XM, EXq } }, 3254 { "pmovsxbw", { XM, EXq } },
2859 { "(bad)", { XX } },
2860 }, 3255 },
2861 3256
2862 /* PREFIX_0F3821 */ 3257 /* PREFIX_0F3821 */
2863 { 3258 {
2864 { "(bad)",» { XX } }, 3259 { Bad_Opcode },
2865 { "(bad)",» { XX } }, 3260 { Bad_Opcode },
2866 { "pmovsxbd", { XM, EXd } }, 3261 { "pmovsxbd", { XM, EXd } },
2867 { "(bad)", { XX } },
2868 }, 3262 },
2869 3263
2870 /* PREFIX_0F3822 */ 3264 /* PREFIX_0F3822 */
2871 { 3265 {
2872 { "(bad)",» { XX } }, 3266 { Bad_Opcode },
2873 { "(bad)",» { XX } }, 3267 { Bad_Opcode },
2874 { "pmovsxbq", { XM, EXw } }, 3268 { "pmovsxbq", { XM, EXw } },
2875 { "(bad)", { XX } },
2876 }, 3269 },
2877 3270
2878 /* PREFIX_0F3823 */ 3271 /* PREFIX_0F3823 */
2879 { 3272 {
2880 { "(bad)",» { XX } }, 3273 { Bad_Opcode },
2881 { "(bad)",» { XX } }, 3274 { Bad_Opcode },
2882 { "pmovsxwd", { XM, EXq } }, 3275 { "pmovsxwd", { XM, EXq } },
2883 { "(bad)", { XX } },
2884 }, 3276 },
2885 3277
2886 /* PREFIX_0F3824 */ 3278 /* PREFIX_0F3824 */
2887 { 3279 {
2888 { "(bad)",» { XX } }, 3280 { Bad_Opcode },
2889 { "(bad)",» { XX } }, 3281 { Bad_Opcode },
2890 { "pmovsxwq", { XM, EXd } }, 3282 { "pmovsxwq", { XM, EXd } },
2891 { "(bad)", { XX } },
2892 }, 3283 },
2893 3284
2894 /* PREFIX_0F3825 */ 3285 /* PREFIX_0F3825 */
2895 { 3286 {
2896 { "(bad)",» { XX } }, 3287 { Bad_Opcode },
2897 { "(bad)",» { XX } }, 3288 { Bad_Opcode },
2898 { "pmovsxdq", { XM, EXq } }, 3289 { "pmovsxdq", { XM, EXq } },
2899 { "(bad)", { XX } },
2900 }, 3290 },
2901 3291
2902 /* PREFIX_0F3828 */ 3292 /* PREFIX_0F3828 */
2903 { 3293 {
2904 { "(bad)",» { XX } }, 3294 { Bad_Opcode },
2905 { "(bad)",» { XX } }, 3295 { Bad_Opcode },
2906 { "pmuldq", { XM, EXx } }, 3296 { "pmuldq", { XM, EXx } },
2907 { "(bad)", { XX } },
2908 }, 3297 },
2909 3298
2910 /* PREFIX_0F3829 */ 3299 /* PREFIX_0F3829 */
2911 { 3300 {
2912 { "(bad)",» { XX } }, 3301 { Bad_Opcode },
2913 { "(bad)",» { XX } }, 3302 { Bad_Opcode },
2914 { "pcmpeqq", { XM, EXx } }, 3303 { "pcmpeqq", { XM, EXx } },
2915 { "(bad)", { XX } },
2916 }, 3304 },
2917 3305
2918 /* PREFIX_0F382A */ 3306 /* PREFIX_0F382A */
2919 { 3307 {
2920 { "(bad)",» { XX } }, 3308 { Bad_Opcode },
2921 { "(bad)",» { XX } }, 3309 { Bad_Opcode },
2922 { MOD_TABLE (MOD_0F382A_PREFIX_2) }, 3310 { MOD_TABLE (MOD_0F382A_PREFIX_2) },
2923 { "(bad)", { XX } },
2924 }, 3311 },
2925 3312
2926 /* PREFIX_0F382B */ 3313 /* PREFIX_0F382B */
2927 { 3314 {
2928 { "(bad)",» { XX } }, 3315 { Bad_Opcode },
2929 { "(bad)",» { XX } }, 3316 { Bad_Opcode },
2930 { "packusdw", { XM, EXx } }, 3317 { "packusdw", { XM, EXx } },
2931 { "(bad)", { XX } },
2932 }, 3318 },
2933 3319
2934 /* PREFIX_0F3830 */ 3320 /* PREFIX_0F3830 */
2935 { 3321 {
2936 { "(bad)",» { XX } }, 3322 { Bad_Opcode },
2937 { "(bad)",» { XX } }, 3323 { Bad_Opcode },
2938 { "pmovzxbw", { XM, EXq } }, 3324 { "pmovzxbw", { XM, EXq } },
2939 { "(bad)", { XX } },
2940 }, 3325 },
2941 3326
2942 /* PREFIX_0F3831 */ 3327 /* PREFIX_0F3831 */
2943 { 3328 {
2944 { "(bad)",» { XX } }, 3329 { Bad_Opcode },
2945 { "(bad)",» { XX } }, 3330 { Bad_Opcode },
2946 { "pmovzxbd", { XM, EXd } }, 3331 { "pmovzxbd", { XM, EXd } },
2947 { "(bad)", { XX } },
2948 }, 3332 },
2949 3333
2950 /* PREFIX_0F3832 */ 3334 /* PREFIX_0F3832 */
2951 { 3335 {
2952 { "(bad)",» { XX } }, 3336 { Bad_Opcode },
2953 { "(bad)",» { XX } }, 3337 { Bad_Opcode },
2954 { "pmovzxbq", { XM, EXw } }, 3338 { "pmovzxbq", { XM, EXw } },
2955 { "(bad)", { XX } },
2956 }, 3339 },
2957 3340
2958 /* PREFIX_0F3833 */ 3341 /* PREFIX_0F3833 */
2959 { 3342 {
2960 { "(bad)",» { XX } }, 3343 { Bad_Opcode },
2961 { "(bad)",» { XX } }, 3344 { Bad_Opcode },
2962 { "pmovzxwd", { XM, EXq } }, 3345 { "pmovzxwd", { XM, EXq } },
2963 { "(bad)", { XX } },
2964 }, 3346 },
2965 3347
2966 /* PREFIX_0F3834 */ 3348 /* PREFIX_0F3834 */
2967 { 3349 {
2968 { "(bad)",» { XX } }, 3350 { Bad_Opcode },
2969 { "(bad)",» { XX } }, 3351 { Bad_Opcode },
2970 { "pmovzxwq", { XM, EXd } }, 3352 { "pmovzxwq", { XM, EXd } },
2971 { "(bad)", { XX } },
2972 }, 3353 },
2973 3354
2974 /* PREFIX_0F3835 */ 3355 /* PREFIX_0F3835 */
2975 { 3356 {
2976 { "(bad)",» { XX } }, 3357 { Bad_Opcode },
2977 { "(bad)",» { XX } }, 3358 { Bad_Opcode },
2978 { "pmovzxdq", { XM, EXq } }, 3359 { "pmovzxdq", { XM, EXq } },
2979 { "(bad)", { XX } },
2980 }, 3360 },
2981 3361
2982 /* PREFIX_0F3837 */ 3362 /* PREFIX_0F3837 */
2983 { 3363 {
2984 { "(bad)",» { XX } }, 3364 { Bad_Opcode },
2985 { "(bad)",» { XX } }, 3365 { Bad_Opcode },
2986 { "pcmpgtq", { XM, EXx } }, 3366 { "pcmpgtq", { XM, EXx } },
2987 { "(bad)", { XX } },
2988 }, 3367 },
2989 3368
2990 /* PREFIX_0F3838 */ 3369 /* PREFIX_0F3838 */
2991 { 3370 {
2992 { "(bad)",» { XX } }, 3371 { Bad_Opcode },
2993 { "(bad)",» { XX } }, 3372 { Bad_Opcode },
2994 { "pminsb", { XM, EXx } }, 3373 { "pminsb", { XM, EXx } },
2995 { "(bad)", { XX } },
2996 }, 3374 },
2997 3375
2998 /* PREFIX_0F3839 */ 3376 /* PREFIX_0F3839 */
2999 { 3377 {
3000 { "(bad)",» { XX } }, 3378 { Bad_Opcode },
3001 { "(bad)",» { XX } }, 3379 { Bad_Opcode },
3002 { "pminsd", { XM, EXx } }, 3380 { "pminsd", { XM, EXx } },
3003 { "(bad)", { XX } },
3004 }, 3381 },
3005 3382
3006 /* PREFIX_0F383A */ 3383 /* PREFIX_0F383A */
3007 { 3384 {
3008 { "(bad)",» { XX } }, 3385 { Bad_Opcode },
3009 { "(bad)",» { XX } }, 3386 { Bad_Opcode },
3010 { "pminuw", { XM, EXx } }, 3387 { "pminuw", { XM, EXx } },
3011 { "(bad)", { XX } },
3012 }, 3388 },
3013 3389
3014 /* PREFIX_0F383B */ 3390 /* PREFIX_0F383B */
3015 { 3391 {
3016 { "(bad)",» { XX } }, 3392 { Bad_Opcode },
3017 { "(bad)",» { XX } }, 3393 { Bad_Opcode },
3018 { "pminud", { XM, EXx } }, 3394 { "pminud", { XM, EXx } },
3019 { "(bad)", { XX } },
3020 }, 3395 },
3021 3396
3022 /* PREFIX_0F383C */ 3397 /* PREFIX_0F383C */
3023 { 3398 {
3024 { "(bad)",» { XX } }, 3399 { Bad_Opcode },
3025 { "(bad)",» { XX } }, 3400 { Bad_Opcode },
3026 { "pmaxsb", { XM, EXx } }, 3401 { "pmaxsb", { XM, EXx } },
3027 { "(bad)", { XX } },
3028 }, 3402 },
3029 3403
3030 /* PREFIX_0F383D */ 3404 /* PREFIX_0F383D */
3031 { 3405 {
3032 { "(bad)",» { XX } }, 3406 { Bad_Opcode },
3033 { "(bad)",» { XX } }, 3407 { Bad_Opcode },
3034 { "pmaxsd", { XM, EXx } }, 3408 { "pmaxsd", { XM, EXx } },
3035 { "(bad)", { XX } },
3036 }, 3409 },
3037 3410
3038 /* PREFIX_0F383E */ 3411 /* PREFIX_0F383E */
3039 { 3412 {
3040 { "(bad)",» { XX } }, 3413 { Bad_Opcode },
3041 { "(bad)",» { XX } }, 3414 { Bad_Opcode },
3042 { "pmaxuw", { XM, EXx } }, 3415 { "pmaxuw", { XM, EXx } },
3043 { "(bad)", { XX } },
3044 }, 3416 },
3045 3417
3046 /* PREFIX_0F383F */ 3418 /* PREFIX_0F383F */
3047 { 3419 {
3048 { "(bad)",» { XX } }, 3420 { Bad_Opcode },
3049 { "(bad)",» { XX } }, 3421 { Bad_Opcode },
3050 { "pmaxud", { XM, EXx } }, 3422 { "pmaxud", { XM, EXx } },
3051 { "(bad)", { XX } },
3052 }, 3423 },
3053 3424
3054 /* PREFIX_0F3840 */ 3425 /* PREFIX_0F3840 */
3055 { 3426 {
3056 { "(bad)",» { XX } }, 3427 { Bad_Opcode },
3057 { "(bad)",» { XX } }, 3428 { Bad_Opcode },
3058 { "pmulld", { XM, EXx } }, 3429 { "pmulld", { XM, EXx } },
3059 { "(bad)", { XX } },
3060 }, 3430 },
3061 3431
3062 /* PREFIX_0F3841 */ 3432 /* PREFIX_0F3841 */
3063 { 3433 {
3064 { "(bad)",» { XX } }, 3434 { Bad_Opcode },
3065 { "(bad)",» { XX } }, 3435 { Bad_Opcode },
3066 { "phminposuw", { XM, EXx } }, 3436 { "phminposuw", { XM, EXx } },
3067 { "(bad)", { XX } },
3068 }, 3437 },
3069 3438
3070 /* PREFIX_0F3880 */ 3439 /* PREFIX_0F3880 */
3071 { 3440 {
3072 { "(bad)",» { XX } }, 3441 { Bad_Opcode },
3073 { "(bad)",» { XX } }, 3442 { Bad_Opcode },
3074 { "invept", { Gm, Mo } }, 3443 { "invept", { Gm, Mo } },
3075 { "(bad)", { XX } },
3076 }, 3444 },
3077 3445
3078 /* PREFIX_0F3881 */ 3446 /* PREFIX_0F3881 */
3079 { 3447 {
3080 { "(bad)",» { XX } }, 3448 { Bad_Opcode },
3081 { "(bad)",» { XX } }, 3449 { Bad_Opcode },
3082 { "invvpid", { Gm, Mo } }, 3450 { "invvpid", { Gm, Mo } },
3083 { "(bad)",» { XX } }, 3451 },
3452
3453 /* PREFIX_0F3882 */
3454 {
3455 { Bad_Opcode },
3456 { Bad_Opcode },
3457 { "invpcid", { Gm, M } },
3084 }, 3458 },
3085 3459
3086 /* PREFIX_0F38DB */ 3460 /* PREFIX_0F38DB */
3087 { 3461 {
3088 { "(bad)",» { XX } }, 3462 { Bad_Opcode },
3089 { "(bad)",» { XX } }, 3463 { Bad_Opcode },
3090 { "aesimc", { XM, EXx } }, 3464 { "aesimc", { XM, EXx } },
3091 { "(bad)", { XX } },
3092 }, 3465 },
3093 3466
3094 /* PREFIX_0F38DC */ 3467 /* PREFIX_0F38DC */
3095 { 3468 {
3096 { "(bad)",» { XX } }, 3469 { Bad_Opcode },
3097 { "(bad)",» { XX } }, 3470 { Bad_Opcode },
3098 { "aesenc", { XM, EXx } }, 3471 { "aesenc", { XM, EXx } },
3099 { "(bad)", { XX } },
3100 }, 3472 },
3101 3473
3102 /* PREFIX_0F38DD */ 3474 /* PREFIX_0F38DD */
3103 { 3475 {
3104 { "(bad)",» { XX } }, 3476 { Bad_Opcode },
3105 { "(bad)",» { XX } }, 3477 { Bad_Opcode },
3106 { "aesenclast", { XM, EXx } }, 3478 { "aesenclast", { XM, EXx } },
3107 { "(bad)", { XX } },
3108 }, 3479 },
3109 3480
3110 /* PREFIX_0F38DE */ 3481 /* PREFIX_0F38DE */
3111 { 3482 {
3112 { "(bad)",» { XX } }, 3483 { Bad_Opcode },
3113 { "(bad)",» { XX } }, 3484 { Bad_Opcode },
3114 { "aesdec", { XM, EXx } }, 3485 { "aesdec", { XM, EXx } },
3115 { "(bad)", { XX } },
3116 }, 3486 },
3117 3487
3118 /* PREFIX_0F38DF */ 3488 /* PREFIX_0F38DF */
3119 { 3489 {
3120 { "(bad)",» { XX } }, 3490 { Bad_Opcode },
3121 { "(bad)",» { XX } }, 3491 { Bad_Opcode },
3122 { "aesdeclast", { XM, EXx } }, 3492 { "aesdeclast", { XM, EXx } },
3123 { "(bad)", { XX } },
3124 }, 3493 },
3125 3494
3126 /* PREFIX_0F38F0 */ 3495 /* PREFIX_0F38F0 */
3127 { 3496 {
3128 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } }, 3497 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } },
3129 { "(bad)",» { XX } }, 3498 { Bad_Opcode },
3130 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } }, 3499 { "movbeS", { Gv, { MOVBE_Fixup, v_mode } } },
3131 { "crc32", { Gdq, { CRC32_Fixup, b_mode } } }, 3500 { "crc32", { Gdq, { CRC32_Fixup, b_mode } } },
3132 }, 3501 },
3133 3502
3134 /* PREFIX_0F38F1 */ 3503 /* PREFIX_0F38F1 */
3135 { 3504 {
3136 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } }, 3505 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } },
3137 { "(bad)",» { XX } }, 3506 { Bad_Opcode },
3138 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } }, 3507 { "movbeS", { { MOVBE_Fixup, v_mode }, Gv } },
3139 { "crc32", { Gdq, { CRC32_Fixup, v_mode } } }, 3508 { "crc32", { Gdq, { CRC32_Fixup, v_mode } } },
3140 }, 3509 },
3141 3510
3511 /* PREFIX_0F38F6 */
3512 {
3513 { Bad_Opcode },
3514 { "adoxS", { Gdq, Edq} },
3515 { "adcxS", { Gdq, Edq} },
3516 { Bad_Opcode },
3517 },
3518
3142 /* PREFIX_0F3A08 */ 3519 /* PREFIX_0F3A08 */
3143 { 3520 {
3144 { "(bad)",» { XX } }, 3521 { Bad_Opcode },
3145 { "(bad)",» { XX } }, 3522 { Bad_Opcode },
3146 { "roundps", { XM, EXx, Ib } }, 3523 { "roundps", { XM, EXx, Ib } },
3147 { "(bad)", { XX } },
3148 }, 3524 },
3149 3525
3150 /* PREFIX_0F3A09 */ 3526 /* PREFIX_0F3A09 */
3151 { 3527 {
3152 { "(bad)",» { XX } }, 3528 { Bad_Opcode },
3153 { "(bad)",» { XX } }, 3529 { Bad_Opcode },
3154 { "roundpd", { XM, EXx, Ib } }, 3530 { "roundpd", { XM, EXx, Ib } },
3155 { "(bad)", { XX } },
3156 }, 3531 },
3157 3532
3158 /* PREFIX_0F3A0A */ 3533 /* PREFIX_0F3A0A */
3159 { 3534 {
3160 { "(bad)",» { XX } }, 3535 { Bad_Opcode },
3161 { "(bad)",» { XX } }, 3536 { Bad_Opcode },
3162 { "roundss", { XM, EXd, Ib } }, 3537 { "roundss", { XM, EXd, Ib } },
3163 { "(bad)", { XX } },
3164 }, 3538 },
3165 3539
3166 /* PREFIX_0F3A0B */ 3540 /* PREFIX_0F3A0B */
3167 { 3541 {
3168 { "(bad)",» { XX } }, 3542 { Bad_Opcode },
3169 { "(bad)",» { XX } }, 3543 { Bad_Opcode },
3170 { "roundsd", { XM, EXq, Ib } }, 3544 { "roundsd", { XM, EXq, Ib } },
3171 { "(bad)", { XX } },
3172 }, 3545 },
3173 3546
3174 /* PREFIX_0F3A0C */ 3547 /* PREFIX_0F3A0C */
3175 { 3548 {
3176 { "(bad)",» { XX } }, 3549 { Bad_Opcode },
3177 { "(bad)",» { XX } }, 3550 { Bad_Opcode },
3178 { "blendps", { XM, EXx, Ib } }, 3551 { "blendps", { XM, EXx, Ib } },
3179 { "(bad)", { XX } },
3180 }, 3552 },
3181 3553
3182 /* PREFIX_0F3A0D */ 3554 /* PREFIX_0F3A0D */
3183 { 3555 {
3184 { "(bad)",» { XX } }, 3556 { Bad_Opcode },
3185 { "(bad)",» { XX } }, 3557 { Bad_Opcode },
3186 { "blendpd", { XM, EXx, Ib } }, 3558 { "blendpd", { XM, EXx, Ib } },
3187 { "(bad)", { XX } },
3188 }, 3559 },
3189 3560
3190 /* PREFIX_0F3A0E */ 3561 /* PREFIX_0F3A0E */
3191 { 3562 {
3192 { "(bad)",» { XX } }, 3563 { Bad_Opcode },
3193 { "(bad)",» { XX } }, 3564 { Bad_Opcode },
3194 { "pblendw", { XM, EXx, Ib } }, 3565 { "pblendw", { XM, EXx, Ib } },
3195 { "(bad)", { XX } },
3196 }, 3566 },
3197 3567
3198 /* PREFIX_0F3A14 */ 3568 /* PREFIX_0F3A14 */
3199 { 3569 {
3200 { "(bad)",» { XX } }, 3570 { Bad_Opcode },
3201 { "(bad)",» { XX } }, 3571 { Bad_Opcode },
3202 { "pextrb", { Edqb, XM, Ib } }, 3572 { "pextrb", { Edqb, XM, Ib } },
3203 { "(bad)", { XX } },
3204 }, 3573 },
3205 3574
3206 /* PREFIX_0F3A15 */ 3575 /* PREFIX_0F3A15 */
3207 { 3576 {
3208 { "(bad)",» { XX } }, 3577 { Bad_Opcode },
3209 { "(bad)",» { XX } }, 3578 { Bad_Opcode },
3210 { "pextrw", { Edqw, XM, Ib } }, 3579 { "pextrw", { Edqw, XM, Ib } },
3211 { "(bad)", { XX } },
3212 }, 3580 },
3213 3581
3214 /* PREFIX_0F3A16 */ 3582 /* PREFIX_0F3A16 */
3215 { 3583 {
3216 { "(bad)",» { XX } }, 3584 { Bad_Opcode },
3217 { "(bad)",» { XX } }, 3585 { Bad_Opcode },
3218 { "pextrK", { Edq, XM, Ib } }, 3586 { "pextrK", { Edq, XM, Ib } },
3219 { "(bad)", { XX } },
3220 }, 3587 },
3221 3588
3222 /* PREFIX_0F3A17 */ 3589 /* PREFIX_0F3A17 */
3223 { 3590 {
3224 { "(bad)",» { XX } }, 3591 { Bad_Opcode },
3225 { "(bad)",» { XX } }, 3592 { Bad_Opcode },
3226 { "extractps", { Edqd, XM, Ib } }, 3593 { "extractps", { Edqd, XM, Ib } },
3227 { "(bad)", { XX } },
3228 }, 3594 },
3229 3595
3230 /* PREFIX_0F3A20 */ 3596 /* PREFIX_0F3A20 */
3231 { 3597 {
3232 { "(bad)",» { XX } }, 3598 { Bad_Opcode },
3233 { "(bad)",» { XX } }, 3599 { Bad_Opcode },
3234 { "pinsrb", { XM, Edqb, Ib } }, 3600 { "pinsrb", { XM, Edqb, Ib } },
3235 { "(bad)", { XX } },
3236 }, 3601 },
3237 3602
3238 /* PREFIX_0F3A21 */ 3603 /* PREFIX_0F3A21 */
3239 { 3604 {
3240 { "(bad)",» { XX } }, 3605 { Bad_Opcode },
3241 { "(bad)",» { XX } }, 3606 { Bad_Opcode },
3242 { "insertps", { XM, EXd, Ib } }, 3607 { "insertps", { XM, EXd, Ib } },
3243 { "(bad)", { XX } },
3244 }, 3608 },
3245 3609
3246 /* PREFIX_0F3A22 */ 3610 /* PREFIX_0F3A22 */
3247 { 3611 {
3248 { "(bad)",» { XX } }, 3612 { Bad_Opcode },
3249 { "(bad)",» { XX } }, 3613 { Bad_Opcode },
3250 { "pinsrK", { XM, Edq, Ib } }, 3614 { "pinsrK", { XM, Edq, Ib } },
3251 { "(bad)", { XX } },
3252 }, 3615 },
3253 3616
3254 /* PREFIX_0F3A40 */ 3617 /* PREFIX_0F3A40 */
3255 { 3618 {
3256 { "(bad)",» { XX } }, 3619 { Bad_Opcode },
3257 { "(bad)",» { XX } }, 3620 { Bad_Opcode },
3258 { "dpps", { XM, EXx, Ib } }, 3621 { "dpps", { XM, EXx, Ib } },
3259 { "(bad)", { XX } },
3260 }, 3622 },
3261 3623
3262 /* PREFIX_0F3A41 */ 3624 /* PREFIX_0F3A41 */
3263 { 3625 {
3264 { "(bad)",» { XX } }, 3626 { Bad_Opcode },
3265 { "(bad)",» { XX } }, 3627 { Bad_Opcode },
3266 { "dppd", { XM, EXx, Ib } }, 3628 { "dppd", { XM, EXx, Ib } },
3267 { "(bad)", { XX } },
3268 }, 3629 },
3269 3630
3270 /* PREFIX_0F3A42 */ 3631 /* PREFIX_0F3A42 */
3271 { 3632 {
3272 { "(bad)",» { XX } }, 3633 { Bad_Opcode },
3273 { "(bad)",» { XX } }, 3634 { Bad_Opcode },
3274 { "mpsadbw", { XM, EXx, Ib } }, 3635 { "mpsadbw", { XM, EXx, Ib } },
3275 { "(bad)", { XX } },
3276 }, 3636 },
3277 3637
3278 /* PREFIX_0F3A44 */ 3638 /* PREFIX_0F3A44 */
3279 { 3639 {
3280 { "(bad)",» { XX } }, 3640 { Bad_Opcode },
3281 { "(bad)",» { XX } }, 3641 { Bad_Opcode },
3282 { "pclmulqdq", { XM, EXx, PCLMUL } }, 3642 { "pclmulqdq", { XM, EXx, PCLMUL } },
3283 { "(bad)", { XX } },
3284 }, 3643 },
3285 3644
3286 /* PREFIX_0F3A60 */ 3645 /* PREFIX_0F3A60 */
3287 { 3646 {
3288 { "(bad)",» { XX } }, 3647 { Bad_Opcode },
3289 { "(bad)",» { XX } }, 3648 { Bad_Opcode },
3290 { "pcmpestrm", { XM, EXx, Ib } }, 3649 { "pcmpestrm", { XM, EXx, Ib } },
3291 { "(bad)", { XX } },
3292 }, 3650 },
3293 3651
3294 /* PREFIX_0F3A61 */ 3652 /* PREFIX_0F3A61 */
3295 { 3653 {
3296 { "(bad)",» { XX } }, 3654 { Bad_Opcode },
3297 { "(bad)",» { XX } }, 3655 { Bad_Opcode },
3298 { "pcmpestri", { XM, EXx, Ib } }, 3656 { "pcmpestri", { XM, EXx, Ib } },
3299 { "(bad)", { XX } },
3300 }, 3657 },
3301 3658
3302 /* PREFIX_0F3A62 */ 3659 /* PREFIX_0F3A62 */
3303 { 3660 {
3304 { "(bad)",» { XX } }, 3661 { Bad_Opcode },
3305 { "(bad)",» { XX } }, 3662 { Bad_Opcode },
3306 { "pcmpistrm", { XM, EXx, Ib } }, 3663 { "pcmpistrm", { XM, EXx, Ib } },
3307 { "(bad)", { XX } },
3308 }, 3664 },
3309 3665
3310 /* PREFIX_0F3A63 */ 3666 /* PREFIX_0F3A63 */
3311 { 3667 {
3312 { "(bad)",» { XX } }, 3668 { Bad_Opcode },
3313 { "(bad)",» { XX } }, 3669 { Bad_Opcode },
3314 { "pcmpistri", { XM, EXx, Ib } }, 3670 { "pcmpistri", { XM, EXx, Ib } },
3315 { "(bad)", { XX } },
3316 }, 3671 },
3317 3672
3318 /* PREFIX_0F3ADF */ 3673 /* PREFIX_0F3ADF */
3319 { 3674 {
3320 { "(bad)",» { XX } }, 3675 { Bad_Opcode },
3321 { "(bad)",» { XX } }, 3676 { Bad_Opcode },
3322 { "aeskeygenassist", { XM, EXx, Ib } }, 3677 { "aeskeygenassist", { XM, EXx, Ib } },
3323 { "(bad)",» { XX } }, 3678 },
3324 }, 3679
3325 3680 /* PREFIX_VEX_0F10 */
3326 /* PREFIX_VEX_10 */ 3681 {
3327 { 3682 { VEX_W_TABLE (VEX_W_0F10_P_0) },
3328 { "vmovups", { XM, EXx } }, 3683 { VEX_LEN_TABLE (VEX_LEN_0F10_P_1) },
3329 { VEX_LEN_TABLE (VEX_LEN_10_P_1) }, 3684 { VEX_W_TABLE (VEX_W_0F10_P_2) },
3330 { "vmovupd", { XM, EXx } }, 3685 { VEX_LEN_TABLE (VEX_LEN_0F10_P_3) },
3331 { VEX_LEN_TABLE (VEX_LEN_10_P_3) }, 3686 },
3332 }, 3687
3333 3688 /* PREFIX_VEX_0F11 */
3334 /* PREFIX_VEX_11 */ 3689 {
3335 { 3690 { VEX_W_TABLE (VEX_W_0F11_P_0) },
3336 { "vmovups", { EXxS, XM } }, 3691 { VEX_LEN_TABLE (VEX_LEN_0F11_P_1) },
3337 { VEX_LEN_TABLE (VEX_LEN_11_P_1) }, 3692 { VEX_W_TABLE (VEX_W_0F11_P_2) },
3338 { "vmovupd", { EXxS, XM } }, 3693 { VEX_LEN_TABLE (VEX_LEN_0F11_P_3) },
3339 { VEX_LEN_TABLE (VEX_LEN_11_P_3) }, 3694 },
3340 }, 3695
3341 3696 /* PREFIX_VEX_0F12 */
3342 /* PREFIX_VEX_12 */ 3697 {
3343 { 3698 { MOD_TABLE (MOD_VEX_0F12_PREFIX_0) },
3344 { MOD_TABLE (MOD_VEX_12_PREFIX_0) }, 3699 { VEX_W_TABLE (VEX_W_0F12_P_1) },
3345 { "vmovsldup", { XM, EXx } }, 3700 { VEX_LEN_TABLE (VEX_LEN_0F12_P_2) },
3346 { VEX_LEN_TABLE (VEX_LEN_12_P_2) }, 3701 { VEX_W_TABLE (VEX_W_0F12_P_3) },
3347 { "vmovddup", { XM, EXymmq } }, 3702 },
3348 }, 3703
3349 3704 /* PREFIX_VEX_0F16 */
3350 /* PREFIX_VEX_16 */ 3705 {
3351 { 3706 { MOD_TABLE (MOD_VEX_0F16_PREFIX_0) },
3352 { MOD_TABLE (MOD_VEX_16_PREFIX_0) }, 3707 { VEX_W_TABLE (VEX_W_0F16_P_1) },
3353 { "vmovshdup", { XM, EXx } }, 3708 { VEX_LEN_TABLE (VEX_LEN_0F16_P_2) },
3354 { VEX_LEN_TABLE (VEX_LEN_16_P_2) }, 3709 },
3355 { "(bad)",» { XX } }, 3710
3356 }, 3711 /* PREFIX_VEX_0F2A */
3357 3712 {
3358 /* PREFIX_VEX_2A */ 3713 { Bad_Opcode },
3359 { 3714 { VEX_LEN_TABLE (VEX_LEN_0F2A_P_1) },
3360 { "(bad)",» { XX } }, 3715 { Bad_Opcode },
3361 { VEX_LEN_TABLE (VEX_LEN_2A_P_1) }, 3716 { VEX_LEN_TABLE (VEX_LEN_0F2A_P_3) },
3362 { "(bad)",» { XX } }, 3717 },
3363 { VEX_LEN_TABLE (VEX_LEN_2A_P_3) }, 3718
3364 }, 3719 /* PREFIX_VEX_0F2C */
3365 3720 {
3366 /* PREFIX_VEX_2C */ 3721 { Bad_Opcode },
3367 { 3722 { VEX_LEN_TABLE (VEX_LEN_0F2C_P_1) },
3368 { "(bad)",» { XX } }, 3723 { Bad_Opcode },
3369 { VEX_LEN_TABLE (VEX_LEN_2C_P_1) }, 3724 { VEX_LEN_TABLE (VEX_LEN_0F2C_P_3) },
3370 { "(bad)",» { XX } }, 3725 },
3371 { VEX_LEN_TABLE (VEX_LEN_2C_P_3) }, 3726
3372 }, 3727 /* PREFIX_VEX_0F2D */
3373 3728 {
3374 /* PREFIX_VEX_2D */ 3729 { Bad_Opcode },
3375 { 3730 { VEX_LEN_TABLE (VEX_LEN_0F2D_P_1) },
3376 { "(bad)",» { XX } }, 3731 { Bad_Opcode },
3377 { VEX_LEN_TABLE (VEX_LEN_2D_P_1) }, 3732 { VEX_LEN_TABLE (VEX_LEN_0F2D_P_3) },
3378 { "(bad)",» { XX } }, 3733 },
3379 { VEX_LEN_TABLE (VEX_LEN_2D_P_3) }, 3734
3380 }, 3735 /* PREFIX_VEX_0F2E */
3381 3736 {
3382 /* PREFIX_VEX_2E */ 3737 { VEX_LEN_TABLE (VEX_LEN_0F2E_P_0) },
3383 { 3738 { Bad_Opcode },
3384 { VEX_LEN_TABLE (VEX_LEN_2E_P_0) }, 3739 { VEX_LEN_TABLE (VEX_LEN_0F2E_P_2) },
3385 { "(bad)",» { XX } }, 3740 },
3386 { VEX_LEN_TABLE (VEX_LEN_2E_P_2) }, 3741
3387 { "(bad)",» { XX } }, 3742 /* PREFIX_VEX_0F2F */
3388 }, 3743 {
3389 3744 { VEX_LEN_TABLE (VEX_LEN_0F2F_P_0) },
3390 /* PREFIX_VEX_2F */ 3745 { Bad_Opcode },
3391 { 3746 { VEX_LEN_TABLE (VEX_LEN_0F2F_P_2) },
3392 { VEX_LEN_TABLE (VEX_LEN_2F_P_0) }, 3747 },
3393 { "(bad)",» { XX } }, 3748
3394 { VEX_LEN_TABLE (VEX_LEN_2F_P_2) }, 3749 /* PREFIX_VEX_0F51 */
3395 { "(bad)",» { XX } }, 3750 {
3396 }, 3751 { VEX_W_TABLE (VEX_W_0F51_P_0) },
3397 3752 { VEX_LEN_TABLE (VEX_LEN_0F51_P_1) },
3398 /* PREFIX_VEX_51 */ 3753 { VEX_W_TABLE (VEX_W_0F51_P_2) },
3399 { 3754 { VEX_LEN_TABLE (VEX_LEN_0F51_P_3) },
3400 { "vsqrtps", { XM, EXx } }, 3755 },
3401 { VEX_LEN_TABLE (VEX_LEN_51_P_1) }, 3756
3402 { "vsqrtpd", { XM, EXx } }, 3757 /* PREFIX_VEX_0F52 */
3403 { VEX_LEN_TABLE (VEX_LEN_51_P_3) }, 3758 {
3404 }, 3759 { VEX_W_TABLE (VEX_W_0F52_P_0) },
3405 3760 { VEX_LEN_TABLE (VEX_LEN_0F52_P_1) },
3406 /* PREFIX_VEX_52 */ 3761 },
3407 { 3762
3408 { "vrsqrtps", { XM, EXx } }, 3763 /* PREFIX_VEX_0F53 */
3409 { VEX_LEN_TABLE (VEX_LEN_52_P_1) }, 3764 {
3410 { "(bad)",» { XX } }, 3765 { VEX_W_TABLE (VEX_W_0F53_P_0) },
3411 { "(bad)",» { XX } }, 3766 { VEX_LEN_TABLE (VEX_LEN_0F53_P_1) },
3412 }, 3767 },
3413 3768
3414 /* PREFIX_VEX_53 */ 3769 /* PREFIX_VEX_0F58 */
3415 { 3770 {
3416 { "vrcpps",»{ XM, EXx } }, 3771 { VEX_W_TABLE (VEX_W_0F58_P_0) },
3417 { VEX_LEN_TABLE (VEX_LEN_53_P_1) }, 3772 { VEX_LEN_TABLE (VEX_LEN_0F58_P_1) },
3418 { "(bad)",» { XX } }, 3773 { VEX_W_TABLE (VEX_W_0F58_P_2) },
3419 { "(bad)",» { XX } }, 3774 { VEX_LEN_TABLE (VEX_LEN_0F58_P_3) },
3420 }, 3775 },
3421 3776
3422 /* PREFIX_VEX_58 */ 3777 /* PREFIX_VEX_0F59 */
3423 { 3778 {
3424 { "vaddps",»{ XM, Vex, EXx } }, 3779 { VEX_W_TABLE (VEX_W_0F59_P_0) },
3425 { VEX_LEN_TABLE (VEX_LEN_58_P_1) }, 3780 { VEX_LEN_TABLE (VEX_LEN_0F59_P_1) },
3426 { "vaddpd",»{ XM, Vex, EXx } }, 3781 { VEX_W_TABLE (VEX_W_0F59_P_2) },
3427 { VEX_LEN_TABLE (VEX_LEN_58_P_3) }, 3782 { VEX_LEN_TABLE (VEX_LEN_0F59_P_3) },
3428 }, 3783 },
3429 3784
3430 /* PREFIX_VEX_59 */ 3785 /* PREFIX_VEX_0F5A */
3431 { 3786 {
3432 { "vmulps",»{ XM, Vex, EXx } }, 3787 { VEX_W_TABLE (VEX_W_0F5A_P_0) },
3433 { VEX_LEN_TABLE (VEX_LEN_59_P_1) }, 3788 { VEX_LEN_TABLE (VEX_LEN_0F5A_P_1) },
3434 { "vmulpd",»{ XM, Vex, EXx } },
3435 { VEX_LEN_TABLE (VEX_LEN_59_P_3) },
3436 },
3437
3438 /* PREFIX_VEX_5A */
3439 {
3440 { "vcvtps2pd", { XM, EXxmmq } },
3441 { VEX_LEN_TABLE (VEX_LEN_5A_P_1) },
3442 { "vcvtpd2ps%XY", { XMM, EXx } }, 3789 { "vcvtpd2ps%XY", { XMM, EXx } },
3443 { VEX_LEN_TABLE (VEX_LEN_5A_P_3) }, 3790 { VEX_LEN_TABLE (VEX_LEN_0F5A_P_3) },
3444 }, 3791 },
3445 3792
3446 /* PREFIX_VEX_5B */ 3793 /* PREFIX_VEX_0F5B */
3447 { 3794 {
3448 { "vcvtdq2ps", { XM, EXx } }, 3795 { VEX_W_TABLE (VEX_W_0F5B_P_0) },
3449 { "vcvttps2dq", { XM, EXx } }, 3796 { VEX_W_TABLE (VEX_W_0F5B_P_1) },
3450 { "vcvtps2dq", { XM, EXx } }, 3797 { VEX_W_TABLE (VEX_W_0F5B_P_2) },
3451 { "(bad)", { XX } }, 3798 },
3452 }, 3799
3453 3800 /* PREFIX_VEX_0F5C */
3454 /* PREFIX_VEX_5C */ 3801 {
3455 { 3802 { VEX_W_TABLE (VEX_W_0F5C_P_0) },
3456 { "vsubps", { XM, Vex, EXx } }, 3803 { VEX_LEN_TABLE (VEX_LEN_0F5C_P_1) },
3457 { VEX_LEN_TABLE (VEX_LEN_5C_P_1) }, 3804 { VEX_W_TABLE (VEX_W_0F5C_P_2) },
3458 { "vsubpd", { XM, Vex, EXx } }, 3805 { VEX_LEN_TABLE (VEX_LEN_0F5C_P_3) },
3459 { VEX_LEN_TABLE (VEX_LEN_5C_P_3) }, 3806 },
3460 }, 3807
3461 3808 /* PREFIX_VEX_0F5D */
3462 /* PREFIX_VEX_5D */ 3809 {
3463 { 3810 { VEX_W_TABLE (VEX_W_0F5D_P_0) },
3464 { "vminps", { XM, Vex, EXx } }, 3811 { VEX_LEN_TABLE (VEX_LEN_0F5D_P_1) },
3465 { VEX_LEN_TABLE (VEX_LEN_5D_P_1) }, 3812 { VEX_W_TABLE (VEX_W_0F5D_P_2) },
3466 { "vminpd", { XM, Vex, EXx } }, 3813 { VEX_LEN_TABLE (VEX_LEN_0F5D_P_3) },
3467 { VEX_LEN_TABLE (VEX_LEN_5D_P_3) }, 3814 },
3468 }, 3815
3469 3816 /* PREFIX_VEX_0F5E */
3470 /* PREFIX_VEX_5E */ 3817 {
3471 { 3818 { VEX_W_TABLE (VEX_W_0F5E_P_0) },
3472 { "vdivps", { XM, Vex, EXx } }, 3819 { VEX_LEN_TABLE (VEX_LEN_0F5E_P_1) },
3473 { VEX_LEN_TABLE (VEX_LEN_5E_P_1) }, 3820 { VEX_W_TABLE (VEX_W_0F5E_P_2) },
3474 { "vdivpd", { XM, Vex, EXx } }, 3821 { VEX_LEN_TABLE (VEX_LEN_0F5E_P_3) },
3475 { VEX_LEN_TABLE (VEX_LEN_5E_P_3) }, 3822 },
3476 }, 3823
3477 3824 /* PREFIX_VEX_0F5F */
3478 /* PREFIX_VEX_5F */ 3825 {
3479 { 3826 { VEX_W_TABLE (VEX_W_0F5F_P_0) },
3480 { "vmaxps", { XM, Vex, EXx } }, 3827 { VEX_LEN_TABLE (VEX_LEN_0F5F_P_1) },
3481 { VEX_LEN_TABLE (VEX_LEN_5F_P_1) }, 3828 { VEX_W_TABLE (VEX_W_0F5F_P_2) },
3482 { "vmaxpd", { XM, Vex, EXx } }, 3829 { VEX_LEN_TABLE (VEX_LEN_0F5F_P_3) },
3483 { VEX_LEN_TABLE (VEX_LEN_5F_P_3) }, 3830 },
3484 }, 3831
3485 3832 /* PREFIX_VEX_0F60 */
3486 /* PREFIX_VEX_60 */ 3833 {
3487 { 3834 { Bad_Opcode },
3488 { "(bad)", { XX } }, 3835 { Bad_Opcode },
3489 { "(bad)", { XX } }, 3836 { VEX_W_TABLE (VEX_W_0F60_P_2) },
3490 { VEX_LEN_TABLE (VEX_LEN_60_P_2) }, 3837 },
3491 { "(bad)", { XX } }, 3838
3492 }, 3839 /* PREFIX_VEX_0F61 */
3493 3840 {
3494 /* PREFIX_VEX_61 */ 3841 { Bad_Opcode },
3495 { 3842 { Bad_Opcode },
3496 { "(bad)", { XX } }, 3843 { VEX_W_TABLE (VEX_W_0F61_P_2) },
3497 { "(bad)", { XX } }, 3844 },
3498 { VEX_LEN_TABLE (VEX_LEN_61_P_2) }, 3845
3499 { "(bad)", { XX } }, 3846 /* PREFIX_VEX_0F62 */
3500 }, 3847 {
3501 3848 { Bad_Opcode },
3502 /* PREFIX_VEX_62 */ 3849 { Bad_Opcode },
3503 { 3850 { VEX_W_TABLE (VEX_W_0F62_P_2) },
3504 { "(bad)", { XX } }, 3851 },
3505 { "(bad)", { XX } }, 3852
3506 { VEX_LEN_TABLE (VEX_LEN_62_P_2) }, 3853 /* PREFIX_VEX_0F63 */
3507 { "(bad)", { XX } }, 3854 {
3508 }, 3855 { Bad_Opcode },
3509 3856 { Bad_Opcode },
3510 /* PREFIX_VEX_63 */ 3857 { VEX_W_TABLE (VEX_W_0F63_P_2) },
3511 { 3858 },
3512 { "(bad)", { XX } }, 3859
3513 { "(bad)", { XX } }, 3860 /* PREFIX_VEX_0F64 */
3514 { VEX_LEN_TABLE (VEX_LEN_63_P_2) }, 3861 {
3515 { "(bad)", { XX } }, 3862 { Bad_Opcode },
3516 }, 3863 { Bad_Opcode },
3517 3864 { VEX_W_TABLE (VEX_W_0F64_P_2) },
3518 /* PREFIX_VEX_64 */ 3865 },
3519 { 3866
3520 { "(bad)", { XX } }, 3867 /* PREFIX_VEX_0F65 */
3521 { "(bad)", { XX } }, 3868 {
3522 { VEX_LEN_TABLE (VEX_LEN_64_P_2) }, 3869 { Bad_Opcode },
3523 { "(bad)", { XX } }, 3870 { Bad_Opcode },
3524 }, 3871 { VEX_W_TABLE (VEX_W_0F65_P_2) },
3525 3872 },
3526 /* PREFIX_VEX_65 */ 3873
3527 { 3874 /* PREFIX_VEX_0F66 */
3528 { "(bad)", { XX } }, 3875 {
3529 { "(bad)", { XX } }, 3876 { Bad_Opcode },
3530 { VEX_LEN_TABLE (VEX_LEN_65_P_2) }, 3877 { Bad_Opcode },
3531 { "(bad)", { XX } }, 3878 { VEX_W_TABLE (VEX_W_0F66_P_2) },
3532 }, 3879 },
3533 3880
3534 /* PREFIX_VEX_66 */ 3881 /* PREFIX_VEX_0F67 */
3535 { 3882 {
3536 { "(bad)", { XX } }, 3883 { Bad_Opcode },
3537 { "(bad)", { XX } }, 3884 { Bad_Opcode },
3538 { VEX_LEN_TABLE (VEX_LEN_66_P_2) }, 3885 { VEX_W_TABLE (VEX_W_0F67_P_2) },
3539 { "(bad)", { XX } }, 3886 },
3540 }, 3887
3541 3888 /* PREFIX_VEX_0F68 */
3542 /* PREFIX_VEX_67 */ 3889 {
3543 { 3890 { Bad_Opcode },
3544 { "(bad)", { XX } }, 3891 { Bad_Opcode },
3545 { "(bad)", { XX } }, 3892 { VEX_W_TABLE (VEX_W_0F68_P_2) },
3546 { VEX_LEN_TABLE (VEX_LEN_67_P_2) }, 3893 },
3547 { "(bad)", { XX } }, 3894
3548 }, 3895 /* PREFIX_VEX_0F69 */
3549 3896 {
3550 /* PREFIX_VEX_68 */ 3897 { Bad_Opcode },
3551 { 3898 { Bad_Opcode },
3552 { "(bad)", { XX } }, 3899 { VEX_W_TABLE (VEX_W_0F69_P_2) },
3553 { "(bad)", { XX } }, 3900 },
3554 { VEX_LEN_TABLE (VEX_LEN_68_P_2) }, 3901
3555 { "(bad)", { XX } }, 3902 /* PREFIX_VEX_0F6A */
3556 }, 3903 {
3557 3904 { Bad_Opcode },
3558 /* PREFIX_VEX_69 */ 3905 { Bad_Opcode },
3559 { 3906 { VEX_W_TABLE (VEX_W_0F6A_P_2) },
3560 { "(bad)", { XX } }, 3907 },
3561 { "(bad)", { XX } }, 3908
3562 { VEX_LEN_TABLE (VEX_LEN_69_P_2) }, 3909 /* PREFIX_VEX_0F6B */
3563 { "(bad)", { XX } }, 3910 {
3564 }, 3911 { Bad_Opcode },
3565 3912 { Bad_Opcode },
3566 /* PREFIX_VEX_6A */ 3913 { VEX_W_TABLE (VEX_W_0F6B_P_2) },
3567 { 3914 },
3568 { "(bad)", { XX } }, 3915
3569 { "(bad)", { XX } }, 3916 /* PREFIX_VEX_0F6C */
3570 { VEX_LEN_TABLE (VEX_LEN_6A_P_2) }, 3917 {
3571 { "(bad)", { XX } }, 3918 { Bad_Opcode },
3572 }, 3919 { Bad_Opcode },
3573 3920 { VEX_W_TABLE (VEX_W_0F6C_P_2) },
3574 /* PREFIX_VEX_6B */ 3921 },
3575 { 3922
3576 { "(bad)", { XX } }, 3923 /* PREFIX_VEX_0F6D */
3577 { "(bad)", { XX } }, 3924 {
3578 { VEX_LEN_TABLE (VEX_LEN_6B_P_2) }, 3925 { Bad_Opcode },
3579 { "(bad)", { XX } }, 3926 { Bad_Opcode },
3580 }, 3927 { VEX_W_TABLE (VEX_W_0F6D_P_2) },
3581 3928 },
3582 /* PREFIX_VEX_6C */ 3929
3583 { 3930 /* PREFIX_VEX_0F6E */
3584 { "(bad)", { XX } }, 3931 {
3585 { "(bad)", { XX } }, 3932 { Bad_Opcode },
3586 { VEX_LEN_TABLE (VEX_LEN_6C_P_2) }, 3933 { Bad_Opcode },
3587 { "(bad)", { XX } }, 3934 { VEX_LEN_TABLE (VEX_LEN_0F6E_P_2) },
3588 }, 3935 },
3589 3936
3590 /* PREFIX_VEX_6D */ 3937 /* PREFIX_VEX_0F6F */
3591 { 3938 {
3592 { "(bad)", { XX } }, 3939 { Bad_Opcode },
3593 { "(bad)", { XX } }, 3940 { VEX_W_TABLE (VEX_W_0F6F_P_1) },
3594 { VEX_LEN_TABLE (VEX_LEN_6D_P_2) }, 3941 { VEX_W_TABLE (VEX_W_0F6F_P_2) },
3595 { "(bad)", { XX } }, 3942 },
3596 }, 3943
3597 3944 /* PREFIX_VEX_0F70 */
3598 /* PREFIX_VEX_6E */ 3945 {
3599 { 3946 { Bad_Opcode },
3600 { "(bad)", { XX } }, 3947 { VEX_W_TABLE (VEX_W_0F70_P_1) },
3601 { "(bad)", { XX } }, 3948 { VEX_W_TABLE (VEX_W_0F70_P_2) },
3602 { VEX_LEN_TABLE (VEX_LEN_6E_P_2) }, 3949 { VEX_W_TABLE (VEX_W_0F70_P_3) },
3603 { "(bad)", { XX } }, 3950 },
3604 }, 3951
3605 3952 /* PREFIX_VEX_0F71_REG_2 */
3606 /* PREFIX_VEX_6F */ 3953 {
3607 { 3954 { Bad_Opcode },
3608 { "(bad)", { XX } }, 3955 { Bad_Opcode },
3609 { "vmovdqu", { XM, EXx } }, 3956 { VEX_W_TABLE (VEX_W_0F71_R_2_P_2) },
3610 { "vmovdqa", { XM, EXx } }, 3957 },
3611 { "(bad)", { XX } }, 3958
3612 }, 3959 /* PREFIX_VEX_0F71_REG_4 */
3613 3960 {
3614 /* PREFIX_VEX_70 */ 3961 { Bad_Opcode },
3615 { 3962 { Bad_Opcode },
3616 { "(bad)", { XX } }, 3963 { VEX_W_TABLE (VEX_W_0F71_R_4_P_2) },
3617 { VEX_LEN_TABLE (VEX_LEN_70_P_1) }, 3964 },
3618 { VEX_LEN_TABLE (VEX_LEN_70_P_2) }, 3965
3619 { VEX_LEN_TABLE (VEX_LEN_70_P_3) }, 3966 /* PREFIX_VEX_0F71_REG_6 */
3620 }, 3967 {
3621 3968 { Bad_Opcode },
3622 /* PREFIX_VEX_71_REG_2 */ 3969 { Bad_Opcode },
3623 { 3970 { VEX_W_TABLE (VEX_W_0F71_R_6_P_2) },
3624 { "(bad)", { XX } }, 3971 },
3625 { "(bad)", { XX } }, 3972
3626 { VEX_LEN_TABLE (VEX_LEN_71_R_2_P_2) }, 3973 /* PREFIX_VEX_0F72_REG_2 */
3627 { "(bad)", { XX } }, 3974 {
3628 }, 3975 { Bad_Opcode },
3629 3976 { Bad_Opcode },
3630 /* PREFIX_VEX_71_REG_4 */ 3977 { VEX_W_TABLE (VEX_W_0F72_R_2_P_2) },
3631 { 3978 },
3632 { "(bad)", { XX } }, 3979
3633 { "(bad)", { XX } }, 3980 /* PREFIX_VEX_0F72_REG_4 */
3634 { VEX_LEN_TABLE (VEX_LEN_71_R_4_P_2) }, 3981 {
3635 { "(bad)", { XX } }, 3982 { Bad_Opcode },
3636 }, 3983 { Bad_Opcode },
3637 3984 { VEX_W_TABLE (VEX_W_0F72_R_4_P_2) },
3638 /* PREFIX_VEX_71_REG_6 */ 3985 },
3639 { 3986
3640 { "(bad)", { XX } }, 3987 /* PREFIX_VEX_0F72_REG_6 */
3641 { "(bad)", { XX } }, 3988 {
3642 { VEX_LEN_TABLE (VEX_LEN_71_R_6_P_2) }, 3989 { Bad_Opcode },
3643 { "(bad)", { XX } }, 3990 { Bad_Opcode },
3644 }, 3991 { VEX_W_TABLE (VEX_W_0F72_R_6_P_2) },
3645 3992 },
3646 /* PREFIX_VEX_72_REG_2 */ 3993
3647 { 3994 /* PREFIX_VEX_0F73_REG_2 */
3648 { "(bad)", { XX } }, 3995 {
3649 { "(bad)", { XX } }, 3996 { Bad_Opcode },
3650 { VEX_LEN_TABLE (VEX_LEN_72_R_2_P_2) }, 3997 { Bad_Opcode },
3651 { "(bad)", { XX } }, 3998 { VEX_W_TABLE (VEX_W_0F73_R_2_P_2) },
3652 }, 3999 },
3653 4000
3654 /* PREFIX_VEX_72_REG_4 */ 4001 /* PREFIX_VEX_0F73_REG_3 */
3655 { 4002 {
3656 { "(bad)", { XX } }, 4003 { Bad_Opcode },
3657 { "(bad)", { XX } }, 4004 { Bad_Opcode },
3658 { VEX_LEN_TABLE (VEX_LEN_72_R_4_P_2) }, 4005 { VEX_W_TABLE (VEX_W_0F73_R_3_P_2) },
3659 { "(bad)", { XX } }, 4006 },
3660 }, 4007
3661 4008 /* PREFIX_VEX_0F73_REG_6 */
3662 /* PREFIX_VEX_72_REG_6 */ 4009 {
3663 { 4010 { Bad_Opcode },
3664 { "(bad)", { XX } }, 4011 { Bad_Opcode },
3665 { "(bad)", { XX } }, 4012 { VEX_W_TABLE (VEX_W_0F73_R_6_P_2) },
3666 { VEX_LEN_TABLE (VEX_LEN_72_R_6_P_2) }, 4013 },
3667 { "(bad)", { XX } }, 4014
3668 }, 4015 /* PREFIX_VEX_0F73_REG_7 */
3669 4016 {
3670 /* PREFIX_VEX_73_REG_2 */ 4017 { Bad_Opcode },
3671 { 4018 { Bad_Opcode },
3672 { "(bad)", { XX } }, 4019 { VEX_W_TABLE (VEX_W_0F73_R_7_P_2) },
3673 { "(bad)", { XX } }, 4020 },
3674 { VEX_LEN_TABLE (VEX_LEN_73_R_2_P_2) }, 4021
3675 { "(bad)", { XX } }, 4022 /* PREFIX_VEX_0F74 */
3676 }, 4023 {
3677 4024 { Bad_Opcode },
3678 /* PREFIX_VEX_73_REG_3 */ 4025 { Bad_Opcode },
3679 { 4026 { VEX_W_TABLE (VEX_W_0F74_P_2) },
3680 { "(bad)", { XX } }, 4027 },
3681 { "(bad)", { XX } }, 4028
3682 { VEX_LEN_TABLE (VEX_LEN_73_R_3_P_2) }, 4029 /* PREFIX_VEX_0F75 */
3683 { "(bad)", { XX } }, 4030 {
3684 }, 4031 { Bad_Opcode },
3685 4032 { Bad_Opcode },
3686 /* PREFIX_VEX_73_REG_6 */ 4033 { VEX_W_TABLE (VEX_W_0F75_P_2) },
3687 { 4034 },
3688 { "(bad)", { XX } }, 4035
3689 { "(bad)", { XX } }, 4036 /* PREFIX_VEX_0F76 */
3690 { VEX_LEN_TABLE (VEX_LEN_73_R_6_P_2) }, 4037 {
3691 { "(bad)", { XX } }, 4038 { Bad_Opcode },
3692 }, 4039 { Bad_Opcode },
3693 4040 { VEX_W_TABLE (VEX_W_0F76_P_2) },
3694 /* PREFIX_VEX_73_REG_7 */ 4041 },
3695 { 4042
3696 { "(bad)", { XX } }, 4043 /* PREFIX_VEX_0F77 */
3697 { "(bad)", { XX } }, 4044 {
3698 { VEX_LEN_TABLE (VEX_LEN_73_R_7_P_2) }, 4045 { VEX_W_TABLE (VEX_W_0F77_P_0) },
3699 { "(bad)", { XX } }, 4046 },
3700 }, 4047
3701 4048 /* PREFIX_VEX_0F7C */
3702 /* PREFIX_VEX_74 */ 4049 {
3703 { 4050 { Bad_Opcode },
3704 { "(bad)", { XX } }, 4051 { Bad_Opcode },
3705 { "(bad)", { XX } }, 4052 { VEX_W_TABLE (VEX_W_0F7C_P_2) },
3706 { VEX_LEN_TABLE (VEX_LEN_74_P_2) }, 4053 { VEX_W_TABLE (VEX_W_0F7C_P_3) },
3707 { "(bad)", { XX } }, 4054 },
3708 }, 4055
3709 4056 /* PREFIX_VEX_0F7D */
3710 /* PREFIX_VEX_75 */ 4057 {
3711 { 4058 { Bad_Opcode },
3712 { "(bad)", { XX } }, 4059 { Bad_Opcode },
3713 { "(bad)", { XX } }, 4060 { VEX_W_TABLE (VEX_W_0F7D_P_2) },
3714 { VEX_LEN_TABLE (VEX_LEN_75_P_2) }, 4061 { VEX_W_TABLE (VEX_W_0F7D_P_3) },
3715 { "(bad)", { XX } }, 4062 },
3716 }, 4063
3717 4064 /* PREFIX_VEX_0F7E */
3718 /* PREFIX_VEX_76 */ 4065 {
3719 { 4066 { Bad_Opcode },
3720 { "(bad)", { XX } }, 4067 { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) },
3721 { "(bad)", { XX } }, 4068 { VEX_LEN_TABLE (VEX_LEN_0F7E_P_2) },
3722 { VEX_LEN_TABLE (VEX_LEN_76_P_2) }, 4069 },
3723 { "(bad)", { XX } }, 4070
3724 }, 4071 /* PREFIX_VEX_0F7F */
3725 4072 {
3726 /* PREFIX_VEX_77 */ 4073 { Bad_Opcode },
3727 { 4074 { VEX_W_TABLE (VEX_W_0F7F_P_1) },
3728 { "", { VZERO } }, 4075 { VEX_W_TABLE (VEX_W_0F7F_P_2) },
3729 { "(bad)", { XX } }, 4076 },
3730 { "(bad)", { XX } }, 4077
3731 { "(bad)", { XX } }, 4078 /* PREFIX_VEX_0FC2 */
3732 }, 4079 {
3733 4080 { VEX_W_TABLE (VEX_W_0FC2_P_0) },
3734 /* PREFIX_VEX_7C */ 4081 { VEX_LEN_TABLE (VEX_LEN_0FC2_P_1) },
3735 { 4082 { VEX_W_TABLE (VEX_W_0FC2_P_2) },
3736 { "(bad)", { XX } }, 4083 { VEX_LEN_TABLE (VEX_LEN_0FC2_P_3) },
3737 { "(bad)", { XX } }, 4084 },
3738 { "vhaddpd", { XM, Vex, EXx } }, 4085
3739 { "vhaddps", { XM, Vex, EXx } }, 4086 /* PREFIX_VEX_0FC4 */
3740 }, 4087 {
3741 4088 { Bad_Opcode },
3742 /* PREFIX_VEX_7D */ 4089 { Bad_Opcode },
3743 { 4090 { VEX_LEN_TABLE (VEX_LEN_0FC4_P_2) },
3744 { "(bad)", { XX } }, 4091 },
3745 { "(bad)", { XX } }, 4092
3746 { "vhsubpd", { XM, Vex, EXx } }, 4093 /* PREFIX_VEX_0FC5 */
3747 { "vhsubps", { XM, Vex, EXx } }, 4094 {
3748 }, 4095 { Bad_Opcode },
3749 4096 { Bad_Opcode },
3750 /* PREFIX_VEX_7E */ 4097 { VEX_LEN_TABLE (VEX_LEN_0FC5_P_2) },
3751 { 4098 },
3752 { "(bad)", { XX } }, 4099
3753 { VEX_LEN_TABLE (VEX_LEN_7E_P_1) }, 4100 /* PREFIX_VEX_0FD0 */
3754 { VEX_LEN_TABLE (VEX_LEN_7E_P_2) }, 4101 {
3755 { "(bad)", { XX } }, 4102 { Bad_Opcode },
3756 }, 4103 { Bad_Opcode },
3757 4104 { VEX_W_TABLE (VEX_W_0FD0_P_2) },
3758 /* PREFIX_VEX_7F */ 4105 { VEX_W_TABLE (VEX_W_0FD0_P_3) },
3759 { 4106 },
3760 { "(bad)", { XX } }, 4107
3761 { "vmovdqu", { EXxS, XM } }, 4108 /* PREFIX_VEX_0FD1 */
3762 { "vmovdqa", { EXxS, XM } }, 4109 {
3763 { "(bad)", { XX } }, 4110 { Bad_Opcode },
3764 }, 4111 { Bad_Opcode },
3765 4112 { VEX_W_TABLE (VEX_W_0FD1_P_2) },
3766 /* PREFIX_VEX_C2 */ 4113 },
3767 { 4114
3768 { "vcmpps", { XM, Vex, EXx, VCMP } }, 4115 /* PREFIX_VEX_0FD2 */
3769 { VEX_LEN_TABLE (VEX_LEN_C2_P_1) }, 4116 {
3770 { "vcmppd", { XM, Vex, EXx, VCMP } }, 4117 { Bad_Opcode },
3771 { VEX_LEN_TABLE (VEX_LEN_C2_P_3) }, 4118 { Bad_Opcode },
3772 }, 4119 { VEX_W_TABLE (VEX_W_0FD2_P_2) },
3773 4120 },
3774 /* PREFIX_VEX_C4 */ 4121
3775 { 4122 /* PREFIX_VEX_0FD3 */
3776 { "(bad)", { XX } }, 4123 {
3777 { "(bad)", { XX } }, 4124 { Bad_Opcode },
3778 { VEX_LEN_TABLE (VEX_LEN_C4_P_2) }, 4125 { Bad_Opcode },
3779 { "(bad)", { XX } }, 4126 { VEX_W_TABLE (VEX_W_0FD3_P_2) },
3780 }, 4127 },
3781 4128
3782 /* PREFIX_VEX_C5 */ 4129 /* PREFIX_VEX_0FD4 */
3783 { 4130 {
3784 { "(bad)", { XX } }, 4131 { Bad_Opcode },
3785 { "(bad)", { XX } }, 4132 { Bad_Opcode },
3786 { VEX_LEN_TABLE (VEX_LEN_C5_P_2) }, 4133 { VEX_W_TABLE (VEX_W_0FD4_P_2) },
3787 { "(bad)", { XX } }, 4134 },
3788 }, 4135
3789 4136 /* PREFIX_VEX_0FD5 */
3790 /* PREFIX_VEX_D0 */ 4137 {
3791 { 4138 { Bad_Opcode },
3792 { "(bad)", { XX } }, 4139 { Bad_Opcode },
3793 { "(bad)", { XX } }, 4140 { VEX_W_TABLE (VEX_W_0FD5_P_2) },
3794 { "vaddsubpd", { XM, Vex, EXx } }, 4141 },
3795 { "vaddsubps", { XM, Vex, EXx } }, 4142
3796 }, 4143 /* PREFIX_VEX_0FD6 */
3797 4144 {
3798 /* PREFIX_VEX_D1 */ 4145 { Bad_Opcode },
3799 { 4146 { Bad_Opcode },
3800 { "(bad)", { XX } }, 4147 { VEX_LEN_TABLE (VEX_LEN_0FD6_P_2) },
3801 { "(bad)", { XX } }, 4148 },
3802 { VEX_LEN_TABLE (VEX_LEN_D1_P_2) }, 4149
3803 { "(bad)", { XX } }, 4150 /* PREFIX_VEX_0FD7 */
3804 }, 4151 {
3805 4152 { Bad_Opcode },
3806 /* PREFIX_VEX_D2 */ 4153 { Bad_Opcode },
3807 { 4154 { MOD_TABLE (MOD_VEX_0FD7_PREFIX_2) },
3808 { "(bad)", { XX } }, 4155 },
3809 { "(bad)", { XX } }, 4156
3810 { VEX_LEN_TABLE (VEX_LEN_D2_P_2) }, 4157 /* PREFIX_VEX_0FD8 */
3811 { "(bad)", { XX } }, 4158 {
3812 }, 4159 { Bad_Opcode },
3813 4160 { Bad_Opcode },
3814 /* PREFIX_VEX_D3 */ 4161 { VEX_W_TABLE (VEX_W_0FD8_P_2) },
3815 { 4162 },
3816 { "(bad)", { XX } }, 4163
3817 { "(bad)", { XX } }, 4164 /* PREFIX_VEX_0FD9 */
3818 { VEX_LEN_TABLE (VEX_LEN_D3_P_2) }, 4165 {
3819 { "(bad)", { XX } }, 4166 { Bad_Opcode },
3820 }, 4167 { Bad_Opcode },
3821 4168 { VEX_W_TABLE (VEX_W_0FD9_P_2) },
3822 /* PREFIX_VEX_D4 */ 4169 },
3823 { 4170
3824 { "(bad)", { XX } }, 4171 /* PREFIX_VEX_0FDA */
3825 { "(bad)", { XX } }, 4172 {
3826 { VEX_LEN_TABLE (VEX_LEN_D4_P_2) }, 4173 { Bad_Opcode },
3827 { "(bad)", { XX } }, 4174 { Bad_Opcode },
3828 }, 4175 { VEX_W_TABLE (VEX_W_0FDA_P_2) },
3829 4176 },
3830 /* PREFIX_VEX_D5 */ 4177
3831 { 4178 /* PREFIX_VEX_0FDB */
3832 { "(bad)", { XX } }, 4179 {
3833 { "(bad)", { XX } }, 4180 { Bad_Opcode },
3834 { VEX_LEN_TABLE (VEX_LEN_D5_P_2) }, 4181 { Bad_Opcode },
3835 { "(bad)", { XX } }, 4182 { VEX_W_TABLE (VEX_W_0FDB_P_2) },
3836 }, 4183 },
3837 4184
3838 /* PREFIX_VEX_D6 */ 4185 /* PREFIX_VEX_0FDC */
3839 { 4186 {
3840 { "(bad)", { XX } }, 4187 { Bad_Opcode },
3841 { "(bad)", { XX } }, 4188 { Bad_Opcode },
3842 { VEX_LEN_TABLE (VEX_LEN_D6_P_2) }, 4189 { VEX_W_TABLE (VEX_W_0FDC_P_2) },
3843 { "(bad)", { XX } }, 4190 },
3844 }, 4191
3845 4192 /* PREFIX_VEX_0FDD */
3846 /* PREFIX_VEX_D7 */ 4193 {
3847 { 4194 { Bad_Opcode },
3848 { "(bad)", { XX } }, 4195 { Bad_Opcode },
3849 { "(bad)", { XX } }, 4196 { VEX_W_TABLE (VEX_W_0FDD_P_2) },
3850 { MOD_TABLE (MOD_VEX_D7_PREFIX_2) }, 4197 },
3851 { "(bad)", { XX } }, 4198
3852 }, 4199 /* PREFIX_VEX_0FDE */
3853 4200 {
3854 /* PREFIX_VEX_D8 */ 4201 { Bad_Opcode },
3855 { 4202 { Bad_Opcode },
3856 { "(bad)", { XX } }, 4203 { VEX_W_TABLE (VEX_W_0FDE_P_2) },
3857 { "(bad)", { XX } }, 4204 },
3858 { VEX_LEN_TABLE (VEX_LEN_D8_P_2) }, 4205
3859 { "(bad)", { XX } }, 4206 /* PREFIX_VEX_0FDF */
3860 }, 4207 {
3861 4208 { Bad_Opcode },
3862 /* PREFIX_VEX_D9 */ 4209 { Bad_Opcode },
3863 { 4210 { VEX_W_TABLE (VEX_W_0FDF_P_2) },
3864 { "(bad)", { XX } }, 4211 },
3865 { "(bad)", { XX } }, 4212
3866 { VEX_LEN_TABLE (VEX_LEN_D9_P_2) }, 4213 /* PREFIX_VEX_0FE0 */
3867 { "(bad)", { XX } }, 4214 {
3868 }, 4215 { Bad_Opcode },
3869 4216 { Bad_Opcode },
3870 /* PREFIX_VEX_DA */ 4217 { VEX_W_TABLE (VEX_W_0FE0_P_2) },
3871 { 4218 },
3872 { "(bad)", { XX } }, 4219
3873 { "(bad)", { XX } }, 4220 /* PREFIX_VEX_0FE1 */
3874 { VEX_LEN_TABLE (VEX_LEN_DA_P_2) }, 4221 {
3875 { "(bad)", { XX } }, 4222 { Bad_Opcode },
3876 }, 4223 { Bad_Opcode },
3877 4224 { VEX_W_TABLE (VEX_W_0FE1_P_2) },
3878 /* PREFIX_VEX_DB */ 4225 },
3879 { 4226
3880 { "(bad)", { XX } }, 4227 /* PREFIX_VEX_0FE2 */
3881 { "(bad)", { XX } }, 4228 {
3882 { VEX_LEN_TABLE (VEX_LEN_DB_P_2) }, 4229 { Bad_Opcode },
3883 { "(bad)", { XX } }, 4230 { Bad_Opcode },
3884 }, 4231 { VEX_W_TABLE (VEX_W_0FE2_P_2) },
3885 4232 },
3886 /* PREFIX_VEX_DC */ 4233
3887 { 4234 /* PREFIX_VEX_0FE3 */
3888 { "(bad)", { XX } }, 4235 {
3889 { "(bad)", { XX } }, 4236 { Bad_Opcode },
3890 { VEX_LEN_TABLE (VEX_LEN_DC_P_2) }, 4237 { Bad_Opcode },
3891 { "(bad)", { XX } }, 4238 { VEX_W_TABLE (VEX_W_0FE3_P_2) },
3892 }, 4239 },
3893 4240
3894 /* PREFIX_VEX_DD */ 4241 /* PREFIX_VEX_0FE4 */
3895 { 4242 {
3896 { "(bad)", { XX } }, 4243 { Bad_Opcode },
3897 { "(bad)", { XX } }, 4244 { Bad_Opcode },
3898 { VEX_LEN_TABLE (VEX_LEN_DD_P_2) }, 4245 { VEX_W_TABLE (VEX_W_0FE4_P_2) },
3899 { "(bad)", { XX } }, 4246 },
3900 }, 4247
3901 4248 /* PREFIX_VEX_0FE5 */
3902 /* PREFIX_VEX_DE */ 4249 {
3903 { 4250 { Bad_Opcode },
3904 { "(bad)", { XX } }, 4251 { Bad_Opcode },
3905 { "(bad)", { XX } }, 4252 { VEX_W_TABLE (VEX_W_0FE5_P_2) },
3906 { VEX_LEN_TABLE (VEX_LEN_DE_P_2) }, 4253 },
3907 { "(bad)", { XX } }, 4254
3908 }, 4255 /* PREFIX_VEX_0FE6 */
3909 4256 {
3910 /* PREFIX_VEX_DF */ 4257 { Bad_Opcode },
3911 { 4258 { VEX_W_TABLE (VEX_W_0FE6_P_1) },
3912 { "(bad)", { XX } }, 4259 { VEX_W_TABLE (VEX_W_0FE6_P_2) },
3913 { "(bad)", { XX } }, 4260 { VEX_W_TABLE (VEX_W_0FE6_P_3) },
3914 { VEX_LEN_TABLE (VEX_LEN_DF_P_2) }, 4261 },
3915 { "(bad)", { XX } }, 4262
3916 }, 4263 /* PREFIX_VEX_0FE7 */
3917 4264 {
3918 /* PREFIX_VEX_E0 */ 4265 { Bad_Opcode },
3919 { 4266 { Bad_Opcode },
3920 { "(bad)", { XX } }, 4267 { MOD_TABLE (MOD_VEX_0FE7_PREFIX_2) },
3921 { "(bad)", { XX } }, 4268 },
3922 { VEX_LEN_TABLE (VEX_LEN_E0_P_2) }, 4269
3923 { "(bad)", { XX } }, 4270 /* PREFIX_VEX_0FE8 */
3924 }, 4271 {
3925 4272 { Bad_Opcode },
3926 /* PREFIX_VEX_E1 */ 4273 { Bad_Opcode },
3927 { 4274 { VEX_W_TABLE (VEX_W_0FE8_P_2) },
3928 { "(bad)", { XX } }, 4275 },
3929 { "(bad)", { XX } }, 4276
3930 { VEX_LEN_TABLE (VEX_LEN_E1_P_2) }, 4277 /* PREFIX_VEX_0FE9 */
3931 { "(bad)", { XX } }, 4278 {
3932 }, 4279 { Bad_Opcode },
3933 4280 { Bad_Opcode },
3934 /* PREFIX_VEX_E2 */ 4281 { VEX_W_TABLE (VEX_W_0FE9_P_2) },
3935 { 4282 },
3936 { "(bad)", { XX } }, 4283
3937 { "(bad)", { XX } }, 4284 /* PREFIX_VEX_0FEA */
3938 { VEX_LEN_TABLE (VEX_LEN_E2_P_2) }, 4285 {
3939 { "(bad)", { XX } }, 4286 { Bad_Opcode },
3940 }, 4287 { Bad_Opcode },
3941 4288 { VEX_W_TABLE (VEX_W_0FEA_P_2) },
3942 /* PREFIX_VEX_E3 */ 4289 },
3943 { 4290
3944 { "(bad)", { XX } }, 4291 /* PREFIX_VEX_0FEB */
3945 { "(bad)", { XX } }, 4292 {
3946 { VEX_LEN_TABLE (VEX_LEN_E3_P_2) }, 4293 { Bad_Opcode },
3947 { "(bad)", { XX } }, 4294 { Bad_Opcode },
3948 }, 4295 { VEX_W_TABLE (VEX_W_0FEB_P_2) },
3949 4296 },
3950 /* PREFIX_VEX_E4 */ 4297
3951 { 4298 /* PREFIX_VEX_0FEC */
3952 { "(bad)", { XX } }, 4299 {
3953 { "(bad)", { XX } }, 4300 { Bad_Opcode },
3954 { VEX_LEN_TABLE (VEX_LEN_E4_P_2) }, 4301 { Bad_Opcode },
3955 { "(bad)", { XX } }, 4302 { VEX_W_TABLE (VEX_W_0FEC_P_2) },
3956 }, 4303 },
3957 4304
3958 /* PREFIX_VEX_E5 */ 4305 /* PREFIX_VEX_0FED */
3959 { 4306 {
3960 { "(bad)", { XX } }, 4307 { Bad_Opcode },
3961 { "(bad)", { XX } }, 4308 { Bad_Opcode },
3962 { VEX_LEN_TABLE (VEX_LEN_E5_P_2) }, 4309 { VEX_W_TABLE (VEX_W_0FED_P_2) },
3963 { "(bad)", { XX } }, 4310 },
3964 }, 4311
3965 4312 /* PREFIX_VEX_0FEE */
3966 /* PREFIX_VEX_E6 */ 4313 {
3967 { 4314 { Bad_Opcode },
3968 { "(bad)", { XX } }, 4315 { Bad_Opcode },
3969 { "vcvtdq2pd", { XM, EXxmmq } }, 4316 { VEX_W_TABLE (VEX_W_0FEE_P_2) },
3970 { "vcvttpd2dq%XY", { XMM, EXx } }, 4317 },
3971 { "vcvtpd2dq%XY", { XMM, EXx } }, 4318
3972 }, 4319 /* PREFIX_VEX_0FEF */
3973 4320 {
3974 /* PREFIX_VEX_E7 */ 4321 { Bad_Opcode },
3975 { 4322 { Bad_Opcode },
3976 { "(bad)", { XX } }, 4323 { VEX_W_TABLE (VEX_W_0FEF_P_2) },
3977 { "(bad)", { XX } }, 4324 },
3978 { MOD_TABLE (MOD_VEX_E7_PREFIX_2) }, 4325
3979 { "(bad)", { XX } }, 4326 /* PREFIX_VEX_0FF0 */
3980 }, 4327 {
3981 4328 { Bad_Opcode },
3982 /* PREFIX_VEX_E8 */ 4329 { Bad_Opcode },
3983 { 4330 { Bad_Opcode },
3984 { "(bad)", { XX } }, 4331 { MOD_TABLE (MOD_VEX_0FF0_PREFIX_3) },
3985 { "(bad)", { XX } }, 4332 },
3986 { VEX_LEN_TABLE (VEX_LEN_E8_P_2) }, 4333
3987 { "(bad)", { XX } }, 4334 /* PREFIX_VEX_0FF1 */
3988 }, 4335 {
3989 4336 { Bad_Opcode },
3990 /* PREFIX_VEX_E9 */ 4337 { Bad_Opcode },
3991 { 4338 { VEX_W_TABLE (VEX_W_0FF1_P_2) },
3992 { "(bad)", { XX } }, 4339 },
3993 { "(bad)", { XX } }, 4340
3994 { VEX_LEN_TABLE (VEX_LEN_E9_P_2) }, 4341 /* PREFIX_VEX_0FF2 */
3995 { "(bad)", { XX } }, 4342 {
3996 }, 4343 { Bad_Opcode },
3997 4344 { Bad_Opcode },
3998 /* PREFIX_VEX_EA */ 4345 { VEX_W_TABLE (VEX_W_0FF2_P_2) },
3999 { 4346 },
4000 { "(bad)", { XX } }, 4347
4001 { "(bad)", { XX } }, 4348 /* PREFIX_VEX_0FF3 */
4002 { VEX_LEN_TABLE (VEX_LEN_EA_P_2) }, 4349 {
4003 { "(bad)", { XX } }, 4350 { Bad_Opcode },
4004 }, 4351 { Bad_Opcode },
4005 4352 { VEX_W_TABLE (VEX_W_0FF3_P_2) },
4006 /* PREFIX_VEX_EB */ 4353 },
4007 { 4354
4008 { "(bad)", { XX } }, 4355 /* PREFIX_VEX_0FF4 */
4009 { "(bad)", { XX } }, 4356 {
4010 { VEX_LEN_TABLE (VEX_LEN_EB_P_2) }, 4357 { Bad_Opcode },
4011 { "(bad)", { XX } }, 4358 { Bad_Opcode },
4012 }, 4359 { VEX_W_TABLE (VEX_W_0FF4_P_2) },
4013 4360 },
4014 /* PREFIX_VEX_EC */ 4361
4015 { 4362 /* PREFIX_VEX_0FF5 */
4016 { "(bad)", { XX } }, 4363 {
4017 { "(bad)", { XX } }, 4364 { Bad_Opcode },
4018 { VEX_LEN_TABLE (VEX_LEN_EC_P_2) }, 4365 { Bad_Opcode },
4019 { "(bad)", { XX } }, 4366 { VEX_W_TABLE (VEX_W_0FF5_P_2) },
4020 }, 4367 },
4021 4368
4022 /* PREFIX_VEX_ED */ 4369 /* PREFIX_VEX_0FF6 */
4023 { 4370 {
4024 { "(bad)", { XX } }, 4371 { Bad_Opcode },
4025 { "(bad)", { XX } }, 4372 { Bad_Opcode },
4026 { VEX_LEN_TABLE (VEX_LEN_ED_P_2) }, 4373 { VEX_W_TABLE (VEX_W_0FF6_P_2) },
4027 { "(bad)", { XX } }, 4374 },
4028 }, 4375
4029 4376 /* PREFIX_VEX_0FF7 */
4030 /* PREFIX_VEX_EE */ 4377 {
4031 { 4378 { Bad_Opcode },
4032 { "(bad)", { XX } }, 4379 { Bad_Opcode },
4033 { "(bad)", { XX } }, 4380 { VEX_LEN_TABLE (VEX_LEN_0FF7_P_2) },
4034 { VEX_LEN_TABLE (VEX_LEN_EE_P_2) }, 4381 },
4035 { "(bad)", { XX } }, 4382
4036 }, 4383 /* PREFIX_VEX_0FF8 */
4037 4384 {
4038 /* PREFIX_VEX_EF */ 4385 { Bad_Opcode },
4039 { 4386 { Bad_Opcode },
4040 { "(bad)", { XX } }, 4387 { VEX_W_TABLE (VEX_W_0FF8_P_2) },
4041 { "(bad)", { XX } }, 4388 },
4042 { VEX_LEN_TABLE (VEX_LEN_EF_P_2) }, 4389
4043 { "(bad)", { XX } }, 4390 /* PREFIX_VEX_0FF9 */
4044 }, 4391 {
4045 4392 { Bad_Opcode },
4046 /* PREFIX_VEX_F0 */ 4393 { Bad_Opcode },
4047 { 4394 { VEX_W_TABLE (VEX_W_0FF9_P_2) },
4048 { "(bad)", { XX } }, 4395 },
4049 { "(bad)", { XX } }, 4396
4050 { "(bad)", { XX } }, 4397 /* PREFIX_VEX_0FFA */
4051 { MOD_TABLE (MOD_VEX_F0_PREFIX_3) }, 4398 {
4052 }, 4399 { Bad_Opcode },
4053 4400 { Bad_Opcode },
4054 /* PREFIX_VEX_F1 */ 4401 { VEX_W_TABLE (VEX_W_0FFA_P_2) },
4055 { 4402 },
4056 { "(bad)", { XX } }, 4403
4057 { "(bad)", { XX } }, 4404 /* PREFIX_VEX_0FFB */
4058 { VEX_LEN_TABLE (VEX_LEN_F1_P_2) }, 4405 {
4059 { "(bad)", { XX } }, 4406 { Bad_Opcode },
4060 }, 4407 { Bad_Opcode },
4061 4408 { VEX_W_TABLE (VEX_W_0FFB_P_2) },
4062 /* PREFIX_VEX_F2 */ 4409 },
4063 { 4410
4064 { "(bad)", { XX } }, 4411 /* PREFIX_VEX_0FFC */
4065 { "(bad)", { XX } }, 4412 {
4066 { VEX_LEN_TABLE (VEX_LEN_F2_P_2) }, 4413 { Bad_Opcode },
4067 { "(bad)", { XX } }, 4414 { Bad_Opcode },
4068 }, 4415 { VEX_W_TABLE (VEX_W_0FFC_P_2) },
4069 4416 },
4070 /* PREFIX_VEX_F3 */ 4417
4071 { 4418 /* PREFIX_VEX_0FFD */
4072 { "(bad)", { XX } }, 4419 {
4073 { "(bad)", { XX } }, 4420 { Bad_Opcode },
4074 { VEX_LEN_TABLE (VEX_LEN_F3_P_2) }, 4421 { Bad_Opcode },
4075 { "(bad)", { XX } }, 4422 { VEX_W_TABLE (VEX_W_0FFD_P_2) },
4076 }, 4423 },
4077 4424
4078 /* PREFIX_VEX_F4 */ 4425 /* PREFIX_VEX_0FFE */
4079 { 4426 {
4080 { "(bad)", { XX } }, 4427 { Bad_Opcode },
4081 { "(bad)", { XX } }, 4428 { Bad_Opcode },
4082 { VEX_LEN_TABLE (VEX_LEN_F4_P_2) }, 4429 { VEX_W_TABLE (VEX_W_0FFE_P_2) },
4083 { "(bad)", { XX } }, 4430 },
4084 }, 4431
4085 4432 /* PREFIX_VEX_0F3800 */
4086 /* PREFIX_VEX_F5 */ 4433 {
4087 { 4434 { Bad_Opcode },
4088 { "(bad)", { XX } }, 4435 { Bad_Opcode },
4089 { "(bad)", { XX } }, 4436 { VEX_W_TABLE (VEX_W_0F3800_P_2) },
4090 { VEX_LEN_TABLE (VEX_LEN_F5_P_2) }, 4437 },
4091 { "(bad)", { XX } }, 4438
4092 }, 4439 /* PREFIX_VEX_0F3801 */
4093 4440 {
4094 /* PREFIX_VEX_F6 */ 4441 { Bad_Opcode },
4095 { 4442 { Bad_Opcode },
4096 { "(bad)", { XX } }, 4443 { VEX_W_TABLE (VEX_W_0F3801_P_2) },
4097 { "(bad)", { XX } }, 4444 },
4098 { VEX_LEN_TABLE (VEX_LEN_F6_P_2) }, 4445
4099 { "(bad)", { XX } }, 4446 /* PREFIX_VEX_0F3802 */
4100 }, 4447 {
4101 4448 { Bad_Opcode },
4102 /* PREFIX_VEX_F7 */ 4449 { Bad_Opcode },
4103 { 4450 { VEX_W_TABLE (VEX_W_0F3802_P_2) },
4104 { "(bad)", { XX } }, 4451 },
4105 { "(bad)", { XX } }, 4452
4106 { VEX_LEN_TABLE (VEX_LEN_F7_P_2) }, 4453 /* PREFIX_VEX_0F3803 */
4107 { "(bad)", { XX } }, 4454 {
4108 }, 4455 { Bad_Opcode },
4109 4456 { Bad_Opcode },
4110 /* PREFIX_VEX_F8 */ 4457 { VEX_W_TABLE (VEX_W_0F3803_P_2) },
4111 { 4458 },
4112 { "(bad)", { XX } }, 4459
4113 { "(bad)", { XX } }, 4460 /* PREFIX_VEX_0F3804 */
4114 { VEX_LEN_TABLE (VEX_LEN_F8_P_2) }, 4461 {
4115 { "(bad)", { XX } }, 4462 { Bad_Opcode },
4116 }, 4463 { Bad_Opcode },
4117 4464 { VEX_W_TABLE (VEX_W_0F3804_P_2) },
4118 /* PREFIX_VEX_F9 */ 4465 },
4119 { 4466
4120 { "(bad)", { XX } }, 4467 /* PREFIX_VEX_0F3805 */
4121 { "(bad)", { XX } }, 4468 {
4122 { VEX_LEN_TABLE (VEX_LEN_F9_P_2) }, 4469 { Bad_Opcode },
4123 { "(bad)", { XX } }, 4470 { Bad_Opcode },
4124 }, 4471 { VEX_W_TABLE (VEX_W_0F3805_P_2) },
4125 4472 },
4126 /* PREFIX_VEX_FA */ 4473
4127 { 4474 /* PREFIX_VEX_0F3806 */
4128 { "(bad)", { XX } }, 4475 {
4129 { "(bad)", { XX } }, 4476 { Bad_Opcode },
4130 { VEX_LEN_TABLE (VEX_LEN_FA_P_2) }, 4477 { Bad_Opcode },
4131 { "(bad)", { XX } }, 4478 { VEX_W_TABLE (VEX_W_0F3806_P_2) },
4132 }, 4479 },
4133 4480
4134 /* PREFIX_VEX_FB */ 4481 /* PREFIX_VEX_0F3807 */
4135 { 4482 {
4136 { "(bad)", { XX } }, 4483 { Bad_Opcode },
4137 { "(bad)", { XX } }, 4484 { Bad_Opcode },
4138 { VEX_LEN_TABLE (VEX_LEN_FB_P_2) }, 4485 { VEX_W_TABLE (VEX_W_0F3807_P_2) },
4139 { "(bad)", { XX } }, 4486 },
4140 }, 4487
4141 4488 /* PREFIX_VEX_0F3808 */
4142 /* PREFIX_VEX_FC */ 4489 {
4143 { 4490 { Bad_Opcode },
4144 { "(bad)", { XX } }, 4491 { Bad_Opcode },
4145 { "(bad)", { XX } }, 4492 { VEX_W_TABLE (VEX_W_0F3808_P_2) },
4146 { VEX_LEN_TABLE (VEX_LEN_FC_P_2) }, 4493 },
4147 { "(bad)", { XX } }, 4494
4148 }, 4495 /* PREFIX_VEX_0F3809 */
4149 4496 {
4150 /* PREFIX_VEX_FD */ 4497 { Bad_Opcode },
4151 { 4498 { Bad_Opcode },
4152 { "(bad)", { XX } }, 4499 { VEX_W_TABLE (VEX_W_0F3809_P_2) },
4153 { "(bad)", { XX } }, 4500 },
4154 { VEX_LEN_TABLE (VEX_LEN_FD_P_2) }, 4501
4155 { "(bad)", { XX } }, 4502 /* PREFIX_VEX_0F380A */
4156 }, 4503 {
4157 4504 { Bad_Opcode },
4158 /* PREFIX_VEX_FE */ 4505 { Bad_Opcode },
4159 { 4506 { VEX_W_TABLE (VEX_W_0F380A_P_2) },
4160 { "(bad)", { XX } }, 4507 },
4161 { "(bad)", { XX } }, 4508
4162 { VEX_LEN_TABLE (VEX_LEN_FE_P_2) }, 4509 /* PREFIX_VEX_0F380B */
4163 { "(bad)", { XX } }, 4510 {
4164 }, 4511 { Bad_Opcode },
4165 4512 { Bad_Opcode },
4166 /* PREFIX_VEX_3800 */ 4513 { VEX_W_TABLE (VEX_W_0F380B_P_2) },
4167 { 4514 },
4168 { "(bad)", { XX } }, 4515
4169 { "(bad)", { XX } }, 4516 /* PREFIX_VEX_0F380C */
4170 { VEX_LEN_TABLE (VEX_LEN_3800_P_2) }, 4517 {
4171 { "(bad)", { XX } }, 4518 { Bad_Opcode },
4172 }, 4519 { Bad_Opcode },
4173 4520 { VEX_W_TABLE (VEX_W_0F380C_P_2) },
4174 /* PREFIX_VEX_3801 */ 4521 },
4175 { 4522
4176 { "(bad)", { XX } }, 4523 /* PREFIX_VEX_0F380D */
4177 { "(bad)", { XX } }, 4524 {
4178 { VEX_LEN_TABLE (VEX_LEN_3801_P_2) }, 4525 { Bad_Opcode },
4179 { "(bad)", { XX } }, 4526 { Bad_Opcode },
4180 }, 4527 { VEX_W_TABLE (VEX_W_0F380D_P_2) },
4181 4528 },
4182 /* PREFIX_VEX_3802 */ 4529
4183 { 4530 /* PREFIX_VEX_0F380E */
4184 { "(bad)", { XX } }, 4531 {
4185 { "(bad)", { XX } }, 4532 { Bad_Opcode },
4186 { VEX_LEN_TABLE (VEX_LEN_3802_P_2) }, 4533 { Bad_Opcode },
4187 { "(bad)", { XX } }, 4534 { VEX_W_TABLE (VEX_W_0F380E_P_2) },
4188 }, 4535 },
4189 4536
4190 /* PREFIX_VEX_3803 */ 4537 /* PREFIX_VEX_0F380F */
4191 { 4538 {
4192 { "(bad)", { XX } }, 4539 { Bad_Opcode },
4193 { "(bad)", { XX } }, 4540 { Bad_Opcode },
4194 { VEX_LEN_TABLE (VEX_LEN_3803_P_2) }, 4541 { VEX_W_TABLE (VEX_W_0F380F_P_2) },
4195 { "(bad)", { XX } }, 4542 },
4196 }, 4543
4197 4544 /* PREFIX_VEX_0F3813 */
4198 /* PREFIX_VEX_3804 */ 4545 {
4199 { 4546 { Bad_Opcode },
4200 { "(bad)", { XX } }, 4547 { Bad_Opcode },
4201 { "(bad)", { XX } }, 4548 { "vcvtph2ps", { XM, EXxmmq } },
4202 { VEX_LEN_TABLE (VEX_LEN_3804_P_2) }, 4549 },
4203 { "(bad)", { XX } }, 4550
4204 }, 4551 /* PREFIX_VEX_0F3816 */
4205 4552 {
4206 /* PREFIX_VEX_3805 */ 4553 { Bad_Opcode },
4207 { 4554 { Bad_Opcode },
4208 { "(bad)", { XX } }, 4555 { VEX_LEN_TABLE (VEX_LEN_0F3816_P_2) },
4209 { "(bad)", { XX } }, 4556 },
4210 { VEX_LEN_TABLE (VEX_LEN_3805_P_2) }, 4557
4211 { "(bad)", { XX } }, 4558 /* PREFIX_VEX_0F3817 */
4212 }, 4559 {
4213 4560 { Bad_Opcode },
4214 /* PREFIX_VEX_3806 */ 4561 { Bad_Opcode },
4215 { 4562 { VEX_W_TABLE (VEX_W_0F3817_P_2) },
4216 { "(bad)", { XX } }, 4563 },
4217 { "(bad)", { XX } }, 4564
4218 { VEX_LEN_TABLE (VEX_LEN_3806_P_2) }, 4565 /* PREFIX_VEX_0F3818 */
4219 { "(bad)", { XX } }, 4566 {
4220 }, 4567 { Bad_Opcode },
4221 4568 { Bad_Opcode },
4222 /* PREFIX_VEX_3807 */ 4569 { VEX_W_TABLE (VEX_W_0F3818_P_2) },
4223 { 4570 },
4224 { "(bad)", { XX } }, 4571
4225 { "(bad)", { XX } }, 4572 /* PREFIX_VEX_0F3819 */
4226 { VEX_LEN_TABLE (VEX_LEN_3807_P_2) }, 4573 {
4227 { "(bad)", { XX } }, 4574 { Bad_Opcode },
4228 }, 4575 { Bad_Opcode },
4229 4576 { VEX_LEN_TABLE (VEX_LEN_0F3819_P_2) },
4230 /* PREFIX_VEX_3808 */ 4577 },
4231 { 4578
4232 { "(bad)", { XX } }, 4579 /* PREFIX_VEX_0F381A */
4233 { "(bad)", { XX } }, 4580 {
4234 { VEX_LEN_TABLE (VEX_LEN_3808_P_2) }, 4581 { Bad_Opcode },
4235 { "(bad)", { XX } }, 4582 { Bad_Opcode },
4236 }, 4583 { MOD_TABLE (MOD_VEX_0F381A_PREFIX_2) },
4237 4584 },
4238 /* PREFIX_VEX_3809 */ 4585
4239 { 4586 /* PREFIX_VEX_0F381C */
4240 { "(bad)", { XX } }, 4587 {
4241 { "(bad)", { XX } }, 4588 { Bad_Opcode },
4242 { VEX_LEN_TABLE (VEX_LEN_3809_P_2) }, 4589 { Bad_Opcode },
4243 { "(bad)", { XX } }, 4590 { VEX_W_TABLE (VEX_W_0F381C_P_2) },
4244 }, 4591 },
4245 4592
4246 /* PREFIX_VEX_380A */ 4593 /* PREFIX_VEX_0F381D */
4247 { 4594 {
4248 { "(bad)", { XX } }, 4595 { Bad_Opcode },
4249 { "(bad)", { XX } }, 4596 { Bad_Opcode },
4250 { VEX_LEN_TABLE (VEX_LEN_380A_P_2) }, 4597 { VEX_W_TABLE (VEX_W_0F381D_P_2) },
4251 { "(bad)", { XX } }, 4598 },
4252 }, 4599
4253 4600 /* PREFIX_VEX_0F381E */
4254 /* PREFIX_VEX_380B */ 4601 {
4255 { 4602 { Bad_Opcode },
4256 { "(bad)", { XX } }, 4603 { Bad_Opcode },
4257 { "(bad)", { XX } }, 4604 { VEX_W_TABLE (VEX_W_0F381E_P_2) },
4258 { VEX_LEN_TABLE (VEX_LEN_380B_P_2) }, 4605 },
4259 { "(bad)", { XX } }, 4606
4260 }, 4607 /* PREFIX_VEX_0F3820 */
4261 4608 {
4262 /* PREFIX_VEX_380C */ 4609 { Bad_Opcode },
4263 { 4610 { Bad_Opcode },
4264 { "(bad)", { XX } }, 4611 { VEX_W_TABLE (VEX_W_0F3820_P_2) },
4265 { "(bad)", { XX } }, 4612 },
4266 { "vpermilps", { XM, Vex, EXx } }, 4613
4267 { "(bad)", { XX } }, 4614 /* PREFIX_VEX_0F3821 */
4268 }, 4615 {
4269 4616 { Bad_Opcode },
4270 /* PREFIX_VEX_380D */ 4617 { Bad_Opcode },
4271 { 4618 { VEX_W_TABLE (VEX_W_0F3821_P_2) },
4272 { "(bad)", { XX } }, 4619 },
4273 { "(bad)", { XX } }, 4620
4274 { "vpermilpd", { XM, Vex, EXx } }, 4621 /* PREFIX_VEX_0F3822 */
4275 { "(bad)", { XX } }, 4622 {
4276 }, 4623 { Bad_Opcode },
4277 4624 { Bad_Opcode },
4278 /* PREFIX_VEX_380E */ 4625 { VEX_W_TABLE (VEX_W_0F3822_P_2) },
4279 { 4626 },
4280 { "(bad)", { XX } }, 4627
4281 { "(bad)", { XX } }, 4628 /* PREFIX_VEX_0F3823 */
4282 { "vtestps", { XM, EXx } }, 4629 {
4283 { "(bad)", { XX } }, 4630 { Bad_Opcode },
4284 }, 4631 { Bad_Opcode },
4285 4632 { VEX_W_TABLE (VEX_W_0F3823_P_2) },
4286 /* PREFIX_VEX_380F */ 4633 },
4287 { 4634
4288 { "(bad)", { XX } }, 4635 /* PREFIX_VEX_0F3824 */
4289 { "(bad)", { XX } }, 4636 {
4290 { "vtestpd", { XM, EXx } }, 4637 { Bad_Opcode },
4291 { "(bad)", { XX } }, 4638 { Bad_Opcode },
4292 }, 4639 { VEX_W_TABLE (VEX_W_0F3824_P_2) },
4293 4640 },
4294 /* PREFIX_VEX_3817 */ 4641
4295 { 4642 /* PREFIX_VEX_0F3825 */
4296 { "(bad)", { XX } }, 4643 {
4297 { "(bad)", { XX } }, 4644 { Bad_Opcode },
4298 { "vptest", { XM, EXx } }, 4645 { Bad_Opcode },
4299 { "(bad)", { XX } }, 4646 { VEX_W_TABLE (VEX_W_0F3825_P_2) },
4300 }, 4647 },
4301 4648
4302 /* PREFIX_VEX_3818 */ 4649 /* PREFIX_VEX_0F3828 */
4303 { 4650 {
4304 { "(bad)", { XX } }, 4651 { Bad_Opcode },
4305 { "(bad)", { XX } }, 4652 { Bad_Opcode },
4306 { MOD_TABLE (MOD_VEX_3818_PREFIX_2) }, 4653 { VEX_W_TABLE (VEX_W_0F3828_P_2) },
4307 { "(bad)", { XX } }, 4654 },
4308 }, 4655
4309 4656 /* PREFIX_VEX_0F3829 */
4310 /* PREFIX_VEX_3819 */ 4657 {
4311 { 4658 { Bad_Opcode },
4312 { "(bad)", { XX } }, 4659 { Bad_Opcode },
4313 { "(bad)", { XX } }, 4660 { VEX_W_TABLE (VEX_W_0F3829_P_2) },
4314 { MOD_TABLE (MOD_VEX_3819_PREFIX_2) }, 4661 },
4315 { "(bad)", { XX } }, 4662
4316 }, 4663 /* PREFIX_VEX_0F382A */
4317 4664 {
4318 /* PREFIX_VEX_381A */ 4665 { Bad_Opcode },
4319 { 4666 { Bad_Opcode },
4320 { "(bad)", { XX } }, 4667 { MOD_TABLE (MOD_VEX_0F382A_PREFIX_2) },
4321 { "(bad)", { XX } }, 4668 },
4322 { MOD_TABLE (MOD_VEX_381A_PREFIX_2) }, 4669
4323 { "(bad)", { XX } }, 4670 /* PREFIX_VEX_0F382B */
4324 }, 4671 {
4325 4672 { Bad_Opcode },
4326 /* PREFIX_VEX_381C */ 4673 { Bad_Opcode },
4327 { 4674 { VEX_W_TABLE (VEX_W_0F382B_P_2) },
4328 { "(bad)", { XX } }, 4675 },
4329 { "(bad)", { XX } }, 4676
4330 { VEX_LEN_TABLE (VEX_LEN_381C_P_2) }, 4677 /* PREFIX_VEX_0F382C */
4331 { "(bad)", { XX } }, 4678 {
4332 }, 4679 { Bad_Opcode },
4333 4680 { Bad_Opcode },
4334 /* PREFIX_VEX_381D */ 4681 { MOD_TABLE (MOD_VEX_0F382C_PREFIX_2) },
4335 { 4682 },
4336 { "(bad)", { XX } }, 4683
4337 { "(bad)", { XX } }, 4684 /* PREFIX_VEX_0F382D */
4338 { VEX_LEN_TABLE (VEX_LEN_381D_P_2) }, 4685 {
4339 { "(bad)", { XX } }, 4686 { Bad_Opcode },
4340 }, 4687 { Bad_Opcode },
4341 4688 { MOD_TABLE (MOD_VEX_0F382D_PREFIX_2) },
4342 /* PREFIX_VEX_381E */ 4689 },
4343 { 4690
4344 { "(bad)", { XX } }, 4691 /* PREFIX_VEX_0F382E */
4345 { "(bad)", { XX } }, 4692 {
4346 { VEX_LEN_TABLE (VEX_LEN_381E_P_2) }, 4693 { Bad_Opcode },
4347 { "(bad)", { XX } }, 4694 { Bad_Opcode },
4348 }, 4695 { MOD_TABLE (MOD_VEX_0F382E_PREFIX_2) },
4349 4696 },
4350 /* PREFIX_VEX_3820 */ 4697
4351 { 4698 /* PREFIX_VEX_0F382F */
4352 { "(bad)", { XX } }, 4699 {
4353 { "(bad)", { XX } }, 4700 { Bad_Opcode },
4354 { VEX_LEN_TABLE (VEX_LEN_3820_P_2) }, 4701 { Bad_Opcode },
4355 { "(bad)", { XX } }, 4702 { MOD_TABLE (MOD_VEX_0F382F_PREFIX_2) },
4356 }, 4703 },
4357 4704
4358 /* PREFIX_VEX_3821 */ 4705 /* PREFIX_VEX_0F3830 */
4359 { 4706 {
4360 { "(bad)", { XX } }, 4707 { Bad_Opcode },
4361 { "(bad)", { XX } }, 4708 { Bad_Opcode },
4362 { VEX_LEN_TABLE (VEX_LEN_3821_P_2) }, 4709 { VEX_W_TABLE (VEX_W_0F3830_P_2) },
4363 { "(bad)", { XX } }, 4710 },
4364 }, 4711
4365 4712 /* PREFIX_VEX_0F3831 */
4366 /* PREFIX_VEX_3822 */ 4713 {
4367 { 4714 { Bad_Opcode },
4368 { "(bad)", { XX } }, 4715 { Bad_Opcode },
4369 { "(bad)", { XX } }, 4716 { VEX_W_TABLE (VEX_W_0F3831_P_2) },
4370 { VEX_LEN_TABLE (VEX_LEN_3822_P_2) }, 4717 },
4371 { "(bad)", { XX } }, 4718
4372 }, 4719 /* PREFIX_VEX_0F3832 */
4373 4720 {
4374 /* PREFIX_VEX_3823 */ 4721 { Bad_Opcode },
4375 { 4722 { Bad_Opcode },
4376 { "(bad)", { XX } }, 4723 { VEX_W_TABLE (VEX_W_0F3832_P_2) },
4377 { "(bad)", { XX } }, 4724 },
4378 { VEX_LEN_TABLE (VEX_LEN_3823_P_2) }, 4725
4379 { "(bad)", { XX } }, 4726 /* PREFIX_VEX_0F3833 */
4380 }, 4727 {
4381 4728 { Bad_Opcode },
4382 /* PREFIX_VEX_3824 */ 4729 { Bad_Opcode },
4383 { 4730 { VEX_W_TABLE (VEX_W_0F3833_P_2) },
4384 { "(bad)", { XX } }, 4731 },
4385 { "(bad)", { XX } }, 4732
4386 { VEX_LEN_TABLE (VEX_LEN_3824_P_2) }, 4733 /* PREFIX_VEX_0F3834 */
4387 { "(bad)", { XX } }, 4734 {
4388 }, 4735 { Bad_Opcode },
4389 4736 { Bad_Opcode },
4390 /* PREFIX_VEX_3825 */ 4737 { VEX_W_TABLE (VEX_W_0F3834_P_2) },
4391 { 4738 },
4392 { "(bad)", { XX } }, 4739
4393 { "(bad)", { XX } }, 4740 /* PREFIX_VEX_0F3835 */
4394 { VEX_LEN_TABLE (VEX_LEN_3825_P_2) }, 4741 {
4395 { "(bad)", { XX } }, 4742 { Bad_Opcode },
4396 }, 4743 { Bad_Opcode },
4397 4744 { VEX_W_TABLE (VEX_W_0F3835_P_2) },
4398 /* PREFIX_VEX_3828 */ 4745 },
4399 { 4746
4400 { "(bad)", { XX } }, 4747 /* PREFIX_VEX_0F3836 */
4401 { "(bad)", { XX } }, 4748 {
4402 { VEX_LEN_TABLE (VEX_LEN_3828_P_2) }, 4749 { Bad_Opcode },
4403 { "(bad)", { XX } }, 4750 { Bad_Opcode },
4404 }, 4751 { VEX_LEN_TABLE (VEX_LEN_0F3836_P_2) },
4405 4752 },
4406 /* PREFIX_VEX_3829 */ 4753
4407 { 4754 /* PREFIX_VEX_0F3837 */
4408 { "(bad)", { XX } }, 4755 {
4409 { "(bad)", { XX } }, 4756 { Bad_Opcode },
4410 { VEX_LEN_TABLE (VEX_LEN_3829_P_2) }, 4757 { Bad_Opcode },
4411 { "(bad)", { XX } }, 4758 { VEX_W_TABLE (VEX_W_0F3837_P_2) },
4412 }, 4759 },
4413 4760
4414 /* PREFIX_VEX_382A */ 4761 /* PREFIX_VEX_0F3838 */
4415 { 4762 {
4416 { "(bad)", { XX } }, 4763 { Bad_Opcode },
4417 { "(bad)", { XX } }, 4764 { Bad_Opcode },
4418 { MOD_TABLE (MOD_VEX_382A_PREFIX_2) }, 4765 { VEX_W_TABLE (VEX_W_0F3838_P_2) },
4419 { "(bad)", { XX } }, 4766 },
4420 }, 4767
4421 4768 /* PREFIX_VEX_0F3839 */
4422 /* PREFIX_VEX_382B */ 4769 {
4423 { 4770 { Bad_Opcode },
4424 { "(bad)", { XX } }, 4771 { Bad_Opcode },
4425 { "(bad)", { XX } }, 4772 { VEX_W_TABLE (VEX_W_0F3839_P_2) },
4426 { VEX_LEN_TABLE (VEX_LEN_382B_P_2) }, 4773 },
4427 { "(bad)", { XX } }, 4774
4428 }, 4775 /* PREFIX_VEX_0F383A */
4429 4776 {
4430 /* PREFIX_VEX_382C */ 4777 { Bad_Opcode },
4431 { 4778 { Bad_Opcode },
4432 { "(bad)", { XX } }, 4779 { VEX_W_TABLE (VEX_W_0F383A_P_2) },
4433 { "(bad)", { XX } }, 4780 },
4434 { MOD_TABLE (MOD_VEX_382C_PREFIX_2) }, 4781
4435 { "(bad)", { XX } }, 4782 /* PREFIX_VEX_0F383B */
4436 }, 4783 {
4437 4784 { Bad_Opcode },
4438 /* PREFIX_VEX_382D */ 4785 { Bad_Opcode },
4439 { 4786 { VEX_W_TABLE (VEX_W_0F383B_P_2) },
4440 { "(bad)", { XX } }, 4787 },
4441 { "(bad)", { XX } }, 4788
4442 { MOD_TABLE (MOD_VEX_382D_PREFIX_2) }, 4789 /* PREFIX_VEX_0F383C */
4443 { "(bad)", { XX } }, 4790 {
4444 }, 4791 { Bad_Opcode },
4445 4792 { Bad_Opcode },
4446 /* PREFIX_VEX_382E */ 4793 { VEX_W_TABLE (VEX_W_0F383C_P_2) },
4447 { 4794 },
4448 { "(bad)", { XX } }, 4795
4449 { "(bad)", { XX } }, 4796 /* PREFIX_VEX_0F383D */
4450 { MOD_TABLE (MOD_VEX_382E_PREFIX_2) }, 4797 {
4451 { "(bad)", { XX } }, 4798 { Bad_Opcode },
4452 }, 4799 { Bad_Opcode },
4453 4800 { VEX_W_TABLE (VEX_W_0F383D_P_2) },
4454 /* PREFIX_VEX_382F */ 4801 },
4455 { 4802
4456 { "(bad)", { XX } }, 4803 /* PREFIX_VEX_0F383E */
4457 { "(bad)", { XX } }, 4804 {
4458 { MOD_TABLE (MOD_VEX_382F_PREFIX_2) }, 4805 { Bad_Opcode },
4459 { "(bad)", { XX } }, 4806 { Bad_Opcode },
4460 }, 4807 { VEX_W_TABLE (VEX_W_0F383E_P_2) },
4461 4808 },
4462 /* PREFIX_VEX_3830 */ 4809
4463 { 4810 /* PREFIX_VEX_0F383F */
4464 { "(bad)", { XX } }, 4811 {
4465 { "(bad)", { XX } }, 4812 { Bad_Opcode },
4466 { VEX_LEN_TABLE (VEX_LEN_3830_P_2) }, 4813 { Bad_Opcode },
4467 { "(bad)", { XX } }, 4814 { VEX_W_TABLE (VEX_W_0F383F_P_2) },
4468 }, 4815 },
4469 4816
4470 /* PREFIX_VEX_3831 */ 4817 /* PREFIX_VEX_0F3840 */
4471 { 4818 {
4472 { "(bad)", { XX } }, 4819 { Bad_Opcode },
4473 { "(bad)", { XX } }, 4820 { Bad_Opcode },
4474 { VEX_LEN_TABLE (VEX_LEN_3831_P_2) }, 4821 { VEX_W_TABLE (VEX_W_0F3840_P_2) },
4475 { "(bad)", { XX } }, 4822 },
4476 }, 4823
4477 4824 /* PREFIX_VEX_0F3841 */
4478 /* PREFIX_VEX_3832 */ 4825 {
4479 { 4826 { Bad_Opcode },
4480 { "(bad)", { XX } }, 4827 { Bad_Opcode },
4481 { "(bad)", { XX } }, 4828 { VEX_LEN_TABLE (VEX_LEN_0F3841_P_2) },
4482 { VEX_LEN_TABLE (VEX_LEN_3832_P_2) }, 4829 },
4483 { "(bad)", { XX } }, 4830
4484 }, 4831 /* PREFIX_VEX_0F3845 */
4485 4832 {
4486 /* PREFIX_VEX_3833 */ 4833 { Bad_Opcode },
4487 { 4834 { Bad_Opcode },
4488 { "(bad)", { XX } }, 4835 { "vpsrlv%LW", { XM, Vex, EXx } },
4489 { "(bad)", { XX } }, 4836 },
4490 { VEX_LEN_TABLE (VEX_LEN_3833_P_2) }, 4837
4491 { "(bad)", { XX } }, 4838 /* PREFIX_VEX_0F3846 */
4492 }, 4839 {
4493 4840 { Bad_Opcode },
4494 /* PREFIX_VEX_3834 */ 4841 { Bad_Opcode },
4495 { 4842 { VEX_W_TABLE (VEX_W_0F3846_P_2) },
4496 { "(bad)", { XX } }, 4843 },
4497 { "(bad)", { XX } }, 4844
4498 { VEX_LEN_TABLE (VEX_LEN_3834_P_2) }, 4845 /* PREFIX_VEX_0F3847 */
4499 { "(bad)", { XX } }, 4846 {
4500 }, 4847 { Bad_Opcode },
4501 4848 { Bad_Opcode },
4502 /* PREFIX_VEX_3835 */ 4849 { "vpsllv%LW", { XM, Vex, EXx } },
4503 { 4850 },
4504 { "(bad)", { XX } }, 4851
4505 { "(bad)", { XX } }, 4852 /* PREFIX_VEX_0F3858 */
4506 { VEX_LEN_TABLE (VEX_LEN_3835_P_2) }, 4853 {
4507 { "(bad)", { XX } }, 4854 { Bad_Opcode },
4508 }, 4855 { Bad_Opcode },
4509 4856 { VEX_W_TABLE (VEX_W_0F3858_P_2) },
4510 /* PREFIX_VEX_3837 */ 4857 },
4511 { 4858
4512 { "(bad)", { XX } }, 4859 /* PREFIX_VEX_0F3859 */
4513 { "(bad)", { XX } }, 4860 {
4514 { VEX_LEN_TABLE (VEX_LEN_3837_P_2) }, 4861 { Bad_Opcode },
4515 { "(bad)", { XX } }, 4862 { Bad_Opcode },
4516 }, 4863 { VEX_W_TABLE (VEX_W_0F3859_P_2) },
4517 4864 },
4518 /* PREFIX_VEX_3838 */ 4865
4519 { 4866 /* PREFIX_VEX_0F385A */
4520 { "(bad)", { XX } }, 4867 {
4521 { "(bad)", { XX } }, 4868 { Bad_Opcode },
4522 { VEX_LEN_TABLE (VEX_LEN_3838_P_2) }, 4869 { Bad_Opcode },
4523 { "(bad)", { XX } }, 4870 { MOD_TABLE (MOD_VEX_0F385A_PREFIX_2) },
4524 }, 4871 },
4525 4872
4526 /* PREFIX_VEX_3839 */ 4873 /* PREFIX_VEX_0F3878 */
4527 { 4874 {
4528 { "(bad)", { XX } }, 4875 { Bad_Opcode },
4529 { "(bad)", { XX } }, 4876 { Bad_Opcode },
4530 { VEX_LEN_TABLE (VEX_LEN_3839_P_2) }, 4877 { VEX_W_TABLE (VEX_W_0F3878_P_2) },
4531 { "(bad)", { XX } }, 4878 },
4532 }, 4879
4533 4880 /* PREFIX_VEX_0F3879 */
4534 /* PREFIX_VEX_383A */ 4881 {
4535 { 4882 { Bad_Opcode },
4536 { "(bad)", { XX } }, 4883 { Bad_Opcode },
4537 { "(bad)", { XX } }, 4884 { VEX_W_TABLE (VEX_W_0F3879_P_2) },
4538 { VEX_LEN_TABLE (VEX_LEN_383A_P_2) }, 4885 },
4539 { "(bad)", { XX } }, 4886
4540 }, 4887 /* PREFIX_VEX_0F388C */
4541 4888 {
4542 /* PREFIX_VEX_383B */ 4889 { Bad_Opcode },
4543 { 4890 { Bad_Opcode },
4544 { "(bad)", { XX } }, 4891 { MOD_TABLE (MOD_VEX_0F388C_PREFIX_2) },
4545 { "(bad)", { XX } }, 4892 },
4546 { VEX_LEN_TABLE (VEX_LEN_383B_P_2) }, 4893
4547 { "(bad)", { XX } }, 4894 /* PREFIX_VEX_0F388E */
4548 }, 4895 {
4549 4896 { Bad_Opcode },
4550 /* PREFIX_VEX_383C */ 4897 { Bad_Opcode },
4551 { 4898 { MOD_TABLE (MOD_VEX_0F388E_PREFIX_2) },
4552 { "(bad)", { XX } }, 4899 },
4553 { "(bad)", { XX } }, 4900
4554 { VEX_LEN_TABLE (VEX_LEN_383C_P_2) }, 4901 /* PREFIX_VEX_0F3890 */
4555 { "(bad)", { XX } }, 4902 {
4556 }, 4903 { Bad_Opcode },
4557 4904 { Bad_Opcode },
4558 /* PREFIX_VEX_383D */ 4905 { "vpgatherd%LW", { XM, MVexVSIBDWpX, Vex } },
4559 { 4906 },
4560 { "(bad)", { XX } }, 4907
4561 { "(bad)", { XX } }, 4908 /* PREFIX_VEX_0F3891 */
4562 { VEX_LEN_TABLE (VEX_LEN_383D_P_2) }, 4909 {
4563 { "(bad)", { XX } }, 4910 { Bad_Opcode },
4564 }, 4911 { Bad_Opcode },
4565 4912 { "vpgatherq%LW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ } },
4566 /* PREFIX_VEX_383E */ 4913 },
4567 { 4914
4568 { "(bad)", { XX } }, 4915 /* PREFIX_VEX_0F3892 */
4569 { "(bad)", { XX } }, 4916 {
4570 { VEX_LEN_TABLE (VEX_LEN_383E_P_2) }, 4917 { Bad_Opcode },
4571 { "(bad)", { XX } }, 4918 { Bad_Opcode },
4572 }, 4919 { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex } },
4573 4920 },
4574 /* PREFIX_VEX_383F */ 4921
4575 { 4922 /* PREFIX_VEX_0F3893 */
4576 { "(bad)", { XX } }, 4923 {
4577 { "(bad)", { XX } }, 4924 { Bad_Opcode },
4578 { VEX_LEN_TABLE (VEX_LEN_383F_P_2) }, 4925 { Bad_Opcode },
4579 { "(bad)", { XX } }, 4926 { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ } },
4580 }, 4927 },
4581 4928
4582 /* PREFIX_VEX_3840 */ 4929 /* PREFIX_VEX_0F3896 */
4583 { 4930 {
4584 { "(bad)", { XX } }, 4931 { Bad_Opcode },
4585 { "(bad)", { XX } }, 4932 { Bad_Opcode },
4586 { VEX_LEN_TABLE (VEX_LEN_3840_P_2) },
4587 { "(bad)", { XX } },
4588 },
4589
4590 /* PREFIX_VEX_3841 */
4591 {
4592 { "(bad)", { XX } },
4593 { "(bad)", { XX } },
4594 { VEX_LEN_TABLE (VEX_LEN_3841_P_2) },
4595 { "(bad)", { XX } },
4596 },
4597
4598 /* PREFIX_VEX_3896 */
4599 {
4600 { "(bad)", { XX } },
4601 { "(bad)", { XX } },
4602 { "vfmaddsub132p%XW", { XM, Vex, EXx } }, 4933 { "vfmaddsub132p%XW", { XM, Vex, EXx } },
4603 { "(bad)",» { XX } }, 4934 },
4604 }, 4935
4605 4936 /* PREFIX_VEX_0F3897 */
4606 /* PREFIX_VEX_3897 */ 4937 {
4607 { 4938 { Bad_Opcode },
4608 { "(bad)",» { XX } }, 4939 { Bad_Opcode },
4609 { "(bad)",» { XX } },
4610 { "vfmsubadd132p%XW", { XM, Vex, EXx } }, 4940 { "vfmsubadd132p%XW", { XM, Vex, EXx } },
4611 { "(bad)",» { XX } }, 4941 },
4612 }, 4942
4613 4943 /* PREFIX_VEX_0F3898 */
4614 /* PREFIX_VEX_3898 */ 4944 {
4615 { 4945 { Bad_Opcode },
4616 { "(bad)",» { XX } }, 4946 { Bad_Opcode },
4617 { "(bad)",» { XX } },
4618 { "vfmadd132p%XW", { XM, Vex, EXx } }, 4947 { "vfmadd132p%XW", { XM, Vex, EXx } },
4619 { "(bad)",» { XX } }, 4948 },
4620 }, 4949
4621 4950 /* PREFIX_VEX_0F3899 */
4622 /* PREFIX_VEX_3899 */ 4951 {
4623 { 4952 { Bad_Opcode },
4624 { "(bad)",» { XX } }, 4953 { Bad_Opcode },
4625 { "(bad)",» { XX } }, 4954 { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4626 { "vfmadd132s%XW", { XM, Vex, EXVexWdq } }, 4955 },
4627 { "(bad)",» { XX } }, 4956
4628 }, 4957 /* PREFIX_VEX_0F389A */
4629 4958 {
4630 /* PREFIX_VEX_389A */ 4959 { Bad_Opcode },
4631 { 4960 { Bad_Opcode },
4632 { "(bad)",» { XX } },
4633 { "(bad)",» { XX } },
4634 { "vfmsub132p%XW", { XM, Vex, EXx } }, 4961 { "vfmsub132p%XW", { XM, Vex, EXx } },
4635 { "(bad)",» { XX } }, 4962 },
4636 }, 4963
4637 4964 /* PREFIX_VEX_0F389B */
4638 /* PREFIX_VEX_389B */ 4965 {
4639 { 4966 { Bad_Opcode },
4640 { "(bad)",» { XX } }, 4967 { Bad_Opcode },
4641 { "(bad)",» { XX } }, 4968 { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4642 { "vfmsub132s%XW", { XM, Vex, EXVexWdq } }, 4969 },
4643 { "(bad)",» { XX } }, 4970
4644 }, 4971 /* PREFIX_VEX_0F389C */
4645 4972 {
4646 /* PREFIX_VEX_389C */ 4973 { Bad_Opcode },
4647 { 4974 { Bad_Opcode },
4648 { "(bad)",» { XX } },
4649 { "(bad)",» { XX } },
4650 { "vfnmadd132p%XW", { XM, Vex, EXx } }, 4975 { "vfnmadd132p%XW", { XM, Vex, EXx } },
4651 { "(bad)",» { XX } }, 4976 },
4652 }, 4977
4653 4978 /* PREFIX_VEX_0F389D */
4654 /* PREFIX_VEX_389D */ 4979 {
4655 { 4980 { Bad_Opcode },
4656 { "(bad)",» { XX } }, 4981 { Bad_Opcode },
4657 { "(bad)",» { XX } }, 4982 { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4658 { "vfnmadd132s%XW", { XM, Vex, EXVexWdq } }, 4983 },
4659 { "(bad)",» { XX } }, 4984
4660 }, 4985 /* PREFIX_VEX_0F389E */
4661 4986 {
4662 /* PREFIX_VEX_389E */ 4987 { Bad_Opcode },
4663 { 4988 { Bad_Opcode },
4664 { "(bad)",» { XX } },
4665 { "(bad)",» { XX } },
4666 { "vfnmsub132p%XW", { XM, Vex, EXx } }, 4989 { "vfnmsub132p%XW", { XM, Vex, EXx } },
4667 { "(bad)",» { XX } }, 4990 },
4668 }, 4991
4669 4992 /* PREFIX_VEX_0F389F */
4670 /* PREFIX_VEX_389F */ 4993 {
4671 { 4994 { Bad_Opcode },
4672 { "(bad)",» { XX } }, 4995 { Bad_Opcode },
4673 { "(bad)",» { XX } }, 4996 { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4674 { "vfnmsub132s%XW", { XM, Vex, EXVexWdq } }, 4997 },
4675 { "(bad)",» { XX } }, 4998
4676 }, 4999 /* PREFIX_VEX_0F38A6 */
4677 5000 {
4678 /* PREFIX_VEX_38A6 */ 5001 { Bad_Opcode },
4679 { 5002 { Bad_Opcode },
4680 { "(bad)",» { XX } },
4681 { "(bad)",» { XX } },
4682 { "vfmaddsub213p%XW", { XM, Vex, EXx } }, 5003 { "vfmaddsub213p%XW", { XM, Vex, EXx } },
4683 { "(bad)",» { XX } }, 5004 { Bad_Opcode },
4684 }, 5005 },
4685 5006
4686 /* PREFIX_VEX_38A7 */ 5007 /* PREFIX_VEX_0F38A7 */
4687 { 5008 {
4688 { "(bad)",» { XX } }, 5009 { Bad_Opcode },
4689 { "(bad)",» { XX } }, 5010 { Bad_Opcode },
4690 { "vfmsubadd213p%XW", { XM, Vex, EXx } }, 5011 { "vfmsubadd213p%XW", { XM, Vex, EXx } },
4691 { "(bad)",» { XX } }, 5012 },
4692 }, 5013
4693 5014 /* PREFIX_VEX_0F38A8 */
4694 /* PREFIX_VEX_38A8 */ 5015 {
4695 { 5016 { Bad_Opcode },
4696 { "(bad)",» { XX } }, 5017 { Bad_Opcode },
4697 { "(bad)",» { XX } },
4698 { "vfmadd213p%XW", { XM, Vex, EXx } }, 5018 { "vfmadd213p%XW", { XM, Vex, EXx } },
4699 { "(bad)",» { XX } }, 5019 },
4700 }, 5020
4701 5021 /* PREFIX_VEX_0F38A9 */
4702 /* PREFIX_VEX_38A9 */ 5022 {
4703 { 5023 { Bad_Opcode },
4704 { "(bad)",» { XX } }, 5024 { Bad_Opcode },
4705 { "(bad)",» { XX } }, 5025 { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4706 { "vfmadd213s%XW", { XM, Vex, EXVexWdq } }, 5026 },
4707 { "(bad)",» { XX } }, 5027
4708 }, 5028 /* PREFIX_VEX_0F38AA */
4709 5029 {
4710 /* PREFIX_VEX_38AA */ 5030 { Bad_Opcode },
4711 { 5031 { Bad_Opcode },
4712 { "(bad)",» { XX } },
4713 { "(bad)",» { XX } },
4714 { "vfmsub213p%XW", { XM, Vex, EXx } }, 5032 { "vfmsub213p%XW", { XM, Vex, EXx } },
4715 { "(bad)",» { XX } }, 5033 },
4716 }, 5034
4717 5035 /* PREFIX_VEX_0F38AB */
4718 /* PREFIX_VEX_38AB */ 5036 {
4719 { 5037 { Bad_Opcode },
4720 { "(bad)",» { XX } }, 5038 { Bad_Opcode },
4721 { "(bad)",» { XX } }, 5039 { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4722 { "vfmsub213s%XW", { XM, Vex, EXVexWdq } }, 5040 },
4723 { "(bad)",» { XX } }, 5041
4724 }, 5042 /* PREFIX_VEX_0F38AC */
4725 5043 {
4726 /* PREFIX_VEX_38AC */ 5044 { Bad_Opcode },
4727 { 5045 { Bad_Opcode },
4728 { "(bad)",» { XX } },
4729 { "(bad)",» { XX } },
4730 { "vfnmadd213p%XW", { XM, Vex, EXx } }, 5046 { "vfnmadd213p%XW", { XM, Vex, EXx } },
4731 { "(bad)",» { XX } }, 5047 },
4732 }, 5048
4733 5049 /* PREFIX_VEX_0F38AD */
4734 /* PREFIX_VEX_38AD */ 5050 {
4735 { 5051 { Bad_Opcode },
4736 { "(bad)",» { XX } }, 5052 { Bad_Opcode },
4737 { "(bad)",» { XX } }, 5053 { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4738 { "vfnmadd213s%XW", { XM, Vex, EXVexWdq } }, 5054 },
4739 { "(bad)",» { XX } }, 5055
4740 }, 5056 /* PREFIX_VEX_0F38AE */
4741 5057 {
4742 /* PREFIX_VEX_38AE */ 5058 { Bad_Opcode },
4743 { 5059 { Bad_Opcode },
4744 { "(bad)",» { XX } },
4745 { "(bad)",» { XX } },
4746 { "vfnmsub213p%XW", { XM, Vex, EXx } }, 5060 { "vfnmsub213p%XW", { XM, Vex, EXx } },
4747 { "(bad)",» { XX } }, 5061 },
4748 }, 5062
4749 5063 /* PREFIX_VEX_0F38AF */
4750 /* PREFIX_VEX_38AF */ 5064 {
4751 { 5065 { Bad_Opcode },
4752 { "(bad)",» { XX } }, 5066 { Bad_Opcode },
4753 { "(bad)",» { XX } }, 5067 { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4754 { "vfnmsub213s%XW", { XM, Vex, EXVexWdq } }, 5068 },
4755 { "(bad)",» { XX } }, 5069
4756 }, 5070 /* PREFIX_VEX_0F38B6 */
4757 5071 {
4758 /* PREFIX_VEX_38B6 */ 5072 { Bad_Opcode },
4759 { 5073 { Bad_Opcode },
4760 { "(bad)",» { XX } },
4761 { "(bad)",» { XX } },
4762 { "vfmaddsub231p%XW", { XM, Vex, EXx } }, 5074 { "vfmaddsub231p%XW", { XM, Vex, EXx } },
4763 { "(bad)",» { XX } }, 5075 },
4764 }, 5076
4765 5077 /* PREFIX_VEX_0F38B7 */
4766 /* PREFIX_VEX_38B7 */ 5078 {
4767 { 5079 { Bad_Opcode },
4768 { "(bad)",» { XX } }, 5080 { Bad_Opcode },
4769 { "(bad)",» { XX } },
4770 { "vfmsubadd231p%XW", { XM, Vex, EXx } }, 5081 { "vfmsubadd231p%XW", { XM, Vex, EXx } },
4771 { "(bad)",» { XX } }, 5082 },
4772 }, 5083
4773 5084 /* PREFIX_VEX_0F38B8 */
4774 /* PREFIX_VEX_38B8 */ 5085 {
4775 { 5086 { Bad_Opcode },
4776 { "(bad)",» { XX } }, 5087 { Bad_Opcode },
4777 { "(bad)",» { XX } },
4778 { "vfmadd231p%XW", { XM, Vex, EXx } }, 5088 { "vfmadd231p%XW", { XM, Vex, EXx } },
4779 { "(bad)",» { XX } }, 5089 },
4780 }, 5090
4781 5091 /* PREFIX_VEX_0F38B9 */
4782 /* PREFIX_VEX_38B9 */ 5092 {
4783 { 5093 { Bad_Opcode },
4784 { "(bad)",» { XX } }, 5094 { Bad_Opcode },
4785 { "(bad)",» { XX } }, 5095 { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4786 { "vfmadd231s%XW", { XM, Vex, EXVexWdq } }, 5096 },
4787 { "(bad)",» { XX } }, 5097
4788 }, 5098 /* PREFIX_VEX_0F38BA */
4789 5099 {
4790 /* PREFIX_VEX_38BA */ 5100 { Bad_Opcode },
4791 { 5101 { Bad_Opcode },
4792 { "(bad)",» { XX } },
4793 { "(bad)",» { XX } },
4794 { "vfmsub231p%XW", { XM, Vex, EXx } }, 5102 { "vfmsub231p%XW", { XM, Vex, EXx } },
4795 { "(bad)",» { XX } }, 5103 },
4796 }, 5104
4797 5105 /* PREFIX_VEX_0F38BB */
4798 /* PREFIX_VEX_38BB */ 5106 {
4799 { 5107 { Bad_Opcode },
4800 { "(bad)",» { XX } }, 5108 { Bad_Opcode },
4801 { "(bad)",» { XX } }, 5109 { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4802 { "vfmsub231s%XW", { XM, Vex, EXVexWdq } }, 5110 },
4803 { "(bad)",» { XX } }, 5111
4804 }, 5112 /* PREFIX_VEX_0F38BC */
4805 5113 {
4806 /* PREFIX_VEX_38BC */ 5114 { Bad_Opcode },
4807 { 5115 { Bad_Opcode },
4808 { "(bad)",» { XX } },
4809 { "(bad)",» { XX } },
4810 { "vfnmadd231p%XW", { XM, Vex, EXx } }, 5116 { "vfnmadd231p%XW", { XM, Vex, EXx } },
4811 { "(bad)",» { XX } }, 5117 },
4812 }, 5118
4813 5119 /* PREFIX_VEX_0F38BD */
4814 /* PREFIX_VEX_38BD */ 5120 {
4815 { 5121 { Bad_Opcode },
4816 { "(bad)",» { XX } }, 5122 { Bad_Opcode },
4817 { "(bad)",» { XX } }, 5123 { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4818 { "vfnmadd231s%XW", { XM, Vex, EXVexWdq } }, 5124 },
4819 { "(bad)",» { XX } }, 5125
4820 }, 5126 /* PREFIX_VEX_0F38BE */
4821 5127 {
4822 /* PREFIX_VEX_38BE */ 5128 { Bad_Opcode },
4823 { 5129 { Bad_Opcode },
4824 { "(bad)",» { XX } },
4825 { "(bad)",» { XX } },
4826 { "vfnmsub231p%XW", { XM, Vex, EXx } }, 5130 { "vfnmsub231p%XW", { XM, Vex, EXx } },
4827 { "(bad)", { XX } }, 5131 },
4828 }, 5132
4829 5133 /* PREFIX_VEX_0F38BF */
4830 /* PREFIX_VEX_38BF */ 5134 {
4831 { 5135 { Bad_Opcode },
4832 { "(bad)", { XX } }, 5136 { Bad_Opcode },
4833 { "(bad)", { XX } }, 5137 { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
4834 { "vfnmsub231s%XW", { XM, Vex, EXVexWdq } }, 5138 },
4835 { "(bad)", { XX } }, 5139
4836 }, 5140 /* PREFIX_VEX_0F38DB */
4837 5141 {
4838 /* PREFIX_VEX_38DB */ 5142 { Bad_Opcode },
4839 { 5143 { Bad_Opcode },
4840 { "(bad)", { XX } }, 5144 { VEX_LEN_TABLE (VEX_LEN_0F38DB_P_2) },
4841 { "(bad)", { XX } }, 5145 },
4842 { VEX_LEN_TABLE (VEX_LEN_38DB_P_2) }, 5146
4843 { "(bad)", { XX } }, 5147 /* PREFIX_VEX_0F38DC */
4844 }, 5148 {
4845 5149 { Bad_Opcode },
4846 /* PREFIX_VEX_38DC */ 5150 { Bad_Opcode },
4847 { 5151 { VEX_LEN_TABLE (VEX_LEN_0F38DC_P_2) },
4848 { "(bad)", { XX } }, 5152 },
4849 { "(bad)", { XX } }, 5153
4850 { VEX_LEN_TABLE (VEX_LEN_38DC_P_2) }, 5154 /* PREFIX_VEX_0F38DD */
4851 { "(bad)", { XX } }, 5155 {
4852 }, 5156 { Bad_Opcode },
4853 5157 { Bad_Opcode },
4854 /* PREFIX_VEX_38DD */ 5158 { VEX_LEN_TABLE (VEX_LEN_0F38DD_P_2) },
4855 { 5159 },
4856 { "(bad)", { XX } }, 5160
4857 { "(bad)", { XX } }, 5161 /* PREFIX_VEX_0F38DE */
4858 { VEX_LEN_TABLE (VEX_LEN_38DD_P_2) }, 5162 {
4859 { "(bad)", { XX } }, 5163 { Bad_Opcode },
4860 }, 5164 { Bad_Opcode },
4861 5165 { VEX_LEN_TABLE (VEX_LEN_0F38DE_P_2) },
4862 /* PREFIX_VEX_38DE */ 5166 },
4863 { 5167
4864 { "(bad)", { XX } }, 5168 /* PREFIX_VEX_0F38DF */
4865 { "(bad)", { XX } }, 5169 {
4866 { VEX_LEN_TABLE (VEX_LEN_38DE_P_2) }, 5170 { Bad_Opcode },
4867 { "(bad)", { XX } }, 5171 { Bad_Opcode },
4868 }, 5172 { VEX_LEN_TABLE (VEX_LEN_0F38DF_P_2) },
4869 5173 },
4870 /* PREFIX_VEX_38DF */ 5174
4871 { 5175 /* PREFIX_VEX_0F38F2 */
4872 { "(bad)", { XX } }, 5176 {
4873 { "(bad)", { XX } }, 5177 { VEX_LEN_TABLE (VEX_LEN_0F38F2_P_0) },
4874 { VEX_LEN_TABLE (VEX_LEN_38DF_P_2) }, 5178 },
4875 { "(bad)", { XX } }, 5179
4876 }, 5180 /* PREFIX_VEX_0F38F3_REG_1 */
4877 5181 {
4878 /* PREFIX_VEX_3A04 */ 5182 { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_1_P_0) },
4879 { 5183 },
4880 { "(bad)", { XX } }, 5184
4881 { "(bad)", { XX } }, 5185 /* PREFIX_VEX_0F38F3_REG_2 */
4882 { "vpermilps", { XM, EXx, Ib } }, 5186 {
4883 { "(bad)", { XX } }, 5187 { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_2_P_0) },
4884 }, 5188 },
4885 5189
4886 /* PREFIX_VEX_3A05 */ 5190 /* PREFIX_VEX_0F38F3_REG_3 */
4887 { 5191 {
4888 { "(bad)", { XX } }, 5192 { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_3_P_0) },
4889 { "(bad)", { XX } }, 5193 },
4890 { "vpermilpd", { XM, EXx, Ib } }, 5194
4891 { "(bad)", { XX } }, 5195 /* PREFIX_VEX_0F38F5 */
4892 }, 5196 {
4893 5197 { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_0) },
4894 /* PREFIX_VEX_3A06 */ 5198 { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_1) },
4895 { 5199 { Bad_Opcode },
4896 { "(bad)", { XX } }, 5200 { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_3) },
4897 { "(bad)", { XX } }, 5201 },
4898 { VEX_LEN_TABLE (VEX_LEN_3A06_P_2) }, 5202
4899 { "(bad)", { XX } }, 5203 /* PREFIX_VEX_0F38F6 */
4900 }, 5204 {
4901 5205 { Bad_Opcode },
4902 /* PREFIX_VEX_3A08 */ 5206 { Bad_Opcode },
4903 { 5207 { Bad_Opcode },
4904 { "(bad)", { XX } }, 5208 { VEX_LEN_TABLE (VEX_LEN_0F38F6_P_3) },
4905 { "(bad)", { XX } }, 5209 },
4906 { "vroundps", { XM, EXx, Ib } }, 5210
4907 { "(bad)", { XX } }, 5211 /* PREFIX_VEX_0F38F7 */
4908 }, 5212 {
4909 5213 { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_0) },
4910 /* PREFIX_VEX_3A09 */ 5214 { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_1) },
4911 { 5215 { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_2) },
4912 { "(bad)", { XX } }, 5216 { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_3) },
4913 { "(bad)", { XX } }, 5217 },
4914 { "vroundpd", { XM, EXx, Ib } }, 5218
4915 { "(bad)", { XX } }, 5219 /* PREFIX_VEX_0F3A00 */
4916 }, 5220 {
4917 5221 { Bad_Opcode },
4918 /* PREFIX_VEX_3A0A */ 5222 { Bad_Opcode },
4919 { 5223 { VEX_LEN_TABLE (VEX_LEN_0F3A00_P_2) },
4920 { "(bad)", { XX } }, 5224 },
4921 { "(bad)", { XX } }, 5225
4922 { VEX_LEN_TABLE (VEX_LEN_3A0A_P_2) }, 5226 /* PREFIX_VEX_0F3A01 */
4923 { "(bad)", { XX } }, 5227 {
4924 }, 5228 { Bad_Opcode },
4925 5229 { Bad_Opcode },
4926 /* PREFIX_VEX_3A0B */ 5230 { VEX_LEN_TABLE (VEX_LEN_0F3A01_P_2) },
4927 { 5231 },
4928 { "(bad)", { XX } }, 5232
4929 { "(bad)", { XX } }, 5233 /* PREFIX_VEX_0F3A02 */
4930 { VEX_LEN_TABLE (VEX_LEN_3A0B_P_2) }, 5234 {
4931 { "(bad)", { XX } }, 5235 { Bad_Opcode },
4932 }, 5236 { Bad_Opcode },
4933 5237 { VEX_W_TABLE (VEX_W_0F3A02_P_2) },
4934 /* PREFIX_VEX_3A0C */ 5238 },
4935 { 5239
4936 { "(bad)", { XX } }, 5240 /* PREFIX_VEX_0F3A04 */
4937 { "(bad)", { XX } }, 5241 {
4938 { "vblendps", { XM, Vex, EXx, Ib } }, 5242 { Bad_Opcode },
4939 { "(bad)", { XX } }, 5243 { Bad_Opcode },
4940 }, 5244 { VEX_W_TABLE (VEX_W_0F3A04_P_2) },
4941 5245 },
4942 /* PREFIX_VEX_3A0D */ 5246
4943 { 5247 /* PREFIX_VEX_0F3A05 */
4944 { "(bad)", { XX } }, 5248 {
4945 { "(bad)", { XX } }, 5249 { Bad_Opcode },
4946 { "vblendpd", { XM, Vex, EXx, Ib } }, 5250 { Bad_Opcode },
4947 { "(bad)", { XX } }, 5251 { VEX_W_TABLE (VEX_W_0F3A05_P_2) },
4948 }, 5252 },
4949 5253
4950 /* PREFIX_VEX_3A0E */ 5254 /* PREFIX_VEX_0F3A06 */
4951 { 5255 {
4952 { "(bad)", { XX } }, 5256 { Bad_Opcode },
4953 { "(bad)", { XX } }, 5257 { Bad_Opcode },
4954 { VEX_LEN_TABLE (VEX_LEN_3A0E_P_2) }, 5258 { VEX_LEN_TABLE (VEX_LEN_0F3A06_P_2) },
4955 { "(bad)", { XX } }, 5259 },
4956 }, 5260
4957 5261 /* PREFIX_VEX_0F3A08 */
4958 /* PREFIX_VEX_3A0F */ 5262 {
4959 { 5263 { Bad_Opcode },
4960 { "(bad)", { XX } }, 5264 { Bad_Opcode },
4961 { "(bad)", { XX } }, 5265 { VEX_W_TABLE (VEX_W_0F3A08_P_2) },
4962 { VEX_LEN_TABLE (VEX_LEN_3A0F_P_2) }, 5266 },
4963 { "(bad)", { XX } }, 5267
4964 }, 5268 /* PREFIX_VEX_0F3A09 */
4965 5269 {
4966 /* PREFIX_VEX_3A14 */ 5270 { Bad_Opcode },
4967 { 5271 { Bad_Opcode },
4968 { "(bad)", { XX } }, 5272 { VEX_W_TABLE (VEX_W_0F3A09_P_2) },
4969 { "(bad)", { XX } }, 5273 },
4970 { VEX_LEN_TABLE (VEX_LEN_3A14_P_2) }, 5274
4971 { "(bad)", { XX } }, 5275 /* PREFIX_VEX_0F3A0A */
4972 }, 5276 {
4973 5277 { Bad_Opcode },
4974 /* PREFIX_VEX_3A15 */ 5278 { Bad_Opcode },
4975 { 5279 { VEX_LEN_TABLE (VEX_LEN_0F3A0A_P_2) },
4976 { "(bad)", { XX } }, 5280 },
4977 { "(bad)", { XX } }, 5281
4978 { VEX_LEN_TABLE (VEX_LEN_3A15_P_2) }, 5282 /* PREFIX_VEX_0F3A0B */
4979 { "(bad)", { XX } }, 5283 {
4980 }, 5284 { Bad_Opcode },
4981 5285 { Bad_Opcode },
4982 /* PREFIX_VEX_3A16 */ 5286 { VEX_LEN_TABLE (VEX_LEN_0F3A0B_P_2) },
4983 { 5287 },
4984 { "(bad)", { XX } }, 5288
4985 { "(bad)", { XX } }, 5289 /* PREFIX_VEX_0F3A0C */
4986 { VEX_LEN_TABLE (VEX_LEN_3A16_P_2) }, 5290 {
4987 { "(bad)", { XX } }, 5291 { Bad_Opcode },
4988 }, 5292 { Bad_Opcode },
4989 5293 { VEX_W_TABLE (VEX_W_0F3A0C_P_2) },
4990 /* PREFIX_VEX_3A17 */ 5294 },
4991 { 5295
4992 { "(bad)", { XX } }, 5296 /* PREFIX_VEX_0F3A0D */
4993 { "(bad)", { XX } }, 5297 {
4994 { VEX_LEN_TABLE (VEX_LEN_3A17_P_2) }, 5298 { Bad_Opcode },
4995 { "(bad)", { XX } }, 5299 { Bad_Opcode },
4996 }, 5300 { VEX_W_TABLE (VEX_W_0F3A0D_P_2) },
4997 5301 },
4998 /* PREFIX_VEX_3A18 */ 5302
4999 { 5303 /* PREFIX_VEX_0F3A0E */
5000 { "(bad)", { XX } }, 5304 {
5001 { "(bad)", { XX } }, 5305 { Bad_Opcode },
5002 { VEX_LEN_TABLE (VEX_LEN_3A18_P_2) }, 5306 { Bad_Opcode },
5003 { "(bad)", { XX } }, 5307 { VEX_W_TABLE (VEX_W_0F3A0E_P_2) },
5004 }, 5308 },
5005 5309
5006 /* PREFIX_VEX_3A19 */ 5310 /* PREFIX_VEX_0F3A0F */
5007 { 5311 {
5008 { "(bad)", { XX } }, 5312 { Bad_Opcode },
5009 { "(bad)", { XX } }, 5313 { Bad_Opcode },
5010 { VEX_LEN_TABLE (VEX_LEN_3A19_P_2) }, 5314 { VEX_W_TABLE (VEX_W_0F3A0F_P_2) },
5011 { "(bad)", { XX } }, 5315 },
5012 }, 5316
5013 5317 /* PREFIX_VEX_0F3A14 */
5014 /* PREFIX_VEX_3A20 */ 5318 {
5015 { 5319 { Bad_Opcode },
5016 { "(bad)", { XX } }, 5320 { Bad_Opcode },
5017 { "(bad)", { XX } }, 5321 { VEX_LEN_TABLE (VEX_LEN_0F3A14_P_2) },
5018 { VEX_LEN_TABLE (VEX_LEN_3A20_P_2) }, 5322 },
5019 { "(bad)", { XX } }, 5323
5020 }, 5324 /* PREFIX_VEX_0F3A15 */
5021 5325 {
5022 /* PREFIX_VEX_3A21 */ 5326 { Bad_Opcode },
5023 { 5327 { Bad_Opcode },
5024 { "(bad)", { XX } }, 5328 { VEX_LEN_TABLE (VEX_LEN_0F3A15_P_2) },
5025 { "(bad)", { XX } }, 5329 },
5026 { VEX_LEN_TABLE (VEX_LEN_3A21_P_2) }, 5330
5027 { "(bad)", { XX } }, 5331 /* PREFIX_VEX_0F3A16 */
5028 }, 5332 {
5029 5333 { Bad_Opcode },
5030 /* PREFIX_VEX_3A22 */ 5334 { Bad_Opcode },
5031 { 5335 { VEX_LEN_TABLE (VEX_LEN_0F3A16_P_2) },
5032 { "(bad)", { XX } }, 5336 },
5033 { "(bad)", { XX } }, 5337
5034 { VEX_LEN_TABLE (VEX_LEN_3A22_P_2) }, 5338 /* PREFIX_VEX_0F3A17 */
5035 { "(bad)", { XX } }, 5339 {
5036 }, 5340 { Bad_Opcode },
5037 5341 { Bad_Opcode },
5038 /* PREFIX_VEX_3A40 */ 5342 { VEX_LEN_TABLE (VEX_LEN_0F3A17_P_2) },
5039 { 5343 },
5040 { "(bad)", { XX } }, 5344
5041 { "(bad)", { XX } }, 5345 /* PREFIX_VEX_0F3A18 */
5042 { "vdpps", { XM, Vex, EXx, Ib } }, 5346 {
5043 { "(bad)", { XX } }, 5347 { Bad_Opcode },
5044 }, 5348 { Bad_Opcode },
5045 5349 { VEX_LEN_TABLE (VEX_LEN_0F3A18_P_2) },
5046 /* PREFIX_VEX_3A41 */ 5350 },
5047 { 5351
5048 { "(bad)", { XX } }, 5352 /* PREFIX_VEX_0F3A19 */
5049 { "(bad)", { XX } }, 5353 {
5050 { VEX_LEN_TABLE (VEX_LEN_3A41_P_2) }, 5354 { Bad_Opcode },
5051 { "(bad)", { XX } }, 5355 { Bad_Opcode },
5052 }, 5356 { VEX_LEN_TABLE (VEX_LEN_0F3A19_P_2) },
5053 5357 },
5054 /* PREFIX_VEX_3A42 */ 5358
5055 { 5359 /* PREFIX_VEX_0F3A1D */
5056 { "(bad)", { XX } }, 5360 {
5057 { "(bad)", { XX } }, 5361 { Bad_Opcode },
5058 { VEX_LEN_TABLE (VEX_LEN_3A42_P_2) }, 5362 { Bad_Opcode },
5059 { "(bad)", { XX } }, 5363 { "vcvtps2ph", { EXxmmq, XM, Ib } },
5060 }, 5364 },
5061 5365
5062 /* PREFIX_VEX_3A44 */ 5366 /* PREFIX_VEX_0F3A20 */
5063 { 5367 {
5064 { "(bad)", { XX } }, 5368 { Bad_Opcode },
5065 { "(bad)", { XX } }, 5369 { Bad_Opcode },
5066 { VEX_LEN_TABLE (VEX_LEN_3A44_P_2) }, 5370 { VEX_LEN_TABLE (VEX_LEN_0F3A20_P_2) },
5067 { "(bad)", { XX } }, 5371 },
5068 }, 5372
5069 5373 /* PREFIX_VEX_0F3A21 */
5070 /* PREFIX_VEX_3A4A */ 5374 {
5071 { 5375 { Bad_Opcode },
5072 { "(bad)", { XX } }, 5376 { Bad_Opcode },
5073 { "(bad)", { XX } }, 5377 { VEX_LEN_TABLE (VEX_LEN_0F3A21_P_2) },
5074 { "vblendvps", { XM, Vex, EXx, XMVexI4 } }, 5378 },
5075 { "(bad)", { XX } }, 5379
5076 }, 5380 /* PREFIX_VEX_0F3A22 */
5077 5381 {
5078 /* PREFIX_VEX_3A4B */ 5382 { Bad_Opcode },
5079 { 5383 { Bad_Opcode },
5080 { "(bad)", { XX } }, 5384 { VEX_LEN_TABLE (VEX_LEN_0F3A22_P_2) },
5081 { "(bad)", { XX } }, 5385 },
5082 { "vblendvpd", { XM, Vex, EXx, XMVexI4 } }, 5386
5083 { "(bad)", { XX } }, 5387 /* PREFIX_VEX_0F3A38 */
5084 }, 5388 {
5085 5389 { Bad_Opcode },
5086 /* PREFIX_VEX_3A4C */ 5390 { Bad_Opcode },
5087 { 5391 { VEX_LEN_TABLE (VEX_LEN_0F3A38_P_2) },
5088 { "(bad)", { XX } }, 5392 },
5089 { "(bad)", { XX } }, 5393
5090 { VEX_LEN_TABLE (VEX_LEN_3A4C_P_2) }, 5394 /* PREFIX_VEX_0F3A39 */
5091 { "(bad)", { XX } }, 5395 {
5092 }, 5396 { Bad_Opcode },
5093 5397 { Bad_Opcode },
5094 /* PREFIX_VEX_3A5C */ 5398 { VEX_LEN_TABLE (VEX_LEN_0F3A39_P_2) },
5095 { 5399 },
5096 { "(bad)", { XX } }, 5400
5097 { "(bad)", { XX } }, 5401 /* PREFIX_VEX_0F3A40 */
5098 { "vfmaddsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5402 {
5099 { "(bad)", { XX } }, 5403 { Bad_Opcode },
5100 }, 5404 { Bad_Opcode },
5101 5405 { VEX_W_TABLE (VEX_W_0F3A40_P_2) },
5102 /* PREFIX_VEX_3A5D */ 5406 },
5103 { 5407
5104 { "(bad)", { XX } }, 5408 /* PREFIX_VEX_0F3A41 */
5105 { "(bad)", { XX } }, 5409 {
5106 { "vfmaddsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5410 { Bad_Opcode },
5107 { "(bad)", { XX } }, 5411 { Bad_Opcode },
5108 }, 5412 { VEX_LEN_TABLE (VEX_LEN_0F3A41_P_2) },
5109 5413 },
5110 /* PREFIX_VEX_3A5E */ 5414
5111 { 5415 /* PREFIX_VEX_0F3A42 */
5112 { "(bad)", { XX } }, 5416 {
5113 { "(bad)", { XX } }, 5417 { Bad_Opcode },
5114 { "vfmsubaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5418 { Bad_Opcode },
5115 { "(bad)", { XX } }, 5419 { VEX_W_TABLE (VEX_W_0F3A42_P_2) },
5116 }, 5420 },
5117 5421
5118 /* PREFIX_VEX_3A5F */ 5422 /* PREFIX_VEX_0F3A44 */
5119 { 5423 {
5120 { "(bad)", { XX } }, 5424 { Bad_Opcode },
5121 { "(bad)", { XX } }, 5425 { Bad_Opcode },
5122 { "vfmsubaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5426 { VEX_LEN_TABLE (VEX_LEN_0F3A44_P_2) },
5123 { "(bad)", { XX } }, 5427 },
5124 }, 5428
5125 5429 /* PREFIX_VEX_0F3A46 */
5126 /* PREFIX_VEX_3A60 */ 5430 {
5127 { 5431 { Bad_Opcode },
5128 { "(bad)", { XX } }, 5432 { Bad_Opcode },
5129 { "(bad)", { XX } }, 5433 { VEX_LEN_TABLE (VEX_LEN_0F3A46_P_2) },
5130 { VEX_LEN_TABLE (VEX_LEN_3A60_P_2) }, 5434 },
5131 { "(bad)", { XX } }, 5435
5132 }, 5436 /* PREFIX_VEX_0F3A48 */
5133 5437 {
5134 /* PREFIX_VEX_3A61 */ 5438 { Bad_Opcode },
5135 { 5439 { Bad_Opcode },
5136 { "(bad)", { XX } }, 5440 { VEX_W_TABLE (VEX_W_0F3A48_P_2) },
5137 { "(bad)", { XX } }, 5441 },
5138 { VEX_LEN_TABLE (VEX_LEN_3A61_P_2) }, 5442
5139 { "(bad)", { XX } }, 5443 /* PREFIX_VEX_0F3A49 */
5140 }, 5444 {
5141 5445 { Bad_Opcode },
5142 /* PREFIX_VEX_3A62 */ 5446 { Bad_Opcode },
5143 { 5447 { VEX_W_TABLE (VEX_W_0F3A49_P_2) },
5144 { "(bad)", { XX } }, 5448 },
5145 { "(bad)", { XX } }, 5449
5146 { VEX_LEN_TABLE (VEX_LEN_3A62_P_2) }, 5450 /* PREFIX_VEX_0F3A4A */
5147 { "(bad)", { XX } }, 5451 {
5148 }, 5452 { Bad_Opcode },
5149 5453 { Bad_Opcode },
5150 /* PREFIX_VEX_3A63 */ 5454 { VEX_W_TABLE (VEX_W_0F3A4A_P_2) },
5151 { 5455 },
5152 { "(bad)", { XX } }, 5456
5153 { "(bad)", { XX } }, 5457 /* PREFIX_VEX_0F3A4B */
5154 { VEX_LEN_TABLE (VEX_LEN_3A63_P_2) }, 5458 {
5155 { "(bad)", { XX } }, 5459 { Bad_Opcode },
5156 }, 5460 { Bad_Opcode },
5157 5461 { VEX_W_TABLE (VEX_W_0F3A4B_P_2) },
5158 /* PREFIX_VEX_3A68 */ 5462 },
5159 { 5463
5160 { "(bad)", { XX } }, 5464 /* PREFIX_VEX_0F3A4C */
5161 { "(bad)", { XX } }, 5465 {
5162 { "vfmaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5466 { Bad_Opcode },
5163 { "(bad)", { XX } }, 5467 { Bad_Opcode },
5164 }, 5468 { VEX_W_TABLE (VEX_W_0F3A4C_P_2) },
5165 5469 },
5166 /* PREFIX_VEX_3A69 */ 5470
5167 { 5471 /* PREFIX_VEX_0F3A5C */
5168 { "(bad)", { XX } }, 5472 {
5169 { "(bad)", { XX } }, 5473 { Bad_Opcode },
5170 { "vfmaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5474 { Bad_Opcode },
5171 { "(bad)", { XX } }, 5475 { "vfmaddsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5172 }, 5476 },
5173 5477
5174 /* PREFIX_VEX_3A6A */ 5478 /* PREFIX_VEX_0F3A5D */
5175 { 5479 {
5176 { "(bad)", { XX } }, 5480 { Bad_Opcode },
5177 { "(bad)", { XX } }, 5481 { Bad_Opcode },
5178 { VEX_LEN_TABLE (VEX_LEN_3A6A_P_2) }, 5482 { "vfmaddsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5179 { "(bad)", { XX } }, 5483 },
5180 }, 5484
5181 5485 /* PREFIX_VEX_0F3A5E */
5182 /* PREFIX_VEX_3A6B */ 5486 {
5183 { 5487 { Bad_Opcode },
5184 { "(bad)", { XX } }, 5488 { Bad_Opcode },
5185 { "(bad)", { XX } }, 5489 { "vfmsubaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5186 { VEX_LEN_TABLE (VEX_LEN_3A6B_P_2) }, 5490 },
5187 { "(bad)", { XX } }, 5491
5188 }, 5492 /* PREFIX_VEX_0F3A5F */
5189 5493 {
5190 /* PREFIX_VEX_3A6C */ 5494 { Bad_Opcode },
5191 { 5495 { Bad_Opcode },
5192 { "(bad)", { XX } }, 5496 { "vfmsubaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5193 { "(bad)", { XX } }, 5497 },
5194 { "vfmsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5498
5195 { "(bad)", { XX } }, 5499 /* PREFIX_VEX_0F3A60 */
5196 }, 5500 {
5197 5501 { Bad_Opcode },
5198 /* PREFIX_VEX_3A6D */ 5502 { Bad_Opcode },
5199 { 5503 { VEX_LEN_TABLE (VEX_LEN_0F3A60_P_2) },
5200 { "(bad)", { XX } }, 5504 { Bad_Opcode },
5201 { "(bad)", { XX } }, 5505 },
5202 { "vfmsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5506
5203 { "(bad)", { XX } }, 5507 /* PREFIX_VEX_0F3A61 */
5204 }, 5508 {
5205 5509 { Bad_Opcode },
5206 /* PREFIX_VEX_3A6E */ 5510 { Bad_Opcode },
5207 { 5511 { VEX_LEN_TABLE (VEX_LEN_0F3A61_P_2) },
5208 { "(bad)", { XX } }, 5512 },
5209 { "(bad)", { XX } }, 5513
5210 { VEX_LEN_TABLE (VEX_LEN_3A6E_P_2) }, 5514 /* PREFIX_VEX_0F3A62 */
5211 { "(bad)", { XX } }, 5515 {
5212 }, 5516 { Bad_Opcode },
5213 5517 { Bad_Opcode },
5214 /* PREFIX_VEX_3A6F */ 5518 { VEX_LEN_TABLE (VEX_LEN_0F3A62_P_2) },
5215 { 5519 },
5216 { "(bad)", { XX } }, 5520
5217 { "(bad)", { XX } }, 5521 /* PREFIX_VEX_0F3A63 */
5218 { VEX_LEN_TABLE (VEX_LEN_3A6F_P_2) }, 5522 {
5219 { "(bad)", { XX } }, 5523 { Bad_Opcode },
5220 }, 5524 { Bad_Opcode },
5221 5525 { VEX_LEN_TABLE (VEX_LEN_0F3A63_P_2) },
5222 /* PREFIX_VEX_3A78 */ 5526 },
5223 { 5527
5224 { "(bad)", { XX } }, 5528 /* PREFIX_VEX_0F3A68 */
5225 { "(bad)", { XX } }, 5529 {
5226 { "vfnmaddps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5530 { Bad_Opcode },
5227 { "(bad)", { XX } }, 5531 { Bad_Opcode },
5228 }, 5532 { "vfmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5229 5533 },
5230 /* PREFIX_VEX_3A79 */ 5534
5231 { 5535 /* PREFIX_VEX_0F3A69 */
5232 { "(bad)", { XX } }, 5536 {
5233 { "(bad)", { XX } }, 5537 { Bad_Opcode },
5234 { "vfnmaddpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5538 { Bad_Opcode },
5235 { "(bad)", { XX } }, 5539 { "vfmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5236 }, 5540 },
5237 5541
5238 /* PREFIX_VEX_3A7A */ 5542 /* PREFIX_VEX_0F3A6A */
5239 { 5543 {
5240 { "(bad)", { XX } }, 5544 { Bad_Opcode },
5241 { "(bad)", { XX } }, 5545 { Bad_Opcode },
5242 { VEX_LEN_TABLE (VEX_LEN_3A7A_P_2) }, 5546 { VEX_LEN_TABLE (VEX_LEN_0F3A6A_P_2) },
5243 { "(bad)", { XX } }, 5547 },
5244 }, 5548
5245 5549 /* PREFIX_VEX_0F3A6B */
5246 /* PREFIX_VEX_3A7B */ 5550 {
5247 { 5551 { Bad_Opcode },
5248 { "(bad)", { XX } }, 5552 { Bad_Opcode },
5249 { "(bad)", { XX } }, 5553 { VEX_LEN_TABLE (VEX_LEN_0F3A6B_P_2) },
5250 { VEX_LEN_TABLE (VEX_LEN_3A7B_P_2) }, 5554 },
5251 { "(bad)", { XX } }, 5555
5252 }, 5556 /* PREFIX_VEX_0F3A6C */
5253 5557 {
5254 /* PREFIX_VEX_3A7C */ 5558 { Bad_Opcode },
5255 { 5559 { Bad_Opcode },
5256 { "(bad)", { XX } }, 5560 { "vfmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5257 { "(bad)", { XX } }, 5561 },
5258 { "vfnmsubps", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5562
5259 { "(bad)", { XX } }, 5563 /* PREFIX_VEX_0F3A6D */
5260 }, 5564 {
5261 5565 { Bad_Opcode },
5262 /* PREFIX_VEX_3A7D */ 5566 { Bad_Opcode },
5263 { 5567 { "vfmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5264 { "(bad)", { XX } }, 5568 },
5265 { "(bad)", { XX } }, 5569
5266 { "vfnmsubpd", { XMVexW, VexFMA, EXVexW, EXVexW, VexI4 } }, 5570 /* PREFIX_VEX_0F3A6E */
5267 { "(bad)", { XX } }, 5571 {
5268 }, 5572 { Bad_Opcode },
5269 5573 { Bad_Opcode },
5270 /* PREFIX_VEX_3A7E */ 5574 { VEX_LEN_TABLE (VEX_LEN_0F3A6E_P_2) },
5271 { 5575 },
5272 { "(bad)", { XX } }, 5576
5273 { "(bad)", { XX } }, 5577 /* PREFIX_VEX_0F3A6F */
5274 { VEX_LEN_TABLE (VEX_LEN_3A7E_P_2) }, 5578 {
5275 { "(bad)", { XX } }, 5579 { Bad_Opcode },
5276 }, 5580 { Bad_Opcode },
5277 5581 { VEX_LEN_TABLE (VEX_LEN_0F3A6F_P_2) },
5278 /* PREFIX_VEX_3A7F */ 5582 },
5279 { 5583
5280 { "(bad)", { XX } }, 5584 /* PREFIX_VEX_0F3A78 */
5281 { "(bad)", { XX } }, 5585 {
5282 { VEX_LEN_TABLE (VEX_LEN_3A7F_P_2) }, 5586 { Bad_Opcode },
5283 { "(bad)", { XX } }, 5587 { Bad_Opcode },
5284 }, 5588 { "vfnmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5285 5589 },
5286 /* PREFIX_VEX_3ADF */ 5590
5287 { 5591 /* PREFIX_VEX_0F3A79 */
5288 { "(bad)", { XX } }, 5592 {
5289 { "(bad)", { XX } }, 5593 { Bad_Opcode },
5290 { VEX_LEN_TABLE (VEX_LEN_3ADF_P_2) }, 5594 { Bad_Opcode },
5291 { "(bad)", { XX } }, 5595 { "vfnmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5596 },
5597
5598 /* PREFIX_VEX_0F3A7A */
5599 {
5600 { Bad_Opcode },
5601 { Bad_Opcode },
5602 { VEX_LEN_TABLE (VEX_LEN_0F3A7A_P_2) },
5603 },
5604
5605 /* PREFIX_VEX_0F3A7B */
5606 {
5607 { Bad_Opcode },
5608 { Bad_Opcode },
5609 { VEX_LEN_TABLE (VEX_LEN_0F3A7B_P_2) },
5610 },
5611
5612 /* PREFIX_VEX_0F3A7C */
5613 {
5614 { Bad_Opcode },
5615 { Bad_Opcode },
5616 { "vfnmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5617 { Bad_Opcode },
5618 },
5619
5620 /* PREFIX_VEX_0F3A7D */
5621 {
5622 { Bad_Opcode },
5623 { Bad_Opcode },
5624 { "vfnmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
5625 },
5626
5627 /* PREFIX_VEX_0F3A7E */
5628 {
5629 { Bad_Opcode },
5630 { Bad_Opcode },
5631 { VEX_LEN_TABLE (VEX_LEN_0F3A7E_P_2) },
5632 },
5633
5634 /* PREFIX_VEX_0F3A7F */
5635 {
5636 { Bad_Opcode },
5637 { Bad_Opcode },
5638 { VEX_LEN_TABLE (VEX_LEN_0F3A7F_P_2) },
5639 },
5640
5641 /* PREFIX_VEX_0F3ADF */
5642 {
5643 { Bad_Opcode },
5644 { Bad_Opcode },
5645 { VEX_LEN_TABLE (VEX_LEN_0F3ADF_P_2) },
5646 },
5647
5648 /* PREFIX_VEX_0F3AF0 */
5649 {
5650 { Bad_Opcode },
5651 { Bad_Opcode },
5652 { Bad_Opcode },
5653 { VEX_LEN_TABLE (VEX_LEN_0F3AF0_P_3) },
5292 }, 5654 },
5293 }; 5655 };
5294 5656
5295 static const struct dis386 x86_64_table[][2] = { 5657 static const struct dis386 x86_64_table[][2] = {
5296 /* X86_64_06 */ 5658 /* X86_64_06 */
5297 { 5659 {
5298 { "push{T|}", { es } }, 5660 { "pushP", { es } },
5299 { "(bad)", { XX } },
5300 }, 5661 },
5301 5662
5302 /* X86_64_07 */ 5663 /* X86_64_07 */
5303 { 5664 {
5304 { "pop{T|}", { es } }, 5665 { "popP", { es } },
5305 { "(bad)", { XX } },
5306 }, 5666 },
5307 5667
5308 /* X86_64_0D */ 5668 /* X86_64_0D */
5309 { 5669 {
5310 { "push{T|}", { cs } }, 5670 { "pushP", { cs } },
5311 { "(bad)", { XX } },
5312 }, 5671 },
5313 5672
5314 /* X86_64_16 */ 5673 /* X86_64_16 */
5315 { 5674 {
5316 { "push{T|}", { ss } }, 5675 { "pushP", { ss } },
5317 { "(bad)", { XX } },
5318 }, 5676 },
5319 5677
5320 /* X86_64_17 */ 5678 /* X86_64_17 */
5321 { 5679 {
5322 { "pop{T|}", { ss } }, 5680 { "popP", { ss } },
5323 { "(bad)", { XX } },
5324 }, 5681 },
5325 5682
5326 /* X86_64_1E */ 5683 /* X86_64_1E */
5327 { 5684 {
5328 { "push{T|}", { ds } }, 5685 { "pushP", { ds } },
5329 { "(bad)", { XX } },
5330 }, 5686 },
5331 5687
5332 /* X86_64_1F */ 5688 /* X86_64_1F */
5333 { 5689 {
5334 { "pop{T|}", { ds } }, 5690 { "popP", { ds } },
5335 { "(bad)", { XX } },
5336 }, 5691 },
5337 5692
5338 /* X86_64_27 */ 5693 /* X86_64_27 */
5339 { 5694 {
5340 { "daa", { XX } }, 5695 { "daa", { XX } },
5341 { "(bad)", { XX } },
5342 }, 5696 },
5343 5697
5344 /* X86_64_2F */ 5698 /* X86_64_2F */
5345 { 5699 {
5346 { "das", { XX } }, 5700 { "das", { XX } },
5347 { "(bad)", { XX } },
5348 }, 5701 },
5349 5702
5350 /* X86_64_37 */ 5703 /* X86_64_37 */
5351 { 5704 {
5352 { "aaa", { XX } }, 5705 { "aaa", { XX } },
5353 { "(bad)", { XX } },
5354 }, 5706 },
5355 5707
5356 /* X86_64_3F */ 5708 /* X86_64_3F */
5357 { 5709 {
5358 { "aas", { XX } }, 5710 { "aas", { XX } },
5359 { "(bad)", { XX } },
5360 }, 5711 },
5361 5712
5362 /* X86_64_60 */ 5713 /* X86_64_60 */
5363 { 5714 {
5364 { "pusha{P|}", { XX } }, 5715 { "pushaP", { XX } },
5365 { "(bad)", { XX } },
5366 }, 5716 },
5367 5717
5368 /* X86_64_61 */ 5718 /* X86_64_61 */
5369 { 5719 {
5370 { "popa{P|}", { XX } }, 5720 { "popaP", { XX } },
5371 { "(bad)", { XX } },
5372 }, 5721 },
5373 5722
5374 /* X86_64_62 */ 5723 /* X86_64_62 */
5375 { 5724 {
5376 { MOD_TABLE (MOD_62_32BIT) }, 5725 { MOD_TABLE (MOD_62_32BIT) },
5377 { "(bad)", { XX } },
5378 }, 5726 },
5379 5727
5380 /* X86_64_63 */ 5728 /* X86_64_63 */
5381 { 5729 {
5382 { "arpl", { Ew, Gw } }, 5730 { "arpl", { Ew, Gw } },
5383 { "movs{lq|xd}", { Gv, Ed } }, 5731 { "movs{lq|xd}", { Gv, Ed } },
5384 }, 5732 },
5385 5733
5386 /* X86_64_6D */ 5734 /* X86_64_6D */
5387 { 5735 {
5388 { "ins{R|}", { Yzr, indirDX } }, 5736 { "ins{R|}", { Yzr, indirDX } },
5389 { "ins{G|}", { Yzr, indirDX } }, 5737 { "ins{G|}", { Yzr, indirDX } },
5390 }, 5738 },
5391 5739
5392 /* X86_64_6F */ 5740 /* X86_64_6F */
5393 { 5741 {
5394 { "outs{R|}", { indirDXr, Xz } }, 5742 { "outs{R|}", { indirDXr, Xz } },
5395 { "outs{G|}", { indirDXr, Xz } }, 5743 { "outs{G|}", { indirDXr, Xz } },
5396 }, 5744 },
5397 5745
5398 /* X86_64_9A */ 5746 /* X86_64_9A */
5399 { 5747 {
5400 { "Jcall{T|}", { Ap } }, 5748 { "Jcall{T|}", { Ap } },
5401 { "(bad)", { XX } },
5402 }, 5749 },
5403 5750
5404 /* X86_64_C4 */ 5751 /* X86_64_C4 */
5405 { 5752 {
5406 { MOD_TABLE (MOD_C4_32BIT) }, 5753 { MOD_TABLE (MOD_C4_32BIT) },
5407 { VEX_C4_TABLE (VEX_0F) }, 5754 { VEX_C4_TABLE (VEX_0F) },
5408 }, 5755 },
5409 5756
5410 /* X86_64_C5 */ 5757 /* X86_64_C5 */
5411 { 5758 {
5412 { MOD_TABLE (MOD_C5_32BIT) }, 5759 { MOD_TABLE (MOD_C5_32BIT) },
5413 { VEX_C5_TABLE (VEX_0F) }, 5760 { VEX_C5_TABLE (VEX_0F) },
5414 }, 5761 },
5415 5762
5416 /* X86_64_CE */ 5763 /* X86_64_CE */
5417 { 5764 {
5418 { "into", { XX } }, 5765 { "into", { XX } },
5419 { "(bad)", { XX } },
5420 }, 5766 },
5421 5767
5422 /* X86_64_D4 */ 5768 /* X86_64_D4 */
5423 { 5769 {
5424 { "aam", { sIb } }, 5770 { "aam", { Ib } },
5425 { "(bad)", { XX } },
5426 }, 5771 },
5427 5772
5428 /* X86_64_D5 */ 5773 /* X86_64_D5 */
5429 { 5774 {
5430 { "aad", { sIb } }, 5775 { "aad", { Ib } },
5431 { "(bad)", { XX } },
5432 }, 5776 },
5433 5777
5434 /* X86_64_EA */ 5778 /* X86_64_EA */
5435 { 5779 {
5436 { "Jjmp{T|}", { Ap } }, 5780 { "Jjmp{T|}", { Ap } },
5437 { "(bad)", { XX } },
5438 }, 5781 },
5439 5782
5440 /* X86_64_0F01_REG_0 */ 5783 /* X86_64_0F01_REG_0 */
5441 { 5784 {
5442 { "sgdt{Q|IQ}", { M } }, 5785 { "sgdt{Q|IQ}", { M } },
5443 { "sgdt", { M } }, 5786 { "sgdt", { M } },
5444 }, 5787 },
5445 5788
5446 /* X86_64_0F01_REG_1 */ 5789 /* X86_64_0F01_REG_1 */
5447 { 5790 {
(...skipping 25 matching lines...) Expand all
5473 { "phaddsw", { MX, EM } }, 5816 { "phaddsw", { MX, EM } },
5474 { "pmaddubsw", { MX, EM } }, 5817 { "pmaddubsw", { MX, EM } },
5475 { "phsubw", { MX, EM } }, 5818 { "phsubw", { MX, EM } },
5476 { "phsubd", { MX, EM } }, 5819 { "phsubd", { MX, EM } },
5477 { "phsubsw", { MX, EM } }, 5820 { "phsubsw", { MX, EM } },
5478 /* 08 */ 5821 /* 08 */
5479 { "psignb", { MX, EM } }, 5822 { "psignb", { MX, EM } },
5480 { "psignw", { MX, EM } }, 5823 { "psignw", { MX, EM } },
5481 { "psignd", { MX, EM } }, 5824 { "psignd", { MX, EM } },
5482 { "pmulhrsw", { MX, EM } }, 5825 { "pmulhrsw", { MX, EM } },
5483 { "(bad)",» » { XX } }, 5826 { Bad_Opcode },
5484 { "(bad)",» » { XX } }, 5827 { Bad_Opcode },
5485 { "(bad)",» » { XX } }, 5828 { Bad_Opcode },
5486 { "(bad)",» » { XX } }, 5829 { Bad_Opcode },
5487 /* 10 */ 5830 /* 10 */
5488 { PREFIX_TABLE (PREFIX_0F3810) }, 5831 { PREFIX_TABLE (PREFIX_0F3810) },
5489 { "(bad)",» » { XX } }, 5832 { Bad_Opcode },
5490 { "(bad)",» » { XX } }, 5833 { Bad_Opcode },
5491 { "(bad)",» » { XX } }, 5834 { Bad_Opcode },
5492 { PREFIX_TABLE (PREFIX_0F3814) }, 5835 { PREFIX_TABLE (PREFIX_0F3814) },
5493 { PREFIX_TABLE (PREFIX_0F3815) }, 5836 { PREFIX_TABLE (PREFIX_0F3815) },
5494 { "(bad)",» » { XX } }, 5837 { Bad_Opcode },
5495 { PREFIX_TABLE (PREFIX_0F3817) }, 5838 { PREFIX_TABLE (PREFIX_0F3817) },
5496 /* 18 */ 5839 /* 18 */
5497 { "(bad)",» » { XX } }, 5840 { Bad_Opcode },
5498 { "(bad)",» » { XX } }, 5841 { Bad_Opcode },
5499 { "(bad)",» » { XX } }, 5842 { Bad_Opcode },
5500 { "(bad)",» » { XX } }, 5843 { Bad_Opcode },
5501 { "pabsb", { MX, EM } }, 5844 { "pabsb", { MX, EM } },
5502 { "pabsw", { MX, EM } }, 5845 { "pabsw", { MX, EM } },
5503 { "pabsd", { MX, EM } }, 5846 { "pabsd", { MX, EM } },
5504 { "(bad)",» » { XX } }, 5847 { Bad_Opcode },
5505 /* 20 */ 5848 /* 20 */
5506 { PREFIX_TABLE (PREFIX_0F3820) }, 5849 { PREFIX_TABLE (PREFIX_0F3820) },
5507 { PREFIX_TABLE (PREFIX_0F3821) }, 5850 { PREFIX_TABLE (PREFIX_0F3821) },
5508 { PREFIX_TABLE (PREFIX_0F3822) }, 5851 { PREFIX_TABLE (PREFIX_0F3822) },
5509 { PREFIX_TABLE (PREFIX_0F3823) }, 5852 { PREFIX_TABLE (PREFIX_0F3823) },
5510 { PREFIX_TABLE (PREFIX_0F3824) }, 5853 { PREFIX_TABLE (PREFIX_0F3824) },
5511 { PREFIX_TABLE (PREFIX_0F3825) }, 5854 { PREFIX_TABLE (PREFIX_0F3825) },
5512 { "(bad)",» » { XX } }, 5855 { Bad_Opcode },
5513 { "(bad)",» » { XX } }, 5856 { Bad_Opcode },
5514 /* 28 */ 5857 /* 28 */
5515 { PREFIX_TABLE (PREFIX_0F3828) }, 5858 { PREFIX_TABLE (PREFIX_0F3828) },
5516 { PREFIX_TABLE (PREFIX_0F3829) }, 5859 { PREFIX_TABLE (PREFIX_0F3829) },
5517 { PREFIX_TABLE (PREFIX_0F382A) }, 5860 { PREFIX_TABLE (PREFIX_0F382A) },
5518 { PREFIX_TABLE (PREFIX_0F382B) }, 5861 { PREFIX_TABLE (PREFIX_0F382B) },
5519 { "(bad)",» » { XX } }, 5862 { Bad_Opcode },
5520 { "(bad)",» » { XX } }, 5863 { Bad_Opcode },
5521 { "(bad)",» » { XX } }, 5864 { Bad_Opcode },
5522 { "(bad)",» » { XX } }, 5865 { Bad_Opcode },
5523 /* 30 */ 5866 /* 30 */
5524 { PREFIX_TABLE (PREFIX_0F3830) }, 5867 { PREFIX_TABLE (PREFIX_0F3830) },
5525 { PREFIX_TABLE (PREFIX_0F3831) }, 5868 { PREFIX_TABLE (PREFIX_0F3831) },
5526 { PREFIX_TABLE (PREFIX_0F3832) }, 5869 { PREFIX_TABLE (PREFIX_0F3832) },
5527 { PREFIX_TABLE (PREFIX_0F3833) }, 5870 { PREFIX_TABLE (PREFIX_0F3833) },
5528 { PREFIX_TABLE (PREFIX_0F3834) }, 5871 { PREFIX_TABLE (PREFIX_0F3834) },
5529 { PREFIX_TABLE (PREFIX_0F3835) }, 5872 { PREFIX_TABLE (PREFIX_0F3835) },
5530 { "(bad)",» » { XX } }, 5873 { Bad_Opcode },
5531 { PREFIX_TABLE (PREFIX_0F3837) }, 5874 { PREFIX_TABLE (PREFIX_0F3837) },
5532 /* 38 */ 5875 /* 38 */
5533 { PREFIX_TABLE (PREFIX_0F3838) }, 5876 { PREFIX_TABLE (PREFIX_0F3838) },
5534 { PREFIX_TABLE (PREFIX_0F3839) }, 5877 { PREFIX_TABLE (PREFIX_0F3839) },
5535 { PREFIX_TABLE (PREFIX_0F383A) }, 5878 { PREFIX_TABLE (PREFIX_0F383A) },
5536 { PREFIX_TABLE (PREFIX_0F383B) }, 5879 { PREFIX_TABLE (PREFIX_0F383B) },
5537 { PREFIX_TABLE (PREFIX_0F383C) }, 5880 { PREFIX_TABLE (PREFIX_0F383C) },
5538 { PREFIX_TABLE (PREFIX_0F383D) }, 5881 { PREFIX_TABLE (PREFIX_0F383D) },
5539 { PREFIX_TABLE (PREFIX_0F383E) }, 5882 { PREFIX_TABLE (PREFIX_0F383E) },
5540 { PREFIX_TABLE (PREFIX_0F383F) }, 5883 { PREFIX_TABLE (PREFIX_0F383F) },
5541 /* 40 */ 5884 /* 40 */
5542 { PREFIX_TABLE (PREFIX_0F3840) }, 5885 { PREFIX_TABLE (PREFIX_0F3840) },
5543 { PREFIX_TABLE (PREFIX_0F3841) }, 5886 { PREFIX_TABLE (PREFIX_0F3841) },
5544 { "(bad)",» » { XX } }, 5887 { Bad_Opcode },
5545 { "(bad)",» » { XX } }, 5888 { Bad_Opcode },
5546 { "(bad)",» » { XX } }, 5889 { Bad_Opcode },
5547 { "(bad)",» » { XX } }, 5890 { Bad_Opcode },
5548 { "(bad)",» » { XX } }, 5891 { Bad_Opcode },
5549 { "(bad)",» » { XX } }, 5892 { Bad_Opcode },
5550 /* 48 */ 5893 /* 48 */
5551 { "(bad)",» » { XX } }, 5894 { Bad_Opcode },
5552 { "(bad)",» » { XX } }, 5895 { Bad_Opcode },
5553 { "(bad)",» » { XX } }, 5896 { Bad_Opcode },
5554 { "(bad)",» » { XX } }, 5897 { Bad_Opcode },
5555 { "(bad)",» » { XX } }, 5898 { Bad_Opcode },
5556 { "(bad)",» » { XX } }, 5899 { Bad_Opcode },
5557 { "(bad)",» » { XX } }, 5900 { Bad_Opcode },
5558 { "(bad)",» » { XX } }, 5901 { Bad_Opcode },
5559 /* 50 */ 5902 /* 50 */
5560 { "(bad)",» » { XX } }, 5903 { Bad_Opcode },
5561 { "(bad)",» » { XX } }, 5904 { Bad_Opcode },
5562 { "(bad)",» » { XX } }, 5905 { Bad_Opcode },
5563 { "(bad)",» » { XX } }, 5906 { Bad_Opcode },
5564 { "(bad)",» » { XX } }, 5907 { Bad_Opcode },
5565 { "(bad)",» » { XX } }, 5908 { Bad_Opcode },
5566 { "(bad)",» » { XX } }, 5909 { Bad_Opcode },
5567 { "(bad)",» » { XX } }, 5910 { Bad_Opcode },
5568 /* 58 */ 5911 /* 58 */
5569 { "(bad)",» » { XX } }, 5912 { Bad_Opcode },
5570 { "(bad)",» » { XX } }, 5913 { Bad_Opcode },
5571 { "(bad)",» » { XX } }, 5914 { Bad_Opcode },
5572 { "(bad)",» » { XX } }, 5915 { Bad_Opcode },
5573 { "(bad)",» » { XX } }, 5916 { Bad_Opcode },
5574 { "(bad)",» » { XX } }, 5917 { Bad_Opcode },
5575 { "(bad)",» » { XX } }, 5918 { Bad_Opcode },
5576 { "(bad)",» » { XX } }, 5919 { Bad_Opcode },
5577 /* 60 */ 5920 /* 60 */
5578 { "(bad)",» » { XX } }, 5921 { Bad_Opcode },
5579 { "(bad)",» » { XX } }, 5922 { Bad_Opcode },
5580 { "(bad)",» » { XX } }, 5923 { Bad_Opcode },
5581 { "(bad)",» » { XX } }, 5924 { Bad_Opcode },
5582 { "(bad)",» » { XX } }, 5925 { Bad_Opcode },
5583 { "(bad)",» » { XX } }, 5926 { Bad_Opcode },
5584 { "(bad)",» » { XX } }, 5927 { Bad_Opcode },
5585 { "(bad)",» » { XX } }, 5928 { Bad_Opcode },
5586 /* 68 */ 5929 /* 68 */
5587 { "(bad)",» » { XX } }, 5930 { Bad_Opcode },
5588 { "(bad)",» » { XX } }, 5931 { Bad_Opcode },
5589 { "(bad)",» » { XX } }, 5932 { Bad_Opcode },
5590 { "(bad)",» » { XX } }, 5933 { Bad_Opcode },
5591 { "(bad)",» » { XX } }, 5934 { Bad_Opcode },
5592 { "(bad)",» » { XX } }, 5935 { Bad_Opcode },
5593 { "(bad)",» » { XX } }, 5936 { Bad_Opcode },
5594 { "(bad)",» » { XX } }, 5937 { Bad_Opcode },
5595 /* 70 */ 5938 /* 70 */
5596 { "(bad)",» » { XX } }, 5939 { Bad_Opcode },
5597 { "(bad)",» » { XX } }, 5940 { Bad_Opcode },
5598 { "(bad)",» » { XX } }, 5941 { Bad_Opcode },
5599 { "(bad)",» » { XX } }, 5942 { Bad_Opcode },
5600 { "(bad)",» » { XX } }, 5943 { Bad_Opcode },
5601 { "(bad)",» » { XX } }, 5944 { Bad_Opcode },
5602 { "(bad)",» » { XX } }, 5945 { Bad_Opcode },
5603 { "(bad)",» » { XX } }, 5946 { Bad_Opcode },
5604 /* 78 */ 5947 /* 78 */
5605 { "(bad)",» » { XX } }, 5948 { Bad_Opcode },
5606 { "(bad)",» » { XX } }, 5949 { Bad_Opcode },
5607 { "(bad)",» » { XX } }, 5950 { Bad_Opcode },
5608 { "(bad)",» » { XX } }, 5951 { Bad_Opcode },
5609 { "(bad)",» » { XX } }, 5952 { Bad_Opcode },
5610 { "(bad)",» » { XX } }, 5953 { Bad_Opcode },
5611 { "(bad)",» » { XX } }, 5954 { Bad_Opcode },
5612 { "(bad)",» » { XX } }, 5955 { Bad_Opcode },
5613 /* 80 */ 5956 /* 80 */
5614 { PREFIX_TABLE (PREFIX_0F3880) }, 5957 { PREFIX_TABLE (PREFIX_0F3880) },
5615 { PREFIX_TABLE (PREFIX_0F3881) }, 5958 { PREFIX_TABLE (PREFIX_0F3881) },
5616 { "(bad)",» » { XX } }, 5959 { PREFIX_TABLE (PREFIX_0F3882) },
5617 { "(bad)",» » { XX } }, 5960 { Bad_Opcode },
5618 { "(bad)",» » { XX } }, 5961 { Bad_Opcode },
5619 { "(bad)",» » { XX } }, 5962 { Bad_Opcode },
5620 { "(bad)",» » { XX } }, 5963 { Bad_Opcode },
5621 { "(bad)",» » { XX } }, 5964 { Bad_Opcode },
5622 /* 88 */ 5965 /* 88 */
5623 { "(bad)",» » { XX } }, 5966 { Bad_Opcode },
5624 { "(bad)",» » { XX } }, 5967 { Bad_Opcode },
5625 { "(bad)",» » { XX } }, 5968 { Bad_Opcode },
5626 { "(bad)",» » { XX } }, 5969 { Bad_Opcode },
5627 { "(bad)",» » { XX } }, 5970 { Bad_Opcode },
5628 { "(bad)",» » { XX } }, 5971 { Bad_Opcode },
5629 { "(bad)",» » { XX } }, 5972 { Bad_Opcode },
5630 { "(bad)",» » { XX } }, 5973 { Bad_Opcode },
5631 /* 90 */ 5974 /* 90 */
5632 { "(bad)",» » { XX } }, 5975 { Bad_Opcode },
5633 { "(bad)",» » { XX } }, 5976 { Bad_Opcode },
5634 { "(bad)",» » { XX } }, 5977 { Bad_Opcode },
5635 { "(bad)",» » { XX } }, 5978 { Bad_Opcode },
5636 { "(bad)",» » { XX } }, 5979 { Bad_Opcode },
5637 { "(bad)",» » { XX } }, 5980 { Bad_Opcode },
5638 { "(bad)",» » { XX } }, 5981 { Bad_Opcode },
5639 { "(bad)",» » { XX } }, 5982 { Bad_Opcode },
5640 /* 98 */ 5983 /* 98 */
5641 { "(bad)",» » { XX } }, 5984 { Bad_Opcode },
5642 { "(bad)",» » { XX } }, 5985 { Bad_Opcode },
5643 { "(bad)",» » { XX } }, 5986 { Bad_Opcode },
5644 { "(bad)",» » { XX } }, 5987 { Bad_Opcode },
5645 { "(bad)",» » { XX } }, 5988 { Bad_Opcode },
5646 { "(bad)",» » { XX } }, 5989 { Bad_Opcode },
5647 { "(bad)",» » { XX } }, 5990 { Bad_Opcode },
5648 { "(bad)",» » { XX } }, 5991 { Bad_Opcode },
5649 /* a0 */ 5992 /* a0 */
5650 { "(bad)",» » { XX } }, 5993 { Bad_Opcode },
5651 { "(bad)",» » { XX } }, 5994 { Bad_Opcode },
5652 { "(bad)",» » { XX } }, 5995 { Bad_Opcode },
5653 { "(bad)",» » { XX } }, 5996 { Bad_Opcode },
5654 { "(bad)",» » { XX } }, 5997 { Bad_Opcode },
5655 { "(bad)",» » { XX } }, 5998 { Bad_Opcode },
5656 { "(bad)",» » { XX } }, 5999 { Bad_Opcode },
5657 { "(bad)",» » { XX } }, 6000 { Bad_Opcode },
5658 /* a8 */ 6001 /* a8 */
5659 { "(bad)",» » { XX } }, 6002 { Bad_Opcode },
5660 { "(bad)",» » { XX } }, 6003 { Bad_Opcode },
5661 { "(bad)",» » { XX } }, 6004 { Bad_Opcode },
5662 { "(bad)",» » { XX } }, 6005 { Bad_Opcode },
5663 { "(bad)",» » { XX } }, 6006 { Bad_Opcode },
5664 { "(bad)",» » { XX } }, 6007 { Bad_Opcode },
5665 { "(bad)",» » { XX } }, 6008 { Bad_Opcode },
5666 { "(bad)",» » { XX } }, 6009 { Bad_Opcode },
5667 /* b0 */ 6010 /* b0 */
5668 { "(bad)",» » { XX } }, 6011 { Bad_Opcode },
5669 { "(bad)",» » { XX } }, 6012 { Bad_Opcode },
5670 { "(bad)",» » { XX } }, 6013 { Bad_Opcode },
5671 { "(bad)",» » { XX } }, 6014 { Bad_Opcode },
5672 { "(bad)",» » { XX } }, 6015 { Bad_Opcode },
5673 { "(bad)",» » { XX } }, 6016 { Bad_Opcode },
5674 { "(bad)",» » { XX } }, 6017 { Bad_Opcode },
5675 { "(bad)",» » { XX } }, 6018 { Bad_Opcode },
5676 /* b8 */ 6019 /* b8 */
5677 { "(bad)",» » { XX } }, 6020 { Bad_Opcode },
5678 { "(bad)",» » { XX } }, 6021 { Bad_Opcode },
5679 { "(bad)",» » { XX } }, 6022 { Bad_Opcode },
5680 { "(bad)",» » { XX } }, 6023 { Bad_Opcode },
5681 { "(bad)",» » { XX } }, 6024 { Bad_Opcode },
5682 { "(bad)",» » { XX } }, 6025 { Bad_Opcode },
5683 { "(bad)",» » { XX } }, 6026 { Bad_Opcode },
5684 { "(bad)",» » { XX } }, 6027 { Bad_Opcode },
5685 /* c0 */ 6028 /* c0 */
5686 { "(bad)",» » { XX } }, 6029 { Bad_Opcode },
5687 { "(bad)",» » { XX } }, 6030 { Bad_Opcode },
5688 { "(bad)",» » { XX } }, 6031 { Bad_Opcode },
5689 { "(bad)",» » { XX } }, 6032 { Bad_Opcode },
5690 { "(bad)",» » { XX } }, 6033 { Bad_Opcode },
5691 { "(bad)",» » { XX } }, 6034 { Bad_Opcode },
5692 { "(bad)",» » { XX } }, 6035 { Bad_Opcode },
5693 { "(bad)",» » { XX } }, 6036 { Bad_Opcode },
5694 /* c8 */ 6037 /* c8 */
5695 { "(bad)",» » { XX } }, 6038 { Bad_Opcode },
5696 { "(bad)",» » { XX } }, 6039 { Bad_Opcode },
5697 { "(bad)",» » { XX } }, 6040 { Bad_Opcode },
5698 { "(bad)",» » { XX } }, 6041 { Bad_Opcode },
5699 { "(bad)",» » { XX } }, 6042 { Bad_Opcode },
5700 { "(bad)",» » { XX } }, 6043 { Bad_Opcode },
5701 { "(bad)",» » { XX } }, 6044 { Bad_Opcode },
5702 { "(bad)",» » { XX } }, 6045 { Bad_Opcode },
5703 /* d0 */ 6046 /* d0 */
5704 { "(bad)",» » { XX } }, 6047 { Bad_Opcode },
5705 { "(bad)",» » { XX } }, 6048 { Bad_Opcode },
5706 { "(bad)",» » { XX } }, 6049 { Bad_Opcode },
5707 { "(bad)",» » { XX } }, 6050 { Bad_Opcode },
5708 { "(bad)",» » { XX } }, 6051 { Bad_Opcode },
5709 { "(bad)",» » { XX } }, 6052 { Bad_Opcode },
5710 { "(bad)",» » { XX } }, 6053 { Bad_Opcode },
5711 { "(bad)",» » { XX } }, 6054 { Bad_Opcode },
5712 /* d8 */ 6055 /* d8 */
5713 { "(bad)",» » { XX } }, 6056 { Bad_Opcode },
5714 { "(bad)",» » { XX } }, 6057 { Bad_Opcode },
5715 { "(bad)",» » { XX } }, 6058 { Bad_Opcode },
5716 { PREFIX_TABLE (PREFIX_0F38DB) }, 6059 { PREFIX_TABLE (PREFIX_0F38DB) },
5717 { PREFIX_TABLE (PREFIX_0F38DC) }, 6060 { PREFIX_TABLE (PREFIX_0F38DC) },
5718 { PREFIX_TABLE (PREFIX_0F38DD) }, 6061 { PREFIX_TABLE (PREFIX_0F38DD) },
5719 { PREFIX_TABLE (PREFIX_0F38DE) }, 6062 { PREFIX_TABLE (PREFIX_0F38DE) },
5720 { PREFIX_TABLE (PREFIX_0F38DF) }, 6063 { PREFIX_TABLE (PREFIX_0F38DF) },
5721 /* e0 */ 6064 /* e0 */
5722 { "(bad)",» » { XX } }, 6065 { Bad_Opcode },
5723 { "(bad)",» » { XX } }, 6066 { Bad_Opcode },
5724 { "(bad)",» » { XX } }, 6067 { Bad_Opcode },
5725 { "(bad)",» » { XX } }, 6068 { Bad_Opcode },
5726 { "(bad)",» » { XX } }, 6069 { Bad_Opcode },
5727 { "(bad)",» » { XX } }, 6070 { Bad_Opcode },
5728 { "(bad)",» » { XX } }, 6071 { Bad_Opcode },
5729 { "(bad)",» » { XX } }, 6072 { Bad_Opcode },
5730 /* e8 */ 6073 /* e8 */
5731 { "(bad)",» » { XX } }, 6074 { Bad_Opcode },
5732 { "(bad)",» » { XX } }, 6075 { Bad_Opcode },
5733 { "(bad)",» » { XX } }, 6076 { Bad_Opcode },
5734 { "(bad)",» » { XX } }, 6077 { Bad_Opcode },
5735 { "(bad)",» » { XX } }, 6078 { Bad_Opcode },
5736 { "(bad)",» » { XX } }, 6079 { Bad_Opcode },
5737 { "(bad)",» » { XX } }, 6080 { Bad_Opcode },
5738 { "(bad)",» » { XX } }, 6081 { Bad_Opcode },
5739 /* f0 */ 6082 /* f0 */
5740 { PREFIX_TABLE (PREFIX_0F38F0) }, 6083 { PREFIX_TABLE (PREFIX_0F38F0) },
5741 { PREFIX_TABLE (PREFIX_0F38F1) }, 6084 { PREFIX_TABLE (PREFIX_0F38F1) },
5742 { "(bad)",» » { XX } }, 6085 { Bad_Opcode },
5743 { "(bad)",» » { XX } }, 6086 { Bad_Opcode },
5744 { "(bad)",» » { XX } }, 6087 { Bad_Opcode },
5745 { "(bad)",» » { XX } }, 6088 { Bad_Opcode },
5746 { "(bad)",» » { XX } }, 6089 { PREFIX_TABLE (PREFIX_0F38F6) },
5747 { "(bad)",» » { XX } }, 6090 { Bad_Opcode },
5748 /* f8 */ 6091 /* f8 */
5749 { "(bad)",» » { XX } }, 6092 { Bad_Opcode },
5750 { "(bad)",» » { XX } }, 6093 { Bad_Opcode },
5751 { "(bad)",» » { XX } }, 6094 { Bad_Opcode },
5752 { "(bad)",» » { XX } }, 6095 { Bad_Opcode },
5753 { "(bad)",» » { XX } }, 6096 { Bad_Opcode },
5754 { "(bad)",» » { XX } }, 6097 { Bad_Opcode },
5755 { "(bad)",» » { XX } }, 6098 { Bad_Opcode },
5756 { "(bad)",» » { XX } }, 6099 { Bad_Opcode },
5757 }, 6100 },
5758 /* THREE_BYTE_0F3A */ 6101 /* THREE_BYTE_0F3A */
5759 { 6102 {
5760 /* 00 */ 6103 /* 00 */
5761 { "(bad)",» » { XX } }, 6104 { Bad_Opcode },
5762 { "(bad)",» » { XX } }, 6105 { Bad_Opcode },
5763 { "(bad)",» » { XX } }, 6106 { Bad_Opcode },
5764 { "(bad)",» » { XX } }, 6107 { Bad_Opcode },
5765 { "(bad)",» » { XX } }, 6108 { Bad_Opcode },
5766 { "(bad)",» » { XX } }, 6109 { Bad_Opcode },
5767 { "(bad)",» » { XX } }, 6110 { Bad_Opcode },
5768 { "(bad)",» » { XX } }, 6111 { Bad_Opcode },
5769 /* 08 */ 6112 /* 08 */
5770 { PREFIX_TABLE (PREFIX_0F3A08) }, 6113 { PREFIX_TABLE (PREFIX_0F3A08) },
5771 { PREFIX_TABLE (PREFIX_0F3A09) }, 6114 { PREFIX_TABLE (PREFIX_0F3A09) },
5772 { PREFIX_TABLE (PREFIX_0F3A0A) }, 6115 { PREFIX_TABLE (PREFIX_0F3A0A) },
5773 { PREFIX_TABLE (PREFIX_0F3A0B) }, 6116 { PREFIX_TABLE (PREFIX_0F3A0B) },
5774 { PREFIX_TABLE (PREFIX_0F3A0C) }, 6117 { PREFIX_TABLE (PREFIX_0F3A0C) },
5775 { PREFIX_TABLE (PREFIX_0F3A0D) }, 6118 { PREFIX_TABLE (PREFIX_0F3A0D) },
5776 { PREFIX_TABLE (PREFIX_0F3A0E) }, 6119 { PREFIX_TABLE (PREFIX_0F3A0E) },
5777 { "palignr", { MX, EM, Ib } }, 6120 { "palignr", { MX, EM, Ib } },
5778 /* 10 */ 6121 /* 10 */
5779 { "(bad)",» » { XX } }, 6122 { Bad_Opcode },
5780 { "(bad)",» » { XX } }, 6123 { Bad_Opcode },
5781 { "(bad)",» » { XX } }, 6124 { Bad_Opcode },
5782 { "(bad)",» » { XX } }, 6125 { Bad_Opcode },
5783 { PREFIX_TABLE (PREFIX_0F3A14) }, 6126 { PREFIX_TABLE (PREFIX_0F3A14) },
5784 { PREFIX_TABLE (PREFIX_0F3A15) }, 6127 { PREFIX_TABLE (PREFIX_0F3A15) },
5785 { PREFIX_TABLE (PREFIX_0F3A16) }, 6128 { PREFIX_TABLE (PREFIX_0F3A16) },
5786 { PREFIX_TABLE (PREFIX_0F3A17) }, 6129 { PREFIX_TABLE (PREFIX_0F3A17) },
5787 /* 18 */ 6130 /* 18 */
5788 { "(bad)",» » { XX } }, 6131 { Bad_Opcode },
5789 { "(bad)",» » { XX } }, 6132 { Bad_Opcode },
5790 { "(bad)",» » { XX } }, 6133 { Bad_Opcode },
5791 { "(bad)",» » { XX } }, 6134 { Bad_Opcode },
5792 { "(bad)",» » { XX } }, 6135 { Bad_Opcode },
5793 { "(bad)",» » { XX } }, 6136 { Bad_Opcode },
5794 { "(bad)",» » { XX } }, 6137 { Bad_Opcode },
5795 { "(bad)",» » { XX } }, 6138 { Bad_Opcode },
5796 /* 20 */ 6139 /* 20 */
5797 { PREFIX_TABLE (PREFIX_0F3A20) }, 6140 { PREFIX_TABLE (PREFIX_0F3A20) },
5798 { PREFIX_TABLE (PREFIX_0F3A21) }, 6141 { PREFIX_TABLE (PREFIX_0F3A21) },
5799 { PREFIX_TABLE (PREFIX_0F3A22) }, 6142 { PREFIX_TABLE (PREFIX_0F3A22) },
5800 { "(bad)",» » { XX } }, 6143 { Bad_Opcode },
5801 { "(bad)",» » { XX } }, 6144 { Bad_Opcode },
5802 { "(bad)",» » { XX } }, 6145 { Bad_Opcode },
5803 { "(bad)",» » { XX } }, 6146 { Bad_Opcode },
5804 { "(bad)",» » { XX } }, 6147 { Bad_Opcode },
5805 /* 28 */ 6148 /* 28 */
5806 { "(bad)",» » { XX } }, 6149 { Bad_Opcode },
5807 { "(bad)",» » { XX } }, 6150 { Bad_Opcode },
5808 { "(bad)",» » { XX } }, 6151 { Bad_Opcode },
5809 { "(bad)",» » { XX } }, 6152 { Bad_Opcode },
5810 { "(bad)",» » { XX } }, 6153 { Bad_Opcode },
5811 { "(bad)",» » { XX } }, 6154 { Bad_Opcode },
5812 { "(bad)",» » { XX } }, 6155 { Bad_Opcode },
5813 { "(bad)",» » { XX } }, 6156 { Bad_Opcode },
5814 /* 30 */ 6157 /* 30 */
5815 { "(bad)",» » { XX } }, 6158 { Bad_Opcode },
5816 { "(bad)",» » { XX } }, 6159 { Bad_Opcode },
5817 { "(bad)",» » { XX } }, 6160 { Bad_Opcode },
5818 { "(bad)",» » { XX } }, 6161 { Bad_Opcode },
5819 { "(bad)",» » { XX } }, 6162 { Bad_Opcode },
5820 { "(bad)",» » { XX } }, 6163 { Bad_Opcode },
5821 { "(bad)",» » { XX } }, 6164 { Bad_Opcode },
5822 { "(bad)",» » { XX } }, 6165 { Bad_Opcode },
5823 /* 38 */ 6166 /* 38 */
5824 { "(bad)",» » { XX } }, 6167 { Bad_Opcode },
5825 { "(bad)",» » { XX } }, 6168 { Bad_Opcode },
5826 { "(bad)",» » { XX } }, 6169 { Bad_Opcode },
5827 { "(bad)",» » { XX } }, 6170 { Bad_Opcode },
5828 { "(bad)",» » { XX } }, 6171 { Bad_Opcode },
5829 { "(bad)",» » { XX } }, 6172 { Bad_Opcode },
5830 { "(bad)",» » { XX } }, 6173 { Bad_Opcode },
5831 { "(bad)",» » { XX } }, 6174 { Bad_Opcode },
5832 /* 40 */ 6175 /* 40 */
5833 { PREFIX_TABLE (PREFIX_0F3A40) }, 6176 { PREFIX_TABLE (PREFIX_0F3A40) },
5834 { PREFIX_TABLE (PREFIX_0F3A41) }, 6177 { PREFIX_TABLE (PREFIX_0F3A41) },
5835 { PREFIX_TABLE (PREFIX_0F3A42) }, 6178 { PREFIX_TABLE (PREFIX_0F3A42) },
5836 { "(bad)",» » { XX } }, 6179 { Bad_Opcode },
5837 { PREFIX_TABLE (PREFIX_0F3A44) }, 6180 { PREFIX_TABLE (PREFIX_0F3A44) },
5838 { "(bad)",» » { XX } }, 6181 { Bad_Opcode },
5839 { "(bad)",» » { XX } }, 6182 { Bad_Opcode },
5840 { "(bad)",» » { XX } }, 6183 { Bad_Opcode },
5841 /* 48 */ 6184 /* 48 */
5842 { "(bad)",» » { XX } }, 6185 { Bad_Opcode },
5843 { "(bad)",» » { XX } }, 6186 { Bad_Opcode },
5844 { "(bad)",» » { XX } }, 6187 { Bad_Opcode },
5845 { "(bad)",» » { XX } }, 6188 { Bad_Opcode },
5846 { "(bad)",» » { XX } }, 6189 { Bad_Opcode },
5847 { "(bad)",» » { XX } }, 6190 { Bad_Opcode },
5848 { "(bad)",» » { XX } }, 6191 { Bad_Opcode },
5849 { "(bad)",» » { XX } }, 6192 { Bad_Opcode },
5850 /* 50 */ 6193 /* 50 */
5851 { "(bad)",» » { XX } }, 6194 { Bad_Opcode },
5852 { "(bad)",» » { XX } }, 6195 { Bad_Opcode },
5853 { "(bad)",» » { XX } }, 6196 { Bad_Opcode },
5854 { "(bad)",» » { XX } }, 6197 { Bad_Opcode },
5855 { "(bad)",» » { XX } }, 6198 { Bad_Opcode },
5856 { "(bad)",» » { XX } }, 6199 { Bad_Opcode },
5857 { "(bad)",» » { XX } }, 6200 { Bad_Opcode },
5858 { "(bad)",» » { XX } }, 6201 { Bad_Opcode },
5859 /* 58 */ 6202 /* 58 */
5860 { "(bad)",» » { XX } }, 6203 { Bad_Opcode },
5861 { "(bad)",» » { XX } }, 6204 { Bad_Opcode },
5862 { "(bad)",» » { XX } }, 6205 { Bad_Opcode },
5863 { "(bad)",» » { XX } }, 6206 { Bad_Opcode },
5864 { "(bad)",» » { XX } }, 6207 { Bad_Opcode },
5865 { "(bad)",» » { XX } }, 6208 { Bad_Opcode },
5866 { "(bad)",» » { XX } }, 6209 { Bad_Opcode },
5867 { "(bad)",» » { XX } }, 6210 { Bad_Opcode },
5868 /* 60 */ 6211 /* 60 */
5869 { PREFIX_TABLE (PREFIX_0F3A60) }, 6212 { PREFIX_TABLE (PREFIX_0F3A60) },
5870 { PREFIX_TABLE (PREFIX_0F3A61) }, 6213 { PREFIX_TABLE (PREFIX_0F3A61) },
5871 { PREFIX_TABLE (PREFIX_0F3A62) }, 6214 { PREFIX_TABLE (PREFIX_0F3A62) },
5872 { PREFIX_TABLE (PREFIX_0F3A63) }, 6215 { PREFIX_TABLE (PREFIX_0F3A63) },
5873 { "(bad)",» » { XX } }, 6216 { Bad_Opcode },
5874 { "(bad)",» » { XX } }, 6217 { Bad_Opcode },
5875 { "(bad)",» » { XX } }, 6218 { Bad_Opcode },
5876 { "(bad)",» » { XX } }, 6219 { Bad_Opcode },
5877 /* 68 */ 6220 /* 68 */
5878 { "(bad)",» » { XX } }, 6221 { Bad_Opcode },
5879 { "(bad)",» » { XX } }, 6222 { Bad_Opcode },
5880 { "(bad)",» » { XX } }, 6223 { Bad_Opcode },
5881 { "(bad)",» » { XX } }, 6224 { Bad_Opcode },
5882 { "(bad)",» » { XX } }, 6225 { Bad_Opcode },
5883 { "(bad)",» » { XX } }, 6226 { Bad_Opcode },
5884 { "(bad)",» » { XX } }, 6227 { Bad_Opcode },
5885 { "(bad)",» » { XX } }, 6228 { Bad_Opcode },
5886 /* 70 */ 6229 /* 70 */
5887 { "(bad)",» » { XX } }, 6230 { Bad_Opcode },
5888 { "(bad)",» » { XX } }, 6231 { Bad_Opcode },
5889 { "(bad)",» » { XX } }, 6232 { Bad_Opcode },
5890 { "(bad)",» » { XX } }, 6233 { Bad_Opcode },
5891 { "(bad)",» » { XX } }, 6234 { Bad_Opcode },
5892 { "(bad)",» » { XX } }, 6235 { Bad_Opcode },
5893 { "(bad)",» » { XX } }, 6236 { Bad_Opcode },
5894 { "(bad)",» » { XX } }, 6237 { Bad_Opcode },
5895 /* 78 */ 6238 /* 78 */
5896 { "(bad)",» » { XX } }, 6239 { Bad_Opcode },
5897 { "(bad)",» » { XX } }, 6240 { Bad_Opcode },
5898 { "(bad)",» » { XX } }, 6241 { Bad_Opcode },
5899 { "(bad)",» » { XX } }, 6242 { Bad_Opcode },
5900 { "(bad)",» » { XX } }, 6243 { Bad_Opcode },
5901 { "(bad)",» » { XX } }, 6244 { Bad_Opcode },
5902 { "(bad)",» » { XX } }, 6245 { Bad_Opcode },
5903 { "(bad)",» » { XX } }, 6246 { Bad_Opcode },
5904 /* 80 */ 6247 /* 80 */
5905 { "(bad)",» » { XX } }, 6248 { Bad_Opcode },
5906 { "(bad)",» » { XX } }, 6249 { Bad_Opcode },
5907 { "(bad)",» » { XX } }, 6250 { Bad_Opcode },
5908 { "(bad)",» » { XX } }, 6251 { Bad_Opcode },
5909 { "(bad)",» » { XX } }, 6252 { Bad_Opcode },
5910 { "(bad)",» » { XX } }, 6253 { Bad_Opcode },
5911 { "(bad)",» » { XX } }, 6254 { Bad_Opcode },
5912 { "(bad)",» » { XX } }, 6255 { Bad_Opcode },
5913 /* 88 */ 6256 /* 88 */
5914 { "(bad)",» » { XX } }, 6257 { Bad_Opcode },
5915 { "(bad)",» » { XX } }, 6258 { Bad_Opcode },
5916 { "(bad)",» » { XX } }, 6259 { Bad_Opcode },
5917 { "(bad)",» » { XX } }, 6260 { Bad_Opcode },
5918 { "(bad)",» » { XX } }, 6261 { Bad_Opcode },
5919 { "(bad)",» » { XX } }, 6262 { Bad_Opcode },
5920 { "(bad)",» » { XX } }, 6263 { Bad_Opcode },
5921 { "(bad)",» » { XX } }, 6264 { Bad_Opcode },
5922 /* 90 */ 6265 /* 90 */
5923 { "(bad)",» » { XX } }, 6266 { Bad_Opcode },
5924 { "(bad)",» » { XX } }, 6267 { Bad_Opcode },
5925 { "(bad)",» » { XX } }, 6268 { Bad_Opcode },
5926 { "(bad)",» » { XX } }, 6269 { Bad_Opcode },
5927 { "(bad)",» » { XX } }, 6270 { Bad_Opcode },
5928 { "(bad)",» » { XX } }, 6271 { Bad_Opcode },
5929 { "(bad)",» » { XX } }, 6272 { Bad_Opcode },
5930 { "(bad)",» » { XX } }, 6273 { Bad_Opcode },
5931 /* 98 */ 6274 /* 98 */
5932 { "(bad)",» » { XX } }, 6275 { Bad_Opcode },
5933 { "(bad)",» » { XX } }, 6276 { Bad_Opcode },
5934 { "(bad)",» » { XX } }, 6277 { Bad_Opcode },
5935 { "(bad)",» » { XX } }, 6278 { Bad_Opcode },
5936 { "(bad)",» » { XX } }, 6279 { Bad_Opcode },
5937 { "(bad)",» » { XX } }, 6280 { Bad_Opcode },
5938 { "(bad)",» » { XX } }, 6281 { Bad_Opcode },
5939 { "(bad)",» » { XX } }, 6282 { Bad_Opcode },
5940 /* a0 */ 6283 /* a0 */
5941 { "(bad)",» » { XX } }, 6284 { Bad_Opcode },
5942 { "(bad)",» » { XX } }, 6285 { Bad_Opcode },
5943 { "(bad)",» » { XX } }, 6286 { Bad_Opcode },
5944 { "(bad)",» » { XX } }, 6287 { Bad_Opcode },
5945 { "(bad)",» » { XX } }, 6288 { Bad_Opcode },
5946 { "(bad)",» » { XX } }, 6289 { Bad_Opcode },
5947 { "(bad)",» » { XX } }, 6290 { Bad_Opcode },
5948 { "(bad)",» » { XX } }, 6291 { Bad_Opcode },
5949 /* a8 */ 6292 /* a8 */
5950 { "(bad)",» » { XX } }, 6293 { Bad_Opcode },
5951 { "(bad)",» » { XX } }, 6294 { Bad_Opcode },
5952 { "(bad)",» » { XX } }, 6295 { Bad_Opcode },
5953 { "(bad)",» » { XX } }, 6296 { Bad_Opcode },
5954 { "(bad)",» » { XX } }, 6297 { Bad_Opcode },
5955 { "(bad)",» » { XX } }, 6298 { Bad_Opcode },
5956 { "(bad)",» » { XX } }, 6299 { Bad_Opcode },
5957 { "(bad)",» » { XX } }, 6300 { Bad_Opcode },
5958 /* b0 */ 6301 /* b0 */
5959 { "(bad)",» » { XX } }, 6302 { Bad_Opcode },
5960 { "(bad)",» » { XX } }, 6303 { Bad_Opcode },
5961 { "(bad)",» » { XX } }, 6304 { Bad_Opcode },
5962 { "(bad)",» » { XX } }, 6305 { Bad_Opcode },
5963 { "(bad)",» » { XX } }, 6306 { Bad_Opcode },
5964 { "(bad)",» » { XX } }, 6307 { Bad_Opcode },
5965 { "(bad)",» » { XX } }, 6308 { Bad_Opcode },
5966 { "(bad)",» » { XX } }, 6309 { Bad_Opcode },
5967 /* b8 */ 6310 /* b8 */
5968 { "(bad)",» » { XX } }, 6311 { Bad_Opcode },
5969 { "(bad)",» » { XX } }, 6312 { Bad_Opcode },
5970 { "(bad)",» » { XX } }, 6313 { Bad_Opcode },
5971 { "(bad)",» » { XX } }, 6314 { Bad_Opcode },
5972 { "(bad)",» » { XX } }, 6315 { Bad_Opcode },
5973 { "(bad)",» » { XX } }, 6316 { Bad_Opcode },
5974 { "(bad)",» » { XX } }, 6317 { Bad_Opcode },
5975 { "(bad)",» » { XX } }, 6318 { Bad_Opcode },
5976 /* c0 */ 6319 /* c0 */
5977 { "(bad)",» » { XX } }, 6320 { Bad_Opcode },
5978 { "(bad)",» » { XX } }, 6321 { Bad_Opcode },
5979 { "(bad)",» » { XX } }, 6322 { Bad_Opcode },
5980 { "(bad)",» » { XX } }, 6323 { Bad_Opcode },
5981 { "(bad)",» » { XX } }, 6324 { Bad_Opcode },
5982 { "(bad)",» » { XX } }, 6325 { Bad_Opcode },
5983 { "(bad)",» » { XX } }, 6326 { Bad_Opcode },
5984 { "(bad)",» » { XX } }, 6327 { Bad_Opcode },
5985 /* c8 */ 6328 /* c8 */
5986 { "(bad)",» » { XX } }, 6329 { Bad_Opcode },
5987 { "(bad)",» » { XX } }, 6330 { Bad_Opcode },
5988 { "(bad)",» » { XX } }, 6331 { Bad_Opcode },
5989 { "(bad)",» » { XX } }, 6332 { Bad_Opcode },
5990 { "(bad)",» » { XX } }, 6333 { Bad_Opcode },
5991 { "(bad)",» » { XX } }, 6334 { Bad_Opcode },
5992 { "(bad)",» » { XX } }, 6335 { Bad_Opcode },
5993 { "(bad)",» » { XX } }, 6336 { Bad_Opcode },
5994 /* d0 */ 6337 /* d0 */
5995 { "(bad)",» » { XX } }, 6338 { Bad_Opcode },
5996 { "(bad)",» » { XX } }, 6339 { Bad_Opcode },
5997 { "(bad)",» » { XX } }, 6340 { Bad_Opcode },
5998 { "(bad)",» » { XX } }, 6341 { Bad_Opcode },
5999 { "(bad)",» » { XX } }, 6342 { Bad_Opcode },
6000 { "(bad)",» » { XX } }, 6343 { Bad_Opcode },
6001 { "(bad)",» » { XX } }, 6344 { Bad_Opcode },
6002 { "(bad)",» » { XX } }, 6345 { Bad_Opcode },
6003 /* d8 */ 6346 /* d8 */
6004 { "(bad)",» » { XX } }, 6347 { Bad_Opcode },
6005 { "(bad)",» » { XX } }, 6348 { Bad_Opcode },
6006 { "(bad)",» » { XX } }, 6349 { Bad_Opcode },
6007 { "(bad)",» » { XX } }, 6350 { Bad_Opcode },
6008 { "(bad)",» » { XX } }, 6351 { Bad_Opcode },
6009 { "(bad)",» » { XX } }, 6352 { Bad_Opcode },
6010 { "(bad)",» » { XX } }, 6353 { Bad_Opcode },
6011 { PREFIX_TABLE (PREFIX_0F3ADF) }, 6354 { PREFIX_TABLE (PREFIX_0F3ADF) },
6012 /* e0 */ 6355 /* e0 */
6013 { "(bad)",» » { XX } }, 6356 { Bad_Opcode },
6014 { "(bad)",» » { XX } }, 6357 { Bad_Opcode },
6015 { "(bad)",» » { XX } }, 6358 { Bad_Opcode },
6016 { "(bad)",» » { XX } }, 6359 { Bad_Opcode },
6017 { "(bad)",» » { XX } }, 6360 { Bad_Opcode },
6018 { "(bad)",» » { XX } }, 6361 { Bad_Opcode },
6019 { "(bad)",» » { XX } }, 6362 { Bad_Opcode },
6020 { "(bad)",» » { XX } }, 6363 { Bad_Opcode },
6021 /* e8 */ 6364 /* e8 */
6022 { "(bad)",» » { XX } }, 6365 { Bad_Opcode },
6023 { "(bad)",» » { XX } }, 6366 { Bad_Opcode },
6024 { "(bad)",» » { XX } }, 6367 { Bad_Opcode },
6025 { "(bad)",» » { XX } }, 6368 { Bad_Opcode },
6026 { "(bad)",» » { XX } }, 6369 { Bad_Opcode },
6027 { "(bad)",» » { XX } }, 6370 { Bad_Opcode },
6028 { "(bad)",» » { XX } }, 6371 { Bad_Opcode },
6029 { "(bad)",» » { XX } }, 6372 { Bad_Opcode },
6030 /* f0 */ 6373 /* f0 */
6031 { "(bad)",» » { XX } }, 6374 { Bad_Opcode },
6032 { "(bad)",» » { XX } }, 6375 { Bad_Opcode },
6033 { "(bad)",» » { XX } }, 6376 { Bad_Opcode },
6034 { "(bad)",» » { XX } }, 6377 { Bad_Opcode },
6035 { "(bad)",» » { XX } }, 6378 { Bad_Opcode },
6036 { "(bad)",» » { XX } }, 6379 { Bad_Opcode },
6037 { "(bad)",» » { XX } }, 6380 { Bad_Opcode },
6038 { "(bad)",» » { XX } }, 6381 { Bad_Opcode },
6039 /* f8 */ 6382 /* f8 */
6040 { "(bad)",» » { XX } }, 6383 { Bad_Opcode },
6041 { "(bad)",» » { XX } }, 6384 { Bad_Opcode },
6042 { "(bad)",» » { XX } }, 6385 { Bad_Opcode },
6043 { "(bad)",» » { XX } }, 6386 { Bad_Opcode },
6044 { "(bad)",» » { XX } }, 6387 { Bad_Opcode },
6045 { "(bad)",» » { XX } }, 6388 { Bad_Opcode },
6046 { "(bad)",» » { XX } }, 6389 { Bad_Opcode },
6047 { "(bad)",» » { XX } }, 6390 { Bad_Opcode },
6048 }, 6391 },
6049 6392
6050 /* THREE_BYTE_0F7A */ 6393 /* THREE_BYTE_0F7A */
6051 { 6394 {
6052 /* 00 */ 6395 /* 00 */
6053 { "(bad)",» » { XX } }, 6396 { Bad_Opcode },
6054 { "(bad)",» » { XX } }, 6397 { Bad_Opcode },
6055 { "(bad)",» » { XX } }, 6398 { Bad_Opcode },
6056 { "(bad)",» » { XX } }, 6399 { Bad_Opcode },
6057 { "(bad)",» » { XX } }, 6400 { Bad_Opcode },
6058 { "(bad)",» » { XX } }, 6401 { Bad_Opcode },
6059 { "(bad)",» » { XX } }, 6402 { Bad_Opcode },
6060 { "(bad)",» » { XX } }, 6403 { Bad_Opcode },
6061 /* 08 */ 6404 /* 08 */
6062 { "(bad)",» » { XX } }, 6405 { Bad_Opcode },
6063 { "(bad)",» » { XX } }, 6406 { Bad_Opcode },
6064 { "(bad)",» » { XX } }, 6407 { Bad_Opcode },
6065 { "(bad)",» » { XX } }, 6408 { Bad_Opcode },
6066 { "(bad)",» » { XX } }, 6409 { Bad_Opcode },
6067 { "(bad)",» » { XX } }, 6410 { Bad_Opcode },
6068 { "(bad)",» » { XX } }, 6411 { Bad_Opcode },
6069 { "(bad)",» » { XX } }, 6412 { Bad_Opcode },
6070 /* 10 */ 6413 /* 10 */
6071 { "(bad)",» » { XX } }, 6414 { Bad_Opcode },
6072 { "(bad)",» » { XX } }, 6415 { Bad_Opcode },
6073 { "(bad)",» » { XX } }, 6416 { Bad_Opcode },
6074 { "(bad)",» » { XX } }, 6417 { Bad_Opcode },
6075 { "(bad)",» » { XX } }, 6418 { Bad_Opcode },
6076 { "(bad)",» » { XX } }, 6419 { Bad_Opcode },
6077 { "(bad)",» » { XX } }, 6420 { Bad_Opcode },
6078 { "(bad)",» » { XX } }, 6421 { Bad_Opcode },
6079 /* 18 */ 6422 /* 18 */
6080 { "(bad)",» » { XX } }, 6423 { Bad_Opcode },
6081 { "(bad)",» » { XX } }, 6424 { Bad_Opcode },
6082 { "(bad)",» » { XX } }, 6425 { Bad_Opcode },
6083 { "(bad)",» » { XX } }, 6426 { Bad_Opcode },
6084 { "(bad)",» » { XX } }, 6427 { Bad_Opcode },
6085 { "(bad)",» » { XX } }, 6428 { Bad_Opcode },
6086 { "(bad)",» » { XX } }, 6429 { Bad_Opcode },
6087 { "(bad)",» » { XX } }, 6430 { Bad_Opcode },
6088 /* 20 */ 6431 /* 20 */
6089 { "ptest", { XX } }, 6432 { "ptest", { XX } },
6090 { "(bad)",» » { XX } }, 6433 { Bad_Opcode },
6091 { "(bad)",» » { XX } }, 6434 { Bad_Opcode },
6092 { "(bad)",» » { XX } }, 6435 { Bad_Opcode },
6093 { "(bad)",» » { XX } }, 6436 { Bad_Opcode },
6094 { "(bad)",» » { XX } }, 6437 { Bad_Opcode },
6095 { "(bad)",» » { XX } }, 6438 { Bad_Opcode },
6096 { "(bad)",» » { XX } }, 6439 { Bad_Opcode },
6097 /* 28 */ 6440 /* 28 */
6098 { "(bad)",» » { XX } }, 6441 { Bad_Opcode },
6099 { "(bad)",» » { XX } }, 6442 { Bad_Opcode },
6100 { "(bad)",» » { XX } }, 6443 { Bad_Opcode },
6101 { "(bad)",» » { XX } }, 6444 { Bad_Opcode },
6102 { "(bad)",» » { XX } }, 6445 { Bad_Opcode },
6103 { "(bad)",» » { XX } }, 6446 { Bad_Opcode },
6104 { "(bad)",» » { XX } }, 6447 { Bad_Opcode },
6105 { "(bad)",» » { XX } }, 6448 { Bad_Opcode },
6106 /* 30 */ 6449 /* 30 */
6107 { "(bad)",» » { XX } }, 6450 { Bad_Opcode },
6108 { "(bad)",» » { XX } }, 6451 { Bad_Opcode },
6109 { "(bad)",» » { XX } }, 6452 { Bad_Opcode },
6110 { "(bad)",» » { XX } }, 6453 { Bad_Opcode },
6111 { "(bad)",» » { XX } }, 6454 { Bad_Opcode },
6112 { "(bad)",» » { XX } }, 6455 { Bad_Opcode },
6113 { "(bad)",» » { XX } }, 6456 { Bad_Opcode },
6114 { "(bad)",» » { XX } }, 6457 { Bad_Opcode },
6115 /* 38 */ 6458 /* 38 */
6116 { "(bad)",» » { XX } }, 6459 { Bad_Opcode },
6117 { "(bad)",» » { XX } }, 6460 { Bad_Opcode },
6118 { "(bad)",» » { XX } }, 6461 { Bad_Opcode },
6119 { "(bad)",» » { XX } }, 6462 { Bad_Opcode },
6120 { "(bad)",» » { XX } }, 6463 { Bad_Opcode },
6121 { "(bad)",» » { XX } }, 6464 { Bad_Opcode },
6122 { "(bad)",» » { XX } }, 6465 { Bad_Opcode },
6123 { "(bad)",» » { XX } }, 6466 { Bad_Opcode },
6124 /* 40 */ 6467 /* 40 */
6125 { "(bad)",» » { XX } }, 6468 { Bad_Opcode },
6126 { "phaddbw", { XM, EXq } }, 6469 { "phaddbw", { XM, EXq } },
6127 { "phaddbd", { XM, EXq } }, 6470 { "phaddbd", { XM, EXq } },
6128 { "phaddbq", { XM, EXq } }, 6471 { "phaddbq", { XM, EXq } },
6129 { "(bad)",» » { XX } }, 6472 { Bad_Opcode },
6130 { "(bad)",» » { XX } }, 6473 { Bad_Opcode },
6131 { "phaddwd", { XM, EXq } }, 6474 { "phaddwd", { XM, EXq } },
6132 { "phaddwq", { XM, EXq } }, 6475 { "phaddwq", { XM, EXq } },
6133 /* 48 */ 6476 /* 48 */
6134 { "(bad)",» » { XX } }, 6477 { Bad_Opcode },
6135 { "(bad)",» » { XX } }, 6478 { Bad_Opcode },
6136 { "(bad)",» » { XX } }, 6479 { Bad_Opcode },
6137 { "phadddq", { XM, EXq } }, 6480 { "phadddq", { XM, EXq } },
6138 { "(bad)",» » { XX } }, 6481 { Bad_Opcode },
6139 { "(bad)",» » { XX } }, 6482 { Bad_Opcode },
6140 { "(bad)",» » { XX } }, 6483 { Bad_Opcode },
6141 { "(bad)",» » { XX } }, 6484 { Bad_Opcode },
6142 /* 50 */ 6485 /* 50 */
6143 { "(bad)",» » { XX } }, 6486 { Bad_Opcode },
6144 { "phaddubw", { XM, EXq } }, 6487 { "phaddubw", { XM, EXq } },
6145 { "phaddubd", { XM, EXq } }, 6488 { "phaddubd", { XM, EXq } },
6146 { "phaddubq", { XM, EXq } }, 6489 { "phaddubq", { XM, EXq } },
6147 { "(bad)",» » { XX } }, 6490 { Bad_Opcode },
6148 { "(bad)",» » { XX } }, 6491 { Bad_Opcode },
6149 { "phadduwd", { XM, EXq } }, 6492 { "phadduwd", { XM, EXq } },
6150 { "phadduwq", { XM, EXq } }, 6493 { "phadduwq", { XM, EXq } },
6151 /* 58 */ 6494 /* 58 */
6152 { "(bad)",» » { XX } }, 6495 { Bad_Opcode },
6153 { "(bad)",» » { XX } }, 6496 { Bad_Opcode },
6154 { "(bad)",» » { XX } }, 6497 { Bad_Opcode },
6155 { "phaddudq", { XM, EXq } }, 6498 { "phaddudq", { XM, EXq } },
6156 { "(bad)",» » { XX } }, 6499 { Bad_Opcode },
6157 { "(bad)",» » { XX } }, 6500 { Bad_Opcode },
6158 { "(bad)",» » { XX } }, 6501 { Bad_Opcode },
6159 { "(bad)",» » { XX } }, 6502 { Bad_Opcode },
6160 /* 60 */ 6503 /* 60 */
6161 { "(bad)",» » { XX } }, 6504 { Bad_Opcode },
6162 { "phsubbw", { XM, EXq } }, 6505 { "phsubbw", { XM, EXq } },
6163 { "phsubbd", { XM, EXq } }, 6506 { "phsubbd", { XM, EXq } },
6164 { "phsubbq", { XM, EXq } }, 6507 { "phsubbq", { XM, EXq } },
6165 { "(bad)",» » { XX } }, 6508 { Bad_Opcode },
6166 { "(bad)",» » { XX } }, 6509 { Bad_Opcode },
6167 { "(bad)",» » { XX } }, 6510 { Bad_Opcode },
6168 { "(bad)",» » { XX } }, 6511 { Bad_Opcode },
6169 /* 68 */ 6512 /* 68 */
6170 { "(bad)",» » { XX } }, 6513 { Bad_Opcode },
6171 { "(bad)",» » { XX } }, 6514 { Bad_Opcode },
6172 { "(bad)",» » { XX } }, 6515 { Bad_Opcode },
6173 { "(bad)",» » { XX } }, 6516 { Bad_Opcode },
6174 { "(bad)",» » { XX } }, 6517 { Bad_Opcode },
6175 { "(bad)",» » { XX } }, 6518 { Bad_Opcode },
6176 { "(bad)",» » { XX } }, 6519 { Bad_Opcode },
6177 { "(bad)",» » { XX } }, 6520 { Bad_Opcode },
6178 /* 70 */ 6521 /* 70 */
6179 { "(bad)",» » { XX } }, 6522 { Bad_Opcode },
6180 { "(bad)",» » { XX } }, 6523 { Bad_Opcode },
6181 { "(bad)",» » { XX } }, 6524 { Bad_Opcode },
6182 { "(bad)",» » { XX } }, 6525 { Bad_Opcode },
6183 { "(bad)",» » { XX } }, 6526 { Bad_Opcode },
6184 { "(bad)",» » { XX } }, 6527 { Bad_Opcode },
6185 { "(bad)",» » { XX } }, 6528 { Bad_Opcode },
6186 { "(bad)",» » { XX } }, 6529 { Bad_Opcode },
6187 /* 78 */ 6530 /* 78 */
6188 { "(bad)",» » { XX } }, 6531 { Bad_Opcode },
6189 { "(bad)",» » { XX } }, 6532 { Bad_Opcode },
6190 { "(bad)",» » { XX } }, 6533 { Bad_Opcode },
6191 { "(bad)",» » { XX } }, 6534 { Bad_Opcode },
6192 { "(bad)",» » { XX } }, 6535 { Bad_Opcode },
6193 { "(bad)",» » { XX } }, 6536 { Bad_Opcode },
6194 { "(bad)",» » { XX } }, 6537 { Bad_Opcode },
6195 { "(bad)",» » { XX } }, 6538 { Bad_Opcode },
6196 /* 80 */ 6539 /* 80 */
6197 { "(bad)",» » { XX } }, 6540 { Bad_Opcode },
6198 { "(bad)",» » { XX } }, 6541 { Bad_Opcode },
6199 { "(bad)",» » { XX } }, 6542 { Bad_Opcode },
6200 { "(bad)",» » { XX } }, 6543 { Bad_Opcode },
6201 { "(bad)",» » { XX } }, 6544 { Bad_Opcode },
6202 { "(bad)",» » { XX } }, 6545 { Bad_Opcode },
6203 { "(bad)",» » { XX } }, 6546 { Bad_Opcode },
6204 { "(bad)",» » { XX } }, 6547 { Bad_Opcode },
6205 /* 88 */ 6548 /* 88 */
6206 { "(bad)",» » { XX } }, 6549 { Bad_Opcode },
6207 { "(bad)",» » { XX } }, 6550 { Bad_Opcode },
6208 { "(bad)",» » { XX } }, 6551 { Bad_Opcode },
6209 { "(bad)",» » { XX } }, 6552 { Bad_Opcode },
6210 { "(bad)",» » { XX } }, 6553 { Bad_Opcode },
6211 { "(bad)",» » { XX } }, 6554 { Bad_Opcode },
6212 { "(bad)",» » { XX } }, 6555 { Bad_Opcode },
6213 { "(bad)",» » { XX } }, 6556 { Bad_Opcode },
6214 /* 90 */ 6557 /* 90 */
6215 { "(bad)",» » { XX } }, 6558 { Bad_Opcode },
6216 { "(bad)",» » { XX } }, 6559 { Bad_Opcode },
6217 { "(bad)",» » { XX } }, 6560 { Bad_Opcode },
6218 { "(bad)",» » { XX } }, 6561 { Bad_Opcode },
6219 { "(bad)",» » { XX } }, 6562 { Bad_Opcode },
6220 { "(bad)",» » { XX } }, 6563 { Bad_Opcode },
6221 { "(bad)",» » { XX } }, 6564 { Bad_Opcode },
6222 { "(bad)",» » { XX } }, 6565 { Bad_Opcode },
6223 /* 98 */ 6566 /* 98 */
6224 { "(bad)",» » { XX } }, 6567 { Bad_Opcode },
6225 { "(bad)",» » { XX } }, 6568 { Bad_Opcode },
6226 { "(bad)",» » { XX } }, 6569 { Bad_Opcode },
6227 { "(bad)",» » { XX } }, 6570 { Bad_Opcode },
6228 { "(bad)",» » { XX } }, 6571 { Bad_Opcode },
6229 { "(bad)",» » { XX } }, 6572 { Bad_Opcode },
6230 { "(bad)",» » { XX } }, 6573 { Bad_Opcode },
6231 { "(bad)",» » { XX } }, 6574 { Bad_Opcode },
6232 /* a0 */ 6575 /* a0 */
6233 { "(bad)",» » { XX } }, 6576 { Bad_Opcode },
6234 { "(bad)",» » { XX } }, 6577 { Bad_Opcode },
6235 { "(bad)",» » { XX } }, 6578 { Bad_Opcode },
6236 { "(bad)",» » { XX } }, 6579 { Bad_Opcode },
6237 { "(bad)",» » { XX } }, 6580 { Bad_Opcode },
6238 { "(bad)",» » { XX } }, 6581 { Bad_Opcode },
6239 { "(bad)",» » { XX } }, 6582 { Bad_Opcode },
6240 { "(bad)",» » { XX } }, 6583 { Bad_Opcode },
6241 /* a8 */ 6584 /* a8 */
6242 { "(bad)",» » { XX } }, 6585 { Bad_Opcode },
6243 { "(bad)",» » { XX } }, 6586 { Bad_Opcode },
6244 { "(bad)",» » { XX } }, 6587 { Bad_Opcode },
6245 { "(bad)",» » { XX } }, 6588 { Bad_Opcode },
6246 { "(bad)",» » { XX } }, 6589 { Bad_Opcode },
6247 { "(bad)",» » { XX } }, 6590 { Bad_Opcode },
6248 { "(bad)",» » { XX } }, 6591 { Bad_Opcode },
6249 { "(bad)",» » { XX } }, 6592 { Bad_Opcode },
6250 /* b0 */ 6593 /* b0 */
6251 { "(bad)",» » { XX } }, 6594 { Bad_Opcode },
6252 { "(bad)",» » { XX } }, 6595 { Bad_Opcode },
6253 { "(bad)",» » { XX } }, 6596 { Bad_Opcode },
6254 { "(bad)",» » { XX } }, 6597 { Bad_Opcode },
6255 { "(bad)",» » { XX } }, 6598 { Bad_Opcode },
6256 { "(bad)",» » { XX } }, 6599 { Bad_Opcode },
6257 { "(bad)",» » { XX } }, 6600 { Bad_Opcode },
6258 { "(bad)",» » { XX } }, 6601 { Bad_Opcode },
6259 /* b8 */ 6602 /* b8 */
6260 { "(bad)",» » { XX } }, 6603 { Bad_Opcode },
6261 { "(bad)",» » { XX } }, 6604 { Bad_Opcode },
6262 { "(bad)",» » { XX } }, 6605 { Bad_Opcode },
6263 { "(bad)",» » { XX } }, 6606 { Bad_Opcode },
6264 { "(bad)",» » { XX } }, 6607 { Bad_Opcode },
6265 { "(bad)",» » { XX } }, 6608 { Bad_Opcode },
6266 { "(bad)",» » { XX } }, 6609 { Bad_Opcode },
6267 { "(bad)",» » { XX } }, 6610 { Bad_Opcode },
6268 /* c0 */ 6611 /* c0 */
6269 { "(bad)",» » { XX } }, 6612 { Bad_Opcode },
6270 { "(bad)",» » { XX } }, 6613 { Bad_Opcode },
6271 { "(bad)",» » { XX } }, 6614 { Bad_Opcode },
6272 { "(bad)",» » { XX } }, 6615 { Bad_Opcode },
6273 { "(bad)",» » { XX } }, 6616 { Bad_Opcode },
6274 { "(bad)",» » { XX } }, 6617 { Bad_Opcode },
6275 { "(bad)",» » { XX } }, 6618 { Bad_Opcode },
6276 { "(bad)",» » { XX } }, 6619 { Bad_Opcode },
6277 /* c8 */ 6620 /* c8 */
6278 { "(bad)",» » { XX } }, 6621 { Bad_Opcode },
6279 { "(bad)",» » { XX } }, 6622 { Bad_Opcode },
6280 { "(bad)",» » { XX } }, 6623 { Bad_Opcode },
6281 { "(bad)",» » { XX } }, 6624 { Bad_Opcode },
6282 { "(bad)",» » { XX } }, 6625 { Bad_Opcode },
6283 { "(bad)",» » { XX } }, 6626 { Bad_Opcode },
6284 { "(bad)",» » { XX } }, 6627 { Bad_Opcode },
6285 { "(bad)",» » { XX } }, 6628 { Bad_Opcode },
6286 /* d0 */ 6629 /* d0 */
6287 { "(bad)",» » { XX } }, 6630 { Bad_Opcode },
6288 { "(bad)",» » { XX } }, 6631 { Bad_Opcode },
6289 { "(bad)",» » { XX } }, 6632 { Bad_Opcode },
6290 { "(bad)",» » { XX } }, 6633 { Bad_Opcode },
6291 { "(bad)",» » { XX } }, 6634 { Bad_Opcode },
6292 { "(bad)",» » { XX } }, 6635 { Bad_Opcode },
6293 { "(bad)",» » { XX } }, 6636 { Bad_Opcode },
6294 { "(bad)",» » { XX } }, 6637 { Bad_Opcode },
6295 /* d8 */ 6638 /* d8 */
6296 { "(bad)",» » { XX } }, 6639 { Bad_Opcode },
6297 { "(bad)",» » { XX } }, 6640 { Bad_Opcode },
6298 { "(bad)",» » { XX } }, 6641 { Bad_Opcode },
6299 { "(bad)",» » { XX } }, 6642 { Bad_Opcode },
6300 { "(bad)",» » { XX } }, 6643 { Bad_Opcode },
6301 { "(bad)",» » { XX } }, 6644 { Bad_Opcode },
6302 { "(bad)",» » { XX } }, 6645 { Bad_Opcode },
6303 { "(bad)",» » { XX } }, 6646 { Bad_Opcode },
6304 /* e0 */ 6647 /* e0 */
6305 { "(bad)",» » { XX } }, 6648 { Bad_Opcode },
6306 { "(bad)",» » { XX } }, 6649 { Bad_Opcode },
6307 { "(bad)",» » { XX } }, 6650 { Bad_Opcode },
6308 { "(bad)",» » { XX } }, 6651 { Bad_Opcode },
6309 { "(bad)",» » { XX } }, 6652 { Bad_Opcode },
6310 { "(bad)",» » { XX } }, 6653 { Bad_Opcode },
6311 { "(bad)",» » { XX } }, 6654 { Bad_Opcode },
6312 { "(bad)",» » { XX } }, 6655 { Bad_Opcode },
6313 /* e8 */ 6656 /* e8 */
6314 { "(bad)",» » { XX } }, 6657 { Bad_Opcode },
6315 { "(bad)",» » { XX } }, 6658 { Bad_Opcode },
6316 { "(bad)",» » { XX } }, 6659 { Bad_Opcode },
6317 { "(bad)",» » { XX } }, 6660 { Bad_Opcode },
6318 { "(bad)",» » { XX } }, 6661 { Bad_Opcode },
6319 { "(bad)",» » { XX } }, 6662 { Bad_Opcode },
6320 { "(bad)",» » { XX } }, 6663 { Bad_Opcode },
6321 { "(bad)",» » { XX } }, 6664 { Bad_Opcode },
6322 /* f0 */ 6665 /* f0 */
6323 { "(bad)",» » { XX } }, 6666 { Bad_Opcode },
6324 { "(bad)",» » { XX } }, 6667 { Bad_Opcode },
6325 { "(bad)",» » { XX } }, 6668 { Bad_Opcode },
6326 { "(bad)",» » { XX } }, 6669 { Bad_Opcode },
6327 { "(bad)",» » { XX } }, 6670 { Bad_Opcode },
6328 { "(bad)",» » { XX } }, 6671 { Bad_Opcode },
6329 { "(bad)",» » { XX } }, 6672 { Bad_Opcode },
6330 { "(bad)",» » { XX } }, 6673 { Bad_Opcode },
6331 /* f8 */ 6674 /* f8 */
6332 { "(bad)",» » { XX } }, 6675 { Bad_Opcode },
6333 { "(bad)",» » { XX } }, 6676 { Bad_Opcode },
6334 { "(bad)",» » { XX } }, 6677 { Bad_Opcode },
6335 { "(bad)",» » { XX } }, 6678 { Bad_Opcode },
6336 { "(bad)",» » { XX } }, 6679 { Bad_Opcode },
6337 { "(bad)",» » { XX } }, 6680 { Bad_Opcode },
6338 { "(bad)",» » { XX } }, 6681 { Bad_Opcode },
6339 { "(bad)",» » { XX } }, 6682 { Bad_Opcode },
6340 }, 6683 },
6341 }; 6684 };
6342 6685
6686 static const struct dis386 xop_table[][256] = {
6687 /* XOP_08 */
6688 {
6689 /* 00 */
6690 { Bad_Opcode },
6691 { Bad_Opcode },
6692 { Bad_Opcode },
6693 { Bad_Opcode },
6694 { Bad_Opcode },
6695 { Bad_Opcode },
6696 { Bad_Opcode },
6697 { Bad_Opcode },
6698 /* 08 */
6699 { Bad_Opcode },
6700 { Bad_Opcode },
6701 { Bad_Opcode },
6702 { Bad_Opcode },
6703 { Bad_Opcode },
6704 { Bad_Opcode },
6705 { Bad_Opcode },
6706 { Bad_Opcode },
6707 /* 10 */
6708 { Bad_Opcode },
6709 { Bad_Opcode },
6710 { Bad_Opcode },
6711 { Bad_Opcode },
6712 { Bad_Opcode },
6713 { Bad_Opcode },
6714 { Bad_Opcode },
6715 { Bad_Opcode },
6716 /* 18 */
6717 { Bad_Opcode },
6718 { Bad_Opcode },
6719 { Bad_Opcode },
6720 { Bad_Opcode },
6721 { Bad_Opcode },
6722 { Bad_Opcode },
6723 { Bad_Opcode },
6724 { Bad_Opcode },
6725 /* 20 */
6726 { Bad_Opcode },
6727 { Bad_Opcode },
6728 { Bad_Opcode },
6729 { Bad_Opcode },
6730 { Bad_Opcode },
6731 { Bad_Opcode },
6732 { Bad_Opcode },
6733 { Bad_Opcode },
6734 /* 28 */
6735 { Bad_Opcode },
6736 { Bad_Opcode },
6737 { Bad_Opcode },
6738 { Bad_Opcode },
6739 { Bad_Opcode },
6740 { Bad_Opcode },
6741 { Bad_Opcode },
6742 { Bad_Opcode },
6743 /* 30 */
6744 { Bad_Opcode },
6745 { Bad_Opcode },
6746 { Bad_Opcode },
6747 { Bad_Opcode },
6748 { Bad_Opcode },
6749 { Bad_Opcode },
6750 { Bad_Opcode },
6751 { Bad_Opcode },
6752 /* 38 */
6753 { Bad_Opcode },
6754 { Bad_Opcode },
6755 { Bad_Opcode },
6756 { Bad_Opcode },
6757 { Bad_Opcode },
6758 { Bad_Opcode },
6759 { Bad_Opcode },
6760 { Bad_Opcode },
6761 /* 40 */
6762 { Bad_Opcode },
6763 { Bad_Opcode },
6764 { Bad_Opcode },
6765 { Bad_Opcode },
6766 { Bad_Opcode },
6767 { Bad_Opcode },
6768 { Bad_Opcode },
6769 { Bad_Opcode },
6770 /* 48 */
6771 { Bad_Opcode },
6772 { Bad_Opcode },
6773 { Bad_Opcode },
6774 { Bad_Opcode },
6775 { Bad_Opcode },
6776 { Bad_Opcode },
6777 { Bad_Opcode },
6778 { Bad_Opcode },
6779 /* 50 */
6780 { Bad_Opcode },
6781 { Bad_Opcode },
6782 { Bad_Opcode },
6783 { Bad_Opcode },
6784 { Bad_Opcode },
6785 { Bad_Opcode },
6786 { Bad_Opcode },
6787 { Bad_Opcode },
6788 /* 58 */
6789 { Bad_Opcode },
6790 { Bad_Opcode },
6791 { Bad_Opcode },
6792 { Bad_Opcode },
6793 { Bad_Opcode },
6794 { Bad_Opcode },
6795 { Bad_Opcode },
6796 { Bad_Opcode },
6797 /* 60 */
6798 { Bad_Opcode },
6799 { Bad_Opcode },
6800 { Bad_Opcode },
6801 { Bad_Opcode },
6802 { Bad_Opcode },
6803 { Bad_Opcode },
6804 { Bad_Opcode },
6805 { Bad_Opcode },
6806 /* 68 */
6807 { Bad_Opcode },
6808 { Bad_Opcode },
6809 { Bad_Opcode },
6810 { Bad_Opcode },
6811 { Bad_Opcode },
6812 { Bad_Opcode },
6813 { Bad_Opcode },
6814 { Bad_Opcode },
6815 /* 70 */
6816 { Bad_Opcode },
6817 { Bad_Opcode },
6818 { Bad_Opcode },
6819 { Bad_Opcode },
6820 { Bad_Opcode },
6821 { Bad_Opcode },
6822 { Bad_Opcode },
6823 { Bad_Opcode },
6824 /* 78 */
6825 { Bad_Opcode },
6826 { Bad_Opcode },
6827 { Bad_Opcode },
6828 { Bad_Opcode },
6829 { Bad_Opcode },
6830 { Bad_Opcode },
6831 { Bad_Opcode },
6832 { Bad_Opcode },
6833 /* 80 */
6834 { Bad_Opcode },
6835 { Bad_Opcode },
6836 { Bad_Opcode },
6837 { Bad_Opcode },
6838 { Bad_Opcode },
6839 { "vpmacssww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6840 { "vpmacsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6841 { "vpmacssdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6842 /* 88 */
6843 { Bad_Opcode },
6844 { Bad_Opcode },
6845 { Bad_Opcode },
6846 { Bad_Opcode },
6847 { Bad_Opcode },
6848 { Bad_Opcode },
6849 { "vpmacssdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6850 { "vpmacssdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6851 /* 90 */
6852 { Bad_Opcode },
6853 { Bad_Opcode },
6854 { Bad_Opcode },
6855 { Bad_Opcode },
6856 { Bad_Opcode },
6857 { "vpmacsww", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6858 { "vpmacswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6859 { "vpmacsdql", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6860 /* 98 */
6861 { Bad_Opcode },
6862 { Bad_Opcode },
6863 { Bad_Opcode },
6864 { Bad_Opcode },
6865 { Bad_Opcode },
6866 { Bad_Opcode },
6867 { "vpmacsdd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6868 { "vpmacsdqh", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6869 /* a0 */
6870 { Bad_Opcode },
6871 { Bad_Opcode },
6872 { "vpcmov", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6873 { "vpperm", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6874 { Bad_Opcode },
6875 { Bad_Opcode },
6876 { "vpmadcsswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6877 { Bad_Opcode },
6878 /* a8 */
6879 { Bad_Opcode },
6880 { Bad_Opcode },
6881 { Bad_Opcode },
6882 { Bad_Opcode },
6883 { Bad_Opcode },
6884 { Bad_Opcode },
6885 { Bad_Opcode },
6886 { Bad_Opcode },
6887 /* b0 */
6888 { Bad_Opcode },
6889 { Bad_Opcode },
6890 { Bad_Opcode },
6891 { Bad_Opcode },
6892 { Bad_Opcode },
6893 { Bad_Opcode },
6894 { "vpmadcswd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
6895 { Bad_Opcode },
6896 /* b8 */
6897 { Bad_Opcode },
6898 { Bad_Opcode },
6899 { Bad_Opcode },
6900 { Bad_Opcode },
6901 { Bad_Opcode },
6902 { Bad_Opcode },
6903 { Bad_Opcode },
6904 { Bad_Opcode },
6905 /* c0 */
6906 { "vprotb", { XM, Vex_2src_1, Ib } },
6907 { "vprotw", { XM, Vex_2src_1, Ib } },
6908 { "vprotd", { XM, Vex_2src_1, Ib } },
6909 { "vprotq", { XM, Vex_2src_1, Ib } },
6910 { Bad_Opcode },
6911 { Bad_Opcode },
6912 { Bad_Opcode },
6913 { Bad_Opcode },
6914 /* c8 */
6915 { Bad_Opcode },
6916 { Bad_Opcode },
6917 { Bad_Opcode },
6918 { Bad_Opcode },
6919 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CC) },
6920 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CD) },
6921 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CE) },
6922 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CF) },
6923 /* d0 */
6924 { Bad_Opcode },
6925 { Bad_Opcode },
6926 { Bad_Opcode },
6927 { Bad_Opcode },
6928 { Bad_Opcode },
6929 { Bad_Opcode },
6930 { Bad_Opcode },
6931 { Bad_Opcode },
6932 /* d8 */
6933 { Bad_Opcode },
6934 { Bad_Opcode },
6935 { Bad_Opcode },
6936 { Bad_Opcode },
6937 { Bad_Opcode },
6938 { Bad_Opcode },
6939 { Bad_Opcode },
6940 { Bad_Opcode },
6941 /* e0 */
6942 { Bad_Opcode },
6943 { Bad_Opcode },
6944 { Bad_Opcode },
6945 { Bad_Opcode },
6946 { Bad_Opcode },
6947 { Bad_Opcode },
6948 { Bad_Opcode },
6949 { Bad_Opcode },
6950 /* e8 */
6951 { Bad_Opcode },
6952 { Bad_Opcode },
6953 { Bad_Opcode },
6954 { Bad_Opcode },
6955 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_EC) },
6956 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_ED) },
6957 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_EE) },
6958 { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_EF) },
6959 /* f0 */
6960 { Bad_Opcode },
6961 { Bad_Opcode },
6962 { Bad_Opcode },
6963 { Bad_Opcode },
6964 { Bad_Opcode },
6965 { Bad_Opcode },
6966 { Bad_Opcode },
6967 { Bad_Opcode },
6968 /* f8 */
6969 { Bad_Opcode },
6970 { Bad_Opcode },
6971 { Bad_Opcode },
6972 { Bad_Opcode },
6973 { Bad_Opcode },
6974 { Bad_Opcode },
6975 { Bad_Opcode },
6976 { Bad_Opcode },
6977 },
6978 /* XOP_09 */
6979 {
6980 /* 00 */
6981 { Bad_Opcode },
6982 { REG_TABLE (REG_XOP_TBM_01) },
6983 { REG_TABLE (REG_XOP_TBM_02) },
6984 { Bad_Opcode },
6985 { Bad_Opcode },
6986 { Bad_Opcode },
6987 { Bad_Opcode },
6988 { Bad_Opcode },
6989 /* 08 */
6990 { Bad_Opcode },
6991 { Bad_Opcode },
6992 { Bad_Opcode },
6993 { Bad_Opcode },
6994 { Bad_Opcode },
6995 { Bad_Opcode },
6996 { Bad_Opcode },
6997 { Bad_Opcode },
6998 /* 10 */
6999 { Bad_Opcode },
7000 { Bad_Opcode },
7001 { REG_TABLE (REG_XOP_LWPCB) },
7002 { Bad_Opcode },
7003 { Bad_Opcode },
7004 { Bad_Opcode },
7005 { Bad_Opcode },
7006 { Bad_Opcode },
7007 /* 18 */
7008 { Bad_Opcode },
7009 { Bad_Opcode },
7010 { Bad_Opcode },
7011 { Bad_Opcode },
7012 { Bad_Opcode },
7013 { Bad_Opcode },
7014 { Bad_Opcode },
7015 { Bad_Opcode },
7016 /* 20 */
7017 { Bad_Opcode },
7018 { Bad_Opcode },
7019 { Bad_Opcode },
7020 { Bad_Opcode },
7021 { Bad_Opcode },
7022 { Bad_Opcode },
7023 { Bad_Opcode },
7024 { Bad_Opcode },
7025 /* 28 */
7026 { Bad_Opcode },
7027 { Bad_Opcode },
7028 { Bad_Opcode },
7029 { Bad_Opcode },
7030 { Bad_Opcode },
7031 { Bad_Opcode },
7032 { Bad_Opcode },
7033 { Bad_Opcode },
7034 /* 30 */
7035 { Bad_Opcode },
7036 { Bad_Opcode },
7037 { Bad_Opcode },
7038 { Bad_Opcode },
7039 { Bad_Opcode },
7040 { Bad_Opcode },
7041 { Bad_Opcode },
7042 { Bad_Opcode },
7043 /* 38 */
7044 { Bad_Opcode },
7045 { Bad_Opcode },
7046 { Bad_Opcode },
7047 { Bad_Opcode },
7048 { Bad_Opcode },
7049 { Bad_Opcode },
7050 { Bad_Opcode },
7051 { Bad_Opcode },
7052 /* 40 */
7053 { Bad_Opcode },
7054 { Bad_Opcode },
7055 { Bad_Opcode },
7056 { Bad_Opcode },
7057 { Bad_Opcode },
7058 { Bad_Opcode },
7059 { Bad_Opcode },
7060 { Bad_Opcode },
7061 /* 48 */
7062 { Bad_Opcode },
7063 { Bad_Opcode },
7064 { Bad_Opcode },
7065 { Bad_Opcode },
7066 { Bad_Opcode },
7067 { Bad_Opcode },
7068 { Bad_Opcode },
7069 { Bad_Opcode },
7070 /* 50 */
7071 { Bad_Opcode },
7072 { Bad_Opcode },
7073 { Bad_Opcode },
7074 { Bad_Opcode },
7075 { Bad_Opcode },
7076 { Bad_Opcode },
7077 { Bad_Opcode },
7078 { Bad_Opcode },
7079 /* 58 */
7080 { Bad_Opcode },
7081 { Bad_Opcode },
7082 { Bad_Opcode },
7083 { Bad_Opcode },
7084 { Bad_Opcode },
7085 { Bad_Opcode },
7086 { Bad_Opcode },
7087 { Bad_Opcode },
7088 /* 60 */
7089 { Bad_Opcode },
7090 { Bad_Opcode },
7091 { Bad_Opcode },
7092 { Bad_Opcode },
7093 { Bad_Opcode },
7094 { Bad_Opcode },
7095 { Bad_Opcode },
7096 { Bad_Opcode },
7097 /* 68 */
7098 { Bad_Opcode },
7099 { Bad_Opcode },
7100 { Bad_Opcode },
7101 { Bad_Opcode },
7102 { Bad_Opcode },
7103 { Bad_Opcode },
7104 { Bad_Opcode },
7105 { Bad_Opcode },
7106 /* 70 */
7107 { Bad_Opcode },
7108 { Bad_Opcode },
7109 { Bad_Opcode },
7110 { Bad_Opcode },
7111 { Bad_Opcode },
7112 { Bad_Opcode },
7113 { Bad_Opcode },
7114 { Bad_Opcode },
7115 /* 78 */
7116 { Bad_Opcode },
7117 { Bad_Opcode },
7118 { Bad_Opcode },
7119 { Bad_Opcode },
7120 { Bad_Opcode },
7121 { Bad_Opcode },
7122 { Bad_Opcode },
7123 { Bad_Opcode },
7124 /* 80 */
7125 { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_80) },
7126 { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_81) },
7127 { "vfrczss", { XM, EXd } },
7128 { "vfrczsd", { XM, EXq } },
7129 { Bad_Opcode },
7130 { Bad_Opcode },
7131 { Bad_Opcode },
7132 { Bad_Opcode },
7133 /* 88 */
7134 { Bad_Opcode },
7135 { Bad_Opcode },
7136 { Bad_Opcode },
7137 { Bad_Opcode },
7138 { Bad_Opcode },
7139 { Bad_Opcode },
7140 { Bad_Opcode },
7141 { Bad_Opcode },
7142 /* 90 */
7143 { "vprotb", { XM, Vex_2src_1, Vex_2src_2 } },
7144 { "vprotw", { XM, Vex_2src_1, Vex_2src_2 } },
7145 { "vprotd", { XM, Vex_2src_1, Vex_2src_2 } },
7146 { "vprotq", { XM, Vex_2src_1, Vex_2src_2 } },
7147 { "vpshlb", { XM, Vex_2src_1, Vex_2src_2 } },
7148 { "vpshlw", { XM, Vex_2src_1, Vex_2src_2 } },
7149 { "vpshld", { XM, Vex_2src_1, Vex_2src_2 } },
7150 { "vpshlq", { XM, Vex_2src_1, Vex_2src_2 } },
7151 /* 98 */
7152 { "vpshab", { XM, Vex_2src_1, Vex_2src_2 } },
7153 { "vpshaw", { XM, Vex_2src_1, Vex_2src_2 } },
7154 { "vpshad", { XM, Vex_2src_1, Vex_2src_2 } },
7155 { "vpshaq", { XM, Vex_2src_1, Vex_2src_2 } },
7156 { Bad_Opcode },
7157 { Bad_Opcode },
7158 { Bad_Opcode },
7159 { Bad_Opcode },
7160 /* a0 */
7161 { Bad_Opcode },
7162 { Bad_Opcode },
7163 { Bad_Opcode },
7164 { Bad_Opcode },
7165 { Bad_Opcode },
7166 { Bad_Opcode },
7167 { Bad_Opcode },
7168 { Bad_Opcode },
7169 /* a8 */
7170 { Bad_Opcode },
7171 { Bad_Opcode },
7172 { Bad_Opcode },
7173 { Bad_Opcode },
7174 { Bad_Opcode },
7175 { Bad_Opcode },
7176 { Bad_Opcode },
7177 { Bad_Opcode },
7178 /* b0 */
7179 { Bad_Opcode },
7180 { Bad_Opcode },
7181 { Bad_Opcode },
7182 { Bad_Opcode },
7183 { Bad_Opcode },
7184 { Bad_Opcode },
7185 { Bad_Opcode },
7186 { Bad_Opcode },
7187 /* b8 */
7188 { Bad_Opcode },
7189 { Bad_Opcode },
7190 { Bad_Opcode },
7191 { Bad_Opcode },
7192 { Bad_Opcode },
7193 { Bad_Opcode },
7194 { Bad_Opcode },
7195 { Bad_Opcode },
7196 /* c0 */
7197 { Bad_Opcode },
7198 { "vphaddbw", { XM, EXxmm } },
7199 { "vphaddbd", { XM, EXxmm } },
7200 { "vphaddbq", { XM, EXxmm } },
7201 { Bad_Opcode },
7202 { Bad_Opcode },
7203 { "vphaddwd", { XM, EXxmm } },
7204 { "vphaddwq", { XM, EXxmm } },
7205 /* c8 */
7206 { Bad_Opcode },
7207 { Bad_Opcode },
7208 { Bad_Opcode },
7209 { "vphadddq", { XM, EXxmm } },
7210 { Bad_Opcode },
7211 { Bad_Opcode },
7212 { Bad_Opcode },
7213 { Bad_Opcode },
7214 /* d0 */
7215 { Bad_Opcode },
7216 { "vphaddubw", { XM, EXxmm } },
7217 { "vphaddubd", { XM, EXxmm } },
7218 { "vphaddubq", { XM, EXxmm } },
7219 { Bad_Opcode },
7220 { Bad_Opcode },
7221 { "vphadduwd", { XM, EXxmm } },
7222 { "vphadduwq", { XM, EXxmm } },
7223 /* d8 */
7224 { Bad_Opcode },
7225 { Bad_Opcode },
7226 { Bad_Opcode },
7227 { "vphaddudq", { XM, EXxmm } },
7228 { Bad_Opcode },
7229 { Bad_Opcode },
7230 { Bad_Opcode },
7231 { Bad_Opcode },
7232 /* e0 */
7233 { Bad_Opcode },
7234 { "vphsubbw", { XM, EXxmm } },
7235 { "vphsubwd", { XM, EXxmm } },
7236 { "vphsubdq", { XM, EXxmm } },
7237 { Bad_Opcode },
7238 { Bad_Opcode },
7239 { Bad_Opcode },
7240 { Bad_Opcode },
7241 /* e8 */
7242 { Bad_Opcode },
7243 { Bad_Opcode },
7244 { Bad_Opcode },
7245 { Bad_Opcode },
7246 { Bad_Opcode },
7247 { Bad_Opcode },
7248 { Bad_Opcode },
7249 { Bad_Opcode },
7250 /* f0 */
7251 { Bad_Opcode },
7252 { Bad_Opcode },
7253 { Bad_Opcode },
7254 { Bad_Opcode },
7255 { Bad_Opcode },
7256 { Bad_Opcode },
7257 { Bad_Opcode },
7258 { Bad_Opcode },
7259 /* f8 */
7260 { Bad_Opcode },
7261 { Bad_Opcode },
7262 { Bad_Opcode },
7263 { Bad_Opcode },
7264 { Bad_Opcode },
7265 { Bad_Opcode },
7266 { Bad_Opcode },
7267 { Bad_Opcode },
7268 },
7269 /* XOP_0A */
7270 {
7271 /* 00 */
7272 { Bad_Opcode },
7273 { Bad_Opcode },
7274 { Bad_Opcode },
7275 { Bad_Opcode },
7276 { Bad_Opcode },
7277 { Bad_Opcode },
7278 { Bad_Opcode },
7279 { Bad_Opcode },
7280 /* 08 */
7281 { Bad_Opcode },
7282 { Bad_Opcode },
7283 { Bad_Opcode },
7284 { Bad_Opcode },
7285 { Bad_Opcode },
7286 { Bad_Opcode },
7287 { Bad_Opcode },
7288 { Bad_Opcode },
7289 /* 10 */
7290 { "bextr", { Gv, Ev, Iq } },
7291 { Bad_Opcode },
7292 { REG_TABLE (REG_XOP_LWP) },
7293 { Bad_Opcode },
7294 { Bad_Opcode },
7295 { Bad_Opcode },
7296 { Bad_Opcode },
7297 { Bad_Opcode },
7298 /* 18 */
7299 { Bad_Opcode },
7300 { Bad_Opcode },
7301 { Bad_Opcode },
7302 { Bad_Opcode },
7303 { Bad_Opcode },
7304 { Bad_Opcode },
7305 { Bad_Opcode },
7306 { Bad_Opcode },
7307 /* 20 */
7308 { Bad_Opcode },
7309 { Bad_Opcode },
7310 { Bad_Opcode },
7311 { Bad_Opcode },
7312 { Bad_Opcode },
7313 { Bad_Opcode },
7314 { Bad_Opcode },
7315 { Bad_Opcode },
7316 /* 28 */
7317 { Bad_Opcode },
7318 { Bad_Opcode },
7319 { Bad_Opcode },
7320 { Bad_Opcode },
7321 { Bad_Opcode },
7322 { Bad_Opcode },
7323 { Bad_Opcode },
7324 { Bad_Opcode },
7325 /* 30 */
7326 { Bad_Opcode },
7327 { Bad_Opcode },
7328 { Bad_Opcode },
7329 { Bad_Opcode },
7330 { Bad_Opcode },
7331 { Bad_Opcode },
7332 { Bad_Opcode },
7333 { Bad_Opcode },
7334 /* 38 */
7335 { Bad_Opcode },
7336 { Bad_Opcode },
7337 { Bad_Opcode },
7338 { Bad_Opcode },
7339 { Bad_Opcode },
7340 { Bad_Opcode },
7341 { Bad_Opcode },
7342 { Bad_Opcode },
7343 /* 40 */
7344 { Bad_Opcode },
7345 { Bad_Opcode },
7346 { Bad_Opcode },
7347 { Bad_Opcode },
7348 { Bad_Opcode },
7349 { Bad_Opcode },
7350 { Bad_Opcode },
7351 { Bad_Opcode },
7352 /* 48 */
7353 { Bad_Opcode },
7354 { Bad_Opcode },
7355 { Bad_Opcode },
7356 { Bad_Opcode },
7357 { Bad_Opcode },
7358 { Bad_Opcode },
7359 { Bad_Opcode },
7360 { Bad_Opcode },
7361 /* 50 */
7362 { Bad_Opcode },
7363 { Bad_Opcode },
7364 { Bad_Opcode },
7365 { Bad_Opcode },
7366 { Bad_Opcode },
7367 { Bad_Opcode },
7368 { Bad_Opcode },
7369 { Bad_Opcode },
7370 /* 58 */
7371 { Bad_Opcode },
7372 { Bad_Opcode },
7373 { Bad_Opcode },
7374 { Bad_Opcode },
7375 { Bad_Opcode },
7376 { Bad_Opcode },
7377 { Bad_Opcode },
7378 { Bad_Opcode },
7379 /* 60 */
7380 { Bad_Opcode },
7381 { Bad_Opcode },
7382 { Bad_Opcode },
7383 { Bad_Opcode },
7384 { Bad_Opcode },
7385 { Bad_Opcode },
7386 { Bad_Opcode },
7387 { Bad_Opcode },
7388 /* 68 */
7389 { Bad_Opcode },
7390 { Bad_Opcode },
7391 { Bad_Opcode },
7392 { Bad_Opcode },
7393 { Bad_Opcode },
7394 { Bad_Opcode },
7395 { Bad_Opcode },
7396 { Bad_Opcode },
7397 /* 70 */
7398 { Bad_Opcode },
7399 { Bad_Opcode },
7400 { Bad_Opcode },
7401 { Bad_Opcode },
7402 { Bad_Opcode },
7403 { Bad_Opcode },
7404 { Bad_Opcode },
7405 { Bad_Opcode },
7406 /* 78 */
7407 { Bad_Opcode },
7408 { Bad_Opcode },
7409 { Bad_Opcode },
7410 { Bad_Opcode },
7411 { Bad_Opcode },
7412 { Bad_Opcode },
7413 { Bad_Opcode },
7414 { Bad_Opcode },
7415 /* 80 */
7416 { Bad_Opcode },
7417 { Bad_Opcode },
7418 { Bad_Opcode },
7419 { Bad_Opcode },
7420 { Bad_Opcode },
7421 { Bad_Opcode },
7422 { Bad_Opcode },
7423 { Bad_Opcode },
7424 /* 88 */
7425 { Bad_Opcode },
7426 { Bad_Opcode },
7427 { Bad_Opcode },
7428 { Bad_Opcode },
7429 { Bad_Opcode },
7430 { Bad_Opcode },
7431 { Bad_Opcode },
7432 { Bad_Opcode },
7433 /* 90 */
7434 { Bad_Opcode },
7435 { Bad_Opcode },
7436 { Bad_Opcode },
7437 { Bad_Opcode },
7438 { Bad_Opcode },
7439 { Bad_Opcode },
7440 { Bad_Opcode },
7441 { Bad_Opcode },
7442 /* 98 */
7443 { Bad_Opcode },
7444 { Bad_Opcode },
7445 { Bad_Opcode },
7446 { Bad_Opcode },
7447 { Bad_Opcode },
7448 { Bad_Opcode },
7449 { Bad_Opcode },
7450 { Bad_Opcode },
7451 /* a0 */
7452 { Bad_Opcode },
7453 { Bad_Opcode },
7454 { Bad_Opcode },
7455 { Bad_Opcode },
7456 { Bad_Opcode },
7457 { Bad_Opcode },
7458 { Bad_Opcode },
7459 { Bad_Opcode },
7460 /* a8 */
7461 { Bad_Opcode },
7462 { Bad_Opcode },
7463 { Bad_Opcode },
7464 { Bad_Opcode },
7465 { Bad_Opcode },
7466 { Bad_Opcode },
7467 { Bad_Opcode },
7468 { Bad_Opcode },
7469 /* b0 */
7470 { Bad_Opcode },
7471 { Bad_Opcode },
7472 { Bad_Opcode },
7473 { Bad_Opcode },
7474 { Bad_Opcode },
7475 { Bad_Opcode },
7476 { Bad_Opcode },
7477 { Bad_Opcode },
7478 /* b8 */
7479 { Bad_Opcode },
7480 { Bad_Opcode },
7481 { Bad_Opcode },
7482 { Bad_Opcode },
7483 { Bad_Opcode },
7484 { Bad_Opcode },
7485 { Bad_Opcode },
7486 { Bad_Opcode },
7487 /* c0 */
7488 { Bad_Opcode },
7489 { Bad_Opcode },
7490 { Bad_Opcode },
7491 { Bad_Opcode },
7492 { Bad_Opcode },
7493 { Bad_Opcode },
7494 { Bad_Opcode },
7495 { Bad_Opcode },
7496 /* c8 */
7497 { Bad_Opcode },
7498 { Bad_Opcode },
7499 { Bad_Opcode },
7500 { Bad_Opcode },
7501 { Bad_Opcode },
7502 { Bad_Opcode },
7503 { Bad_Opcode },
7504 { Bad_Opcode },
7505 /* d0 */
7506 { Bad_Opcode },
7507 { Bad_Opcode },
7508 { Bad_Opcode },
7509 { Bad_Opcode },
7510 { Bad_Opcode },
7511 { Bad_Opcode },
7512 { Bad_Opcode },
7513 { Bad_Opcode },
7514 /* d8 */
7515 { Bad_Opcode },
7516 { Bad_Opcode },
7517 { Bad_Opcode },
7518 { Bad_Opcode },
7519 { Bad_Opcode },
7520 { Bad_Opcode },
7521 { Bad_Opcode },
7522 { Bad_Opcode },
7523 /* e0 */
7524 { Bad_Opcode },
7525 { Bad_Opcode },
7526 { Bad_Opcode },
7527 { Bad_Opcode },
7528 { Bad_Opcode },
7529 { Bad_Opcode },
7530 { Bad_Opcode },
7531 { Bad_Opcode },
7532 /* e8 */
7533 { Bad_Opcode },
7534 { Bad_Opcode },
7535 { Bad_Opcode },
7536 { Bad_Opcode },
7537 { Bad_Opcode },
7538 { Bad_Opcode },
7539 { Bad_Opcode },
7540 { Bad_Opcode },
7541 /* f0 */
7542 { Bad_Opcode },
7543 { Bad_Opcode },
7544 { Bad_Opcode },
7545 { Bad_Opcode },
7546 { Bad_Opcode },
7547 { Bad_Opcode },
7548 { Bad_Opcode },
7549 { Bad_Opcode },
7550 /* f8 */
7551 { Bad_Opcode },
7552 { Bad_Opcode },
7553 { Bad_Opcode },
7554 { Bad_Opcode },
7555 { Bad_Opcode },
7556 { Bad_Opcode },
7557 { Bad_Opcode },
7558 { Bad_Opcode },
7559 },
7560 };
6343 7561
6344 static const struct dis386 vex_table[][256] = { 7562 static const struct dis386 vex_table[][256] = {
6345 /* VEX_0F */ 7563 /* VEX_0F */
6346 { 7564 {
6347 /* 00 */ 7565 /* 00 */
6348 { "(bad)",» » { XX } }, 7566 { Bad_Opcode },
6349 { "(bad)",» » { XX } }, 7567 { Bad_Opcode },
6350 { "(bad)",» » { XX } }, 7568 { Bad_Opcode },
6351 { "(bad)",» » { XX } }, 7569 { Bad_Opcode },
6352 { "(bad)",» » { XX } }, 7570 { Bad_Opcode },
6353 { "(bad)",» » { XX } }, 7571 { Bad_Opcode },
6354 { "(bad)",» » { XX } }, 7572 { Bad_Opcode },
6355 { "(bad)",» » { XX } }, 7573 { Bad_Opcode },
6356 /* 08 */ 7574 /* 08 */
6357 { "(bad)",» » { XX } }, 7575 { Bad_Opcode },
6358 { "(bad)",» » { XX } }, 7576 { Bad_Opcode },
6359 { "(bad)",» » { XX } }, 7577 { Bad_Opcode },
6360 { "(bad)",» » { XX } }, 7578 { Bad_Opcode },
6361 { "(bad)",» » { XX } }, 7579 { Bad_Opcode },
6362 { "(bad)",» » { XX } }, 7580 { Bad_Opcode },
6363 { "(bad)",» » { XX } }, 7581 { Bad_Opcode },
6364 { "(bad)",» » { XX } }, 7582 { Bad_Opcode },
6365 /* 10 */ 7583 /* 10 */
6366 { PREFIX_TABLE (PREFIX_VEX_10) }, 7584 { PREFIX_TABLE (PREFIX_VEX_0F10) },
6367 { PREFIX_TABLE (PREFIX_VEX_11) }, 7585 { PREFIX_TABLE (PREFIX_VEX_0F11) },
6368 { PREFIX_TABLE (PREFIX_VEX_12) }, 7586 { PREFIX_TABLE (PREFIX_VEX_0F12) },
6369 { MOD_TABLE (MOD_VEX_13) }, 7587 { MOD_TABLE (MOD_VEX_0F13) },
6370 { "vunpcklpX",» { XM, Vex, EXx } }, 7588 { VEX_W_TABLE (VEX_W_0F14) },
6371 { "vunpckhpX",» { XM, Vex, EXx } }, 7589 { VEX_W_TABLE (VEX_W_0F15) },
6372 { PREFIX_TABLE (PREFIX_VEX_16) }, 7590 { PREFIX_TABLE (PREFIX_VEX_0F16) },
6373 { MOD_TABLE (MOD_VEX_17) }, 7591 { MOD_TABLE (MOD_VEX_0F17) },
6374 /* 18 */ 7592 /* 18 */
6375 { "(bad)",» » { XX } }, 7593 { Bad_Opcode },
6376 { "(bad)",» » { XX } }, 7594 { Bad_Opcode },
6377 { "(bad)",» » { XX } }, 7595 { Bad_Opcode },
6378 { "(bad)",» » { XX } }, 7596 { Bad_Opcode },
6379 { "(bad)",» » { XX } }, 7597 { Bad_Opcode },
6380 { "(bad)",» » { XX } }, 7598 { Bad_Opcode },
6381 { "(bad)",» » { XX } }, 7599 { Bad_Opcode },
6382 { "(bad)",» » { XX } }, 7600 { Bad_Opcode },
6383 /* 20 */ 7601 /* 20 */
6384 { "(bad)",» » { XX } }, 7602 { Bad_Opcode },
6385 { "(bad)",» » { XX } }, 7603 { Bad_Opcode },
6386 { "(bad)",» » { XX } }, 7604 { Bad_Opcode },
6387 { "(bad)",» » { XX } }, 7605 { Bad_Opcode },
6388 { "(bad)",» » { XX } }, 7606 { Bad_Opcode },
6389 { "(bad)",» » { XX } }, 7607 { Bad_Opcode },
6390 { "(bad)",» » { XX } }, 7608 { Bad_Opcode },
6391 { "(bad)",» » { XX } }, 7609 { Bad_Opcode },
6392 /* 28 */ 7610 /* 28 */
6393 { "vmovapX",» { XM, EXx } }, 7611 { VEX_W_TABLE (VEX_W_0F28) },
6394 { "vmovapX",» { EXxS, XM } }, 7612 { VEX_W_TABLE (VEX_W_0F29) },
6395 { PREFIX_TABLE (PREFIX_VEX_2A) }, 7613 { PREFIX_TABLE (PREFIX_VEX_0F2A) },
6396 { MOD_TABLE (MOD_VEX_2B) }, 7614 { MOD_TABLE (MOD_VEX_0F2B) },
6397 { PREFIX_TABLE (PREFIX_VEX_2C) }, 7615 { PREFIX_TABLE (PREFIX_VEX_0F2C) },
6398 { PREFIX_TABLE (PREFIX_VEX_2D) }, 7616 { PREFIX_TABLE (PREFIX_VEX_0F2D) },
6399 { PREFIX_TABLE (PREFIX_VEX_2E) }, 7617 { PREFIX_TABLE (PREFIX_VEX_0F2E) },
6400 { PREFIX_TABLE (PREFIX_VEX_2F) }, 7618 { PREFIX_TABLE (PREFIX_VEX_0F2F) },
6401 /* 30 */ 7619 /* 30 */
6402 { "(bad)",» » { XX } }, 7620 { Bad_Opcode },
6403 { "(bad)",» » { XX } }, 7621 { Bad_Opcode },
6404 { "(bad)",» » { XX } }, 7622 { Bad_Opcode },
6405 { "(bad)",» » { XX } }, 7623 { Bad_Opcode },
6406 { "(bad)",» » { XX } }, 7624 { Bad_Opcode },
6407 { "(bad)",» » { XX } }, 7625 { Bad_Opcode },
6408 { "(bad)",» » { XX } }, 7626 { Bad_Opcode },
6409 { "(bad)",» » { XX } }, 7627 { Bad_Opcode },
6410 /* 38 */ 7628 /* 38 */
6411 { "(bad)",» » { XX } }, 7629 { Bad_Opcode },
6412 { "(bad)",» » { XX } }, 7630 { Bad_Opcode },
6413 { "(bad)",» » { XX } }, 7631 { Bad_Opcode },
6414 { "(bad)",» » { XX } }, 7632 { Bad_Opcode },
6415 { "(bad)",» » { XX } }, 7633 { Bad_Opcode },
6416 { "(bad)",» » { XX } }, 7634 { Bad_Opcode },
6417 { "(bad)",» » { XX } }, 7635 { Bad_Opcode },
6418 { "(bad)",» » { XX } }, 7636 { Bad_Opcode },
6419 /* 40 */ 7637 /* 40 */
6420 { "(bad)",» » { XX } }, 7638 { Bad_Opcode },
6421 { "(bad)",» » { XX } }, 7639 { Bad_Opcode },
6422 { "(bad)",» » { XX } }, 7640 { Bad_Opcode },
6423 { "(bad)",» » { XX } }, 7641 { Bad_Opcode },
6424 { "(bad)",» » { XX } }, 7642 { Bad_Opcode },
6425 { "(bad)",» » { XX } }, 7643 { Bad_Opcode },
6426 { "(bad)",» » { XX } }, 7644 { Bad_Opcode },
6427 { "(bad)",» » { XX } }, 7645 { Bad_Opcode },
6428 /* 48 */ 7646 /* 48 */
6429 { "(bad)",» » { XX } }, 7647 { Bad_Opcode },
6430 { "(bad)",» » { XX } }, 7648 { Bad_Opcode },
6431 { "(bad)",» » { XX } }, 7649 { Bad_Opcode },
6432 { "(bad)",» » { XX } }, 7650 { Bad_Opcode },
6433 { "(bad)",» » { XX } }, 7651 { Bad_Opcode },
6434 { "(bad)",» » { XX } }, 7652 { Bad_Opcode },
6435 { "(bad)",» » { XX } }, 7653 { Bad_Opcode },
6436 { "(bad)",» » { XX } }, 7654 { Bad_Opcode },
6437 /* 50 */ 7655 /* 50 */
6438 { MOD_TABLE (MOD_VEX_51) }, 7656 { MOD_TABLE (MOD_VEX_0F50) },
6439 { PREFIX_TABLE (PREFIX_VEX_51) }, 7657 { PREFIX_TABLE (PREFIX_VEX_0F51) },
6440 { PREFIX_TABLE (PREFIX_VEX_52) }, 7658 { PREFIX_TABLE (PREFIX_VEX_0F52) },
6441 { PREFIX_TABLE (PREFIX_VEX_53) }, 7659 { PREFIX_TABLE (PREFIX_VEX_0F53) },
6442 { "vandpX", { XM, Vex, EXx } }, 7660 { "vandpX", { XM, Vex, EXx } },
6443 { "vandnpX", { XM, Vex, EXx } }, 7661 { "vandnpX", { XM, Vex, EXx } },
6444 { "vorpX", { XM, Vex, EXx } }, 7662 { "vorpX", { XM, Vex, EXx } },
6445 { "vxorpX", { XM, Vex, EXx } }, 7663 { "vxorpX", { XM, Vex, EXx } },
6446 /* 58 */ 7664 /* 58 */
6447 { PREFIX_TABLE (PREFIX_VEX_58) }, 7665 { PREFIX_TABLE (PREFIX_VEX_0F58) },
6448 { PREFIX_TABLE (PREFIX_VEX_59) }, 7666 { PREFIX_TABLE (PREFIX_VEX_0F59) },
6449 { PREFIX_TABLE (PREFIX_VEX_5A) }, 7667 { PREFIX_TABLE (PREFIX_VEX_0F5A) },
6450 { PREFIX_TABLE (PREFIX_VEX_5B) }, 7668 { PREFIX_TABLE (PREFIX_VEX_0F5B) },
6451 { PREFIX_TABLE (PREFIX_VEX_5C) }, 7669 { PREFIX_TABLE (PREFIX_VEX_0F5C) },
6452 { PREFIX_TABLE (PREFIX_VEX_5D) }, 7670 { PREFIX_TABLE (PREFIX_VEX_0F5D) },
6453 { PREFIX_TABLE (PREFIX_VEX_5E) }, 7671 { PREFIX_TABLE (PREFIX_VEX_0F5E) },
6454 { PREFIX_TABLE (PREFIX_VEX_5F) }, 7672 { PREFIX_TABLE (PREFIX_VEX_0F5F) },
6455 /* 60 */ 7673 /* 60 */
6456 { PREFIX_TABLE (PREFIX_VEX_60) }, 7674 { PREFIX_TABLE (PREFIX_VEX_0F60) },
6457 { PREFIX_TABLE (PREFIX_VEX_61) }, 7675 { PREFIX_TABLE (PREFIX_VEX_0F61) },
6458 { PREFIX_TABLE (PREFIX_VEX_62) }, 7676 { PREFIX_TABLE (PREFIX_VEX_0F62) },
6459 { PREFIX_TABLE (PREFIX_VEX_63) }, 7677 { PREFIX_TABLE (PREFIX_VEX_0F63) },
6460 { PREFIX_TABLE (PREFIX_VEX_64) }, 7678 { PREFIX_TABLE (PREFIX_VEX_0F64) },
6461 { PREFIX_TABLE (PREFIX_VEX_65) }, 7679 { PREFIX_TABLE (PREFIX_VEX_0F65) },
6462 { PREFIX_TABLE (PREFIX_VEX_66) }, 7680 { PREFIX_TABLE (PREFIX_VEX_0F66) },
6463 { PREFIX_TABLE (PREFIX_VEX_67) }, 7681 { PREFIX_TABLE (PREFIX_VEX_0F67) },
6464 /* 68 */ 7682 /* 68 */
6465 { PREFIX_TABLE (PREFIX_VEX_68) }, 7683 { PREFIX_TABLE (PREFIX_VEX_0F68) },
6466 { PREFIX_TABLE (PREFIX_VEX_69) }, 7684 { PREFIX_TABLE (PREFIX_VEX_0F69) },
6467 { PREFIX_TABLE (PREFIX_VEX_6A) }, 7685 { PREFIX_TABLE (PREFIX_VEX_0F6A) },
6468 { PREFIX_TABLE (PREFIX_VEX_6B) }, 7686 { PREFIX_TABLE (PREFIX_VEX_0F6B) },
6469 { PREFIX_TABLE (PREFIX_VEX_6C) }, 7687 { PREFIX_TABLE (PREFIX_VEX_0F6C) },
6470 { PREFIX_TABLE (PREFIX_VEX_6D) }, 7688 { PREFIX_TABLE (PREFIX_VEX_0F6D) },
6471 { PREFIX_TABLE (PREFIX_VEX_6E) }, 7689 { PREFIX_TABLE (PREFIX_VEX_0F6E) },
6472 { PREFIX_TABLE (PREFIX_VEX_6F) }, 7690 { PREFIX_TABLE (PREFIX_VEX_0F6F) },
6473 /* 70 */ 7691 /* 70 */
6474 { PREFIX_TABLE (PREFIX_VEX_70) }, 7692 { PREFIX_TABLE (PREFIX_VEX_0F70) },
6475 { REG_TABLE (REG_VEX_71) }, 7693 { REG_TABLE (REG_VEX_0F71) },
6476 { REG_TABLE (REG_VEX_72) }, 7694 { REG_TABLE (REG_VEX_0F72) },
6477 { REG_TABLE (REG_VEX_73) }, 7695 { REG_TABLE (REG_VEX_0F73) },
6478 { PREFIX_TABLE (PREFIX_VEX_74) }, 7696 { PREFIX_TABLE (PREFIX_VEX_0F74) },
6479 { PREFIX_TABLE (PREFIX_VEX_75) }, 7697 { PREFIX_TABLE (PREFIX_VEX_0F75) },
6480 { PREFIX_TABLE (PREFIX_VEX_76) }, 7698 { PREFIX_TABLE (PREFIX_VEX_0F76) },
6481 { PREFIX_TABLE (PREFIX_VEX_77) }, 7699 { PREFIX_TABLE (PREFIX_VEX_0F77) },
6482 /* 78 */ 7700 /* 78 */
6483 { "(bad)",» » { XX } }, 7701 { Bad_Opcode },
6484 { "(bad)",» » { XX } }, 7702 { Bad_Opcode },
6485 { "(bad)",» » { XX } }, 7703 { Bad_Opcode },
6486 { "(bad)",» » { XX } }, 7704 { Bad_Opcode },
6487 { PREFIX_TABLE (PREFIX_VEX_7C) }, 7705 { PREFIX_TABLE (PREFIX_VEX_0F7C) },
6488 { PREFIX_TABLE (PREFIX_VEX_7D) }, 7706 { PREFIX_TABLE (PREFIX_VEX_0F7D) },
6489 { PREFIX_TABLE (PREFIX_VEX_7E) }, 7707 { PREFIX_TABLE (PREFIX_VEX_0F7E) },
6490 { PREFIX_TABLE (PREFIX_VEX_7F) }, 7708 { PREFIX_TABLE (PREFIX_VEX_0F7F) },
6491 /* 80 */ 7709 /* 80 */
6492 { "(bad)",» » { XX } }, 7710 { Bad_Opcode },
6493 { "(bad)",» » { XX } }, 7711 { Bad_Opcode },
6494 { "(bad)",» » { XX } }, 7712 { Bad_Opcode },
6495 { "(bad)",» » { XX } }, 7713 { Bad_Opcode },
6496 { "(bad)",» » { XX } }, 7714 { Bad_Opcode },
6497 { "(bad)",» » { XX } }, 7715 { Bad_Opcode },
6498 { "(bad)",» » { XX } }, 7716 { Bad_Opcode },
6499 { "(bad)",» » { XX } }, 7717 { Bad_Opcode },
6500 /* 88 */ 7718 /* 88 */
6501 { "(bad)",» » { XX } }, 7719 { Bad_Opcode },
6502 { "(bad)",» » { XX } }, 7720 { Bad_Opcode },
6503 { "(bad)",» » { XX } }, 7721 { Bad_Opcode },
6504 { "(bad)",» » { XX } }, 7722 { Bad_Opcode },
6505 { "(bad)",» » { XX } }, 7723 { Bad_Opcode },
6506 { "(bad)",» » { XX } }, 7724 { Bad_Opcode },
6507 { "(bad)",» » { XX } }, 7725 { Bad_Opcode },
6508 { "(bad)",» » { XX } }, 7726 { Bad_Opcode },
6509 /* 90 */ 7727 /* 90 */
6510 { "(bad)",» » { XX } }, 7728 { Bad_Opcode },
6511 { "(bad)",» » { XX } }, 7729 { Bad_Opcode },
6512 { "(bad)",» » { XX } }, 7730 { Bad_Opcode },
6513 { "(bad)",» » { XX } }, 7731 { Bad_Opcode },
6514 { "(bad)",» » { XX } }, 7732 { Bad_Opcode },
6515 { "(bad)",» » { XX } }, 7733 { Bad_Opcode },
6516 { "(bad)",» » { XX } }, 7734 { Bad_Opcode },
6517 { "(bad)",» » { XX } }, 7735 { Bad_Opcode },
6518 /* 98 */ 7736 /* 98 */
6519 { "(bad)",» » { XX } }, 7737 { Bad_Opcode },
6520 { "(bad)",» » { XX } }, 7738 { Bad_Opcode },
6521 { "(bad)",» » { XX } }, 7739 { Bad_Opcode },
6522 { "(bad)",» » { XX } }, 7740 { Bad_Opcode },
6523 { "(bad)",» » { XX } }, 7741 { Bad_Opcode },
6524 { "(bad)",» » { XX } }, 7742 { Bad_Opcode },
6525 { "(bad)",» » { XX } }, 7743 { Bad_Opcode },
6526 { "(bad)",» » { XX } }, 7744 { Bad_Opcode },
6527 /* a0 */ 7745 /* a0 */
6528 { "(bad)",» » { XX } }, 7746 { Bad_Opcode },
6529 { "(bad)",» » { XX } }, 7747 { Bad_Opcode },
6530 { "(bad)",» » { XX } }, 7748 { Bad_Opcode },
6531 { "(bad)",» » { XX } }, 7749 { Bad_Opcode },
6532 { "(bad)",» » { XX } }, 7750 { Bad_Opcode },
6533 { "(bad)",» » { XX } }, 7751 { Bad_Opcode },
6534 { "(bad)",» » { XX } }, 7752 { Bad_Opcode },
6535 { "(bad)",» » { XX } }, 7753 { Bad_Opcode },
6536 /* a8 */ 7754 /* a8 */
6537 { "(bad)",» » { XX } }, 7755 { Bad_Opcode },
6538 { "(bad)",» » { XX } }, 7756 { Bad_Opcode },
6539 { "(bad)",» » { XX } }, 7757 { Bad_Opcode },
6540 { "(bad)",» » { XX } }, 7758 { Bad_Opcode },
6541 { "(bad)",» » { XX } }, 7759 { Bad_Opcode },
6542 { "(bad)",» » { XX } }, 7760 { Bad_Opcode },
6543 { REG_TABLE (REG_VEX_AE) }, 7761 { REG_TABLE (REG_VEX_0FAE) },
6544 { "(bad)",» » { XX } }, 7762 { Bad_Opcode },
6545 /* b0 */ 7763 /* b0 */
6546 { "(bad)",» » { XX } }, 7764 { Bad_Opcode },
6547 { "(bad)",» » { XX } }, 7765 { Bad_Opcode },
6548 { "(bad)",» » { XX } }, 7766 { Bad_Opcode },
6549 { "(bad)",» » { XX } }, 7767 { Bad_Opcode },
6550 { "(bad)",» » { XX } }, 7768 { Bad_Opcode },
6551 { "(bad)",» » { XX } }, 7769 { Bad_Opcode },
6552 { "(bad)",» » { XX } }, 7770 { Bad_Opcode },
6553 { "(bad)",» » { XX } }, 7771 { Bad_Opcode },
6554 /* b8 */ 7772 /* b8 */
6555 { "(bad)",» » { XX } }, 7773 { Bad_Opcode },
6556 { "(bad)",» » { XX } }, 7774 { Bad_Opcode },
6557 { "(bad)",» » { XX } }, 7775 { Bad_Opcode },
6558 { "(bad)",» » { XX } }, 7776 { Bad_Opcode },
6559 { "(bad)",» » { XX } }, 7777 { Bad_Opcode },
6560 { "(bad)",» » { XX } }, 7778 { Bad_Opcode },
6561 { "(bad)",» » { XX } }, 7779 { Bad_Opcode },
6562 { "(bad)",» » { XX } }, 7780 { Bad_Opcode },
6563 /* c0 */ 7781 /* c0 */
6564 { "(bad)",» » { XX } }, 7782 { Bad_Opcode },
6565 { "(bad)",» » { XX } }, 7783 { Bad_Opcode },
6566 { PREFIX_TABLE (PREFIX_VEX_C2) }, 7784 { PREFIX_TABLE (PREFIX_VEX_0FC2) },
6567 { "(bad)",» » { XX } }, 7785 { Bad_Opcode },
6568 { PREFIX_TABLE (PREFIX_VEX_C4) }, 7786 { PREFIX_TABLE (PREFIX_VEX_0FC4) },
6569 { PREFIX_TABLE (PREFIX_VEX_C5) }, 7787 { PREFIX_TABLE (PREFIX_VEX_0FC5) },
6570 { "vshufpX", { XM, Vex, EXx, Ib } }, 7788 { "vshufpX", { XM, Vex, EXx, Ib } },
6571 { "(bad)",» » { XX } }, 7789 { Bad_Opcode },
6572 /* c8 */ 7790 /* c8 */
6573 { "(bad)",» » { XX } }, 7791 { Bad_Opcode },
6574 { "(bad)",» » { XX } }, 7792 { Bad_Opcode },
6575 { "(bad)",» » { XX } }, 7793 { Bad_Opcode },
6576 { "(bad)",» » { XX } }, 7794 { Bad_Opcode },
6577 { "(bad)",» » { XX } }, 7795 { Bad_Opcode },
6578 { "(bad)",» » { XX } }, 7796 { Bad_Opcode },
6579 { "(bad)",» » { XX } }, 7797 { Bad_Opcode },
6580 { "(bad)",» » { XX } }, 7798 { Bad_Opcode },
6581 /* d0 */ 7799 /* d0 */
6582 { PREFIX_TABLE (PREFIX_VEX_D0) }, 7800 { PREFIX_TABLE (PREFIX_VEX_0FD0) },
6583 { PREFIX_TABLE (PREFIX_VEX_D1) }, 7801 { PREFIX_TABLE (PREFIX_VEX_0FD1) },
6584 { PREFIX_TABLE (PREFIX_VEX_D2) }, 7802 { PREFIX_TABLE (PREFIX_VEX_0FD2) },
6585 { PREFIX_TABLE (PREFIX_VEX_D3) }, 7803 { PREFIX_TABLE (PREFIX_VEX_0FD3) },
6586 { PREFIX_TABLE (PREFIX_VEX_D4) }, 7804 { PREFIX_TABLE (PREFIX_VEX_0FD4) },
6587 { PREFIX_TABLE (PREFIX_VEX_D5) }, 7805 { PREFIX_TABLE (PREFIX_VEX_0FD5) },
6588 { PREFIX_TABLE (PREFIX_VEX_D6) }, 7806 { PREFIX_TABLE (PREFIX_VEX_0FD6) },
6589 { PREFIX_TABLE (PREFIX_VEX_D7) }, 7807 { PREFIX_TABLE (PREFIX_VEX_0FD7) },
6590 /* d8 */ 7808 /* d8 */
6591 { PREFIX_TABLE (PREFIX_VEX_D8) }, 7809 { PREFIX_TABLE (PREFIX_VEX_0FD8) },
6592 { PREFIX_TABLE (PREFIX_VEX_D9) }, 7810 { PREFIX_TABLE (PREFIX_VEX_0FD9) },
6593 { PREFIX_TABLE (PREFIX_VEX_DA) }, 7811 { PREFIX_TABLE (PREFIX_VEX_0FDA) },
6594 { PREFIX_TABLE (PREFIX_VEX_DB) }, 7812 { PREFIX_TABLE (PREFIX_VEX_0FDB) },
6595 { PREFIX_TABLE (PREFIX_VEX_DC) }, 7813 { PREFIX_TABLE (PREFIX_VEX_0FDC) },
6596 { PREFIX_TABLE (PREFIX_VEX_DD) }, 7814 { PREFIX_TABLE (PREFIX_VEX_0FDD) },
6597 { PREFIX_TABLE (PREFIX_VEX_DE) }, 7815 { PREFIX_TABLE (PREFIX_VEX_0FDE) },
6598 { PREFIX_TABLE (PREFIX_VEX_DF) }, 7816 { PREFIX_TABLE (PREFIX_VEX_0FDF) },
6599 /* e0 */ 7817 /* e0 */
6600 { PREFIX_TABLE (PREFIX_VEX_E0) }, 7818 { PREFIX_TABLE (PREFIX_VEX_0FE0) },
6601 { PREFIX_TABLE (PREFIX_VEX_E1) }, 7819 { PREFIX_TABLE (PREFIX_VEX_0FE1) },
6602 { PREFIX_TABLE (PREFIX_VEX_E2) }, 7820 { PREFIX_TABLE (PREFIX_VEX_0FE2) },
6603 { PREFIX_TABLE (PREFIX_VEX_E3) }, 7821 { PREFIX_TABLE (PREFIX_VEX_0FE3) },
6604 { PREFIX_TABLE (PREFIX_VEX_E4) }, 7822 { PREFIX_TABLE (PREFIX_VEX_0FE4) },
6605 { PREFIX_TABLE (PREFIX_VEX_E5) }, 7823 { PREFIX_TABLE (PREFIX_VEX_0FE5) },
6606 { PREFIX_TABLE (PREFIX_VEX_E6) }, 7824 { PREFIX_TABLE (PREFIX_VEX_0FE6) },
6607 { PREFIX_TABLE (PREFIX_VEX_E7) }, 7825 { PREFIX_TABLE (PREFIX_VEX_0FE7) },
6608 /* e8 */ 7826 /* e8 */
6609 { PREFIX_TABLE (PREFIX_VEX_E8) }, 7827 { PREFIX_TABLE (PREFIX_VEX_0FE8) },
6610 { PREFIX_TABLE (PREFIX_VEX_E9) }, 7828 { PREFIX_TABLE (PREFIX_VEX_0FE9) },
6611 { PREFIX_TABLE (PREFIX_VEX_EA) }, 7829 { PREFIX_TABLE (PREFIX_VEX_0FEA) },
6612 { PREFIX_TABLE (PREFIX_VEX_EB) }, 7830 { PREFIX_TABLE (PREFIX_VEX_0FEB) },
6613 { PREFIX_TABLE (PREFIX_VEX_EC) }, 7831 { PREFIX_TABLE (PREFIX_VEX_0FEC) },
6614 { PREFIX_TABLE (PREFIX_VEX_ED) }, 7832 { PREFIX_TABLE (PREFIX_VEX_0FED) },
6615 { PREFIX_TABLE (PREFIX_VEX_EE) }, 7833 { PREFIX_TABLE (PREFIX_VEX_0FEE) },
6616 { PREFIX_TABLE (PREFIX_VEX_EF) }, 7834 { PREFIX_TABLE (PREFIX_VEX_0FEF) },
6617 /* f0 */ 7835 /* f0 */
6618 { PREFIX_TABLE (PREFIX_VEX_F0) }, 7836 { PREFIX_TABLE (PREFIX_VEX_0FF0) },
6619 { PREFIX_TABLE (PREFIX_VEX_F1) }, 7837 { PREFIX_TABLE (PREFIX_VEX_0FF1) },
6620 { PREFIX_TABLE (PREFIX_VEX_F2) }, 7838 { PREFIX_TABLE (PREFIX_VEX_0FF2) },
6621 { PREFIX_TABLE (PREFIX_VEX_F3) }, 7839 { PREFIX_TABLE (PREFIX_VEX_0FF3) },
6622 { PREFIX_TABLE (PREFIX_VEX_F4) }, 7840 { PREFIX_TABLE (PREFIX_VEX_0FF4) },
6623 { PREFIX_TABLE (PREFIX_VEX_F5) }, 7841 { PREFIX_TABLE (PREFIX_VEX_0FF5) },
6624 { PREFIX_TABLE (PREFIX_VEX_F6) }, 7842 { PREFIX_TABLE (PREFIX_VEX_0FF6) },
6625 { PREFIX_TABLE (PREFIX_VEX_F7) }, 7843 { PREFIX_TABLE (PREFIX_VEX_0FF7) },
6626 /* f8 */ 7844 /* f8 */
6627 { PREFIX_TABLE (PREFIX_VEX_F8) }, 7845 { PREFIX_TABLE (PREFIX_VEX_0FF8) },
6628 { PREFIX_TABLE (PREFIX_VEX_F9) }, 7846 { PREFIX_TABLE (PREFIX_VEX_0FF9) },
6629 { PREFIX_TABLE (PREFIX_VEX_FA) }, 7847 { PREFIX_TABLE (PREFIX_VEX_0FFA) },
6630 { PREFIX_TABLE (PREFIX_VEX_FB) }, 7848 { PREFIX_TABLE (PREFIX_VEX_0FFB) },
6631 { PREFIX_TABLE (PREFIX_VEX_FC) }, 7849 { PREFIX_TABLE (PREFIX_VEX_0FFC) },
6632 { PREFIX_TABLE (PREFIX_VEX_FD) }, 7850 { PREFIX_TABLE (PREFIX_VEX_0FFD) },
6633 { PREFIX_TABLE (PREFIX_VEX_FE) }, 7851 { PREFIX_TABLE (PREFIX_VEX_0FFE) },
6634 { "(bad)",» » { XX } }, 7852 { Bad_Opcode },
6635 }, 7853 },
6636 /* VEX_0F38 */ 7854 /* VEX_0F38 */
6637 { 7855 {
6638 /* 00 */ 7856 /* 00 */
6639 { PREFIX_TABLE (PREFIX_VEX_3800) }, 7857 { PREFIX_TABLE (PREFIX_VEX_0F3800) },
6640 { PREFIX_TABLE (PREFIX_VEX_3801) }, 7858 { PREFIX_TABLE (PREFIX_VEX_0F3801) },
6641 { PREFIX_TABLE (PREFIX_VEX_3802) }, 7859 { PREFIX_TABLE (PREFIX_VEX_0F3802) },
6642 { PREFIX_TABLE (PREFIX_VEX_3803) }, 7860 { PREFIX_TABLE (PREFIX_VEX_0F3803) },
6643 { PREFIX_TABLE (PREFIX_VEX_3804) }, 7861 { PREFIX_TABLE (PREFIX_VEX_0F3804) },
6644 { PREFIX_TABLE (PREFIX_VEX_3805) }, 7862 { PREFIX_TABLE (PREFIX_VEX_0F3805) },
6645 { PREFIX_TABLE (PREFIX_VEX_3806) }, 7863 { PREFIX_TABLE (PREFIX_VEX_0F3806) },
6646 { PREFIX_TABLE (PREFIX_VEX_3807) }, 7864 { PREFIX_TABLE (PREFIX_VEX_0F3807) },
6647 /* 08 */ 7865 /* 08 */
6648 { PREFIX_TABLE (PREFIX_VEX_3808) }, 7866 { PREFIX_TABLE (PREFIX_VEX_0F3808) },
6649 { PREFIX_TABLE (PREFIX_VEX_3809) }, 7867 { PREFIX_TABLE (PREFIX_VEX_0F3809) },
6650 { PREFIX_TABLE (PREFIX_VEX_380A) }, 7868 { PREFIX_TABLE (PREFIX_VEX_0F380A) },
6651 { PREFIX_TABLE (PREFIX_VEX_380B) }, 7869 { PREFIX_TABLE (PREFIX_VEX_0F380B) },
6652 { PREFIX_TABLE (PREFIX_VEX_380C) }, 7870 { PREFIX_TABLE (PREFIX_VEX_0F380C) },
6653 { PREFIX_TABLE (PREFIX_VEX_380D) }, 7871 { PREFIX_TABLE (PREFIX_VEX_0F380D) },
6654 { PREFIX_TABLE (PREFIX_VEX_380E) }, 7872 { PREFIX_TABLE (PREFIX_VEX_0F380E) },
6655 { PREFIX_TABLE (PREFIX_VEX_380F) }, 7873 { PREFIX_TABLE (PREFIX_VEX_0F380F) },
6656 /* 10 */ 7874 /* 10 */
6657 { "(bad)",» » { XX } }, 7875 { Bad_Opcode },
6658 { "(bad)",» » { XX } }, 7876 { Bad_Opcode },
6659 { "(bad)",» » { XX } }, 7877 { Bad_Opcode },
6660 { "(bad)",» » { XX } }, 7878 { PREFIX_TABLE (PREFIX_VEX_0F3813) },
6661 { "(bad)",» » { XX } }, 7879 { Bad_Opcode },
6662 { "(bad)",» » { XX } }, 7880 { Bad_Opcode },
6663 { "(bad)",» » { XX } }, 7881 { PREFIX_TABLE (PREFIX_VEX_0F3816) },
6664 { PREFIX_TABLE (PREFIX_VEX_3817) }, 7882 { PREFIX_TABLE (PREFIX_VEX_0F3817) },
6665 /* 18 */ 7883 /* 18 */
6666 { PREFIX_TABLE (PREFIX_VEX_3818) }, 7884 { PREFIX_TABLE (PREFIX_VEX_0F3818) },
6667 { PREFIX_TABLE (PREFIX_VEX_3819) }, 7885 { PREFIX_TABLE (PREFIX_VEX_0F3819) },
6668 { PREFIX_TABLE (PREFIX_VEX_381A) }, 7886 { PREFIX_TABLE (PREFIX_VEX_0F381A) },
6669 { "(bad)",» » { XX } }, 7887 { Bad_Opcode },
6670 { PREFIX_TABLE (PREFIX_VEX_381C) }, 7888 { PREFIX_TABLE (PREFIX_VEX_0F381C) },
6671 { PREFIX_TABLE (PREFIX_VEX_381D) }, 7889 { PREFIX_TABLE (PREFIX_VEX_0F381D) },
6672 { PREFIX_TABLE (PREFIX_VEX_381E) }, 7890 { PREFIX_TABLE (PREFIX_VEX_0F381E) },
6673 { "(bad)",» » { XX } }, 7891 { Bad_Opcode },
6674 /* 20 */ 7892 /* 20 */
6675 { PREFIX_TABLE (PREFIX_VEX_3820) }, 7893 { PREFIX_TABLE (PREFIX_VEX_0F3820) },
6676 { PREFIX_TABLE (PREFIX_VEX_3821) }, 7894 { PREFIX_TABLE (PREFIX_VEX_0F3821) },
6677 { PREFIX_TABLE (PREFIX_VEX_3822) }, 7895 { PREFIX_TABLE (PREFIX_VEX_0F3822) },
6678 { PREFIX_TABLE (PREFIX_VEX_3823) }, 7896 { PREFIX_TABLE (PREFIX_VEX_0F3823) },
6679 { PREFIX_TABLE (PREFIX_VEX_3824) }, 7897 { PREFIX_TABLE (PREFIX_VEX_0F3824) },
6680 { PREFIX_TABLE (PREFIX_VEX_3825) }, 7898 { PREFIX_TABLE (PREFIX_VEX_0F3825) },
6681 { "(bad)",» » { XX } }, 7899 { Bad_Opcode },
6682 { "(bad)",» » { XX } }, 7900 { Bad_Opcode },
6683 /* 28 */ 7901 /* 28 */
6684 { PREFIX_TABLE (PREFIX_VEX_3828) }, 7902 { PREFIX_TABLE (PREFIX_VEX_0F3828) },
6685 { PREFIX_TABLE (PREFIX_VEX_3829) }, 7903 { PREFIX_TABLE (PREFIX_VEX_0F3829) },
6686 { PREFIX_TABLE (PREFIX_VEX_382A) }, 7904 { PREFIX_TABLE (PREFIX_VEX_0F382A) },
6687 { PREFIX_TABLE (PREFIX_VEX_382B) }, 7905 { PREFIX_TABLE (PREFIX_VEX_0F382B) },
6688 { PREFIX_TABLE (PREFIX_VEX_382C) }, 7906 { PREFIX_TABLE (PREFIX_VEX_0F382C) },
6689 { PREFIX_TABLE (PREFIX_VEX_382D) }, 7907 { PREFIX_TABLE (PREFIX_VEX_0F382D) },
6690 { PREFIX_TABLE (PREFIX_VEX_382E) }, 7908 { PREFIX_TABLE (PREFIX_VEX_0F382E) },
6691 { PREFIX_TABLE (PREFIX_VEX_382F) }, 7909 { PREFIX_TABLE (PREFIX_VEX_0F382F) },
6692 /* 30 */ 7910 /* 30 */
6693 { PREFIX_TABLE (PREFIX_VEX_3830) }, 7911 { PREFIX_TABLE (PREFIX_VEX_0F3830) },
6694 { PREFIX_TABLE (PREFIX_VEX_3831) }, 7912 { PREFIX_TABLE (PREFIX_VEX_0F3831) },
6695 { PREFIX_TABLE (PREFIX_VEX_3832) }, 7913 { PREFIX_TABLE (PREFIX_VEX_0F3832) },
6696 { PREFIX_TABLE (PREFIX_VEX_3833) }, 7914 { PREFIX_TABLE (PREFIX_VEX_0F3833) },
6697 { PREFIX_TABLE (PREFIX_VEX_3834) }, 7915 { PREFIX_TABLE (PREFIX_VEX_0F3834) },
6698 { PREFIX_TABLE (PREFIX_VEX_3835) }, 7916 { PREFIX_TABLE (PREFIX_VEX_0F3835) },
6699 { "(bad)",» » { XX } }, 7917 { PREFIX_TABLE (PREFIX_VEX_0F3836) },
6700 { PREFIX_TABLE (PREFIX_VEX_3837) }, 7918 { PREFIX_TABLE (PREFIX_VEX_0F3837) },
6701 /* 38 */ 7919 /* 38 */
6702 { PREFIX_TABLE (PREFIX_VEX_3838) }, 7920 { PREFIX_TABLE (PREFIX_VEX_0F3838) },
6703 { PREFIX_TABLE (PREFIX_VEX_3839) }, 7921 { PREFIX_TABLE (PREFIX_VEX_0F3839) },
6704 { PREFIX_TABLE (PREFIX_VEX_383A) }, 7922 { PREFIX_TABLE (PREFIX_VEX_0F383A) },
6705 { PREFIX_TABLE (PREFIX_VEX_383B) }, 7923 { PREFIX_TABLE (PREFIX_VEX_0F383B) },
6706 { PREFIX_TABLE (PREFIX_VEX_383C) }, 7924 { PREFIX_TABLE (PREFIX_VEX_0F383C) },
6707 { PREFIX_TABLE (PREFIX_VEX_383D) }, 7925 { PREFIX_TABLE (PREFIX_VEX_0F383D) },
6708 { PREFIX_TABLE (PREFIX_VEX_383E) }, 7926 { PREFIX_TABLE (PREFIX_VEX_0F383E) },
6709 { PREFIX_TABLE (PREFIX_VEX_383F) }, 7927 { PREFIX_TABLE (PREFIX_VEX_0F383F) },
6710 /* 40 */ 7928 /* 40 */
6711 { PREFIX_TABLE (PREFIX_VEX_3840) }, 7929 { PREFIX_TABLE (PREFIX_VEX_0F3840) },
6712 { PREFIX_TABLE (PREFIX_VEX_3841) }, 7930 { PREFIX_TABLE (PREFIX_VEX_0F3841) },
6713 { "(bad)",» » { XX } }, 7931 { Bad_Opcode },
6714 { "(bad)",» » { XX } }, 7932 { Bad_Opcode },
6715 { "(bad)",» » { XX } }, 7933 { Bad_Opcode },
6716 { "(bad)",» » { XX } }, 7934 { PREFIX_TABLE (PREFIX_VEX_0F3845) },
6717 { "(bad)",» » { XX } }, 7935 { PREFIX_TABLE (PREFIX_VEX_0F3846) },
6718 { "(bad)",» » { XX } }, 7936 { PREFIX_TABLE (PREFIX_VEX_0F3847) },
6719 /* 48 */ 7937 /* 48 */
6720 { "(bad)",» » { XX } }, 7938 { Bad_Opcode },
6721 { "(bad)",» » { XX } }, 7939 { Bad_Opcode },
6722 { "(bad)",» » { XX } }, 7940 { Bad_Opcode },
6723 { "(bad)",» » { XX } }, 7941 { Bad_Opcode },
6724 { "(bad)",» » { XX } }, 7942 { Bad_Opcode },
6725 { "(bad)",» » { XX } }, 7943 { Bad_Opcode },
6726 { "(bad)",» » { XX } }, 7944 { Bad_Opcode },
6727 { "(bad)",» » { XX } }, 7945 { Bad_Opcode },
6728 /* 50 */ 7946 /* 50 */
6729 { "(bad)",» » { XX } }, 7947 { Bad_Opcode },
6730 { "(bad)",» » { XX } }, 7948 { Bad_Opcode },
6731 { "(bad)",» » { XX } }, 7949 { Bad_Opcode },
6732 { "(bad)",» » { XX } }, 7950 { Bad_Opcode },
6733 { "(bad)",» » { XX } }, 7951 { Bad_Opcode },
6734 { "(bad)",» » { XX } }, 7952 { Bad_Opcode },
6735 { "(bad)",» » { XX } }, 7953 { Bad_Opcode },
6736 { "(bad)",» » { XX } }, 7954 { Bad_Opcode },
6737 /* 58 */ 7955 /* 58 */
6738 { "(bad)",» » { XX } }, 7956 { PREFIX_TABLE (PREFIX_VEX_0F3858) },
6739 { "(bad)",» » { XX } }, 7957 { PREFIX_TABLE (PREFIX_VEX_0F3859) },
6740 { "(bad)",» » { XX } }, 7958 { PREFIX_TABLE (PREFIX_VEX_0F385A) },
6741 { "(bad)",» » { XX } }, 7959 { Bad_Opcode },
6742 { "(bad)",» » { XX } }, 7960 { Bad_Opcode },
6743 { "(bad)",» » { XX } }, 7961 { Bad_Opcode },
6744 { "(bad)",» » { XX } }, 7962 { Bad_Opcode },
6745 { "(bad)",» » { XX } }, 7963 { Bad_Opcode },
6746 /* 60 */ 7964 /* 60 */
6747 { "(bad)",» » { XX } }, 7965 { Bad_Opcode },
6748 { "(bad)",» » { XX } }, 7966 { Bad_Opcode },
6749 { "(bad)",» » { XX } }, 7967 { Bad_Opcode },
6750 { "(bad)",» » { XX } }, 7968 { Bad_Opcode },
6751 { "(bad)",» » { XX } }, 7969 { Bad_Opcode },
6752 { "(bad)",» » { XX } }, 7970 { Bad_Opcode },
6753 { "(bad)",» » { XX } }, 7971 { Bad_Opcode },
6754 { "(bad)",» » { XX } }, 7972 { Bad_Opcode },
6755 /* 68 */ 7973 /* 68 */
6756 { "(bad)",» » { XX } }, 7974 { Bad_Opcode },
6757 { "(bad)",» » { XX } }, 7975 { Bad_Opcode },
6758 { "(bad)",» » { XX } }, 7976 { Bad_Opcode },
6759 { "(bad)",» » { XX } }, 7977 { Bad_Opcode },
6760 { "(bad)",» » { XX } }, 7978 { Bad_Opcode },
6761 { "(bad)",» » { XX } }, 7979 { Bad_Opcode },
6762 { "(bad)",» » { XX } }, 7980 { Bad_Opcode },
6763 { "(bad)",» » { XX } }, 7981 { Bad_Opcode },
6764 /* 70 */ 7982 /* 70 */
6765 { "(bad)",» » { XX } }, 7983 { Bad_Opcode },
6766 { "(bad)",» » { XX } }, 7984 { Bad_Opcode },
6767 { "(bad)",» » { XX } }, 7985 { Bad_Opcode },
6768 { "(bad)",» » { XX } }, 7986 { Bad_Opcode },
6769 { "(bad)",» » { XX } }, 7987 { Bad_Opcode },
6770 { "(bad)",» » { XX } }, 7988 { Bad_Opcode },
6771 { "(bad)",» » { XX } }, 7989 { Bad_Opcode },
6772 { "(bad)",» » { XX } }, 7990 { Bad_Opcode },
6773 /* 78 */ 7991 /* 78 */
6774 { "(bad)",» » { XX } }, 7992 { PREFIX_TABLE (PREFIX_VEX_0F3878) },
6775 { "(bad)",» » { XX } }, 7993 { PREFIX_TABLE (PREFIX_VEX_0F3879) },
6776 { "(bad)",» » { XX } }, 7994 { Bad_Opcode },
6777 { "(bad)",» » { XX } }, 7995 { Bad_Opcode },
6778 { "(bad)",» » { XX } }, 7996 { Bad_Opcode },
6779 { "(bad)",» » { XX } }, 7997 { Bad_Opcode },
6780 { "(bad)",» » { XX } }, 7998 { Bad_Opcode },
6781 { "(bad)",» » { XX } }, 7999 { Bad_Opcode },
6782 /* 80 */ 8000 /* 80 */
6783 { "(bad)",» » { XX } }, 8001 { Bad_Opcode },
6784 { "(bad)",» » { XX } }, 8002 { Bad_Opcode },
6785 { "(bad)",» » { XX } }, 8003 { Bad_Opcode },
6786 { "(bad)",» » { XX } }, 8004 { Bad_Opcode },
6787 { "(bad)",» » { XX } }, 8005 { Bad_Opcode },
6788 { "(bad)",» » { XX } }, 8006 { Bad_Opcode },
6789 { "(bad)",» » { XX } }, 8007 { Bad_Opcode },
6790 { "(bad)",» » { XX } }, 8008 { Bad_Opcode },
6791 /* 88 */ 8009 /* 88 */
6792 { "(bad)",» » { XX } }, 8010 { Bad_Opcode },
6793 { "(bad)",» » { XX } }, 8011 { Bad_Opcode },
6794 { "(bad)",» » { XX } }, 8012 { Bad_Opcode },
6795 { "(bad)",» » { XX } }, 8013 { Bad_Opcode },
6796 { "(bad)",» » { XX } }, 8014 { PREFIX_TABLE (PREFIX_VEX_0F388C) },
6797 { "(bad)",» » { XX } }, 8015 { Bad_Opcode },
6798 { "(bad)",» » { XX } }, 8016 { PREFIX_TABLE (PREFIX_VEX_0F388E) },
6799 { "(bad)",» » { XX } }, 8017 { Bad_Opcode },
6800 /* 90 */ 8018 /* 90 */
6801 { "(bad)",» » { XX } }, 8019 { PREFIX_TABLE (PREFIX_VEX_0F3890) },
6802 { "(bad)",» » { XX } }, 8020 { PREFIX_TABLE (PREFIX_VEX_0F3891) },
6803 { "(bad)",» » { XX } }, 8021 { PREFIX_TABLE (PREFIX_VEX_0F3892) },
6804 { "(bad)",» » { XX } }, 8022 { PREFIX_TABLE (PREFIX_VEX_0F3893) },
6805 { "(bad)",» » { XX } }, 8023 { Bad_Opcode },
6806 { "(bad)",» » { XX } }, 8024 { Bad_Opcode },
6807 { PREFIX_TABLE (PREFIX_VEX_3896) }, 8025 { PREFIX_TABLE (PREFIX_VEX_0F3896) },
6808 { PREFIX_TABLE (PREFIX_VEX_3897) }, 8026 { PREFIX_TABLE (PREFIX_VEX_0F3897) },
6809 /* 98 */ 8027 /* 98 */
6810 { PREFIX_TABLE (PREFIX_VEX_3898) }, 8028 { PREFIX_TABLE (PREFIX_VEX_0F3898) },
6811 { PREFIX_TABLE (PREFIX_VEX_3899) }, 8029 { PREFIX_TABLE (PREFIX_VEX_0F3899) },
6812 { PREFIX_TABLE (PREFIX_VEX_389A) }, 8030 { PREFIX_TABLE (PREFIX_VEX_0F389A) },
6813 { PREFIX_TABLE (PREFIX_VEX_389B) }, 8031 { PREFIX_TABLE (PREFIX_VEX_0F389B) },
6814 { PREFIX_TABLE (PREFIX_VEX_389C) }, 8032 { PREFIX_TABLE (PREFIX_VEX_0F389C) },
6815 { PREFIX_TABLE (PREFIX_VEX_389D) }, 8033 { PREFIX_TABLE (PREFIX_VEX_0F389D) },
6816 { PREFIX_TABLE (PREFIX_VEX_389E) }, 8034 { PREFIX_TABLE (PREFIX_VEX_0F389E) },
6817 { PREFIX_TABLE (PREFIX_VEX_389F) }, 8035 { PREFIX_TABLE (PREFIX_VEX_0F389F) },
6818 /* a0 */ 8036 /* a0 */
6819 { "(bad)",» » { XX } }, 8037 { Bad_Opcode },
6820 { "(bad)",» » { XX } }, 8038 { Bad_Opcode },
6821 { "(bad)",» » { XX } }, 8039 { Bad_Opcode },
6822 { "(bad)",» » { XX } }, 8040 { Bad_Opcode },
6823 { "(bad)",» » { XX } }, 8041 { Bad_Opcode },
6824 { "(bad)",» » { XX } }, 8042 { Bad_Opcode },
6825 { PREFIX_TABLE (PREFIX_VEX_38A6) }, 8043 { PREFIX_TABLE (PREFIX_VEX_0F38A6) },
6826 { PREFIX_TABLE (PREFIX_VEX_38A7) }, 8044 { PREFIX_TABLE (PREFIX_VEX_0F38A7) },
6827 /* a8 */ 8045 /* a8 */
6828 { PREFIX_TABLE (PREFIX_VEX_38A8) }, 8046 { PREFIX_TABLE (PREFIX_VEX_0F38A8) },
6829 { PREFIX_TABLE (PREFIX_VEX_38A9) }, 8047 { PREFIX_TABLE (PREFIX_VEX_0F38A9) },
6830 { PREFIX_TABLE (PREFIX_VEX_38AA) }, 8048 { PREFIX_TABLE (PREFIX_VEX_0F38AA) },
6831 { PREFIX_TABLE (PREFIX_VEX_38AB) }, 8049 { PREFIX_TABLE (PREFIX_VEX_0F38AB) },
6832 { PREFIX_TABLE (PREFIX_VEX_38AC) }, 8050 { PREFIX_TABLE (PREFIX_VEX_0F38AC) },
6833 { PREFIX_TABLE (PREFIX_VEX_38AD) }, 8051 { PREFIX_TABLE (PREFIX_VEX_0F38AD) },
6834 { PREFIX_TABLE (PREFIX_VEX_38AE) }, 8052 { PREFIX_TABLE (PREFIX_VEX_0F38AE) },
6835 { PREFIX_TABLE (PREFIX_VEX_38AF) }, 8053 { PREFIX_TABLE (PREFIX_VEX_0F38AF) },
6836 /* b0 */ 8054 /* b0 */
6837 { "(bad)",» » { XX } }, 8055 { Bad_Opcode },
6838 { "(bad)",» » { XX } }, 8056 { Bad_Opcode },
6839 { "(bad)",» » { XX } }, 8057 { Bad_Opcode },
6840 { "(bad)",» » { XX } }, 8058 { Bad_Opcode },
6841 { "(bad)",» » { XX } }, 8059 { Bad_Opcode },
6842 { "(bad)",» » { XX } }, 8060 { Bad_Opcode },
6843 { PREFIX_TABLE (PREFIX_VEX_38B6) }, 8061 { PREFIX_TABLE (PREFIX_VEX_0F38B6) },
6844 { PREFIX_TABLE (PREFIX_VEX_38B7) }, 8062 { PREFIX_TABLE (PREFIX_VEX_0F38B7) },
6845 /* b8 */ 8063 /* b8 */
6846 { PREFIX_TABLE (PREFIX_VEX_38B8) }, 8064 { PREFIX_TABLE (PREFIX_VEX_0F38B8) },
6847 { PREFIX_TABLE (PREFIX_VEX_38B9) }, 8065 { PREFIX_TABLE (PREFIX_VEX_0F38B9) },
6848 { PREFIX_TABLE (PREFIX_VEX_38BA) }, 8066 { PREFIX_TABLE (PREFIX_VEX_0F38BA) },
6849 { PREFIX_TABLE (PREFIX_VEX_38BB) }, 8067 { PREFIX_TABLE (PREFIX_VEX_0F38BB) },
6850 { PREFIX_TABLE (PREFIX_VEX_38BC) }, 8068 { PREFIX_TABLE (PREFIX_VEX_0F38BC) },
6851 { PREFIX_TABLE (PREFIX_VEX_38BD) }, 8069 { PREFIX_TABLE (PREFIX_VEX_0F38BD) },
6852 { PREFIX_TABLE (PREFIX_VEX_38BE) }, 8070 { PREFIX_TABLE (PREFIX_VEX_0F38BE) },
6853 { PREFIX_TABLE (PREFIX_VEX_38BF) }, 8071 { PREFIX_TABLE (PREFIX_VEX_0F38BF) },
6854 /* c0 */ 8072 /* c0 */
6855 { "(bad)",» » { XX } }, 8073 { Bad_Opcode },
6856 { "(bad)",» » { XX } }, 8074 { Bad_Opcode },
6857 { "(bad)",» » { XX } }, 8075 { Bad_Opcode },
6858 { "(bad)",» » { XX } }, 8076 { Bad_Opcode },
6859 { "(bad)",» » { XX } }, 8077 { Bad_Opcode },
6860 { "(bad)",» » { XX } }, 8078 { Bad_Opcode },
6861 { "(bad)",» » { XX } }, 8079 { Bad_Opcode },
6862 { "(bad)",» » { XX } }, 8080 { Bad_Opcode },
6863 /* c8 */ 8081 /* c8 */
6864 { "(bad)",» » { XX } }, 8082 { Bad_Opcode },
6865 { "(bad)",» » { XX } }, 8083 { Bad_Opcode },
6866 { "(bad)",» » { XX } }, 8084 { Bad_Opcode },
6867 { "(bad)",» » { XX } }, 8085 { Bad_Opcode },
6868 { "(bad)",» » { XX } }, 8086 { Bad_Opcode },
6869 { "(bad)",» » { XX } }, 8087 { Bad_Opcode },
6870 { "(bad)",» » { XX } }, 8088 { Bad_Opcode },
6871 { "(bad)",» » { XX } }, 8089 { Bad_Opcode },
6872 /* d0 */ 8090 /* d0 */
6873 { "(bad)",» » { XX } }, 8091 { Bad_Opcode },
6874 { "(bad)",» » { XX } }, 8092 { Bad_Opcode },
6875 { "(bad)",» » { XX } }, 8093 { Bad_Opcode },
6876 { "(bad)",» » { XX } }, 8094 { Bad_Opcode },
6877 { "(bad)",» » { XX } }, 8095 { Bad_Opcode },
6878 { "(bad)",» » { XX } }, 8096 { Bad_Opcode },
6879 { "(bad)",» » { XX } }, 8097 { Bad_Opcode },
6880 { "(bad)",» » { XX } }, 8098 { Bad_Opcode },
6881 /* d8 */ 8099 /* d8 */
6882 { "(bad)",» » { XX } }, 8100 { Bad_Opcode },
6883 { "(bad)",» » { XX } }, 8101 { Bad_Opcode },
6884 { "(bad)",» » { XX } }, 8102 { Bad_Opcode },
6885 { PREFIX_TABLE (PREFIX_VEX_38DB) }, 8103 { PREFIX_TABLE (PREFIX_VEX_0F38DB) },
6886 { PREFIX_TABLE (PREFIX_VEX_38DC) }, 8104 { PREFIX_TABLE (PREFIX_VEX_0F38DC) },
6887 { PREFIX_TABLE (PREFIX_VEX_38DD) }, 8105 { PREFIX_TABLE (PREFIX_VEX_0F38DD) },
6888 { PREFIX_TABLE (PREFIX_VEX_38DE) }, 8106 { PREFIX_TABLE (PREFIX_VEX_0F38DE) },
6889 { PREFIX_TABLE (PREFIX_VEX_38DF) }, 8107 { PREFIX_TABLE (PREFIX_VEX_0F38DF) },
6890 /* e0 */ 8108 /* e0 */
6891 { "(bad)",» » { XX } }, 8109 { Bad_Opcode },
6892 { "(bad)",» » { XX } }, 8110 { Bad_Opcode },
6893 { "(bad)",» » { XX } }, 8111 { Bad_Opcode },
6894 { "(bad)",» » { XX } }, 8112 { Bad_Opcode },
6895 { "(bad)",» » { XX } }, 8113 { Bad_Opcode },
6896 { "(bad)",» » { XX } }, 8114 { Bad_Opcode },
6897 { "(bad)",» » { XX } }, 8115 { Bad_Opcode },
6898 { "(bad)",» » { XX } }, 8116 { Bad_Opcode },
6899 /* e8 */ 8117 /* e8 */
6900 { "(bad)",» » { XX } }, 8118 { Bad_Opcode },
6901 { "(bad)",» » { XX } }, 8119 { Bad_Opcode },
6902 { "(bad)",» » { XX } }, 8120 { Bad_Opcode },
6903 { "(bad)",» » { XX } }, 8121 { Bad_Opcode },
6904 { "(bad)",» » { XX } }, 8122 { Bad_Opcode },
6905 { "(bad)",» » { XX } }, 8123 { Bad_Opcode },
6906 { "(bad)",» » { XX } }, 8124 { Bad_Opcode },
6907 { "(bad)",» » { XX } }, 8125 { Bad_Opcode },
6908 /* f0 */ 8126 /* f0 */
6909 { "(bad)",» » { XX } }, 8127 { Bad_Opcode },
6910 { "(bad)",» » { XX } }, 8128 { Bad_Opcode },
6911 { "(bad)",» » { XX } }, 8129 { PREFIX_TABLE (PREFIX_VEX_0F38F2) },
6912 { "(bad)",» » { XX } }, 8130 { REG_TABLE (REG_VEX_0F38F3) },
6913 { "(bad)",» » { XX } }, 8131 { Bad_Opcode },
6914 { "(bad)",» » { XX } }, 8132 { PREFIX_TABLE (PREFIX_VEX_0F38F5) },
6915 { "(bad)",» » { XX } }, 8133 { PREFIX_TABLE (PREFIX_VEX_0F38F6) },
6916 { "(bad)",» » { XX } }, 8134 { PREFIX_TABLE (PREFIX_VEX_0F38F7) },
6917 /* f8 */ 8135 /* f8 */
6918 { "(bad)",» » { XX } }, 8136 { Bad_Opcode },
6919 { "(bad)",» » { XX } }, 8137 { Bad_Opcode },
6920 { "(bad)",» » { XX } }, 8138 { Bad_Opcode },
6921 { "(bad)",» » { XX } }, 8139 { Bad_Opcode },
6922 { "(bad)",» » { XX } }, 8140 { Bad_Opcode },
6923 { "(bad)",» » { XX } }, 8141 { Bad_Opcode },
6924 { "(bad)",» » { XX } }, 8142 { Bad_Opcode },
6925 { "(bad)",» » { XX } }, 8143 { Bad_Opcode },
6926 }, 8144 },
6927 /* VEX_0F3A */ 8145 /* VEX_0F3A */
6928 { 8146 {
6929 /* 00 */ 8147 /* 00 */
6930 { "(bad)",» » { XX } }, 8148 { PREFIX_TABLE (PREFIX_VEX_0F3A00) },
6931 { "(bad)",» » { XX } }, 8149 { PREFIX_TABLE (PREFIX_VEX_0F3A01) },
6932 { "(bad)",» » { XX } }, 8150 { PREFIX_TABLE (PREFIX_VEX_0F3A02) },
6933 { "(bad)",» » { XX } }, 8151 { Bad_Opcode },
6934 { PREFIX_TABLE (PREFIX_VEX_3A04) }, 8152 { PREFIX_TABLE (PREFIX_VEX_0F3A04) },
6935 { PREFIX_TABLE (PREFIX_VEX_3A05) }, 8153 { PREFIX_TABLE (PREFIX_VEX_0F3A05) },
6936 { PREFIX_TABLE (PREFIX_VEX_3A06) }, 8154 { PREFIX_TABLE (PREFIX_VEX_0F3A06) },
6937 { "(bad)",» » { XX } }, 8155 { Bad_Opcode },
6938 /* 08 */ 8156 /* 08 */
6939 { PREFIX_TABLE (PREFIX_VEX_3A08) }, 8157 { PREFIX_TABLE (PREFIX_VEX_0F3A08) },
6940 { PREFIX_TABLE (PREFIX_VEX_3A09) }, 8158 { PREFIX_TABLE (PREFIX_VEX_0F3A09) },
6941 { PREFIX_TABLE (PREFIX_VEX_3A0A) }, 8159 { PREFIX_TABLE (PREFIX_VEX_0F3A0A) },
6942 { PREFIX_TABLE (PREFIX_VEX_3A0B) }, 8160 { PREFIX_TABLE (PREFIX_VEX_0F3A0B) },
6943 { PREFIX_TABLE (PREFIX_VEX_3A0C) }, 8161 { PREFIX_TABLE (PREFIX_VEX_0F3A0C) },
6944 { PREFIX_TABLE (PREFIX_VEX_3A0D) }, 8162 { PREFIX_TABLE (PREFIX_VEX_0F3A0D) },
6945 { PREFIX_TABLE (PREFIX_VEX_3A0E) }, 8163 { PREFIX_TABLE (PREFIX_VEX_0F3A0E) },
6946 { PREFIX_TABLE (PREFIX_VEX_3A0F) }, 8164 { PREFIX_TABLE (PREFIX_VEX_0F3A0F) },
6947 /* 10 */ 8165 /* 10 */
6948 { "(bad)",» » { XX } }, 8166 { Bad_Opcode },
6949 { "(bad)",» » { XX } }, 8167 { Bad_Opcode },
6950 { "(bad)",» » { XX } }, 8168 { Bad_Opcode },
6951 { "(bad)",» » { XX } }, 8169 { Bad_Opcode },
6952 { PREFIX_TABLE (PREFIX_VEX_3A14) }, 8170 { PREFIX_TABLE (PREFIX_VEX_0F3A14) },
6953 { PREFIX_TABLE (PREFIX_VEX_3A15) }, 8171 { PREFIX_TABLE (PREFIX_VEX_0F3A15) },
6954 { PREFIX_TABLE (PREFIX_VEX_3A16) }, 8172 { PREFIX_TABLE (PREFIX_VEX_0F3A16) },
6955 { PREFIX_TABLE (PREFIX_VEX_3A17) }, 8173 { PREFIX_TABLE (PREFIX_VEX_0F3A17) },
6956 /* 18 */ 8174 /* 18 */
6957 { PREFIX_TABLE (PREFIX_VEX_3A18) }, 8175 { PREFIX_TABLE (PREFIX_VEX_0F3A18) },
6958 { PREFIX_TABLE (PREFIX_VEX_3A19) }, 8176 { PREFIX_TABLE (PREFIX_VEX_0F3A19) },
6959 { "(bad)",» » { XX } }, 8177 { Bad_Opcode },
6960 { "(bad)",» » { XX } }, 8178 { Bad_Opcode },
6961 { "(bad)",» » { XX } }, 8179 { Bad_Opcode },
6962 { "(bad)",» » { XX } }, 8180 { PREFIX_TABLE (PREFIX_VEX_0F3A1D) },
6963 { "(bad)",» » { XX } }, 8181 { Bad_Opcode },
6964 { "(bad)",» » { XX } }, 8182 { Bad_Opcode },
6965 /* 20 */ 8183 /* 20 */
6966 { PREFIX_TABLE (PREFIX_VEX_3A20) }, 8184 { PREFIX_TABLE (PREFIX_VEX_0F3A20) },
6967 { PREFIX_TABLE (PREFIX_VEX_3A21) }, 8185 { PREFIX_TABLE (PREFIX_VEX_0F3A21) },
6968 { PREFIX_TABLE (PREFIX_VEX_3A22) }, 8186 { PREFIX_TABLE (PREFIX_VEX_0F3A22) },
6969 { "(bad)",» » { XX } }, 8187 { Bad_Opcode },
6970 { "(bad)",» » { XX } }, 8188 { Bad_Opcode },
6971 { "(bad)",» » { XX } }, 8189 { Bad_Opcode },
6972 { "(bad)",» » { XX } }, 8190 { Bad_Opcode },
6973 { "(bad)",» » { XX } }, 8191 { Bad_Opcode },
6974 /* 28 */ 8192 /* 28 */
6975 { "(bad)",» » { XX } }, 8193 { Bad_Opcode },
6976 { "(bad)",» » { XX } }, 8194 { Bad_Opcode },
6977 { "(bad)",» » { XX } }, 8195 { Bad_Opcode },
6978 { "(bad)",» » { XX } }, 8196 { Bad_Opcode },
6979 { "(bad)",» » { XX } }, 8197 { Bad_Opcode },
6980 { "(bad)",» » { XX } }, 8198 { Bad_Opcode },
6981 { "(bad)",» » { XX } }, 8199 { Bad_Opcode },
6982 { "(bad)",» » { XX } }, 8200 { Bad_Opcode },
6983 /* 30 */ 8201 /* 30 */
6984 { "(bad)",» » { XX } }, 8202 { Bad_Opcode },
6985 { "(bad)",» » { XX } }, 8203 { Bad_Opcode },
6986 { "(bad)",» » { XX } }, 8204 { Bad_Opcode },
6987 { "(bad)",» » { XX } }, 8205 { Bad_Opcode },
6988 { "(bad)",» » { XX } }, 8206 { Bad_Opcode },
6989 { "(bad)",» » { XX } }, 8207 { Bad_Opcode },
6990 { "(bad)",» » { XX } }, 8208 { Bad_Opcode },
6991 { "(bad)",» » { XX } }, 8209 { Bad_Opcode },
6992 /* 38 */ 8210 /* 38 */
6993 { "(bad)",» » { XX } }, 8211 { PREFIX_TABLE (PREFIX_VEX_0F3A38) },
6994 { "(bad)",» » { XX } }, 8212 { PREFIX_TABLE (PREFIX_VEX_0F3A39) },
6995 { "(bad)",» » { XX } }, 8213 { Bad_Opcode },
6996 { "(bad)",» » { XX } }, 8214 { Bad_Opcode },
6997 { "(bad)",» » { XX } }, 8215 { Bad_Opcode },
6998 { "(bad)",» » { XX } }, 8216 { Bad_Opcode },
6999 { "(bad)",» » { XX } }, 8217 { Bad_Opcode },
7000 { "(bad)",» » { XX } }, 8218 { Bad_Opcode },
7001 /* 40 */ 8219 /* 40 */
7002 { PREFIX_TABLE (PREFIX_VEX_3A40) }, 8220 { PREFIX_TABLE (PREFIX_VEX_0F3A40) },
7003 { PREFIX_TABLE (PREFIX_VEX_3A41) }, 8221 { PREFIX_TABLE (PREFIX_VEX_0F3A41) },
7004 { PREFIX_TABLE (PREFIX_VEX_3A42) }, 8222 { PREFIX_TABLE (PREFIX_VEX_0F3A42) },
7005 { "(bad)",» » { XX } }, 8223 { Bad_Opcode },
7006 { PREFIX_TABLE (PREFIX_VEX_3A44) }, 8224 { PREFIX_TABLE (PREFIX_VEX_0F3A44) },
7007 { "(bad)",» » { XX } }, 8225 { Bad_Opcode },
7008 { "(bad)",» » { XX } }, 8226 { PREFIX_TABLE (PREFIX_VEX_0F3A46) },
7009 { "(bad)",» » { XX } }, 8227 { Bad_Opcode },
7010 /* 48 */ 8228 /* 48 */
7011 { "(bad)",» » { XX } }, 8229 { PREFIX_TABLE (PREFIX_VEX_0F3A48) },
7012 { "(bad)",» » { XX } }, 8230 { PREFIX_TABLE (PREFIX_VEX_0F3A49) },
7013 { PREFIX_TABLE (PREFIX_VEX_3A4A) }, 8231 { PREFIX_TABLE (PREFIX_VEX_0F3A4A) },
7014 { PREFIX_TABLE (PREFIX_VEX_3A4B) }, 8232 { PREFIX_TABLE (PREFIX_VEX_0F3A4B) },
7015 { PREFIX_TABLE (PREFIX_VEX_3A4C) }, 8233 { PREFIX_TABLE (PREFIX_VEX_0F3A4C) },
7016 { "(bad)",» » { XX } }, 8234 { Bad_Opcode },
7017 { "(bad)",» » { XX } }, 8235 { Bad_Opcode },
7018 { "(bad)",» » { XX } }, 8236 { Bad_Opcode },
7019 /* 50 */ 8237 /* 50 */
7020 { "(bad)",» » { XX } }, 8238 { Bad_Opcode },
7021 { "(bad)",» » { XX } }, 8239 { Bad_Opcode },
7022 { "(bad)",» » { XX } }, 8240 { Bad_Opcode },
7023 { "(bad)",» » { XX } }, 8241 { Bad_Opcode },
7024 { "(bad)",» » { XX } }, 8242 { Bad_Opcode },
7025 { "(bad)",» » { XX } }, 8243 { Bad_Opcode },
7026 { "(bad)",» » { XX } }, 8244 { Bad_Opcode },
7027 { "(bad)",» » { XX } }, 8245 { Bad_Opcode },
7028 /* 58 */ 8246 /* 58 */
7029 { "(bad)",» » { XX } }, 8247 { Bad_Opcode },
7030 { "(bad)",» » { XX } }, 8248 { Bad_Opcode },
7031 { "(bad)",» » { XX } }, 8249 { Bad_Opcode },
7032 { "(bad)",» » { XX } }, 8250 { Bad_Opcode },
7033 { PREFIX_TABLE (PREFIX_VEX_3A5C) }, 8251 { PREFIX_TABLE (PREFIX_VEX_0F3A5C) },
7034 { PREFIX_TABLE (PREFIX_VEX_3A5D) }, 8252 { PREFIX_TABLE (PREFIX_VEX_0F3A5D) },
7035 { PREFIX_TABLE (PREFIX_VEX_3A5E) }, 8253 { PREFIX_TABLE (PREFIX_VEX_0F3A5E) },
7036 { PREFIX_TABLE (PREFIX_VEX_3A5F) }, 8254 { PREFIX_TABLE (PREFIX_VEX_0F3A5F) },
7037 /* 60 */ 8255 /* 60 */
7038 { PREFIX_TABLE (PREFIX_VEX_3A60) }, 8256 { PREFIX_TABLE (PREFIX_VEX_0F3A60) },
7039 { PREFIX_TABLE (PREFIX_VEX_3A61) }, 8257 { PREFIX_TABLE (PREFIX_VEX_0F3A61) },
7040 { PREFIX_TABLE (PREFIX_VEX_3A62) }, 8258 { PREFIX_TABLE (PREFIX_VEX_0F3A62) },
7041 { PREFIX_TABLE (PREFIX_VEX_3A63) }, 8259 { PREFIX_TABLE (PREFIX_VEX_0F3A63) },
7042 { "(bad)",» » { XX } }, 8260 { Bad_Opcode },
7043 { "(bad)",» » { XX } }, 8261 { Bad_Opcode },
7044 { "(bad)",» » { XX } }, 8262 { Bad_Opcode },
7045 { "(bad)",» » { XX } }, 8263 { Bad_Opcode },
7046 /* 68 */ 8264 /* 68 */
7047 { PREFIX_TABLE (PREFIX_VEX_3A68) }, 8265 { PREFIX_TABLE (PREFIX_VEX_0F3A68) },
7048 { PREFIX_TABLE (PREFIX_VEX_3A69) }, 8266 { PREFIX_TABLE (PREFIX_VEX_0F3A69) },
7049 { PREFIX_TABLE (PREFIX_VEX_3A6A) }, 8267 { PREFIX_TABLE (PREFIX_VEX_0F3A6A) },
7050 { PREFIX_TABLE (PREFIX_VEX_3A6B) }, 8268 { PREFIX_TABLE (PREFIX_VEX_0F3A6B) },
7051 { PREFIX_TABLE (PREFIX_VEX_3A6C) }, 8269 { PREFIX_TABLE (PREFIX_VEX_0F3A6C) },
7052 { PREFIX_TABLE (PREFIX_VEX_3A6D) }, 8270 { PREFIX_TABLE (PREFIX_VEX_0F3A6D) },
7053 { PREFIX_TABLE (PREFIX_VEX_3A6E) }, 8271 { PREFIX_TABLE (PREFIX_VEX_0F3A6E) },
7054 { PREFIX_TABLE (PREFIX_VEX_3A6F) }, 8272 { PREFIX_TABLE (PREFIX_VEX_0F3A6F) },
7055 /* 70 */ 8273 /* 70 */
7056 { "(bad)",» » { XX } }, 8274 { Bad_Opcode },
7057 { "(bad)",» » { XX } }, 8275 { Bad_Opcode },
7058 { "(bad)",» » { XX } }, 8276 { Bad_Opcode },
7059 { "(bad)",» » { XX } }, 8277 { Bad_Opcode },
7060 { "(bad)",» » { XX } }, 8278 { Bad_Opcode },
7061 { "(bad)",» » { XX } }, 8279 { Bad_Opcode },
7062 { "(bad)",» » { XX } }, 8280 { Bad_Opcode },
7063 { "(bad)",» » { XX } }, 8281 { Bad_Opcode },
7064 /* 78 */ 8282 /* 78 */
7065 { PREFIX_TABLE (PREFIX_VEX_3A78) }, 8283 { PREFIX_TABLE (PREFIX_VEX_0F3A78) },
7066 { PREFIX_TABLE (PREFIX_VEX_3A79) }, 8284 { PREFIX_TABLE (PREFIX_VEX_0F3A79) },
7067 { PREFIX_TABLE (PREFIX_VEX_3A7A) }, 8285 { PREFIX_TABLE (PREFIX_VEX_0F3A7A) },
7068 { PREFIX_TABLE (PREFIX_VEX_3A7B) }, 8286 { PREFIX_TABLE (PREFIX_VEX_0F3A7B) },
7069 { PREFIX_TABLE (PREFIX_VEX_3A7C) }, 8287 { PREFIX_TABLE (PREFIX_VEX_0F3A7C) },
7070 { PREFIX_TABLE (PREFIX_VEX_3A7D) }, 8288 { PREFIX_TABLE (PREFIX_VEX_0F3A7D) },
7071 { PREFIX_TABLE (PREFIX_VEX_3A7E) }, 8289 { PREFIX_TABLE (PREFIX_VEX_0F3A7E) },
7072 { PREFIX_TABLE (PREFIX_VEX_3A7F) }, 8290 { PREFIX_TABLE (PREFIX_VEX_0F3A7F) },
7073 /* 80 */ 8291 /* 80 */
7074 { "(bad)",» » { XX } }, 8292 { Bad_Opcode },
7075 { "(bad)",» » { XX } }, 8293 { Bad_Opcode },
7076 { "(bad)",» » { XX } }, 8294 { Bad_Opcode },
7077 { "(bad)",» » { XX } }, 8295 { Bad_Opcode },
7078 { "(bad)",» » { XX } }, 8296 { Bad_Opcode },
7079 { "(bad)",» » { XX } }, 8297 { Bad_Opcode },
7080 { "(bad)",» » { XX } }, 8298 { Bad_Opcode },
7081 { "(bad)",» » { XX } }, 8299 { Bad_Opcode },
7082 /* 88 */ 8300 /* 88 */
7083 { "(bad)",» » { XX } }, 8301 { Bad_Opcode },
7084 { "(bad)",» » { XX } }, 8302 { Bad_Opcode },
7085 { "(bad)",» » { XX } }, 8303 { Bad_Opcode },
7086 { "(bad)",» » { XX } }, 8304 { Bad_Opcode },
7087 { "(bad)",» » { XX } }, 8305 { Bad_Opcode },
7088 { "(bad)",» » { XX } }, 8306 { Bad_Opcode },
7089 { "(bad)",» » { XX } }, 8307 { Bad_Opcode },
7090 { "(bad)",» » { XX } }, 8308 { Bad_Opcode },
7091 /* 90 */ 8309 /* 90 */
7092 { "(bad)",» » { XX } }, 8310 { Bad_Opcode },
7093 { "(bad)",» » { XX } }, 8311 { Bad_Opcode },
7094 { "(bad)",» » { XX } }, 8312 { Bad_Opcode },
7095 { "(bad)",» » { XX } }, 8313 { Bad_Opcode },
7096 { "(bad)",» » { XX } }, 8314 { Bad_Opcode },
7097 { "(bad)",» » { XX } }, 8315 { Bad_Opcode },
7098 { "(bad)",» » { XX } }, 8316 { Bad_Opcode },
7099 { "(bad)",» » { XX } }, 8317 { Bad_Opcode },
7100 /* 98 */ 8318 /* 98 */
7101 { "(bad)",» » { XX } }, 8319 { Bad_Opcode },
7102 { "(bad)",» » { XX } }, 8320 { Bad_Opcode },
7103 { "(bad)",» » { XX } }, 8321 { Bad_Opcode },
7104 { "(bad)",» » { XX } }, 8322 { Bad_Opcode },
7105 { "(bad)",» » { XX } }, 8323 { Bad_Opcode },
7106 { "(bad)",» » { XX } }, 8324 { Bad_Opcode },
7107 { "(bad)",» » { XX } }, 8325 { Bad_Opcode },
7108 { "(bad)",» » { XX } }, 8326 { Bad_Opcode },
7109 /* a0 */ 8327 /* a0 */
7110 { "(bad)",» » { XX } }, 8328 { Bad_Opcode },
7111 { "(bad)",» » { XX } }, 8329 { Bad_Opcode },
7112 { "(bad)",» » { XX } }, 8330 { Bad_Opcode },
7113 { "(bad)",» » { XX } }, 8331 { Bad_Opcode },
7114 { "(bad)",» » { XX } }, 8332 { Bad_Opcode },
7115 { "(bad)",» » { XX } }, 8333 { Bad_Opcode },
7116 { "(bad)",» » { XX } }, 8334 { Bad_Opcode },
7117 { "(bad)",» » { XX } }, 8335 { Bad_Opcode },
7118 /* a8 */ 8336 /* a8 */
7119 { "(bad)",» » { XX } }, 8337 { Bad_Opcode },
7120 { "(bad)",» » { XX } }, 8338 { Bad_Opcode },
7121 { "(bad)",» » { XX } }, 8339 { Bad_Opcode },
7122 { "(bad)",» » { XX } }, 8340 { Bad_Opcode },
7123 { "(bad)",» » { XX } }, 8341 { Bad_Opcode },
7124 { "(bad)",» » { XX } }, 8342 { Bad_Opcode },
7125 { "(bad)",» » { XX } }, 8343 { Bad_Opcode },
7126 { "(bad)",» » { XX } }, 8344 { Bad_Opcode },
7127 /* b0 */ 8345 /* b0 */
7128 { "(bad)",» » { XX } }, 8346 { Bad_Opcode },
7129 { "(bad)",» » { XX } }, 8347 { Bad_Opcode },
7130 { "(bad)",» » { XX } }, 8348 { Bad_Opcode },
7131 { "(bad)",» » { XX } }, 8349 { Bad_Opcode },
7132 { "(bad)",» » { XX } }, 8350 { Bad_Opcode },
7133 { "(bad)",» » { XX } }, 8351 { Bad_Opcode },
7134 { "(bad)",» » { XX } }, 8352 { Bad_Opcode },
7135 { "(bad)",» » { XX } }, 8353 { Bad_Opcode },
7136 /* b8 */ 8354 /* b8 */
7137 { "(bad)",» » { XX } }, 8355 { Bad_Opcode },
7138 { "(bad)",» » { XX } }, 8356 { Bad_Opcode },
7139 { "(bad)",» » { XX } }, 8357 { Bad_Opcode },
7140 { "(bad)",» » { XX } }, 8358 { Bad_Opcode },
7141 { "(bad)",» » { XX } }, 8359 { Bad_Opcode },
7142 { "(bad)",» » { XX } }, 8360 { Bad_Opcode },
7143 { "(bad)",» » { XX } }, 8361 { Bad_Opcode },
7144 { "(bad)",» » { XX } }, 8362 { Bad_Opcode },
7145 /* c0 */ 8363 /* c0 */
7146 { "(bad)",» » { XX } }, 8364 { Bad_Opcode },
7147 { "(bad)",» » { XX } }, 8365 { Bad_Opcode },
7148 { "(bad)",» » { XX } }, 8366 { Bad_Opcode },
7149 { "(bad)",» » { XX } }, 8367 { Bad_Opcode },
7150 { "(bad)",» » { XX } }, 8368 { Bad_Opcode },
7151 { "(bad)",» » { XX } }, 8369 { Bad_Opcode },
7152 { "(bad)",» » { XX } }, 8370 { Bad_Opcode },
7153 { "(bad)",» » { XX } }, 8371 { Bad_Opcode },
7154 /* c8 */ 8372 /* c8 */
7155 { "(bad)",» » { XX } }, 8373 { Bad_Opcode },
7156 { "(bad)",» » { XX } }, 8374 { Bad_Opcode },
7157 { "(bad)",» » { XX } }, 8375 { Bad_Opcode },
7158 { "(bad)",» » { XX } }, 8376 { Bad_Opcode },
7159 { "(bad)",» » { XX } }, 8377 { Bad_Opcode },
7160 { "(bad)",» » { XX } }, 8378 { Bad_Opcode },
7161 { "(bad)",» » { XX } }, 8379 { Bad_Opcode },
7162 { "(bad)",» » { XX } }, 8380 { Bad_Opcode },
7163 /* d0 */ 8381 /* d0 */
7164 { "(bad)",» » { XX } }, 8382 { Bad_Opcode },
7165 { "(bad)",» » { XX } }, 8383 { Bad_Opcode },
7166 { "(bad)",» » { XX } }, 8384 { Bad_Opcode },
7167 { "(bad)",» » { XX } }, 8385 { Bad_Opcode },
7168 { "(bad)",» » { XX } }, 8386 { Bad_Opcode },
7169 { "(bad)",» » { XX } }, 8387 { Bad_Opcode },
7170 { "(bad)",» » { XX } }, 8388 { Bad_Opcode },
7171 { "(bad)",» » { XX } }, 8389 { Bad_Opcode },
7172 /* d8 */ 8390 /* d8 */
7173 { "(bad)",» » { XX } }, 8391 { Bad_Opcode },
7174 { "(bad)",» » { XX } }, 8392 { Bad_Opcode },
7175 { "(bad)",» » { XX } }, 8393 { Bad_Opcode },
7176 { "(bad)",» » { XX } }, 8394 { Bad_Opcode },
7177 { "(bad)",» » { XX } }, 8395 { Bad_Opcode },
7178 { "(bad)",» » { XX } }, 8396 { Bad_Opcode },
7179 { "(bad)",» » { XX } }, 8397 { Bad_Opcode },
7180 { PREFIX_TABLE (PREFIX_VEX_3ADF) }, 8398 { PREFIX_TABLE (PREFIX_VEX_0F3ADF) },
7181 /* e0 */ 8399 /* e0 */
7182 { "(bad)",» » { XX } }, 8400 { Bad_Opcode },
7183 { "(bad)",» » { XX } }, 8401 { Bad_Opcode },
7184 { "(bad)",» » { XX } }, 8402 { Bad_Opcode },
7185 { "(bad)",» » { XX } }, 8403 { Bad_Opcode },
7186 { "(bad)",» » { XX } }, 8404 { Bad_Opcode },
7187 { "(bad)",» » { XX } }, 8405 { Bad_Opcode },
7188 { "(bad)",» » { XX } }, 8406 { Bad_Opcode },
7189 { "(bad)",» » { XX } }, 8407 { Bad_Opcode },
7190 /* e8 */ 8408 /* e8 */
7191 { "(bad)",» » { XX } }, 8409 { Bad_Opcode },
7192 { "(bad)",» » { XX } }, 8410 { Bad_Opcode },
7193 { "(bad)",» » { XX } }, 8411 { Bad_Opcode },
7194 { "(bad)",» » { XX } }, 8412 { Bad_Opcode },
7195 { "(bad)",» » { XX } }, 8413 { Bad_Opcode },
7196 { "(bad)",» » { XX } }, 8414 { Bad_Opcode },
7197 { "(bad)",» » { XX } }, 8415 { Bad_Opcode },
7198 { "(bad)",» » { XX } }, 8416 { Bad_Opcode },
7199 /* f0 */ 8417 /* f0 */
7200 { "(bad)",» » { XX } }, 8418 { PREFIX_TABLE (PREFIX_VEX_0F3AF0) },
7201 { "(bad)",» » { XX } }, 8419 { Bad_Opcode },
7202 { "(bad)",» » { XX } }, 8420 { Bad_Opcode },
7203 { "(bad)",» » { XX } }, 8421 { Bad_Opcode },
7204 { "(bad)",» » { XX } }, 8422 { Bad_Opcode },
7205 { "(bad)",» » { XX } }, 8423 { Bad_Opcode },
7206 { "(bad)",» » { XX } }, 8424 { Bad_Opcode },
7207 { "(bad)",» » { XX } }, 8425 { Bad_Opcode },
7208 /* f8 */ 8426 /* f8 */
7209 { "(bad)",» » { XX } }, 8427 { Bad_Opcode },
7210 { "(bad)",» » { XX } }, 8428 { Bad_Opcode },
7211 { "(bad)",» » { XX } }, 8429 { Bad_Opcode },
7212 { "(bad)",» » { XX } }, 8430 { Bad_Opcode },
7213 { "(bad)",» » { XX } }, 8431 { Bad_Opcode },
7214 { "(bad)",» » { XX } }, 8432 { Bad_Opcode },
7215 { "(bad)",» » { XX } }, 8433 { Bad_Opcode },
7216 { "(bad)",» » { XX } }, 8434 { Bad_Opcode },
7217 }, 8435 },
7218 }; 8436 };
7219 8437
7220 static const struct dis386 vex_len_table[][2] = { 8438 static const struct dis386 vex_len_table[][2] = {
7221 /* VEX_LEN_10_P_1 */ 8439 /* VEX_LEN_0F10_P_1 */
7222 { 8440 {
7223 { "vmovss", { XMVex, Vex128, EXd } }, 8441 { VEX_W_TABLE (VEX_W_0F10_P_1) },
7224 { "(bad)", { XX } }, 8442 { VEX_W_TABLE (VEX_W_0F10_P_1) },
7225 }, 8443 },
7226 8444
7227 /* VEX_LEN_10_P_3 */ 8445 /* VEX_LEN_0F10_P_3 */
7228 { 8446 {
7229 { "vmovsd", { XMVex, Vex128, EXq } }, 8447 { VEX_W_TABLE (VEX_W_0F10_P_3) },
7230 { "(bad)", { XX } }, 8448 { VEX_W_TABLE (VEX_W_0F10_P_3) },
7231 }, 8449 },
7232 8450
7233 /* VEX_LEN_11_P_1 */ 8451 /* VEX_LEN_0F11_P_1 */
7234 { 8452 {
7235 { "vmovss", { EXdVexS, Vex128, XM } }, 8453 { VEX_W_TABLE (VEX_W_0F11_P_1) },
7236 { "(bad)", { XX } }, 8454 { VEX_W_TABLE (VEX_W_0F11_P_1) },
7237 }, 8455 },
7238 8456
7239 /* VEX_LEN_11_P_3 */ 8457 /* VEX_LEN_0F11_P_3 */
7240 { 8458 {
7241 { "vmovsd", { EXqVexS, Vex128, XM } }, 8459 { VEX_W_TABLE (VEX_W_0F11_P_3) },
7242 { "(bad)", { XX } }, 8460 { VEX_W_TABLE (VEX_W_0F11_P_3) },
7243 }, 8461 },
7244 8462
7245 /* VEX_LEN_12_P_0_M_0 */ 8463 /* VEX_LEN_0F12_P_0_M_0 */
7246 { 8464 {
8465 { VEX_W_TABLE (VEX_W_0F12_P_0_M_0) },
8466 },
8467
8468 /* VEX_LEN_0F12_P_0_M_1 */
8469 {
8470 { VEX_W_TABLE (VEX_W_0F12_P_0_M_1) },
8471 },
8472
8473 /* VEX_LEN_0F12_P_2 */
8474 {
8475 { VEX_W_TABLE (VEX_W_0F12_P_2) },
8476 },
8477
8478 /* VEX_LEN_0F13_M_0 */
8479 {
8480 { VEX_W_TABLE (VEX_W_0F13_M_0) },
8481 },
8482
8483 /* VEX_LEN_0F16_P_0_M_0 */
8484 {
8485 { VEX_W_TABLE (VEX_W_0F16_P_0_M_0) },
8486 },
8487
8488 /* VEX_LEN_0F16_P_0_M_1 */
8489 {
8490 { VEX_W_TABLE (VEX_W_0F16_P_0_M_1) },
8491 },
8492
8493 /* VEX_LEN_0F16_P_2 */
8494 {
8495 { VEX_W_TABLE (VEX_W_0F16_P_2) },
8496 },
8497
8498 /* VEX_LEN_0F17_M_0 */
8499 {
8500 { VEX_W_TABLE (VEX_W_0F17_M_0) },
8501 },
8502
8503 /* VEX_LEN_0F2A_P_1 */
8504 {
8505 { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev } },
8506 { "vcvtsi2ss%LQ", { XMScalar, VexScalar, Ev } },
8507 },
8508
8509 /* VEX_LEN_0F2A_P_3 */
8510 {
8511 { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev } },
8512 { "vcvtsi2sd%LQ", { XMScalar, VexScalar, Ev } },
8513 },
8514
8515 /* VEX_LEN_0F2C_P_1 */
8516 {
8517 { "vcvttss2siY", { Gv, EXdScalar } },
8518 { "vcvttss2siY", { Gv, EXdScalar } },
8519 },
8520
8521 /* VEX_LEN_0F2C_P_3 */
8522 {
8523 { "vcvttsd2siY", { Gv, EXqScalar } },
8524 { "vcvttsd2siY", { Gv, EXqScalar } },
8525 },
8526
8527 /* VEX_LEN_0F2D_P_1 */
8528 {
8529 { "vcvtss2siY", { Gv, EXdScalar } },
8530 { "vcvtss2siY", { Gv, EXdScalar } },
8531 },
8532
8533 /* VEX_LEN_0F2D_P_3 */
8534 {
8535 { "vcvtsd2siY", { Gv, EXqScalar } },
8536 { "vcvtsd2siY", { Gv, EXqScalar } },
8537 },
8538
8539 /* VEX_LEN_0F2E_P_0 */
8540 {
8541 { VEX_W_TABLE (VEX_W_0F2E_P_0) },
8542 { VEX_W_TABLE (VEX_W_0F2E_P_0) },
8543 },
8544
8545 /* VEX_LEN_0F2E_P_2 */
8546 {
8547 { VEX_W_TABLE (VEX_W_0F2E_P_2) },
8548 { VEX_W_TABLE (VEX_W_0F2E_P_2) },
8549 },
8550
8551 /* VEX_LEN_0F2F_P_0 */
8552 {
8553 { VEX_W_TABLE (VEX_W_0F2F_P_0) },
8554 { VEX_W_TABLE (VEX_W_0F2F_P_0) },
8555 },
8556
8557 /* VEX_LEN_0F2F_P_2 */
8558 {
8559 { VEX_W_TABLE (VEX_W_0F2F_P_2) },
8560 { VEX_W_TABLE (VEX_W_0F2F_P_2) },
8561 },
8562
8563 /* VEX_LEN_0F51_P_1 */
8564 {
8565 { VEX_W_TABLE (VEX_W_0F51_P_1) },
8566 { VEX_W_TABLE (VEX_W_0F51_P_1) },
8567 },
8568
8569 /* VEX_LEN_0F51_P_3 */
8570 {
8571 { VEX_W_TABLE (VEX_W_0F51_P_3) },
8572 { VEX_W_TABLE (VEX_W_0F51_P_3) },
8573 },
8574
8575 /* VEX_LEN_0F52_P_1 */
8576 {
8577 { VEX_W_TABLE (VEX_W_0F52_P_1) },
8578 { VEX_W_TABLE (VEX_W_0F52_P_1) },
8579 },
8580
8581 /* VEX_LEN_0F53_P_1 */
8582 {
8583 { VEX_W_TABLE (VEX_W_0F53_P_1) },
8584 { VEX_W_TABLE (VEX_W_0F53_P_1) },
8585 },
8586
8587 /* VEX_LEN_0F58_P_1 */
8588 {
8589 { VEX_W_TABLE (VEX_W_0F58_P_1) },
8590 { VEX_W_TABLE (VEX_W_0F58_P_1) },
8591 },
8592
8593 /* VEX_LEN_0F58_P_3 */
8594 {
8595 { VEX_W_TABLE (VEX_W_0F58_P_3) },
8596 { VEX_W_TABLE (VEX_W_0F58_P_3) },
8597 },
8598
8599 /* VEX_LEN_0F59_P_1 */
8600 {
8601 { VEX_W_TABLE (VEX_W_0F59_P_1) },
8602 { VEX_W_TABLE (VEX_W_0F59_P_1) },
8603 },
8604
8605 /* VEX_LEN_0F59_P_3 */
8606 {
8607 { VEX_W_TABLE (VEX_W_0F59_P_3) },
8608 { VEX_W_TABLE (VEX_W_0F59_P_3) },
8609 },
8610
8611 /* VEX_LEN_0F5A_P_1 */
8612 {
8613 { VEX_W_TABLE (VEX_W_0F5A_P_1) },
8614 { VEX_W_TABLE (VEX_W_0F5A_P_1) },
8615 },
8616
8617 /* VEX_LEN_0F5A_P_3 */
8618 {
8619 { VEX_W_TABLE (VEX_W_0F5A_P_3) },
8620 { VEX_W_TABLE (VEX_W_0F5A_P_3) },
8621 },
8622
8623 /* VEX_LEN_0F5C_P_1 */
8624 {
8625 { VEX_W_TABLE (VEX_W_0F5C_P_1) },
8626 { VEX_W_TABLE (VEX_W_0F5C_P_1) },
8627 },
8628
8629 /* VEX_LEN_0F5C_P_3 */
8630 {
8631 { VEX_W_TABLE (VEX_W_0F5C_P_3) },
8632 { VEX_W_TABLE (VEX_W_0F5C_P_3) },
8633 },
8634
8635 /* VEX_LEN_0F5D_P_1 */
8636 {
8637 { VEX_W_TABLE (VEX_W_0F5D_P_1) },
8638 { VEX_W_TABLE (VEX_W_0F5D_P_1) },
8639 },
8640
8641 /* VEX_LEN_0F5D_P_3 */
8642 {
8643 { VEX_W_TABLE (VEX_W_0F5D_P_3) },
8644 { VEX_W_TABLE (VEX_W_0F5D_P_3) },
8645 },
8646
8647 /* VEX_LEN_0F5E_P_1 */
8648 {
8649 { VEX_W_TABLE (VEX_W_0F5E_P_1) },
8650 { VEX_W_TABLE (VEX_W_0F5E_P_1) },
8651 },
8652
8653 /* VEX_LEN_0F5E_P_3 */
8654 {
8655 { VEX_W_TABLE (VEX_W_0F5E_P_3) },
8656 { VEX_W_TABLE (VEX_W_0F5E_P_3) },
8657 },
8658
8659 /* VEX_LEN_0F5F_P_1 */
8660 {
8661 { VEX_W_TABLE (VEX_W_0F5F_P_1) },
8662 { VEX_W_TABLE (VEX_W_0F5F_P_1) },
8663 },
8664
8665 /* VEX_LEN_0F5F_P_3 */
8666 {
8667 { VEX_W_TABLE (VEX_W_0F5F_P_3) },
8668 { VEX_W_TABLE (VEX_W_0F5F_P_3) },
8669 },
8670
8671 /* VEX_LEN_0F6E_P_2 */
8672 {
8673 { "vmovK", { XMScalar, Edq } },
8674 { "vmovK", { XMScalar, Edq } },
8675 },
8676
8677 /* VEX_LEN_0F7E_P_1 */
8678 {
8679 { VEX_W_TABLE (VEX_W_0F7E_P_1) },
8680 { VEX_W_TABLE (VEX_W_0F7E_P_1) },
8681 },
8682
8683 /* VEX_LEN_0F7E_P_2 */
8684 {
8685 { "vmovK", { Edq, XMScalar } },
8686 { "vmovK", { Edq, XMScalar } },
8687 },
8688
8689 /* VEX_LEN_0FAE_R_2_M_0 */
8690 {
8691 { VEX_W_TABLE (VEX_W_0FAE_R_2_M_0) },
8692 },
8693
8694 /* VEX_LEN_0FAE_R_3_M_0 */
8695 {
8696 { VEX_W_TABLE (VEX_W_0FAE_R_3_M_0) },
8697 },
8698
8699 /* VEX_LEN_0FC2_P_1 */
8700 {
8701 { VEX_W_TABLE (VEX_W_0FC2_P_1) },
8702 { VEX_W_TABLE (VEX_W_0FC2_P_1) },
8703 },
8704
8705 /* VEX_LEN_0FC2_P_3 */
8706 {
8707 { VEX_W_TABLE (VEX_W_0FC2_P_3) },
8708 { VEX_W_TABLE (VEX_W_0FC2_P_3) },
8709 },
8710
8711 /* VEX_LEN_0FC4_P_2 */
8712 {
8713 { VEX_W_TABLE (VEX_W_0FC4_P_2) },
8714 },
8715
8716 /* VEX_LEN_0FC5_P_2 */
8717 {
8718 { VEX_W_TABLE (VEX_W_0FC5_P_2) },
8719 },
8720
8721 /* VEX_LEN_0FD6_P_2 */
8722 {
8723 { VEX_W_TABLE (VEX_W_0FD6_P_2) },
8724 { VEX_W_TABLE (VEX_W_0FD6_P_2) },
8725 },
8726
8727 /* VEX_LEN_0FF7_P_2 */
8728 {
8729 { VEX_W_TABLE (VEX_W_0FF7_P_2) },
8730 },
8731
8732 /* VEX_LEN_0F3816_P_2 */
8733 {
8734 { Bad_Opcode },
8735 { VEX_W_TABLE (VEX_W_0F3816_P_2) },
8736 },
8737
8738 /* VEX_LEN_0F3819_P_2 */
8739 {
8740 { Bad_Opcode },
8741 { VEX_W_TABLE (VEX_W_0F3819_P_2) },
8742 },
8743
8744 /* VEX_LEN_0F381A_P_2_M_0 */
8745 {
8746 { Bad_Opcode },
8747 { VEX_W_TABLE (VEX_W_0F381A_P_2_M_0) },
8748 },
8749
8750 /* VEX_LEN_0F3836_P_2 */
8751 {
8752 { Bad_Opcode },
8753 { VEX_W_TABLE (VEX_W_0F3836_P_2) },
8754 },
8755
8756 /* VEX_LEN_0F3841_P_2 */
8757 {
8758 { VEX_W_TABLE (VEX_W_0F3841_P_2) },
8759 },
8760
8761 /* VEX_LEN_0F385A_P_2_M_0 */
8762 {
8763 { Bad_Opcode },
8764 { VEX_W_TABLE (VEX_W_0F385A_P_2_M_0) },
8765 },
8766
8767 /* VEX_LEN_0F38DB_P_2 */
8768 {
8769 { VEX_W_TABLE (VEX_W_0F38DB_P_2) },
8770 },
8771
8772 /* VEX_LEN_0F38DC_P_2 */
8773 {
8774 { VEX_W_TABLE (VEX_W_0F38DC_P_2) },
8775 },
8776
8777 /* VEX_LEN_0F38DD_P_2 */
8778 {
8779 { VEX_W_TABLE (VEX_W_0F38DD_P_2) },
8780 },
8781
8782 /* VEX_LEN_0F38DE_P_2 */
8783 {
8784 { VEX_W_TABLE (VEX_W_0F38DE_P_2) },
8785 },
8786
8787 /* VEX_LEN_0F38DF_P_2 */
8788 {
8789 { VEX_W_TABLE (VEX_W_0F38DF_P_2) },
8790 },
8791
8792 /* VEX_LEN_0F38F2_P_0 */
8793 {
8794 { "andnS", { Gdq, VexGdq, Edq } },
8795 },
8796
8797 /* VEX_LEN_0F38F3_R_1_P_0 */
8798 {
8799 { "blsrS", { VexGdq, Edq } },
8800 },
8801
8802 /* VEX_LEN_0F38F3_R_2_P_0 */
8803 {
8804 { "blsmskS", { VexGdq, Edq } },
8805 },
8806
8807 /* VEX_LEN_0F38F3_R_3_P_0 */
8808 {
8809 { "blsiS", { VexGdq, Edq } },
8810 },
8811
8812 /* VEX_LEN_0F38F5_P_0 */
8813 {
8814 { "bzhiS", { Gdq, Edq, VexGdq } },
8815 },
8816
8817 /* VEX_LEN_0F38F5_P_1 */
8818 {
8819 { "pextS", { Gdq, VexGdq, Edq } },
8820 },
8821
8822 /* VEX_LEN_0F38F5_P_3 */
8823 {
8824 { "pdepS", { Gdq, VexGdq, Edq } },
8825 },
8826
8827 /* VEX_LEN_0F38F6_P_3 */
8828 {
8829 { "mulxS", { Gdq, VexGdq, Edq } },
8830 },
8831
8832 /* VEX_LEN_0F38F7_P_0 */
8833 {
8834 { "bextrS", { Gdq, Edq, VexGdq } },
8835 },
8836
8837 /* VEX_LEN_0F38F7_P_1 */
8838 {
8839 { "sarxS", { Gdq, Edq, VexGdq } },
8840 },
8841
8842 /* VEX_LEN_0F38F7_P_2 */
8843 {
8844 { "shlxS", { Gdq, Edq, VexGdq } },
8845 },
8846
8847 /* VEX_LEN_0F38F7_P_3 */
8848 {
8849 { "shrxS", { Gdq, Edq, VexGdq } },
8850 },
8851
8852 /* VEX_LEN_0F3A00_P_2 */
8853 {
8854 { Bad_Opcode },
8855 { VEX_W_TABLE (VEX_W_0F3A00_P_2) },
8856 },
8857
8858 /* VEX_LEN_0F3A01_P_2 */
8859 {
8860 { Bad_Opcode },
8861 { VEX_W_TABLE (VEX_W_0F3A01_P_2) },
8862 },
8863
8864 /* VEX_LEN_0F3A06_P_2 */
8865 {
8866 { Bad_Opcode },
8867 { VEX_W_TABLE (VEX_W_0F3A06_P_2) },
8868 },
8869
8870 /* VEX_LEN_0F3A0A_P_2 */
8871 {
8872 { VEX_W_TABLE (VEX_W_0F3A0A_P_2) },
8873 { VEX_W_TABLE (VEX_W_0F3A0A_P_2) },
8874 },
8875
8876 /* VEX_LEN_0F3A0B_P_2 */
8877 {
8878 { VEX_W_TABLE (VEX_W_0F3A0B_P_2) },
8879 { VEX_W_TABLE (VEX_W_0F3A0B_P_2) },
8880 },
8881
8882 /* VEX_LEN_0F3A14_P_2 */
8883 {
8884 { VEX_W_TABLE (VEX_W_0F3A14_P_2) },
8885 },
8886
8887 /* VEX_LEN_0F3A15_P_2 */
8888 {
8889 { VEX_W_TABLE (VEX_W_0F3A15_P_2) },
8890 },
8891
8892 /* VEX_LEN_0F3A16_P_2 */
8893 {
8894 { "vpextrK", { Edq, XM, Ib } },
8895 },
8896
8897 /* VEX_LEN_0F3A17_P_2 */
8898 {
8899 { "vextractps", { Edqd, XM, Ib } },
8900 },
8901
8902 /* VEX_LEN_0F3A18_P_2 */
8903 {
8904 { Bad_Opcode },
8905 { VEX_W_TABLE (VEX_W_0F3A18_P_2) },
8906 },
8907
8908 /* VEX_LEN_0F3A19_P_2 */
8909 {
8910 { Bad_Opcode },
8911 { VEX_W_TABLE (VEX_W_0F3A19_P_2) },
8912 },
8913
8914 /* VEX_LEN_0F3A20_P_2 */
8915 {
8916 { VEX_W_TABLE (VEX_W_0F3A20_P_2) },
8917 },
8918
8919 /* VEX_LEN_0F3A21_P_2 */
8920 {
8921 { VEX_W_TABLE (VEX_W_0F3A21_P_2) },
8922 },
8923
8924 /* VEX_LEN_0F3A22_P_2 */
8925 {
8926 { "vpinsrK", { XM, Vex128, Edq, Ib } },
8927 },
8928
8929 /* VEX_LEN_0F3A38_P_2 */
8930 {
8931 { Bad_Opcode },
8932 { VEX_W_TABLE (VEX_W_0F3A38_P_2) },
8933 },
8934
8935 /* VEX_LEN_0F3A39_P_2 */
8936 {
8937 { Bad_Opcode },
8938 { VEX_W_TABLE (VEX_W_0F3A39_P_2) },
8939 },
8940
8941 /* VEX_LEN_0F3A41_P_2 */
8942 {
8943 { VEX_W_TABLE (VEX_W_0F3A41_P_2) },
8944 },
8945
8946 /* VEX_LEN_0F3A44_P_2 */
8947 {
8948 { VEX_W_TABLE (VEX_W_0F3A44_P_2) },
8949 },
8950
8951 /* VEX_LEN_0F3A46_P_2 */
8952 {
8953 { Bad_Opcode },
8954 { VEX_W_TABLE (VEX_W_0F3A46_P_2) },
8955 },
8956
8957 /* VEX_LEN_0F3A60_P_2 */
8958 {
8959 { VEX_W_TABLE (VEX_W_0F3A60_P_2) },
8960 },
8961
8962 /* VEX_LEN_0F3A61_P_2 */
8963 {
8964 { VEX_W_TABLE (VEX_W_0F3A61_P_2) },
8965 },
8966
8967 /* VEX_LEN_0F3A62_P_2 */
8968 {
8969 { VEX_W_TABLE (VEX_W_0F3A62_P_2) },
8970 },
8971
8972 /* VEX_LEN_0F3A63_P_2 */
8973 {
8974 { VEX_W_TABLE (VEX_W_0F3A63_P_2) },
8975 },
8976
8977 /* VEX_LEN_0F3A6A_P_2 */
8978 {
8979 { "vfmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
8980 },
8981
8982 /* VEX_LEN_0F3A6B_P_2 */
8983 {
8984 { "vfmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
8985 },
8986
8987 /* VEX_LEN_0F3A6E_P_2 */
8988 {
8989 { "vfmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
8990 },
8991
8992 /* VEX_LEN_0F3A6F_P_2 */
8993 {
8994 { "vfmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
8995 },
8996
8997 /* VEX_LEN_0F3A7A_P_2 */
8998 {
8999 { "vfnmaddss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
9000 },
9001
9002 /* VEX_LEN_0F3A7B_P_2 */
9003 {
9004 { "vfnmaddsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
9005 },
9006
9007 /* VEX_LEN_0F3A7E_P_2 */
9008 {
9009 { "vfnmsubss", { XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
9010 },
9011
9012 /* VEX_LEN_0F3A7F_P_2 */
9013 {
9014 { "vfnmsubsd", { XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
9015 },
9016
9017 /* VEX_LEN_0F3ADF_P_2 */
9018 {
9019 { VEX_W_TABLE (VEX_W_0F3ADF_P_2) },
9020 },
9021
9022 /* VEX_LEN_0F3AF0_P_3 */
9023 {
9024 { "rorxS", { Gdq, Edq, Ib } },
9025 },
9026
9027 /* VEX_LEN_0FXOP_08_CC */
9028 {
9029 { "vpcomb", { XM, Vex128, EXx, Ib } },
9030 },
9031
9032 /* VEX_LEN_0FXOP_08_CD */
9033 {
9034 { "vpcomw", { XM, Vex128, EXx, Ib } },
9035 },
9036
9037 /* VEX_LEN_0FXOP_08_CE */
9038 {
9039 { "vpcomd", { XM, Vex128, EXx, Ib } },
9040 },
9041
9042 /* VEX_LEN_0FXOP_08_CF */
9043 {
9044 { "vpcomq", { XM, Vex128, EXx, Ib } },
9045 },
9046
9047 /* VEX_LEN_0FXOP_08_EC */
9048 {
9049 { "vpcomub", { XM, Vex128, EXx, Ib } },
9050 },
9051
9052 /* VEX_LEN_0FXOP_08_ED */
9053 {
9054 { "vpcomuw", { XM, Vex128, EXx, Ib } },
9055 },
9056
9057 /* VEX_LEN_0FXOP_08_EE */
9058 {
9059 { "vpcomud", { XM, Vex128, EXx, Ib } },
9060 },
9061
9062 /* VEX_LEN_0FXOP_08_EF */
9063 {
9064 { "vpcomuq", { XM, Vex128, EXx, Ib } },
9065 },
9066
9067 /* VEX_LEN_0FXOP_09_80 */
9068 {
9069 { "vfrczps", { XM, EXxmm } },
9070 { "vfrczps", { XM, EXymmq } },
9071 },
9072
9073 /* VEX_LEN_0FXOP_09_81 */
9074 {
9075 { "vfrczpd", { XM, EXxmm } },
9076 { "vfrczpd", { XM, EXymmq } },
9077 },
9078 };
9079
9080 static const struct dis386 vex_w_table[][2] = {
9081 {
9082 /* VEX_W_0F10_P_0 */
9083 { "vmovups", { XM, EXx } },
9084 },
9085 {
9086 /* VEX_W_0F10_P_1 */
9087 { "vmovss", { XMVexScalar, VexScalar, EXdScalar } },
9088 },
9089 {
9090 /* VEX_W_0F10_P_2 */
9091 { "vmovupd", { XM, EXx } },
9092 },
9093 {
9094 /* VEX_W_0F10_P_3 */
9095 { "vmovsd", { XMVexScalar, VexScalar, EXqScalar } },
9096 },
9097 {
9098 /* VEX_W_0F11_P_0 */
9099 { "vmovups", { EXxS, XM } },
9100 },
9101 {
9102 /* VEX_W_0F11_P_1 */
9103 { "vmovss", { EXdVexScalarS, VexScalar, XMScalar } },
9104 },
9105 {
9106 /* VEX_W_0F11_P_2 */
9107 { "vmovupd", { EXxS, XM } },
9108 },
9109 {
9110 /* VEX_W_0F11_P_3 */
9111 { "vmovsd", { EXqVexScalarS, VexScalar, XMScalar } },
9112 },
9113 {
9114 /* VEX_W_0F12_P_0_M_0 */
7247 { "vmovlps", { XM, Vex128, EXq } }, 9115 { "vmovlps", { XM, Vex128, EXq } },
7248 { "(bad)",» » { XX } }, 9116 },
7249 }, 9117 {
7250 9118 /* VEX_W_0F12_P_0_M_1 */
7251 /* VEX_LEN_12_P_0_M_1 */
7252 {
7253 { "vmovhlps", { XM, Vex128, EXq } }, 9119 { "vmovhlps", { XM, Vex128, EXq } },
7254 { "(bad)",» » { XX } }, 9120 },
7255 }, 9121 {
7256 9122 /* VEX_W_0F12_P_1 */
7257 /* VEX_LEN_12_P_2 */ 9123 { "vmovsldup",» { XM, EXx } },
7258 { 9124 },
9125 {
9126 /* VEX_W_0F12_P_2 */
7259 { "vmovlpd", { XM, Vex128, EXq } }, 9127 { "vmovlpd", { XM, Vex128, EXq } },
7260 { "(bad)",» » { XX } }, 9128 },
7261 }, 9129 {
7262 9130 /* VEX_W_0F12_P_3 */
7263 /* VEX_LEN_13_M_0 */ 9131 { "vmovddup",» { XM, EXymmq } },
7264 { 9132 },
9133 {
9134 /* VEX_W_0F13_M_0 */
7265 { "vmovlpX", { EXq, XM } }, 9135 { "vmovlpX", { EXq, XM } },
7266 { "(bad)",» » { XX } }, 9136 },
7267 }, 9137 {
7268 9138 /* VEX_W_0F14 */
7269 /* VEX_LEN_16_P_0_M_0 */ 9139 { "vunpcklpX",» { XM, Vex, EXx } },
7270 { 9140 },
9141 {
9142 /* VEX_W_0F15 */
9143 { "vunpckhpX",» { XM, Vex, EXx } },
9144 },
9145 {
9146 /* VEX_W_0F16_P_0_M_0 */
7271 { "vmovhps", { XM, Vex128, EXq } }, 9147 { "vmovhps", { XM, Vex128, EXq } },
7272 { "(bad)",» » { XX } }, 9148 },
7273 }, 9149 {
7274 9150 /* VEX_W_0F16_P_0_M_1 */
7275 /* VEX_LEN_16_P_0_M_1 */
7276 {
7277 { "vmovlhps", { XM, Vex128, EXq } }, 9151 { "vmovlhps", { XM, Vex128, EXq } },
7278 { "(bad)",» » { XX } }, 9152 },
7279 }, 9153 {
7280 9154 /* VEX_W_0F16_P_1 */
7281 /* VEX_LEN_16_P_2 */ 9155 { "vmovshdup",» { XM, EXx } },
7282 { 9156 },
9157 {
9158 /* VEX_W_0F16_P_2 */
7283 { "vmovhpd", { XM, Vex128, EXq } }, 9159 { "vmovhpd", { XM, Vex128, EXq } },
7284 { "(bad)",» » { XX } }, 9160 },
7285 }, 9161 {
7286 9162 /* VEX_W_0F17_M_0 */
7287 /* VEX_LEN_17_M_0 */
7288 {
7289 { "vmovhpX", { EXq, XM } }, 9163 { "vmovhpX", { EXq, XM } },
7290 { "(bad)",» » { XX } }, 9164 },
7291 }, 9165 {
7292 9166 /* VEX_W_0F28 */
7293 /* VEX_LEN_2A_P_1 */ 9167 { "vmovapX",» { XM, EXx } },
7294 { 9168 },
7295 { "vcvtsi2ss%LQ",» { XM, Vex128, Ev } }, 9169 {
7296 { "(bad)",» » { XX } }, 9170 /* VEX_W_0F29 */
7297 }, 9171 { "vmovapX",» { EXxS, XM } },
7298 9172 },
7299 /* VEX_LEN_2A_P_3 */ 9173 {
7300 { 9174 /* VEX_W_0F2B_M_0 */
7301 { "vcvtsi2sd%LQ",» { XM, Vex128, Ev } }, 9175 { "vmovntpX",» { Mx, XM } },
7302 { "(bad)",» » { XX } }, 9176 },
7303 }, 9177 {
7304 9178 /* VEX_W_0F2E_P_0 */
7305 /* VEX_LEN_2C_P_1 */ 9179 { "vucomiss",» { XMScalar, EXdScalar } },
7306 { 9180 },
7307 { "vcvttss2siY",» { Gv, EXd } }, 9181 {
7308 { "(bad)",» » { XX } }, 9182 /* VEX_W_0F2E_P_2 */
7309 }, 9183 { "vucomisd",» { XMScalar, EXqScalar } },
7310 9184 },
7311 /* VEX_LEN_2C_P_3 */ 9185 {
7312 { 9186 /* VEX_W_0F2F_P_0 */
7313 { "vcvttsd2siY",» { Gv, EXq } }, 9187 { "vcomiss",» { XMScalar, EXdScalar } },
7314 { "(bad)",» » { XX } }, 9188 },
7315 }, 9189 {
7316 9190 /* VEX_W_0F2F_P_2 */
7317 /* VEX_LEN_2D_P_1 */ 9191 { "vcomisd",» { XMScalar, EXqScalar } },
7318 { 9192 },
7319 { "vcvtss2siY",» { Gv, EXd } }, 9193 {
7320 { "(bad)",» » { XX } }, 9194 /* VEX_W_0F50_M_0 */
7321 }, 9195 { "vmovmskpX",» { Gdq, XS } },
7322 9196 },
7323 /* VEX_LEN_2D_P_3 */ 9197 {
7324 { 9198 /* VEX_W_0F51_P_0 */
7325 { "vcvtsd2siY",» { Gv, EXq } }, 9199 { "vsqrtps",» { XM, EXx } },
7326 { "(bad)",» » { XX } }, 9200 },
7327 }, 9201 {
7328 9202 /* VEX_W_0F51_P_1 */
7329 /* VEX_LEN_2E_P_0 */ 9203 { "vsqrtss",» { XMScalar, VexScalar, EXdScalar } },
7330 { 9204 },
7331 { "vucomiss",» { XM, EXd } }, 9205 {
7332 { "(bad)",» » { XX } }, 9206 /* VEX_W_0F51_P_2 */
7333 }, 9207 { "vsqrtpd",» { XM, EXx } },
7334 9208 },
7335 /* VEX_LEN_2E_P_2 */ 9209 {
7336 { 9210 /* VEX_W_0F51_P_3 */
7337 { "vucomisd",» { XM, EXq } }, 9211 { "vsqrtsd",» { XMScalar, VexScalar, EXqScalar } },
7338 { "(bad)",» » { XX } }, 9212 },
7339 }, 9213 {
7340 9214 /* VEX_W_0F52_P_0 */
7341 /* VEX_LEN_2F_P_0 */ 9215 { "vrsqrtps",» { XM, EXx } },
7342 { 9216 },
7343 { "vcomiss",» { XM, EXd } }, 9217 {
7344 { "(bad)",» » { XX } }, 9218 /* VEX_W_0F52_P_1 */
7345 }, 9219 { "vrsqrtss",» { XMScalar, VexScalar, EXdScalar } },
7346 9220 },
7347 /* VEX_LEN_2F_P_2 */ 9221 {
7348 { 9222 /* VEX_W_0F53_P_0 */
7349 { "vcomisd",» { XM, EXq } }, 9223 { "vrcpps",»» { XM, EXx } },
7350 { "(bad)",» » { XX } }, 9224 },
7351 }, 9225 {
7352 9226 /* VEX_W_0F53_P_1 */
7353 /* VEX_LEN_51_P_1 */ 9227 { "vrcpss",»» { XMScalar, VexScalar, EXdScalar } },
7354 { 9228 },
7355 { "vsqrtss",» { XM, Vex128, EXd } }, 9229 {
7356 { "(bad)",» » { XX } }, 9230 /* VEX_W_0F58_P_0 */
7357 }, 9231 { "vaddps",»» { XM, Vex, EXx } },
7358 9232 },
7359 /* VEX_LEN_51_P_3 */ 9233 {
7360 { 9234 /* VEX_W_0F58_P_1 */
7361 { "vsqrtsd",» { XM, Vex128, EXq } }, 9235 { "vaddss",»» { XMScalar, VexScalar, EXdScalar } },
7362 { "(bad)",» » { XX } }, 9236 },
7363 }, 9237 {
7364 9238 /* VEX_W_0F58_P_2 */
7365 /* VEX_LEN_52_P_1 */ 9239 { "vaddpd",»» { XM, Vex, EXx } },
7366 { 9240 },
7367 { "vrsqrtss",» { XM, Vex128, EXd } }, 9241 {
7368 { "(bad)",» » { XX } }, 9242 /* VEX_W_0F58_P_3 */
7369 }, 9243 { "vaddsd",»» { XMScalar, VexScalar, EXqScalar } },
7370 9244 },
7371 /* VEX_LEN_53_P_1 */ 9245 {
7372 { 9246 /* VEX_W_0F59_P_0 */
7373 { "vrcpss",»» { XM, Vex128, EXd } }, 9247 { "vmulps",»» { XM, Vex, EXx } },
7374 { "(bad)",» » { XX } }, 9248 },
7375 }, 9249 {
7376 9250 /* VEX_W_0F59_P_1 */
7377 /* VEX_LEN_58_P_1 */ 9251 { "vmulss",»» { XMScalar, VexScalar, EXdScalar } },
7378 { 9252 },
7379 { "vaddss",»» { XM, Vex128, EXd } }, 9253 {
7380 { "(bad)",» » { XX } }, 9254 /* VEX_W_0F59_P_2 */
7381 }, 9255 { "vmulpd",»» { XM, Vex, EXx } },
7382 9256 },
7383 /* VEX_LEN_58_P_3 */ 9257 {
7384 { 9258 /* VEX_W_0F59_P_3 */
7385 { "vaddsd",»» { XM, Vex128, EXq } }, 9259 { "vmulsd",»» { XMScalar, VexScalar, EXqScalar } },
7386 { "(bad)",» » { XX } }, 9260 },
7387 }, 9261 {
7388 9262 /* VEX_W_0F5A_P_0 */
7389 /* VEX_LEN_59_P_1 */ 9263 { "vcvtps2pd",» { XM, EXxmmq } },
7390 { 9264 },
7391 { "vmulss",»» { XM, Vex128, EXd } }, 9265 {
7392 { "(bad)",» » { XX } }, 9266 /* VEX_W_0F5A_P_1 */
7393 }, 9267 { "vcvtss2sd",» { XMScalar, VexScalar, EXdScalar } },
7394 9268 },
7395 /* VEX_LEN_59_P_3 */ 9269 {
7396 { 9270 /* VEX_W_0F5A_P_3 */
7397 { "vmulsd",»» { XM, Vex128, EXq } }, 9271 { "vcvtsd2ss",» { XMScalar, VexScalar, EXqScalar } },
7398 { "(bad)",» » { XX } }, 9272 },
7399 }, 9273 {
7400 9274 /* VEX_W_0F5B_P_0 */
7401 /* VEX_LEN_5A_P_1 */ 9275 { "vcvtdq2ps",» { XM, EXx } },
7402 { 9276 },
7403 { "vcvtss2sd",» { XM, Vex128, EXd } }, 9277 {
7404 { "(bad)",» » { XX } }, 9278 /* VEX_W_0F5B_P_1 */
7405 }, 9279 { "vcvttps2dq",» { XM, EXx } },
7406 9280 },
7407 /* VEX_LEN_5A_P_3 */ 9281 {
7408 { 9282 /* VEX_W_0F5B_P_2 */
7409 { "vcvtsd2ss",» { XM, Vex128, EXq } }, 9283 { "vcvtps2dq",» { XM, EXx } },
7410 { "(bad)",» » { XX } }, 9284 },
7411 }, 9285 {
7412 9286 /* VEX_W_0F5C_P_0 */
7413 /* VEX_LEN_5C_P_1 */ 9287 { "vsubps",»» { XM, Vex, EXx } },
7414 { 9288 },
7415 { "vsubss",»» { XM, Vex128, EXd } }, 9289 {
7416 { "(bad)",» » { XX } }, 9290 /* VEX_W_0F5C_P_1 */
7417 }, 9291 { "vsubss",»» { XMScalar, VexScalar, EXdScalar } },
7418 9292 },
7419 /* VEX_LEN_5C_P_3 */ 9293 {
7420 { 9294 /* VEX_W_0F5C_P_2 */
7421 { "vsubsd",»» { XM, Vex128, EXq } }, 9295 { "vsubpd",»» { XM, Vex, EXx } },
7422 { "(bad)",» » { XX } }, 9296 },
7423 }, 9297 {
7424 9298 /* VEX_W_0F5C_P_3 */
7425 /* VEX_LEN_5D_P_1 */ 9299 { "vsubsd",»» { XMScalar, VexScalar, EXqScalar } },
7426 { 9300 },
7427 { "vminss",»» { XM, Vex128, EXd } }, 9301 {
7428 { "(bad)",» » { XX } }, 9302 /* VEX_W_0F5D_P_0 */
7429 }, 9303 { "vminps",»» { XM, Vex, EXx } },
7430 9304 },
7431 /* VEX_LEN_5D_P_3 */ 9305 {
7432 { 9306 /* VEX_W_0F5D_P_1 */
7433 { "vminsd",»» { XM, Vex128, EXq } }, 9307 { "vminss",»» { XMScalar, VexScalar, EXdScalar } },
7434 { "(bad)",» » { XX } }, 9308 },
7435 }, 9309 {
7436 9310 /* VEX_W_0F5D_P_2 */
7437 /* VEX_LEN_5E_P_1 */ 9311 { "vminpd",»» { XM, Vex, EXx } },
7438 { 9312 },
7439 { "vdivss",»» { XM, Vex128, EXd } }, 9313 {
7440 { "(bad)",» » { XX } }, 9314 /* VEX_W_0F5D_P_3 */
7441 }, 9315 { "vminsd",»» { XMScalar, VexScalar, EXqScalar } },
7442 9316 },
7443 /* VEX_LEN_5E_P_3 */ 9317 {
7444 { 9318 /* VEX_W_0F5E_P_0 */
7445 { "vdivsd",»» { XM, Vex128, EXq } }, 9319 { "vdivps",»» { XM, Vex, EXx } },
7446 { "(bad)",» » { XX } }, 9320 },
7447 }, 9321 {
7448 9322 /* VEX_W_0F5E_P_1 */
7449 /* VEX_LEN_5F_P_1 */ 9323 { "vdivss",»» { XMScalar, VexScalar, EXdScalar } },
7450 { 9324 },
7451 { "vmaxss",»» { XM, Vex128, EXd } }, 9325 {
7452 { "(bad)",» » { XX } }, 9326 /* VEX_W_0F5E_P_2 */
7453 }, 9327 { "vdivpd",»» { XM, Vex, EXx } },
7454 9328 },
7455 /* VEX_LEN_5F_P_3 */ 9329 {
7456 { 9330 /* VEX_W_0F5E_P_3 */
7457 { "vmaxsd",»» { XM, Vex128, EXq } }, 9331 { "vdivsd",»» { XMScalar, VexScalar, EXqScalar } },
7458 { "(bad)",» » { XX } }, 9332 },
7459 }, 9333 {
7460 9334 /* VEX_W_0F5F_P_0 */
7461 /* VEX_LEN_60_P_2 */ 9335 { "vmaxps",»» { XM, Vex, EXx } },
7462 { 9336 },
7463 { "vpunpcklbw",» { XM, Vex128, EXx } }, 9337 {
7464 { "(bad)",» » { XX } }, 9338 /* VEX_W_0F5F_P_1 */
7465 }, 9339 { "vmaxss",»» { XMScalar, VexScalar, EXdScalar } },
7466 9340 },
7467 /* VEX_LEN_61_P_2 */ 9341 {
7468 { 9342 /* VEX_W_0F5F_P_2 */
7469 { "vpunpcklwd",» { XM, Vex128, EXx } }, 9343 { "vmaxpd",»» { XM, Vex, EXx } },
7470 { "(bad)",» » { XX } }, 9344 },
7471 }, 9345 {
7472 9346 /* VEX_W_0F5F_P_3 */
7473 /* VEX_LEN_62_P_2 */ 9347 { "vmaxsd",»» { XMScalar, VexScalar, EXqScalar } },
7474 { 9348 },
7475 { "vpunpckldq",» { XM, Vex128, EXx } }, 9349 {
7476 { "(bad)",» » { XX } }, 9350 /* VEX_W_0F60_P_2 */
7477 }, 9351 { "vpunpcklbw",» { XM, Vex, EXx } },
7478 9352 },
7479 /* VEX_LEN_63_P_2 */ 9353 {
7480 { 9354 /* VEX_W_0F61_P_2 */
7481 { "vpacksswb",» { XM, Vex128, EXx } }, 9355 { "vpunpcklwd",» { XM, Vex, EXx } },
7482 { "(bad)",» » { XX } }, 9356 },
7483 }, 9357 {
7484 9358 /* VEX_W_0F62_P_2 */
7485 /* VEX_LEN_64_P_2 */ 9359 { "vpunpckldq",» { XM, Vex, EXx } },
7486 { 9360 },
7487 { "vpcmpgtb",» { XM, Vex128, EXx } }, 9361 {
7488 { "(bad)",» » { XX } }, 9362 /* VEX_W_0F63_P_2 */
7489 }, 9363 { "vpacksswb",» { XM, Vex, EXx } },
7490 9364 },
7491 /* VEX_LEN_65_P_2 */ 9365 {
7492 { 9366 /* VEX_W_0F64_P_2 */
7493 { "vpcmpgtw",» { XM, Vex128, EXx } }, 9367 { "vpcmpgtb",» { XM, Vex, EXx } },
7494 { "(bad)",» » { XX } }, 9368 },
7495 }, 9369 {
7496 9370 /* VEX_W_0F65_P_2 */
7497 /* VEX_LEN_66_P_2 */ 9371 { "vpcmpgtw",» { XM, Vex, EXx } },
7498 { 9372 },
7499 { "vpcmpgtd",» { XM, Vex128, EXx } }, 9373 {
7500 { "(bad)",» » { XX } }, 9374 /* VEX_W_0F66_P_2 */
7501 }, 9375 { "vpcmpgtd",» { XM, Vex, EXx } },
7502 9376 },
7503 /* VEX_LEN_67_P_2 */ 9377 {
7504 { 9378 /* VEX_W_0F67_P_2 */
7505 { "vpackuswb",» { XM, Vex128, EXx } }, 9379 { "vpackuswb",» { XM, Vex, EXx } },
7506 { "(bad)",» » { XX } }, 9380 },
7507 }, 9381 {
7508 9382 /* VEX_W_0F68_P_2 */
7509 /* VEX_LEN_68_P_2 */ 9383 { "vpunpckhbw",» { XM, Vex, EXx } },
7510 { 9384 },
7511 { "vpunpckhbw",» { XM, Vex128, EXx } }, 9385 {
7512 { "(bad)",» » { XX } }, 9386 /* VEX_W_0F69_P_2 */
7513 }, 9387 { "vpunpckhwd",» { XM, Vex, EXx } },
7514 9388 },
7515 /* VEX_LEN_69_P_2 */ 9389 {
7516 { 9390 /* VEX_W_0F6A_P_2 */
7517 { "vpunpckhwd",» { XM, Vex128, EXx } }, 9391 { "vpunpckhdq",» { XM, Vex, EXx } },
7518 { "(bad)",» » { XX } }, 9392 },
7519 }, 9393 {
7520 9394 /* VEX_W_0F6B_P_2 */
7521 /* VEX_LEN_6A_P_2 */ 9395 { "vpackssdw",» { XM, Vex, EXx } },
7522 { 9396 },
7523 { "vpunpckhdq",» { XM, Vex128, EXx } }, 9397 {
7524 { "(bad)",» » { XX } }, 9398 /* VEX_W_0F6C_P_2 */
7525 }, 9399 { "vpunpcklqdq",» { XM, Vex, EXx } },
7526 9400 },
7527 /* VEX_LEN_6B_P_2 */ 9401 {
7528 { 9402 /* VEX_W_0F6D_P_2 */
7529 { "vpackssdw",» { XM, Vex128, EXx } }, 9403 { "vpunpckhqdq",» { XM, Vex, EXx } },
7530 { "(bad)",» » { XX } }, 9404 },
7531 }, 9405 {
7532 9406 /* VEX_W_0F6F_P_1 */
7533 /* VEX_LEN_6C_P_2 */ 9407 { "vmovdqu",» { XM, EXx } },
7534 { 9408 },
7535 { "vpunpcklqdq",» { XM, Vex128, EXx } }, 9409 {
7536 { "(bad)",» » { XX } }, 9410 /* VEX_W_0F6F_P_2 */
7537 }, 9411 { "vmovdqa",» { XM, EXx } },
7538 9412 },
7539 /* VEX_LEN_6D_P_2 */ 9413 {
7540 { 9414 /* VEX_W_0F70_P_1 */
7541 { "vpunpckhqdq",» { XM, Vex128, EXx } },
7542 { "(bad)",» » { XX } },
7543 },
7544
7545 /* VEX_LEN_6E_P_2 */
7546 {
7547 { "vmovK",» » { XM, Edq } },
7548 { "(bad)",» » { XX } },
7549 },
7550
7551 /* VEX_LEN_70_P_1 */
7552 {
7553 { "vpshufhw", { XM, EXx, Ib } }, 9415 { "vpshufhw", { XM, EXx, Ib } },
7554 { "(bad)",» » { XX } }, 9416 },
7555 }, 9417 {
7556 9418 /* VEX_W_0F70_P_2 */
7557 /* VEX_LEN_70_P_2 */
7558 {
7559 { "vpshufd", { XM, EXx, Ib } }, 9419 { "vpshufd", { XM, EXx, Ib } },
7560 { "(bad)",» » { XX } }, 9420 },
7561 }, 9421 {
7562 9422 /* VEX_W_0F70_P_3 */
7563 /* VEX_LEN_70_P_3 */
7564 {
7565 { "vpshuflw", { XM, EXx, Ib } }, 9423 { "vpshuflw", { XM, EXx, Ib } },
7566 { "(bad)",» » { XX } }, 9424 },
7567 }, 9425 {
7568 9426 /* VEX_W_0F71_R_2_P_2 */
7569 /* VEX_LEN_71_R_2_P_2 */ 9427 { "vpsrlw",»» { Vex, XS, Ib } },
7570 { 9428 },
7571 { "vpsrlw",»» { Vex128, XS, Ib } }, 9429 {
7572 { "(bad)",» » { XX } }, 9430 /* VEX_W_0F71_R_4_P_2 */
7573 }, 9431 { "vpsraw",»» { Vex, XS, Ib } },
7574 9432 },
7575 /* VEX_LEN_71_R_4_P_2 */ 9433 {
7576 { 9434 /* VEX_W_0F71_R_6_P_2 */
7577 { "vpsraw",»» { Vex128, XS, Ib } }, 9435 { "vpsllw",»» { Vex, XS, Ib } },
7578 { "(bad)",» » { XX } }, 9436 },
7579 }, 9437 {
7580 9438 /* VEX_W_0F72_R_2_P_2 */
7581 /* VEX_LEN_71_R_6_P_2 */ 9439 { "vpsrld",»» { Vex, XS, Ib } },
7582 { 9440 },
7583 { "vpsllw",»» { Vex128, XS, Ib } }, 9441 {
7584 { "(bad)",» » { XX } }, 9442 /* VEX_W_0F72_R_4_P_2 */
7585 }, 9443 { "vpsrad",»» { Vex, XS, Ib } },
7586 9444 },
7587 /* VEX_LEN_72_R_2_P_2 */ 9445 {
7588 { 9446 /* VEX_W_0F72_R_6_P_2 */
7589 { "vpsrld",»» { Vex128, XS, Ib } }, 9447 { "vpslld",»» { Vex, XS, Ib } },
7590 { "(bad)",» » { XX } }, 9448 },
7591 }, 9449 {
7592 9450 /* VEX_W_0F73_R_2_P_2 */
7593 /* VEX_LEN_72_R_4_P_2 */ 9451 { "vpsrlq",»» { Vex, XS, Ib } },
7594 { 9452 },
7595 { "vpsrad",»» { Vex128, XS, Ib } }, 9453 {
7596 { "(bad)",» » { XX } }, 9454 /* VEX_W_0F73_R_3_P_2 */
7597 }, 9455 { "vpsrldq",» { Vex, XS, Ib } },
7598 9456 },
7599 /* VEX_LEN_72_R_6_P_2 */ 9457 {
7600 { 9458 /* VEX_W_0F73_R_6_P_2 */
7601 { "vpslld",»» { Vex128, XS, Ib } }, 9459 { "vpsllq",»» { Vex, XS, Ib } },
7602 { "(bad)",» » { XX } }, 9460 },
7603 }, 9461 {
7604 9462 /* VEX_W_0F73_R_7_P_2 */
7605 /* VEX_LEN_73_R_2_P_2 */ 9463 { "vpslldq",» { Vex, XS, Ib } },
7606 { 9464 },
7607 { "vpsrlq",»» { Vex128, XS, Ib } }, 9465 {
7608 { "(bad)",» » { XX } }, 9466 /* VEX_W_0F74_P_2 */
7609 }, 9467 { "vpcmpeqb",» { XM, Vex, EXx } },
7610 9468 },
7611 /* VEX_LEN_73_R_3_P_2 */ 9469 {
7612 { 9470 /* VEX_W_0F75_P_2 */
7613 { "vpsrldq",» { Vex128, XS, Ib } }, 9471 { "vpcmpeqw",» { XM, Vex, EXx } },
7614 { "(bad)",» » { XX } }, 9472 },
7615 }, 9473 {
7616 9474 /* VEX_W_0F76_P_2 */
7617 /* VEX_LEN_73_R_6_P_2 */ 9475 { "vpcmpeqd",» { XM, Vex, EXx } },
7618 { 9476 },
7619 { "vpsllq",»» { Vex128, XS, Ib } }, 9477 {
7620 { "(bad)",» » { XX } }, 9478 /* VEX_W_0F77_P_0 */
7621 }, 9479 { "",» » { VZERO } },
7622 9480 },
7623 /* VEX_LEN_73_R_7_P_2 */ 9481 {
7624 { 9482 /* VEX_W_0F7C_P_2 */
7625 { "vpslldq",» { Vex128, XS, Ib } }, 9483 { "vhaddpd",» { XM, Vex, EXx } },
7626 { "(bad)",» » { XX } }, 9484 },
7627 }, 9485 {
7628 9486 /* VEX_W_0F7C_P_3 */
7629 /* VEX_LEN_74_P_2 */ 9487 { "vhaddps",» { XM, Vex, EXx } },
7630 { 9488 },
7631 { "vpcmpeqb",» { XM, Vex128, EXx } }, 9489 {
7632 { "(bad)",» » { XX } }, 9490 /* VEX_W_0F7D_P_2 */
7633 }, 9491 { "vhsubpd",» { XM, Vex, EXx } },
7634 9492 },
7635 /* VEX_LEN_75_P_2 */ 9493 {
7636 { 9494 /* VEX_W_0F7D_P_3 */
7637 { "vpcmpeqw",» { XM, Vex128, EXx } }, 9495 { "vhsubps",» { XM, Vex, EXx } },
7638 { "(bad)",» » { XX } }, 9496 },
7639 }, 9497 {
7640 9498 /* VEX_W_0F7E_P_1 */
7641 /* VEX_LEN_76_P_2 */ 9499 { "vmovq",» » { XMScalar, EXqScalar } },
7642 { 9500 },
7643 { "vpcmpeqd",» { XM, Vex128, EXx } }, 9501 {
7644 { "(bad)",» » { XX } }, 9502 /* VEX_W_0F7F_P_1 */
7645 }, 9503 { "vmovdqu",» { EXxS, XM } },
7646 9504 },
7647 /* VEX_LEN_7E_P_1 */ 9505 {
7648 { 9506 /* VEX_W_0F7F_P_2 */
7649 { "vmovq",» » { XM, EXq } }, 9507 { "vmovdqa",» { EXxS, XM } },
7650 { "(bad)",» » { XX } }, 9508 },
7651 }, 9509 {
7652 9510 /* VEX_W_0FAE_R_2_M_0 */
7653 /* VEX_LEN_7E_P_2 */
7654 {
7655 { "vmovK",» » { Edq, XM } },
7656 { "(bad)",» » { XX } },
7657 },
7658
7659 /* VEX_LEN_AE_R_2_M0 */
7660 {
7661 { "vldmxcsr", { Md } }, 9511 { "vldmxcsr", { Md } },
7662 { "(bad)",» » { XX } }, 9512 },
7663 }, 9513 {
7664 9514 /* VEX_W_0FAE_R_3_M_0 */
7665 /* VEX_LEN_AE_R_3_M0 */
7666 {
7667 { "vstmxcsr", { Md } }, 9515 { "vstmxcsr", { Md } },
7668 { "(bad)",» » { XX } }, 9516 },
7669 }, 9517 {
7670 9518 /* VEX_W_0FC2_P_0 */
7671 /* VEX_LEN_C2_P_1 */ 9519 { "vcmpps",»» { XM, Vex, EXx, VCMP } },
7672 { 9520 },
7673 { "vcmpss",»» { XM, Vex128, EXd, VCMP } }, 9521 {
7674 { "(bad)",» » { XX } }, 9522 /* VEX_W_0FC2_P_1 */
7675 }, 9523 { "vcmpss",»» { XMScalar, VexScalar, EXdScalar, VCMP } },
7676 9524 },
7677 /* VEX_LEN_C2_P_3 */ 9525 {
7678 { 9526 /* VEX_W_0FC2_P_2 */
7679 { "vcmpsd",»» { XM, Vex128, EXq, VCMP } }, 9527 { "vcmppd",»» { XM, Vex, EXx, VCMP } },
7680 { "(bad)",» » { XX } }, 9528 },
7681 }, 9529 {
7682 9530 /* VEX_W_0FC2_P_3 */
7683 /* VEX_LEN_C4_P_2 */ 9531 { "vcmpsd",»» { XMScalar, VexScalar, EXqScalar, VCMP } },
7684 { 9532 },
9533 {
9534 /* VEX_W_0FC4_P_2 */
7685 { "vpinsrw", { XM, Vex128, Edqw, Ib } }, 9535 { "vpinsrw", { XM, Vex128, Edqw, Ib } },
7686 { "(bad)",» » { XX } }, 9536 },
7687 }, 9537 {
7688 9538 /* VEX_W_0FC5_P_2 */
7689 /* VEX_LEN_C5_P_2 */
7690 {
7691 { "vpextrw", { Gdq, XS, Ib } }, 9539 { "vpextrw", { Gdq, XS, Ib } },
7692 { "(bad)",» » { XX } }, 9540 },
7693 }, 9541 {
7694 9542 /* VEX_W_0FD0_P_2 */
7695 /* VEX_LEN_D1_P_2 */ 9543 { "vaddsubpd",» { XM, Vex, EXx } },
7696 { 9544 },
7697 { "vpsrlw",»» { XM, Vex128, EXx } }, 9545 {
7698 { "(bad)",» » { XX } }, 9546 /* VEX_W_0FD0_P_3 */
7699 }, 9547 { "vaddsubps",» { XM, Vex, EXx } },
7700 9548 },
7701 /* VEX_LEN_D2_P_2 */ 9549 {
7702 { 9550 /* VEX_W_0FD1_P_2 */
7703 { "vpsrld",»» { XM, Vex128, EXx } }, 9551 { "vpsrlw",»» { XM, Vex, EXxmm } },
7704 { "(bad)",» » { XX } }, 9552 },
7705 }, 9553 {
7706 9554 /* VEX_W_0FD2_P_2 */
7707 /* VEX_LEN_D3_P_2 */ 9555 { "vpsrld",»» { XM, Vex, EXxmm } },
7708 { 9556 },
7709 { "vpsrlq",»» { XM, Vex128, EXx } }, 9557 {
7710 { "(bad)",» » { XX } }, 9558 /* VEX_W_0FD3_P_2 */
7711 }, 9559 { "vpsrlq",»» { XM, Vex, EXxmm } },
7712 9560 },
7713 /* VEX_LEN_D4_P_2 */ 9561 {
7714 { 9562 /* VEX_W_0FD4_P_2 */
7715 { "vpaddq",»» { XM, Vex128, EXx } }, 9563 { "vpaddq",»» { XM, Vex, EXx } },
7716 { "(bad)",» » { XX } }, 9564 },
7717 }, 9565 {
7718 9566 /* VEX_W_0FD5_P_2 */
7719 /* VEX_LEN_D5_P_2 */ 9567 { "vpmullw",» { XM, Vex, EXx } },
7720 { 9568 },
7721 { "vpmullw",» { XM, Vex128, EXx } }, 9569 {
7722 { "(bad)",» » { XX } }, 9570 /* VEX_W_0FD6_P_2 */
7723 }, 9571 { "vmovq",» » { EXqScalarS, XMScalar } },
7724 9572 },
7725 /* VEX_LEN_D6_P_2 */ 9573 {
7726 { 9574 /* VEX_W_0FD7_P_2_M_1 */
7727 { "vmovq",» » { EXqS, XM } },
7728 { "(bad)",» » { XX } },
7729 },
7730
7731 /* VEX_LEN_D7_P_2_M_1 */
7732 {
7733 { "vpmovmskb", { Gdq, XS } }, 9575 { "vpmovmskb", { Gdq, XS } },
7734 { "(bad)",» » { XX } }, 9576 },
7735 }, 9577 {
7736 9578 /* VEX_W_0FD8_P_2 */
7737 /* VEX_LEN_D8_P_2 */ 9579 { "vpsubusb",» { XM, Vex, EXx } },
7738 { 9580 },
7739 { "vpsubusb",» { XM, Vex128, EXx } }, 9581 {
7740 { "(bad)",» » { XX } }, 9582 /* VEX_W_0FD9_P_2 */
7741 }, 9583 { "vpsubusw",» { XM, Vex, EXx } },
7742 9584 },
7743 /* VEX_LEN_D9_P_2 */ 9585 {
7744 { 9586 /* VEX_W_0FDA_P_2 */
7745 { "vpsubusw",» { XM, Vex128, EXx } }, 9587 { "vpminub",» { XM, Vex, EXx } },
7746 { "(bad)",» » { XX } }, 9588 },
7747 }, 9589 {
7748 9590 /* VEX_W_0FDB_P_2 */
7749 /* VEX_LEN_DA_P_2 */ 9591 { "vpand",» » { XM, Vex, EXx } },
7750 { 9592 },
7751 { "vpminub",» { XM, Vex128, EXx } }, 9593 {
7752 { "(bad)",» » { XX } }, 9594 /* VEX_W_0FDC_P_2 */
7753 }, 9595 { "vpaddusb",» { XM, Vex, EXx } },
7754 9596 },
7755 /* VEX_LEN_DB_P_2 */ 9597 {
7756 { 9598 /* VEX_W_0FDD_P_2 */
7757 { "vpand",» » { XM, Vex128, EXx } }, 9599 { "vpaddusw",» { XM, Vex, EXx } },
7758 { "(bad)",» » { XX } }, 9600 },
7759 }, 9601 {
7760 9602 /* VEX_W_0FDE_P_2 */
7761 /* VEX_LEN_DC_P_2 */ 9603 { "vpmaxub",» { XM, Vex, EXx } },
7762 { 9604 },
7763 { "vpaddusb",» { XM, Vex128, EXx } }, 9605 {
7764 { "(bad)",» » { XX } }, 9606 /* VEX_W_0FDF_P_2 */
7765 }, 9607 { "vpandn",»» { XM, Vex, EXx } },
7766 9608 },
7767 /* VEX_LEN_DD_P_2 */ 9609 {
7768 { 9610 /* VEX_W_0FE0_P_2 */
7769 { "vpaddusw",» { XM, Vex128, EXx } }, 9611 { "vpavgb",»» { XM, Vex, EXx } },
7770 { "(bad)",» » { XX } }, 9612 },
7771 }, 9613 {
7772 9614 /* VEX_W_0FE1_P_2 */
7773 /* VEX_LEN_DE_P_2 */ 9615 { "vpsraw",»» { XM, Vex, EXxmm } },
7774 { 9616 },
7775 { "vpmaxub",» { XM, Vex128, EXx } }, 9617 {
7776 { "(bad)",» » { XX } }, 9618 /* VEX_W_0FE2_P_2 */
7777 }, 9619 { "vpsrad",»» { XM, Vex, EXxmm } },
7778 9620 },
7779 /* VEX_LEN_DF_P_2 */ 9621 {
7780 { 9622 /* VEX_W_0FE3_P_2 */
7781 { "vpandn",»» { XM, Vex128, EXx } }, 9623 { "vpavgw",»» { XM, Vex, EXx } },
7782 { "(bad)",» » { XX } }, 9624 },
7783 }, 9625 {
7784 9626 /* VEX_W_0FE4_P_2 */
7785 /* VEX_LEN_E0_P_2 */ 9627 { "vpmulhuw",» { XM, Vex, EXx } },
7786 { 9628 },
7787 { "vpavgb",»» { XM, Vex128, EXx } }, 9629 {
7788 { "(bad)",» » { XX } }, 9630 /* VEX_W_0FE5_P_2 */
7789 }, 9631 { "vpmulhw",» { XM, Vex, EXx } },
7790 9632 },
7791 /* VEX_LEN_E1_P_2 */ 9633 {
7792 { 9634 /* VEX_W_0FE6_P_1 */
7793 { "vpsraw",»» { XM, Vex128, EXx } }, 9635 { "vcvtdq2pd",» { XM, EXxmmq } },
7794 { "(bad)",» » { XX } }, 9636 },
7795 }, 9637 {
7796 9638 /* VEX_W_0FE6_P_2 */
7797 /* VEX_LEN_E2_P_2 */ 9639 { "vcvttpd2dq%XY",» { XMM, EXx } },
7798 { 9640 },
7799 { "vpsrad",»» { XM, Vex128, EXx } }, 9641 {
7800 { "(bad)",» » { XX } }, 9642 /* VEX_W_0FE6_P_3 */
7801 }, 9643 { "vcvtpd2dq%XY",» { XMM, EXx } },
7802 9644 },
7803 /* VEX_LEN_E3_P_2 */ 9645 {
7804 { 9646 /* VEX_W_0FE7_P_2_M_0 */
7805 { "vpavgw",»» { XM, Vex128, EXx } }, 9647 { "vmovntdq",» { Mx, XM } },
7806 { "(bad)",» » { XX } }, 9648 },
7807 }, 9649 {
7808 9650 /* VEX_W_0FE8_P_2 */
7809 /* VEX_LEN_E4_P_2 */ 9651 { "vpsubsb",» { XM, Vex, EXx } },
7810 { 9652 },
7811 { "vpmulhuw",» { XM, Vex128, EXx } }, 9653 {
7812 { "(bad)",» » { XX } }, 9654 /* VEX_W_0FE9_P_2 */
7813 }, 9655 { "vpsubsw",» { XM, Vex, EXx } },
7814 9656 },
7815 /* VEX_LEN_E5_P_2 */ 9657 {
7816 { 9658 /* VEX_W_0FEA_P_2 */
7817 { "vpmulhw",» { XM, Vex128, EXx } }, 9659 { "vpminsw",» { XM, Vex, EXx } },
7818 { "(bad)",» » { XX } }, 9660 },
7819 }, 9661 {
7820 9662 /* VEX_W_0FEB_P_2 */
7821 /* VEX_LEN_E8_P_2 */ 9663 { "vpor",» » { XM, Vex, EXx } },
7822 { 9664 },
7823 { "vpsubsb",» { XM, Vex128, EXx } }, 9665 {
7824 { "(bad)",» » { XX } }, 9666 /* VEX_W_0FEC_P_2 */
7825 }, 9667 { "vpaddsb",» { XM, Vex, EXx } },
7826 9668 },
7827 /* VEX_LEN_E9_P_2 */ 9669 {
7828 { 9670 /* VEX_W_0FED_P_2 */
7829 { "vpsubsw",» { XM, Vex128, EXx } }, 9671 { "vpaddsw",» { XM, Vex, EXx } },
7830 { "(bad)",» » { XX } }, 9672 },
7831 }, 9673 {
7832 9674 /* VEX_W_0FEE_P_2 */
7833 /* VEX_LEN_EA_P_2 */ 9675 { "vpmaxsw",» { XM, Vex, EXx } },
7834 { 9676 },
7835 { "vpminsw",» { XM, Vex128, EXx } }, 9677 {
7836 { "(bad)",» » { XX } }, 9678 /* VEX_W_0FEF_P_2 */
7837 }, 9679 { "vpxor",» » { XM, Vex, EXx } },
7838 9680 },
7839 /* VEX_LEN_EB_P_2 */ 9681 {
7840 { 9682 /* VEX_W_0FF0_P_3_M_0 */
7841 { "vpor",» » { XM, Vex128, EXx } }, 9683 { "vlddqu",»» { XM, M } },
7842 { "(bad)",» » { XX } }, 9684 },
7843 }, 9685 {
7844 9686 /* VEX_W_0FF1_P_2 */
7845 /* VEX_LEN_EC_P_2 */ 9687 { "vpsllw",»» { XM, Vex, EXxmm } },
7846 { 9688 },
7847 { "vpaddsb",» { XM, Vex128, EXx } }, 9689 {
7848 { "(bad)",» » { XX } }, 9690 /* VEX_W_0FF2_P_2 */
7849 }, 9691 { "vpslld",»» { XM, Vex, EXxmm } },
7850 9692 },
7851 /* VEX_LEN_ED_P_2 */ 9693 {
7852 { 9694 /* VEX_W_0FF3_P_2 */
7853 { "vpaddsw",» { XM, Vex128, EXx } }, 9695 { "vpsllq",»» { XM, Vex, EXxmm } },
7854 { "(bad)",» » { XX } }, 9696 },
7855 }, 9697 {
7856 9698 /* VEX_W_0FF4_P_2 */
7857 /* VEX_LEN_EE_P_2 */ 9699 { "vpmuludq",» { XM, Vex, EXx } },
7858 { 9700 },
7859 { "vpmaxsw",» { XM, Vex128, EXx } }, 9701 {
7860 { "(bad)",» » { XX } }, 9702 /* VEX_W_0FF5_P_2 */
7861 }, 9703 { "vpmaddwd",» { XM, Vex, EXx } },
7862 9704 },
7863 /* VEX_LEN_EF_P_2 */ 9705 {
7864 { 9706 /* VEX_W_0FF6_P_2 */
7865 { "vpxor",» » { XM, Vex128, EXx } }, 9707 { "vpsadbw",» { XM, Vex, EXx } },
7866 { "(bad)",» » { XX } }, 9708 },
7867 }, 9709 {
7868 9710 /* VEX_W_0FF7_P_2 */
7869 /* VEX_LEN_F1_P_2 */
7870 {
7871 { "vpsllw",»» { XM, Vex128, EXx } },
7872 { "(bad)",» » { XX } },
7873 },
7874
7875 /* VEX_LEN_F2_P_2 */
7876 {
7877 { "vpslld",»» { XM, Vex128, EXx } },
7878 { "(bad)",» » { XX } },
7879 },
7880
7881 /* VEX_LEN_F3_P_2 */
7882 {
7883 { "vpsllq",»» { XM, Vex128, EXx } },
7884 { "(bad)",» » { XX } },
7885 },
7886
7887 /* VEX_LEN_F4_P_2 */
7888 {
7889 { "vpmuludq",» { XM, Vex128, EXx } },
7890 { "(bad)",» » { XX } },
7891 },
7892
7893 /* VEX_LEN_F5_P_2 */
7894 {
7895 { "vpmaddwd",» { XM, Vex128, EXx } },
7896 { "(bad)",» » { XX } },
7897 },
7898
7899 /* VEX_LEN_F6_P_2 */
7900 {
7901 { "vpsadbw",» { XM, Vex128, EXx } },
7902 { "(bad)",» » { XX } },
7903 },
7904
7905 /* VEX_LEN_F7_P_2 */
7906 {
7907 { "vmaskmovdqu", { XM, XS } }, 9711 { "vmaskmovdqu", { XM, XS } },
7908 { "(bad)",» » { XX } }, 9712 },
7909 }, 9713 {
7910 9714 /* VEX_W_0FF8_P_2 */
7911 /* VEX_LEN_F8_P_2 */ 9715 { "vpsubb",»» { XM, Vex, EXx } },
7912 { 9716 },
7913 { "vpsubb",»» { XM, Vex128, EXx } }, 9717 {
7914 { "(bad)",» » { XX } }, 9718 /* VEX_W_0FF9_P_2 */
7915 }, 9719 { "vpsubw",»» { XM, Vex, EXx } },
7916 9720 },
7917 /* VEX_LEN_F9_P_2 */ 9721 {
7918 { 9722 /* VEX_W_0FFA_P_2 */
7919 { "vpsubw",»» { XM, Vex128, EXx } }, 9723 { "vpsubd",»» { XM, Vex, EXx } },
7920 { "(bad)",» » { XX } }, 9724 },
7921 }, 9725 {
7922 9726 /* VEX_W_0FFB_P_2 */
7923 /* VEX_LEN_FA_P_2 */ 9727 { "vpsubq",»» { XM, Vex, EXx } },
7924 { 9728 },
7925 { "vpsubd",»» { XM, Vex128, EXx } }, 9729 {
7926 { "(bad)",» » { XX } }, 9730 /* VEX_W_0FFC_P_2 */
7927 }, 9731 { "vpaddb",»» { XM, Vex, EXx } },
7928 9732 },
7929 /* VEX_LEN_FB_P_2 */ 9733 {
7930 { 9734 /* VEX_W_0FFD_P_2 */
7931 { "vpsubq",»» { XM, Vex128, EXx } }, 9735 { "vpaddw",»» { XM, Vex, EXx } },
7932 { "(bad)",» » { XX } }, 9736 },
7933 }, 9737 {
7934 9738 /* VEX_W_0FFE_P_2 */
7935 /* VEX_LEN_FC_P_2 */ 9739 { "vpaddd",»» { XM, Vex, EXx } },
7936 { 9740 },
7937 { "vpaddb",»» { XM, Vex128, EXx } }, 9741 {
7938 { "(bad)",» » { XX } }, 9742 /* VEX_W_0F3800_P_2 */
7939 }, 9743 { "vpshufb",» { XM, Vex, EXx } },
7940 9744 },
7941 /* VEX_LEN_FD_P_2 */ 9745 {
7942 { 9746 /* VEX_W_0F3801_P_2 */
7943 { "vpaddw",»» { XM, Vex128, EXx } }, 9747 { "vphaddw",» { XM, Vex, EXx } },
7944 { "(bad)",» » { XX } }, 9748 },
7945 }, 9749 {
7946 9750 /* VEX_W_0F3802_P_2 */
7947 /* VEX_LEN_FE_P_2 */ 9751 { "vphaddd",» { XM, Vex, EXx } },
7948 { 9752 },
7949 { "vpaddd",»» { XM, Vex128, EXx } }, 9753 {
7950 { "(bad)",» » { XX } }, 9754 /* VEX_W_0F3803_P_2 */
7951 }, 9755 { "vphaddsw",» { XM, Vex, EXx } },
7952 9756 },
7953 /* VEX_LEN_3800_P_2 */ 9757 {
7954 { 9758 /* VEX_W_0F3804_P_2 */
7955 { "vpshufb",» { XM, Vex128, EXx } }, 9759 { "vpmaddubsw",» { XM, Vex, EXx } },
7956 { "(bad)",» » { XX } }, 9760 },
7957 }, 9761 {
7958 9762 /* VEX_W_0F3805_P_2 */
7959 /* VEX_LEN_3801_P_2 */ 9763 { "vphsubw",» { XM, Vex, EXx } },
7960 { 9764 },
7961 { "vphaddw",» { XM, Vex128, EXx } }, 9765 {
7962 { "(bad)",» » { XX } }, 9766 /* VEX_W_0F3806_P_2 */
7963 }, 9767 { "vphsubd",» { XM, Vex, EXx } },
7964 9768 },
7965 /* VEX_LEN_3802_P_2 */ 9769 {
7966 { 9770 /* VEX_W_0F3807_P_2 */
7967 { "vphaddd",» { XM, Vex128, EXx } }, 9771 { "vphsubsw",» { XM, Vex, EXx } },
7968 { "(bad)",» » { XX } }, 9772 },
7969 }, 9773 {
7970 9774 /* VEX_W_0F3808_P_2 */
7971 /* VEX_LEN_3803_P_2 */ 9775 { "vpsignb",» { XM, Vex, EXx } },
7972 { 9776 },
7973 { "vphaddsw",» { XM, Vex128, EXx } }, 9777 {
7974 { "(bad)",» » { XX } }, 9778 /* VEX_W_0F3809_P_2 */
7975 }, 9779 { "vpsignw",» { XM, Vex, EXx } },
7976 9780 },
7977 /* VEX_LEN_3804_P_2 */ 9781 {
7978 { 9782 /* VEX_W_0F380A_P_2 */
7979 { "vpmaddubsw",» { XM, Vex128, EXx } }, 9783 { "vpsignd",» { XM, Vex, EXx } },
7980 { "(bad)",» » { XX } }, 9784 },
7981 }, 9785 {
7982 9786 /* VEX_W_0F380B_P_2 */
7983 /* VEX_LEN_3805_P_2 */ 9787 { "vpmulhrsw",» { XM, Vex, EXx } },
7984 { 9788 },
7985 { "vphsubw",» { XM, Vex128, EXx } }, 9789 {
7986 { "(bad)",» » { XX } }, 9790 /* VEX_W_0F380C_P_2 */
7987 }, 9791 { "vpermilps",» { XM, Vex, EXx } },
7988 9792 },
7989 /* VEX_LEN_3806_P_2 */ 9793 {
7990 { 9794 /* VEX_W_0F380D_P_2 */
7991 { "vphsubd",» { XM, Vex128, EXx } }, 9795 { "vpermilpd",» { XM, Vex, EXx } },
7992 { "(bad)",» » { XX } }, 9796 },
7993 }, 9797 {
7994 9798 /* VEX_W_0F380E_P_2 */
7995 /* VEX_LEN_3807_P_2 */ 9799 { "vtestps",» { XM, EXx } },
7996 { 9800 },
7997 { "vphsubsw",» { XM, Vex128, EXx } }, 9801 {
7998 { "(bad)",» » { XX } }, 9802 /* VEX_W_0F380F_P_2 */
7999 }, 9803 { "vtestpd",» { XM, EXx } },
8000 9804 },
8001 /* VEX_LEN_3808_P_2 */ 9805 {
8002 { 9806 /* VEX_W_0F3816_P_2 */
8003 { "vpsignb",» { XM, Vex128, EXx } }, 9807 { "vpermps",» { XM, Vex, EXx } },
8004 { "(bad)",» » { XX } }, 9808 },
8005 }, 9809 {
8006 9810 /* VEX_W_0F3817_P_2 */
8007 /* VEX_LEN_3809_P_2 */ 9811 { "vptest",»» { XM, EXx } },
8008 { 9812 },
8009 { "vpsignw",» { XM, Vex128, EXx } }, 9813 {
8010 { "(bad)",» » { XX } }, 9814 /* VEX_W_0F3818_P_2 */
8011 }, 9815 { "vbroadcastss",» { XM, EXxmm_md } },
8012 9816 },
8013 /* VEX_LEN_380A_P_2 */ 9817 {
8014 { 9818 /* VEX_W_0F3819_P_2 */
8015 { "vpsignd",» { XM, Vex128, EXx } }, 9819 { "vbroadcastsd",» { XM, EXxmm_mq } },
8016 { "(bad)",» » { XX } }, 9820 },
8017 }, 9821 {
8018 9822 /* VEX_W_0F381A_P_2_M_0 */
8019 /* VEX_LEN_380B_P_2 */
8020 {
8021 { "vpmulhrsw",» { XM, Vex128, EXx } },
8022 { "(bad)",» » { XX } },
8023 },
8024
8025 /* VEX_LEN_3819_P_2_M_0 */
8026 {
8027 { "(bad)",» » { XX } },
8028 { "vbroadcastsd",» { XM, Mq } },
8029 },
8030
8031 /* VEX_LEN_381A_P_2_M_0 */
8032 {
8033 { "(bad)",» » { XX } },
8034 { "vbroadcastf128", { XM, Mxmm } }, 9823 { "vbroadcastf128", { XM, Mxmm } },
8035 }, 9824 },
8036 9825 {
8037 /* VEX_LEN_381C_P_2 */ 9826 /* VEX_W_0F381C_P_2 */
8038 {
8039 { "vpabsb", { XM, EXx } }, 9827 { "vpabsb", { XM, EXx } },
8040 { "(bad)",» » { XX } }, 9828 },
8041 }, 9829 {
8042 9830 /* VEX_W_0F381D_P_2 */
8043 /* VEX_LEN_381D_P_2 */
8044 {
8045 { "vpabsw", { XM, EXx } }, 9831 { "vpabsw", { XM, EXx } },
8046 { "(bad)",» » { XX } }, 9832 },
8047 }, 9833 {
8048 9834 /* VEX_W_0F381E_P_2 */
8049 /* VEX_LEN_381E_P_2 */
8050 {
8051 { "vpabsd", { XM, EXx } }, 9835 { "vpabsd", { XM, EXx } },
8052 { "(bad)",» » { XX } }, 9836 },
8053 }, 9837 {
8054 9838 /* VEX_W_0F3820_P_2 */
8055 /* VEX_LEN_3820_P_2 */ 9839 { "vpmovsxbw",» { XM, EXxmmq } },
8056 { 9840 },
8057 { "vpmovsxbw",» { XM, EXq } }, 9841 {
8058 { "(bad)",» » { XX } }, 9842 /* VEX_W_0F3821_P_2 */
8059 }, 9843 { "vpmovsxbd",» { XM, EXxmmqd } },
8060 9844 },
8061 /* VEX_LEN_3821_P_2 */ 9845 {
8062 { 9846 /* VEX_W_0F3822_P_2 */
8063 { "vpmovsxbd",» { XM, EXd } }, 9847 { "vpmovsxbq",» { XM, EXxmmdw } },
8064 { "(bad)",» » { XX } }, 9848 },
8065 }, 9849 {
8066 9850 /* VEX_W_0F3823_P_2 */
8067 /* VEX_LEN_3822_P_2 */ 9851 { "vpmovsxwd",» { XM, EXxmmq } },
8068 { 9852 },
8069 { "vpmovsxbq",» { XM, EXw } }, 9853 {
8070 { "(bad)",» » { XX } }, 9854 /* VEX_W_0F3824_P_2 */
8071 }, 9855 { "vpmovsxwq",» { XM, EXxmmqd } },
8072 9856 },
8073 /* VEX_LEN_3823_P_2 */ 9857 {
8074 { 9858 /* VEX_W_0F3825_P_2 */
8075 { "vpmovsxwd",» { XM, EXq } }, 9859 { "vpmovsxdq",» { XM, EXxmmq } },
8076 { "(bad)",» » { XX } }, 9860 },
8077 }, 9861 {
8078 9862 /* VEX_W_0F3828_P_2 */
8079 /* VEX_LEN_3824_P_2 */ 9863 { "vpmuldq",» { XM, Vex, EXx } },
8080 { 9864 },
8081 { "vpmovsxwq",» { XM, EXd } }, 9865 {
8082 { "(bad)",» » { XX } }, 9866 /* VEX_W_0F3829_P_2 */
8083 }, 9867 { "vpcmpeqq",» { XM, Vex, EXx } },
8084 9868 },
8085 /* VEX_LEN_3825_P_2 */ 9869 {
8086 { 9870 /* VEX_W_0F382A_P_2_M_0 */
8087 { "vpmovsxdq",» { XM, EXq } },
8088 { "(bad)",» » { XX } },
8089 },
8090
8091 /* VEX_LEN_3828_P_2 */
8092 {
8093 { "vpmuldq",» { XM, Vex128, EXx } },
8094 { "(bad)",» » { XX } },
8095 },
8096
8097 /* VEX_LEN_3829_P_2 */
8098 {
8099 { "vpcmpeqq",» { XM, Vex128, EXx } },
8100 { "(bad)",» » { XX } },
8101 },
8102
8103 /* VEX_LEN_382A_P_2_M_0 */
8104 {
8105 { "vmovntdqa", { XM, Mx } }, 9871 { "vmovntdqa", { XM, Mx } },
8106 { "(bad)",» » { XX } }, 9872 },
8107 }, 9873 {
8108 9874 /* VEX_W_0F382B_P_2 */
8109 /* VEX_LEN_382B_P_2 */ 9875 { "vpackusdw",» { XM, Vex, EXx } },
8110 { 9876 },
8111 { "vpackusdw",» { XM, Vex128, EXx } }, 9877 {
8112 { "(bad)",» » { XX } }, 9878 /* VEX_W_0F382C_P_2_M_0 */
8113 }, 9879 { "vmaskmovps",» { XM, Vex, Mx } },
8114 9880 },
8115 /* VEX_LEN_3830_P_2 */ 9881 {
8116 { 9882 /* VEX_W_0F382D_P_2_M_0 */
8117 { "vpmovzxbw",» { XM, EXq } }, 9883 { "vmaskmovpd",» { XM, Vex, Mx } },
8118 { "(bad)",» » { XX } }, 9884 },
8119 }, 9885 {
8120 9886 /* VEX_W_0F382E_P_2_M_0 */
8121 /* VEX_LEN_3831_P_2 */ 9887 { "vmaskmovps",» { Mx, Vex, XM } },
8122 { 9888 },
8123 { "vpmovzxbd",» { XM, EXd } }, 9889 {
8124 { "(bad)",» » { XX } }, 9890 /* VEX_W_0F382F_P_2_M_0 */
8125 }, 9891 { "vmaskmovpd",» { Mx, Vex, XM } },
8126 9892 },
8127 /* VEX_LEN_3832_P_2 */ 9893 {
8128 { 9894 /* VEX_W_0F3830_P_2 */
8129 { "vpmovzxbq",» { XM, EXw } }, 9895 { "vpmovzxbw",» { XM, EXxmmq } },
8130 { "(bad)",» » { XX } }, 9896 },
8131 }, 9897 {
8132 9898 /* VEX_W_0F3831_P_2 */
8133 /* VEX_LEN_3833_P_2 */ 9899 { "vpmovzxbd",» { XM, EXxmmqd } },
8134 { 9900 },
8135 { "vpmovzxwd",» { XM, EXq } }, 9901 {
8136 { "(bad)",» » { XX } }, 9902 /* VEX_W_0F3832_P_2 */
8137 }, 9903 { "vpmovzxbq",» { XM, EXxmmdw } },
8138 9904 },
8139 /* VEX_LEN_3834_P_2 */ 9905 {
8140 { 9906 /* VEX_W_0F3833_P_2 */
8141 { "vpmovzxwq",» { XM, EXd } }, 9907 { "vpmovzxwd",» { XM, EXxmmq } },
8142 { "(bad)",» » { XX } }, 9908 },
8143 }, 9909 {
8144 9910 /* VEX_W_0F3834_P_2 */
8145 /* VEX_LEN_3835_P_2 */ 9911 { "vpmovzxwq",» { XM, EXxmmqd } },
8146 { 9912 },
8147 { "vpmovzxdq",» { XM, EXq } }, 9913 {
8148 { "(bad)",» » { XX } }, 9914 /* VEX_W_0F3835_P_2 */
8149 }, 9915 { "vpmovzxdq",» { XM, EXxmmq } },
8150 9916 },
8151 /* VEX_LEN_3837_P_2 */ 9917 {
8152 { 9918 /* VEX_W_0F3836_P_2 */
8153 { "vpcmpgtq",» { XM, Vex128, EXx } }, 9919 { "vpermd",»» { XM, Vex, EXx } },
8154 { "(bad)",» » { XX } }, 9920 },
8155 }, 9921 {
8156 9922 /* VEX_W_0F3837_P_2 */
8157 /* VEX_LEN_3838_P_2 */ 9923 { "vpcmpgtq",» { XM, Vex, EXx } },
8158 { 9924 },
8159 { "vpminsb",» { XM, Vex128, EXx } }, 9925 {
8160 { "(bad)",» » { XX } }, 9926 /* VEX_W_0F3838_P_2 */
8161 }, 9927 { "vpminsb",» { XM, Vex, EXx } },
8162 9928 },
8163 /* VEX_LEN_3839_P_2 */ 9929 {
8164 { 9930 /* VEX_W_0F3839_P_2 */
8165 { "vpminsd",» { XM, Vex128, EXx } }, 9931 { "vpminsd",» { XM, Vex, EXx } },
8166 { "(bad)",» » { XX } }, 9932 },
8167 }, 9933 {
8168 9934 /* VEX_W_0F383A_P_2 */
8169 /* VEX_LEN_383A_P_2 */ 9935 { "vpminuw",» { XM, Vex, EXx } },
8170 { 9936 },
8171 { "vpminuw",» { XM, Vex128, EXx } }, 9937 {
8172 { "(bad)",» » { XX } }, 9938 /* VEX_W_0F383B_P_2 */
8173 }, 9939 { "vpminud",» { XM, Vex, EXx } },
8174 9940 },
8175 /* VEX_LEN_383B_P_2 */ 9941 {
8176 { 9942 /* VEX_W_0F383C_P_2 */
8177 { "vpminud",» { XM, Vex128, EXx } }, 9943 { "vpmaxsb",» { XM, Vex, EXx } },
8178 { "(bad)",» » { XX } }, 9944 },
8179 }, 9945 {
8180 9946 /* VEX_W_0F383D_P_2 */
8181 /* VEX_LEN_383C_P_2 */ 9947 { "vpmaxsd",» { XM, Vex, EXx } },
8182 { 9948 },
8183 { "vpmaxsb",» { XM, Vex128, EXx } }, 9949 {
8184 { "(bad)",» » { XX } }, 9950 /* VEX_W_0F383E_P_2 */
8185 }, 9951 { "vpmaxuw",» { XM, Vex, EXx } },
8186 9952 },
8187 /* VEX_LEN_383D_P_2 */ 9953 {
8188 { 9954 /* VEX_W_0F383F_P_2 */
8189 { "vpmaxsd",» { XM, Vex128, EXx } }, 9955 { "vpmaxud",» { XM, Vex, EXx } },
8190 { "(bad)",» » { XX } }, 9956 },
8191 }, 9957 {
8192 9958 /* VEX_W_0F3840_P_2 */
8193 /* VEX_LEN_383E_P_2 */ 9959 { "vpmulld",» { XM, Vex, EXx } },
8194 { 9960 },
8195 { "vpmaxuw",» { XM, Vex128, EXx } }, 9961 {
8196 { "(bad)",» » { XX } }, 9962 /* VEX_W_0F3841_P_2 */
8197 },
8198
8199 /* VEX_LEN_383F_P_2 */
8200 {
8201 { "vpmaxud",» { XM, Vex128, EXx } },
8202 { "(bad)",» » { XX } },
8203 },
8204
8205 /* VEX_LEN_3840_P_2 */
8206 {
8207 { "vpmulld",» { XM, Vex128, EXx } },
8208 { "(bad)",» » { XX } },
8209 },
8210
8211 /* VEX_LEN_3841_P_2 */
8212 {
8213 { "vphminposuw", { XM, EXx } }, 9963 { "vphminposuw", { XM, EXx } },
8214 { "(bad)",» » { XX } }, 9964 },
8215 }, 9965 {
8216 9966 /* VEX_W_0F3846_P_2 */
8217 /* VEX_LEN_38DB_P_2 */ 9967 { "vpsravd",» { XM, Vex, EXx } },
8218 { 9968 },
9969 {
9970 /* VEX_W_0F3858_P_2 */
9971 { "vpbroadcastd", { XM, EXxmm_md } },
9972 },
9973 {
9974 /* VEX_W_0F3859_P_2 */
9975 { "vpbroadcastq",» { XM, EXxmm_mq } },
9976 },
9977 {
9978 /* VEX_W_0F385A_P_2_M_0 */
9979 { "vbroadcasti128", { XM, Mxmm } },
9980 },
9981 {
9982 /* VEX_W_0F3878_P_2 */
9983 { "vpbroadcastb",» { XM, EXxmm_mb } },
9984 },
9985 {
9986 /* VEX_W_0F3879_P_2 */
9987 { "vpbroadcastw",» { XM, EXxmm_mw } },
9988 },
9989 {
9990 /* VEX_W_0F38DB_P_2 */
8219 { "vaesimc", { XM, EXx } }, 9991 { "vaesimc", { XM, EXx } },
8220 { "(bad)",» » { XX } }, 9992 },
8221 }, 9993 {
8222 9994 /* VEX_W_0F38DC_P_2 */
8223 /* VEX_LEN_38DC_P_2 */
8224 {
8225 { "vaesenc", { XM, Vex128, EXx } }, 9995 { "vaesenc", { XM, Vex128, EXx } },
8226 { "(bad)",» » { XX } }, 9996 },
8227 }, 9997 {
8228 9998 /* VEX_W_0F38DD_P_2 */
8229 /* VEX_LEN_38DD_P_2 */
8230 {
8231 { "vaesenclast", { XM, Vex128, EXx } }, 9999 { "vaesenclast", { XM, Vex128, EXx } },
8232 { "(bad)",» » { XX } }, 10000 },
8233 }, 10001 {
8234 10002 /* VEX_W_0F38DE_P_2 */
8235 /* VEX_LEN_38DE_P_2 */
8236 {
8237 { "vaesdec", { XM, Vex128, EXx } }, 10003 { "vaesdec", { XM, Vex128, EXx } },
8238 { "(bad)",» » { XX } }, 10004 },
8239 }, 10005 {
8240 10006 /* VEX_W_0F38DF_P_2 */
8241 /* VEX_LEN_38DF_P_2 */
8242 {
8243 { "vaesdeclast", { XM, Vex128, EXx } }, 10007 { "vaesdeclast", { XM, Vex128, EXx } },
8244 { "(bad)",» » { XX } }, 10008 },
8245 }, 10009 {
8246 10010 /* VEX_W_0F3A00_P_2 */
8247 /* VEX_LEN_3A06_P_2 */ 10011 { Bad_Opcode },
8248 { 10012 { "vpermq",»» { XM, EXx, Ib } },
8249 { "(bad)",» » { XX } }, 10013 },
10014 {
10015 /* VEX_W_0F3A01_P_2 */
10016 { Bad_Opcode },
10017 { "vpermpd",» { XM, EXx, Ib } },
10018 },
10019 {
10020 /* VEX_W_0F3A02_P_2 */
10021 { "vpblendd",» { XM, Vex, EXx, Ib } },
10022 },
10023 {
10024 /* VEX_W_0F3A04_P_2 */
10025 { "vpermilps",» { XM, EXx, Ib } },
10026 },
10027 {
10028 /* VEX_W_0F3A05_P_2 */
10029 { "vpermilpd",» { XM, EXx, Ib } },
10030 },
10031 {
10032 /* VEX_W_0F3A06_P_2 */
8250 { "vperm2f128", { XM, Vex256, EXx, Ib } }, 10033 { "vperm2f128", { XM, Vex256, EXx, Ib } },
8251 }, 10034 },
8252 10035 {
8253 /* VEX_LEN_3A0A_P_2 */ 10036 /* VEX_W_0F3A08_P_2 */
8254 { 10037 { "vroundps",» { XM, EXx, Ib } },
8255 { "vroundss",» { XM, Vex128, EXd, Ib } }, 10038 },
8256 { "(bad)",» » { XX } }, 10039 {
8257 }, 10040 /* VEX_W_0F3A09_P_2 */
8258 10041 { "vroundpd",» { XM, EXx, Ib } },
8259 /* VEX_LEN_3A0B_P_2 */ 10042 },
8260 { 10043 {
8261 { "vroundsd",» { XM, Vex128, EXq, Ib } }, 10044 /* VEX_W_0F3A0A_P_2 */
8262 { "(bad)",» » { XX } }, 10045 { "vroundss",» { XMScalar, VexScalar, EXdScalar, Ib } },
8263 }, 10046 },
8264 10047 {
8265 /* VEX_LEN_3A0E_P_2 */ 10048 /* VEX_W_0F3A0B_P_2 */
8266 { 10049 { "vroundsd",» { XMScalar, VexScalar, EXqScalar, Ib } },
8267 { "vpblendw",» { XM, Vex128, EXx, Ib } }, 10050 },
8268 { "(bad)",» » { XX } }, 10051 {
8269 }, 10052 /* VEX_W_0F3A0C_P_2 */
8270 10053 { "vblendps",» { XM, Vex, EXx, Ib } },
8271 /* VEX_LEN_3A0F_P_2 */ 10054 },
8272 { 10055 {
8273 { "vpalignr",» { XM, Vex128, EXx, Ib } }, 10056 /* VEX_W_0F3A0D_P_2 */
8274 { "(bad)",» » { XX } }, 10057 { "vblendpd",» { XM, Vex, EXx, Ib } },
8275 }, 10058 },
8276 10059 {
8277 /* VEX_LEN_3A14_P_2 */ 10060 /* VEX_W_0F3A0E_P_2 */
8278 { 10061 { "vpblendw",» { XM, Vex, EXx, Ib } },
10062 },
10063 {
10064 /* VEX_W_0F3A0F_P_2 */
10065 { "vpalignr",» { XM, Vex, EXx, Ib } },
10066 },
10067 {
10068 /* VEX_W_0F3A14_P_2 */
8279 { "vpextrb", { Edqb, XM, Ib } }, 10069 { "vpextrb", { Edqb, XM, Ib } },
8280 { "(bad)",» » { XX } }, 10070 },
8281 }, 10071 {
8282 10072 /* VEX_W_0F3A15_P_2 */
8283 /* VEX_LEN_3A15_P_2 */
8284 {
8285 { "vpextrw", { Edqw, XM, Ib } }, 10073 { "vpextrw", { Edqw, XM, Ib } },
8286 { "(bad)",» » { XX } }, 10074 },
8287 }, 10075 {
8288 10076 /* VEX_W_0F3A18_P_2 */
8289 /* VEX_LEN_3A16_P_2 */
8290 {
8291 { "vpextrK",» { Edq, XM, Ib } },
8292 { "(bad)",» » { XX } },
8293 },
8294
8295 /* VEX_LEN_3A17_P_2 */
8296 {
8297 { "vextractps",» { Edqd, XM, Ib } },
8298 { "(bad)",» » { XX } },
8299 },
8300
8301 /* VEX_LEN_3A18_P_2 */
8302 {
8303 { "(bad)",» » { XX } },
8304 { "vinsertf128", { XM, Vex256, EXxmm, Ib } }, 10077 { "vinsertf128", { XM, Vex256, EXxmm, Ib } },
8305 }, 10078 },
8306 10079 {
8307 /* VEX_LEN_3A19_P_2 */ 10080 /* VEX_W_0F3A19_P_2 */
8308 {
8309 { "(bad)",» » { XX } },
8310 { "vextractf128", { EXxmm, XM, Ib } }, 10081 { "vextractf128", { EXxmm, XM, Ib } },
8311 }, 10082 },
8312 10083 {
8313 /* VEX_LEN_3A20_P_2 */ 10084 /* VEX_W_0F3A20_P_2 */
8314 {
8315 { "vpinsrb", { XM, Vex128, Edqb, Ib } }, 10085 { "vpinsrb", { XM, Vex128, Edqb, Ib } },
8316 { "(bad)",» » { XX } }, 10086 },
8317 }, 10087 {
8318 10088 /* VEX_W_0F3A21_P_2 */
8319 /* VEX_LEN_3A21_P_2 */
8320 {
8321 { "vinsertps", { XM, Vex128, EXd, Ib } }, 10089 { "vinsertps", { XM, Vex128, EXd, Ib } },
8322 { "(bad)",» » { XX } }, 10090 },
8323 }, 10091 {
8324 10092 /* VEX_W_0F3A38_P_2 */
8325 /* VEX_LEN_3A22_P_2 */ 10093 { "vinserti128",» { XM, Vex256, EXxmm, Ib } },
8326 { 10094 },
8327 { "vpinsrK",» { XM, Vex128, Edq, Ib } }, 10095 {
8328 { "(bad)",» » { XX } }, 10096 /* VEX_W_0F3A39_P_2 */
8329 }, 10097 { "vextracti128",» { EXxmm, XM, Ib } },
8330 10098 },
8331 /* VEX_LEN_3A41_P_2 */ 10099 {
8332 { 10100 /* VEX_W_0F3A40_P_2 */
10101 { "vdpps",» » { XM, Vex, EXx, Ib } },
10102 },
10103 {
10104 /* VEX_W_0F3A41_P_2 */
8333 { "vdppd", { XM, Vex128, EXx, Ib } }, 10105 { "vdppd", { XM, Vex128, EXx, Ib } },
8334 { "(bad)",» » { XX } }, 10106 },
8335 }, 10107 {
8336 10108 /* VEX_W_0F3A42_P_2 */
8337 /* VEX_LEN_3A42_P_2 */ 10109 { "vmpsadbw",» { XM, Vex, EXx, Ib } },
8338 { 10110 },
8339 { "vmpsadbw",» { XM, Vex128, EXx, Ib } }, 10111 {
8340 { "(bad)",» » { XX } }, 10112 /* VEX_W_0F3A44_P_2 */
8341 },
8342
8343 /* VEX_LEN_3A44_P_2 */
8344 {
8345 { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL } }, 10113 { "vpclmulqdq", { XM, Vex128, EXx, PCLMUL } },
8346 { "(bad)",» » { XX } }, 10114 },
8347 }, 10115 {
8348 10116 /* VEX_W_0F3A46_P_2 */
8349 /* VEX_LEN_3A4C_P_2 */ 10117 { "vperm2i128",» { XM, Vex256, EXx, Ib } },
8350 { 10118 },
8351 { "vpblendvb",» { XM, Vex128, EXx, XMVexI4 } }, 10119 {
8352 { "(bad)",» » { XX } }, 10120 /* VEX_W_0F3A48_P_2 */
8353 }, 10121 { "vpermil2ps",» { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
8354 10122 { "vpermil2ps",» { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
8355 /* VEX_LEN_3A60_P_2 */ 10123 },
8356 { 10124 {
10125 /* VEX_W_0F3A49_P_2 */
10126 { "vpermil2pd",» { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
10127 { "vpermil2pd",» { XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
10128 },
10129 {
10130 /* VEX_W_0F3A4A_P_2 */
10131 { "vblendvps",» { XM, Vex, EXx, XMVexI4 } },
10132 },
10133 {
10134 /* VEX_W_0F3A4B_P_2 */
10135 { "vblendvpd",» { XM, Vex, EXx, XMVexI4 } },
10136 },
10137 {
10138 /* VEX_W_0F3A4C_P_2 */
10139 { "vpblendvb",» { XM, Vex, EXx, XMVexI4 } },
10140 },
10141 {
10142 /* VEX_W_0F3A60_P_2 */
8357 { "vpcmpestrm", { XM, EXx, Ib } }, 10143 { "vpcmpestrm", { XM, EXx, Ib } },
8358 { "(bad)",» » { XX } }, 10144 },
8359 }, 10145 {
8360 10146 /* VEX_W_0F3A61_P_2 */
8361 /* VEX_LEN_3A61_P_2 */
8362 {
8363 { "vpcmpestri", { XM, EXx, Ib } }, 10147 { "vpcmpestri", { XM, EXx, Ib } },
8364 { "(bad)",» » { XX } }, 10148 },
8365 }, 10149 {
8366 10150 /* VEX_W_0F3A62_P_2 */
8367 /* VEX_LEN_3A62_P_2 */
8368 {
8369 { "vpcmpistrm", { XM, EXx, Ib } }, 10151 { "vpcmpistrm", { XM, EXx, Ib } },
8370 { "(bad)",» » { XX } }, 10152 },
8371 }, 10153 {
8372 10154 /* VEX_W_0F3A63_P_2 */
8373 /* VEX_LEN_3A63_P_2 */
8374 {
8375 { "vpcmpistri", { XM, EXx, Ib } }, 10155 { "vpcmpistri", { XM, EXx, Ib } },
8376 { "(bad)",» » { XX } }, 10156 },
8377 }, 10157 {
8378 10158 /* VEX_W_0F3ADF_P_2 */
8379 /* VEX_LEN_3A6A_P_2 */
8380 {
8381 { "vfmaddss",» { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
8382 { "(bad)",» » { XX } },
8383 },
8384
8385 /* VEX_LEN_3A6B_P_2 */
8386 {
8387 { "vfmaddsd",» { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
8388 { "(bad)",» » { XX } },
8389 },
8390
8391 /* VEX_LEN_3A6E_P_2 */
8392 {
8393 { "vfmsubss",» { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
8394 { "(bad)",» » { XX } },
8395 },
8396
8397 /* VEX_LEN_3A6F_P_2 */
8398 {
8399 { "vfmsubsd",» { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
8400 { "(bad)",» » { XX } },
8401 },
8402
8403 /* VEX_LEN_3A7A_P_2 */
8404 {
8405 { "vfnmaddss",» { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
8406 { "(bad)",» » { XX } },
8407 },
8408
8409 /* VEX_LEN_3A7B_P_2 */
8410 {
8411 { "vfnmaddsd",» { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
8412 { "(bad)",» » { XX } },
8413 },
8414
8415 /* VEX_LEN_3A7E_P_2 */
8416 {
8417 { "vfnmsubss",» { XMVexW, Vex128FMA, EXdVexW, EXdVexW, VexI4 } },
8418 { "(bad)",» » { XX } },
8419 },
8420
8421 /* VEX_LEN_3A7F_P_2 */
8422 {
8423 { "vfnmsubsd",» { XMVexW, Vex128FMA, EXqVexW, EXqVexW, VexI4 } },
8424 { "(bad)",» » { XX } },
8425 },
8426
8427 /* VEX_LEN_3ADF_P_2 */
8428 {
8429 { "vaeskeygenassist", { XM, EXx, Ib } }, 10159 { "vaeskeygenassist", { XM, EXx, Ib } },
8430 { "(bad)", { XX } },
8431 }, 10160 },
8432 }; 10161 };
8433 10162
8434 static const struct dis386 mod_table[][2] = { 10163 static const struct dis386 mod_table[][2] = {
8435 { 10164 {
8436 /* MOD_8D */ 10165 /* MOD_8D */
8437 { "leaS", { Gv, M } }, 10166 { "leaS", { Gv, M } },
8438 { "(bad)",» » { XX } }, 10167 },
10168 {
10169 /* MOD_C6_REG_7 */
10170 { Bad_Opcode },
10171 { RM_TABLE (RM_C6_REG_7) },
10172 },
10173 {
10174 /* MOD_C7_REG_7 */
10175 { Bad_Opcode },
10176 { RM_TABLE (RM_C7_REG_7) },
8439 }, 10177 },
8440 { 10178 {
8441 /* MOD_0F01_REG_0 */ 10179 /* MOD_0F01_REG_0 */
8442 { X86_64_TABLE (X86_64_0F01_REG_0) }, 10180 { X86_64_TABLE (X86_64_0F01_REG_0) },
8443 { RM_TABLE (RM_0F01_REG_0) }, 10181 { RM_TABLE (RM_0F01_REG_0) },
8444 }, 10182 },
8445 { 10183 {
8446 /* MOD_0F01_REG_1 */ 10184 /* MOD_0F01_REG_1 */
8447 { X86_64_TABLE (X86_64_0F01_REG_1) }, 10185 { X86_64_TABLE (X86_64_0F01_REG_1) },
8448 { RM_TABLE (RM_0F01_REG_1) }, 10186 { RM_TABLE (RM_0F01_REG_1) },
(...skipping 14 matching lines...) Expand all
8463 { RM_TABLE (RM_0F01_REG_7) }, 10201 { RM_TABLE (RM_0F01_REG_7) },
8464 }, 10202 },
8465 { 10203 {
8466 /* MOD_0F12_PREFIX_0 */ 10204 /* MOD_0F12_PREFIX_0 */
8467 { "movlps", { XM, EXq } }, 10205 { "movlps", { XM, EXq } },
8468 { "movhlps", { XM, EXq } }, 10206 { "movhlps", { XM, EXq } },
8469 }, 10207 },
8470 { 10208 {
8471 /* MOD_0F13 */ 10209 /* MOD_0F13 */
8472 { "movlpX", { EXq, XM } }, 10210 { "movlpX", { EXq, XM } },
8473 { "(bad)", { XX } },
8474 }, 10211 },
8475 { 10212 {
8476 /* MOD_0F16_PREFIX_0 */ 10213 /* MOD_0F16_PREFIX_0 */
8477 { "movhps", { XM, EXq } }, 10214 { "movhps", { XM, EXq } },
8478 { "movlhps", { XM, EXq } }, 10215 { "movlhps", { XM, EXq } },
8479 }, 10216 },
8480 { 10217 {
8481 /* MOD_0F17 */ 10218 /* MOD_0F17 */
8482 { "movhpX", { EXq, XM } }, 10219 { "movhpX", { EXq, XM } },
8483 { "(bad)", { XX } },
8484 }, 10220 },
8485 { 10221 {
8486 /* MOD_0F18_REG_0 */ 10222 /* MOD_0F18_REG_0 */
8487 { "prefetchnta", { Mb } }, 10223 { "prefetchnta", { Mb } },
8488 { "(bad)", { XX } },
8489 }, 10224 },
8490 { 10225 {
8491 /* MOD_0F18_REG_1 */ 10226 /* MOD_0F18_REG_1 */
8492 { "prefetcht0", { Mb } }, 10227 { "prefetcht0", { Mb } },
8493 { "(bad)", { XX } },
8494 }, 10228 },
8495 { 10229 {
8496 /* MOD_0F18_REG_2 */ 10230 /* MOD_0F18_REG_2 */
8497 { "prefetcht1", { Mb } }, 10231 { "prefetcht1", { Mb } },
8498 { "(bad)", { XX } },
8499 }, 10232 },
8500 { 10233 {
8501 /* MOD_0F18_REG_3 */ 10234 /* MOD_0F18_REG_3 */
8502 { "prefetcht2", { Mb } }, 10235 { "prefetcht2", { Mb } },
8503 { "(bad)",» » { XX } }, 10236 },
10237 {
10238 /* MOD_0F18_REG_4 */
10239 { "nop/reserved",» { Mb } },
10240 },
10241 {
10242 /* MOD_0F18_REG_5 */
10243 { "nop/reserved",» { Mb } },
10244 },
10245 {
10246 /* MOD_0F18_REG_6 */
10247 { "nop/reserved",» { Mb } },
10248 },
10249 {
10250 /* MOD_0F18_REG_7 */
10251 { "nop/reserved",» { Mb } },
8504 }, 10252 },
8505 { 10253 {
8506 /* MOD_0F20 */ 10254 /* MOD_0F20 */
8507 { "(bad)",» » { XX } }, 10255 { Bad_Opcode },
8508 { "movZ", { Rm, Cm } }, 10256 { "movZ", { Rm, Cm } },
8509 }, 10257 },
8510 { 10258 {
8511 /* MOD_0F21 */ 10259 /* MOD_0F21 */
8512 { "(bad)",» » { XX } }, 10260 { Bad_Opcode },
8513 { "movZ", { Rm, Dm } }, 10261 { "movZ", { Rm, Dm } },
8514 }, 10262 },
8515 { 10263 {
8516 /* MOD_0F22 */ 10264 /* MOD_0F22 */
8517 { "(bad)",» » { XX } }, 10265 { Bad_Opcode },
8518 { "movZ", { Cm, Rm } }, 10266 { "movZ", { Cm, Rm } },
8519 }, 10267 },
8520 { 10268 {
8521 /* MOD_0F23 */ 10269 /* MOD_0F23 */
8522 { "(bad)",» » { XX } }, 10270 { Bad_Opcode },
8523 { "movZ", { Dm, Rm } }, 10271 { "movZ", { Dm, Rm } },
8524 }, 10272 },
8525 { 10273 {
8526 /* MOD_0F24 */ 10274 /* MOD_0F24 */
8527 { "(bad)",» » { XX } }, 10275 { Bad_Opcode },
8528 { "movL", { Rd, Td } }, 10276 { "movL", { Rd, Td } },
8529 }, 10277 },
8530 { 10278 {
8531 /* MOD_0F26 */ 10279 /* MOD_0F26 */
8532 { "(bad)",» » { XX } }, 10280 { Bad_Opcode },
8533 { "movL", { Td, Rd } }, 10281 { "movL", { Td, Rd } },
8534 }, 10282 },
8535 { 10283 {
8536 /* MOD_0F2B_PREFIX_0 */ 10284 /* MOD_0F2B_PREFIX_0 */
8537 {"movntps", { Mx, XM } }, 10285 {"movntps", { Mx, XM } },
8538 { "(bad)", { XX } },
8539 }, 10286 },
8540 { 10287 {
8541 /* MOD_0F2B_PREFIX_1 */ 10288 /* MOD_0F2B_PREFIX_1 */
8542 {"movntss", { Md, XM } }, 10289 {"movntss", { Md, XM } },
8543 { "(bad)", { XX } },
8544 }, 10290 },
8545 { 10291 {
8546 /* MOD_0F2B_PREFIX_2 */ 10292 /* MOD_0F2B_PREFIX_2 */
8547 {"movntpd", { Mx, XM } }, 10293 {"movntpd", { Mx, XM } },
8548 { "(bad)", { XX } },
8549 }, 10294 },
8550 { 10295 {
8551 /* MOD_0F2B_PREFIX_3 */ 10296 /* MOD_0F2B_PREFIX_3 */
8552 {"movntsd", { Mq, XM } }, 10297 {"movntsd", { Mq, XM } },
8553 { "(bad)", { XX } },
8554 }, 10298 },
8555 { 10299 {
8556 /* MOD_0F51 */ 10300 /* MOD_0F51 */
8557 { "(bad)",» » { XX } }, 10301 { Bad_Opcode },
8558 { "movmskpX", { Gdq, XS } }, 10302 { "movmskpX", { Gdq, XS } },
8559 }, 10303 },
8560 { 10304 {
8561 /* MOD_0F71_REG_2 */ 10305 /* MOD_0F71_REG_2 */
8562 { "(bad)",» » { XX } }, 10306 { Bad_Opcode },
8563 { "psrlw", { MS, Ib } }, 10307 { "psrlw", { MS, Ib } },
8564 }, 10308 },
8565 { 10309 {
8566 /* MOD_0F71_REG_4 */ 10310 /* MOD_0F71_REG_4 */
8567 { "(bad)",» » { XX } }, 10311 { Bad_Opcode },
8568 { "psraw", { MS, Ib } }, 10312 { "psraw", { MS, Ib } },
8569 }, 10313 },
8570 { 10314 {
8571 /* MOD_0F71_REG_6 */ 10315 /* MOD_0F71_REG_6 */
8572 { "(bad)",» » { XX } }, 10316 { Bad_Opcode },
8573 { "psllw", { MS, Ib } }, 10317 { "psllw", { MS, Ib } },
8574 }, 10318 },
8575 { 10319 {
8576 /* MOD_0F72_REG_2 */ 10320 /* MOD_0F72_REG_2 */
8577 { "(bad)",» » { XX } }, 10321 { Bad_Opcode },
8578 { "psrld", { MS, Ib } }, 10322 { "psrld", { MS, Ib } },
8579 }, 10323 },
8580 { 10324 {
8581 /* MOD_0F72_REG_4 */ 10325 /* MOD_0F72_REG_4 */
8582 { "(bad)",» » { XX } }, 10326 { Bad_Opcode },
8583 { "psrad", { MS, Ib } }, 10327 { "psrad", { MS, Ib } },
8584 }, 10328 },
8585 { 10329 {
8586 /* MOD_0F72_REG_6 */ 10330 /* MOD_0F72_REG_6 */
8587 { "(bad)",» » { XX } }, 10331 { Bad_Opcode },
8588 { "pslld", { MS, Ib } }, 10332 { "pslld", { MS, Ib } },
8589 }, 10333 },
8590 { 10334 {
8591 /* MOD_0F73_REG_2 */ 10335 /* MOD_0F73_REG_2 */
8592 { "(bad)",» » { XX } }, 10336 { Bad_Opcode },
8593 { "psrlq", { MS, Ib } }, 10337 { "psrlq", { MS, Ib } },
8594 }, 10338 },
8595 { 10339 {
8596 /* MOD_0F73_REG_3 */ 10340 /* MOD_0F73_REG_3 */
8597 { "(bad)",» » { XX } }, 10341 { Bad_Opcode },
8598 { PREFIX_TABLE (PREFIX_0F73_REG_3) }, 10342 { PREFIX_TABLE (PREFIX_0F73_REG_3) },
8599 }, 10343 },
8600 { 10344 {
8601 /* MOD_0F73_REG_6 */ 10345 /* MOD_0F73_REG_6 */
8602 { "(bad)",» » { XX } }, 10346 { Bad_Opcode },
8603 { "psllq", { MS, Ib } }, 10347 { "psllq", { MS, Ib } },
8604 }, 10348 },
8605 { 10349 {
8606 /* MOD_0F73_REG_7 */ 10350 /* MOD_0F73_REG_7 */
8607 { "(bad)",» » { XX } }, 10351 { Bad_Opcode },
8608 { PREFIX_TABLE (PREFIX_0F73_REG_7) }, 10352 { PREFIX_TABLE (PREFIX_0F73_REG_7) },
8609 }, 10353 },
8610 { 10354 {
8611 /* MOD_0FAE_REG_0 */ 10355 /* MOD_0FAE_REG_0 */
8612 { "fxsave",»» { M } }, 10356 { "fxsave",»» { FXSAVE } },
8613 { "(bad)",» » { XX } }, 10357 { PREFIX_TABLE (PREFIX_0FAE_REG_0) },
8614 }, 10358 },
8615 { 10359 {
8616 /* MOD_0FAE_REG_1 */ 10360 /* MOD_0FAE_REG_1 */
8617 { "fxrstor",» { M } }, 10361 { "fxrstor",» { FXSAVE } },
8618 { "(bad)",» » { XX } }, 10362 { PREFIX_TABLE (PREFIX_0FAE_REG_1) },
8619 }, 10363 },
8620 { 10364 {
8621 /* MOD_0FAE_REG_2 */ 10365 /* MOD_0FAE_REG_2 */
8622 { "ldmxcsr", { Md } }, 10366 { "ldmxcsr", { Md } },
8623 { "(bad)",» » { XX } }, 10367 { PREFIX_TABLE (PREFIX_0FAE_REG_2) },
8624 }, 10368 },
8625 { 10369 {
8626 /* MOD_0FAE_REG_3 */ 10370 /* MOD_0FAE_REG_3 */
8627 { "stmxcsr", { Md } }, 10371 { "stmxcsr", { Md } },
8628 { "(bad)",» » { XX } }, 10372 { PREFIX_TABLE (PREFIX_0FAE_REG_3) },
8629 }, 10373 },
8630 { 10374 {
8631 /* MOD_0FAE_REG_4 */ 10375 /* MOD_0FAE_REG_4 */
8632 { "xsave",» » { M } }, 10376 { "xsave",» » { FXSAVE } },
8633 { "(bad)",» » { XX } },
8634 }, 10377 },
8635 { 10378 {
8636 /* MOD_0FAE_REG_5 */ 10379 /* MOD_0FAE_REG_5 */
8637 { "xrstor",»» { M } }, 10380 { "xrstor",»» { FXSAVE } },
8638 { RM_TABLE (RM_0FAE_REG_5) }, 10381 { RM_TABLE (RM_0FAE_REG_5) },
8639 }, 10382 },
8640 { 10383 {
8641 /* MOD_0FAE_REG_6 */ 10384 /* MOD_0FAE_REG_6 */
8642 { "xsaveopt",» { M } }, 10385 { "xsaveopt",» { FXSAVE } },
8643 { RM_TABLE (RM_0FAE_REG_6) }, 10386 { RM_TABLE (RM_0FAE_REG_6) },
8644 }, 10387 },
8645 { 10388 {
8646 /* MOD_0FAE_REG_7 */ 10389 /* MOD_0FAE_REG_7 */
8647 { "clflush", { Mb } }, 10390 { "clflush", { Mb } },
8648 { RM_TABLE (RM_0FAE_REG_7) }, 10391 { RM_TABLE (RM_0FAE_REG_7) },
8649 }, 10392 },
8650 { 10393 {
8651 /* MOD_0FB2 */ 10394 /* MOD_0FB2 */
8652 { "lssS", { Gv, Mp } }, 10395 { "lssS", { Gv, Mp } },
8653 { "(bad)", { XX } },
8654 }, 10396 },
8655 { 10397 {
8656 /* MOD_0FB4 */ 10398 /* MOD_0FB4 */
8657 { "lfsS", { Gv, Mp } }, 10399 { "lfsS", { Gv, Mp } },
8658 { "(bad)", { XX } },
8659 }, 10400 },
8660 { 10401 {
8661 /* MOD_0FB5 */ 10402 /* MOD_0FB5 */
8662 { "lgsS", { Gv, Mp } }, 10403 { "lgsS", { Gv, Mp } },
8663 { "(bad)", { XX } },
8664 }, 10404 },
8665 { 10405 {
8666 /* MOD_0FC7_REG_6 */ 10406 /* MOD_0FC7_REG_6 */
8667 { PREFIX_TABLE (PREFIX_0FC7_REG_6) }, 10407 { PREFIX_TABLE (PREFIX_0FC7_REG_6) },
8668 { "(bad)",» » { XX } }, 10408 { "rdrand",»» { Ev } },
8669 }, 10409 },
8670 { 10410 {
8671 /* MOD_0FC7_REG_7 */ 10411 /* MOD_0FC7_REG_7 */
8672 { "vmptrst", { Mq } }, 10412 { "vmptrst", { Mq } },
8673 { "(bad)",» » { XX } }, 10413 { "rdseed",»» { Ev } },
8674 }, 10414 },
8675 { 10415 {
8676 /* MOD_0FD7 */ 10416 /* MOD_0FD7 */
8677 { "(bad)",» » { XX } }, 10417 { Bad_Opcode },
8678 { "pmovmskb", { Gdq, MS } }, 10418 { "pmovmskb", { Gdq, MS } },
8679 }, 10419 },
8680 { 10420 {
8681 /* MOD_0FE7_PREFIX_2 */ 10421 /* MOD_0FE7_PREFIX_2 */
8682 { "movntdq", { Mx, XM } }, 10422 { "movntdq", { Mx, XM } },
8683 { "(bad)", { XX } },
8684 }, 10423 },
8685 { 10424 {
8686 /* MOD_0FF0_PREFIX_3 */ 10425 /* MOD_0FF0_PREFIX_3 */
8687 { "lddqu", { XM, M } }, 10426 { "lddqu", { XM, M } },
8688 { "(bad)", { XX } },
8689 }, 10427 },
8690 { 10428 {
8691 /* MOD_0F382A_PREFIX_2 */ 10429 /* MOD_0F382A_PREFIX_2 */
8692 { "movntdqa", { XM, Mx } }, 10430 { "movntdqa", { XM, Mx } },
8693 { "(bad)", { XX } },
8694 }, 10431 },
8695 { 10432 {
8696 /* MOD_62_32BIT */ 10433 /* MOD_62_32BIT */
8697 { "bound{S|}", { Gv, Ma } }, 10434 { "bound{S|}", { Gv, Ma } },
8698 { "(bad)", { XX } },
8699 }, 10435 },
8700 { 10436 {
8701 /* MOD_C4_32BIT */ 10437 /* MOD_C4_32BIT */
8702 { "lesS", { Gv, Mp } }, 10438 { "lesS", { Gv, Mp } },
8703 { VEX_C4_TABLE (VEX_0F) }, 10439 { VEX_C4_TABLE (VEX_0F) },
8704 }, 10440 },
8705 { 10441 {
8706 /* MOD_C5_32BIT */ 10442 /* MOD_C5_32BIT */
8707 { "ldsS", { Gv, Mp } }, 10443 { "ldsS", { Gv, Mp } },
8708 { VEX_C5_TABLE (VEX_0F) }, 10444 { VEX_C5_TABLE (VEX_0F) },
8709 }, 10445 },
8710 { 10446 {
8711 /* MOD_VEX_12_PREFIX_0 */ 10447 /* MOD_VEX_0F12_PREFIX_0 */
8712 { VEX_LEN_TABLE (VEX_LEN_12_P_0_M_0) }, 10448 { VEX_LEN_TABLE (VEX_LEN_0F12_P_0_M_0) },
8713 { VEX_LEN_TABLE (VEX_LEN_12_P_0_M_1) }, 10449 { VEX_LEN_TABLE (VEX_LEN_0F12_P_0_M_1) },
8714 }, 10450 },
8715 { 10451 {
8716 /* MOD_VEX_13 */ 10452 /* MOD_VEX_0F13 */
8717 { VEX_LEN_TABLE (VEX_LEN_13_M_0) }, 10453 { VEX_LEN_TABLE (VEX_LEN_0F13_M_0) },
8718 { "(bad)",» » { XX } },
8719 }, 10454 },
8720 { 10455 {
8721 /* MOD_VEX_16_PREFIX_0 */ 10456 /* MOD_VEX_0F16_PREFIX_0 */
8722 { VEX_LEN_TABLE (VEX_LEN_16_P_0_M_0) }, 10457 { VEX_LEN_TABLE (VEX_LEN_0F16_P_0_M_0) },
8723 { VEX_LEN_TABLE (VEX_LEN_16_P_0_M_1) }, 10458 { VEX_LEN_TABLE (VEX_LEN_0F16_P_0_M_1) },
8724 }, 10459 },
8725 { 10460 {
8726 /* MOD_VEX_17 */ 10461 /* MOD_VEX_0F17 */
8727 { VEX_LEN_TABLE (VEX_LEN_17_M_0) }, 10462 { VEX_LEN_TABLE (VEX_LEN_0F17_M_0) },
8728 { "(bad)",» » { XX } },
8729 }, 10463 },
8730 { 10464 {
8731 /* MOD_VEX_2B */ 10465 /* MOD_VEX_0F2B */
8732 { "vmovntpX",» { Mx, XM } }, 10466 { VEX_W_TABLE (VEX_W_0F2B_M_0) },
8733 { "(bad)",» » { XX } },
8734 }, 10467 },
8735 { 10468 {
8736 /* MOD_VEX_51 */ 10469 /* MOD_VEX_0F50 */
8737 { "(bad)",» » { XX } }, 10470 { Bad_Opcode },
8738 { "vmovmskpX",» { Gdq, XS } }, 10471 { VEX_W_TABLE (VEX_W_0F50_M_0) },
8739 }, 10472 },
8740 { 10473 {
8741 /* MOD_VEX_71_REG_2 */ 10474 /* MOD_VEX_0F71_REG_2 */
8742 { "(bad)",» » { XX } }, 10475 { Bad_Opcode },
8743 { PREFIX_TABLE (PREFIX_VEX_71_REG_2) }, 10476 { PREFIX_TABLE (PREFIX_VEX_0F71_REG_2) },
8744 }, 10477 },
8745 { 10478 {
8746 /* MOD_VEX_71_REG_4 */ 10479 /* MOD_VEX_0F71_REG_4 */
8747 { "(bad)",» » { XX } }, 10480 { Bad_Opcode },
8748 { PREFIX_TABLE (PREFIX_VEX_71_REG_4) }, 10481 { PREFIX_TABLE (PREFIX_VEX_0F71_REG_4) },
8749 }, 10482 },
8750 { 10483 {
8751 /* MOD_VEX_71_REG_6 */ 10484 /* MOD_VEX_0F71_REG_6 */
8752 { "(bad)",» » { XX } }, 10485 { Bad_Opcode },
8753 { PREFIX_TABLE (PREFIX_VEX_71_REG_6) }, 10486 { PREFIX_TABLE (PREFIX_VEX_0F71_REG_6) },
8754 }, 10487 },
8755 { 10488 {
8756 /* MOD_VEX_72_REG_2 */ 10489 /* MOD_VEX_0F72_REG_2 */
8757 { "(bad)",» » { XX } }, 10490 { Bad_Opcode },
8758 { PREFIX_TABLE (PREFIX_VEX_72_REG_2) }, 10491 { PREFIX_TABLE (PREFIX_VEX_0F72_REG_2) },
8759 }, 10492 },
8760 { 10493 {
8761 /* MOD_VEX_72_REG_4 */ 10494 /* MOD_VEX_0F72_REG_4 */
8762 { "(bad)",» » { XX } }, 10495 { Bad_Opcode },
8763 { PREFIX_TABLE (PREFIX_VEX_72_REG_4) }, 10496 { PREFIX_TABLE (PREFIX_VEX_0F72_REG_4) },
8764 }, 10497 },
8765 { 10498 {
8766 /* MOD_VEX_72_REG_6 */ 10499 /* MOD_VEX_0F72_REG_6 */
8767 { "(bad)",» » { XX } }, 10500 { Bad_Opcode },
8768 { PREFIX_TABLE (PREFIX_VEX_72_REG_6) }, 10501 { PREFIX_TABLE (PREFIX_VEX_0F72_REG_6) },
8769 }, 10502 },
8770 { 10503 {
8771 /* MOD_VEX_73_REG_2 */ 10504 /* MOD_VEX_0F73_REG_2 */
8772 { "(bad)",» » { XX } }, 10505 { Bad_Opcode },
8773 { PREFIX_TABLE (PREFIX_VEX_73_REG_2) }, 10506 { PREFIX_TABLE (PREFIX_VEX_0F73_REG_2) },
8774 }, 10507 },
8775 { 10508 {
8776 /* MOD_VEX_73_REG_3 */ 10509 /* MOD_VEX_0F73_REG_3 */
8777 { "(bad)",» » { XX } }, 10510 { Bad_Opcode },
8778 { PREFIX_TABLE (PREFIX_VEX_73_REG_3) }, 10511 { PREFIX_TABLE (PREFIX_VEX_0F73_REG_3) },
8779 }, 10512 },
8780 { 10513 {
8781 /* MOD_VEX_73_REG_6 */ 10514 /* MOD_VEX_0F73_REG_6 */
8782 { "(bad)",» » { XX } }, 10515 { Bad_Opcode },
8783 { PREFIX_TABLE (PREFIX_VEX_73_REG_6) }, 10516 { PREFIX_TABLE (PREFIX_VEX_0F73_REG_6) },
8784 }, 10517 },
8785 { 10518 {
8786 /* MOD_VEX_73_REG_7 */ 10519 /* MOD_VEX_0F73_REG_7 */
8787 { "(bad)",» » { XX } }, 10520 { Bad_Opcode },
8788 { PREFIX_TABLE (PREFIX_VEX_73_REG_7) }, 10521 { PREFIX_TABLE (PREFIX_VEX_0F73_REG_7) },
8789 }, 10522 },
8790 { 10523 {
8791 /* MOD_VEX_AE_REG_2 */ 10524 /* MOD_VEX_0FAE_REG_2 */
8792 { VEX_LEN_TABLE (VEX_LEN_AE_R_2_M_0) }, 10525 { VEX_LEN_TABLE (VEX_LEN_0FAE_R_2_M_0) },
8793 { "(bad)",» » { XX } },
8794 }, 10526 },
8795 { 10527 {
8796 /* MOD_VEX_AE_REG_3 */ 10528 /* MOD_VEX_0FAE_REG_3 */
8797 { VEX_LEN_TABLE (VEX_LEN_AE_R_3_M_0) }, 10529 { VEX_LEN_TABLE (VEX_LEN_0FAE_R_3_M_0) },
8798 { "(bad)",» » { XX } },
8799 }, 10530 },
8800 { 10531 {
8801 /* MOD_VEX_D7_PREFIX_2 */ 10532 /* MOD_VEX_0FD7_PREFIX_2 */
8802 { "(bad)",» » { XX } }, 10533 { Bad_Opcode },
8803 { VEX_LEN_TABLE (VEX_LEN_D7_P_2_M_1) }, 10534 { VEX_W_TABLE (VEX_W_0FD7_P_2_M_1) },
8804 }, 10535 },
8805 { 10536 {
8806 /* MOD_VEX_E7_PREFIX_2 */ 10537 /* MOD_VEX_0FE7_PREFIX_2 */
8807 { "vmovntdq",» { Mx, XM } }, 10538 { VEX_W_TABLE (VEX_W_0FE7_P_2_M_0) },
8808 { "(bad)",» » { XX } },
8809 }, 10539 },
8810 { 10540 {
8811 /* MOD_VEX_F0_PREFIX_3 */ 10541 /* MOD_VEX_0FF0_PREFIX_3 */
8812 { "vlddqu",»» { XM, M } }, 10542 { VEX_W_TABLE (VEX_W_0FF0_P_3_M_0) },
8813 { "(bad)",» » { XX } },
8814 }, 10543 },
8815 { 10544 {
8816 /* MOD_VEX_3818_PREFIX_2 */ 10545 /* MOD_VEX_0F381A_PREFIX_2 */
8817 { "vbroadcastss",» { XM, Md } }, 10546 { VEX_LEN_TABLE (VEX_LEN_0F381A_P_2_M_0) },
8818 { "(bad)",» » { XX } },
8819 }, 10547 },
8820 { 10548 {
8821 /* MOD_VEX_3819_PREFIX_2 */ 10549 /* MOD_VEX_0F382A_PREFIX_2 */
8822 { VEX_LEN_TABLE (VEX_LEN_3819_P_2_M_0) }, 10550 { VEX_W_TABLE (VEX_W_0F382A_P_2_M_0) },
8823 { "(bad)",» » { XX } },
8824 }, 10551 },
8825 { 10552 {
8826 /* MOD_VEX_381A_PREFIX_2 */ 10553 /* MOD_VEX_0F382C_PREFIX_2 */
8827 { VEX_LEN_TABLE (VEX_LEN_381A_P_2_M_0) }, 10554 { VEX_W_TABLE (VEX_W_0F382C_P_2_M_0) },
8828 { "(bad)",» » { XX } },
8829 }, 10555 },
8830 { 10556 {
8831 /* MOD_VEX_382A_PREFIX_2 */ 10557 /* MOD_VEX_0F382D_PREFIX_2 */
8832 { VEX_LEN_TABLE (VEX_LEN_382A_P_2_M_0) }, 10558 { VEX_W_TABLE (VEX_W_0F382D_P_2_M_0) },
8833 { "(bad)",» » { XX } },
8834 }, 10559 },
8835 { 10560 {
8836 /* MOD_VEX_382C_PREFIX_2 */ 10561 /* MOD_VEX_0F382E_PREFIX_2 */
8837 { "vmaskmovps",» { XM, Vex, Mx } }, 10562 { VEX_W_TABLE (VEX_W_0F382E_P_2_M_0) },
8838 { "(bad)",» » { XX } },
8839 }, 10563 },
8840 { 10564 {
8841 /* MOD_VEX_382D_PREFIX_2 */ 10565 /* MOD_VEX_0F382F_PREFIX_2 */
8842 { "vmaskmovpd",» { XM, Vex, Mx } }, 10566 { VEX_W_TABLE (VEX_W_0F382F_P_2_M_0) },
8843 { "(bad)",» » { XX } },
8844 }, 10567 },
8845 { 10568 {
8846 /* MOD_VEX_382E_PREFIX_2 */ 10569 /* MOD_VEX_0F385A_PREFIX_2 */
8847 { "vmaskmovps",» { Mx, Vex, XM } }, 10570 { VEX_LEN_TABLE (VEX_LEN_0F385A_P_2_M_0) },
8848 { "(bad)",» » { XX } },
8849 }, 10571 },
8850 { 10572 {
8851 /* MOD_VEX_382F_PREFIX_2 */ 10573 /* MOD_VEX_0F388C_PREFIX_2 */
8852 { "vmaskmovpd",» { Mx, Vex, XM } }, 10574 { "vpmaskmov%LW",» { XM, Vex, Mx } },
8853 { "(bad)",» » { XX } }, 10575 },
10576 {
10577 /* MOD_VEX_0F388E_PREFIX_2 */
10578 { "vpmaskmov%LW",» { Mx, Vex, XM } },
8854 }, 10579 },
8855 }; 10580 };
8856 10581
8857 static const struct dis386 rm_table[][8] = { 10582 static const struct dis386 rm_table[][8] = {
8858 { 10583 {
10584 /* RM_C6_REG_7 */
10585 { "xabort", { Skip_MODRM, Ib } },
10586 },
10587 {
10588 /* RM_C7_REG_7 */
10589 { "xbeginT", { Skip_MODRM, Jv } },
10590 },
10591 {
8859 /* RM_0F01_REG_0 */ 10592 /* RM_0F01_REG_0 */
8860 { "(bad)",» » { XX } }, 10593 { Bad_Opcode },
8861 { "vmcall", { Skip_MODRM } }, 10594 { "vmcall", { Skip_MODRM } },
8862 { "vmlaunch", { Skip_MODRM } }, 10595 { "vmlaunch", { Skip_MODRM } },
8863 { "vmresume", { Skip_MODRM } }, 10596 { "vmresume", { Skip_MODRM } },
8864 { "vmxoff", { Skip_MODRM } }, 10597 { "vmxoff", { Skip_MODRM } },
8865 { "(bad)", { XX } },
8866 { "(bad)", { XX } },
8867 { "(bad)", { XX } },
8868 }, 10598 },
8869 { 10599 {
8870 /* RM_0F01_REG_1 */ 10600 /* RM_0F01_REG_1 */
8871 { "monitor", { { OP_Monitor, 0 } } }, 10601 { "monitor", { { OP_Monitor, 0 } } },
8872 { "mwait", { { OP_Mwait, 0 } } }, 10602 { "mwait", { { OP_Mwait, 0 } } },
8873 { "(bad)",» » { XX } }, 10603 { "clac",» » { Skip_MODRM } },
8874 { "(bad)",» » { XX } }, 10604 { "stac",» » { Skip_MODRM } },
8875 { "(bad)",» » { XX } },
8876 { "(bad)",» » { XX } },
8877 { "(bad)",» » { XX } },
8878 { "(bad)",» » { XX } },
8879 }, 10605 },
8880 { 10606 {
8881 /* RM_0F01_REG_2 */ 10607 /* RM_0F01_REG_2 */
8882 { "xgetbv", { Skip_MODRM } }, 10608 { "xgetbv", { Skip_MODRM } },
8883 { "xsetbv", { Skip_MODRM } }, 10609 { "xsetbv", { Skip_MODRM } },
8884 { "(bad)",» » { XX } }, 10610 { Bad_Opcode },
8885 { "(bad)",» » { XX } }, 10611 { Bad_Opcode },
8886 { "(bad)",» » { XX } }, 10612 { "vmfunc",»» { Skip_MODRM } },
8887 { "(bad)",» » { XX } }, 10613 { "xend",» » { Skip_MODRM } },
8888 { "(bad)",» » { XX } }, 10614 { "xtest",» » { Skip_MODRM } },
8889 { "(bad)",» » { XX } }, 10615 { Bad_Opcode },
8890 }, 10616 },
8891 { 10617 {
8892 /* RM_0F01_REG_3 */ 10618 /* RM_0F01_REG_3 */
8893 { "vmrun", { Skip_MODRM } }, 10619 { "vmrun", { Skip_MODRM } },
8894 { "vmmcall", { Skip_MODRM } }, 10620 { "vmmcall", { Skip_MODRM } },
8895 { "vmload", { Skip_MODRM } }, 10621 { "vmload", { Skip_MODRM } },
8896 { "vmsave", { Skip_MODRM } }, 10622 { "vmsave", { Skip_MODRM } },
8897 { "stgi", { Skip_MODRM } }, 10623 { "stgi", { Skip_MODRM } },
8898 { "clgi", { Skip_MODRM } }, 10624 { "clgi", { Skip_MODRM } },
8899 { "skinit", { Skip_MODRM } }, 10625 { "skinit", { Skip_MODRM } },
8900 { "invlpga", { Skip_MODRM } }, 10626 { "invlpga", { Skip_MODRM } },
8901 }, 10627 },
8902 { 10628 {
8903 /* RM_0F01_REG_7 */ 10629 /* RM_0F01_REG_7 */
8904 { "swapgs", { Skip_MODRM } }, 10630 { "swapgs", { Skip_MODRM } },
8905 { "rdtscp", { Skip_MODRM } }, 10631 { "rdtscp", { Skip_MODRM } },
8906 { "(bad)", { XX } },
8907 { "(bad)", { XX } },
8908 { "(bad)", { XX } },
8909 { "(bad)", { XX } },
8910 { "(bad)", { XX } },
8911 { "(bad)", { XX } },
8912 }, 10632 },
8913 { 10633 {
8914 /* RM_0FAE_REG_5 */ 10634 /* RM_0FAE_REG_5 */
8915 { "lfence", { Skip_MODRM } }, 10635 { "lfence", { Skip_MODRM } },
8916 { "(bad)", { XX } },
8917 { "(bad)", { XX } },
8918 { "(bad)", { XX } },
8919 { "(bad)", { XX } },
8920 { "(bad)", { XX } },
8921 { "(bad)", { XX } },
8922 { "(bad)", { XX } },
8923 }, 10636 },
8924 { 10637 {
8925 /* RM_0FAE_REG_6 */ 10638 /* RM_0FAE_REG_6 */
8926 { "mfence", { Skip_MODRM } }, 10639 { "mfence", { Skip_MODRM } },
8927 { "(bad)", { XX } },
8928 { "(bad)", { XX } },
8929 { "(bad)", { XX } },
8930 { "(bad)", { XX } },
8931 { "(bad)", { XX } },
8932 { "(bad)", { XX } },
8933 { "(bad)", { XX } },
8934 }, 10640 },
8935 { 10641 {
8936 /* RM_0FAE_REG_7 */ 10642 /* RM_0FAE_REG_7 */
8937 { "sfence", { Skip_MODRM } }, 10643 { "sfence", { Skip_MODRM } },
8938 { "(bad)", { XX } },
8939 { "(bad)", { XX } },
8940 { "(bad)", { XX } },
8941 { "(bad)", { XX } },
8942 { "(bad)", { XX } },
8943 { "(bad)", { XX } },
8944 { "(bad)", { XX } },
8945 }, 10644 },
8946 }; 10645 };
8947 10646
8948 #define INTERNAL_DISASSEMBLER_ERROR _("<internal disassembler error>") 10647 #define INTERNAL_DISASSEMBLER_ERROR _("<internal disassembler error>")
8949 10648
8950 static void 10649 /* We use the high bit to indicate different name for the same
10650 prefix. */
10651 #define ADDR16_PREFIX» (0x67 | 0x100)
10652 #define ADDR32_PREFIX» (0x67 | 0x200)
10653 #define DATA16_PREFIX» (0x66 | 0x100)
10654 #define DATA32_PREFIX» (0x66 | 0x200)
10655 #define REP_PREFIX» (0xf3 | 0x100)
10656 #define XACQUIRE_PREFIX»(0xf2 | 0x200)
10657 #define XRELEASE_PREFIX»(0xf3 | 0x400)
10658
10659 static int
8951 ckprefix (void) 10660 ckprefix (void)
8952 { 10661 {
8953 int newrex; 10662 int newrex, i, length;
8954 rex = 0; 10663 rex = 0;
8955 rex_original = 0;
8956 rex_ignored = 0; 10664 rex_ignored = 0;
8957 prefixes = 0; 10665 prefixes = 0;
8958 used_prefixes = 0; 10666 used_prefixes = 0;
8959 rex_used = 0; 10667 rex_used = 0;
8960 while (1) 10668 last_lock_prefix = -1;
10669 last_repz_prefix = -1;
10670 last_repnz_prefix = -1;
10671 last_data_prefix = -1;
10672 last_addr_prefix = -1;
10673 last_rex_prefix = -1;
10674 last_seg_prefix = -1;
10675 for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++)
10676 all_prefixes[i] = 0;
10677 i = 0;
10678 length = 0;
10679 /* The maximum instruction length is 15bytes. */
10680 while (length < MAX_CODE_LENGTH - 1)
8961 { 10681 {
8962 FETCH_DATA (the_info, codep + 1); 10682 FETCH_DATA (the_info, codep + 1);
8963 newrex = 0; 10683 newrex = 0;
8964 switch (*codep) 10684 switch (*codep)
8965 { 10685 {
8966 /* REX prefixes family. */ 10686 /* REX prefixes family. */
8967 case 0x40: 10687 case 0x40:
8968 case 0x41: 10688 case 0x41:
8969 case 0x42: 10689 case 0x42:
8970 case 0x43: 10690 case 0x43:
8971 case 0x44: 10691 case 0x44:
8972 case 0x45: 10692 case 0x45:
8973 case 0x46: 10693 case 0x46:
8974 case 0x47: 10694 case 0x47:
8975 case 0x48: 10695 case 0x48:
8976 case 0x49: 10696 case 0x49:
8977 case 0x4a: 10697 case 0x4a:
8978 case 0x4b: 10698 case 0x4b:
8979 case 0x4c: 10699 case 0x4c:
8980 case 0x4d: 10700 case 0x4d:
8981 case 0x4e: 10701 case 0x4e:
8982 case 0x4f: 10702 case 0x4f:
8983 » if (address_mode == mode_64bit) 10703 » if (address_mode == mode_64bit)
8984 » newrex = *codep; 10704 » newrex = *codep;
8985 » else 10705 » else
8986 » return; 10706 » return 1;
10707 » last_rex_prefix = i;
8987 break; 10708 break;
8988 case 0xf3: 10709 case 0xf3:
8989 prefixes |= PREFIX_REPZ; 10710 prefixes |= PREFIX_REPZ;
10711 last_repz_prefix = i;
8990 break; 10712 break;
8991 case 0xf2: 10713 case 0xf2:
8992 prefixes |= PREFIX_REPNZ; 10714 prefixes |= PREFIX_REPNZ;
10715 last_repnz_prefix = i;
8993 break; 10716 break;
8994 case 0xf0: 10717 case 0xf0:
8995 prefixes |= PREFIX_LOCK; 10718 prefixes |= PREFIX_LOCK;
10719 last_lock_prefix = i;
8996 break; 10720 break;
8997 case 0x2e: 10721 case 0x2e:
8998 prefixes |= PREFIX_CS; 10722 prefixes |= PREFIX_CS;
10723 last_seg_prefix = i;
8999 break; 10724 break;
9000 case 0x36: 10725 case 0x36:
9001 prefixes |= PREFIX_SS; 10726 prefixes |= PREFIX_SS;
10727 last_seg_prefix = i;
9002 break; 10728 break;
9003 case 0x3e: 10729 case 0x3e:
9004 prefixes |= PREFIX_DS; 10730 prefixes |= PREFIX_DS;
10731 last_seg_prefix = i;
9005 break; 10732 break;
9006 case 0x26: 10733 case 0x26:
9007 prefixes |= PREFIX_ES; 10734 prefixes |= PREFIX_ES;
10735 last_seg_prefix = i;
9008 break; 10736 break;
9009 case 0x64: 10737 case 0x64:
9010 prefixes |= PREFIX_FS; 10738 prefixes |= PREFIX_FS;
10739 last_seg_prefix = i;
9011 break; 10740 break;
9012 case 0x65: 10741 case 0x65:
9013 prefixes |= PREFIX_GS; 10742 prefixes |= PREFIX_GS;
10743 last_seg_prefix = i;
9014 break; 10744 break;
9015 case 0x66: 10745 case 0x66:
9016 prefixes |= PREFIX_DATA; 10746 prefixes |= PREFIX_DATA;
10747 last_data_prefix = i;
9017 break; 10748 break;
9018 case 0x67: 10749 case 0x67:
9019 prefixes |= PREFIX_ADDR; 10750 prefixes |= PREFIX_ADDR;
10751 last_addr_prefix = i;
9020 break; 10752 break;
9021 case FWAIT_OPCODE: 10753 case FWAIT_OPCODE:
9022 /* fwait is really an instruction. If there are prefixes 10754 /* fwait is really an instruction. If there are prefixes
9023 before the fwait, they belong to the fwait, *not* to the 10755 before the fwait, they belong to the fwait, *not* to the
9024 following instruction. */ 10756 following instruction. */
9025 if (prefixes || rex) 10757 if (prefixes || rex)
9026 { 10758 {
9027 prefixes |= PREFIX_FWAIT; 10759 prefixes |= PREFIX_FWAIT;
9028 codep++; 10760 codep++;
9029 » return; 10761 » /* This ensures that the previous REX prefixes are noticed
10762 » » as unused prefixes, as in the return case below. */
10763 » rex_used = rex;
10764 » return 1;
9030 } 10765 }
9031 prefixes = PREFIX_FWAIT; 10766 prefixes = PREFIX_FWAIT;
9032 break; 10767 break;
9033 default: 10768 default:
9034 » return; 10769 » return 1;
9035 } 10770 }
9036 /* Rex is ignored when followed by another prefix. */ 10771 /* Rex is ignored when followed by another prefix. */
9037 if (rex) 10772 if (rex)
9038 { 10773 {
9039 rex_used = rex; 10774 rex_used = rex;
9040 » return; 10775 » return 1;
9041 } 10776 }
10777 if (*codep != FWAIT_OPCODE)
10778 all_prefixes[i++] = *codep;
9042 rex = newrex; 10779 rex = newrex;
9043 rex_original = rex;
9044 codep++; 10780 codep++;
10781 length++;
10782 }
10783 return 0;
10784 }
10785
10786 static int
10787 seg_prefix (int pref)
10788 {
10789 switch (pref)
10790 {
10791 case 0x2e:
10792 return PREFIX_CS;
10793 case 0x36:
10794 return PREFIX_SS;
10795 case 0x3e:
10796 return PREFIX_DS;
10797 case 0x26:
10798 return PREFIX_ES;
10799 case 0x64:
10800 return PREFIX_FS;
10801 case 0x65:
10802 return PREFIX_GS;
10803 default:
10804 return 0;
9045 } 10805 }
9046 } 10806 }
9047 10807
9048 /* Return the name of the prefix byte PREF, or NULL if PREF is not a 10808 /* Return the name of the prefix byte PREF, or NULL if PREF is not a
9049 prefix byte. */ 10809 prefix byte. */
9050 10810
9051 static const char * 10811 static const char *
9052 prefix_name (int pref, int sizeflag) 10812 prefix_name (int pref, int sizeflag)
9053 { 10813 {
9054 static const char *rexes [16] = 10814 static const char *rexes [16] =
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
9111 return "gs"; 10871 return "gs";
9112 case 0x66: 10872 case 0x66:
9113 return (sizeflag & DFLAG) ? "data16" : "data32"; 10873 return (sizeflag & DFLAG) ? "data16" : "data32";
9114 case 0x67: 10874 case 0x67:
9115 if (address_mode == mode_64bit) 10875 if (address_mode == mode_64bit)
9116 return (sizeflag & AFLAG) ? "addr32" : "addr64"; 10876 return (sizeflag & AFLAG) ? "addr32" : "addr64";
9117 else 10877 else
9118 return (sizeflag & AFLAG) ? "addr16" : "addr32"; 10878 return (sizeflag & AFLAG) ? "addr16" : "addr32";
9119 case FWAIT_OPCODE: 10879 case FWAIT_OPCODE:
9120 return "fwait"; 10880 return "fwait";
10881 case ADDR16_PREFIX:
10882 return "addr16";
10883 case ADDR32_PREFIX:
10884 return "addr32";
10885 case DATA16_PREFIX:
10886 return "data16";
10887 case DATA32_PREFIX:
10888 return "data32";
10889 case REP_PREFIX:
10890 return "rep";
10891 case XACQUIRE_PREFIX:
10892 return "xacquire";
10893 case XRELEASE_PREFIX:
10894 return "xrelease";
9121 default: 10895 default:
9122 return NULL; 10896 return NULL;
9123 } 10897 }
9124 } 10898 }
9125 10899
9126 static char op_out[MAX_OPERANDS][100]; 10900 static char op_out[MAX_OPERANDS][100];
9127 static int op_ad, op_index[MAX_OPERANDS]; 10901 static int op_ad, op_index[MAX_OPERANDS];
9128 static int two_source_ops; 10902 static int two_source_ops;
9129 static bfd_vma op_address[MAX_OPERANDS]; 10903 static bfd_vma op_address[MAX_OPERANDS];
9130 static bfd_vma op_riprel[MAX_OPERANDS]; 10904 static bfd_vma op_riprel[MAX_OPERANDS];
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
9190 fprintf (stream, _(" intel-mnemonic\n" 10964 fprintf (stream, _(" intel-mnemonic\n"
9191 " Display instruction in Intel mnemonic\n")); 10965 " Display instruction in Intel mnemonic\n"));
9192 fprintf (stream, _(" addr64 Assume 64bit address size\n")); 10966 fprintf (stream, _(" addr64 Assume 64bit address size\n"));
9193 fprintf (stream, _(" addr32 Assume 32bit address size\n")); 10967 fprintf (stream, _(" addr32 Assume 32bit address size\n"));
9194 fprintf (stream, _(" addr16 Assume 16bit address size\n")); 10968 fprintf (stream, _(" addr16 Assume 16bit address size\n"));
9195 fprintf (stream, _(" data32 Assume 32bit data size\n")); 10969 fprintf (stream, _(" data32 Assume 32bit data size\n"));
9196 fprintf (stream, _(" data16 Assume 16bit data size\n")); 10970 fprintf (stream, _(" data16 Assume 16bit data size\n"));
9197 fprintf (stream, _(" suffix Always display instruction suffix in AT&T sy ntax\n")); 10971 fprintf (stream, _(" suffix Always display instruction suffix in AT&T sy ntax\n"));
9198 } 10972 }
9199 10973
10974 /* Bad opcode. */
10975 static const struct dis386 bad_opcode = { "(bad)", { XX } };
10976
9200 /* Get a pointer to struct dis386 with a valid name. */ 10977 /* Get a pointer to struct dis386 with a valid name. */
9201 10978
9202 static const struct dis386 * 10979 static const struct dis386 *
9203 get_valid_dis386 (const struct dis386 *dp, disassemble_info *info) 10980 get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
9204 { 10981 {
9205 int index, vex_table_index; 10982 int vindex, vex_table_index;
9206 10983
9207 if (dp->name != NULL) 10984 if (dp->name != NULL)
9208 return dp; 10985 return dp;
9209 10986
9210 switch (dp->op[0].bytemode) 10987 switch (dp->op[0].bytemode)
9211 { 10988 {
9212 case USE_REG_TABLE: 10989 case USE_REG_TABLE:
9213 dp = &reg_table[dp->op[1].bytemode][modrm.reg]; 10990 dp = &reg_table[dp->op[1].bytemode][modrm.reg];
9214 break; 10991 break;
9215 10992
9216 case USE_MOD_TABLE: 10993 case USE_MOD_TABLE:
9217 index = modrm.mod == 0x3 ? 1 : 0; 10994 vindex = modrm.mod == 0x3 ? 1 : 0;
9218 dp = &mod_table[dp->op[1].bytemode][index]; 10995 dp = &mod_table[dp->op[1].bytemode][vindex];
9219 break; 10996 break;
9220 10997
9221 case USE_RM_TABLE: 10998 case USE_RM_TABLE:
9222 dp = &rm_table[dp->op[1].bytemode][modrm.rm]; 10999 dp = &rm_table[dp->op[1].bytemode][modrm.rm];
9223 break; 11000 break;
9224 11001
9225 case USE_PREFIX_TABLE: 11002 case USE_PREFIX_TABLE:
9226 if (need_vex) 11003 if (need_vex)
9227 { 11004 {
9228 /* The prefix in VEX is implicit. */ 11005 /* The prefix in VEX is implicit. */
9229 switch (vex.prefix) 11006 switch (vex.prefix)
9230 { 11007 {
9231 case 0: 11008 case 0:
9232 » index = 0; 11009 » vindex = 0;
9233 break; 11010 break;
9234 case REPE_PREFIX_OPCODE: 11011 case REPE_PREFIX_OPCODE:
9235 » index = 1; 11012 » vindex = 1;
9236 break; 11013 break;
9237 case DATA_PREFIX_OPCODE: 11014 case DATA_PREFIX_OPCODE:
9238 » index = 2; 11015 » vindex = 2;
9239 break; 11016 break;
9240 case REPNE_PREFIX_OPCODE: 11017 case REPNE_PREFIX_OPCODE:
9241 » index = 3; 11018 » vindex = 3;
9242 break; 11019 break;
9243 default: 11020 default:
9244 abort (); 11021 abort ();
9245 break; 11022 break;
9246 } 11023 }
9247 } 11024 }
9248 else 11025 else
9249 { 11026 {
9250 » index = 0; 11027 » vindex = 0;
9251 used_prefixes |= (prefixes & PREFIX_REPZ); 11028 used_prefixes |= (prefixes & PREFIX_REPZ);
9252 if (prefixes & PREFIX_REPZ) 11029 if (prefixes & PREFIX_REPZ)
9253 { 11030 {
9254 » index = 1; 11031 » vindex = 1;
9255 » repz_prefix = NULL; 11032 » all_prefixes[last_repz_prefix] = 0;
9256 } 11033 }
9257 else 11034 else
9258 { 11035 {
9259 /* We should check PREFIX_REPNZ and PREFIX_REPZ before 11036 /* We should check PREFIX_REPNZ and PREFIX_REPZ before
9260 PREFIX_DATA. */ 11037 PREFIX_DATA. */
9261 used_prefixes |= (prefixes & PREFIX_REPNZ); 11038 used_prefixes |= (prefixes & PREFIX_REPNZ);
9262 if (prefixes & PREFIX_REPNZ) 11039 if (prefixes & PREFIX_REPNZ)
9263 { 11040 {
9264 » » index = 3; 11041 » » vindex = 3;
9265 » » repnz_prefix = NULL; 11042 » » all_prefixes[last_repnz_prefix] = 0;
9266 } 11043 }
9267 else 11044 else
9268 { 11045 {
9269 used_prefixes |= (prefixes & PREFIX_DATA); 11046 used_prefixes |= (prefixes & PREFIX_DATA);
9270 if (prefixes & PREFIX_DATA) 11047 if (prefixes & PREFIX_DATA)
9271 { 11048 {
9272 » » index = 2; 11049 » » vindex = 2;
9273 » » data_prefix = NULL; 11050 » » all_prefixes[last_data_prefix] = 0;
9274 } 11051 }
9275 } 11052 }
9276 } 11053 }
9277 } 11054 }
9278 dp = &prefix_table[dp->op[1].bytemode][index]; 11055 dp = &prefix_table[dp->op[1].bytemode][vindex];
9279 break; 11056 break;
9280 11057
9281 case USE_X86_64_TABLE: 11058 case USE_X86_64_TABLE:
9282 index = address_mode == mode_64bit ? 1 : 0; 11059 vindex = address_mode == mode_64bit ? 1 : 0;
9283 dp = &x86_64_table[dp->op[1].bytemode][index]; 11060 dp = &x86_64_table[dp->op[1].bytemode][vindex];
9284 break; 11061 break;
9285 11062
9286 case USE_3BYTE_TABLE: 11063 case USE_3BYTE_TABLE:
9287 FETCH_DATA (info, codep + 2); 11064 FETCH_DATA (info, codep + 2);
9288 index = *codep++; 11065 vindex = *codep++;
9289 dp = &three_byte_table[dp->op[1].bytemode][index]; 11066 dp = &three_byte_table[dp->op[1].bytemode][vindex];
9290 modrm.mod = (*codep >> 6) & 3; 11067 modrm.mod = (*codep >> 6) & 3;
9291 modrm.reg = (*codep >> 3) & 7; 11068 modrm.reg = (*codep >> 3) & 7;
9292 modrm.rm = *codep & 7; 11069 modrm.rm = *codep & 7;
9293 break; 11070 break;
9294 11071
9295 case USE_VEX_LEN_TABLE: 11072 case USE_VEX_LEN_TABLE:
9296 if (!need_vex) 11073 if (!need_vex)
9297 abort (); 11074 abort ();
9298 11075
9299 switch (vex.length) 11076 switch (vex.length)
9300 { 11077 {
9301 case 128: 11078 case 128:
9302 » index = 0; 11079 » vindex = 0;
9303 break; 11080 break;
9304 case 256: 11081 case 256:
9305 » index = 1; 11082 » vindex = 1;
9306 break; 11083 break;
9307 default: 11084 default:
9308 abort (); 11085 abort ();
9309 break; 11086 break;
9310 } 11087 }
9311 11088
9312 dp = &vex_len_table[dp->op[1].bytemode][index]; 11089 dp = &vex_len_table[dp->op[1].bytemode][vindex];
11090 break;
11091
11092 case USE_XOP_8F_TABLE:
11093 FETCH_DATA (info, codep + 3);
11094 /* All bits in the REX prefix are ignored. */
11095 rex_ignored = rex;
11096 rex = ~(*codep >> 5) & 0x7;
11097
11098 /* VEX_TABLE_INDEX is the mmmmm part of the XOP byte 1 "RCB.mmmmm". */
11099 switch ((*codep & 0x1f))
11100 » {
11101 » default:
11102 » dp = &bad_opcode;
11103 » return dp;
11104 » case 0x8:
11105 » vex_table_index = XOP_08;
11106 » break;
11107 » case 0x9:
11108 » vex_table_index = XOP_09;
11109 » break;
11110 » case 0xa:
11111 » vex_table_index = XOP_0A;
11112 » break;
11113 » }
11114 codep++;
11115 vex.w = *codep & 0x80;
11116 if (vex.w && address_mode == mode_64bit)
11117 » rex |= REX_W;
11118
11119 vex.register_specifier = (~(*codep >> 3)) & 0xf;
11120 if (address_mode != mode_64bit
11121 » && vex.register_specifier > 0x7)
11122 » {
11123 » dp = &bad_opcode;
11124 » return dp;
11125 » }
11126
11127 vex.length = (*codep & 0x4) ? 256 : 128;
11128 switch ((*codep & 0x3))
11129 » {
11130 » case 0:
11131 » vex.prefix = 0;
11132 » break;
11133 » case 1:
11134 » vex.prefix = DATA_PREFIX_OPCODE;
11135 » break;
11136 » case 2:
11137 » vex.prefix = REPE_PREFIX_OPCODE;
11138 » break;
11139 » case 3:
11140 » vex.prefix = REPNE_PREFIX_OPCODE;
11141 » break;
11142 » }
11143 need_vex = 1;
11144 need_vex_reg = 1;
11145 codep++;
11146 vindex = *codep++;
11147 dp = &xop_table[vex_table_index][vindex];
11148
11149 FETCH_DATA (info, codep + 1);
11150 modrm.mod = (*codep >> 6) & 3;
11151 modrm.reg = (*codep >> 3) & 7;
11152 modrm.rm = *codep & 7;
9313 break; 11153 break;
9314 11154
9315 case USE_VEX_C4_TABLE: 11155 case USE_VEX_C4_TABLE:
9316 FETCH_DATA (info, codep + 3); 11156 FETCH_DATA (info, codep + 3);
9317 /* All bits in the REX prefix are ignored. */ 11157 /* All bits in the REX prefix are ignored. */
9318 rex_ignored = rex; 11158 rex_ignored = rex;
9319 rex = ~(*codep >> 5) & 0x7; 11159 rex = ~(*codep >> 5) & 0x7;
9320 switch ((*codep & 0x1f)) 11160 switch ((*codep & 0x1f))
9321 { 11161 {
9322 default: 11162 default:
9323 » BadOp (); 11163 » dp = &bad_opcode;
11164 » return dp;
9324 case 0x1: 11165 case 0x1:
9325 » vex_table_index = 0; 11166 » vex_table_index = VEX_0F;
9326 break; 11167 break;
9327 case 0x2: 11168 case 0x2:
9328 » vex_table_index = 1; 11169 » vex_table_index = VEX_0F38;
9329 break; 11170 break;
9330 case 0x3: 11171 case 0x3:
9331 » vex_table_index = 2; 11172 » vex_table_index = VEX_0F3A;
9332 break; 11173 break;
9333 } 11174 }
9334 codep++; 11175 codep++;
9335 vex.w = *codep & 0x80; 11176 vex.w = *codep & 0x80;
9336 if (vex.w && address_mode == mode_64bit) 11177 if (vex.w && address_mode == mode_64bit)
9337 rex |= REX_W; 11178 rex |= REX_W;
9338 11179
9339 vex.register_specifier = (~(*codep >> 3)) & 0xf; 11180 vex.register_specifier = (~(*codep >> 3)) & 0xf;
9340 if (address_mode != mode_64bit 11181 if (address_mode != mode_64bit
9341 && vex.register_specifier > 0x7) 11182 && vex.register_specifier > 0x7)
9342 » BadOp (); 11183 » {
11184 » dp = &bad_opcode;
11185 » return dp;
11186 » }
9343 11187
9344 vex.length = (*codep & 0x4) ? 256 : 128; 11188 vex.length = (*codep & 0x4) ? 256 : 128;
9345 switch ((*codep & 0x3)) 11189 switch ((*codep & 0x3))
9346 { 11190 {
9347 case 0: 11191 case 0:
9348 vex.prefix = 0; 11192 vex.prefix = 0;
9349 break; 11193 break;
9350 case 1: 11194 case 1:
9351 vex.prefix = DATA_PREFIX_OPCODE; 11195 vex.prefix = DATA_PREFIX_OPCODE;
9352 break; 11196 break;
9353 case 2: 11197 case 2:
9354 vex.prefix = REPE_PREFIX_OPCODE; 11198 vex.prefix = REPE_PREFIX_OPCODE;
9355 break; 11199 break;
9356 case 3: 11200 case 3:
9357 vex.prefix = REPNE_PREFIX_OPCODE; 11201 vex.prefix = REPNE_PREFIX_OPCODE;
9358 break; 11202 break;
9359 } 11203 }
9360 need_vex = 1; 11204 need_vex = 1;
9361 need_vex_reg = 1; 11205 need_vex_reg = 1;
9362 codep++; 11206 codep++;
9363 index = *codep++; 11207 vindex = *codep++;
9364 dp = &vex_table[vex_table_index][index]; 11208 dp = &vex_table[vex_table_index][vindex];
9365 /* There is no MODRM byte for VEX [82|77]. */ 11209 /* There is no MODRM byte for VEX [82|77]. */
9366 if (index != 0x77 && index != 0x82) 11210 if (vindex != 0x77 && vindex != 0x82)
9367 { 11211 {
9368 FETCH_DATA (info, codep + 1); 11212 FETCH_DATA (info, codep + 1);
9369 modrm.mod = (*codep >> 6) & 3; 11213 modrm.mod = (*codep >> 6) & 3;
9370 modrm.reg = (*codep >> 3) & 7; 11214 modrm.reg = (*codep >> 3) & 7;
9371 modrm.rm = *codep & 7; 11215 modrm.rm = *codep & 7;
9372 } 11216 }
9373 break; 11217 break;
9374 11218
9375 case USE_VEX_C5_TABLE: 11219 case USE_VEX_C5_TABLE:
9376 FETCH_DATA (info, codep + 2); 11220 FETCH_DATA (info, codep + 2);
9377 /* All bits in the REX prefix are ignored. */ 11221 /* All bits in the REX prefix are ignored. */
9378 rex_ignored = rex; 11222 rex_ignored = rex;
9379 rex = (*codep & 0x80) ? 0 : REX_R; 11223 rex = (*codep & 0x80) ? 0 : REX_R;
9380 11224
9381 vex.register_specifier = (~(*codep >> 3)) & 0xf; 11225 vex.register_specifier = (~(*codep >> 3)) & 0xf;
9382 if (address_mode != mode_64bit 11226 if (address_mode != mode_64bit
9383 && vex.register_specifier > 0x7) 11227 && vex.register_specifier > 0x7)
9384 » BadOp (); 11228 » {
11229 » dp = &bad_opcode;
11230 » return dp;
11231 » }
11232
11233 vex.w = 0;
9385 11234
9386 vex.length = (*codep & 0x4) ? 256 : 128; 11235 vex.length = (*codep & 0x4) ? 256 : 128;
9387 switch ((*codep & 0x3)) 11236 switch ((*codep & 0x3))
9388 { 11237 {
9389 case 0: 11238 case 0:
9390 vex.prefix = 0; 11239 vex.prefix = 0;
9391 break; 11240 break;
9392 case 1: 11241 case 1:
9393 vex.prefix = DATA_PREFIX_OPCODE; 11242 vex.prefix = DATA_PREFIX_OPCODE;
9394 break; 11243 break;
9395 case 2: 11244 case 2:
9396 vex.prefix = REPE_PREFIX_OPCODE; 11245 vex.prefix = REPE_PREFIX_OPCODE;
9397 break; 11246 break;
9398 case 3: 11247 case 3:
9399 vex.prefix = REPNE_PREFIX_OPCODE; 11248 vex.prefix = REPNE_PREFIX_OPCODE;
9400 break; 11249 break;
9401 } 11250 }
9402 need_vex = 1; 11251 need_vex = 1;
9403 need_vex_reg = 1; 11252 need_vex_reg = 1;
9404 codep++; 11253 codep++;
9405 index = *codep++; 11254 vindex = *codep++;
9406 dp = &vex_table[dp->op[1].bytemode][index]; 11255 dp = &vex_table[dp->op[1].bytemode][vindex];
9407 /* There is no MODRM byte for VEX [82|77]. */ 11256 /* There is no MODRM byte for VEX [82|77]. */
9408 if (index != 0x77 && index != 0x82) 11257 if (vindex != 0x77 && vindex != 0x82)
9409 { 11258 {
9410 FETCH_DATA (info, codep + 1); 11259 FETCH_DATA (info, codep + 1);
9411 modrm.mod = (*codep >> 6) & 3; 11260 modrm.mod = (*codep >> 6) & 3;
9412 modrm.reg = (*codep >> 3) & 7; 11261 modrm.reg = (*codep >> 3) & 7;
9413 modrm.rm = *codep & 7; 11262 modrm.rm = *codep & 7;
9414 } 11263 }
9415 break; 11264 break;
9416 11265
11266 case USE_VEX_W_TABLE:
11267 if (!need_vex)
11268 abort ();
11269
11270 dp = &vex_w_table[dp->op[1].bytemode][vex.w ? 1 : 0];
11271 break;
11272
11273 case 0:
11274 dp = &bad_opcode;
11275 break;
11276
9417 default: 11277 default:
9418 abort (); 11278 abort ();
9419 } 11279 }
9420 11280
9421 if (dp->name != NULL) 11281 if (dp->name != NULL)
9422 return dp; 11282 return dp;
9423 else 11283 else
9424 return get_valid_dis386 (dp, info); 11284 return get_valid_dis386 (dp, info);
9425 } 11285 }
9426 11286
11287 static void
11288 get_sib (disassemble_info *info, int sizeflag)
11289 {
11290 /* If modrm.mod == 3, operand must be register. */
11291 if (need_modrm
11292 && ((sizeflag & AFLAG) || address_mode == mode_64bit)
11293 && modrm.mod != 3
11294 && modrm.rm == 4)
11295 {
11296 FETCH_DATA (info, codep + 2);
11297 sib.index = (codep [1] >> 3) & 7;
11298 sib.scale = (codep [1] >> 6) & 3;
11299 sib.base = codep [1] & 7;
11300 }
11301 }
11302
9427 static int 11303 static int
9428 print_insn (bfd_vma pc, disassemble_info *info) 11304 print_insn (bfd_vma pc, disassemble_info *info)
9429 { 11305 {
9430 const struct dis386 *dp; 11306 const struct dis386 *dp;
9431 int i; 11307 int i;
9432 char *op_txt[MAX_OPERANDS]; 11308 char *op_txt[MAX_OPERANDS];
9433 int needcomma; 11309 int needcomma;
9434 int sizeflag; 11310 int sizeflag;
9435 const char *p; 11311 const char *p;
9436 struct dis_private priv; 11312 struct dis_private priv;
9437 unsigned char op; 11313 int prefix_length;
9438 char prefix_obuf[32]; 11314 int default_prefixes;
9439 char *prefix_obufp;
9440 11315
9441 if (info->mach == bfd_mach_x86_64_intel_syntax 11316 priv.orig_sizeflag = AFLAG | DFLAG;
9442 || info->mach == bfd_mach_x86_64 11317 if ((info->mach & bfd_mach_i386_i386) != 0)
9443 || info->mach == bfd_mach_l1om 11318 address_mode = mode_32bit;
9444 || info->mach == bfd_mach_l1om_intel_syntax) 11319 else if (info->mach == bfd_mach_i386_i8086)
11320 {
11321 address_mode = mode_16bit;
11322 priv.orig_sizeflag = 0;
11323 }
11324 else
9445 address_mode = mode_64bit; 11325 address_mode = mode_64bit;
9446 else
9447 address_mode = mode_32bit;
9448 11326
9449 if (intel_syntax == (char) -1) 11327 if (intel_syntax == (char) -1)
9450 intel_syntax = (info->mach == bfd_mach_i386_i386_intel_syntax 11328 intel_syntax = (info->mach & bfd_mach_i386_i386_intel_syntax) != 0;
9451 » » || info->mach == bfd_mach_x86_64_intel_syntax
9452 » » || info->mach == bfd_mach_l1om_intel_syntax);
9453
9454 if (info->mach == bfd_mach_i386_i386
9455 || info->mach == bfd_mach_x86_64
9456 || info->mach == bfd_mach_l1om
9457 || info->mach == bfd_mach_i386_i386_intel_syntax
9458 || info->mach == bfd_mach_x86_64_intel_syntax
9459 || info->mach == bfd_mach_l1om_intel_syntax)
9460 priv.orig_sizeflag = AFLAG | DFLAG;
9461 else if (info->mach == bfd_mach_i386_i8086)
9462 priv.orig_sizeflag = 0;
9463 else
9464 abort ();
9465 11329
9466 for (p = info->disassembler_options; p != NULL; ) 11330 for (p = info->disassembler_options; p != NULL; )
9467 { 11331 {
9468 if (CONST_STRNEQ (p, "x86-64")) 11332 if (CONST_STRNEQ (p, "x86-64"))
9469 { 11333 {
9470 address_mode = mode_64bit; 11334 address_mode = mode_64bit;
9471 priv.orig_sizeflag = AFLAG | DFLAG; 11335 priv.orig_sizeflag = AFLAG | DFLAG;
9472 } 11336 }
9473 else if (CONST_STRNEQ (p, "i386")) 11337 else if (CONST_STRNEQ (p, "i386"))
9474 { 11338 {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
9525 } 11389 }
9526 11390
9527 if (intel_syntax) 11391 if (intel_syntax)
9528 { 11392 {
9529 names64 = intel_names64; 11393 names64 = intel_names64;
9530 names32 = intel_names32; 11394 names32 = intel_names32;
9531 names16 = intel_names16; 11395 names16 = intel_names16;
9532 names8 = intel_names8; 11396 names8 = intel_names8;
9533 names8rex = intel_names8rex; 11397 names8rex = intel_names8rex;
9534 names_seg = intel_names_seg; 11398 names_seg = intel_names_seg;
11399 names_mm = intel_names_mm;
11400 names_xmm = intel_names_xmm;
11401 names_ymm = intel_names_ymm;
9535 index64 = intel_index64; 11402 index64 = intel_index64;
9536 index32 = intel_index32; 11403 index32 = intel_index32;
9537 index16 = intel_index16; 11404 index16 = intel_index16;
9538 open_char = '['; 11405 open_char = '[';
9539 close_char = ']'; 11406 close_char = ']';
9540 separator_char = '+'; 11407 separator_char = '+';
9541 scale_char = '*'; 11408 scale_char = '*';
9542 } 11409 }
9543 else 11410 else
9544 { 11411 {
9545 names64 = att_names64; 11412 names64 = att_names64;
9546 names32 = att_names32; 11413 names32 = att_names32;
9547 names16 = att_names16; 11414 names16 = att_names16;
9548 names8 = att_names8; 11415 names8 = att_names8;
9549 names8rex = att_names8rex; 11416 names8rex = att_names8rex;
9550 names_seg = att_names_seg; 11417 names_seg = att_names_seg;
11418 names_mm = att_names_mm;
11419 names_xmm = att_names_xmm;
11420 names_ymm = att_names_ymm;
9551 index64 = att_index64; 11421 index64 = att_index64;
9552 index32 = att_index32; 11422 index32 = att_index32;
9553 index16 = att_index16; 11423 index16 = att_index16;
9554 open_char = '('; 11424 open_char = '(';
9555 close_char = ')'; 11425 close_char = ')';
9556 separator_char = ','; 11426 separator_char = ',';
9557 scale_char = ','; 11427 scale_char = ',';
9558 } 11428 }
9559 11429
9560 /* The output looks better if we put 7 bytes on a line, since that 11430 /* The output looks better if we put 7 bytes on a line, since that
9561 puts most long word instructions on a single line. Use 8 bytes 11431 puts most long word instructions on a single line. Use 8 bytes
9562 for Intel L1OM. */ 11432 for Intel L1OM. */
9563 if (info->mach == bfd_mach_l1om 11433 if ((info->mach & bfd_mach_l1om) != 0)
9564 || info->mach == bfd_mach_l1om_intel_syntax)
9565 info->bytes_per_line = 8; 11434 info->bytes_per_line = 8;
9566 else 11435 else
9567 info->bytes_per_line = 7; 11436 info->bytes_per_line = 7;
9568 11437
9569 info->private_data = &priv; 11438 info->private_data = &priv;
9570 priv.max_fetched = priv.the_buffer; 11439 priv.max_fetched = priv.the_buffer;
9571 priv.insn_start = pc; 11440 priv.insn_start = pc;
9572 11441
9573 obuf[0] = 0; 11442 obuf[0] = 0;
9574 for (i = 0; i < MAX_OPERANDS; ++i) 11443 for (i = 0; i < MAX_OPERANDS; ++i)
(...skipping 26 matching lines...) Expand all
9601 (unsigned int) priv.the_buffer[0]); 11470 (unsigned int) priv.the_buffer[0]);
9602 } 11471 }
9603 11472
9604 return 1; 11473 return 1;
9605 } 11474 }
9606 11475
9607 return -1; 11476 return -1;
9608 } 11477 }
9609 11478
9610 obufp = obuf; 11479 obufp = obuf;
9611 ckprefix (); 11480 sizeflag = priv.orig_sizeflag;
11481
11482 if (!ckprefix () || rex_used)
11483 {
11484 /* Too many prefixes or unused REX prefixes. */
11485 for (i = 0;
11486 » i < (int) ARRAY_SIZE (all_prefixes) && all_prefixes[i];
11487 » i++)
11488 » (*info->fprintf_func) (info->stream, "%s%s",
11489 » » » i == 0 ? "" : " ",
11490 » » » prefix_name (all_prefixes[i], sizeflag));
11491 return i;
11492 }
9612 11493
9613 insn_codep = codep; 11494 insn_codep = codep;
9614 sizeflag = priv.orig_sizeflag;
9615 11495
9616 FETCH_DATA (info, codep + 1); 11496 FETCH_DATA (info, codep + 1);
9617 two_source_ops = (*codep == 0x62) || (*codep == 0xc8); 11497 two_source_ops = (*codep == 0x62) || (*codep == 0xc8);
9618 11498
9619 if (((prefixes & PREFIX_FWAIT) 11499 if (((prefixes & PREFIX_FWAIT)
9620 && ((*codep < 0xd8) || (*codep > 0xdf))) 11500 && ((*codep < 0xd8) || (*codep > 0xdf))))
9621 || (rex && rex_used))
9622 { 11501 {
9623 const char *name; 11502 (*info->fprintf_func) (info->stream, "fwait");
9624
9625 /* fwait not followed by floating point instruction, or rex followed
9626 » by other prefixes. Print the first prefix. */
9627 name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag);
9628 if (name == NULL)
9629 » name = INTERNAL_DISASSEMBLER_ERROR;
9630 (*info->fprintf_func) (info->stream, "%s", name);
9631 return 1; 11503 return 1;
9632 } 11504 }
9633 11505
9634 op = 0;
9635
9636 if (*codep == 0x0f) 11506 if (*codep == 0x0f)
9637 { 11507 {
9638 unsigned char threebyte; 11508 unsigned char threebyte;
9639 FETCH_DATA (info, codep + 2); 11509 FETCH_DATA (info, codep + 2);
9640 threebyte = *++codep; 11510 threebyte = *++codep;
9641 dp = &dis386_twobyte[threebyte]; 11511 dp = &dis386_twobyte[threebyte];
9642 need_modrm = twobyte_has_modrm[*codep]; 11512 need_modrm = twobyte_has_modrm[*codep];
9643 codep++; 11513 codep++;
9644 } 11514 }
9645 else 11515 else
9646 { 11516 {
9647 dp = &dis386[*codep]; 11517 dp = &dis386[*codep];
9648 need_modrm = onebyte_has_modrm[*codep]; 11518 need_modrm = onebyte_has_modrm[*codep];
9649 codep++; 11519 codep++;
9650 } 11520 }
9651 11521
9652 if ((prefixes & PREFIX_REPZ)) 11522 if ((prefixes & PREFIX_REPZ))
9653 { 11523 used_prefixes |= PREFIX_REPZ;
9654 repz_prefix = "repz "; 11524 if ((prefixes & PREFIX_REPNZ))
9655 used_prefixes |= PREFIX_REPZ; 11525 used_prefixes |= PREFIX_REPNZ;
9656 } 11526 if ((prefixes & PREFIX_LOCK))
9657 else 11527 used_prefixes |= PREFIX_LOCK;
9658 repz_prefix = NULL;
9659 11528
9660 if ((prefixes & PREFIX_REPNZ)) 11529 default_prefixes = 0;
9661 {
9662 repnz_prefix = "repnz ";
9663 used_prefixes |= PREFIX_REPNZ;
9664 }
9665 else
9666 repnz_prefix = NULL;
9667
9668 if ((prefixes & PREFIX_LOCK))
9669 {
9670 lock_prefix = "lock ";
9671 used_prefixes |= PREFIX_LOCK;
9672 }
9673 else
9674 lock_prefix = NULL;
9675
9676 addr_prefix = NULL;
9677 if (prefixes & PREFIX_ADDR) 11530 if (prefixes & PREFIX_ADDR)
9678 { 11531 {
9679 sizeflag ^= AFLAG; 11532 sizeflag ^= AFLAG;
9680 if (dp->op[2].bytemode != loop_jcxz_mode || intel_syntax) 11533 if (dp->op[2].bytemode != loop_jcxz_mode || intel_syntax)
9681 { 11534 {
9682 if ((sizeflag & AFLAG) || address_mode == mode_64bit) 11535 if ((sizeflag & AFLAG) || address_mode == mode_64bit)
9683 » addr_prefix = "addr32 "; 11536 » all_prefixes[last_addr_prefix] = ADDR32_PREFIX;
9684 else 11537 else
9685 » addr_prefix = "addr16 "; 11538 » all_prefixes[last_addr_prefix] = ADDR16_PREFIX;
9686 » used_prefixes |= PREFIX_ADDR; 11539 » default_prefixes |= PREFIX_ADDR;
9687 } 11540 }
9688 } 11541 }
9689 11542
9690 data_prefix = NULL;
9691 if ((prefixes & PREFIX_DATA)) 11543 if ((prefixes & PREFIX_DATA))
9692 { 11544 {
9693 sizeflag ^= DFLAG; 11545 sizeflag ^= DFLAG;
9694 if (dp->op[2].bytemode == cond_jump_mode 11546 if (dp->op[2].bytemode == cond_jump_mode
9695 && dp->op[0].bytemode == v_mode 11547 && dp->op[0].bytemode == v_mode
9696 && !intel_syntax) 11548 && !intel_syntax)
9697 { 11549 {
9698 if (sizeflag & DFLAG) 11550 if (sizeflag & DFLAG)
9699 » data_prefix = "data32 "; 11551 » all_prefixes[last_data_prefix] = DATA32_PREFIX;
9700 else 11552 else
9701 » data_prefix = "data16 "; 11553 » all_prefixes[last_data_prefix] = DATA16_PREFIX;
9702 » used_prefixes |= PREFIX_DATA; 11554 » default_prefixes |= PREFIX_DATA;
11555 » }
11556 else if (rex & REX_W)
11557 » {
11558 » /* REX_W will override PREFIX_DATA. */
11559 » default_prefixes |= PREFIX_DATA;
9703 } 11560 }
9704 } 11561 }
9705 11562
9706 if (need_modrm) 11563 if (need_modrm)
9707 { 11564 {
9708 FETCH_DATA (info, codep + 1); 11565 FETCH_DATA (info, codep + 1);
9709 modrm.mod = (*codep >> 6) & 3; 11566 modrm.mod = (*codep >> 6) & 3;
9710 modrm.reg = (*codep >> 3) & 7; 11567 modrm.reg = (*codep >> 3) & 7;
9711 modrm.rm = *codep & 7; 11568 modrm.rm = *codep & 7;
9712 } 11569 }
9713 11570
11571 need_vex = 0;
11572 need_vex_reg = 0;
11573 vex_w_done = 0;
11574
9714 if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE) 11575 if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE)
9715 { 11576 {
11577 get_sib (info, sizeflag);
9716 dofloat (sizeflag); 11578 dofloat (sizeflag);
9717 } 11579 }
9718 else 11580 else
9719 { 11581 {
9720 need_vex = 0;
9721 need_vex_reg = 0;
9722 vex_w_done = 0;
9723 dp = get_valid_dis386 (dp, info); 11582 dp = get_valid_dis386 (dp, info);
9724 if (dp != NULL && putop (dp->name, sizeflag) == 0) 11583 if (dp != NULL && putop (dp->name, sizeflag) == 0)
9725 { 11584 » {
11585 » get_sib (info, sizeflag);
9726 for (i = 0; i < MAX_OPERANDS; ++i) 11586 for (i = 0; i < MAX_OPERANDS; ++i)
9727 { 11587 {
9728 obufp = op_out[i]; 11588 obufp = op_out[i];
9729 op_ad = MAX_OPERANDS - 1 - i; 11589 op_ad = MAX_OPERANDS - 1 - i;
9730 if (dp->op[i].rtn) 11590 if (dp->op[i].rtn)
9731 (*dp->op[i].rtn) (dp->op[i].bytemode, sizeflag); 11591 (*dp->op[i].rtn) (dp->op[i].bytemode, sizeflag);
9732 } 11592 }
9733 } 11593 }
9734 } 11594 }
9735 11595
9736 /* See if any prefixes were not used. If so, print the first one 11596 /* See if any prefixes were not used. If so, print the first one
9737 separately. If we don't do this, we'll wind up printing an 11597 separately. If we don't do this, we'll wind up printing an
9738 instruction stream which does not precisely correspond to the 11598 instruction stream which does not precisely correspond to the
9739 bytes we are disassembling. */ 11599 bytes we are disassembling. */
9740 if ((prefixes & ~used_prefixes) != 0) 11600 if ((prefixes & ~(used_prefixes | default_prefixes)) != 0)
9741 { 11601 {
9742 const char *name; 11602 for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++)
9743 11603 » if (all_prefixes[i])
9744 name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag); 11604 » {
9745 if (name == NULL) 11605 » const char *name;
9746 » name = INTERNAL_DISASSEMBLER_ERROR; 11606 » name = prefix_name (all_prefixes[i], priv.orig_sizeflag);
9747 (*info->fprintf_func) (info->stream, "%s", name); 11607 » if (name == NULL)
9748 return 1; 11608 » name = INTERNAL_DISASSEMBLER_ERROR;
9749 } 11609 » (*info->fprintf_func) (info->stream, "%s", name);
9750 if ((rex_original & ~rex_used) || rex_ignored) 11610 » return 1;
9751 { 11611 » }
9752 const char *name;
9753 name = prefix_name (rex_original, priv.orig_sizeflag);
9754 if (name == NULL)
9755 » name = INTERNAL_DISASSEMBLER_ERROR;
9756 (*info->fprintf_func) (info->stream, "%s ", name);
9757 } 11612 }
9758 11613
9759 prefix_obuf[0] = 0; 11614 /* Check if the REX prefix is used. */
9760 prefix_obufp = prefix_obuf; 11615 if (rex_ignored == 0 && (rex ^ rex_used) == 0)
9761 if (lock_prefix) 11616 all_prefixes[last_rex_prefix] = 0;
9762 prefix_obufp = stpcpy (prefix_obufp, lock_prefix);
9763 if (repz_prefix)
9764 prefix_obufp = stpcpy (prefix_obufp, repz_prefix);
9765 if (repnz_prefix)
9766 prefix_obufp = stpcpy (prefix_obufp, repnz_prefix);
9767 if (addr_prefix)
9768 prefix_obufp = stpcpy (prefix_obufp, addr_prefix);
9769 if (data_prefix)
9770 prefix_obufp = stpcpy (prefix_obufp, data_prefix);
9771 11617
9772 if (prefix_obuf[0] != 0) 11618 /* Check if the SEG prefix is used. */
9773 (*info->fprintf_func) (info->stream, "%s", prefix_obuf); 11619 if ((prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS | PREFIX_ES
11620 » » | PREFIX_FS | PREFIX_GS)) != 0
11621 && (used_prefixes
11622 » & seg_prefix (all_prefixes[last_seg_prefix])) != 0)
11623 all_prefixes[last_seg_prefix] = 0;
11624
11625 /* Check if the ADDR prefix is used. */
11626 if ((prefixes & PREFIX_ADDR) != 0
11627 && (used_prefixes & PREFIX_ADDR) != 0)
11628 all_prefixes[last_addr_prefix] = 0;
11629
11630 /* Check if the DATA prefix is used. */
11631 if ((prefixes & PREFIX_DATA) != 0
11632 && (used_prefixes & PREFIX_DATA) != 0)
11633 all_prefixes[last_data_prefix] = 0;
11634
11635 prefix_length = 0;
11636 for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++)
11637 if (all_prefixes[i])
11638 {
11639 » const char *name;
11640 » name = prefix_name (all_prefixes[i], sizeflag);
11641 » if (name == NULL)
11642 » abort ();
11643 » prefix_length += strlen (name) + 1;
11644 » (*info->fprintf_func) (info->stream, "%s ", name);
11645 }
11646
11647 /* Check maximum code length. */
11648 if ((codep - start_codep) > MAX_CODE_LENGTH)
11649 {
11650 (*info->fprintf_func) (info->stream, "(bad)");
11651 return MAX_CODE_LENGTH;
11652 }
9774 11653
9775 obufp = mnemonicendp; 11654 obufp = mnemonicendp;
9776 for (i = strlen (obuf) + strlen (prefix_obuf); i < 6; i++) 11655 for (i = strlen (obuf) + prefix_length; i < 6; i++)
9777 oappend (" "); 11656 oappend (" ");
9778 oappend (" "); 11657 oappend (" ");
9779 (*info->fprintf_func) (info->stream, "%s", obuf); 11658 (*info->fprintf_func) (info->stream, "%s", obuf);
9780 11659
9781 /* The enter and bound instructions are printed with operands in the same 11660 /* The enter and bound instructions are printed with operands in the same
9782 order as the intel book; everything else is printed in reverse order. */ 11661 order as the intel book; everything else is printed in reverse order. */
9783 if (intel_syntax || two_source_ops) 11662 if (intel_syntax || two_source_ops)
9784 { 11663 {
9785 bfd_vma riprel; 11664 bfd_vma riprel;
9786 11665
9787 for (i = 0; i < MAX_OPERANDS; ++i) 11666 for (i = 0; i < MAX_OPERANDS; ++i)
9788 op_txt[i] = op_out[i]; 11667 » op_txt[i] = op_out[i];
9789 11668
9790 for (i = 0; i < (MAX_OPERANDS >> 1); ++i) 11669 for (i = 0; i < (MAX_OPERANDS >> 1); ++i)
9791 { 11670 {
9792 op_ad = op_index[i]; 11671 » op_ad = op_index[i];
9793 op_index[i] = op_index[MAX_OPERANDS - 1 - i]; 11672 » op_index[i] = op_index[MAX_OPERANDS - 1 - i];
9794 op_index[MAX_OPERANDS - 1 - i] = op_ad; 11673 » op_index[MAX_OPERANDS - 1 - i] = op_ad;
9795 riprel = op_riprel[i]; 11674 riprel = op_riprel[i];
9796 op_riprel[i] = op_riprel [MAX_OPERANDS - 1 - i]; 11675 op_riprel[i] = op_riprel [MAX_OPERANDS - 1 - i];
9797 op_riprel[MAX_OPERANDS - 1 - i] = riprel; 11676 op_riprel[MAX_OPERANDS - 1 - i] = riprel;
9798 } 11677 }
9799 } 11678 }
9800 else 11679 else
9801 { 11680 {
9802 for (i = 0; i < MAX_OPERANDS; ++i) 11681 for (i = 0; i < MAX_OPERANDS; ++i)
9803 op_txt[MAX_OPERANDS - 1 - i] = op_out[i]; 11682 » op_txt[MAX_OPERANDS - 1 - i] = op_out[i];
9804 } 11683 }
9805 11684
9806 needcomma = 0; 11685 needcomma = 0;
9807 for (i = 0; i < MAX_OPERANDS; ++i) 11686 for (i = 0; i < MAX_OPERANDS; ++i)
9808 if (*op_txt[i]) 11687 if (*op_txt[i])
9809 { 11688 {
9810 if (needcomma) 11689 if (needcomma)
9811 (*info->fprintf_func) (info->stream, ","); 11690 (*info->fprintf_func) (info->stream, ",");
9812 if (op_index[i] != -1 && !op_riprel[i]) 11691 if (op_index[i] != -1 && !op_riprel[i])
9813 (*info->print_address_func) ((bfd_vma) op_address[op_index[i]], info); 11692 (*info->print_address_func) ((bfd_vma) op_address[op_index[i]], info);
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
10000 { "fsub", { ST, STi } }, 11879 { "fsub", { ST, STi } },
10001 { "fsubr", { ST, STi } }, 11880 { "fsubr", { ST, STi } },
10002 { "fdiv", { ST, STi } }, 11881 { "fdiv", { ST, STi } },
10003 { "fdivr", { ST, STi } }, 11882 { "fdivr", { ST, STi } },
10004 }, 11883 },
10005 /* d9 */ 11884 /* d9 */
10006 { 11885 {
10007 { "fld", { STi } }, 11886 { "fld", { STi } },
10008 { "fxch", { STi } }, 11887 { "fxch", { STi } },
10009 { FGRPd9_2 }, 11888 { FGRPd9_2 },
10010 { "(bad)",» { XX } }, 11889 { Bad_Opcode },
10011 { FGRPd9_4 }, 11890 { FGRPd9_4 },
10012 { FGRPd9_5 }, 11891 { FGRPd9_5 },
10013 { FGRPd9_6 }, 11892 { FGRPd9_6 },
10014 { FGRPd9_7 }, 11893 { FGRPd9_7 },
10015 }, 11894 },
10016 /* da */ 11895 /* da */
10017 { 11896 {
10018 { "fcmovb", { ST, STi } }, 11897 { "fcmovb", { ST, STi } },
10019 { "fcmove", { ST, STi } }, 11898 { "fcmove", { ST, STi } },
10020 { "fcmovbe",{ ST, STi } }, 11899 { "fcmovbe",{ ST, STi } },
10021 { "fcmovu", { ST, STi } }, 11900 { "fcmovu", { ST, STi } },
10022 { "(bad)",» { XX } }, 11901 { Bad_Opcode },
10023 { FGRPda_5 }, 11902 { FGRPda_5 },
10024 { "(bad)",» { XX } }, 11903 { Bad_Opcode },
10025 { "(bad)",» { XX } }, 11904 { Bad_Opcode },
10026 }, 11905 },
10027 /* db */ 11906 /* db */
10028 { 11907 {
10029 { "fcmovnb",{ ST, STi } }, 11908 { "fcmovnb",{ ST, STi } },
10030 { "fcmovne",{ ST, STi } }, 11909 { "fcmovne",{ ST, STi } },
10031 { "fcmovnbe",{ ST, STi } }, 11910 { "fcmovnbe",{ ST, STi } },
10032 { "fcmovnu",{ ST, STi } }, 11911 { "fcmovnu",{ ST, STi } },
10033 { FGRPdb_4 }, 11912 { FGRPdb_4 },
10034 { "fucomi", { ST, STi } }, 11913 { "fucomi", { ST, STi } },
10035 { "fcomi", { ST, STi } }, 11914 { "fcomi", { ST, STi } },
10036 { "(bad)",» { XX } }, 11915 { Bad_Opcode },
10037 }, 11916 },
10038 /* dc */ 11917 /* dc */
10039 { 11918 {
10040 { "fadd", { STi, ST } }, 11919 { "fadd", { STi, ST } },
10041 { "fmul", { STi, ST } }, 11920 { "fmul", { STi, ST } },
10042 { "(bad)",» { XX } }, 11921 { Bad_Opcode },
10043 { "(bad)",» { XX } }, 11922 { Bad_Opcode },
10044 { "fsub!M", { STi, ST } }, 11923 { "fsub!M", { STi, ST } },
10045 { "fsubM", { STi, ST } }, 11924 { "fsubM", { STi, ST } },
10046 { "fdiv!M", { STi, ST } }, 11925 { "fdiv!M", { STi, ST } },
10047 { "fdivM", { STi, ST } }, 11926 { "fdivM", { STi, ST } },
10048 }, 11927 },
10049 /* dd */ 11928 /* dd */
10050 { 11929 {
10051 { "ffree", { STi } }, 11930 { "ffree", { STi } },
10052 { "(bad)",» { XX } }, 11931 { Bad_Opcode },
10053 { "fst", { STi } }, 11932 { "fst", { STi } },
10054 { "fstp", { STi } }, 11933 { "fstp", { STi } },
10055 { "fucom", { STi } }, 11934 { "fucom", { STi } },
10056 { "fucomp", { STi } }, 11935 { "fucomp", { STi } },
10057 { "(bad)",» { XX } }, 11936 { Bad_Opcode },
10058 { "(bad)",» { XX } }, 11937 { Bad_Opcode },
10059 }, 11938 },
10060 /* de */ 11939 /* de */
10061 { 11940 {
10062 { "faddp", { STi, ST } }, 11941 { "faddp", { STi, ST } },
10063 { "fmulp", { STi, ST } }, 11942 { "fmulp", { STi, ST } },
10064 { "(bad)",» { XX } }, 11943 { Bad_Opcode },
10065 { FGRPde_3 }, 11944 { FGRPde_3 },
10066 { "fsub!Mp", { STi, ST } }, 11945 { "fsub!Mp", { STi, ST } },
10067 { "fsubMp", { STi, ST } }, 11946 { "fsubMp", { STi, ST } },
10068 { "fdiv!Mp", { STi, ST } }, 11947 { "fdiv!Mp", { STi, ST } },
10069 { "fdivMp", { STi, ST } }, 11948 { "fdivMp", { STi, ST } },
10070 }, 11949 },
10071 /* df */ 11950 /* df */
10072 { 11951 {
10073 { "ffreep", { STi } }, 11952 { "ffreep", { STi } },
10074 { "(bad)",» { XX } }, 11953 { Bad_Opcode },
10075 { "(bad)",» { XX } }, 11954 { Bad_Opcode },
10076 { "(bad)",» { XX } }, 11955 { Bad_Opcode },
10077 { FGRPdf_4 }, 11956 { FGRPdf_4 },
10078 { "fucomip", { ST, STi } }, 11957 { "fucomip", { ST, STi } },
10079 { "fcomip", { ST, STi } }, 11958 { "fcomip", { ST, STi } },
10080 { "(bad)",» { XX } }, 11959 { Bad_Opcode },
10081 }, 11960 },
10082 }; 11961 };
10083 11962
10084 static char *fgrps[][8] = { 11963 static char *fgrps[][8] = {
10085 /* d9_2 0 */ 11964 /* d9_2 0 */
10086 { 11965 {
10087 "fnop","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)", 11966 "fnop","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
10088 }, 11967 },
10089 11968
10090 /* d9_4 1 */ 11969 /* d9_4 1 */
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
10256 break; 12135 break;
10257 case '}': 12136 case '}':
10258 break; 12137 break;
10259 case 'A': 12138 case 'A':
10260 if (intel_syntax) 12139 if (intel_syntax)
10261 break; 12140 break;
10262 if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) 12141 if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
10263 *obufp++ = 'b'; 12142 *obufp++ = 'b';
10264 break; 12143 break;
10265 case 'B': 12144 case 'B':
10266 » if (intel_syntax) 12145 » if (l == 0 && len == 1)
10267 » break; 12146 » {
10268 » if (sizeflag & SUFFIX_ALWAYS) 12147 case_B:
10269 » *obufp++ = 'b'; 12148 » if (intel_syntax)
12149 » » break;
12150 » if (sizeflag & SUFFIX_ALWAYS)
12151 » » *obufp++ = 'b';
12152 » }
12153 » else
12154 » {
12155 » if (l != 1
12156 » » || len != 2
12157 » » || last[0] != 'L')
12158 » » {
12159 » » SAVE_LAST (*p);
12160 » » break;
12161 » » }
12162
12163 » if (address_mode == mode_64bit
12164 » » && !(prefixes & PREFIX_ADDR))
12165 » » {
12166 » » *obufp++ = 'a';
12167 » » *obufp++ = 'b';
12168 » » *obufp++ = 's';
12169 » » }
12170
12171 » goto case_B;
12172 » }
10270 break; 12173 break;
10271 case 'C': 12174 case 'C':
10272 if (intel_syntax && !alt) 12175 if (intel_syntax && !alt)
10273 break; 12176 break;
10274 if ((prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS)) 12177 if ((prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS))
10275 { 12178 {
10276 if (sizeflag & DFLAG) 12179 if (sizeflag & DFLAG)
10277 *obufp++ = intel_syntax ? 'd' : 'l'; 12180 *obufp++ = intel_syntax ? 'd' : 'l';
10278 else 12181 else
10279 *obufp++ = intel_syntax ? 'w' : 's'; 12182 *obufp++ = intel_syntax ? 'w' : 's';
10280 used_prefixes |= (prefixes & PREFIX_DATA); 12183 used_prefixes |= (prefixes & PREFIX_DATA);
10281 } 12184 }
10282 break; 12185 break;
10283 case 'D': 12186 case 'D':
10284 if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS)) 12187 if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
10285 break; 12188 break;
10286 USED_REX (REX_W); 12189 USED_REX (REX_W);
10287 if (modrm.mod == 3) 12190 if (modrm.mod == 3)
10288 { 12191 {
10289 if (rex & REX_W) 12192 if (rex & REX_W)
10290 *obufp++ = 'q'; 12193 *obufp++ = 'q';
10291 else if (sizeflag & DFLAG)
10292 *obufp++ = intel_syntax ? 'd' : 'l';
10293 else 12194 else
10294 » » *obufp++ = 'w'; 12195 » » {
10295 » used_prefixes |= (prefixes & PREFIX_DATA); 12196 » » if (sizeflag & DFLAG)
12197 » » *obufp++ = intel_syntax ? 'd' : 'l';
12198 » » else
12199 » » *obufp++ = 'w';
12200 » » used_prefixes |= (prefixes & PREFIX_DATA);
12201 » » }
10296 } 12202 }
10297 else 12203 else
10298 *obufp++ = 'w'; 12204 *obufp++ = 'w';
10299 break; 12205 break;
10300 case 'E': /* For jcxz/jecxz */ 12206 case 'E': /* For jcxz/jecxz */
10301 if (address_mode == mode_64bit) 12207 if (address_mode == mode_64bit)
10302 { 12208 {
10303 if (sizeflag & AFLAG) 12209 if (sizeflag & AFLAG)
10304 *obufp++ = 'r'; 12210 *obufp++ = 'r';
10305 else 12211 else
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
10396 if (rex & REX_W) 12302 if (rex & REX_W)
10397 *obufp++ = 'o'; 12303 *obufp++ = 'o';
10398 else if (intel_syntax && (sizeflag & DFLAG)) 12304 else if (intel_syntax && (sizeflag & DFLAG))
10399 *obufp++ = 'q'; 12305 *obufp++ = 'q';
10400 else 12306 else
10401 *obufp++ = 'd'; 12307 *obufp++ = 'd';
10402 if (!(rex & REX_W)) 12308 if (!(rex & REX_W))
10403 used_prefixes |= (prefixes & PREFIX_DATA); 12309 used_prefixes |= (prefixes & PREFIX_DATA);
10404 break; 12310 break;
10405 case 'T': 12311 case 'T':
10406 » if (intel_syntax) 12312 » if (!intel_syntax
10407 » break; 12313 » && address_mode == mode_64bit
10408 » if (address_mode == mode_64bit && (sizeflag & DFLAG)) 12314 » && ((sizeflag & DFLAG) || (rex & REX_W)))
10409 { 12315 {
10410 *obufp++ = 'q'; 12316 *obufp++ = 'q';
10411 break; 12317 break;
10412 } 12318 }
10413 /* Fall through. */ 12319 /* Fall through. */
10414 case 'P': 12320 case 'P':
10415 if (intel_syntax) 12321 if (intel_syntax)
10416 » break; 12322 » {
12323 » if ((rex & REX_W) == 0
12324 » » && (prefixes & PREFIX_DATA))
12325 » » {
12326 » » if ((sizeflag & DFLAG) == 0)
12327 » » *obufp++ = 'w';
12328 » » used_prefixes |= (prefixes & PREFIX_DATA);
12329 » » }
12330 » break;
12331 » }
10417 if ((prefixes & PREFIX_DATA) 12332 if ((prefixes & PREFIX_DATA)
10418 || (rex & REX_W) 12333 || (rex & REX_W)
10419 || (sizeflag & SUFFIX_ALWAYS)) 12334 || (sizeflag & SUFFIX_ALWAYS))
10420 { 12335 {
10421 USED_REX (REX_W); 12336 USED_REX (REX_W);
10422 if (rex & REX_W) 12337 if (rex & REX_W)
10423 *obufp++ = 'q'; 12338 *obufp++ = 'q';
10424 else 12339 else
10425 { 12340 {
10426 if (sizeflag & DFLAG) 12341 if (sizeflag & DFLAG)
10427 *obufp++ = 'l'; 12342 *obufp++ = 'l';
10428 else 12343 else
10429 *obufp++ = 'w'; 12344 *obufp++ = 'w';
12345 used_prefixes |= (prefixes & PREFIX_DATA);
10430 } 12346 }
10431 used_prefixes |= (prefixes & PREFIX_DATA);
10432 } 12347 }
10433 break; 12348 break;
10434 case 'U': 12349 case 'U':
10435 if (intel_syntax) 12350 if (intel_syntax)
10436 break; 12351 break;
10437 » if (address_mode == mode_64bit && (sizeflag & DFLAG)) 12352 » if (address_mode == mode_64bit
12353 » && ((sizeflag & DFLAG) || (rex & REX_W)))
10438 { 12354 {
10439 if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) 12355 if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
10440 *obufp++ = 'q'; 12356 *obufp++ = 'q';
10441 break; 12357 break;
10442 } 12358 }
10443 /* Fall through. */ 12359 /* Fall through. */
10444 goto case_Q; 12360 goto case_Q;
10445 case 'Q': 12361 case 'Q':
10446 if (l == 0 && len == 1) 12362 if (l == 0 && len == 1)
10447 { 12363 {
10448 case_Q: 12364 case_Q:
10449 if (intel_syntax && !alt) 12365 if (intel_syntax && !alt)
10450 break; 12366 break;
10451 USED_REX (REX_W); 12367 USED_REX (REX_W);
10452 if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS)) 12368 if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
10453 { 12369 {
10454 if (rex & REX_W) 12370 if (rex & REX_W)
10455 *obufp++ = 'q'; 12371 *obufp++ = 'q';
10456 else 12372 else
10457 { 12373 {
10458 if (sizeflag & DFLAG) 12374 if (sizeflag & DFLAG)
10459 *obufp++ = intel_syntax ? 'd' : 'l'; 12375 *obufp++ = intel_syntax ? 'd' : 'l';
10460 else 12376 else
10461 *obufp++ = 'w'; 12377 *obufp++ = 'w';
12378 used_prefixes |= (prefixes & PREFIX_DATA);
10462 } 12379 }
10463 used_prefixes |= (prefixes & PREFIX_DATA);
10464 } 12380 }
10465 } 12381 }
10466 else 12382 else
10467 { 12383 {
10468 if (l != 1 || len != 2 || last[0] != 'L') 12384 if (l != 1 || len != 2 || last[0] != 'L')
10469 { 12385 {
10470 SAVE_LAST (*p); 12386 SAVE_LAST (*p);
10471 break; 12387 break;
10472 } 12388 }
10473 if (intel_syntax 12389 if (intel_syntax
(...skipping 21 matching lines...) Expand all
10495 } 12411 }
10496 else 12412 else
10497 *obufp++ = 'w'; 12413 *obufp++ = 'w';
10498 if (intel_syntax && !p[1] 12414 if (intel_syntax && !p[1]
10499 && ((rex & REX_W) || (sizeflag & DFLAG))) 12415 && ((rex & REX_W) || (sizeflag & DFLAG)))
10500 *obufp++ = 'e'; 12416 *obufp++ = 'e';
10501 if (!(rex & REX_W)) 12417 if (!(rex & REX_W))
10502 used_prefixes |= (prefixes & PREFIX_DATA); 12418 used_prefixes |= (prefixes & PREFIX_DATA);
10503 break; 12419 break;
10504 case 'V': 12420 case 'V':
10505 » if (intel_syntax) 12421 » if (l == 0 && len == 1)
10506 » break;
10507 » if (address_mode == mode_64bit && (sizeflag & DFLAG))
10508 { 12422 {
10509 » if (sizeflag & SUFFIX_ALWAYS) 12423 » if (intel_syntax)
10510 » » *obufp++ = 'q'; 12424 » » break;
10511 » break; 12425 » if (address_mode == mode_64bit
12426 » » && ((sizeflag & DFLAG) || (rex & REX_W)))
12427 » » {
12428 » » if (sizeflag & SUFFIX_ALWAYS)
12429 » » *obufp++ = 'q';
12430 » » break;
12431 » » }
12432 » }
12433 » else
12434 » {
12435 » if (l != 1
12436 » » || len != 2
12437 » » || last[0] != 'L')
12438 » » {
12439 » » SAVE_LAST (*p);
12440 » » break;
12441 » » }
12442
12443 » if (rex & REX_W)
12444 » » {
12445 » » *obufp++ = 'a';
12446 » » *obufp++ = 'b';
12447 » » *obufp++ = 's';
12448 » » }
10512 } 12449 }
10513 /* Fall through. */ 12450 /* Fall through. */
12451 goto case_S;
10514 case 'S': 12452 case 'S':
10515 » if (intel_syntax) 12453 » if (l == 0 && len == 1)
10516 » break;
10517 » if (sizeflag & SUFFIX_ALWAYS)
10518 { 12454 {
10519 » if (rex & REX_W) 12455 case_S:
10520 » » *obufp++ = 'q'; 12456 » if (intel_syntax)
10521 » else 12457 » » break;
12458 » if (sizeflag & SUFFIX_ALWAYS)
10522 { 12459 {
10523 » » if (sizeflag & DFLAG) 12460 » » if (rex & REX_W)
10524 » » *obufp++ = 'l'; 12461 » » *obufp++ = 'q';
10525 else 12462 else
10526 » » *obufp++ = 'w'; 12463 » » {
10527 » » used_prefixes |= (prefixes & PREFIX_DATA); 12464 » » if (sizeflag & DFLAG)
12465 » » » *obufp++ = 'l';
12466 » » else
12467 » » » *obufp++ = 'w';
12468 » » used_prefixes |= (prefixes & PREFIX_DATA);
12469 » » }
10528 } 12470 }
10529 } 12471 }
12472 else
12473 {
12474 if (l != 1
12475 || len != 2
12476 || last[0] != 'L')
12477 {
12478 SAVE_LAST (*p);
12479 break;
12480 }
12481
12482 if (address_mode == mode_64bit
12483 && !(prefixes & PREFIX_ADDR))
12484 {
12485 *obufp++ = 'a';
12486 *obufp++ = 'b';
12487 *obufp++ = 's';
12488 }
12489
12490 goto case_S;
12491 }
10530 break; 12492 break;
10531 case 'X': 12493 case 'X':
10532 if (l != 0 || len != 1) 12494 if (l != 0 || len != 1)
10533 { 12495 {
10534 SAVE_LAST (*p); 12496 SAVE_LAST (*p);
10535 break; 12497 break;
10536 } 12498 }
10537 if (need_vex && vex.prefix) 12499 if (need_vex && vex.prefix)
10538 { 12500 {
10539 if (vex.prefix == DATA_PREFIX_OPCODE) 12501 if (vex.prefix == DATA_PREFIX_OPCODE)
10540 *obufp++ = 'd'; 12502 *obufp++ = 'd';
10541 else 12503 else
10542 *obufp++ = 's'; 12504 *obufp++ = 's';
10543 } 12505 }
10544 else if (prefixes & PREFIX_DATA)
10545 *obufp++ = 'd';
10546 else 12506 else
10547 » *obufp++ = 's'; 12507 » {
10548 » used_prefixes |= (prefixes & PREFIX_DATA); 12508 » if (prefixes & PREFIX_DATA)
12509 » » *obufp++ = 'd';
12510 » else
12511 » » *obufp++ = 's';
12512 » used_prefixes |= (prefixes & PREFIX_DATA);
12513 » }
10549 break; 12514 break;
10550 case 'Y': 12515 case 'Y':
10551 if (l == 0 && len == 1) 12516 if (l == 0 && len == 1)
10552 { 12517 {
10553 if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS)) 12518 if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
10554 break; 12519 break;
10555 if (rex & REX_W) 12520 if (rex & REX_W)
10556 { 12521 {
10557 USED_REX (REX_W); 12522 USED_REX (REX_W);
10558 *obufp++ = 'q'; 12523 *obufp++ = 'q';
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
10598 } 12563 }
10599 else if (sizeflag & DFLAG) 12564 else if (sizeflag & DFLAG)
10600 *obufp++ = 'w'; 12565 *obufp++ = 'w';
10601 else 12566 else
10602 *obufp++ = 'b'; 12567 *obufp++ = 'b';
10603 if (!(rex & REX_W)) 12568 if (!(rex & REX_W))
10604 used_prefixes |= (prefixes & PREFIX_DATA); 12569 used_prefixes |= (prefixes & PREFIX_DATA);
10605 } 12570 }
10606 else 12571 else
10607 { 12572 {
10608 » if (l != 1 || len != 2 || last[0] != 'X') 12573 » if (l != 1
12574 » » || len != 2
12575 » » || (last[0] != 'X'
12576 » » && last[0] != 'L'))
10609 { 12577 {
10610 SAVE_LAST (*p); 12578 SAVE_LAST (*p);
10611 break; 12579 break;
10612 } 12580 }
10613 if (!need_vex) 12581 if (!need_vex)
10614 abort (); 12582 abort ();
10615 » *obufp++ = vex.w ? 'd': 's'; 12583 » if (last[0] == 'X')
12584 » » *obufp++ = vex.w ? 'd': 's';
12585 » else
12586 » » *obufp++ = vex.w ? 'q': 'd';
10616 } 12587 }
10617 break; 12588 break;
10618 } 12589 }
10619 alt = 0; 12590 alt = 0;
10620 } 12591 }
10621 *obufp = 0; 12592 *obufp = 0;
10622 mnemonicendp = obufp; 12593 mnemonicendp = obufp;
10623 return 0; 12594 return 0;
10624 } 12595 }
10625 12596
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
10781 case b_mode: 12752 case b_mode:
10782 case b_swap_mode: 12753 case b_swap_mode:
10783 case dqb_mode: 12754 case dqb_mode:
10784 oappend ("BYTE PTR "); 12755 oappend ("BYTE PTR ");
10785 break; 12756 break;
10786 case w_mode: 12757 case w_mode:
10787 case dqw_mode: 12758 case dqw_mode:
10788 oappend ("WORD PTR "); 12759 oappend ("WORD PTR ");
10789 break; 12760 break;
10790 case stack_v_mode: 12761 case stack_v_mode:
10791 if (address_mode == mode_64bit && (sizeflag & DFLAG)) 12762 if (address_mode == mode_64bit && ((sizeflag & DFLAG) || (rex & REX_W)))
10792 { 12763 {
10793 oappend ("QWORD PTR "); 12764 oappend ("QWORD PTR ");
10794 used_prefixes |= (prefixes & PREFIX_DATA);
10795 break; 12765 break;
10796 } 12766 }
10797 /* FALLTHRU */ 12767 /* FALLTHRU */
10798 case v_mode: 12768 case v_mode:
10799 case v_swap_mode: 12769 case v_swap_mode:
10800 case dq_mode: 12770 case dq_mode:
10801 USED_REX (REX_W); 12771 USED_REX (REX_W);
10802 if (rex & REX_W) 12772 if (rex & REX_W)
10803 oappend ("QWORD PTR "); 12773 oappend ("QWORD PTR ");
10804 else if ((sizeflag & DFLAG) || bytemode == dq_mode)
10805 oappend ("DWORD PTR ");
10806 else 12774 else
10807 » oappend ("WORD PTR "); 12775 » {
10808 used_prefixes |= (prefixes & PREFIX_DATA); 12776 » if ((sizeflag & DFLAG) || bytemode == dq_mode)
12777 » oappend ("DWORD PTR ");
12778 » else
12779 » oappend ("WORD PTR ");
12780 » used_prefixes |= (prefixes & PREFIX_DATA);
12781 » }
10809 break; 12782 break;
10810 case z_mode: 12783 case z_mode:
10811 if ((rex & REX_W) || (sizeflag & DFLAG)) 12784 if ((rex & REX_W) || (sizeflag & DFLAG))
10812 *obufp++ = 'D'; 12785 *obufp++ = 'D';
10813 oappend ("WORD PTR "); 12786 oappend ("WORD PTR ");
10814 if (!(rex & REX_W)) 12787 if (!(rex & REX_W))
10815 used_prefixes |= (prefixes & PREFIX_DATA); 12788 used_prefixes |= (prefixes & PREFIX_DATA);
10816 break; 12789 break;
10817 case a_mode: 12790 case a_mode:
10818 if (sizeflag & DFLAG) 12791 if (sizeflag & DFLAG)
10819 oappend ("QWORD PTR "); 12792 oappend ("QWORD PTR ");
10820 else 12793 else
10821 oappend ("DWORD PTR "); 12794 oappend ("DWORD PTR ");
10822 used_prefixes |= (prefixes & PREFIX_DATA); 12795 used_prefixes |= (prefixes & PREFIX_DATA);
10823 break; 12796 break;
10824 case d_mode: 12797 case d_mode:
12798 case d_scalar_mode:
12799 case d_scalar_swap_mode:
10825 case d_swap_mode: 12800 case d_swap_mode:
10826 case dqd_mode: 12801 case dqd_mode:
10827 oappend ("DWORD PTR "); 12802 oappend ("DWORD PTR ");
10828 break; 12803 break;
10829 case q_mode: 12804 case q_mode:
12805 case q_scalar_mode:
12806 case q_scalar_swap_mode:
10830 case q_swap_mode: 12807 case q_swap_mode:
10831 oappend ("QWORD PTR "); 12808 oappend ("QWORD PTR ");
10832 break; 12809 break;
10833 case m_mode: 12810 case m_mode:
10834 if (address_mode == mode_64bit) 12811 if (address_mode == mode_64bit)
10835 oappend ("QWORD PTR "); 12812 oappend ("QWORD PTR ");
10836 else 12813 else
10837 oappend ("DWORD PTR "); 12814 oappend ("DWORD PTR ");
10838 break; 12815 break;
10839 case f_mode: 12816 case f_mode:
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
10877 case 128: 12854 case 128:
10878 oappend ("QWORD PTR "); 12855 oappend ("QWORD PTR ");
10879 break; 12856 break;
10880 case 256: 12857 case 256:
10881 oappend ("XMMWORD PTR "); 12858 oappend ("XMMWORD PTR ");
10882 break; 12859 break;
10883 default: 12860 default:
10884 abort (); 12861 abort ();
10885 } 12862 }
10886 break; 12863 break;
12864 case xmm_mb_mode:
12865 if (!need_vex)
12866 abort ();
12867
12868 switch (vex.length)
12869 {
12870 case 128:
12871 case 256:
12872 oappend ("BYTE PTR ");
12873 break;
12874 default:
12875 abort ();
12876 }
12877 break;
12878 case xmm_mw_mode:
12879 if (!need_vex)
12880 abort ();
12881
12882 switch (vex.length)
12883 {
12884 case 128:
12885 case 256:
12886 oappend ("WORD PTR ");
12887 break;
12888 default:
12889 abort ();
12890 }
12891 break;
12892 case xmm_md_mode:
12893 if (!need_vex)
12894 abort ();
12895
12896 switch (vex.length)
12897 {
12898 case 128:
12899 case 256:
12900 oappend ("DWORD PTR ");
12901 break;
12902 default:
12903 abort ();
12904 }
12905 break;
12906 case xmm_mq_mode:
12907 if (!need_vex)
12908 abort ();
12909
12910 switch (vex.length)
12911 {
12912 case 128:
12913 case 256:
12914 oappend ("QWORD PTR ");
12915 break;
12916 default:
12917 abort ();
12918 }
12919 break;
12920 case xmmdw_mode:
12921 if (!need_vex)
12922 abort ();
12923
12924 switch (vex.length)
12925 {
12926 case 128:
12927 oappend ("WORD PTR ");
12928 break;
12929 case 256:
12930 oappend ("DWORD PTR ");
12931 break;
12932 default:
12933 abort ();
12934 }
12935 break;
12936 case xmmqd_mode:
12937 if (!need_vex)
12938 abort ();
12939
12940 switch (vex.length)
12941 {
12942 case 128:
12943 oappend ("DWORD PTR ");
12944 break;
12945 case 256:
12946 oappend ("QWORD PTR ");
12947 break;
12948 default:
12949 abort ();
12950 }
12951 break;
10887 case ymmq_mode: 12952 case ymmq_mode:
10888 if (!need_vex) 12953 if (!need_vex)
10889 abort (); 12954 abort ();
10890 12955
10891 switch (vex.length) 12956 switch (vex.length)
10892 { 12957 {
10893 case 128: 12958 case 128:
10894 oappend ("QWORD PTR "); 12959 oappend ("QWORD PTR ");
10895 break; 12960 break;
10896 case 256: 12961 case 256:
10897 oappend ("YMMWORD PTR "); 12962 oappend ("YMMWORD PTR ");
10898 break; 12963 break;
10899 default: 12964 default:
10900 abort (); 12965 abort ();
10901 } 12966 }
10902 break; 12967 break;
12968 case ymmxmm_mode:
12969 if (!need_vex)
12970 abort ();
12971
12972 switch (vex.length)
12973 {
12974 case 128:
12975 case 256:
12976 oappend ("XMMWORD PTR ");
12977 break;
12978 default:
12979 abort ();
12980 }
12981 break;
10903 case o_mode: 12982 case o_mode:
10904 oappend ("OWORD PTR "); 12983 oappend ("OWORD PTR ");
10905 break; 12984 break;
10906 case vex_w_dq_mode: 12985 case vex_w_dq_mode:
12986 case vex_scalar_w_dq_mode:
12987 case vex_vsib_d_w_dq_mode:
12988 case vex_vsib_q_w_dq_mode:
10907 if (!need_vex) 12989 if (!need_vex)
10908 abort (); 12990 abort ();
10909 12991
10910 if (vex.w) 12992 if (vex.w)
10911 oappend ("QWORD PTR "); 12993 oappend ("QWORD PTR ");
10912 else 12994 else
10913 oappend ("DWORD PTR "); 12995 oappend ("DWORD PTR ");
10914 break; 12996 break;
10915 default: 12997 default:
10916 break; 12998 break;
(...skipping 30 matching lines...) Expand all
10947 case d_mode: 13029 case d_mode:
10948 names = names32; 13030 names = names32;
10949 break; 13031 break;
10950 case q_mode: 13032 case q_mode:
10951 names = names64; 13033 names = names64;
10952 break; 13034 break;
10953 case m_mode: 13035 case m_mode:
10954 names = address_mode == mode_64bit ? names64 : names32; 13036 names = address_mode == mode_64bit ? names64 : names32;
10955 break; 13037 break;
10956 case stack_v_mode: 13038 case stack_v_mode:
10957 if (address_mode == mode_64bit && (sizeflag & DFLAG)) 13039 if (address_mode == mode_64bit && ((sizeflag & DFLAG) || (rex & REX_W)))
10958 { 13040 {
10959 names = names64; 13041 names = names64;
10960 used_prefixes |= (prefixes & PREFIX_DATA);
10961 break; 13042 break;
10962 } 13043 }
10963 bytemode = v_mode; 13044 bytemode = v_mode;
10964 /* FALLTHRU */ 13045 /* FALLTHRU */
10965 case v_mode: 13046 case v_mode:
10966 case v_swap_mode: 13047 case v_swap_mode:
10967 case dq_mode: 13048 case dq_mode:
10968 case dqb_mode: 13049 case dqb_mode:
10969 case dqd_mode: 13050 case dqd_mode:
10970 case dqw_mode: 13051 case dqw_mode:
10971 USED_REX (REX_W); 13052 USED_REX (REX_W);
10972 if (rex & REX_W) 13053 if (rex & REX_W)
10973 names = names64; 13054 names = names64;
10974 else if ((sizeflag & DFLAG)
10975 || (bytemode != v_mode
10976 && bytemode != v_swap_mode))
10977 names = names32;
10978 else 13055 else
10979 » names = names16; 13056 » {
10980 used_prefixes |= (prefixes & PREFIX_DATA); 13057 » if ((sizeflag & DFLAG)
13058 » || (bytemode != v_mode
13059 » » && bytemode != v_swap_mode))
13060 » names = names32;
13061 » else
13062 » names = names16;
13063 » used_prefixes |= (prefixes & PREFIX_DATA);
13064 » }
10981 break; 13065 break;
10982 case 0: 13066 case 0:
10983 return; 13067 return;
10984 default: 13068 default:
10985 oappend (INTERNAL_DISASSEMBLER_ERROR); 13069 oappend (INTERNAL_DISASSEMBLER_ERROR);
10986 return; 13070 return;
10987 } 13071 }
10988 oappend (names[reg]); 13072 oappend (names[reg]);
10989 } 13073 }
10990 13074
(...skipping 11 matching lines...) Expand all
11002 13086
11003 if ((sizeflag & AFLAG) || address_mode == mode_64bit) 13087 if ((sizeflag & AFLAG) || address_mode == mode_64bit)
11004 { 13088 {
11005 /* 32/64 bit address mode */ 13089 /* 32/64 bit address mode */
11006 int havedisp; 13090 int havedisp;
11007 int havesib; 13091 int havesib;
11008 int havebase; 13092 int havebase;
11009 int haveindex; 13093 int haveindex;
11010 int needindex; 13094 int needindex;
11011 int base, rbase; 13095 int base, rbase;
11012 int index = 0; 13096 int vindex = 0;
11013 int scale = 0; 13097 int scale = 0;
13098 const char **indexes64 = names64;
13099 const char **indexes32 = names32;
11014 13100
11015 havesib = 0; 13101 havesib = 0;
11016 havebase = 1; 13102 havebase = 1;
11017 haveindex = 0; 13103 haveindex = 0;
11018 base = modrm.rm; 13104 base = modrm.rm;
11019 13105
11020 if (base == 4) 13106 if (base == 4)
11021 { 13107 {
11022 havesib = 1; 13108 havesib = 1;
11023 » FETCH_DATA (the_info, codep + 1); 13109 » vindex = sib.index;
11024 » index = (*codep >> 3) & 7;
11025 » scale = (*codep >> 6) & 3;
11026 » base = *codep & 7;
11027 USED_REX (REX_X); 13110 USED_REX (REX_X);
11028 if (rex & REX_X) 13111 if (rex & REX_X)
11029 » index += 8; 13112 » vindex += 8;
11030 » haveindex = index != 4; 13113 » switch (bytemode)
13114 » {
13115 » case vex_vsib_d_w_dq_mode:
13116 » case vex_vsib_q_w_dq_mode:
13117 » if (!need_vex)
13118 » » abort ();
13119
13120 » haveindex = 1;
13121 » switch (vex.length)
13122 » » {
13123 » » case 128:
13124 » » indexes64 = indexes32 = names_xmm;
13125 » » break;
13126 » » case 256:
13127 » » if (!vex.w || bytemode == vex_vsib_q_w_dq_mode)
13128 » » indexes64 = indexes32 = names_ymm;
13129 » » else
13130 » » indexes64 = indexes32 = names_xmm;
13131 » » break;
13132 » » default:
13133 » » abort ();
13134 » » }
13135 » break;
13136 » default:
13137 » haveindex = vindex != 4;
13138 » break;
13139 » }
13140 » scale = sib.scale;
13141 » base = sib.base;
11031 codep++; 13142 codep++;
11032 } 13143 }
11033 rbase = base + add; 13144 rbase = base + add;
11034 13145
11035 switch (modrm.mod) 13146 switch (modrm.mod)
11036 { 13147 {
11037 case 0: 13148 case 0:
11038 if (base == 5) 13149 if (base == 5)
11039 { 13150 {
11040 havebase = 0; 13151 havebase = 0;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
11104 || (havebase && base != ESP_REG_NUM)) 13215 || (havebase && base != ESP_REG_NUM))
11105 { 13216 {
11106 if (!intel_syntax || havebase) 13217 if (!intel_syntax || havebase)
11107 { 13218 {
11108 *obufp++ = separator_char; 13219 *obufp++ = separator_char;
11109 *obufp = '\0'; 13220 *obufp = '\0';
11110 } 13221 }
11111 if (haveindex) 13222 if (haveindex)
11112 oappend (address_mode == mode_64bit 13223 oappend (address_mode == mode_64bit
11113 && (sizeflag & AFLAG) 13224 && (sizeflag & AFLAG)
11114 » » » ? names64[index] : names32[index]); 13225 » » » ? indexes64[vindex] : indexes32[vindex]);
11115 else 13226 else
11116 oappend (address_mode == mode_64bit 13227 oappend (address_mode == mode_64bit
11117 && (sizeflag & AFLAG) 13228 && (sizeflag & AFLAG)
11118 ? index64 : index32); 13229 ? index64 : index32);
11119 13230
11120 *obufp++ = scale_char; 13231 *obufp++ = scale_char;
11121 *obufp = '\0'; 13232 *obufp = '\0';
11122 sprintf (scratchbuf, "%d", 1 << scale); 13233 sprintf (scratchbuf, "%d", 1 << scale);
11123 oappend (scratchbuf); 13234 oappend (scratchbuf);
11124 } 13235 }
11125 } 13236 }
11126 if (intel_syntax 13237 if (intel_syntax
11127 && (disp || modrm.mod != 0 || base == 5)) 13238 && (disp || modrm.mod != 0 || base == 5))
11128 { 13239 {
11129 if (!havedisp || (bfd_signed_vma) disp >= 0) 13240 if (!havedisp || (bfd_signed_vma) disp >= 0)
11130 { 13241 {
11131 *obufp++ = '+'; 13242 *obufp++ = '+';
11132 *obufp = '\0'; 13243 *obufp = '\0';
11133 } 13244 }
11134 » else if (modrm.mod != 1) 13245 » else if (modrm.mod != 1 && disp != -disp)
11135 { 13246 {
11136 *obufp++ = '-'; 13247 *obufp++ = '-';
11137 *obufp = '\0'; 13248 *obufp = '\0';
11138 disp = - (bfd_signed_vma) disp; 13249 disp = - (bfd_signed_vma) disp;
11139 } 13250 }
11140 13251
11141 if (havedisp) 13252 if (havedisp)
11142 print_displacement (scratchbuf, disp); 13253 print_displacement (scratchbuf, disp);
11143 else 13254 else
11144 print_operand_value (scratchbuf, 1, disp); 13255 print_operand_value (scratchbuf, 1, disp);
(...skipping 14 matching lines...) Expand all
11159 { 13270 {
11160 oappend (names_seg[ds_reg - es_reg]); 13271 oappend (names_seg[ds_reg - es_reg]);
11161 oappend (":"); 13272 oappend (":");
11162 } 13273 }
11163 print_operand_value (scratchbuf, 1, disp); 13274 print_operand_value (scratchbuf, 1, disp);
11164 oappend (scratchbuf); 13275 oappend (scratchbuf);
11165 } 13276 }
11166 } 13277 }
11167 } 13278 }
11168 else 13279 else
11169 { /* 16 bit address mode */ 13280 {
13281 /* 16 bit address mode */
13282 used_prefixes |= prefixes & PREFIX_ADDR;
11170 switch (modrm.mod) 13283 switch (modrm.mod)
11171 { 13284 {
11172 case 0: 13285 case 0:
11173 if (modrm.rm == 6) 13286 if (modrm.rm == 6)
11174 { 13287 {
11175 disp = get16 (); 13288 disp = get16 ();
11176 if ((disp & 0x8000) != 0) 13289 if ((disp & 0x8000) != 0)
11177 disp -= 0x10000; 13290 disp -= 0x10000;
11178 } 13291 }
11179 break; 13292 break;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
11234 oappend (names_seg[ds_reg - es_reg]); 13347 oappend (names_seg[ds_reg - es_reg]);
11235 oappend (":"); 13348 oappend (":");
11236 } 13349 }
11237 print_operand_value (scratchbuf, 1, disp & 0xffff); 13350 print_operand_value (scratchbuf, 1, disp & 0xffff);
11238 oappend (scratchbuf); 13351 oappend (scratchbuf);
11239 } 13352 }
11240 } 13353 }
11241 } 13354 }
11242 13355
11243 static void 13356 static void
11244 OP_E_extended (int bytemode, int sizeflag) 13357 OP_E (int bytemode, int sizeflag)
11245 { 13358 {
11246 /* Skip mod/rm byte. */ 13359 /* Skip mod/rm byte. */
11247 MODRM_CHECK; 13360 MODRM_CHECK;
11248 codep++; 13361 codep++;
11249 13362
11250 if (modrm.mod == 3) 13363 if (modrm.mod == 3)
11251 OP_E_register (bytemode, sizeflag); 13364 OP_E_register (bytemode, sizeflag);
11252 else 13365 else
11253 OP_E_memory (bytemode, sizeflag); 13366 OP_E_memory (bytemode, sizeflag);
11254 } 13367 }
11255 13368
11256 static void 13369 static void
11257 OP_E (int bytemode, int sizeflag)
11258 {
11259 OP_E_extended (bytemode, sizeflag);
11260 }
11261
11262
11263 static void
11264 OP_G (int bytemode, int sizeflag) 13370 OP_G (int bytemode, int sizeflag)
11265 { 13371 {
11266 int add = 0; 13372 int add = 0;
11267 USED_REX (REX_R); 13373 USED_REX (REX_R);
11268 if (rex & REX_R) 13374 if (rex & REX_R)
11269 add += 8; 13375 add += 8;
11270 switch (bytemode) 13376 switch (bytemode)
11271 { 13377 {
11272 case b_mode: 13378 case b_mode:
11273 USED_REX (0); 13379 USED_REX (0);
(...skipping 12 matching lines...) Expand all
11286 oappend (names64[modrm.reg + add]); 13392 oappend (names64[modrm.reg + add]);
11287 break; 13393 break;
11288 case v_mode: 13394 case v_mode:
11289 case dq_mode: 13395 case dq_mode:
11290 case dqb_mode: 13396 case dqb_mode:
11291 case dqd_mode: 13397 case dqd_mode:
11292 case dqw_mode: 13398 case dqw_mode:
11293 USED_REX (REX_W); 13399 USED_REX (REX_W);
11294 if (rex & REX_W) 13400 if (rex & REX_W)
11295 oappend (names64[modrm.reg + add]); 13401 oappend (names64[modrm.reg + add]);
11296 else if ((sizeflag & DFLAG) || bytemode != v_mode)
11297 oappend (names32[modrm.reg + add]);
11298 else 13402 else
11299 » oappend (names16[modrm.reg + add]); 13403 » {
11300 used_prefixes |= (prefixes & PREFIX_DATA); 13404 » if ((sizeflag & DFLAG) || bytemode != v_mode)
13405 » oappend (names32[modrm.reg + add]);
13406 » else
13407 » oappend (names16[modrm.reg + add]);
13408 » used_prefixes |= (prefixes & PREFIX_DATA);
13409 » }
11301 break; 13410 break;
11302 case m_mode: 13411 case m_mode:
11303 if (address_mode == mode_64bit) 13412 if (address_mode == mode_64bit)
11304 oappend (names64[modrm.reg + add]); 13413 oappend (names64[modrm.reg + add]);
11305 else 13414 else
11306 oappend (names32[modrm.reg + add]); 13415 oappend (names32[modrm.reg + add]);
11307 break; 13416 break;
11308 default: 13417 default:
11309 oappend (INTERNAL_DISASSEMBLER_ERROR); 13418 oappend (INTERNAL_DISASSEMBLER_ERROR);
11310 break; 13419 break;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
11391 op_address[op_ad] = op & 0xffffffff; 13500 op_address[op_ad] = op & 0xffffffff;
11392 op_riprel[op_ad] = riprel & 0xffffffff; 13501 op_riprel[op_ad] = riprel & 0xffffffff;
11393 } 13502 }
11394 } 13503 }
11395 13504
11396 static void 13505 static void
11397 OP_REG (int code, int sizeflag) 13506 OP_REG (int code, int sizeflag)
11398 { 13507 {
11399 const char *s; 13508 const char *s;
11400 int add; 13509 int add;
13510
13511 switch (code)
13512 {
13513 case es_reg: case ss_reg: case cs_reg:
13514 case ds_reg: case fs_reg: case gs_reg:
13515 oappend (names_seg[code - es_reg]);
13516 return;
13517 }
13518
11401 USED_REX (REX_B); 13519 USED_REX (REX_B);
11402 if (rex & REX_B) 13520 if (rex & REX_B)
11403 add = 8; 13521 add = 8;
11404 else 13522 else
11405 add = 0; 13523 add = 0;
11406 13524
11407 switch (code) 13525 switch (code)
11408 { 13526 {
11409 case ax_reg: case cx_reg: case dx_reg: case bx_reg: 13527 case ax_reg: case cx_reg: case dx_reg: case bx_reg:
11410 case sp_reg: case bp_reg: case si_reg: case di_reg: 13528 case sp_reg: case bp_reg: case si_reg: case di_reg:
11411 s = names16[code - ax_reg + add]; 13529 s = names16[code - ax_reg + add];
11412 break; 13530 break;
11413 case es_reg: case ss_reg: case cs_reg:
11414 case ds_reg: case fs_reg: case gs_reg:
11415 s = names_seg[code - es_reg + add];
11416 break;
11417 case al_reg: case ah_reg: case cl_reg: case ch_reg: 13531 case al_reg: case ah_reg: case cl_reg: case ch_reg:
11418 case dl_reg: case dh_reg: case bl_reg: case bh_reg: 13532 case dl_reg: case dh_reg: case bl_reg: case bh_reg:
11419 USED_REX (0); 13533 USED_REX (0);
11420 if (rex) 13534 if (rex)
11421 s = names8rex[code - al_reg + add]; 13535 s = names8rex[code - al_reg + add];
11422 else 13536 else
11423 s = names8[code - al_reg]; 13537 s = names8[code - al_reg];
11424 break; 13538 break;
11425 case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg: 13539 case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg:
11426 case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg: 13540 case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg:
11427 if (address_mode == mode_64bit && (sizeflag & DFLAG)) 13541 if (address_mode == mode_64bit
13542 » && ((sizeflag & DFLAG) || (rex & REX_W)))
11428 { 13543 {
11429 s = names64[code - rAX_reg + add]; 13544 s = names64[code - rAX_reg + add];
11430 break; 13545 break;
11431 } 13546 }
11432 code += eAX_reg - rAX_reg; 13547 code += eAX_reg - rAX_reg;
11433 /* Fall through. */ 13548 /* Fall through. */
11434 case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg: 13549 case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
11435 case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg: 13550 case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
11436 USED_REX (REX_W); 13551 USED_REX (REX_W);
11437 if (rex & REX_W) 13552 if (rex & REX_W)
11438 s = names64[code - eAX_reg + add]; 13553 s = names64[code - eAX_reg + add];
11439 else if (sizeflag & DFLAG)
11440 s = names32[code - eAX_reg + add];
11441 else 13554 else
11442 » s = names16[code - eAX_reg + add]; 13555 » {
11443 used_prefixes |= (prefixes & PREFIX_DATA); 13556 » if (sizeflag & DFLAG)
13557 » s = names32[code - eAX_reg + add];
13558 » else
13559 » s = names16[code - eAX_reg + add];
13560 » used_prefixes |= (prefixes & PREFIX_DATA);
13561 » }
11444 break; 13562 break;
11445 default: 13563 default:
11446 s = INTERNAL_DISASSEMBLER_ERROR; 13564 s = INTERNAL_DISASSEMBLER_ERROR;
11447 break; 13565 break;
11448 } 13566 }
11449 oappend (s); 13567 oappend (s);
11450 } 13568 }
11451 13569
11452 static void 13570 static void
11453 OP_IMREG (int code, int sizeflag) 13571 OP_IMREG (int code, int sizeflag)
(...skipping 22 matching lines...) Expand all
11476 if (rex) 13594 if (rex)
11477 s = names8rex[code - al_reg]; 13595 s = names8rex[code - al_reg];
11478 else 13596 else
11479 s = names8[code - al_reg]; 13597 s = names8[code - al_reg];
11480 break; 13598 break;
11481 case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg: 13599 case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
11482 case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg: 13600 case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
11483 USED_REX (REX_W); 13601 USED_REX (REX_W);
11484 if (rex & REX_W) 13602 if (rex & REX_W)
11485 s = names64[code - eAX_reg]; 13603 s = names64[code - eAX_reg];
11486 else if (sizeflag & DFLAG)
11487 s = names32[code - eAX_reg];
11488 else 13604 else
11489 » s = names16[code - eAX_reg]; 13605 » {
11490 used_prefixes |= (prefixes & PREFIX_DATA); 13606 » if (sizeflag & DFLAG)
13607 » s = names32[code - eAX_reg];
13608 » else
13609 » s = names16[code - eAX_reg];
13610 » used_prefixes |= (prefixes & PREFIX_DATA);
13611 » }
11491 break; 13612 break;
11492 case z_mode_ax_reg: 13613 case z_mode_ax_reg:
11493 if ((rex & REX_W) || (sizeflag & DFLAG)) 13614 if ((rex & REX_W) || (sizeflag & DFLAG))
11494 s = *names32; 13615 s = *names32;
11495 else 13616 else
11496 s = *names16; 13617 s = *names16;
11497 if (!(rex & REX_W)) 13618 if (!(rex & REX_W))
11498 used_prefixes |= (prefixes & PREFIX_DATA); 13619 used_prefixes |= (prefixes & PREFIX_DATA);
11499 break; 13620 break;
11500 default: 13621 default:
(...skipping 20 matching lines...) Expand all
11521 if (address_mode == mode_64bit) 13642 if (address_mode == mode_64bit)
11522 { 13643 {
11523 op = get32s (); 13644 op = get32s ();
11524 break; 13645 break;
11525 } 13646 }
11526 /* Fall through. */ 13647 /* Fall through. */
11527 case v_mode: 13648 case v_mode:
11528 USED_REX (REX_W); 13649 USED_REX (REX_W);
11529 if (rex & REX_W) 13650 if (rex & REX_W)
11530 op = get32s (); 13651 op = get32s ();
11531 else if (sizeflag & DFLAG)
11532 {
11533 op = get32 ();
11534 mask = 0xffffffff;
11535 }
11536 else 13652 else
11537 { 13653 {
11538 » op = get16 (); 13654 » if (sizeflag & DFLAG)
11539 » mask = 0xfffff; 13655 » {
13656 » op = get32 ();
13657 » mask = 0xffffffff;
13658 » }
13659 » else
13660 » {
13661 » op = get16 ();
13662 » mask = 0xfffff;
13663 » }
13664 » used_prefixes |= (prefixes & PREFIX_DATA);
11540 } 13665 }
11541 used_prefixes |= (prefixes & PREFIX_DATA);
11542 break; 13666 break;
11543 case w_mode: 13667 case w_mode:
11544 mask = 0xfffff; 13668 mask = 0xfffff;
11545 op = get16 (); 13669 op = get16 ();
11546 break; 13670 break;
11547 case const_1_mode: 13671 case const_1_mode:
11548 if (intel_syntax) 13672 if (intel_syntax)
11549 oappend ("1"); 13673 » oappend ("1");
11550 return; 13674 return;
11551 default: 13675 default:
11552 oappend (INTERNAL_DISASSEMBLER_ERROR); 13676 oappend (INTERNAL_DISASSEMBLER_ERROR);
11553 return; 13677 return;
11554 } 13678 }
11555 13679
11556 op &= mask; 13680 op &= mask;
11557 scratchbuf[0] = '$'; 13681 scratchbuf[0] = '$';
11558 print_operand_value (scratchbuf + 1, 1, op); 13682 print_operand_value (scratchbuf + 1, 1, op);
11559 oappend (scratchbuf + intel_syntax); 13683 oappend (scratchbuf + intel_syntax);
(...skipping 16 matching lines...) Expand all
11576 { 13700 {
11577 case b_mode: 13701 case b_mode:
11578 FETCH_DATA (the_info, codep + 1); 13702 FETCH_DATA (the_info, codep + 1);
11579 op = *codep++; 13703 op = *codep++;
11580 mask = 0xff; 13704 mask = 0xff;
11581 break; 13705 break;
11582 case v_mode: 13706 case v_mode:
11583 USED_REX (REX_W); 13707 USED_REX (REX_W);
11584 if (rex & REX_W) 13708 if (rex & REX_W)
11585 op = get64 (); 13709 op = get64 ();
11586 else if (sizeflag & DFLAG)
11587 {
11588 op = get32 ();
11589 mask = 0xffffffff;
11590 }
11591 else 13710 else
11592 { 13711 {
11593 » op = get16 (); 13712 » if (sizeflag & DFLAG)
11594 » mask = 0xfffff; 13713 » {
13714 » op = get32 ();
13715 » mask = 0xffffffff;
13716 » }
13717 » else
13718 » {
13719 » op = get16 ();
13720 » mask = 0xfffff;
13721 » }
13722 » used_prefixes |= (prefixes & PREFIX_DATA);
11595 } 13723 }
11596 used_prefixes |= (prefixes & PREFIX_DATA);
11597 break; 13724 break;
11598 case w_mode: 13725 case w_mode:
11599 mask = 0xfffff; 13726 mask = 0xfffff;
11600 op = get16 (); 13727 op = get16 ();
11601 break; 13728 break;
11602 default: 13729 default:
11603 oappend (INTERNAL_DISASSEMBLER_ERROR); 13730 oappend (INTERNAL_DISASSEMBLER_ERROR);
11604 return; 13731 return;
11605 } 13732 }
11606 13733
11607 op &= mask; 13734 op &= mask;
11608 scratchbuf[0] = '$'; 13735 scratchbuf[0] = '$';
11609 print_operand_value (scratchbuf + 1, 1, op); 13736 print_operand_value (scratchbuf + 1, 1, op);
11610 oappend (scratchbuf + intel_syntax); 13737 oappend (scratchbuf + intel_syntax);
11611 scratchbuf[0] = '\0'; 13738 scratchbuf[0] = '\0';
11612 } 13739 }
11613 13740
11614 static void 13741 static void
11615 OP_sI (int bytemode, int sizeflag) 13742 OP_sI (int bytemode, int sizeflag)
11616 { 13743 {
11617 bfd_signed_vma op; 13744 bfd_signed_vma op;
11618 bfd_signed_vma mask = -1;
11619 13745
11620 switch (bytemode) 13746 switch (bytemode)
11621 { 13747 {
11622 case b_mode: 13748 case b_mode:
13749 case b_T_mode:
11623 FETCH_DATA (the_info, codep + 1); 13750 FETCH_DATA (the_info, codep + 1);
11624 op = *codep++; 13751 op = *codep++;
11625 if ((op & 0x80) != 0) 13752 if ((op & 0x80) != 0)
11626 op -= 0x100; 13753 op -= 0x100;
11627 mask = 0xffffffff; 13754 if (bytemode == b_T_mode)
11628 break;
11629 case v_mode:
11630 USED_REX (REX_W);
11631 if (rex & REX_W)
11632 » op = get32s ();
11633 else if (sizeflag & DFLAG)
11634 { 13755 {
11635 » op = get32s (); 13756 » if (address_mode != mode_64bit
11636 » mask = 0xffffffff; 13757 » || !((sizeflag & DFLAG) || (rex & REX_W)))
13758 » {
13759 » /* The operand-size prefix is overridden by a REX prefix. */
13760 » if ((sizeflag & DFLAG) || (rex & REX_W))
13761 » » op &= 0xffffffff;
13762 » else
13763 » » op &= 0xffff;
13764 » }
11637 } 13765 }
11638 else 13766 else
11639 { 13767 {
11640 » mask = 0xffffffff; 13768 » if (!(rex & REX_W))
11641 » op = get16 (); 13769 » {
11642 » if ((op & 0x8000) != 0) 13770 » if (sizeflag & DFLAG)
11643 » op -= 0x10000; 13771 » » op &= 0xffffffff;
13772 » else
13773 » » op &= 0xffff;
13774 » }
11644 } 13775 }
11645 used_prefixes |= (prefixes & PREFIX_DATA);
11646 break; 13776 break;
11647 case w_mode: 13777 case v_mode:
11648 op = get16 (); 13778 /* The operand-size prefix is overridden by a REX prefix. */
11649 mask = 0xffffffff; 13779 if ((sizeflag & DFLAG) || (rex & REX_W))
11650 if ((op & 0x8000) != 0) 13780 » op = get32s ();
11651 » op -= 0x10000; 13781 else
13782 » op = get16 ();
11652 break; 13783 break;
11653 default: 13784 default:
11654 oappend (INTERNAL_DISASSEMBLER_ERROR); 13785 oappend (INTERNAL_DISASSEMBLER_ERROR);
11655 return; 13786 return;
11656 } 13787 }
11657 13788
11658 scratchbuf[0] = '$'; 13789 scratchbuf[0] = '$';
11659 print_operand_value (scratchbuf + 1, 1, op); 13790 print_operand_value (scratchbuf + 1, 1, op);
11660 oappend (scratchbuf + intel_syntax); 13791 oappend (scratchbuf + intel_syntax);
11661 } 13792 }
11662 13793
11663 static void 13794 static void
11664 OP_J (int bytemode, int sizeflag) 13795 OP_J (int bytemode, int sizeflag)
11665 { 13796 {
11666 bfd_vma disp; 13797 bfd_vma disp;
11667 bfd_vma mask = -1; 13798 bfd_vma mask = -1;
11668 bfd_vma segment = 0; 13799 bfd_vma segment = 0;
11669 13800
11670 switch (bytemode) 13801 switch (bytemode)
11671 { 13802 {
11672 case b_mode: 13803 case b_mode:
11673 FETCH_DATA (the_info, codep + 1); 13804 FETCH_DATA (the_info, codep + 1);
11674 disp = *codep++; 13805 disp = *codep++;
11675 if ((disp & 0x80) != 0) 13806 if ((disp & 0x80) != 0)
11676 disp -= 0x100; 13807 disp -= 0x100;
11677 break; 13808 break;
11678 case v_mode: 13809 case v_mode:
13810 USED_REX (REX_W);
11679 if ((sizeflag & DFLAG) || (rex & REX_W)) 13811 if ((sizeflag & DFLAG) || (rex & REX_W))
11680 disp = get32s (); 13812 disp = get32s ();
11681 else 13813 else
11682 { 13814 {
11683 disp = get16 (); 13815 disp = get16 ();
11684 if ((disp & 0x8000) != 0) 13816 if ((disp & 0x8000) != 0)
11685 disp -= 0x10000; 13817 disp -= 0x10000;
11686 /* In 16bit mode, address is wrapped around at 64k within 13818 /* In 16bit mode, address is wrapped around at 64k within
11687 the same segment. Otherwise, a data16 prefix on a jump 13819 the same segment. Otherwise, a data16 prefix on a jump
11688 instruction means that the pc is masked to 16 bits after 13820 instruction means that the pc is masked to 16 bits after
11689 the displacement is added! */ 13821 the displacement is added! */
11690 mask = 0xffff; 13822 mask = 0xffff;
11691 if ((prefixes & PREFIX_DATA) == 0) 13823 if ((prefixes & PREFIX_DATA) == 0)
11692 segment = ((start_pc + codep - start_codep) 13824 segment = ((start_pc + codep - start_codep)
11693 & ~((bfd_vma) 0xffff)); 13825 & ~((bfd_vma) 0xffff));
11694 } 13826 }
11695 used_prefixes |= (prefixes & PREFIX_DATA); 13827 if (!(rex & REX_W))
13828 » used_prefixes |= (prefixes & PREFIX_DATA);
11696 break; 13829 break;
11697 default: 13830 default:
11698 oappend (INTERNAL_DISASSEMBLER_ERROR); 13831 oappend (INTERNAL_DISASSEMBLER_ERROR);
11699 return; 13832 return;
11700 } 13833 }
11701 disp = ((start_pc + codep - start_codep + disp) & mask) | segment; 13834 disp = ((start_pc + (codep - start_codep) + disp) & mask) | segment;
11702 set_op (disp, 0); 13835 set_op (disp, 0);
11703 print_operand_value (scratchbuf, 1, disp); 13836 print_operand_value (scratchbuf, 1, disp);
11704 oappend (scratchbuf); 13837 oappend (scratchbuf);
11705 } 13838 }
11706 13839
11707 static void 13840 static void
11708 OP_SEG (int bytemode, int sizeflag) 13841 OP_SEG (int bytemode, int sizeflag)
11709 { 13842 {
11710 if (bytemode == w_mode) 13843 if (bytemode == w_mode)
11711 oappend (names_seg[modrm.reg]); 13844 oappend (names_seg[modrm.reg]);
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
11876 OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) 14009 OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
11877 { 14010 {
11878 int add; 14011 int add;
11879 if (rex & REX_R) 14012 if (rex & REX_R)
11880 { 14013 {
11881 USED_REX (REX_R); 14014 USED_REX (REX_R);
11882 add = 8; 14015 add = 8;
11883 } 14016 }
11884 else if (address_mode != mode_64bit && (prefixes & PREFIX_LOCK)) 14017 else if (address_mode != mode_64bit && (prefixes & PREFIX_LOCK))
11885 { 14018 {
11886 lock_prefix = NULL; 14019 all_prefixes[last_lock_prefix] = 0;
11887 used_prefixes |= PREFIX_LOCK; 14020 used_prefixes |= PREFIX_LOCK;
11888 add = 8; 14021 add = 8;
11889 } 14022 }
11890 else 14023 else
11891 add = 0; 14024 add = 0;
11892 sprintf (scratchbuf, "%%cr%d", modrm.reg + add); 14025 sprintf (scratchbuf, "%%cr%d", modrm.reg + add);
11893 oappend (scratchbuf + intel_syntax); 14026 oappend (scratchbuf + intel_syntax);
11894 } 14027 }
11895 14028
11896 static void 14029 static void
(...skipping 24 matching lines...) Expand all
11921 { 14054 {
11922 if (modrm.mod == 3) 14055 if (modrm.mod == 3)
11923 OP_E (bytemode, sizeflag); 14056 OP_E (bytemode, sizeflag);
11924 else 14057 else
11925 BadOp (); 14058 BadOp ();
11926 } 14059 }
11927 14060
11928 static void 14061 static void
11929 OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) 14062 OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
11930 { 14063 {
14064 int reg = modrm.reg;
14065 const char **names;
14066
11931 used_prefixes |= (prefixes & PREFIX_DATA); 14067 used_prefixes |= (prefixes & PREFIX_DATA);
11932 if (prefixes & PREFIX_DATA) 14068 if (prefixes & PREFIX_DATA)
11933 { 14069 {
11934 int add; 14070 names = names_xmm;
11935 USED_REX (REX_R); 14071 USED_REX (REX_R);
11936 if (rex & REX_R) 14072 if (rex & REX_R)
11937 » add = 8; 14073 » reg += 8;
11938 else
11939 » add = 0;
11940 sprintf (scratchbuf, "%%xmm%d", modrm.reg + add);
11941 } 14074 }
11942 else 14075 else
11943 sprintf (scratchbuf, "%%mm%d", modrm.reg); 14076 names = names_mm;
11944 oappend (scratchbuf + intel_syntax); 14077 oappend (names[reg]);
11945 } 14078 }
11946 14079
11947 static void 14080 static void
11948 OP_XMM (int bytemode, int sizeflag ATTRIBUTE_UNUSED) 14081 OP_XMM (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
11949 { 14082 {
11950 int add; 14083 int reg = modrm.reg;
14084 const char **names;
14085
11951 USED_REX (REX_R); 14086 USED_REX (REX_R);
11952 if (rex & REX_R) 14087 if (rex & REX_R)
11953 add = 8; 14088 reg += 8;
11954 else 14089 if (need_vex
11955 add = 0; 14090 && bytemode != xmm_mode
11956 if (need_vex && bytemode != xmm_mode) 14091 && bytemode != scalar_mode)
11957 { 14092 {
11958 switch (vex.length) 14093 switch (vex.length)
11959 { 14094 {
11960 case 128: 14095 case 128:
11961 » sprintf (scratchbuf, "%%xmm%d", modrm.reg + add); 14096 » names = names_xmm;
11962 break; 14097 break;
11963 case 256: 14098 case 256:
11964 » sprintf (scratchbuf, "%%ymm%d", modrm.reg + add); 14099 » if (vex.w || bytemode != vex_vsib_q_w_dq_mode)
14100 » names = names_ymm;
14101 » else
14102 » names = names_xmm;
11965 break; 14103 break;
11966 default: 14104 default:
11967 abort (); 14105 abort ();
11968 } 14106 }
11969 } 14107 }
11970 else 14108 else
11971 sprintf (scratchbuf, "%%xmm%d", modrm.reg + add); 14109 names = names_xmm;
11972 oappend (scratchbuf + intel_syntax); 14110 oappend (names[reg]);
11973 } 14111 }
11974 14112
11975 static void 14113 static void
11976 OP_EM (int bytemode, int sizeflag) 14114 OP_EM (int bytemode, int sizeflag)
11977 { 14115 {
14116 int reg;
14117 const char **names;
14118
11978 if (modrm.mod != 3) 14119 if (modrm.mod != 3)
11979 { 14120 {
11980 if (intel_syntax 14121 if (intel_syntax
11981 && (bytemode == v_mode || bytemode == v_swap_mode)) 14122 && (bytemode == v_mode || bytemode == v_swap_mode))
11982 { 14123 {
11983 bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode; 14124 bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
11984 used_prefixes |= (prefixes & PREFIX_DATA); 14125 used_prefixes |= (prefixes & PREFIX_DATA);
11985 » } 14126 » }
11986 OP_E (bytemode, sizeflag); 14127 OP_E (bytemode, sizeflag);
11987 return; 14128 return;
11988 } 14129 }
11989 14130
11990 if ((sizeflag & SUFFIX_ALWAYS) && bytemode == v_swap_mode) 14131 if ((sizeflag & SUFFIX_ALWAYS) && bytemode == v_swap_mode)
11991 swap_operand (); 14132 swap_operand ();
11992 14133
11993 /* Skip mod/rm byte. */ 14134 /* Skip mod/rm byte. */
11994 MODRM_CHECK; 14135 MODRM_CHECK;
11995 codep++; 14136 codep++;
11996 used_prefixes |= (prefixes & PREFIX_DATA); 14137 used_prefixes |= (prefixes & PREFIX_DATA);
14138 reg = modrm.rm;
11997 if (prefixes & PREFIX_DATA) 14139 if (prefixes & PREFIX_DATA)
11998 { 14140 {
11999 int add; 14141 names = names_xmm;
12000
12001 USED_REX (REX_B); 14142 USED_REX (REX_B);
12002 if (rex & REX_B) 14143 if (rex & REX_B)
12003 » add = 8; 14144 » reg += 8;
12004 else
12005 » add = 0;
12006 sprintf (scratchbuf, "%%xmm%d", modrm.rm + add);
12007 } 14145 }
12008 else 14146 else
12009 sprintf (scratchbuf, "%%mm%d", modrm.rm); 14147 names = names_mm;
12010 oappend (scratchbuf + intel_syntax); 14148 oappend (names[reg]);
12011 } 14149 }
12012 14150
12013 /* cvt* are the only instructions in sse2 which have 14151 /* cvt* are the only instructions in sse2 which have
12014 both SSE and MMX operands and also have 0x66 prefix 14152 both SSE and MMX operands and also have 0x66 prefix
12015 in their opcode. 0x66 was originally used to differentiate 14153 in their opcode. 0x66 was originally used to differentiate
12016 between SSE and MMX instruction(operands). So we have to handle the 14154 between SSE and MMX instruction(operands). So we have to handle the
12017 cvt* separately using OP_EMC and OP_MXC */ 14155 cvt* separately using OP_EMC and OP_MXC */
12018 static void 14156 static void
12019 OP_EMC (int bytemode, int sizeflag) 14157 OP_EMC (int bytemode, int sizeflag)
12020 { 14158 {
12021 if (modrm.mod != 3) 14159 if (modrm.mod != 3)
12022 { 14160 {
12023 if (intel_syntax && bytemode == v_mode) 14161 if (intel_syntax && bytemode == v_mode)
12024 { 14162 {
12025 bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode; 14163 bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
12026 used_prefixes |= (prefixes & PREFIX_DATA); 14164 used_prefixes |= (prefixes & PREFIX_DATA);
12027 » } 14165 » }
12028 OP_E (bytemode, sizeflag); 14166 OP_E (bytemode, sizeflag);
12029 return; 14167 return;
12030 } 14168 }
12031 14169
12032 /* Skip mod/rm byte. */ 14170 /* Skip mod/rm byte. */
12033 MODRM_CHECK; 14171 MODRM_CHECK;
12034 codep++; 14172 codep++;
12035 used_prefixes |= (prefixes & PREFIX_DATA); 14173 used_prefixes |= (prefixes & PREFIX_DATA);
12036 sprintf (scratchbuf, "%%mm%d", modrm.rm); 14174 oappend (names_mm[modrm.rm]);
12037 oappend (scratchbuf + intel_syntax);
12038 } 14175 }
12039 14176
12040 static void 14177 static void
12041 OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED) 14178 OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
12042 { 14179 {
12043 used_prefixes |= (prefixes & PREFIX_DATA); 14180 used_prefixes |= (prefixes & PREFIX_DATA);
12044 sprintf (scratchbuf, "%%mm%d", modrm.reg); 14181 oappend (names_mm[modrm.reg]);
12045 oappend (scratchbuf + intel_syntax);
12046 } 14182 }
12047 14183
12048 static void 14184 static void
12049 OP_EX (int bytemode, int sizeflag) 14185 OP_EX (int bytemode, int sizeflag)
12050 { 14186 {
12051 int add; 14187 int reg;
14188 const char **names;
12052 14189
12053 /* Skip mod/rm byte. */ 14190 /* Skip mod/rm byte. */
12054 MODRM_CHECK; 14191 MODRM_CHECK;
12055 codep++; 14192 codep++;
12056 14193
12057 if (modrm.mod != 3) 14194 if (modrm.mod != 3)
12058 { 14195 {
12059 OP_E_memory (bytemode, sizeflag); 14196 OP_E_memory (bytemode, sizeflag);
12060 return; 14197 return;
12061 } 14198 }
12062 14199
14200 reg = modrm.rm;
12063 USED_REX (REX_B); 14201 USED_REX (REX_B);
12064 if (rex & REX_B) 14202 if (rex & REX_B)
12065 add = 8; 14203 reg += 8;
12066 else
12067 add = 0;
12068 14204
12069 if ((sizeflag & SUFFIX_ALWAYS) 14205 if ((sizeflag & SUFFIX_ALWAYS)
12070 && (bytemode == x_swap_mode 14206 && (bytemode == x_swap_mode
12071 || bytemode == d_swap_mode 14207 || bytemode == d_swap_mode
12072 » || bytemode == q_swap_mode)) 14208 » || bytemode == d_scalar_swap_mode
14209 » || bytemode == q_swap_mode
14210 » || bytemode == q_scalar_swap_mode))
12073 swap_operand (); 14211 swap_operand ();
12074 14212
12075 if (need_vex 14213 if (need_vex
12076 && bytemode != xmm_mode 14214 && bytemode != xmm_mode
12077 && bytemode != xmmq_mode) 14215 && bytemode != xmmdw_mode
14216 && bytemode != xmmqd_mode
14217 && bytemode != xmm_mb_mode
14218 && bytemode != xmm_mw_mode
14219 && bytemode != xmm_md_mode
14220 && bytemode != xmm_mq_mode
14221 && bytemode != xmmq_mode
14222 && bytemode != d_scalar_mode
14223 && bytemode != d_scalar_swap_mode
14224 && bytemode != q_scalar_mode
14225 && bytemode != q_scalar_swap_mode
14226 && bytemode != vex_scalar_w_dq_mode)
12078 { 14227 {
12079 switch (vex.length) 14228 switch (vex.length)
12080 { 14229 {
12081 case 128: 14230 case 128:
12082 » sprintf (scratchbuf, "%%xmm%d", modrm.rm + add); 14231 » names = names_xmm;
12083 break; 14232 break;
12084 case 256: 14233 case 256:
12085 » sprintf (scratchbuf, "%%ymm%d", modrm.rm + add); 14234 » names = names_ymm;
12086 break; 14235 break;
12087 default: 14236 default:
12088 abort (); 14237 abort ();
12089 } 14238 }
12090 } 14239 }
12091 else 14240 else
12092 sprintf (scratchbuf, "%%xmm%d", modrm.rm + add); 14241 names = names_xmm;
12093 oappend (scratchbuf + intel_syntax); 14242 oappend (names[reg]);
12094 } 14243 }
12095 14244
12096 static void 14245 static void
12097 OP_MS (int bytemode, int sizeflag) 14246 OP_MS (int bytemode, int sizeflag)
12098 { 14247 {
12099 if (modrm.mod == 3) 14248 if (modrm.mod == 3)
12100 OP_EM (bytemode, sizeflag); 14249 OP_EM (bytemode, sizeflag);
12101 else 14250 else
12102 BadOp (); 14251 BadOp ();
12103 } 14252 }
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
12315 const char **op1_names; 14464 const char **op1_names;
12316 const char **names = (address_mode == mode_64bit 14465 const char **names = (address_mode == mode_64bit
12317 ? names64 : names32); 14466 ? names64 : names32);
12318 14467
12319 if (!(prefixes & PREFIX_ADDR)) 14468 if (!(prefixes & PREFIX_ADDR))
12320 op1_names = (address_mode == mode_16bit 14469 op1_names = (address_mode == mode_16bit
12321 ? names16 : names); 14470 ? names16 : names);
12322 else 14471 else
12323 { 14472 {
12324 /* Remove "addr16/addr32". */ 14473 /* Remove "addr16/addr32". */
12325 » addr_prefix = NULL; 14474 » all_prefixes[last_addr_prefix] = 0;
12326 op1_names = (address_mode != mode_32bit 14475 op1_names = (address_mode != mode_32bit
12327 ? names32 : names16); 14476 ? names32 : names16);
12328 used_prefixes |= PREFIX_ADDR; 14477 used_prefixes |= PREFIX_ADDR;
12329 } 14478 }
12330 strcpy (op_out[0], op1_names[0]); 14479 strcpy (op_out[0], op1_names[0]);
12331 strcpy (op_out[1], names[1]); 14480 strcpy (op_out[1], names[1]);
12332 strcpy (op_out[2], names[2]); 14481 strcpy (op_out[2], names[2]);
12333 two_source_ops = 1; 14482 two_source_ops = 1;
12334 } 14483 }
12335 /* Skip mod/rm byte. */ 14484 /* Skip mod/rm byte. */
12336 MODRM_CHECK; 14485 MODRM_CHECK;
12337 codep++; 14486 codep++;
12338 } 14487 }
12339 14488
12340 static void 14489 static void
12341 BadOp (void) 14490 BadOp (void)
12342 { 14491 {
12343 /* Throw away prefixes and 1st. opcode byte. */ 14492 /* Throw away prefixes and 1st. opcode byte. */
12344 codep = insn_codep + 1; 14493 codep = insn_codep + 1;
12345 oappend ("(bad)"); 14494 oappend ("(bad)");
12346 } 14495 }
12347 14496
12348 static void 14497 static void
12349 REP_Fixup (int bytemode, int sizeflag) 14498 REP_Fixup (int bytemode, int sizeflag)
12350 { 14499 {
12351 /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs, 14500 /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs,
12352 lods and stos. */ 14501 lods and stos. */
12353 if (prefixes & PREFIX_REPZ) 14502 if (prefixes & PREFIX_REPZ)
12354 repz_prefix = "rep "; 14503 all_prefixes[last_repz_prefix] = REP_PREFIX;
12355 14504
12356 switch (bytemode) 14505 switch (bytemode)
12357 { 14506 {
12358 case al_reg: 14507 case al_reg:
12359 case eAX_reg: 14508 case eAX_reg:
12360 case indir_dx_reg: 14509 case indir_dx_reg:
12361 OP_IMREG (bytemode, sizeflag); 14510 OP_IMREG (bytemode, sizeflag);
12362 break; 14511 break;
12363 case eDI_reg: 14512 case eDI_reg:
12364 OP_ESreg (bytemode, sizeflag); 14513 OP_ESreg (bytemode, sizeflag);
12365 break; 14514 break;
12366 case eSI_reg: 14515 case eSI_reg:
12367 OP_DSreg (bytemode, sizeflag); 14516 OP_DSreg (bytemode, sizeflag);
12368 break; 14517 break;
12369 default: 14518 default:
12370 abort (); 14519 abort ();
12371 break; 14520 break;
12372 } 14521 }
12373 } 14522 }
12374 14523
14524 /* Similar to OP_E. But the 0xf2/0xf3 prefixes should be displayed as
14525 "xacquire"/"xrelease" for memory operand if there is a LOCK prefix.
14526 */
14527
14528 static void
14529 HLE_Fixup1 (int bytemode, int sizeflag)
14530 {
14531 if (modrm.mod != 3
14532 && (prefixes & PREFIX_LOCK) != 0)
14533 {
14534 if (prefixes & PREFIX_REPZ)
14535 all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
14536 if (prefixes & PREFIX_REPNZ)
14537 all_prefixes[last_repnz_prefix] = XACQUIRE_PREFIX;
14538 }
14539
14540 OP_E (bytemode, sizeflag);
14541 }
14542
14543 /* Similar to OP_E. But the 0xf2/0xf3 prefixes should be displayed as
14544 "xacquire"/"xrelease" for memory operand. No check for LOCK prefix.
14545 */
14546
14547 static void
14548 HLE_Fixup2 (int bytemode, int sizeflag)
14549 {
14550 if (modrm.mod != 3)
14551 {
14552 if (prefixes & PREFIX_REPZ)
14553 all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
14554 if (prefixes & PREFIX_REPNZ)
14555 all_prefixes[last_repnz_prefix] = XACQUIRE_PREFIX;
14556 }
14557
14558 OP_E (bytemode, sizeflag);
14559 }
14560
14561 /* Similar to OP_E. But the 0xf3 prefixes should be displayed as
14562 "xrelease" for memory operand. No check for LOCK prefix. */
14563
14564 static void
14565 HLE_Fixup3 (int bytemode, int sizeflag)
14566 {
14567 if (modrm.mod != 3
14568 && last_repz_prefix > last_repnz_prefix
14569 && (prefixes & PREFIX_REPZ) != 0)
14570 all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
14571
14572 OP_E (bytemode, sizeflag);
14573 }
14574
12375 static void 14575 static void
12376 CMPXCHG8B_Fixup (int bytemode, int sizeflag) 14576 CMPXCHG8B_Fixup (int bytemode, int sizeflag)
12377 { 14577 {
12378 USED_REX (REX_W); 14578 USED_REX (REX_W);
12379 if (rex & REX_W) 14579 if (rex & REX_W)
12380 { 14580 {
12381 /* Change cmpxchg8b to cmpxchg16b. */ 14581 /* Change cmpxchg8b to cmpxchg16b. */
12382 char *p = mnemonicendp - 2; 14582 char *p = mnemonicendp - 2;
12383 mnemonicendp = stpcpy (p, "16b"); 14583 mnemonicendp = stpcpy (p, "16b");
12384 bytemode = o_mode; 14584 bytemode = o_mode;
12385 } 14585 }
14586 else if ((prefixes & PREFIX_LOCK) != 0)
14587 {
14588 if (prefixes & PREFIX_REPZ)
14589 all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
14590 if (prefixes & PREFIX_REPNZ)
14591 all_prefixes[last_repnz_prefix] = XACQUIRE_PREFIX;
14592 }
14593
12386 OP_M (bytemode, sizeflag); 14594 OP_M (bytemode, sizeflag);
12387 } 14595 }
12388 14596
12389 static void 14597 static void
12390 XMM_Fixup (int reg, int sizeflag ATTRIBUTE_UNUSED) 14598 XMM_Fixup (int reg, int sizeflag ATTRIBUTE_UNUSED)
12391 { 14599 {
14600 const char **names;
14601
12392 if (need_vex) 14602 if (need_vex)
12393 { 14603 {
12394 switch (vex.length) 14604 switch (vex.length)
12395 { 14605 {
12396 case 128: 14606 case 128:
12397 » sprintf (scratchbuf, "%%xmm%d", reg); 14607 » names = names_xmm;
12398 break; 14608 break;
12399 case 256: 14609 case 256:
12400 » sprintf (scratchbuf, "%%ymm%d", reg); 14610 » names = names_ymm;
12401 break; 14611 break;
12402 default: 14612 default:
12403 abort (); 14613 abort ();
12404 } 14614 }
12405 } 14615 }
12406 else 14616 else
12407 sprintf (scratchbuf, "%%xmm%d", reg); 14617 names = names_xmm;
12408 oappend (scratchbuf + intel_syntax); 14618 oappend (names[reg]);
12409 } 14619 }
12410 14620
12411 static void 14621 static void
12412 CRC32_Fixup (int bytemode, int sizeflag) 14622 CRC32_Fixup (int bytemode, int sizeflag)
12413 { 14623 {
12414 /* Add proper suffix to "crc32". */ 14624 /* Add proper suffix to "crc32". */
12415 char *p = mnemonicendp; 14625 char *p = mnemonicendp;
12416 14626
12417 switch (bytemode) 14627 switch (bytemode)
12418 { 14628 {
12419 case b_mode: 14629 case b_mode:
12420 if (intel_syntax) 14630 if (intel_syntax)
12421 goto skip; 14631 goto skip;
12422 14632
12423 *p++ = 'b'; 14633 *p++ = 'b';
12424 break; 14634 break;
12425 case v_mode: 14635 case v_mode:
12426 if (intel_syntax) 14636 if (intel_syntax)
12427 goto skip; 14637 goto skip;
12428 14638
12429 USED_REX (REX_W); 14639 USED_REX (REX_W);
12430 if (rex & REX_W) 14640 if (rex & REX_W)
12431 *p++ = 'q'; 14641 *p++ = 'q';
12432 else if (sizeflag & DFLAG)
12433 *p++ = 'l';
12434 else 14642 else
12435 » *p++ = 'w'; 14643 » {
12436 used_prefixes |= (prefixes & PREFIX_DATA); 14644 » if (sizeflag & DFLAG)
14645 » *p++ = 'l';
14646 » else
14647 » *p++ = 'w';
14648 » used_prefixes |= (prefixes & PREFIX_DATA);
14649 » }
12437 break; 14650 break;
12438 default: 14651 default:
12439 oappend (INTERNAL_DISASSEMBLER_ERROR); 14652 oappend (INTERNAL_DISASSEMBLER_ERROR);
12440 break; 14653 break;
12441 } 14654 }
12442 mnemonicendp = p; 14655 mnemonicendp = p;
12443 *p = '\0'; 14656 *p = '\0';
12444 14657
12445 skip: 14658 skip:
12446 if (modrm.mod == 3) 14659 if (modrm.mod == 3)
(...skipping 22 matching lines...) Expand all
12469 else if ((prefixes & PREFIX_DATA)) 14682 else if ((prefixes & PREFIX_DATA))
12470 oappend (names16[modrm.rm + add]); 14683 oappend (names16[modrm.rm + add]);
12471 else 14684 else
12472 oappend (names32[modrm.rm + add]); 14685 oappend (names32[modrm.rm + add]);
12473 } 14686 }
12474 } 14687 }
12475 else 14688 else
12476 OP_E (bytemode, sizeflag); 14689 OP_E (bytemode, sizeflag);
12477 } 14690 }
12478 14691
14692 static void
14693 FXSAVE_Fixup (int bytemode, int sizeflag)
14694 {
14695 /* Add proper suffix to "fxsave" and "fxrstor". */
14696 USED_REX (REX_W);
14697 if (rex & REX_W)
14698 {
14699 char *p = mnemonicendp;
14700 *p++ = '6';
14701 *p++ = '4';
14702 *p = '\0';
14703 mnemonicendp = p;
14704 }
14705 OP_M (bytemode, sizeflag);
14706 }
14707
12479 /* Display the destination register operand for instructions with 14708 /* Display the destination register operand for instructions with
12480 VEX. */ 14709 VEX. */
12481 14710
12482 static void 14711 static void
12483 OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED) 14712 OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
12484 { 14713 {
14714 int reg;
14715 const char **names;
14716
12485 if (!need_vex) 14717 if (!need_vex)
12486 abort (); 14718 abort ();
12487 14719
12488 if (!need_vex_reg) 14720 if (!need_vex_reg)
12489 return; 14721 return;
12490 14722
14723 reg = vex.register_specifier;
14724 if (bytemode == vex_scalar_mode)
14725 {
14726 oappend (names_xmm[reg]);
14727 return;
14728 }
14729
12491 switch (vex.length) 14730 switch (vex.length)
12492 { 14731 {
12493 case 128: 14732 case 128:
12494 switch (bytemode) 14733 switch (bytemode)
12495 { 14734 {
12496 case vex_mode: 14735 case vex_mode:
12497 case vex128_mode: 14736 case vex128_mode:
14737 case vex_vsib_q_w_dq_mode:
14738 names = names_xmm;
14739 break;
14740 case dq_mode:
14741 if (vex.w)
14742 names = names64;
14743 else
14744 names = names32;
12498 break; 14745 break;
12499 default: 14746 default:
12500 abort (); 14747 abort ();
12501 return; 14748 return;
12502 } 14749 }
12503
12504 sprintf (scratchbuf, "%%xmm%d", vex.register_specifier);
12505 break; 14750 break;
12506 case 256: 14751 case 256:
12507 switch (bytemode) 14752 switch (bytemode)
12508 { 14753 {
12509 case vex_mode: 14754 case vex_mode:
12510 case vex256_mode: 14755 case vex256_mode:
14756 names = names_ymm;
14757 break;
14758 case vex_vsib_q_w_dq_mode:
14759 names = vex.w ? names_ymm : names_xmm;
12511 break; 14760 break;
12512 default: 14761 default:
12513 abort (); 14762 abort ();
12514 return; 14763 return;
12515 } 14764 }
12516
12517 sprintf (scratchbuf, "%%ymm%d", vex.register_specifier);
12518 break; 14765 break;
12519 default: 14766 default:
12520 abort (); 14767 abort ();
12521 break; 14768 break;
12522 } 14769 }
12523 oappend (scratchbuf + intel_syntax); 14770 oappend (names[reg]);
12524 } 14771 }
12525 14772
12526 /* Get the VEX immediate byte without moving codep. */ 14773 /* Get the VEX immediate byte without moving codep. */
12527 14774
12528 static unsigned char 14775 static unsigned char
12529 get_vex_imm8 (int sizeflag) 14776 get_vex_imm8 (int sizeflag, int opnum)
12530 { 14777 {
12531 int bytes_before_imm = 0; 14778 int bytes_before_imm = 0;
12532 14779
12533 /* Skip mod/rm byte. */
12534 MODRM_CHECK;
12535 codep++;
12536
12537 if (modrm.mod != 3) 14780 if (modrm.mod != 3)
12538 { 14781 {
12539 /* There are SIB/displacement bytes. */ 14782 /* There are SIB/displacement bytes. */
12540 if ((sizeflag & AFLAG) || address_mode == mode_64bit) 14783 if ((sizeflag & AFLAG) || address_mode == mode_64bit)
12541 { 14784 {
12542 /* 32/64 bit address mode */ 14785 /* 32/64 bit address mode */
12543 int base = modrm.rm; 14786 int base = modrm.rm;
12544 14787
12545 /* Check SIB byte. */ 14788 /* Check SIB byte. */
12546 if (base == 4) 14789 if (base == 4)
12547 { 14790 {
12548 FETCH_DATA (the_info, codep + 1); 14791 FETCH_DATA (the_info, codep + 1);
12549 base = *codep & 7; 14792 base = *codep & 7;
12550 » bytes_before_imm++; 14793 » /* When decoding the third source, don't increase
14794 » » bytes_before_imm as this has already been incremented
14795 » » by one in OP_E_memory while decoding the second
14796 » » source operand. */
14797 » if (opnum == 0)
14798 » » bytes_before_imm++;
12551 } 14799 }
12552 14800
12553 » switch (modrm.mod) 14801 » /* Don't increase bytes_before_imm when decoding the third source,
14802 » it has already been incremented by OP_E_memory while decoding
14803 » the second source operand. */
14804 » if (opnum == 0)
12554 { 14805 {
12555 » case 0: 14806 » switch (modrm.mod)
12556 » /* When modrm.rm == 5 or modrm.rm == 4 and base in 14807 » » {
12557 » » SIB == 5, there is a 4 byte displacement. */ 14808 » » case 0:
12558 » if (base != 5) 14809 » » /* When modrm.rm == 5 or modrm.rm == 4 and base in
12559 » » /* No displacement. */ 14810 » » SIB == 5, there is a 4 byte displacement. */
12560 » » break; 14811 » » if (base != 5)
12561 » case 2: 14812 » » /* No displacement. */
12562 » /* 4 byte displacement. */ 14813 » » break;
12563 » bytes_before_imm += 4; 14814 » » case 2:
12564 » break; 14815 » » /* 4 byte displacement. */
12565 » case 1: 14816 » » bytes_before_imm += 4;
12566 » /* 1 byte displacement. */ 14817 » » break;
12567 » bytes_before_imm++; 14818 » » case 1:
12568 » break; 14819 » » /* 1 byte displacement. */
14820 » » bytes_before_imm++;
14821 » » break;
14822 » » }
12569 } 14823 }
12570 } 14824 }
12571 else 14825 else
12572 » { /* 16 bit address mode */ 14826 » {
12573 » switch (modrm.mod) 14827 » /* 16 bit address mode */
14828 » /* Don't increase bytes_before_imm when decoding the third source,
14829 » it has already been incremented by OP_E_memory while decoding
14830 » the second source operand. */
14831 » if (opnum == 0)
12574 { 14832 {
12575 » case 0: 14833 » switch (modrm.mod)
12576 » /* When modrm.rm == 6, there is a 2 byte displacement. */ 14834 » » {
12577 » if (modrm.rm != 6) 14835 » » case 0:
12578 » » /* No displacement. */ 14836 » » /* When modrm.rm == 6, there is a 2 byte displacement. */
12579 » » break; 14837 » » if (modrm.rm != 6)
12580 » case 2: 14838 » » /* No displacement. */
12581 » /* 2 byte displacement. */ 14839 » » break;
12582 » bytes_before_imm += 2; 14840 » » case 2:
12583 » break; 14841 » » /* 2 byte displacement. */
12584 » case 1: 14842 » » bytes_before_imm += 2;
12585 » /* 1 byte displacement. */ 14843 » » break;
12586 » bytes_before_imm++; 14844 » » case 1:
12587 » break; 14845 » » /* 1 byte displacement: when decoding the third source,
14846 » » don't increase bytes_before_imm as this has already
14847 » » been incremented by one in OP_E_memory while decoding
14848 » » the second source operand. */
14849 » » if (opnum == 0)
14850 » » bytes_before_imm++;
14851
14852 » » break;
14853 » » }
12588 } 14854 }
12589 } 14855 }
12590 } 14856 }
12591 14857
12592 FETCH_DATA (the_info, codep + bytes_before_imm + 1); 14858 FETCH_DATA (the_info, codep + bytes_before_imm + 1);
12593 return codep [bytes_before_imm]; 14859 return codep [bytes_before_imm];
12594 } 14860 }
12595 14861
12596 static void 14862 static void
12597 OP_EX_VexReg (int bytemode, int sizeflag, int reg) 14863 OP_EX_VexReg (int bytemode, int sizeflag, int reg)
12598 { 14864 {
14865 const char **names;
14866
12599 if (reg == -1 && modrm.mod != 3) 14867 if (reg == -1 && modrm.mod != 3)
12600 { 14868 {
12601 OP_E_memory (bytemode, sizeflag); 14869 OP_E_memory (bytemode, sizeflag);
12602 return; 14870 return;
12603 } 14871 }
12604 else 14872 else
12605 { 14873 {
12606 if (reg == -1) 14874 if (reg == -1)
12607 { 14875 {
12608 reg = modrm.rm; 14876 reg = modrm.rm;
12609 USED_REX (REX_B); 14877 USED_REX (REX_B);
12610 if (rex & REX_B) 14878 if (rex & REX_B)
12611 reg += 8; 14879 reg += 8;
12612 } 14880 }
12613 else if (reg > 7 && address_mode != mode_64bit) 14881 else if (reg > 7 && address_mode != mode_64bit)
12614 BadOp (); 14882 BadOp ();
12615 } 14883 }
12616 14884
12617 switch (vex.length) 14885 switch (vex.length)
12618 { 14886 {
12619 case 128: 14887 case 128:
12620 sprintf (scratchbuf, "%%xmm%d", reg); 14888 names = names_xmm;
12621 break; 14889 break;
12622 case 256: 14890 case 256:
12623 sprintf (scratchbuf, "%%ymm%d", reg); 14891 names = names_ymm;
12624 break; 14892 break;
12625 default: 14893 default:
12626 abort (); 14894 abort ();
12627 } 14895 }
12628 oappend (scratchbuf + intel_syntax); 14896 oappend (names[reg]);
14897 }
14898
14899 static void
14900 OP_EX_VexImmW (int bytemode, int sizeflag)
14901 {
14902 int reg = -1;
14903 static unsigned char vex_imm8;
14904
14905 if (vex_w_done == 0)
14906 {
14907 vex_w_done = 1;
14908
14909 /* Skip mod/rm byte. */
14910 MODRM_CHECK;
14911 codep++;
14912
14913 vex_imm8 = get_vex_imm8 (sizeflag, 0);
14914
14915 if (vex.w)
14916 » reg = vex_imm8 >> 4;
14917
14918 OP_EX_VexReg (bytemode, sizeflag, reg);
14919 }
14920 else if (vex_w_done == 1)
14921 {
14922 vex_w_done = 2;
14923
14924 if (!vex.w)
14925 » reg = vex_imm8 >> 4;
14926
14927 OP_EX_VexReg (bytemode, sizeflag, reg);
14928 }
14929 else
14930 {
14931 /* Output the imm8 directly. */
14932 scratchbuf[0] = '$';
14933 print_operand_value (scratchbuf + 1, 1, vex_imm8 & 0xf);
14934 oappend (scratchbuf + intel_syntax);
14935 scratchbuf[0] = '\0';
14936 codep++;
14937 }
14938 }
14939
14940 static void
14941 OP_Vex_2src (int bytemode, int sizeflag)
14942 {
14943 if (modrm.mod == 3)
14944 {
14945 int reg = modrm.rm;
14946 USED_REX (REX_B);
14947 if (rex & REX_B)
14948 » reg += 8;
14949 oappend (names_xmm[reg]);
14950 }
14951 else
14952 {
14953 if (intel_syntax
14954 » && (bytemode == v_mode || bytemode == v_swap_mode))
14955 » {
14956 » bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
14957 » used_prefixes |= (prefixes & PREFIX_DATA);
14958 » }
14959 OP_E (bytemode, sizeflag);
14960 }
14961 }
14962
14963 static void
14964 OP_Vex_2src_1 (int bytemode, int sizeflag)
14965 {
14966 if (modrm.mod == 3)
14967 {
14968 /* Skip mod/rm byte. */
14969 MODRM_CHECK;
14970 codep++;
14971 }
14972
14973 if (vex.w)
14974 oappend (names_xmm[vex.register_specifier]);
14975 else
14976 OP_Vex_2src (bytemode, sizeflag);
14977 }
14978
14979 static void
14980 OP_Vex_2src_2 (int bytemode, int sizeflag)
14981 {
14982 if (vex.w)
14983 OP_Vex_2src (bytemode, sizeflag);
14984 else
14985 oappend (names_xmm[vex.register_specifier]);
12629 } 14986 }
12630 14987
12631 static void 14988 static void
12632 OP_EX_VexW (int bytemode, int sizeflag) 14989 OP_EX_VexW (int bytemode, int sizeflag)
12633 { 14990 {
12634 int reg = -1; 14991 int reg = -1;
12635 14992
12636 if (!vex_w_done) 14993 if (!vex_w_done)
12637 { 14994 {
12638 vex_w_done = 1; 14995 vex_w_done = 1;
14996
14997 /* Skip mod/rm byte. */
14998 MODRM_CHECK;
14999 codep++;
15000
12639 if (vex.w) 15001 if (vex.w)
12640 » reg = vex.register_specifier; 15002 » reg = get_vex_imm8 (sizeflag, 0) >> 4;
12641 } 15003 }
12642 else 15004 else
12643 { 15005 {
12644 if (!vex.w) 15006 if (!vex.w)
12645 » reg = vex.register_specifier; 15007 » reg = get_vex_imm8 (sizeflag, 1) >> 4;
12646 } 15008 }
12647 15009
12648 OP_EX_VexReg (bytemode, sizeflag, reg); 15010 OP_EX_VexReg (bytemode, sizeflag, reg);
12649 } 15011 }
12650 15012
12651 static void 15013 static void
12652 OP_VEX_FMA (int bytemode, int sizeflag)
12653 {
12654 int reg = get_vex_imm8 (sizeflag) >> 4;
12655
12656 if (reg > 7 && address_mode != mode_64bit)
12657 BadOp ();
12658
12659 switch (vex.length)
12660 {
12661 case 128:
12662 switch (bytemode)
12663 {
12664 case vex_mode:
12665 case vex128_mode:
12666 break;
12667 default:
12668 abort ();
12669 return;
12670 }
12671
12672 sprintf (scratchbuf, "%%xmm%d", reg);
12673 break;
12674 case 256:
12675 switch (bytemode)
12676 {
12677 case vex_mode:
12678 break;
12679 default:
12680 abort ();
12681 return;
12682 }
12683
12684 sprintf (scratchbuf, "%%ymm%d", reg);
12685 break;
12686 default:
12687 abort ();
12688 }
12689 oappend (scratchbuf + intel_syntax);
12690 }
12691
12692 static void
12693 VEXI4_Fixup (int bytemode ATTRIBUTE_UNUSED, 15014 VEXI4_Fixup (int bytemode ATTRIBUTE_UNUSED,
12694 int sizeflag ATTRIBUTE_UNUSED) 15015 int sizeflag ATTRIBUTE_UNUSED)
12695 { 15016 {
12696 /* Skip the immediate byte and check for invalid bits. */ 15017 /* Skip the immediate byte and check for invalid bits. */
12697 FETCH_DATA (the_info, codep + 1); 15018 FETCH_DATA (the_info, codep + 1);
12698 if (*codep++ & 0xf) 15019 if (*codep++ & 0xf)
12699 BadOp (); 15020 BadOp ();
12700 } 15021 }
12701 15022
12702 static void 15023 static void
12703 OP_REG_VexI4 (int bytemode, int sizeflag ATTRIBUTE_UNUSED) 15024 OP_REG_VexI4 (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
12704 { 15025 {
12705 int reg; 15026 int reg;
15027 const char **names;
15028
12706 FETCH_DATA (the_info, codep + 1); 15029 FETCH_DATA (the_info, codep + 1);
12707 reg = *codep++; 15030 reg = *codep++;
12708 15031
12709 if (bytemode != x_mode) 15032 if (bytemode != x_mode)
12710 abort (); 15033 abort ();
12711 15034
12712 if (reg & 0xf) 15035 if (reg & 0xf)
12713 BadOp (); 15036 BadOp ();
12714 15037
12715 reg >>= 4; 15038 reg >>= 4;
12716 if (reg > 7 && address_mode != mode_64bit) 15039 if (reg > 7 && address_mode != mode_64bit)
12717 BadOp (); 15040 BadOp ();
12718 15041
12719 switch (vex.length) 15042 switch (vex.length)
12720 { 15043 {
12721 case 128: 15044 case 128:
12722 sprintf (scratchbuf, "%%xmm%d", reg); 15045 names = names_xmm;
12723 break; 15046 break;
12724 case 256: 15047 case 256:
12725 sprintf (scratchbuf, "%%ymm%d", reg); 15048 names = names_ymm;
12726 break; 15049 break;
12727 default: 15050 default:
12728 abort (); 15051 abort ();
12729 } 15052 }
12730 oappend (scratchbuf + intel_syntax); 15053 oappend (names[reg]);
12731 } 15054 }
12732 15055
12733 static void 15056 static void
12734 OP_XMM_VexW (int bytemode, int sizeflag) 15057 OP_XMM_VexW (int bytemode, int sizeflag)
12735 { 15058 {
12736 /* Turn off the REX.W bit since it is used for swapping operands 15059 /* Turn off the REX.W bit since it is used for swapping operands
12737 now. */ 15060 now. */
12738 rex &= ~REX_W; 15061 rex &= ~REX_W;
12739 OP_XMM (bytemode, sizeflag); 15062 OP_XMM (bytemode, sizeflag);
12740 } 15063 }
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
12900 { 15223 {
12901 case v_mode: 15224 case v_mode:
12902 if (intel_syntax) 15225 if (intel_syntax)
12903 goto skip; 15226 goto skip;
12904 15227
12905 USED_REX (REX_W); 15228 USED_REX (REX_W);
12906 if (sizeflag & SUFFIX_ALWAYS) 15229 if (sizeflag & SUFFIX_ALWAYS)
12907 { 15230 {
12908 if (rex & REX_W) 15231 if (rex & REX_W)
12909 *p++ = 'q'; 15232 *p++ = 'q';
12910 else if (sizeflag & DFLAG)
12911 *p++ = 'l';
12912 else 15233 else
12913 » *p++ = 'w'; 15234 » {
15235 » if (sizeflag & DFLAG)
15236 » » *p++ = 'l';
15237 » else
15238 » » *p++ = 'w';
15239 » used_prefixes |= (prefixes & PREFIX_DATA);
15240 » }
12914 } 15241 }
12915 used_prefixes |= (prefixes & PREFIX_DATA);
12916 break; 15242 break;
12917 default: 15243 default:
12918 oappend (INTERNAL_DISASSEMBLER_ERROR); 15244 oappend (INTERNAL_DISASSEMBLER_ERROR);
12919 break; 15245 break;
12920 } 15246 }
12921 mnemonicendp = p; 15247 mnemonicendp = p;
12922 *p = '\0'; 15248 *p = '\0';
12923 15249
12924 skip: 15250 skip:
12925 OP_M (bytemode, sizeflag); 15251 OP_M (bytemode, sizeflag);
12926 } 15252 }
15253
15254 static void
15255 OP_LWPCB_E (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
15256 {
15257 int reg;
15258 const char **names;
15259
15260 /* Skip mod/rm byte. */
15261 MODRM_CHECK;
15262 codep++;
15263
15264 if (vex.w)
15265 names = names64;
15266 else
15267 names = names32;
15268
15269 reg = modrm.rm;
15270 USED_REX (REX_B);
15271 if (rex & REX_B)
15272 reg += 8;
15273
15274 oappend (names[reg]);
15275 }
15276
15277 static void
15278 OP_LWP_E (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
15279 {
15280 const char **names;
15281
15282 if (vex.w)
15283 names = names64;
15284 else
15285 names = names32;
15286
15287 oappend (names[vex.register_specifier]);
15288 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698