Home | History | Annotate | Line # | Download | only in opcodes
i386-dis.c revision 1.1.1.1.8.1
      1          1.1  christos /* Print i386 instructions for GDB, the GNU debugger.
      2          1.1  christos    Copyright 1988, 1989, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
      3  1.1.1.1.8.1       tls    2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
      4          1.1  christos    Free Software Foundation, Inc.
      5          1.1  christos 
      6          1.1  christos    This file is part of the GNU opcodes library.
      7          1.1  christos 
      8          1.1  christos    This library is free software; you can redistribute it and/or modify
      9          1.1  christos    it under the terms of the GNU General Public License as published by
     10          1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     11          1.1  christos    any later version.
     12          1.1  christos 
     13          1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     14          1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     15          1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     16          1.1  christos    License for more details.
     17          1.1  christos 
     18          1.1  christos    You should have received a copy of the GNU General Public License
     19          1.1  christos    along with this program; if not, write to the Free Software
     20          1.1  christos    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     21          1.1  christos    MA 02110-1301, USA.  */
     22          1.1  christos 
     23          1.1  christos 
     24          1.1  christos /* 80386 instruction printer by Pace Willisson (pace (at) prep.ai.mit.edu)
     25          1.1  christos    July 1988
     26          1.1  christos     modified by John Hassey (hassey (at) dg-rtp.dg.com)
     27          1.1  christos     x86-64 support added by Jan Hubicka (jh (at) suse.cz)
     28          1.1  christos     VIA PadLock support by Michal Ludvig (mludvig (at) suse.cz).  */
     29          1.1  christos 
     30          1.1  christos /* The main tables describing the instructions is essentially a copy
     31          1.1  christos    of the "Opcode Map" chapter (Appendix A) of the Intel 80386
     32          1.1  christos    Programmers Manual.  Usually, there is a capital letter, followed
     33          1.1  christos    by a small letter.  The capital letter tell the addressing mode,
     34          1.1  christos    and the small letter tells about the operand size.  Refer to
     35          1.1  christos    the Intel manual for details.  */
     36          1.1  christos 
     37          1.1  christos #include "sysdep.h"
     38          1.1  christos #include "dis-asm.h"
     39          1.1  christos #include "opintl.h"
     40          1.1  christos #include "opcode/i386.h"
     41          1.1  christos #include "libiberty.h"
     42          1.1  christos 
     43          1.1  christos #include <setjmp.h>
     44          1.1  christos 
     45          1.1  christos static int print_insn (bfd_vma, disassemble_info *);
     46          1.1  christos static void dofloat (int);
     47          1.1  christos static void OP_ST (int, int);
     48          1.1  christos static void OP_STi (int, int);
     49          1.1  christos static int putop (const char *, int);
     50          1.1  christos static void oappend (const char *);
     51          1.1  christos static void append_seg (void);
     52          1.1  christos static void OP_indirE (int, int);
     53          1.1  christos static void print_operand_value (char *, int, bfd_vma);
     54          1.1  christos static void OP_E_register (int, int);
     55          1.1  christos static void OP_E_memory (int, int);
     56          1.1  christos static void print_displacement (char *, bfd_vma);
     57          1.1  christos static void OP_E (int, int);
     58          1.1  christos static void OP_G (int, int);
     59          1.1  christos static bfd_vma get64 (void);
     60          1.1  christos static bfd_signed_vma get32 (void);
     61          1.1  christos static bfd_signed_vma get32s (void);
     62          1.1  christos static int get16 (void);
     63          1.1  christos static void set_op (bfd_vma, int);
     64          1.1  christos static void OP_Skip_MODRM (int, int);
     65          1.1  christos static void OP_REG (int, int);
     66          1.1  christos static void OP_IMREG (int, int);
     67          1.1  christos static void OP_I (int, int);
     68          1.1  christos static void OP_I64 (int, int);
     69          1.1  christos static void OP_sI (int, int);
     70          1.1  christos static void OP_J (int, int);
     71          1.1  christos static void OP_SEG (int, int);
     72          1.1  christos static void OP_DIR (int, int);
     73          1.1  christos static void OP_OFF (int, int);
     74          1.1  christos static void OP_OFF64 (int, int);
     75          1.1  christos static void ptr_reg (int, int);
     76          1.1  christos static void OP_ESreg (int, int);
     77          1.1  christos static void OP_DSreg (int, int);
     78          1.1  christos static void OP_C (int, int);
     79          1.1  christos static void OP_D (int, int);
     80          1.1  christos static void OP_T (int, int);
     81          1.1  christos static void OP_R (int, int);
     82          1.1  christos static void OP_MMX (int, int);
     83          1.1  christos static void OP_XMM (int, int);
     84          1.1  christos static void OP_EM (int, int);
     85          1.1  christos static void OP_EX (int, int);
     86          1.1  christos static void OP_EMC (int,int);
     87          1.1  christos static void OP_MXC (int,int);
     88          1.1  christos static void OP_MS (int, int);
     89          1.1  christos static void OP_XS (int, int);
     90          1.1  christos static void OP_M (int, int);
     91          1.1  christos static void OP_VEX (int, int);
     92          1.1  christos static void OP_EX_Vex (int, int);
     93          1.1  christos static void OP_EX_VexW (int, int);
     94          1.1  christos static void OP_EX_VexImmW (int, int);
     95          1.1  christos static void OP_XMM_Vex (int, int);
     96          1.1  christos static void OP_XMM_VexW (int, int);
     97  1.1.1.1.8.1       tls static void OP_Rounding (int, int);
     98          1.1  christos static void OP_REG_VexI4 (int, int);
     99          1.1  christos static void PCLMUL_Fixup (int, int);
    100          1.1  christos static void VEXI4_Fixup (int, int);
    101          1.1  christos static void VZERO_Fixup (int, int);
    102          1.1  christos static void VCMP_Fixup (int, int);
    103  1.1.1.1.8.1       tls static void VPCMP_Fixup (int, int);
    104          1.1  christos static void OP_0f07 (int, int);
    105          1.1  christos static void OP_Monitor (int, int);
    106          1.1  christos static void OP_Mwait (int, int);
    107          1.1  christos static void NOP_Fixup1 (int, int);
    108          1.1  christos static void NOP_Fixup2 (int, int);
    109          1.1  christos static void OP_3DNowSuffix (int, int);
    110          1.1  christos static void CMP_Fixup (int, int);
    111          1.1  christos static void BadOp (void);
    112          1.1  christos static void REP_Fixup (int, int);
    113  1.1.1.1.8.1       tls static void BND_Fixup (int, int);
    114  1.1.1.1.8.1       tls static void HLE_Fixup1 (int, int);
    115  1.1.1.1.8.1       tls static void HLE_Fixup2 (int, int);
    116  1.1.1.1.8.1       tls static void HLE_Fixup3 (int, int);
    117          1.1  christos static void CMPXCHG8B_Fixup (int, int);
    118          1.1  christos static void XMM_Fixup (int, int);
    119          1.1  christos static void CRC32_Fixup (int, int);
    120          1.1  christos static void FXSAVE_Fixup (int, int);
    121          1.1  christos static void OP_LWPCB_E (int, int);
    122          1.1  christos static void OP_LWP_E (int, int);
    123          1.1  christos static void OP_Vex_2src_1 (int, int);
    124          1.1  christos static void OP_Vex_2src_2 (int, int);
    125          1.1  christos 
    126          1.1  christos static void MOVBE_Fixup (int, int);
    127          1.1  christos 
    128  1.1.1.1.8.1       tls static void OP_Mask (int, int);
    129  1.1.1.1.8.1       tls 
    130          1.1  christos struct dis_private {
    131          1.1  christos   /* Points to first byte not fetched.  */
    132          1.1  christos   bfd_byte *max_fetched;
    133          1.1  christos   bfd_byte the_buffer[MAX_MNEM_SIZE];
    134          1.1  christos   bfd_vma insn_start;
    135          1.1  christos   int orig_sizeflag;
    136          1.1  christos   jmp_buf bailout;
    137          1.1  christos };
    138          1.1  christos 
    139          1.1  christos enum address_mode
    140          1.1  christos {
    141          1.1  christos   mode_16bit,
    142          1.1  christos   mode_32bit,
    143          1.1  christos   mode_64bit
    144          1.1  christos };
    145          1.1  christos 
    146          1.1  christos enum address_mode address_mode;
    147          1.1  christos 
    148          1.1  christos /* Flags for the prefixes for the current instruction.  See below.  */
    149          1.1  christos static int prefixes;
    150          1.1  christos 
    151          1.1  christos /* REX prefix the current instruction.  See below.  */
    152          1.1  christos static int rex;
    153          1.1  christos /* Bits of REX we've already used.  */
    154          1.1  christos static int rex_used;
    155          1.1  christos /* REX bits in original REX prefix ignored.  */
    156          1.1  christos static int rex_ignored;
    157          1.1  christos /* Mark parts used in the REX prefix.  When we are testing for
    158          1.1  christos    empty prefix (for 8bit register REX extension), just mask it
    159          1.1  christos    out.  Otherwise test for REX bit is excuse for existence of REX
    160          1.1  christos    only in case value is nonzero.  */
    161          1.1  christos #define USED_REX(value)					\
    162          1.1  christos   {							\
    163          1.1  christos     if (value)						\
    164          1.1  christos       {							\
    165          1.1  christos 	if ((rex & value))				\
    166          1.1  christos 	  rex_used |= (value) | REX_OPCODE;		\
    167          1.1  christos       }							\
    168          1.1  christos     else						\
    169          1.1  christos       rex_used |= REX_OPCODE;				\
    170          1.1  christos   }
    171          1.1  christos 
    172          1.1  christos /* Flags for prefixes which we somehow handled when printing the
    173          1.1  christos    current instruction.  */
    174          1.1  christos static int used_prefixes;
    175          1.1  christos 
    176          1.1  christos /* Flags stored in PREFIXES.  */
    177          1.1  christos #define PREFIX_REPZ 1
    178          1.1  christos #define PREFIX_REPNZ 2
    179          1.1  christos #define PREFIX_LOCK 4
    180          1.1  christos #define PREFIX_CS 8
    181          1.1  christos #define PREFIX_SS 0x10
    182          1.1  christos #define PREFIX_DS 0x20
    183          1.1  christos #define PREFIX_ES 0x40
    184          1.1  christos #define PREFIX_FS 0x80
    185          1.1  christos #define PREFIX_GS 0x100
    186          1.1  christos #define PREFIX_DATA 0x200
    187          1.1  christos #define PREFIX_ADDR 0x400
    188          1.1  christos #define PREFIX_FWAIT 0x800
    189          1.1  christos 
    190          1.1  christos /* Make sure that bytes from INFO->PRIVATE_DATA->BUFFER (inclusive)
    191          1.1  christos    to ADDR (exclusive) are valid.  Returns 1 for success, longjmps
    192          1.1  christos    on error.  */
    193          1.1  christos #define FETCH_DATA(info, addr) \
    194          1.1  christos   ((addr) <= ((struct dis_private *) (info->private_data))->max_fetched \
    195          1.1  christos    ? 1 : fetch_data ((info), (addr)))
    196          1.1  christos 
    197          1.1  christos static int
    198          1.1  christos fetch_data (struct disassemble_info *info, bfd_byte *addr)
    199          1.1  christos {
    200          1.1  christos   int status;
    201          1.1  christos   struct dis_private *priv = (struct dis_private *) info->private_data;
    202          1.1  christos   bfd_vma start = priv->insn_start + (priv->max_fetched - priv->the_buffer);
    203          1.1  christos 
    204          1.1  christos   if (addr <= priv->the_buffer + MAX_MNEM_SIZE)
    205          1.1  christos     status = (*info->read_memory_func) (start,
    206          1.1  christos 					priv->max_fetched,
    207          1.1  christos 					addr - priv->max_fetched,
    208          1.1  christos 					info);
    209          1.1  christos   else
    210          1.1  christos     status = -1;
    211          1.1  christos   if (status != 0)
    212          1.1  christos     {
    213          1.1  christos       /* If we did manage to read at least one byte, then
    214          1.1  christos 	 print_insn_i386 will do something sensible.  Otherwise, print
    215          1.1  christos 	 an error.  We do that here because this is where we know
    216          1.1  christos 	 STATUS.  */
    217          1.1  christos       if (priv->max_fetched == priv->the_buffer)
    218          1.1  christos 	(*info->memory_error_func) (status, start, info);
    219          1.1  christos       longjmp (priv->bailout, 1);
    220          1.1  christos     }
    221          1.1  christos   else
    222          1.1  christos     priv->max_fetched = addr;
    223          1.1  christos   return 1;
    224          1.1  christos }
    225          1.1  christos 
    226          1.1  christos #define XX { NULL, 0 }
    227          1.1  christos #define Bad_Opcode NULL, { { NULL, 0 } }
    228          1.1  christos 
    229          1.1  christos #define Eb { OP_E, b_mode }
    230  1.1.1.1.8.1       tls #define Ebnd { OP_E, bnd_mode }
    231          1.1  christos #define EbS { OP_E, b_swap_mode }
    232          1.1  christos #define Ev { OP_E, v_mode }
    233  1.1.1.1.8.1       tls #define Ev_bnd { OP_E, v_bnd_mode }
    234          1.1  christos #define EvS { OP_E, v_swap_mode }
    235          1.1  christos #define Ed { OP_E, d_mode }
    236          1.1  christos #define Edq { OP_E, dq_mode }
    237          1.1  christos #define Edqw { OP_E, dqw_mode }
    238          1.1  christos #define Edqb { OP_E, dqb_mode }
    239          1.1  christos #define Edqd { OP_E, dqd_mode }
    240          1.1  christos #define Eq { OP_E, q_mode }
    241          1.1  christos #define indirEv { OP_indirE, stack_v_mode }
    242          1.1  christos #define indirEp { OP_indirE, f_mode }
    243          1.1  christos #define stackEv { OP_E, stack_v_mode }
    244          1.1  christos #define Em { OP_E, m_mode }
    245          1.1  christos #define Ew { OP_E, w_mode }
    246          1.1  christos #define M { OP_M, 0 }		/* lea, lgdt, etc. */
    247          1.1  christos #define Ma { OP_M, a_mode }
    248          1.1  christos #define Mb { OP_M, b_mode }
    249          1.1  christos #define Md { OP_M, d_mode }
    250          1.1  christos #define Mo { OP_M, o_mode }
    251          1.1  christos #define Mp { OP_M, f_mode }		/* 32 or 48 bit memory operand for LDS, LES etc */
    252          1.1  christos #define Mq { OP_M, q_mode }
    253          1.1  christos #define Mx { OP_M, x_mode }
    254          1.1  christos #define Mxmm { OP_M, xmm_mode }
    255          1.1  christos #define Gb { OP_G, b_mode }
    256  1.1.1.1.8.1       tls #define Gbnd { OP_G, bnd_mode }
    257          1.1  christos #define Gv { OP_G, v_mode }
    258          1.1  christos #define Gd { OP_G, d_mode }
    259          1.1  christos #define Gdq { OP_G, dq_mode }
    260          1.1  christos #define Gm { OP_G, m_mode }
    261          1.1  christos #define Gw { OP_G, w_mode }
    262          1.1  christos #define Rd { OP_R, d_mode }
    263  1.1.1.1.8.1       tls #define Rdq { OP_R, dq_mode }
    264          1.1  christos #define Rm { OP_R, m_mode }
    265          1.1  christos #define Ib { OP_I, b_mode }
    266          1.1  christos #define sIb { OP_sI, b_mode }	/* sign extened byte */
    267          1.1  christos #define sIbT { OP_sI, b_T_mode } /* sign extened byte like 'T' */
    268          1.1  christos #define Iv { OP_I, v_mode }
    269  1.1.1.1.8.1       tls #define sIv { OP_sI, v_mode }
    270          1.1  christos #define Iq { OP_I, q_mode }
    271          1.1  christos #define Iv64 { OP_I64, v_mode }
    272          1.1  christos #define Iw { OP_I, w_mode }
    273          1.1  christos #define I1 { OP_I, const_1_mode }
    274          1.1  christos #define Jb { OP_J, b_mode }
    275          1.1  christos #define Jv { OP_J, v_mode }
    276          1.1  christos #define Cm { OP_C, m_mode }
    277          1.1  christos #define Dm { OP_D, m_mode }
    278          1.1  christos #define Td { OP_T, d_mode }
    279          1.1  christos #define Skip_MODRM { OP_Skip_MODRM, 0 }
    280          1.1  christos 
    281          1.1  christos #define RMeAX { OP_REG, eAX_reg }
    282          1.1  christos #define RMeBX { OP_REG, eBX_reg }
    283          1.1  christos #define RMeCX { OP_REG, eCX_reg }
    284          1.1  christos #define RMeDX { OP_REG, eDX_reg }
    285          1.1  christos #define RMeSP { OP_REG, eSP_reg }
    286          1.1  christos #define RMeBP { OP_REG, eBP_reg }
    287          1.1  christos #define RMeSI { OP_REG, eSI_reg }
    288          1.1  christos #define RMeDI { OP_REG, eDI_reg }
    289          1.1  christos #define RMrAX { OP_REG, rAX_reg }
    290          1.1  christos #define RMrBX { OP_REG, rBX_reg }
    291          1.1  christos #define RMrCX { OP_REG, rCX_reg }
    292          1.1  christos #define RMrDX { OP_REG, rDX_reg }
    293          1.1  christos #define RMrSP { OP_REG, rSP_reg }
    294          1.1  christos #define RMrBP { OP_REG, rBP_reg }
    295          1.1  christos #define RMrSI { OP_REG, rSI_reg }
    296          1.1  christos #define RMrDI { OP_REG, rDI_reg }
    297          1.1  christos #define RMAL { OP_REG, al_reg }
    298          1.1  christos #define RMCL { OP_REG, cl_reg }
    299          1.1  christos #define RMDL { OP_REG, dl_reg }
    300          1.1  christos #define RMBL { OP_REG, bl_reg }
    301          1.1  christos #define RMAH { OP_REG, ah_reg }
    302          1.1  christos #define RMCH { OP_REG, ch_reg }
    303          1.1  christos #define RMDH { OP_REG, dh_reg }
    304          1.1  christos #define RMBH { OP_REG, bh_reg }
    305          1.1  christos #define RMAX { OP_REG, ax_reg }
    306          1.1  christos #define RMDX { OP_REG, dx_reg }
    307          1.1  christos 
    308          1.1  christos #define eAX { OP_IMREG, eAX_reg }
    309          1.1  christos #define eBX { OP_IMREG, eBX_reg }
    310          1.1  christos #define eCX { OP_IMREG, eCX_reg }
    311          1.1  christos #define eDX { OP_IMREG, eDX_reg }
    312          1.1  christos #define eSP { OP_IMREG, eSP_reg }
    313          1.1  christos #define eBP { OP_IMREG, eBP_reg }
    314          1.1  christos #define eSI { OP_IMREG, eSI_reg }
    315          1.1  christos #define eDI { OP_IMREG, eDI_reg }
    316          1.1  christos #define AL { OP_IMREG, al_reg }
    317          1.1  christos #define CL { OP_IMREG, cl_reg }
    318          1.1  christos #define DL { OP_IMREG, dl_reg }
    319          1.1  christos #define BL { OP_IMREG, bl_reg }
    320          1.1  christos #define AH { OP_IMREG, ah_reg }
    321          1.1  christos #define CH { OP_IMREG, ch_reg }
    322          1.1  christos #define DH { OP_IMREG, dh_reg }
    323          1.1  christos #define BH { OP_IMREG, bh_reg }
    324          1.1  christos #define AX { OP_IMREG, ax_reg }
    325          1.1  christos #define DX { OP_IMREG, dx_reg }
    326          1.1  christos #define zAX { OP_IMREG, z_mode_ax_reg }
    327          1.1  christos #define indirDX { OP_IMREG, indir_dx_reg }
    328          1.1  christos 
    329          1.1  christos #define Sw { OP_SEG, w_mode }
    330          1.1  christos #define Sv { OP_SEG, v_mode }
    331          1.1  christos #define Ap { OP_DIR, 0 }
    332          1.1  christos #define Ob { OP_OFF64, b_mode }
    333          1.1  christos #define Ov { OP_OFF64, v_mode }
    334          1.1  christos #define Xb { OP_DSreg, eSI_reg }
    335          1.1  christos #define Xv { OP_DSreg, eSI_reg }
    336          1.1  christos #define Xz { OP_DSreg, eSI_reg }
    337          1.1  christos #define Yb { OP_ESreg, eDI_reg }
    338          1.1  christos #define Yv { OP_ESreg, eDI_reg }
    339          1.1  christos #define DSBX { OP_DSreg, eBX_reg }
    340          1.1  christos 
    341          1.1  christos #define es { OP_REG, es_reg }
    342          1.1  christos #define ss { OP_REG, ss_reg }
    343          1.1  christos #define cs { OP_REG, cs_reg }
    344          1.1  christos #define ds { OP_REG, ds_reg }
    345          1.1  christos #define fs { OP_REG, fs_reg }
    346          1.1  christos #define gs { OP_REG, gs_reg }
    347          1.1  christos 
    348          1.1  christos #define MX { OP_MMX, 0 }
    349          1.1  christos #define XM { OP_XMM, 0 }
    350          1.1  christos #define XMScalar { OP_XMM, scalar_mode }
    351  1.1.1.1.8.1       tls #define XMGatherQ { OP_XMM, vex_vsib_q_w_dq_mode }
    352          1.1  christos #define XMM { OP_XMM, xmm_mode }
    353  1.1.1.1.8.1       tls #define XMxmmq { OP_XMM, xmmq_mode }
    354          1.1  christos #define EM { OP_EM, v_mode }
    355          1.1  christos #define EMS { OP_EM, v_swap_mode }
    356          1.1  christos #define EMd { OP_EM, d_mode }
    357          1.1  christos #define EMx { OP_EM, x_mode }
    358          1.1  christos #define EXw { OP_EX, w_mode }
    359          1.1  christos #define EXd { OP_EX, d_mode }
    360          1.1  christos #define EXdScalar { OP_EX, d_scalar_mode }
    361          1.1  christos #define EXdS { OP_EX, d_swap_mode }
    362  1.1.1.1.8.1       tls #define EXdScalarS { OP_EX, d_scalar_swap_mode }
    363          1.1  christos #define EXq { OP_EX, q_mode }
    364          1.1  christos #define EXqScalar { OP_EX, q_scalar_mode }
    365          1.1  christos #define EXqScalarS { OP_EX, q_scalar_swap_mode }
    366          1.1  christos #define EXqS { OP_EX, q_swap_mode }
    367          1.1  christos #define EXx { OP_EX, x_mode }
    368          1.1  christos #define EXxS { OP_EX, x_swap_mode }
    369          1.1  christos #define EXxmm { OP_EX, xmm_mode }
    370  1.1.1.1.8.1       tls #define EXymm { OP_EX, ymm_mode }
    371          1.1  christos #define EXxmmq { OP_EX, xmmq_mode }
    372  1.1.1.1.8.1       tls #define EXEvexHalfBcstXmmq { OP_EX, evex_half_bcst_xmmq_mode }
    373  1.1.1.1.8.1       tls #define EXxmm_mb { OP_EX, xmm_mb_mode }
    374  1.1.1.1.8.1       tls #define EXxmm_mw { OP_EX, xmm_mw_mode }
    375  1.1.1.1.8.1       tls #define EXxmm_md { OP_EX, xmm_md_mode }
    376  1.1.1.1.8.1       tls #define EXxmm_mq { OP_EX, xmm_mq_mode }
    377  1.1.1.1.8.1       tls #define EXxmm_mdq { OP_EX, xmm_mdq_mode }
    378  1.1.1.1.8.1       tls #define EXxmmdw { OP_EX, xmmdw_mode }
    379  1.1.1.1.8.1       tls #define EXxmmqd { OP_EX, xmmqd_mode }
    380          1.1  christos #define EXymmq { OP_EX, ymmq_mode }
    381          1.1  christos #define EXVexWdq { OP_EX, vex_w_dq_mode }
    382          1.1  christos #define EXVexWdqScalar { OP_EX, vex_scalar_w_dq_mode }
    383  1.1.1.1.8.1       tls #define EXEvexXGscat { OP_EX, evex_x_gscat_mode }
    384  1.1.1.1.8.1       tls #define EXEvexXNoBcst { OP_EX, evex_x_nobcst_mode }
    385          1.1  christos #define MS { OP_MS, v_mode }
    386          1.1  christos #define XS { OP_XS, v_mode }
    387          1.1  christos #define EMCq { OP_EMC, q_mode }
    388          1.1  christos #define MXC { OP_MXC, 0 }
    389          1.1  christos #define OPSUF { OP_3DNowSuffix, 0 }
    390          1.1  christos #define CMP { CMP_Fixup, 0 }
    391          1.1  christos #define XMM0 { XMM_Fixup, 0 }
    392          1.1  christos #define FXSAVE { FXSAVE_Fixup, 0 }
    393          1.1  christos #define Vex_2src_1 { OP_Vex_2src_1, 0 }
    394          1.1  christos #define Vex_2src_2 { OP_Vex_2src_2, 0 }
    395          1.1  christos 
    396          1.1  christos #define Vex { OP_VEX, vex_mode }
    397          1.1  christos #define VexScalar { OP_VEX, vex_scalar_mode }
    398  1.1.1.1.8.1       tls #define VexGatherQ { OP_VEX, vex_vsib_q_w_dq_mode }
    399          1.1  christos #define Vex128 { OP_VEX, vex128_mode }
    400          1.1  christos #define Vex256 { OP_VEX, vex256_mode }
    401          1.1  christos #define VexGdq { OP_VEX, dq_mode }
    402          1.1  christos #define VexI4 { VEXI4_Fixup, 0}
    403          1.1  christos #define EXdVex { OP_EX_Vex, d_mode }
    404          1.1  christos #define EXdVexS { OP_EX_Vex, d_swap_mode }
    405          1.1  christos #define EXdVexScalarS { OP_EX_Vex, d_scalar_swap_mode }
    406          1.1  christos #define EXqVex { OP_EX_Vex, q_mode }
    407          1.1  christos #define EXqVexS { OP_EX_Vex, q_swap_mode }
    408          1.1  christos #define EXqVexScalarS { OP_EX_Vex, q_scalar_swap_mode }
    409          1.1  christos #define EXVexW { OP_EX_VexW, x_mode }
    410          1.1  christos #define EXdVexW { OP_EX_VexW, d_mode }
    411          1.1  christos #define EXqVexW { OP_EX_VexW, q_mode }
    412          1.1  christos #define EXVexImmW { OP_EX_VexImmW, x_mode }
    413          1.1  christos #define XMVex { OP_XMM_Vex, 0 }
    414          1.1  christos #define XMVexScalar { OP_XMM_Vex, scalar_mode }
    415          1.1  christos #define XMVexW { OP_XMM_VexW, 0 }
    416          1.1  christos #define XMVexI4 { OP_REG_VexI4, x_mode }
    417          1.1  christos #define PCLMUL { PCLMUL_Fixup, 0 }
    418          1.1  christos #define VZERO { VZERO_Fixup, 0 }
    419          1.1  christos #define VCMP { VCMP_Fixup, 0 }
    420  1.1.1.1.8.1       tls #define VPCMP { VPCMP_Fixup, 0 }
    421  1.1.1.1.8.1       tls 
    422  1.1.1.1.8.1       tls #define EXxEVexR { OP_Rounding, evex_rounding_mode }
    423  1.1.1.1.8.1       tls #define EXxEVexS { OP_Rounding, evex_sae_mode }
    424  1.1.1.1.8.1       tls 
    425  1.1.1.1.8.1       tls #define XMask { OP_Mask, mask_mode }
    426  1.1.1.1.8.1       tls #define MaskG { OP_G, mask_mode }
    427  1.1.1.1.8.1       tls #define MaskE { OP_E, mask_mode }
    428  1.1.1.1.8.1       tls #define MaskR { OP_R, mask_mode }
    429  1.1.1.1.8.1       tls #define MaskVex { OP_VEX, mask_mode }
    430  1.1.1.1.8.1       tls 
    431  1.1.1.1.8.1       tls #define MVexVSIBDWpX { OP_M, vex_vsib_d_w_dq_mode }
    432  1.1.1.1.8.1       tls #define MVexVSIBQWpX { OP_M, vex_vsib_q_w_dq_mode }
    433          1.1  christos 
    434          1.1  christos /* Used handle "rep" prefix for string instructions.  */
    435          1.1  christos #define Xbr { REP_Fixup, eSI_reg }
    436          1.1  christos #define Xvr { REP_Fixup, eSI_reg }
    437          1.1  christos #define Ybr { REP_Fixup, eDI_reg }
    438          1.1  christos #define Yvr { REP_Fixup, eDI_reg }
    439          1.1  christos #define Yzr { REP_Fixup, eDI_reg }
    440          1.1  christos #define indirDXr { REP_Fixup, indir_dx_reg }
    441          1.1  christos #define ALr { REP_Fixup, al_reg }
    442          1.1  christos #define eAXr { REP_Fixup, eAX_reg }
    443          1.1  christos 
    444  1.1.1.1.8.1       tls /* Used handle HLE prefix for lockable instructions.  */
    445  1.1.1.1.8.1       tls #define Ebh1 { HLE_Fixup1, b_mode }
    446  1.1.1.1.8.1       tls #define Evh1 { HLE_Fixup1, v_mode }
    447  1.1.1.1.8.1       tls #define Ebh2 { HLE_Fixup2, b_mode }
    448  1.1.1.1.8.1       tls #define Evh2 { HLE_Fixup2, v_mode }
    449  1.1.1.1.8.1       tls #define Ebh3 { HLE_Fixup3, b_mode }
    450  1.1.1.1.8.1       tls #define Evh3 { HLE_Fixup3, v_mode }
    451  1.1.1.1.8.1       tls 
    452  1.1.1.1.8.1       tls #define BND { BND_Fixup, 0 }
    453  1.1.1.1.8.1       tls 
    454          1.1  christos #define cond_jump_flag { NULL, cond_jump_mode }
    455          1.1  christos #define loop_jcxz_flag { NULL, loop_jcxz_mode }
    456          1.1  christos 
    457          1.1  christos /* bits in sizeflag */
    458          1.1  christos #define SUFFIX_ALWAYS 4
    459          1.1  christos #define AFLAG 2
    460          1.1  christos #define DFLAG 1
    461          1.1  christos 
    462          1.1  christos enum
    463          1.1  christos {
    464          1.1  christos   /* byte operand */
    465          1.1  christos   b_mode = 1,
    466          1.1  christos   /* byte operand with operand swapped */
    467          1.1  christos   b_swap_mode,
    468          1.1  christos   /* byte operand, sign extend like 'T' suffix */
    469          1.1  christos   b_T_mode,
    470          1.1  christos   /* operand size depends on prefixes */
    471          1.1  christos   v_mode,
    472          1.1  christos   /* operand size depends on prefixes with operand swapped */
    473          1.1  christos   v_swap_mode,
    474          1.1  christos   /* word operand */
    475          1.1  christos   w_mode,
    476          1.1  christos   /* double word operand  */
    477          1.1  christos   d_mode,
    478          1.1  christos   /* double word operand with operand swapped */
    479          1.1  christos   d_swap_mode,
    480          1.1  christos   /* quad word operand */
    481          1.1  christos   q_mode,
    482          1.1  christos   /* quad word operand with operand swapped */
    483          1.1  christos   q_swap_mode,
    484          1.1  christos   /* ten-byte operand */
    485          1.1  christos   t_mode,
    486  1.1.1.1.8.1       tls   /* 16-byte XMM, 32-byte YMM or 64-byte ZMM operand.  In EVEX with
    487  1.1.1.1.8.1       tls      broadcast enabled.  */
    488          1.1  christos   x_mode,
    489  1.1.1.1.8.1       tls   /* Similar to x_mode, but with different EVEX mem shifts.  */
    490  1.1.1.1.8.1       tls   evex_x_gscat_mode,
    491  1.1.1.1.8.1       tls   /* Similar to x_mode, but with disabled broadcast.  */
    492  1.1.1.1.8.1       tls   evex_x_nobcst_mode,
    493  1.1.1.1.8.1       tls   /* Similar to x_mode, but with operands swapped and disabled broadcast
    494  1.1.1.1.8.1       tls      in EVEX.  */
    495          1.1  christos   x_swap_mode,
    496          1.1  christos   /* 16-byte XMM operand */
    497          1.1  christos   xmm_mode,
    498  1.1.1.1.8.1       tls   /* XMM, XMM or YMM register operand, or quad word, xmmword or ymmword
    499  1.1.1.1.8.1       tls      memory operand (depending on vector length).  Broadcast isn't
    500  1.1.1.1.8.1       tls      allowed.  */
    501          1.1  christos   xmmq_mode,
    502  1.1.1.1.8.1       tls   /* Same as xmmq_mode, but broadcast is allowed.  */
    503  1.1.1.1.8.1       tls   evex_half_bcst_xmmq_mode,
    504  1.1.1.1.8.1       tls   /* XMM register or byte memory operand */
    505  1.1.1.1.8.1       tls   xmm_mb_mode,
    506  1.1.1.1.8.1       tls   /* XMM register or word memory operand */
    507  1.1.1.1.8.1       tls   xmm_mw_mode,
    508  1.1.1.1.8.1       tls   /* XMM register or double word memory operand */
    509  1.1.1.1.8.1       tls   xmm_md_mode,
    510  1.1.1.1.8.1       tls   /* XMM register or quad word memory operand */
    511  1.1.1.1.8.1       tls   xmm_mq_mode,
    512  1.1.1.1.8.1       tls   /* XMM register or double/quad word memory operand, depending on
    513  1.1.1.1.8.1       tls      VEX.W.  */
    514  1.1.1.1.8.1       tls   xmm_mdq_mode,
    515  1.1.1.1.8.1       tls   /* 16-byte XMM, word, double word or quad word operand.  */
    516  1.1.1.1.8.1       tls   xmmdw_mode,
    517  1.1.1.1.8.1       tls   /* 16-byte XMM, double word, quad word operand or xmm word operand.  */
    518  1.1.1.1.8.1       tls   xmmqd_mode,
    519  1.1.1.1.8.1       tls   /* 32-byte YMM operand */
    520  1.1.1.1.8.1       tls   ymm_mode,
    521  1.1.1.1.8.1       tls   /* quad word, ymmword or zmmword memory operand.  */
    522          1.1  christos   ymmq_mode,
    523  1.1.1.1.8.1       tls   /* 32-byte YMM or 16-byte word operand */
    524  1.1.1.1.8.1       tls   ymmxmm_mode,
    525          1.1  christos   /* d_mode in 32bit, q_mode in 64bit mode.  */
    526          1.1  christos   m_mode,
    527          1.1  christos   /* pair of v_mode operands */
    528          1.1  christos   a_mode,
    529          1.1  christos   cond_jump_mode,
    530          1.1  christos   loop_jcxz_mode,
    531  1.1.1.1.8.1       tls   v_bnd_mode,
    532          1.1  christos   /* operand size depends on REX prefixes.  */
    533          1.1  christos   dq_mode,
    534          1.1  christos   /* registers like dq_mode, memory like w_mode.  */
    535          1.1  christos   dqw_mode,
    536  1.1.1.1.8.1       tls   bnd_mode,
    537          1.1  christos   /* 4- or 6-byte pointer operand */
    538          1.1  christos   f_mode,
    539          1.1  christos   const_1_mode,
    540          1.1  christos   /* v_mode for stack-related opcodes.  */
    541          1.1  christos   stack_v_mode,
    542          1.1  christos   /* non-quad operand size depends on prefixes */
    543          1.1  christos   z_mode,
    544          1.1  christos   /* 16-byte operand */
    545          1.1  christos   o_mode,
    546          1.1  christos   /* registers like dq_mode, memory like b_mode.  */
    547          1.1  christos   dqb_mode,
    548          1.1  christos   /* registers like dq_mode, memory like d_mode.  */
    549          1.1  christos   dqd_mode,
    550          1.1  christos   /* normal vex mode */
    551          1.1  christos   vex_mode,
    552          1.1  christos   /* 128bit vex mode */
    553          1.1  christos   vex128_mode,
    554          1.1  christos   /* 256bit vex mode */
    555          1.1  christos   vex256_mode,
    556          1.1  christos   /* operand size depends on the VEX.W bit.  */
    557          1.1  christos   vex_w_dq_mode,
    558          1.1  christos 
    559  1.1.1.1.8.1       tls   /* Similar to vex_w_dq_mode, with VSIB dword indices.  */
    560  1.1.1.1.8.1       tls   vex_vsib_d_w_dq_mode,
    561  1.1.1.1.8.1       tls   /* Similar to vex_w_dq_mode, with VSIB qword indices.  */
    562  1.1.1.1.8.1       tls   vex_vsib_q_w_dq_mode,
    563  1.1.1.1.8.1       tls 
    564          1.1  christos   /* scalar, ignore vector length.  */
    565          1.1  christos   scalar_mode,
    566          1.1  christos   /* like d_mode, ignore vector length.  */
    567          1.1  christos   d_scalar_mode,
    568          1.1  christos   /* like d_swap_mode, ignore vector length.  */
    569          1.1  christos   d_scalar_swap_mode,
    570          1.1  christos   /* like q_mode, ignore vector length.  */
    571          1.1  christos   q_scalar_mode,
    572          1.1  christos   /* like q_swap_mode, ignore vector length.  */
    573          1.1  christos   q_scalar_swap_mode,
    574          1.1  christos   /* like vex_mode, ignore vector length.  */
    575          1.1  christos   vex_scalar_mode,
    576          1.1  christos   /* like vex_w_dq_mode, ignore vector length.  */
    577          1.1  christos   vex_scalar_w_dq_mode,
    578          1.1  christos 
    579  1.1.1.1.8.1       tls   /* Static rounding.  */
    580  1.1.1.1.8.1       tls   evex_rounding_mode,
    581  1.1.1.1.8.1       tls   /* Supress all exceptions.  */
    582  1.1.1.1.8.1       tls   evex_sae_mode,
    583  1.1.1.1.8.1       tls 
    584  1.1.1.1.8.1       tls   /* Mask register operand.  */
    585  1.1.1.1.8.1       tls   mask_mode,
    586  1.1.1.1.8.1       tls 
    587          1.1  christos   es_reg,
    588          1.1  christos   cs_reg,
    589          1.1  christos   ss_reg,
    590          1.1  christos   ds_reg,
    591          1.1  christos   fs_reg,
    592          1.1  christos   gs_reg,
    593          1.1  christos 
    594          1.1  christos   eAX_reg,
    595          1.1  christos   eCX_reg,
    596          1.1  christos   eDX_reg,
    597          1.1  christos   eBX_reg,
    598          1.1  christos   eSP_reg,
    599          1.1  christos   eBP_reg,
    600          1.1  christos   eSI_reg,
    601          1.1  christos   eDI_reg,
    602          1.1  christos 
    603          1.1  christos   al_reg,
    604          1.1  christos   cl_reg,
    605          1.1  christos   dl_reg,
    606          1.1  christos   bl_reg,
    607          1.1  christos   ah_reg,
    608          1.1  christos   ch_reg,
    609          1.1  christos   dh_reg,
    610          1.1  christos   bh_reg,
    611          1.1  christos 
    612          1.1  christos   ax_reg,
    613          1.1  christos   cx_reg,
    614          1.1  christos   dx_reg,
    615          1.1  christos   bx_reg,
    616          1.1  christos   sp_reg,
    617          1.1  christos   bp_reg,
    618          1.1  christos   si_reg,
    619          1.1  christos   di_reg,
    620          1.1  christos 
    621          1.1  christos   rAX_reg,
    622          1.1  christos   rCX_reg,
    623          1.1  christos   rDX_reg,
    624          1.1  christos   rBX_reg,
    625          1.1  christos   rSP_reg,
    626          1.1  christos   rBP_reg,
    627          1.1  christos   rSI_reg,
    628          1.1  christos   rDI_reg,
    629          1.1  christos 
    630          1.1  christos   z_mode_ax_reg,
    631          1.1  christos   indir_dx_reg
    632          1.1  christos };
    633          1.1  christos 
    634          1.1  christos enum
    635          1.1  christos {
    636          1.1  christos   FLOATCODE = 1,
    637          1.1  christos   USE_REG_TABLE,
    638          1.1  christos   USE_MOD_TABLE,
    639          1.1  christos   USE_RM_TABLE,
    640          1.1  christos   USE_PREFIX_TABLE,
    641          1.1  christos   USE_X86_64_TABLE,
    642          1.1  christos   USE_3BYTE_TABLE,
    643          1.1  christos   USE_XOP_8F_TABLE,
    644          1.1  christos   USE_VEX_C4_TABLE,
    645          1.1  christos   USE_VEX_C5_TABLE,
    646          1.1  christos   USE_VEX_LEN_TABLE,
    647  1.1.1.1.8.1       tls   USE_VEX_W_TABLE,
    648  1.1.1.1.8.1       tls   USE_EVEX_TABLE
    649          1.1  christos };
    650          1.1  christos 
    651          1.1  christos #define FLOAT			NULL, { { NULL, FLOATCODE } }
    652          1.1  christos 
    653          1.1  christos #define DIS386(T, I)		NULL, { { NULL, (T)}, { NULL,  (I) } }
    654          1.1  christos #define REG_TABLE(I)		DIS386 (USE_REG_TABLE, (I))
    655          1.1  christos #define MOD_TABLE(I)		DIS386 (USE_MOD_TABLE, (I))
    656          1.1  christos #define RM_TABLE(I)		DIS386 (USE_RM_TABLE, (I))
    657          1.1  christos #define PREFIX_TABLE(I)		DIS386 (USE_PREFIX_TABLE, (I))
    658          1.1  christos #define X86_64_TABLE(I)		DIS386 (USE_X86_64_TABLE, (I))
    659          1.1  christos #define THREE_BYTE_TABLE(I)	DIS386 (USE_3BYTE_TABLE, (I))
    660          1.1  christos #define XOP_8F_TABLE(I)		DIS386 (USE_XOP_8F_TABLE, (I))
    661          1.1  christos #define VEX_C4_TABLE(I)		DIS386 (USE_VEX_C4_TABLE, (I))
    662          1.1  christos #define VEX_C5_TABLE(I)		DIS386 (USE_VEX_C5_TABLE, (I))
    663          1.1  christos #define VEX_LEN_TABLE(I)	DIS386 (USE_VEX_LEN_TABLE, (I))
    664          1.1  christos #define VEX_W_TABLE(I)		DIS386 (USE_VEX_W_TABLE, (I))
    665  1.1.1.1.8.1       tls #define EVEX_TABLE(I)		DIS386 (USE_EVEX_TABLE, (I))
    666          1.1  christos 
    667          1.1  christos enum
    668          1.1  christos {
    669          1.1  christos   REG_80 = 0,
    670          1.1  christos   REG_81,
    671          1.1  christos   REG_82,
    672          1.1  christos   REG_8F,
    673          1.1  christos   REG_C0,
    674          1.1  christos   REG_C1,
    675          1.1  christos   REG_C6,
    676          1.1  christos   REG_C7,
    677          1.1  christos   REG_D0,
    678          1.1  christos   REG_D1,
    679          1.1  christos   REG_D2,
    680          1.1  christos   REG_D3,
    681          1.1  christos   REG_F6,
    682          1.1  christos   REG_F7,
    683          1.1  christos   REG_FE,
    684          1.1  christos   REG_FF,
    685          1.1  christos   REG_0F00,
    686          1.1  christos   REG_0F01,
    687          1.1  christos   REG_0F0D,
    688          1.1  christos   REG_0F18,
    689          1.1  christos   REG_0F71,
    690          1.1  christos   REG_0F72,
    691          1.1  christos   REG_0F73,
    692          1.1  christos   REG_0FA6,
    693          1.1  christos   REG_0FA7,
    694          1.1  christos   REG_0FAE,
    695          1.1  christos   REG_0FBA,
    696          1.1  christos   REG_0FC7,
    697          1.1  christos   REG_VEX_0F71,
    698          1.1  christos   REG_VEX_0F72,
    699          1.1  christos   REG_VEX_0F73,
    700          1.1  christos   REG_VEX_0FAE,
    701          1.1  christos   REG_VEX_0F38F3,
    702          1.1  christos   REG_XOP_LWPCB,
    703          1.1  christos   REG_XOP_LWP,
    704          1.1  christos   REG_XOP_TBM_01,
    705  1.1.1.1.8.1       tls   REG_XOP_TBM_02,
    706  1.1.1.1.8.1       tls 
    707  1.1.1.1.8.1       tls   REG_EVEX_0F72,
    708  1.1.1.1.8.1       tls   REG_EVEX_0F73,
    709  1.1.1.1.8.1       tls   REG_EVEX_0F38C6,
    710  1.1.1.1.8.1       tls   REG_EVEX_0F38C7
    711          1.1  christos };
    712          1.1  christos 
    713          1.1  christos enum
    714          1.1  christos {
    715          1.1  christos   MOD_8D = 0,
    716  1.1.1.1.8.1       tls   MOD_C6_REG_7,
    717  1.1.1.1.8.1       tls   MOD_C7_REG_7,
    718  1.1.1.1.8.1       tls   MOD_FF_REG_3,
    719  1.1.1.1.8.1       tls   MOD_FF_REG_5,
    720          1.1  christos   MOD_0F01_REG_0,
    721          1.1  christos   MOD_0F01_REG_1,
    722          1.1  christos   MOD_0F01_REG_2,
    723          1.1  christos   MOD_0F01_REG_3,
    724          1.1  christos   MOD_0F01_REG_7,
    725          1.1  christos   MOD_0F12_PREFIX_0,
    726          1.1  christos   MOD_0F13,
    727          1.1  christos   MOD_0F16_PREFIX_0,
    728          1.1  christos   MOD_0F17,
    729          1.1  christos   MOD_0F18_REG_0,
    730          1.1  christos   MOD_0F18_REG_1,
    731          1.1  christos   MOD_0F18_REG_2,
    732          1.1  christos   MOD_0F18_REG_3,
    733  1.1.1.1.8.1       tls   MOD_0F18_REG_4,
    734  1.1.1.1.8.1       tls   MOD_0F18_REG_5,
    735  1.1.1.1.8.1       tls   MOD_0F18_REG_6,
    736  1.1.1.1.8.1       tls   MOD_0F18_REG_7,
    737  1.1.1.1.8.1       tls   MOD_0F1A_PREFIX_0,
    738  1.1.1.1.8.1       tls   MOD_0F1B_PREFIX_0,
    739  1.1.1.1.8.1       tls   MOD_0F1B_PREFIX_1,
    740          1.1  christos   MOD_0F20,
    741          1.1  christos   MOD_0F21,
    742          1.1  christos   MOD_0F22,
    743          1.1  christos   MOD_0F23,
    744          1.1  christos   MOD_0F24,
    745          1.1  christos   MOD_0F26,
    746          1.1  christos   MOD_0F2B_PREFIX_0,
    747          1.1  christos   MOD_0F2B_PREFIX_1,
    748          1.1  christos   MOD_0F2B_PREFIX_2,
    749          1.1  christos   MOD_0F2B_PREFIX_3,
    750          1.1  christos   MOD_0F51,
    751          1.1  christos   MOD_0F71_REG_2,
    752          1.1  christos   MOD_0F71_REG_4,
    753          1.1  christos   MOD_0F71_REG_6,
    754          1.1  christos   MOD_0F72_REG_2,
    755          1.1  christos   MOD_0F72_REG_4,
    756          1.1  christos   MOD_0F72_REG_6,
    757          1.1  christos   MOD_0F73_REG_2,
    758          1.1  christos   MOD_0F73_REG_3,
    759          1.1  christos   MOD_0F73_REG_6,
    760          1.1  christos   MOD_0F73_REG_7,
    761          1.1  christos   MOD_0FAE_REG_0,
    762          1.1  christos   MOD_0FAE_REG_1,
    763          1.1  christos   MOD_0FAE_REG_2,
    764          1.1  christos   MOD_0FAE_REG_3,
    765          1.1  christos   MOD_0FAE_REG_4,
    766          1.1  christos   MOD_0FAE_REG_5,
    767          1.1  christos   MOD_0FAE_REG_6,
    768          1.1  christos   MOD_0FAE_REG_7,
    769          1.1  christos   MOD_0FB2,
    770          1.1  christos   MOD_0FB4,
    771          1.1  christos   MOD_0FB5,
    772          1.1  christos   MOD_0FC7_REG_6,
    773          1.1  christos   MOD_0FC7_REG_7,
    774          1.1  christos   MOD_0FD7,
    775          1.1  christos   MOD_0FE7_PREFIX_2,
    776          1.1  christos   MOD_0FF0_PREFIX_3,
    777          1.1  christos   MOD_0F382A_PREFIX_2,
    778          1.1  christos   MOD_62_32BIT,
    779          1.1  christos   MOD_C4_32BIT,
    780          1.1  christos   MOD_C5_32BIT,
    781          1.1  christos   MOD_VEX_0F12_PREFIX_0,
    782          1.1  christos   MOD_VEX_0F13,
    783          1.1  christos   MOD_VEX_0F16_PREFIX_0,
    784          1.1  christos   MOD_VEX_0F17,
    785          1.1  christos   MOD_VEX_0F2B,
    786          1.1  christos   MOD_VEX_0F50,
    787          1.1  christos   MOD_VEX_0F71_REG_2,
    788          1.1  christos   MOD_VEX_0F71_REG_4,
    789          1.1  christos   MOD_VEX_0F71_REG_6,
    790          1.1  christos   MOD_VEX_0F72_REG_2,
    791          1.1  christos   MOD_VEX_0F72_REG_4,
    792          1.1  christos   MOD_VEX_0F72_REG_6,
    793          1.1  christos   MOD_VEX_0F73_REG_2,
    794          1.1  christos   MOD_VEX_0F73_REG_3,
    795          1.1  christos   MOD_VEX_0F73_REG_6,
    796          1.1  christos   MOD_VEX_0F73_REG_7,
    797          1.1  christos   MOD_VEX_0FAE_REG_2,
    798          1.1  christos   MOD_VEX_0FAE_REG_3,
    799          1.1  christos   MOD_VEX_0FD7_PREFIX_2,
    800          1.1  christos   MOD_VEX_0FE7_PREFIX_2,
    801          1.1  christos   MOD_VEX_0FF0_PREFIX_3,
    802          1.1  christos   MOD_VEX_0F381A_PREFIX_2,
    803          1.1  christos   MOD_VEX_0F382A_PREFIX_2,
    804          1.1  christos   MOD_VEX_0F382C_PREFIX_2,
    805          1.1  christos   MOD_VEX_0F382D_PREFIX_2,
    806          1.1  christos   MOD_VEX_0F382E_PREFIX_2,
    807  1.1.1.1.8.1       tls   MOD_VEX_0F382F_PREFIX_2,
    808  1.1.1.1.8.1       tls   MOD_VEX_0F385A_PREFIX_2,
    809  1.1.1.1.8.1       tls   MOD_VEX_0F388C_PREFIX_2,
    810  1.1.1.1.8.1       tls   MOD_VEX_0F388E_PREFIX_2,
    811  1.1.1.1.8.1       tls 
    812  1.1.1.1.8.1       tls   MOD_EVEX_0F10_PREFIX_1,
    813  1.1.1.1.8.1       tls   MOD_EVEX_0F10_PREFIX_3,
    814  1.1.1.1.8.1       tls   MOD_EVEX_0F11_PREFIX_1,
    815  1.1.1.1.8.1       tls   MOD_EVEX_0F11_PREFIX_3,
    816  1.1.1.1.8.1       tls   MOD_EVEX_0F12_PREFIX_0,
    817  1.1.1.1.8.1       tls   MOD_EVEX_0F16_PREFIX_0,
    818  1.1.1.1.8.1       tls   MOD_EVEX_0F38C6_REG_1,
    819  1.1.1.1.8.1       tls   MOD_EVEX_0F38C6_REG_2,
    820  1.1.1.1.8.1       tls   MOD_EVEX_0F38C6_REG_5,
    821  1.1.1.1.8.1       tls   MOD_EVEX_0F38C6_REG_6,
    822  1.1.1.1.8.1       tls   MOD_EVEX_0F38C7_REG_1,
    823  1.1.1.1.8.1       tls   MOD_EVEX_0F38C7_REG_2,
    824  1.1.1.1.8.1       tls   MOD_EVEX_0F38C7_REG_5,
    825  1.1.1.1.8.1       tls   MOD_EVEX_0F38C7_REG_6
    826          1.1  christos };
    827          1.1  christos 
    828          1.1  christos enum
    829          1.1  christos {
    830  1.1.1.1.8.1       tls   RM_C6_REG_7 = 0,
    831  1.1.1.1.8.1       tls   RM_C7_REG_7,
    832  1.1.1.1.8.1       tls   RM_0F01_REG_0,
    833          1.1  christos   RM_0F01_REG_1,
    834          1.1  christos   RM_0F01_REG_2,
    835          1.1  christos   RM_0F01_REG_3,
    836          1.1  christos   RM_0F01_REG_7,
    837          1.1  christos   RM_0FAE_REG_5,
    838          1.1  christos   RM_0FAE_REG_6,
    839          1.1  christos   RM_0FAE_REG_7
    840          1.1  christos };
    841          1.1  christos 
    842          1.1  christos enum
    843          1.1  christos {
    844          1.1  christos   PREFIX_90 = 0,
    845          1.1  christos   PREFIX_0F10,
    846          1.1  christos   PREFIX_0F11,
    847          1.1  christos   PREFIX_0F12,
    848          1.1  christos   PREFIX_0F16,
    849  1.1.1.1.8.1       tls   PREFIX_0F1A,
    850  1.1.1.1.8.1       tls   PREFIX_0F1B,
    851          1.1  christos   PREFIX_0F2A,
    852          1.1  christos   PREFIX_0F2B,
    853          1.1  christos   PREFIX_0F2C,
    854          1.1  christos   PREFIX_0F2D,
    855          1.1  christos   PREFIX_0F2E,
    856          1.1  christos   PREFIX_0F2F,
    857          1.1  christos   PREFIX_0F51,
    858          1.1  christos   PREFIX_0F52,
    859          1.1  christos   PREFIX_0F53,
    860          1.1  christos   PREFIX_0F58,
    861          1.1  christos   PREFIX_0F59,
    862          1.1  christos   PREFIX_0F5A,
    863          1.1  christos   PREFIX_0F5B,
    864          1.1  christos   PREFIX_0F5C,
    865          1.1  christos   PREFIX_0F5D,
    866          1.1  christos   PREFIX_0F5E,
    867          1.1  christos   PREFIX_0F5F,
    868          1.1  christos   PREFIX_0F60,
    869          1.1  christos   PREFIX_0F61,
    870          1.1  christos   PREFIX_0F62,
    871          1.1  christos   PREFIX_0F6C,
    872          1.1  christos   PREFIX_0F6D,
    873          1.1  christos   PREFIX_0F6F,
    874          1.1  christos   PREFIX_0F70,
    875          1.1  christos   PREFIX_0F73_REG_3,
    876          1.1  christos   PREFIX_0F73_REG_7,
    877          1.1  christos   PREFIX_0F78,
    878          1.1  christos   PREFIX_0F79,
    879          1.1  christos   PREFIX_0F7C,
    880          1.1  christos   PREFIX_0F7D,
    881          1.1  christos   PREFIX_0F7E,
    882          1.1  christos   PREFIX_0F7F,
    883          1.1  christos   PREFIX_0FAE_REG_0,
    884          1.1  christos   PREFIX_0FAE_REG_1,
    885          1.1  christos   PREFIX_0FAE_REG_2,
    886          1.1  christos   PREFIX_0FAE_REG_3,
    887          1.1  christos   PREFIX_0FB8,
    888          1.1  christos   PREFIX_0FBC,
    889          1.1  christos   PREFIX_0FBD,
    890          1.1  christos   PREFIX_0FC2,
    891          1.1  christos   PREFIX_0FC3,
    892          1.1  christos   PREFIX_0FC7_REG_6,
    893          1.1  christos   PREFIX_0FD0,
    894          1.1  christos   PREFIX_0FD6,
    895          1.1  christos   PREFIX_0FE6,
    896          1.1  christos   PREFIX_0FE7,
    897          1.1  christos   PREFIX_0FF0,
    898          1.1  christos   PREFIX_0FF7,
    899          1.1  christos   PREFIX_0F3810,
    900          1.1  christos   PREFIX_0F3814,
    901          1.1  christos   PREFIX_0F3815,
    902          1.1  christos   PREFIX_0F3817,
    903          1.1  christos   PREFIX_0F3820,
    904          1.1  christos   PREFIX_0F3821,
    905          1.1  christos   PREFIX_0F3822,
    906          1.1  christos   PREFIX_0F3823,
    907          1.1  christos   PREFIX_0F3824,
    908          1.1  christos   PREFIX_0F3825,
    909          1.1  christos   PREFIX_0F3828,
    910          1.1  christos   PREFIX_0F3829,
    911          1.1  christos   PREFIX_0F382A,
    912          1.1  christos   PREFIX_0F382B,
    913          1.1  christos   PREFIX_0F3830,
    914          1.1  christos   PREFIX_0F3831,
    915          1.1  christos   PREFIX_0F3832,
    916          1.1  christos   PREFIX_0F3833,
    917          1.1  christos   PREFIX_0F3834,
    918          1.1  christos   PREFIX_0F3835,
    919          1.1  christos   PREFIX_0F3837,
    920          1.1  christos   PREFIX_0F3838,
    921          1.1  christos   PREFIX_0F3839,
    922          1.1  christos   PREFIX_0F383A,
    923          1.1  christos   PREFIX_0F383B,
    924          1.1  christos   PREFIX_0F383C,
    925          1.1  christos   PREFIX_0F383D,
    926          1.1  christos   PREFIX_0F383E,
    927          1.1  christos   PREFIX_0F383F,
    928          1.1  christos   PREFIX_0F3840,
    929          1.1  christos   PREFIX_0F3841,
    930          1.1  christos   PREFIX_0F3880,
    931          1.1  christos   PREFIX_0F3881,
    932  1.1.1.1.8.1       tls   PREFIX_0F3882,
    933  1.1.1.1.8.1       tls   PREFIX_0F38C8,
    934  1.1.1.1.8.1       tls   PREFIX_0F38C9,
    935  1.1.1.1.8.1       tls   PREFIX_0F38CA,
    936  1.1.1.1.8.1       tls   PREFIX_0F38CB,
    937  1.1.1.1.8.1       tls   PREFIX_0F38CC,
    938  1.1.1.1.8.1       tls   PREFIX_0F38CD,
    939          1.1  christos   PREFIX_0F38DB,
    940          1.1  christos   PREFIX_0F38DC,
    941          1.1  christos   PREFIX_0F38DD,
    942          1.1  christos   PREFIX_0F38DE,
    943          1.1  christos   PREFIX_0F38DF,
    944          1.1  christos   PREFIX_0F38F0,
    945          1.1  christos   PREFIX_0F38F1,
    946  1.1.1.1.8.1       tls   PREFIX_0F38F6,
    947          1.1  christos   PREFIX_0F3A08,
    948          1.1  christos   PREFIX_0F3A09,
    949          1.1  christos   PREFIX_0F3A0A,
    950          1.1  christos   PREFIX_0F3A0B,
    951          1.1  christos   PREFIX_0F3A0C,
    952          1.1  christos   PREFIX_0F3A0D,
    953          1.1  christos   PREFIX_0F3A0E,
    954          1.1  christos   PREFIX_0F3A14,
    955          1.1  christos   PREFIX_0F3A15,
    956          1.1  christos   PREFIX_0F3A16,
    957          1.1  christos   PREFIX_0F3A17,
    958          1.1  christos   PREFIX_0F3A20,
    959          1.1  christos   PREFIX_0F3A21,
    960          1.1  christos   PREFIX_0F3A22,
    961          1.1  christos   PREFIX_0F3A40,
    962          1.1  christos   PREFIX_0F3A41,
    963          1.1  christos   PREFIX_0F3A42,
    964          1.1  christos   PREFIX_0F3A44,
    965          1.1  christos   PREFIX_0F3A60,
    966          1.1  christos   PREFIX_0F3A61,
    967          1.1  christos   PREFIX_0F3A62,
    968          1.1  christos   PREFIX_0F3A63,
    969  1.1.1.1.8.1       tls   PREFIX_0F3ACC,
    970          1.1  christos   PREFIX_0F3ADF,
    971          1.1  christos   PREFIX_VEX_0F10,
    972          1.1  christos   PREFIX_VEX_0F11,
    973          1.1  christos   PREFIX_VEX_0F12,
    974          1.1  christos   PREFIX_VEX_0F16,
    975          1.1  christos   PREFIX_VEX_0F2A,
    976          1.1  christos   PREFIX_VEX_0F2C,
    977          1.1  christos   PREFIX_VEX_0F2D,
    978          1.1  christos   PREFIX_VEX_0F2E,
    979          1.1  christos   PREFIX_VEX_0F2F,
    980  1.1.1.1.8.1       tls   PREFIX_VEX_0F41,
    981  1.1.1.1.8.1       tls   PREFIX_VEX_0F42,
    982  1.1.1.1.8.1       tls   PREFIX_VEX_0F44,
    983  1.1.1.1.8.1       tls   PREFIX_VEX_0F45,
    984  1.1.1.1.8.1       tls   PREFIX_VEX_0F46,
    985  1.1.1.1.8.1       tls   PREFIX_VEX_0F47,
    986  1.1.1.1.8.1       tls   PREFIX_VEX_0F4B,
    987          1.1  christos   PREFIX_VEX_0F51,
    988          1.1  christos   PREFIX_VEX_0F52,
    989          1.1  christos   PREFIX_VEX_0F53,
    990          1.1  christos   PREFIX_VEX_0F58,
    991          1.1  christos   PREFIX_VEX_0F59,
    992          1.1  christos   PREFIX_VEX_0F5A,
    993          1.1  christos   PREFIX_VEX_0F5B,
    994          1.1  christos   PREFIX_VEX_0F5C,
    995          1.1  christos   PREFIX_VEX_0F5D,
    996          1.1  christos   PREFIX_VEX_0F5E,
    997          1.1  christos   PREFIX_VEX_0F5F,
    998          1.1  christos   PREFIX_VEX_0F60,
    999          1.1  christos   PREFIX_VEX_0F61,
   1000          1.1  christos   PREFIX_VEX_0F62,
   1001          1.1  christos   PREFIX_VEX_0F63,
   1002          1.1  christos   PREFIX_VEX_0F64,
   1003          1.1  christos   PREFIX_VEX_0F65,
   1004          1.1  christos   PREFIX_VEX_0F66,
   1005          1.1  christos   PREFIX_VEX_0F67,
   1006          1.1  christos   PREFIX_VEX_0F68,
   1007          1.1  christos   PREFIX_VEX_0F69,
   1008          1.1  christos   PREFIX_VEX_0F6A,
   1009          1.1  christos   PREFIX_VEX_0F6B,
   1010          1.1  christos   PREFIX_VEX_0F6C,
   1011          1.1  christos   PREFIX_VEX_0F6D,
   1012          1.1  christos   PREFIX_VEX_0F6E,
   1013          1.1  christos   PREFIX_VEX_0F6F,
   1014          1.1  christos   PREFIX_VEX_0F70,
   1015          1.1  christos   PREFIX_VEX_0F71_REG_2,
   1016          1.1  christos   PREFIX_VEX_0F71_REG_4,
   1017          1.1  christos   PREFIX_VEX_0F71_REG_6,
   1018          1.1  christos   PREFIX_VEX_0F72_REG_2,
   1019          1.1  christos   PREFIX_VEX_0F72_REG_4,
   1020          1.1  christos   PREFIX_VEX_0F72_REG_6,
   1021          1.1  christos   PREFIX_VEX_0F73_REG_2,
   1022          1.1  christos   PREFIX_VEX_0F73_REG_3,
   1023          1.1  christos   PREFIX_VEX_0F73_REG_6,
   1024          1.1  christos   PREFIX_VEX_0F73_REG_7,
   1025          1.1  christos   PREFIX_VEX_0F74,
   1026          1.1  christos   PREFIX_VEX_0F75,
   1027          1.1  christos   PREFIX_VEX_0F76,
   1028          1.1  christos   PREFIX_VEX_0F77,
   1029          1.1  christos   PREFIX_VEX_0F7C,
   1030          1.1  christos   PREFIX_VEX_0F7D,
   1031          1.1  christos   PREFIX_VEX_0F7E,
   1032          1.1  christos   PREFIX_VEX_0F7F,
   1033  1.1.1.1.8.1       tls   PREFIX_VEX_0F90,
   1034  1.1.1.1.8.1       tls   PREFIX_VEX_0F91,
   1035  1.1.1.1.8.1       tls   PREFIX_VEX_0F92,
   1036  1.1.1.1.8.1       tls   PREFIX_VEX_0F93,
   1037  1.1.1.1.8.1       tls   PREFIX_VEX_0F98,
   1038          1.1  christos   PREFIX_VEX_0FC2,
   1039          1.1  christos   PREFIX_VEX_0FC4,
   1040          1.1  christos   PREFIX_VEX_0FC5,
   1041          1.1  christos   PREFIX_VEX_0FD0,
   1042          1.1  christos   PREFIX_VEX_0FD1,
   1043          1.1  christos   PREFIX_VEX_0FD2,
   1044          1.1  christos   PREFIX_VEX_0FD3,
   1045          1.1  christos   PREFIX_VEX_0FD4,
   1046          1.1  christos   PREFIX_VEX_0FD5,
   1047          1.1  christos   PREFIX_VEX_0FD6,
   1048          1.1  christos   PREFIX_VEX_0FD7,
   1049          1.1  christos   PREFIX_VEX_0FD8,
   1050          1.1  christos   PREFIX_VEX_0FD9,
   1051          1.1  christos   PREFIX_VEX_0FDA,
   1052          1.1  christos   PREFIX_VEX_0FDB,
   1053          1.1  christos   PREFIX_VEX_0FDC,
   1054          1.1  christos   PREFIX_VEX_0FDD,
   1055          1.1  christos   PREFIX_VEX_0FDE,
   1056          1.1  christos   PREFIX_VEX_0FDF,
   1057          1.1  christos   PREFIX_VEX_0FE0,
   1058          1.1  christos   PREFIX_VEX_0FE1,
   1059          1.1  christos   PREFIX_VEX_0FE2,
   1060          1.1  christos   PREFIX_VEX_0FE3,
   1061          1.1  christos   PREFIX_VEX_0FE4,
   1062          1.1  christos   PREFIX_VEX_0FE5,
   1063          1.1  christos   PREFIX_VEX_0FE6,
   1064          1.1  christos   PREFIX_VEX_0FE7,
   1065          1.1  christos   PREFIX_VEX_0FE8,
   1066          1.1  christos   PREFIX_VEX_0FE9,
   1067          1.1  christos   PREFIX_VEX_0FEA,
   1068          1.1  christos   PREFIX_VEX_0FEB,
   1069          1.1  christos   PREFIX_VEX_0FEC,
   1070          1.1  christos   PREFIX_VEX_0FED,
   1071          1.1  christos   PREFIX_VEX_0FEE,
   1072          1.1  christos   PREFIX_VEX_0FEF,
   1073          1.1  christos   PREFIX_VEX_0FF0,
   1074          1.1  christos   PREFIX_VEX_0FF1,
   1075          1.1  christos   PREFIX_VEX_0FF2,
   1076          1.1  christos   PREFIX_VEX_0FF3,
   1077          1.1  christos   PREFIX_VEX_0FF4,
   1078          1.1  christos   PREFIX_VEX_0FF5,
   1079          1.1  christos   PREFIX_VEX_0FF6,
   1080          1.1  christos   PREFIX_VEX_0FF7,
   1081          1.1  christos   PREFIX_VEX_0FF8,
   1082          1.1  christos   PREFIX_VEX_0FF9,
   1083          1.1  christos   PREFIX_VEX_0FFA,
   1084          1.1  christos   PREFIX_VEX_0FFB,
   1085          1.1  christos   PREFIX_VEX_0FFC,
   1086          1.1  christos   PREFIX_VEX_0FFD,
   1087          1.1  christos   PREFIX_VEX_0FFE,
   1088          1.1  christos   PREFIX_VEX_0F3800,
   1089          1.1  christos   PREFIX_VEX_0F3801,
   1090          1.1  christos   PREFIX_VEX_0F3802,
   1091          1.1  christos   PREFIX_VEX_0F3803,
   1092          1.1  christos   PREFIX_VEX_0F3804,
   1093          1.1  christos   PREFIX_VEX_0F3805,
   1094          1.1  christos   PREFIX_VEX_0F3806,
   1095          1.1  christos   PREFIX_VEX_0F3807,
   1096          1.1  christos   PREFIX_VEX_0F3808,
   1097          1.1  christos   PREFIX_VEX_0F3809,
   1098          1.1  christos   PREFIX_VEX_0F380A,
   1099          1.1  christos   PREFIX_VEX_0F380B,
   1100          1.1  christos   PREFIX_VEX_0F380C,
   1101          1.1  christos   PREFIX_VEX_0F380D,
   1102          1.1  christos   PREFIX_VEX_0F380E,
   1103          1.1  christos   PREFIX_VEX_0F380F,
   1104          1.1  christos   PREFIX_VEX_0F3813,
   1105  1.1.1.1.8.1       tls   PREFIX_VEX_0F3816,
   1106          1.1  christos   PREFIX_VEX_0F3817,
   1107          1.1  christos   PREFIX_VEX_0F3818,
   1108          1.1  christos   PREFIX_VEX_0F3819,
   1109          1.1  christos   PREFIX_VEX_0F381A,
   1110          1.1  christos   PREFIX_VEX_0F381C,
   1111          1.1  christos   PREFIX_VEX_0F381D,
   1112          1.1  christos   PREFIX_VEX_0F381E,
   1113          1.1  christos   PREFIX_VEX_0F3820,
   1114          1.1  christos   PREFIX_VEX_0F3821,
   1115          1.1  christos   PREFIX_VEX_0F3822,
   1116          1.1  christos   PREFIX_VEX_0F3823,
   1117          1.1  christos   PREFIX_VEX_0F3824,
   1118          1.1  christos   PREFIX_VEX_0F3825,
   1119          1.1  christos   PREFIX_VEX_0F3828,
   1120          1.1  christos   PREFIX_VEX_0F3829,
   1121          1.1  christos   PREFIX_VEX_0F382A,
   1122          1.1  christos   PREFIX_VEX_0F382B,
   1123          1.1  christos   PREFIX_VEX_0F382C,
   1124          1.1  christos   PREFIX_VEX_0F382D,
   1125          1.1  christos   PREFIX_VEX_0F382E,
   1126          1.1  christos   PREFIX_VEX_0F382F,
   1127          1.1  christos   PREFIX_VEX_0F3830,
   1128          1.1  christos   PREFIX_VEX_0F3831,
   1129          1.1  christos   PREFIX_VEX_0F3832,
   1130          1.1  christos   PREFIX_VEX_0F3833,
   1131          1.1  christos   PREFIX_VEX_0F3834,
   1132          1.1  christos   PREFIX_VEX_0F3835,
   1133  1.1.1.1.8.1       tls   PREFIX_VEX_0F3836,
   1134          1.1  christos   PREFIX_VEX_0F3837,
   1135          1.1  christos   PREFIX_VEX_0F3838,
   1136          1.1  christos   PREFIX_VEX_0F3839,
   1137          1.1  christos   PREFIX_VEX_0F383A,
   1138          1.1  christos   PREFIX_VEX_0F383B,
   1139          1.1  christos   PREFIX_VEX_0F383C,
   1140          1.1  christos   PREFIX_VEX_0F383D,
   1141          1.1  christos   PREFIX_VEX_0F383E,
   1142          1.1  christos   PREFIX_VEX_0F383F,
   1143          1.1  christos   PREFIX_VEX_0F3840,
   1144          1.1  christos   PREFIX_VEX_0F3841,
   1145  1.1.1.1.8.1       tls   PREFIX_VEX_0F3845,
   1146  1.1.1.1.8.1       tls   PREFIX_VEX_0F3846,
   1147  1.1.1.1.8.1       tls   PREFIX_VEX_0F3847,
   1148  1.1.1.1.8.1       tls   PREFIX_VEX_0F3858,
   1149  1.1.1.1.8.1       tls   PREFIX_VEX_0F3859,
   1150  1.1.1.1.8.1       tls   PREFIX_VEX_0F385A,
   1151  1.1.1.1.8.1       tls   PREFIX_VEX_0F3878,
   1152  1.1.1.1.8.1       tls   PREFIX_VEX_0F3879,
   1153  1.1.1.1.8.1       tls   PREFIX_VEX_0F388C,
   1154  1.1.1.1.8.1       tls   PREFIX_VEX_0F388E,
   1155  1.1.1.1.8.1       tls   PREFIX_VEX_0F3890,
   1156  1.1.1.1.8.1       tls   PREFIX_VEX_0F3891,
   1157  1.1.1.1.8.1       tls   PREFIX_VEX_0F3892,
   1158  1.1.1.1.8.1       tls   PREFIX_VEX_0F3893,
   1159          1.1  christos   PREFIX_VEX_0F3896,
   1160          1.1  christos   PREFIX_VEX_0F3897,
   1161          1.1  christos   PREFIX_VEX_0F3898,
   1162          1.1  christos   PREFIX_VEX_0F3899,
   1163          1.1  christos   PREFIX_VEX_0F389A,
   1164          1.1  christos   PREFIX_VEX_0F389B,
   1165          1.1  christos   PREFIX_VEX_0F389C,
   1166          1.1  christos   PREFIX_VEX_0F389D,
   1167          1.1  christos   PREFIX_VEX_0F389E,
   1168          1.1  christos   PREFIX_VEX_0F389F,
   1169          1.1  christos   PREFIX_VEX_0F38A6,
   1170          1.1  christos   PREFIX_VEX_0F38A7,
   1171          1.1  christos   PREFIX_VEX_0F38A8,
   1172          1.1  christos   PREFIX_VEX_0F38A9,
   1173          1.1  christos   PREFIX_VEX_0F38AA,
   1174          1.1  christos   PREFIX_VEX_0F38AB,
   1175          1.1  christos   PREFIX_VEX_0F38AC,
   1176          1.1  christos   PREFIX_VEX_0F38AD,
   1177          1.1  christos   PREFIX_VEX_0F38AE,
   1178          1.1  christos   PREFIX_VEX_0F38AF,
   1179          1.1  christos   PREFIX_VEX_0F38B6,
   1180          1.1  christos   PREFIX_VEX_0F38B7,
   1181          1.1  christos   PREFIX_VEX_0F38B8,
   1182          1.1  christos   PREFIX_VEX_0F38B9,
   1183          1.1  christos   PREFIX_VEX_0F38BA,
   1184          1.1  christos   PREFIX_VEX_0F38BB,
   1185          1.1  christos   PREFIX_VEX_0F38BC,
   1186          1.1  christos   PREFIX_VEX_0F38BD,
   1187          1.1  christos   PREFIX_VEX_0F38BE,
   1188          1.1  christos   PREFIX_VEX_0F38BF,
   1189          1.1  christos   PREFIX_VEX_0F38DB,
   1190          1.1  christos   PREFIX_VEX_0F38DC,
   1191          1.1  christos   PREFIX_VEX_0F38DD,
   1192          1.1  christos   PREFIX_VEX_0F38DE,
   1193          1.1  christos   PREFIX_VEX_0F38DF,
   1194          1.1  christos   PREFIX_VEX_0F38F2,
   1195          1.1  christos   PREFIX_VEX_0F38F3_REG_1,
   1196          1.1  christos   PREFIX_VEX_0F38F3_REG_2,
   1197          1.1  christos   PREFIX_VEX_0F38F3_REG_3,
   1198  1.1.1.1.8.1       tls   PREFIX_VEX_0F38F5,
   1199  1.1.1.1.8.1       tls   PREFIX_VEX_0F38F6,
   1200          1.1  christos   PREFIX_VEX_0F38F7,
   1201  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A00,
   1202  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A01,
   1203  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A02,
   1204          1.1  christos   PREFIX_VEX_0F3A04,
   1205          1.1  christos   PREFIX_VEX_0F3A05,
   1206          1.1  christos   PREFIX_VEX_0F3A06,
   1207          1.1  christos   PREFIX_VEX_0F3A08,
   1208          1.1  christos   PREFIX_VEX_0F3A09,
   1209          1.1  christos   PREFIX_VEX_0F3A0A,
   1210          1.1  christos   PREFIX_VEX_0F3A0B,
   1211          1.1  christos   PREFIX_VEX_0F3A0C,
   1212          1.1  christos   PREFIX_VEX_0F3A0D,
   1213          1.1  christos   PREFIX_VEX_0F3A0E,
   1214          1.1  christos   PREFIX_VEX_0F3A0F,
   1215          1.1  christos   PREFIX_VEX_0F3A14,
   1216          1.1  christos   PREFIX_VEX_0F3A15,
   1217          1.1  christos   PREFIX_VEX_0F3A16,
   1218          1.1  christos   PREFIX_VEX_0F3A17,
   1219          1.1  christos   PREFIX_VEX_0F3A18,
   1220          1.1  christos   PREFIX_VEX_0F3A19,
   1221          1.1  christos   PREFIX_VEX_0F3A1D,
   1222          1.1  christos   PREFIX_VEX_0F3A20,
   1223          1.1  christos   PREFIX_VEX_0F3A21,
   1224          1.1  christos   PREFIX_VEX_0F3A22,
   1225  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A30,
   1226  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A32,
   1227  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A38,
   1228  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A39,
   1229          1.1  christos   PREFIX_VEX_0F3A40,
   1230          1.1  christos   PREFIX_VEX_0F3A41,
   1231          1.1  christos   PREFIX_VEX_0F3A42,
   1232          1.1  christos   PREFIX_VEX_0F3A44,
   1233  1.1.1.1.8.1       tls   PREFIX_VEX_0F3A46,
   1234          1.1  christos   PREFIX_VEX_0F3A48,
   1235          1.1  christos   PREFIX_VEX_0F3A49,
   1236          1.1  christos   PREFIX_VEX_0F3A4A,
   1237          1.1  christos   PREFIX_VEX_0F3A4B,
   1238          1.1  christos   PREFIX_VEX_0F3A4C,
   1239          1.1  christos   PREFIX_VEX_0F3A5C,
   1240          1.1  christos   PREFIX_VEX_0F3A5D,
   1241          1.1  christos   PREFIX_VEX_0F3A5E,
   1242          1.1  christos   PREFIX_VEX_0F3A5F,
   1243          1.1  christos   PREFIX_VEX_0F3A60,
   1244          1.1  christos   PREFIX_VEX_0F3A61,
   1245          1.1  christos   PREFIX_VEX_0F3A62,
   1246          1.1  christos   PREFIX_VEX_0F3A63,
   1247          1.1  christos   PREFIX_VEX_0F3A68,
   1248          1.1  christos   PREFIX_VEX_0F3A69,
   1249          1.1  christos   PREFIX_VEX_0F3A6A,
   1250          1.1  christos   PREFIX_VEX_0F3A6B,
   1251          1.1  christos   PREFIX_VEX_0F3A6C,
   1252          1.1  christos   PREFIX_VEX_0F3A6D,
   1253          1.1  christos   PREFIX_VEX_0F3A6E,
   1254          1.1  christos   PREFIX_VEX_0F3A6F,
   1255          1.1  christos   PREFIX_VEX_0F3A78,
   1256          1.1  christos   PREFIX_VEX_0F3A79,
   1257          1.1  christos   PREFIX_VEX_0F3A7A,
   1258          1.1  christos   PREFIX_VEX_0F3A7B,
   1259          1.1  christos   PREFIX_VEX_0F3A7C,
   1260          1.1  christos   PREFIX_VEX_0F3A7D,
   1261          1.1  christos   PREFIX_VEX_0F3A7E,
   1262          1.1  christos   PREFIX_VEX_0F3A7F,
   1263  1.1.1.1.8.1       tls   PREFIX_VEX_0F3ADF,
   1264  1.1.1.1.8.1       tls   PREFIX_VEX_0F3AF0,
   1265  1.1.1.1.8.1       tls 
   1266  1.1.1.1.8.1       tls   PREFIX_EVEX_0F10,
   1267  1.1.1.1.8.1       tls   PREFIX_EVEX_0F11,
   1268  1.1.1.1.8.1       tls   PREFIX_EVEX_0F12,
   1269  1.1.1.1.8.1       tls   PREFIX_EVEX_0F13,
   1270  1.1.1.1.8.1       tls   PREFIX_EVEX_0F14,
   1271  1.1.1.1.8.1       tls   PREFIX_EVEX_0F15,
   1272  1.1.1.1.8.1       tls   PREFIX_EVEX_0F16,
   1273  1.1.1.1.8.1       tls   PREFIX_EVEX_0F17,
   1274  1.1.1.1.8.1       tls   PREFIX_EVEX_0F28,
   1275  1.1.1.1.8.1       tls   PREFIX_EVEX_0F29,
   1276  1.1.1.1.8.1       tls   PREFIX_EVEX_0F2A,
   1277  1.1.1.1.8.1       tls   PREFIX_EVEX_0F2B,
   1278  1.1.1.1.8.1       tls   PREFIX_EVEX_0F2C,
   1279  1.1.1.1.8.1       tls   PREFIX_EVEX_0F2D,
   1280  1.1.1.1.8.1       tls   PREFIX_EVEX_0F2E,
   1281  1.1.1.1.8.1       tls   PREFIX_EVEX_0F2F,
   1282  1.1.1.1.8.1       tls   PREFIX_EVEX_0F51,
   1283  1.1.1.1.8.1       tls   PREFIX_EVEX_0F58,
   1284  1.1.1.1.8.1       tls   PREFIX_EVEX_0F59,
   1285  1.1.1.1.8.1       tls   PREFIX_EVEX_0F5A,
   1286  1.1.1.1.8.1       tls   PREFIX_EVEX_0F5B,
   1287  1.1.1.1.8.1       tls   PREFIX_EVEX_0F5C,
   1288  1.1.1.1.8.1       tls   PREFIX_EVEX_0F5D,
   1289  1.1.1.1.8.1       tls   PREFIX_EVEX_0F5E,
   1290  1.1.1.1.8.1       tls   PREFIX_EVEX_0F5F,
   1291  1.1.1.1.8.1       tls   PREFIX_EVEX_0F62,
   1292  1.1.1.1.8.1       tls   PREFIX_EVEX_0F66,
   1293  1.1.1.1.8.1       tls   PREFIX_EVEX_0F6A,
   1294  1.1.1.1.8.1       tls   PREFIX_EVEX_0F6C,
   1295  1.1.1.1.8.1       tls   PREFIX_EVEX_0F6D,
   1296  1.1.1.1.8.1       tls   PREFIX_EVEX_0F6E,
   1297  1.1.1.1.8.1       tls   PREFIX_EVEX_0F6F,
   1298  1.1.1.1.8.1       tls   PREFIX_EVEX_0F70,
   1299  1.1.1.1.8.1       tls   PREFIX_EVEX_0F72_REG_0,
   1300  1.1.1.1.8.1       tls   PREFIX_EVEX_0F72_REG_1,
   1301  1.1.1.1.8.1       tls   PREFIX_EVEX_0F72_REG_2,
   1302  1.1.1.1.8.1       tls   PREFIX_EVEX_0F72_REG_4,
   1303  1.1.1.1.8.1       tls   PREFIX_EVEX_0F72_REG_6,
   1304  1.1.1.1.8.1       tls   PREFIX_EVEX_0F73_REG_2,
   1305  1.1.1.1.8.1       tls   PREFIX_EVEX_0F73_REG_6,
   1306  1.1.1.1.8.1       tls   PREFIX_EVEX_0F76,
   1307  1.1.1.1.8.1       tls   PREFIX_EVEX_0F78,
   1308  1.1.1.1.8.1       tls   PREFIX_EVEX_0F79,
   1309  1.1.1.1.8.1       tls   PREFIX_EVEX_0F7A,
   1310  1.1.1.1.8.1       tls   PREFIX_EVEX_0F7B,
   1311  1.1.1.1.8.1       tls   PREFIX_EVEX_0F7E,
   1312  1.1.1.1.8.1       tls   PREFIX_EVEX_0F7F,
   1313  1.1.1.1.8.1       tls   PREFIX_EVEX_0FC2,
   1314  1.1.1.1.8.1       tls   PREFIX_EVEX_0FC6,
   1315  1.1.1.1.8.1       tls   PREFIX_EVEX_0FD2,
   1316  1.1.1.1.8.1       tls   PREFIX_EVEX_0FD3,
   1317  1.1.1.1.8.1       tls   PREFIX_EVEX_0FD4,
   1318  1.1.1.1.8.1       tls   PREFIX_EVEX_0FD6,
   1319  1.1.1.1.8.1       tls   PREFIX_EVEX_0FDB,
   1320  1.1.1.1.8.1       tls   PREFIX_EVEX_0FDF,
   1321  1.1.1.1.8.1       tls   PREFIX_EVEX_0FE2,
   1322  1.1.1.1.8.1       tls   PREFIX_EVEX_0FE6,
   1323  1.1.1.1.8.1       tls   PREFIX_EVEX_0FE7,
   1324  1.1.1.1.8.1       tls   PREFIX_EVEX_0FEB,
   1325  1.1.1.1.8.1       tls   PREFIX_EVEX_0FEF,
   1326  1.1.1.1.8.1       tls   PREFIX_EVEX_0FF2,
   1327  1.1.1.1.8.1       tls   PREFIX_EVEX_0FF3,
   1328  1.1.1.1.8.1       tls   PREFIX_EVEX_0FF4,
   1329  1.1.1.1.8.1       tls   PREFIX_EVEX_0FFA,
   1330  1.1.1.1.8.1       tls   PREFIX_EVEX_0FFB,
   1331  1.1.1.1.8.1       tls   PREFIX_EVEX_0FFE,
   1332  1.1.1.1.8.1       tls   PREFIX_EVEX_0F380C,
   1333  1.1.1.1.8.1       tls   PREFIX_EVEX_0F380D,
   1334  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3811,
   1335  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3812,
   1336  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3813,
   1337  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3814,
   1338  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3815,
   1339  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3816,
   1340  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3818,
   1341  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3819,
   1342  1.1.1.1.8.1       tls   PREFIX_EVEX_0F381A,
   1343  1.1.1.1.8.1       tls   PREFIX_EVEX_0F381B,
   1344  1.1.1.1.8.1       tls   PREFIX_EVEX_0F381E,
   1345  1.1.1.1.8.1       tls   PREFIX_EVEX_0F381F,
   1346  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3821,
   1347  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3822,
   1348  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3823,
   1349  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3824,
   1350  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3825,
   1351  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3827,
   1352  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3828,
   1353  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3829,
   1354  1.1.1.1.8.1       tls   PREFIX_EVEX_0F382A,
   1355  1.1.1.1.8.1       tls   PREFIX_EVEX_0F382C,
   1356  1.1.1.1.8.1       tls   PREFIX_EVEX_0F382D,
   1357  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3831,
   1358  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3832,
   1359  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3833,
   1360  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3834,
   1361  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3835,
   1362  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3836,
   1363  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3837,
   1364  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3839,
   1365  1.1.1.1.8.1       tls   PREFIX_EVEX_0F383A,
   1366  1.1.1.1.8.1       tls   PREFIX_EVEX_0F383B,
   1367  1.1.1.1.8.1       tls   PREFIX_EVEX_0F383D,
   1368  1.1.1.1.8.1       tls   PREFIX_EVEX_0F383F,
   1369  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3840,
   1370  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3842,
   1371  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3843,
   1372  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3844,
   1373  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3845,
   1374  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3846,
   1375  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3847,
   1376  1.1.1.1.8.1       tls   PREFIX_EVEX_0F384C,
   1377  1.1.1.1.8.1       tls   PREFIX_EVEX_0F384D,
   1378  1.1.1.1.8.1       tls   PREFIX_EVEX_0F384E,
   1379  1.1.1.1.8.1       tls   PREFIX_EVEX_0F384F,
   1380  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3858,
   1381  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3859,
   1382  1.1.1.1.8.1       tls   PREFIX_EVEX_0F385A,
   1383  1.1.1.1.8.1       tls   PREFIX_EVEX_0F385B,
   1384  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3864,
   1385  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3865,
   1386  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3876,
   1387  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3877,
   1388  1.1.1.1.8.1       tls   PREFIX_EVEX_0F387C,
   1389  1.1.1.1.8.1       tls   PREFIX_EVEX_0F387E,
   1390  1.1.1.1.8.1       tls   PREFIX_EVEX_0F387F,
   1391  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3888,
   1392  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3889,
   1393  1.1.1.1.8.1       tls   PREFIX_EVEX_0F388A,
   1394  1.1.1.1.8.1       tls   PREFIX_EVEX_0F388B,
   1395  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3890,
   1396  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3891,
   1397  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3892,
   1398  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3893,
   1399  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3896,
   1400  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3897,
   1401  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3898,
   1402  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3899,
   1403  1.1.1.1.8.1       tls   PREFIX_EVEX_0F389A,
   1404  1.1.1.1.8.1       tls   PREFIX_EVEX_0F389B,
   1405  1.1.1.1.8.1       tls   PREFIX_EVEX_0F389C,
   1406  1.1.1.1.8.1       tls   PREFIX_EVEX_0F389D,
   1407  1.1.1.1.8.1       tls   PREFIX_EVEX_0F389E,
   1408  1.1.1.1.8.1       tls   PREFIX_EVEX_0F389F,
   1409  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A0,
   1410  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A1,
   1411  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A2,
   1412  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A3,
   1413  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A6,
   1414  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A7,
   1415  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A8,
   1416  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38A9,
   1417  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38AA,
   1418  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38AB,
   1419  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38AC,
   1420  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38AD,
   1421  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38AE,
   1422  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38AF,
   1423  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38B6,
   1424  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38B7,
   1425  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38B8,
   1426  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38B9,
   1427  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38BA,
   1428  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38BB,
   1429  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38BC,
   1430  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38BD,
   1431  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38BE,
   1432  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38BF,
   1433  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C4,
   1434  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C6_REG_1,
   1435  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C6_REG_2,
   1436  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C6_REG_5,
   1437  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C6_REG_6,
   1438  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C7_REG_1,
   1439  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C7_REG_2,
   1440  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C7_REG_5,
   1441  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C7_REG_6,
   1442  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38C8,
   1443  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38CA,
   1444  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38CB,
   1445  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38CC,
   1446  1.1.1.1.8.1       tls   PREFIX_EVEX_0F38CD,
   1447  1.1.1.1.8.1       tls 
   1448  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A00,
   1449  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A01,
   1450  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A03,
   1451  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A04,
   1452  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A05,
   1453  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A08,
   1454  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A09,
   1455  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A0A,
   1456  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A0B,
   1457  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A17,
   1458  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A18,
   1459  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A19,
   1460  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A1A,
   1461  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A1B,
   1462  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A1D,
   1463  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A1E,
   1464  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A1F,
   1465  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A21,
   1466  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A23,
   1467  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A25,
   1468  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A26,
   1469  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A27,
   1470  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A38,
   1471  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A39,
   1472  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A3A,
   1473  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A3B,
   1474  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A43,
   1475  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A54,
   1476  1.1.1.1.8.1       tls   PREFIX_EVEX_0F3A55,
   1477          1.1  christos };
   1478          1.1  christos 
   1479          1.1  christos enum
   1480          1.1  christos {
   1481          1.1  christos   X86_64_06 = 0,
   1482          1.1  christos   X86_64_07,
   1483          1.1  christos   X86_64_0D,
   1484          1.1  christos   X86_64_16,
   1485          1.1  christos   X86_64_17,
   1486          1.1  christos   X86_64_1E,
   1487          1.1  christos   X86_64_1F,
   1488          1.1  christos   X86_64_27,
   1489          1.1  christos   X86_64_2F,
   1490          1.1  christos   X86_64_37,
   1491          1.1  christos   X86_64_3F,
   1492          1.1  christos   X86_64_60,
   1493          1.1  christos   X86_64_61,
   1494          1.1  christos   X86_64_62,
   1495          1.1  christos   X86_64_63,
   1496          1.1  christos   X86_64_6D,
   1497          1.1  christos   X86_64_6F,
   1498          1.1  christos   X86_64_9A,
   1499          1.1  christos   X86_64_C4,
   1500          1.1  christos   X86_64_C5,
   1501          1.1  christos   X86_64_CE,
   1502          1.1  christos   X86_64_D4,
   1503          1.1  christos   X86_64_D5,
   1504          1.1  christos   X86_64_EA,
   1505          1.1  christos   X86_64_0F01_REG_0,
   1506          1.1  christos   X86_64_0F01_REG_1,
   1507          1.1  christos   X86_64_0F01_REG_2,
   1508          1.1  christos   X86_64_0F01_REG_3
   1509          1.1  christos };
   1510          1.1  christos 
   1511          1.1  christos enum
   1512          1.1  christos {
   1513          1.1  christos   THREE_BYTE_0F38 = 0,
   1514          1.1  christos   THREE_BYTE_0F3A,
   1515          1.1  christos   THREE_BYTE_0F7A
   1516          1.1  christos };
   1517          1.1  christos 
   1518          1.1  christos enum
   1519          1.1  christos {
   1520          1.1  christos   XOP_08 = 0,
   1521          1.1  christos   XOP_09,
   1522          1.1  christos   XOP_0A
   1523          1.1  christos };
   1524          1.1  christos 
   1525          1.1  christos enum
   1526          1.1  christos {
   1527          1.1  christos   VEX_0F = 0,
   1528          1.1  christos   VEX_0F38,
   1529          1.1  christos   VEX_0F3A
   1530          1.1  christos };
   1531          1.1  christos 
   1532          1.1  christos enum
   1533          1.1  christos {
   1534  1.1.1.1.8.1       tls   EVEX_0F = 0,
   1535  1.1.1.1.8.1       tls   EVEX_0F38,
   1536  1.1.1.1.8.1       tls   EVEX_0F3A
   1537  1.1.1.1.8.1       tls };
   1538  1.1.1.1.8.1       tls 
   1539  1.1.1.1.8.1       tls enum
   1540  1.1.1.1.8.1       tls {
   1541          1.1  christos   VEX_LEN_0F10_P_1 = 0,
   1542          1.1  christos   VEX_LEN_0F10_P_3,
   1543          1.1  christos   VEX_LEN_0F11_P_1,
   1544          1.1  christos   VEX_LEN_0F11_P_3,
   1545          1.1  christos   VEX_LEN_0F12_P_0_M_0,
   1546          1.1  christos   VEX_LEN_0F12_P_0_M_1,
   1547          1.1  christos   VEX_LEN_0F12_P_2,
   1548          1.1  christos   VEX_LEN_0F13_M_0,
   1549          1.1  christos   VEX_LEN_0F16_P_0_M_0,
   1550          1.1  christos   VEX_LEN_0F16_P_0_M_1,
   1551          1.1  christos   VEX_LEN_0F16_P_2,
   1552          1.1  christos   VEX_LEN_0F17_M_0,
   1553          1.1  christos   VEX_LEN_0F2A_P_1,
   1554          1.1  christos   VEX_LEN_0F2A_P_3,
   1555          1.1  christos   VEX_LEN_0F2C_P_1,
   1556          1.1  christos   VEX_LEN_0F2C_P_3,
   1557          1.1  christos   VEX_LEN_0F2D_P_1,
   1558          1.1  christos   VEX_LEN_0F2D_P_3,
   1559          1.1  christos   VEX_LEN_0F2E_P_0,
   1560          1.1  christos   VEX_LEN_0F2E_P_2,
   1561          1.1  christos   VEX_LEN_0F2F_P_0,
   1562          1.1  christos   VEX_LEN_0F2F_P_2,
   1563  1.1.1.1.8.1       tls   VEX_LEN_0F41_P_0,
   1564  1.1.1.1.8.1       tls   VEX_LEN_0F42_P_0,
   1565  1.1.1.1.8.1       tls   VEX_LEN_0F44_P_0,
   1566  1.1.1.1.8.1       tls   VEX_LEN_0F45_P_0,
   1567  1.1.1.1.8.1       tls   VEX_LEN_0F46_P_0,
   1568  1.1.1.1.8.1       tls   VEX_LEN_0F47_P_0,
   1569  1.1.1.1.8.1       tls   VEX_LEN_0F4B_P_2,
   1570          1.1  christos   VEX_LEN_0F51_P_1,
   1571          1.1  christos   VEX_LEN_0F51_P_3,
   1572          1.1  christos   VEX_LEN_0F52_P_1,
   1573          1.1  christos   VEX_LEN_0F53_P_1,
   1574          1.1  christos   VEX_LEN_0F58_P_1,
   1575          1.1  christos   VEX_LEN_0F58_P_3,
   1576          1.1  christos   VEX_LEN_0F59_P_1,
   1577          1.1  christos   VEX_LEN_0F59_P_3,
   1578          1.1  christos   VEX_LEN_0F5A_P_1,
   1579          1.1  christos   VEX_LEN_0F5A_P_3,
   1580          1.1  christos   VEX_LEN_0F5C_P_1,
   1581          1.1  christos   VEX_LEN_0F5C_P_3,
   1582          1.1  christos   VEX_LEN_0F5D_P_1,
   1583          1.1  christos   VEX_LEN_0F5D_P_3,
   1584          1.1  christos   VEX_LEN_0F5E_P_1,
   1585          1.1  christos   VEX_LEN_0F5E_P_3,
   1586          1.1  christos   VEX_LEN_0F5F_P_1,
   1587          1.1  christos   VEX_LEN_0F5F_P_3,
   1588          1.1  christos   VEX_LEN_0F6E_P_2,
   1589          1.1  christos   VEX_LEN_0F7E_P_1,
   1590          1.1  christos   VEX_LEN_0F7E_P_2,
   1591  1.1.1.1.8.1       tls   VEX_LEN_0F90_P_0,
   1592  1.1.1.1.8.1       tls   VEX_LEN_0F91_P_0,
   1593  1.1.1.1.8.1       tls   VEX_LEN_0F92_P_0,
   1594  1.1.1.1.8.1       tls   VEX_LEN_0F93_P_0,
   1595  1.1.1.1.8.1       tls   VEX_LEN_0F98_P_0,
   1596          1.1  christos   VEX_LEN_0FAE_R_2_M_0,
   1597          1.1  christos   VEX_LEN_0FAE_R_3_M_0,
   1598          1.1  christos   VEX_LEN_0FC2_P_1,
   1599          1.1  christos   VEX_LEN_0FC2_P_3,
   1600          1.1  christos   VEX_LEN_0FC4_P_2,
   1601          1.1  christos   VEX_LEN_0FC5_P_2,
   1602          1.1  christos   VEX_LEN_0FD6_P_2,
   1603          1.1  christos   VEX_LEN_0FF7_P_2,
   1604  1.1.1.1.8.1       tls   VEX_LEN_0F3816_P_2,
   1605  1.1.1.1.8.1       tls   VEX_LEN_0F3819_P_2,
   1606          1.1  christos   VEX_LEN_0F381A_P_2_M_0,
   1607  1.1.1.1.8.1       tls   VEX_LEN_0F3836_P_2,
   1608          1.1  christos   VEX_LEN_0F3841_P_2,
   1609  1.1.1.1.8.1       tls   VEX_LEN_0F385A_P_2_M_0,
   1610          1.1  christos   VEX_LEN_0F38DB_P_2,
   1611          1.1  christos   VEX_LEN_0F38DC_P_2,
   1612          1.1  christos   VEX_LEN_0F38DD_P_2,
   1613          1.1  christos   VEX_LEN_0F38DE_P_2,
   1614          1.1  christos   VEX_LEN_0F38DF_P_2,
   1615          1.1  christos   VEX_LEN_0F38F2_P_0,
   1616          1.1  christos   VEX_LEN_0F38F3_R_1_P_0,
   1617          1.1  christos   VEX_LEN_0F38F3_R_2_P_0,
   1618          1.1  christos   VEX_LEN_0F38F3_R_3_P_0,
   1619  1.1.1.1.8.1       tls   VEX_LEN_0F38F5_P_0,
   1620  1.1.1.1.8.1       tls   VEX_LEN_0F38F5_P_1,
   1621  1.1.1.1.8.1       tls   VEX_LEN_0F38F5_P_3,
   1622  1.1.1.1.8.1       tls   VEX_LEN_0F38F6_P_3,
   1623          1.1  christos   VEX_LEN_0F38F7_P_0,
   1624  1.1.1.1.8.1       tls   VEX_LEN_0F38F7_P_1,
   1625  1.1.1.1.8.1       tls   VEX_LEN_0F38F7_P_2,
   1626  1.1.1.1.8.1       tls   VEX_LEN_0F38F7_P_3,
   1627  1.1.1.1.8.1       tls   VEX_LEN_0F3A00_P_2,
   1628  1.1.1.1.8.1       tls   VEX_LEN_0F3A01_P_2,
   1629          1.1  christos   VEX_LEN_0F3A06_P_2,
   1630          1.1  christos   VEX_LEN_0F3A0A_P_2,
   1631          1.1  christos   VEX_LEN_0F3A0B_P_2,
   1632          1.1  christos   VEX_LEN_0F3A14_P_2,
   1633          1.1  christos   VEX_LEN_0F3A15_P_2,
   1634          1.1  christos   VEX_LEN_0F3A16_P_2,
   1635          1.1  christos   VEX_LEN_0F3A17_P_2,
   1636          1.1  christos   VEX_LEN_0F3A18_P_2,
   1637          1.1  christos   VEX_LEN_0F3A19_P_2,
   1638          1.1  christos   VEX_LEN_0F3A20_P_2,
   1639          1.1  christos   VEX_LEN_0F3A21_P_2,
   1640          1.1  christos   VEX_LEN_0F3A22_P_2,
   1641  1.1.1.1.8.1       tls   VEX_LEN_0F3A30_P_2,
   1642  1.1.1.1.8.1       tls   VEX_LEN_0F3A32_P_2,
   1643  1.1.1.1.8.1       tls   VEX_LEN_0F3A38_P_2,
   1644  1.1.1.1.8.1       tls   VEX_LEN_0F3A39_P_2,
   1645          1.1  christos   VEX_LEN_0F3A41_P_2,
   1646          1.1  christos   VEX_LEN_0F3A44_P_2,
   1647  1.1.1.1.8.1       tls   VEX_LEN_0F3A46_P_2,
   1648          1.1  christos   VEX_LEN_0F3A60_P_2,
   1649          1.1  christos   VEX_LEN_0F3A61_P_2,
   1650          1.1  christos   VEX_LEN_0F3A62_P_2,
   1651          1.1  christos   VEX_LEN_0F3A63_P_2,
   1652          1.1  christos   VEX_LEN_0F3A6A_P_2,
   1653          1.1  christos   VEX_LEN_0F3A6B_P_2,
   1654          1.1  christos   VEX_LEN_0F3A6E_P_2,
   1655          1.1  christos   VEX_LEN_0F3A6F_P_2,
   1656          1.1  christos   VEX_LEN_0F3A7A_P_2,
   1657          1.1  christos   VEX_LEN_0F3A7B_P_2,
   1658          1.1  christos   VEX_LEN_0F3A7E_P_2,
   1659          1.1  christos   VEX_LEN_0F3A7F_P_2,
   1660          1.1  christos   VEX_LEN_0F3ADF_P_2,
   1661  1.1.1.1.8.1       tls   VEX_LEN_0F3AF0_P_3,
   1662  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_CC,
   1663  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_CD,
   1664  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_CE,
   1665  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_CF,
   1666  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_EC,
   1667  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_ED,
   1668  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_EE,
   1669  1.1.1.1.8.1       tls   VEX_LEN_0FXOP_08_EF,
   1670          1.1  christos   VEX_LEN_0FXOP_09_80,
   1671          1.1  christos   VEX_LEN_0FXOP_09_81
   1672          1.1  christos };
   1673          1.1  christos 
   1674          1.1  christos enum
   1675          1.1  christos {
   1676          1.1  christos   VEX_W_0F10_P_0 = 0,
   1677          1.1  christos   VEX_W_0F10_P_1,
   1678          1.1  christos   VEX_W_0F10_P_2,
   1679          1.1  christos   VEX_W_0F10_P_3,
   1680          1.1  christos   VEX_W_0F11_P_0,
   1681          1.1  christos   VEX_W_0F11_P_1,
   1682          1.1  christos   VEX_W_0F11_P_2,
   1683          1.1  christos   VEX_W_0F11_P_3,
   1684          1.1  christos   VEX_W_0F12_P_0_M_0,
   1685          1.1  christos   VEX_W_0F12_P_0_M_1,
   1686          1.1  christos   VEX_W_0F12_P_1,
   1687          1.1  christos   VEX_W_0F12_P_2,
   1688          1.1  christos   VEX_W_0F12_P_3,
   1689          1.1  christos   VEX_W_0F13_M_0,
   1690          1.1  christos   VEX_W_0F14,
   1691          1.1  christos   VEX_W_0F15,
   1692          1.1  christos   VEX_W_0F16_P_0_M_0,
   1693          1.1  christos   VEX_W_0F16_P_0_M_1,
   1694          1.1  christos   VEX_W_0F16_P_1,
   1695          1.1  christos   VEX_W_0F16_P_2,
   1696          1.1  christos   VEX_W_0F17_M_0,
   1697          1.1  christos   VEX_W_0F28,
   1698          1.1  christos   VEX_W_0F29,
   1699          1.1  christos   VEX_W_0F2B_M_0,
   1700          1.1  christos   VEX_W_0F2E_P_0,
   1701          1.1  christos   VEX_W_0F2E_P_2,
   1702          1.1  christos   VEX_W_0F2F_P_0,
   1703          1.1  christos   VEX_W_0F2F_P_2,
   1704  1.1.1.1.8.1       tls   VEX_W_0F41_P_0_LEN_1,
   1705  1.1.1.1.8.1       tls   VEX_W_0F42_P_0_LEN_1,
   1706  1.1.1.1.8.1       tls   VEX_W_0F44_P_0_LEN_0,
   1707  1.1.1.1.8.1       tls   VEX_W_0F45_P_0_LEN_1,
   1708  1.1.1.1.8.1       tls   VEX_W_0F46_P_0_LEN_1,
   1709  1.1.1.1.8.1       tls   VEX_W_0F47_P_0_LEN_1,
   1710  1.1.1.1.8.1       tls   VEX_W_0F4B_P_2_LEN_1,
   1711          1.1  christos   VEX_W_0F50_M_0,
   1712          1.1  christos   VEX_W_0F51_P_0,
   1713          1.1  christos   VEX_W_0F51_P_1,
   1714          1.1  christos   VEX_W_0F51_P_2,
   1715          1.1  christos   VEX_W_0F51_P_3,
   1716          1.1  christos   VEX_W_0F52_P_0,
   1717          1.1  christos   VEX_W_0F52_P_1,
   1718          1.1  christos   VEX_W_0F53_P_0,
   1719          1.1  christos   VEX_W_0F53_P_1,
   1720          1.1  christos   VEX_W_0F58_P_0,
   1721          1.1  christos   VEX_W_0F58_P_1,
   1722          1.1  christos   VEX_W_0F58_P_2,
   1723          1.1  christos   VEX_W_0F58_P_3,
   1724          1.1  christos   VEX_W_0F59_P_0,
   1725          1.1  christos   VEX_W_0F59_P_1,
   1726          1.1  christos   VEX_W_0F59_P_2,
   1727          1.1  christos   VEX_W_0F59_P_3,
   1728          1.1  christos   VEX_W_0F5A_P_0,
   1729          1.1  christos   VEX_W_0F5A_P_1,
   1730          1.1  christos   VEX_W_0F5A_P_3,
   1731          1.1  christos   VEX_W_0F5B_P_0,
   1732          1.1  christos   VEX_W_0F5B_P_1,
   1733          1.1  christos   VEX_W_0F5B_P_2,
   1734          1.1  christos   VEX_W_0F5C_P_0,
   1735          1.1  christos   VEX_W_0F5C_P_1,
   1736          1.1  christos   VEX_W_0F5C_P_2,
   1737          1.1  christos   VEX_W_0F5C_P_3,
   1738          1.1  christos   VEX_W_0F5D_P_0,
   1739          1.1  christos   VEX_W_0F5D_P_1,
   1740          1.1  christos   VEX_W_0F5D_P_2,
   1741          1.1  christos   VEX_W_0F5D_P_3,
   1742          1.1  christos   VEX_W_0F5E_P_0,
   1743          1.1  christos   VEX_W_0F5E_P_1,
   1744          1.1  christos   VEX_W_0F5E_P_2,
   1745          1.1  christos   VEX_W_0F5E_P_3,
   1746          1.1  christos   VEX_W_0F5F_P_0,
   1747          1.1  christos   VEX_W_0F5F_P_1,
   1748          1.1  christos   VEX_W_0F5F_P_2,
   1749          1.1  christos   VEX_W_0F5F_P_3,
   1750          1.1  christos   VEX_W_0F60_P_2,
   1751          1.1  christos   VEX_W_0F61_P_2,
   1752          1.1  christos   VEX_W_0F62_P_2,
   1753          1.1  christos   VEX_W_0F63_P_2,
   1754          1.1  christos   VEX_W_0F64_P_2,
   1755          1.1  christos   VEX_W_0F65_P_2,
   1756          1.1  christos   VEX_W_0F66_P_2,
   1757          1.1  christos   VEX_W_0F67_P_2,
   1758          1.1  christos   VEX_W_0F68_P_2,
   1759          1.1  christos   VEX_W_0F69_P_2,
   1760          1.1  christos   VEX_W_0F6A_P_2,
   1761          1.1  christos   VEX_W_0F6B_P_2,
   1762          1.1  christos   VEX_W_0F6C_P_2,
   1763          1.1  christos   VEX_W_0F6D_P_2,
   1764          1.1  christos   VEX_W_0F6F_P_1,
   1765          1.1  christos   VEX_W_0F6F_P_2,
   1766          1.1  christos   VEX_W_0F70_P_1,
   1767          1.1  christos   VEX_W_0F70_P_2,
   1768          1.1  christos   VEX_W_0F70_P_3,
   1769          1.1  christos   VEX_W_0F71_R_2_P_2,
   1770          1.1  christos   VEX_W_0F71_R_4_P_2,
   1771          1.1  christos   VEX_W_0F71_R_6_P_2,
   1772          1.1  christos   VEX_W_0F72_R_2_P_2,
   1773          1.1  christos   VEX_W_0F72_R_4_P_2,
   1774          1.1  christos   VEX_W_0F72_R_6_P_2,
   1775          1.1  christos   VEX_W_0F73_R_2_P_2,
   1776          1.1  christos   VEX_W_0F73_R_3_P_2,
   1777          1.1  christos   VEX_W_0F73_R_6_P_2,
   1778          1.1  christos   VEX_W_0F73_R_7_P_2,
   1779          1.1  christos   VEX_W_0F74_P_2,
   1780          1.1  christos   VEX_W_0F75_P_2,
   1781          1.1  christos   VEX_W_0F76_P_2,
   1782          1.1  christos   VEX_W_0F77_P_0,
   1783          1.1  christos   VEX_W_0F7C_P_2,
   1784          1.1  christos   VEX_W_0F7C_P_3,
   1785          1.1  christos   VEX_W_0F7D_P_2,
   1786          1.1  christos   VEX_W_0F7D_P_3,
   1787          1.1  christos   VEX_W_0F7E_P_1,
   1788          1.1  christos   VEX_W_0F7F_P_1,
   1789          1.1  christos   VEX_W_0F7F_P_2,
   1790  1.1.1.1.8.1       tls   VEX_W_0F90_P_0_LEN_0,
   1791  1.1.1.1.8.1       tls   VEX_W_0F91_P_0_LEN_0,
   1792  1.1.1.1.8.1       tls   VEX_W_0F92_P_0_LEN_0,
   1793  1.1.1.1.8.1       tls   VEX_W_0F93_P_0_LEN_0,
   1794  1.1.1.1.8.1       tls   VEX_W_0F98_P_0_LEN_0,
   1795          1.1  christos   VEX_W_0FAE_R_2_M_0,
   1796          1.1  christos   VEX_W_0FAE_R_3_M_0,
   1797          1.1  christos   VEX_W_0FC2_P_0,
   1798          1.1  christos   VEX_W_0FC2_P_1,
   1799          1.1  christos   VEX_W_0FC2_P_2,
   1800          1.1  christos   VEX_W_0FC2_P_3,
   1801          1.1  christos   VEX_W_0FC4_P_2,
   1802          1.1  christos   VEX_W_0FC5_P_2,
   1803          1.1  christos   VEX_W_0FD0_P_2,
   1804          1.1  christos   VEX_W_0FD0_P_3,
   1805          1.1  christos   VEX_W_0FD1_P_2,
   1806          1.1  christos   VEX_W_0FD2_P_2,
   1807          1.1  christos   VEX_W_0FD3_P_2,
   1808          1.1  christos   VEX_W_0FD4_P_2,
   1809          1.1  christos   VEX_W_0FD5_P_2,
   1810          1.1  christos   VEX_W_0FD6_P_2,
   1811          1.1  christos   VEX_W_0FD7_P_2_M_1,
   1812          1.1  christos   VEX_W_0FD8_P_2,
   1813          1.1  christos   VEX_W_0FD9_P_2,
   1814          1.1  christos   VEX_W_0FDA_P_2,
   1815          1.1  christos   VEX_W_0FDB_P_2,
   1816          1.1  christos   VEX_W_0FDC_P_2,
   1817          1.1  christos   VEX_W_0FDD_P_2,
   1818          1.1  christos   VEX_W_0FDE_P_2,
   1819          1.1  christos   VEX_W_0FDF_P_2,
   1820          1.1  christos   VEX_W_0FE0_P_2,
   1821          1.1  christos   VEX_W_0FE1_P_2,
   1822          1.1  christos   VEX_W_0FE2_P_2,
   1823          1.1  christos   VEX_W_0FE3_P_2,
   1824          1.1  christos   VEX_W_0FE4_P_2,
   1825          1.1  christos   VEX_W_0FE5_P_2,
   1826          1.1  christos   VEX_W_0FE6_P_1,
   1827          1.1  christos   VEX_W_0FE6_P_2,
   1828          1.1  christos   VEX_W_0FE6_P_3,
   1829          1.1  christos   VEX_W_0FE7_P_2_M_0,
   1830          1.1  christos   VEX_W_0FE8_P_2,
   1831          1.1  christos   VEX_W_0FE9_P_2,
   1832          1.1  christos   VEX_W_0FEA_P_2,
   1833          1.1  christos   VEX_W_0FEB_P_2,
   1834          1.1  christos   VEX_W_0FEC_P_2,
   1835          1.1  christos   VEX_W_0FED_P_2,
   1836          1.1  christos   VEX_W_0FEE_P_2,
   1837          1.1  christos   VEX_W_0FEF_P_2,
   1838          1.1  christos   VEX_W_0FF0_P_3_M_0,
   1839          1.1  christos   VEX_W_0FF1_P_2,
   1840          1.1  christos   VEX_W_0FF2_P_2,
   1841          1.1  christos   VEX_W_0FF3_P_2,
   1842          1.1  christos   VEX_W_0FF4_P_2,
   1843          1.1  christos   VEX_W_0FF5_P_2,
   1844          1.1  christos   VEX_W_0FF6_P_2,
   1845          1.1  christos   VEX_W_0FF7_P_2,
   1846          1.1  christos   VEX_W_0FF8_P_2,
   1847          1.1  christos   VEX_W_0FF9_P_2,
   1848          1.1  christos   VEX_W_0FFA_P_2,
   1849          1.1  christos   VEX_W_0FFB_P_2,
   1850          1.1  christos   VEX_W_0FFC_P_2,
   1851          1.1  christos   VEX_W_0FFD_P_2,
   1852          1.1  christos   VEX_W_0FFE_P_2,
   1853          1.1  christos   VEX_W_0F3800_P_2,
   1854          1.1  christos   VEX_W_0F3801_P_2,
   1855          1.1  christos   VEX_W_0F3802_P_2,
   1856          1.1  christos   VEX_W_0F3803_P_2,
   1857          1.1  christos   VEX_W_0F3804_P_2,
   1858          1.1  christos   VEX_W_0F3805_P_2,
   1859          1.1  christos   VEX_W_0F3806_P_2,
   1860          1.1  christos   VEX_W_0F3807_P_2,
   1861          1.1  christos   VEX_W_0F3808_P_2,
   1862          1.1  christos   VEX_W_0F3809_P_2,
   1863          1.1  christos   VEX_W_0F380A_P_2,
   1864          1.1  christos   VEX_W_0F380B_P_2,
   1865          1.1  christos   VEX_W_0F380C_P_2,
   1866          1.1  christos   VEX_W_0F380D_P_2,
   1867          1.1  christos   VEX_W_0F380E_P_2,
   1868          1.1  christos   VEX_W_0F380F_P_2,
   1869  1.1.1.1.8.1       tls   VEX_W_0F3816_P_2,
   1870          1.1  christos   VEX_W_0F3817_P_2,
   1871  1.1.1.1.8.1       tls   VEX_W_0F3818_P_2,
   1872  1.1.1.1.8.1       tls   VEX_W_0F3819_P_2,
   1873          1.1  christos   VEX_W_0F381A_P_2_M_0,
   1874          1.1  christos   VEX_W_0F381C_P_2,
   1875          1.1  christos   VEX_W_0F381D_P_2,
   1876          1.1  christos   VEX_W_0F381E_P_2,
   1877          1.1  christos   VEX_W_0F3820_P_2,
   1878          1.1  christos   VEX_W_0F3821_P_2,
   1879          1.1  christos   VEX_W_0F3822_P_2,
   1880          1.1  christos   VEX_W_0F3823_P_2,
   1881          1.1  christos   VEX_W_0F3824_P_2,
   1882          1.1  christos   VEX_W_0F3825_P_2,
   1883          1.1  christos   VEX_W_0F3828_P_2,
   1884          1.1  christos   VEX_W_0F3829_P_2,
   1885          1.1  christos   VEX_W_0F382A_P_2_M_0,
   1886          1.1  christos   VEX_W_0F382B_P_2,
   1887          1.1  christos   VEX_W_0F382C_P_2_M_0,
   1888          1.1  christos   VEX_W_0F382D_P_2_M_0,
   1889          1.1  christos   VEX_W_0F382E_P_2_M_0,
   1890          1.1  christos   VEX_W_0F382F_P_2_M_0,
   1891          1.1  christos   VEX_W_0F3830_P_2,
   1892          1.1  christos   VEX_W_0F3831_P_2,
   1893          1.1  christos   VEX_W_0F3832_P_2,
   1894          1.1  christos   VEX_W_0F3833_P_2,
   1895          1.1  christos   VEX_W_0F3834_P_2,
   1896          1.1  christos   VEX_W_0F3835_P_2,
   1897  1.1.1.1.8.1       tls   VEX_W_0F3836_P_2,
   1898          1.1  christos   VEX_W_0F3837_P_2,
   1899          1.1  christos   VEX_W_0F3838_P_2,
   1900          1.1  christos   VEX_W_0F3839_P_2,
   1901          1.1  christos   VEX_W_0F383A_P_2,
   1902          1.1  christos   VEX_W_0F383B_P_2,
   1903          1.1  christos   VEX_W_0F383C_P_2,
   1904          1.1  christos   VEX_W_0F383D_P_2,
   1905          1.1  christos   VEX_W_0F383E_P_2,
   1906          1.1  christos   VEX_W_0F383F_P_2,
   1907          1.1  christos   VEX_W_0F3840_P_2,
   1908          1.1  christos   VEX_W_0F3841_P_2,
   1909  1.1.1.1.8.1       tls   VEX_W_0F3846_P_2,
   1910  1.1.1.1.8.1       tls   VEX_W_0F3858_P_2,
   1911  1.1.1.1.8.1       tls   VEX_W_0F3859_P_2,
   1912  1.1.1.1.8.1       tls   VEX_W_0F385A_P_2_M_0,
   1913  1.1.1.1.8.1       tls   VEX_W_0F3878_P_2,
   1914  1.1.1.1.8.1       tls   VEX_W_0F3879_P_2,
   1915          1.1  christos   VEX_W_0F38DB_P_2,
   1916          1.1  christos   VEX_W_0F38DC_P_2,
   1917          1.1  christos   VEX_W_0F38DD_P_2,
   1918          1.1  christos   VEX_W_0F38DE_P_2,
   1919          1.1  christos   VEX_W_0F38DF_P_2,
   1920  1.1.1.1.8.1       tls   VEX_W_0F3A00_P_2,
   1921  1.1.1.1.8.1       tls   VEX_W_0F3A01_P_2,
   1922  1.1.1.1.8.1       tls   VEX_W_0F3A02_P_2,
   1923          1.1  christos   VEX_W_0F3A04_P_2,
   1924          1.1  christos   VEX_W_0F3A05_P_2,
   1925          1.1  christos   VEX_W_0F3A06_P_2,
   1926          1.1  christos   VEX_W_0F3A08_P_2,
   1927          1.1  christos   VEX_W_0F3A09_P_2,
   1928          1.1  christos   VEX_W_0F3A0A_P_2,
   1929          1.1  christos   VEX_W_0F3A0B_P_2,
   1930          1.1  christos   VEX_W_0F3A0C_P_2,
   1931          1.1  christos   VEX_W_0F3A0D_P_2,
   1932          1.1  christos   VEX_W_0F3A0E_P_2,
   1933          1.1  christos   VEX_W_0F3A0F_P_2,
   1934          1.1  christos   VEX_W_0F3A14_P_2,
   1935          1.1  christos   VEX_W_0F3A15_P_2,
   1936          1.1  christos   VEX_W_0F3A18_P_2,
   1937          1.1  christos   VEX_W_0F3A19_P_2,
   1938          1.1  christos   VEX_W_0F3A20_P_2,
   1939          1.1  christos   VEX_W_0F3A21_P_2,
   1940  1.1.1.1.8.1       tls   VEX_W_0F3A30_P_2_LEN_0,
   1941  1.1.1.1.8.1       tls   VEX_W_0F3A32_P_2_LEN_0,
   1942  1.1.1.1.8.1       tls   VEX_W_0F3A38_P_2,
   1943  1.1.1.1.8.1       tls   VEX_W_0F3A39_P_2,
   1944          1.1  christos   VEX_W_0F3A40_P_2,
   1945          1.1  christos   VEX_W_0F3A41_P_2,
   1946          1.1  christos   VEX_W_0F3A42_P_2,
   1947          1.1  christos   VEX_W_0F3A44_P_2,
   1948  1.1.1.1.8.1       tls   VEX_W_0F3A46_P_2,
   1949          1.1  christos   VEX_W_0F3A48_P_2,
   1950          1.1  christos   VEX_W_0F3A49_P_2,
   1951          1.1  christos   VEX_W_0F3A4A_P_2,
   1952          1.1  christos   VEX_W_0F3A4B_P_2,
   1953          1.1  christos   VEX_W_0F3A4C_P_2,
   1954          1.1  christos   VEX_W_0F3A60_P_2,
   1955          1.1  christos   VEX_W_0F3A61_P_2,
   1956          1.1  christos   VEX_W_0F3A62_P_2,
   1957          1.1  christos   VEX_W_0F3A63_P_2,
   1958  1.1.1.1.8.1       tls   VEX_W_0F3ADF_P_2,
   1959  1.1.1.1.8.1       tls 
   1960  1.1.1.1.8.1       tls   EVEX_W_0F10_P_0,
   1961  1.1.1.1.8.1       tls   EVEX_W_0F10_P_1_M_0,
   1962  1.1.1.1.8.1       tls   EVEX_W_0F10_P_1_M_1,
   1963  1.1.1.1.8.1       tls   EVEX_W_0F10_P_2,
   1964  1.1.1.1.8.1       tls   EVEX_W_0F10_P_3_M_0,
   1965  1.1.1.1.8.1       tls   EVEX_W_0F10_P_3_M_1,
   1966  1.1.1.1.8.1       tls   EVEX_W_0F11_P_0,
   1967  1.1.1.1.8.1       tls   EVEX_W_0F11_P_1_M_0,
   1968  1.1.1.1.8.1       tls   EVEX_W_0F11_P_1_M_1,
   1969  1.1.1.1.8.1       tls   EVEX_W_0F11_P_2,
   1970  1.1.1.1.8.1       tls   EVEX_W_0F11_P_3_M_0,
   1971  1.1.1.1.8.1       tls   EVEX_W_0F11_P_3_M_1,
   1972  1.1.1.1.8.1       tls   EVEX_W_0F12_P_0_M_0,
   1973  1.1.1.1.8.1       tls   EVEX_W_0F12_P_0_M_1,
   1974  1.1.1.1.8.1       tls   EVEX_W_0F12_P_1,
   1975  1.1.1.1.8.1       tls   EVEX_W_0F12_P_2,
   1976  1.1.1.1.8.1       tls   EVEX_W_0F12_P_3,
   1977  1.1.1.1.8.1       tls   EVEX_W_0F13_P_0,
   1978  1.1.1.1.8.1       tls   EVEX_W_0F13_P_2,
   1979  1.1.1.1.8.1       tls   EVEX_W_0F14_P_0,
   1980  1.1.1.1.8.1       tls   EVEX_W_0F14_P_2,
   1981  1.1.1.1.8.1       tls   EVEX_W_0F15_P_0,
   1982  1.1.1.1.8.1       tls   EVEX_W_0F15_P_2,
   1983  1.1.1.1.8.1       tls   EVEX_W_0F16_P_0_M_0,
   1984  1.1.1.1.8.1       tls   EVEX_W_0F16_P_0_M_1,
   1985  1.1.1.1.8.1       tls   EVEX_W_0F16_P_1,
   1986  1.1.1.1.8.1       tls   EVEX_W_0F16_P_2,
   1987  1.1.1.1.8.1       tls   EVEX_W_0F17_P_0,
   1988  1.1.1.1.8.1       tls   EVEX_W_0F17_P_2,
   1989  1.1.1.1.8.1       tls   EVEX_W_0F28_P_0,
   1990  1.1.1.1.8.1       tls   EVEX_W_0F28_P_2,
   1991  1.1.1.1.8.1       tls   EVEX_W_0F29_P_0,
   1992  1.1.1.1.8.1       tls   EVEX_W_0F29_P_2,
   1993  1.1.1.1.8.1       tls   EVEX_W_0F2A_P_1,
   1994  1.1.1.1.8.1       tls   EVEX_W_0F2A_P_3,
   1995  1.1.1.1.8.1       tls   EVEX_W_0F2B_P_0,
   1996  1.1.1.1.8.1       tls   EVEX_W_0F2B_P_2,
   1997  1.1.1.1.8.1       tls   EVEX_W_0F2E_P_0,
   1998  1.1.1.1.8.1       tls   EVEX_W_0F2E_P_2,
   1999  1.1.1.1.8.1       tls   EVEX_W_0F2F_P_0,
   2000  1.1.1.1.8.1       tls   EVEX_W_0F2F_P_2,
   2001  1.1.1.1.8.1       tls   EVEX_W_0F51_P_0,
   2002  1.1.1.1.8.1       tls   EVEX_W_0F51_P_1,
   2003  1.1.1.1.8.1       tls   EVEX_W_0F51_P_2,
   2004  1.1.1.1.8.1       tls   EVEX_W_0F51_P_3,
   2005  1.1.1.1.8.1       tls   EVEX_W_0F58_P_0,
   2006  1.1.1.1.8.1       tls   EVEX_W_0F58_P_1,
   2007  1.1.1.1.8.1       tls   EVEX_W_0F58_P_2,
   2008  1.1.1.1.8.1       tls   EVEX_W_0F58_P_3,
   2009  1.1.1.1.8.1       tls   EVEX_W_0F59_P_0,
   2010  1.1.1.1.8.1       tls   EVEX_W_0F59_P_1,
   2011  1.1.1.1.8.1       tls   EVEX_W_0F59_P_2,
   2012  1.1.1.1.8.1       tls   EVEX_W_0F59_P_3,
   2013  1.1.1.1.8.1       tls   EVEX_W_0F5A_P_0,
   2014  1.1.1.1.8.1       tls   EVEX_W_0F5A_P_1,
   2015  1.1.1.1.8.1       tls   EVEX_W_0F5A_P_2,
   2016  1.1.1.1.8.1       tls   EVEX_W_0F5A_P_3,
   2017  1.1.1.1.8.1       tls   EVEX_W_0F5B_P_0,
   2018  1.1.1.1.8.1       tls   EVEX_W_0F5B_P_1,
   2019  1.1.1.1.8.1       tls   EVEX_W_0F5B_P_2,
   2020  1.1.1.1.8.1       tls   EVEX_W_0F5C_P_0,
   2021  1.1.1.1.8.1       tls   EVEX_W_0F5C_P_1,
   2022  1.1.1.1.8.1       tls   EVEX_W_0F5C_P_2,
   2023  1.1.1.1.8.1       tls   EVEX_W_0F5C_P_3,
   2024  1.1.1.1.8.1       tls   EVEX_W_0F5D_P_0,
   2025  1.1.1.1.8.1       tls   EVEX_W_0F5D_P_1,
   2026  1.1.1.1.8.1       tls   EVEX_W_0F5D_P_2,
   2027  1.1.1.1.8.1       tls   EVEX_W_0F5D_P_3,
   2028  1.1.1.1.8.1       tls   EVEX_W_0F5E_P_0,
   2029  1.1.1.1.8.1       tls   EVEX_W_0F5E_P_1,
   2030  1.1.1.1.8.1       tls   EVEX_W_0F5E_P_2,
   2031  1.1.1.1.8.1       tls   EVEX_W_0F5E_P_3,
   2032  1.1.1.1.8.1       tls   EVEX_W_0F5F_P_0,
   2033  1.1.1.1.8.1       tls   EVEX_W_0F5F_P_1,
   2034  1.1.1.1.8.1       tls   EVEX_W_0F5F_P_2,
   2035  1.1.1.1.8.1       tls   EVEX_W_0F5F_P_3,
   2036  1.1.1.1.8.1       tls   EVEX_W_0F62_P_2,
   2037  1.1.1.1.8.1       tls   EVEX_W_0F66_P_2,
   2038  1.1.1.1.8.1       tls   EVEX_W_0F6A_P_2,
   2039  1.1.1.1.8.1       tls   EVEX_W_0F6C_P_2,
   2040  1.1.1.1.8.1       tls   EVEX_W_0F6D_P_2,
   2041  1.1.1.1.8.1       tls   EVEX_W_0F6E_P_2,
   2042  1.1.1.1.8.1       tls   EVEX_W_0F6F_P_1,
   2043  1.1.1.1.8.1       tls   EVEX_W_0F6F_P_2,
   2044  1.1.1.1.8.1       tls   EVEX_W_0F70_P_2,
   2045  1.1.1.1.8.1       tls   EVEX_W_0F72_R_2_P_2,
   2046  1.1.1.1.8.1       tls   EVEX_W_0F72_R_6_P_2,
   2047  1.1.1.1.8.1       tls   EVEX_W_0F73_R_2_P_2,
   2048  1.1.1.1.8.1       tls   EVEX_W_0F73_R_6_P_2,
   2049  1.1.1.1.8.1       tls   EVEX_W_0F76_P_2,
   2050  1.1.1.1.8.1       tls   EVEX_W_0F78_P_0,
   2051  1.1.1.1.8.1       tls   EVEX_W_0F79_P_0,
   2052  1.1.1.1.8.1       tls   EVEX_W_0F7A_P_1,
   2053  1.1.1.1.8.1       tls   EVEX_W_0F7A_P_3,
   2054  1.1.1.1.8.1       tls   EVEX_W_0F7B_P_1,
   2055  1.1.1.1.8.1       tls   EVEX_W_0F7B_P_3,
   2056  1.1.1.1.8.1       tls   EVEX_W_0F7E_P_1,
   2057  1.1.1.1.8.1       tls   EVEX_W_0F7E_P_2,
   2058  1.1.1.1.8.1       tls   EVEX_W_0F7F_P_1,
   2059  1.1.1.1.8.1       tls   EVEX_W_0F7F_P_2,
   2060  1.1.1.1.8.1       tls   EVEX_W_0FC2_P_0,
   2061  1.1.1.1.8.1       tls   EVEX_W_0FC2_P_1,
   2062  1.1.1.1.8.1       tls   EVEX_W_0FC2_P_2,
   2063  1.1.1.1.8.1       tls   EVEX_W_0FC2_P_3,
   2064  1.1.1.1.8.1       tls   EVEX_W_0FC6_P_0,
   2065  1.1.1.1.8.1       tls   EVEX_W_0FC6_P_2,
   2066  1.1.1.1.8.1       tls   EVEX_W_0FD2_P_2,
   2067  1.1.1.1.8.1       tls   EVEX_W_0FD3_P_2,
   2068  1.1.1.1.8.1       tls   EVEX_W_0FD4_P_2,
   2069  1.1.1.1.8.1       tls   EVEX_W_0FD6_P_2,
   2070  1.1.1.1.8.1       tls   EVEX_W_0FE6_P_1,
   2071  1.1.1.1.8.1       tls   EVEX_W_0FE6_P_2,
   2072  1.1.1.1.8.1       tls   EVEX_W_0FE6_P_3,
   2073  1.1.1.1.8.1       tls   EVEX_W_0FE7_P_2,
   2074  1.1.1.1.8.1       tls   EVEX_W_0FF2_P_2,
   2075  1.1.1.1.8.1       tls   EVEX_W_0FF3_P_2,
   2076  1.1.1.1.8.1       tls   EVEX_W_0FF4_P_2,
   2077  1.1.1.1.8.1       tls   EVEX_W_0FFA_P_2,
   2078  1.1.1.1.8.1       tls   EVEX_W_0FFB_P_2,
   2079  1.1.1.1.8.1       tls   EVEX_W_0FFE_P_2,
   2080  1.1.1.1.8.1       tls   EVEX_W_0F380C_P_2,
   2081  1.1.1.1.8.1       tls   EVEX_W_0F380D_P_2,
   2082  1.1.1.1.8.1       tls   EVEX_W_0F3811_P_1,
   2083  1.1.1.1.8.1       tls   EVEX_W_0F3812_P_1,
   2084  1.1.1.1.8.1       tls   EVEX_W_0F3813_P_1,
   2085  1.1.1.1.8.1       tls   EVEX_W_0F3813_P_2,
   2086  1.1.1.1.8.1       tls   EVEX_W_0F3814_P_1,
   2087  1.1.1.1.8.1       tls   EVEX_W_0F3815_P_1,
   2088  1.1.1.1.8.1       tls   EVEX_W_0F3818_P_2,
   2089  1.1.1.1.8.1       tls   EVEX_W_0F3819_P_2,
   2090  1.1.1.1.8.1       tls   EVEX_W_0F381A_P_2,
   2091  1.1.1.1.8.1       tls   EVEX_W_0F381B_P_2,
   2092  1.1.1.1.8.1       tls   EVEX_W_0F381E_P_2,
   2093  1.1.1.1.8.1       tls   EVEX_W_0F381F_P_2,
   2094  1.1.1.1.8.1       tls   EVEX_W_0F3821_P_1,
   2095  1.1.1.1.8.1       tls   EVEX_W_0F3822_P_1,
   2096  1.1.1.1.8.1       tls   EVEX_W_0F3823_P_1,
   2097  1.1.1.1.8.1       tls   EVEX_W_0F3824_P_1,
   2098  1.1.1.1.8.1       tls   EVEX_W_0F3825_P_1,
   2099  1.1.1.1.8.1       tls   EVEX_W_0F3825_P_2,
   2100  1.1.1.1.8.1       tls   EVEX_W_0F3828_P_2,
   2101  1.1.1.1.8.1       tls   EVEX_W_0F3829_P_2,
   2102  1.1.1.1.8.1       tls   EVEX_W_0F382A_P_1,
   2103  1.1.1.1.8.1       tls   EVEX_W_0F382A_P_2,
   2104  1.1.1.1.8.1       tls   EVEX_W_0F3831_P_1,
   2105  1.1.1.1.8.1       tls   EVEX_W_0F3832_P_1,
   2106  1.1.1.1.8.1       tls   EVEX_W_0F3833_P_1,
   2107  1.1.1.1.8.1       tls   EVEX_W_0F3834_P_1,
   2108  1.1.1.1.8.1       tls   EVEX_W_0F3835_P_1,
   2109  1.1.1.1.8.1       tls   EVEX_W_0F3835_P_2,
   2110  1.1.1.1.8.1       tls   EVEX_W_0F3837_P_2,
   2111  1.1.1.1.8.1       tls   EVEX_W_0F383A_P_1,
   2112  1.1.1.1.8.1       tls   EVEX_W_0F3840_P_2,
   2113  1.1.1.1.8.1       tls   EVEX_W_0F3858_P_2,
   2114  1.1.1.1.8.1       tls   EVEX_W_0F3859_P_2,
   2115  1.1.1.1.8.1       tls   EVEX_W_0F385A_P_2,
   2116  1.1.1.1.8.1       tls   EVEX_W_0F385B_P_2,
   2117  1.1.1.1.8.1       tls   EVEX_W_0F3891_P_2,
   2118  1.1.1.1.8.1       tls   EVEX_W_0F3893_P_2,
   2119  1.1.1.1.8.1       tls   EVEX_W_0F38A1_P_2,
   2120  1.1.1.1.8.1       tls   EVEX_W_0F38A3_P_2,
   2121  1.1.1.1.8.1       tls   EVEX_W_0F38C7_R_1_P_2,
   2122  1.1.1.1.8.1       tls   EVEX_W_0F38C7_R_2_P_2,
   2123  1.1.1.1.8.1       tls   EVEX_W_0F38C7_R_5_P_2,
   2124  1.1.1.1.8.1       tls   EVEX_W_0F38C7_R_6_P_2,
   2125  1.1.1.1.8.1       tls 
   2126  1.1.1.1.8.1       tls   EVEX_W_0F3A00_P_2,
   2127  1.1.1.1.8.1       tls   EVEX_W_0F3A01_P_2,
   2128  1.1.1.1.8.1       tls   EVEX_W_0F3A04_P_2,
   2129  1.1.1.1.8.1       tls   EVEX_W_0F3A05_P_2,
   2130  1.1.1.1.8.1       tls   EVEX_W_0F3A08_P_2,
   2131  1.1.1.1.8.1       tls   EVEX_W_0F3A09_P_2,
   2132  1.1.1.1.8.1       tls   EVEX_W_0F3A0A_P_2,
   2133  1.1.1.1.8.1       tls   EVEX_W_0F3A0B_P_2,
   2134  1.1.1.1.8.1       tls   EVEX_W_0F3A18_P_2,
   2135  1.1.1.1.8.1       tls   EVEX_W_0F3A19_P_2,
   2136  1.1.1.1.8.1       tls   EVEX_W_0F3A1A_P_2,
   2137  1.1.1.1.8.1       tls   EVEX_W_0F3A1B_P_2,
   2138  1.1.1.1.8.1       tls   EVEX_W_0F3A1D_P_2,
   2139  1.1.1.1.8.1       tls   EVEX_W_0F3A21_P_2,
   2140  1.1.1.1.8.1       tls   EVEX_W_0F3A23_P_2,
   2141  1.1.1.1.8.1       tls   EVEX_W_0F3A38_P_2,
   2142  1.1.1.1.8.1       tls   EVEX_W_0F3A39_P_2,
   2143  1.1.1.1.8.1       tls   EVEX_W_0F3A3A_P_2,
   2144  1.1.1.1.8.1       tls   EVEX_W_0F3A3B_P_2,
   2145  1.1.1.1.8.1       tls   EVEX_W_0F3A43_P_2,
   2146          1.1  christos };
   2147          1.1  christos 
   2148          1.1  christos typedef void (*op_rtn) (int bytemode, int sizeflag);
   2149          1.1  christos 
   2150          1.1  christos struct dis386 {
   2151          1.1  christos   const char *name;
   2152          1.1  christos   struct
   2153          1.1  christos     {
   2154          1.1  christos       op_rtn rtn;
   2155          1.1  christos       int bytemode;
   2156          1.1  christos     } op[MAX_OPERANDS];
   2157          1.1  christos };
   2158          1.1  christos 
   2159          1.1  christos /* Upper case letters in the instruction names here are macros.
   2160          1.1  christos    'A' => print 'b' if no register operands or suffix_always is true
   2161          1.1  christos    'B' => print 'b' if suffix_always is true
   2162          1.1  christos    'C' => print 's' or 'l' ('w' or 'd' in Intel mode) depending on operand
   2163          1.1  christos 	  size prefix
   2164          1.1  christos    'D' => print 'w' if no register operands or 'w', 'l' or 'q', if
   2165          1.1  christos 	  suffix_always is true
   2166          1.1  christos    'E' => print 'e' if 32-bit form of jcxz
   2167          1.1  christos    'F' => print 'w' or 'l' depending on address size prefix (loop insns)
   2168          1.1  christos    'G' => print 'w' or 'l' depending on operand size prefix (i/o insns)
   2169          1.1  christos    'H' => print ",pt" or ",pn" branch hint
   2170          1.1  christos    'I' => honor following macro letter even in Intel mode (implemented only
   2171          1.1  christos 	  for some of the macro letters)
   2172          1.1  christos    'J' => print 'l'
   2173          1.1  christos    'K' => print 'd' or 'q' if rex prefix is present.
   2174          1.1  christos    'L' => print 'l' if suffix_always is true
   2175          1.1  christos    'M' => print 'r' if intel_mnemonic is false.
   2176          1.1  christos    'N' => print 'n' if instruction has no wait "prefix"
   2177          1.1  christos    'O' => print 'd' or 'o' (or 'q' in Intel mode)
   2178          1.1  christos    'P' => print 'w', 'l' or 'q' if instruction has an operand size prefix,
   2179          1.1  christos 	  or suffix_always is true.  print 'q' if rex prefix is present.
   2180          1.1  christos    'Q' => print 'w', 'l' or 'q' for memory operand or suffix_always
   2181          1.1  christos 	  is true
   2182          1.1  christos    'R' => print 'w', 'l' or 'q' ('d' for 'l' and 'e' in Intel mode)
   2183          1.1  christos    'S' => print 'w', 'l' or 'q' if suffix_always is true
   2184          1.1  christos    'T' => print 'q' in 64bit mode and behave as 'P' otherwise
   2185          1.1  christos    'U' => print 'q' in 64bit mode and behave as 'Q' otherwise
   2186          1.1  christos    'V' => print 'q' in 64bit mode and behave as 'S' otherwise
   2187          1.1  christos    'W' => print 'b', 'w' or 'l' ('d' in Intel mode)
   2188          1.1  christos    'X' => print 's', 'd' depending on data16 prefix (for XMM)
   2189          1.1  christos    'Y' => 'q' if instruction has an REX 64bit overwrite prefix and
   2190          1.1  christos 	  suffix_always is true.
   2191          1.1  christos    'Z' => print 'q' in 64bit mode and behave as 'L' otherwise
   2192          1.1  christos    '!' => change condition from true to false or from false to true.
   2193          1.1  christos    '%' => add 1 upper case letter to the macro.
   2194          1.1  christos 
   2195          1.1  christos    2 upper case letter macros:
   2196          1.1  christos    "XY" => print 'x' or 'y' if no register operands or suffix_always
   2197          1.1  christos 	   is true.
   2198          1.1  christos    "XW" => print 's', 'd' depending on the VEX.W bit (for FMA)
   2199          1.1  christos    "LQ" => print 'l' ('d' in Intel mode) or 'q' for memory operand
   2200          1.1  christos 	   or suffix_always is true
   2201          1.1  christos    "LB" => print "abs" in 64bit mode and behave as 'B' otherwise
   2202          1.1  christos    "LS" => print "abs" in 64bit mode and behave as 'S' otherwise
   2203          1.1  christos    "LV" => print "abs" for 64bit operand and behave as 'S' otherwise
   2204  1.1.1.1.8.1       tls    "LW" => print 'd', 'q' depending on the VEX.W bit
   2205          1.1  christos 
   2206          1.1  christos    Many of the above letters print nothing in Intel mode.  See "putop"
   2207          1.1  christos    for the details.
   2208          1.1  christos 
   2209          1.1  christos    Braces '{' and '}', and vertical bars '|', indicate alternative
   2210          1.1  christos    mnemonic strings for AT&T and Intel.  */
   2211          1.1  christos 
   2212          1.1  christos static const struct dis386 dis386[] = {
   2213          1.1  christos   /* 00 */
   2214  1.1.1.1.8.1       tls   { "addB",		{ Ebh1, Gb } },
   2215  1.1.1.1.8.1       tls   { "addS",		{ Evh1, Gv } },
   2216          1.1  christos   { "addB",		{ Gb, EbS } },
   2217          1.1  christos   { "addS",		{ Gv, EvS } },
   2218          1.1  christos   { "addB",		{ AL, Ib } },
   2219          1.1  christos   { "addS",		{ eAX, Iv } },
   2220          1.1  christos   { X86_64_TABLE (X86_64_06) },
   2221          1.1  christos   { X86_64_TABLE (X86_64_07) },
   2222          1.1  christos   /* 08 */
   2223  1.1.1.1.8.1       tls   { "orB",		{ Ebh1, Gb } },
   2224  1.1.1.1.8.1       tls   { "orS",		{ Evh1, Gv } },
   2225          1.1  christos   { "orB",		{ Gb, EbS } },
   2226          1.1  christos   { "orS",		{ Gv, EvS } },
   2227          1.1  christos   { "orB",		{ AL, Ib } },
   2228          1.1  christos   { "orS",		{ eAX, Iv } },
   2229          1.1  christos   { X86_64_TABLE (X86_64_0D) },
   2230          1.1  christos   { Bad_Opcode },	/* 0x0f extended opcode escape */
   2231          1.1  christos   /* 10 */
   2232  1.1.1.1.8.1       tls   { "adcB",		{ Ebh1, Gb } },
   2233  1.1.1.1.8.1       tls   { "adcS",		{ Evh1, Gv } },
   2234          1.1  christos   { "adcB",		{ Gb, EbS } },
   2235          1.1  christos   { "adcS",		{ Gv, EvS } },
   2236          1.1  christos   { "adcB",		{ AL, Ib } },
   2237          1.1  christos   { "adcS",		{ eAX, Iv } },
   2238          1.1  christos   { X86_64_TABLE (X86_64_16) },
   2239          1.1  christos   { X86_64_TABLE (X86_64_17) },
   2240          1.1  christos   /* 18 */
   2241  1.1.1.1.8.1       tls   { "sbbB",		{ Ebh1, Gb } },
   2242  1.1.1.1.8.1       tls   { "sbbS",		{ Evh1, Gv } },
   2243          1.1  christos   { "sbbB",		{ Gb, EbS } },
   2244          1.1  christos   { "sbbS",		{ Gv, EvS } },
   2245          1.1  christos   { "sbbB",		{ AL, Ib } },
   2246          1.1  christos   { "sbbS",		{ eAX, Iv } },
   2247          1.1  christos   { X86_64_TABLE (X86_64_1E) },
   2248          1.1  christos   { X86_64_TABLE (X86_64_1F) },
   2249          1.1  christos   /* 20 */
   2250  1.1.1.1.8.1       tls   { "andB",		{ Ebh1, Gb } },
   2251  1.1.1.1.8.1       tls   { "andS",		{ Evh1, Gv } },
   2252          1.1  christos   { "andB",		{ Gb, EbS } },
   2253          1.1  christos   { "andS",		{ Gv, EvS } },
   2254          1.1  christos   { "andB",		{ AL, Ib } },
   2255          1.1  christos   { "andS",		{ eAX, Iv } },
   2256          1.1  christos   { Bad_Opcode },	/* SEG ES prefix */
   2257          1.1  christos   { X86_64_TABLE (X86_64_27) },
   2258          1.1  christos   /* 28 */
   2259  1.1.1.1.8.1       tls   { "subB",		{ Ebh1, Gb } },
   2260  1.1.1.1.8.1       tls   { "subS",		{ Evh1, Gv } },
   2261          1.1  christos   { "subB",		{ Gb, EbS } },
   2262          1.1  christos   { "subS",		{ Gv, EvS } },
   2263          1.1  christos   { "subB",		{ AL, Ib } },
   2264          1.1  christos   { "subS",		{ eAX, Iv } },
   2265          1.1  christos   { Bad_Opcode },	/* SEG CS prefix */
   2266          1.1  christos   { X86_64_TABLE (X86_64_2F) },
   2267          1.1  christos   /* 30 */
   2268  1.1.1.1.8.1       tls   { "xorB",		{ Ebh1, Gb } },
   2269  1.1.1.1.8.1       tls   { "xorS",		{ Evh1, Gv } },
   2270          1.1  christos   { "xorB",		{ Gb, EbS } },
   2271          1.1  christos   { "xorS",		{ Gv, EvS } },
   2272          1.1  christos   { "xorB",		{ AL, Ib } },
   2273          1.1  christos   { "xorS",		{ eAX, Iv } },
   2274          1.1  christos   { Bad_Opcode },	/* SEG SS prefix */
   2275          1.1  christos   { X86_64_TABLE (X86_64_37) },
   2276          1.1  christos   /* 38 */
   2277          1.1  christos   { "cmpB",		{ Eb, Gb } },
   2278          1.1  christos   { "cmpS",		{ Ev, Gv } },
   2279          1.1  christos   { "cmpB",		{ Gb, EbS } },
   2280          1.1  christos   { "cmpS",		{ Gv, EvS } },
   2281          1.1  christos   { "cmpB",		{ AL, Ib } },
   2282          1.1  christos   { "cmpS",		{ eAX, Iv } },
   2283          1.1  christos   { Bad_Opcode },	/* SEG DS prefix */
   2284          1.1  christos   { X86_64_TABLE (X86_64_3F) },
   2285          1.1  christos   /* 40 */
   2286          1.1  christos   { "inc{S|}",		{ RMeAX } },
   2287          1.1  christos   { "inc{S|}",		{ RMeCX } },
   2288          1.1  christos   { "inc{S|}",		{ RMeDX } },
   2289          1.1  christos   { "inc{S|}",		{ RMeBX } },
   2290          1.1  christos   { "inc{S|}",		{ RMeSP } },
   2291          1.1  christos   { "inc{S|}",		{ RMeBP } },
   2292          1.1  christos   { "inc{S|}",		{ RMeSI } },
   2293          1.1  christos   { "inc{S|}",		{ RMeDI } },
   2294          1.1  christos   /* 48 */
   2295          1.1  christos   { "dec{S|}",		{ RMeAX } },
   2296          1.1  christos   { "dec{S|}",		{ RMeCX } },
   2297          1.1  christos   { "dec{S|}",		{ RMeDX } },
   2298          1.1  christos   { "dec{S|}",		{ RMeBX } },
   2299          1.1  christos   { "dec{S|}",		{ RMeSP } },
   2300          1.1  christos   { "dec{S|}",		{ RMeBP } },
   2301          1.1  christos   { "dec{S|}",		{ RMeSI } },
   2302          1.1  christos   { "dec{S|}",		{ RMeDI } },
   2303          1.1  christos   /* 50 */
   2304          1.1  christos   { "pushV",		{ RMrAX } },
   2305          1.1  christos   { "pushV",		{ RMrCX } },
   2306          1.1  christos   { "pushV",		{ RMrDX } },
   2307          1.1  christos   { "pushV",		{ RMrBX } },
   2308          1.1  christos   { "pushV",		{ RMrSP } },
   2309          1.1  christos   { "pushV",		{ RMrBP } },
   2310          1.1  christos   { "pushV",		{ RMrSI } },
   2311          1.1  christos   { "pushV",		{ RMrDI } },
   2312          1.1  christos   /* 58 */
   2313          1.1  christos   { "popV",		{ RMrAX } },
   2314          1.1  christos   { "popV",		{ RMrCX } },
   2315          1.1  christos   { "popV",		{ RMrDX } },
   2316          1.1  christos   { "popV",		{ RMrBX } },
   2317          1.1  christos   { "popV",		{ RMrSP } },
   2318          1.1  christos   { "popV",		{ RMrBP } },
   2319          1.1  christos   { "popV",		{ RMrSI } },
   2320          1.1  christos   { "popV",		{ RMrDI } },
   2321          1.1  christos   /* 60 */
   2322          1.1  christos   { X86_64_TABLE (X86_64_60) },
   2323          1.1  christos   { X86_64_TABLE (X86_64_61) },
   2324          1.1  christos   { X86_64_TABLE (X86_64_62) },
   2325          1.1  christos   { X86_64_TABLE (X86_64_63) },
   2326          1.1  christos   { Bad_Opcode },	/* seg fs */
   2327          1.1  christos   { Bad_Opcode },	/* seg gs */
   2328          1.1  christos   { Bad_Opcode },	/* op size prefix */
   2329          1.1  christos   { Bad_Opcode },	/* adr size prefix */
   2330          1.1  christos   /* 68 */
   2331          1.1  christos   { "pushT",		{ sIv } },
   2332          1.1  christos   { "imulS",		{ Gv, Ev, Iv } },
   2333          1.1  christos   { "pushT",		{ sIbT } },
   2334          1.1  christos   { "imulS",		{ Gv, Ev, sIb } },
   2335          1.1  christos   { "ins{b|}",		{ Ybr, indirDX } },
   2336          1.1  christos   { X86_64_TABLE (X86_64_6D) },
   2337          1.1  christos   { "outs{b|}",		{ indirDXr, Xb } },
   2338          1.1  christos   { X86_64_TABLE (X86_64_6F) },
   2339          1.1  christos   /* 70 */
   2340  1.1.1.1.8.1       tls   { "joH",		{ Jb, BND, cond_jump_flag } },
   2341  1.1.1.1.8.1       tls   { "jnoH",		{ Jb, BND, cond_jump_flag } },
   2342  1.1.1.1.8.1       tls   { "jbH",		{ Jb, BND, cond_jump_flag } },
   2343  1.1.1.1.8.1       tls   { "jaeH",		{ Jb, BND, cond_jump_flag } },
   2344  1.1.1.1.8.1       tls   { "jeH",		{ Jb, BND, cond_jump_flag } },
   2345  1.1.1.1.8.1       tls   { "jneH",		{ Jb, BND, cond_jump_flag } },
   2346  1.1.1.1.8.1       tls   { "jbeH",		{ Jb, BND, cond_jump_flag } },
   2347  1.1.1.1.8.1       tls   { "jaH",		{ Jb, BND, cond_jump_flag } },
   2348          1.1  christos   /* 78 */
   2349  1.1.1.1.8.1       tls   { "jsH",		{ Jb, BND, cond_jump_flag } },
   2350  1.1.1.1.8.1       tls   { "jnsH",		{ Jb, BND, cond_jump_flag } },
   2351  1.1.1.1.8.1       tls   { "jpH",		{ Jb, BND, cond_jump_flag } },
   2352  1.1.1.1.8.1       tls   { "jnpH",		{ Jb, BND, cond_jump_flag } },
   2353  1.1.1.1.8.1       tls   { "jlH",		{ Jb, BND, cond_jump_flag } },
   2354  1.1.1.1.8.1       tls   { "jgeH",		{ Jb, BND, cond_jump_flag } },
   2355  1.1.1.1.8.1       tls   { "jleH",		{ Jb, BND, cond_jump_flag } },
   2356  1.1.1.1.8.1       tls   { "jgH",		{ Jb, BND, cond_jump_flag } },
   2357          1.1  christos   /* 80 */
   2358          1.1  christos   { REG_TABLE (REG_80) },
   2359          1.1  christos   { REG_TABLE (REG_81) },
   2360          1.1  christos   { Bad_Opcode },
   2361          1.1  christos   { REG_TABLE (REG_82) },
   2362          1.1  christos   { "testB",		{ Eb, Gb } },
   2363          1.1  christos   { "testS",		{ Ev, Gv } },
   2364  1.1.1.1.8.1       tls   { "xchgB",		{ Ebh2, Gb } },
   2365  1.1.1.1.8.1       tls   { "xchgS",		{ Evh2, Gv } },
   2366          1.1  christos   /* 88 */
   2367  1.1.1.1.8.1       tls   { "movB",		{ Ebh3, Gb } },
   2368  1.1.1.1.8.1       tls   { "movS",		{ Evh3, Gv } },
   2369          1.1  christos   { "movB",		{ Gb, EbS } },
   2370          1.1  christos   { "movS",		{ Gv, EvS } },
   2371          1.1  christos   { "movD",		{ Sv, Sw } },
   2372          1.1  christos   { MOD_TABLE (MOD_8D) },
   2373          1.1  christos   { "movD",		{ Sw, Sv } },
   2374          1.1  christos   { REG_TABLE (REG_8F) },
   2375          1.1  christos   /* 90 */
   2376          1.1  christos   { PREFIX_TABLE (PREFIX_90) },
   2377          1.1  christos   { "xchgS",		{ RMeCX, eAX } },
   2378          1.1  christos   { "xchgS",		{ RMeDX, eAX } },
   2379          1.1  christos   { "xchgS",		{ RMeBX, eAX } },
   2380          1.1  christos   { "xchgS",		{ RMeSP, eAX } },
   2381          1.1  christos   { "xchgS",		{ RMeBP, eAX } },
   2382          1.1  christos   { "xchgS",		{ RMeSI, eAX } },
   2383          1.1  christos   { "xchgS",		{ RMeDI, eAX } },
   2384          1.1  christos   /* 98 */
   2385          1.1  christos   { "cW{t|}R",		{ XX } },
   2386          1.1  christos   { "cR{t|}O",		{ XX } },
   2387          1.1  christos   { X86_64_TABLE (X86_64_9A) },
   2388          1.1  christos   { Bad_Opcode },	/* fwait */
   2389          1.1  christos   { "pushfT",		{ XX } },
   2390          1.1  christos   { "popfT",		{ XX } },
   2391          1.1  christos   { "sahf",		{ XX } },
   2392          1.1  christos   { "lahf",		{ XX } },
   2393          1.1  christos   /* a0 */
   2394          1.1  christos   { "mov%LB",		{ AL, Ob } },
   2395          1.1  christos   { "mov%LS",		{ eAX, Ov } },
   2396          1.1  christos   { "mov%LB",		{ Ob, AL } },
   2397          1.1  christos   { "mov%LS",		{ Ov, eAX } },
   2398          1.1  christos   { "movs{b|}",		{ Ybr, Xb } },
   2399          1.1  christos   { "movs{R|}",		{ Yvr, Xv } },
   2400          1.1  christos   { "cmps{b|}",		{ Xb, Yb } },
   2401          1.1  christos   { "cmps{R|}",		{ Xv, Yv } },
   2402          1.1  christos   /* a8 */
   2403          1.1  christos   { "testB",		{ AL, Ib } },
   2404          1.1  christos   { "testS",		{ eAX, Iv } },
   2405          1.1  christos   { "stosB",		{ Ybr, AL } },
   2406          1.1  christos   { "stosS",		{ Yvr, eAX } },
   2407          1.1  christos   { "lodsB",		{ ALr, Xb } },
   2408          1.1  christos   { "lodsS",		{ eAXr, Xv } },
   2409          1.1  christos   { "scasB",		{ AL, Yb } },
   2410          1.1  christos   { "scasS",		{ eAX, Yv } },
   2411          1.1  christos   /* b0 */
   2412          1.1  christos   { "movB",		{ RMAL, Ib } },
   2413          1.1  christos   { "movB",		{ RMCL, Ib } },
   2414          1.1  christos   { "movB",		{ RMDL, Ib } },
   2415          1.1  christos   { "movB",		{ RMBL, Ib } },
   2416          1.1  christos   { "movB",		{ RMAH, Ib } },
   2417          1.1  christos   { "movB",		{ RMCH, Ib } },
   2418          1.1  christos   { "movB",		{ RMDH, Ib } },
   2419          1.1  christos   { "movB",		{ RMBH, Ib } },
   2420          1.1  christos   /* b8 */
   2421          1.1  christos   { "mov%LV",		{ RMeAX, Iv64 } },
   2422          1.1  christos   { "mov%LV",		{ RMeCX, Iv64 } },
   2423          1.1  christos   { "mov%LV",		{ RMeDX, Iv64 } },
   2424          1.1  christos   { "mov%LV",		{ RMeBX, Iv64 } },
   2425          1.1  christos   { "mov%LV",		{ RMeSP, Iv64 } },
   2426          1.1  christos   { "mov%LV",		{ RMeBP, Iv64 } },
   2427          1.1  christos   { "mov%LV",		{ RMeSI, Iv64 } },
   2428          1.1  christos   { "mov%LV",		{ RMeDI, Iv64 } },
   2429          1.1  christos   /* c0 */
   2430          1.1  christos   { REG_TABLE (REG_C0) },
   2431          1.1  christos   { REG_TABLE (REG_C1) },
   2432  1.1.1.1.8.1       tls   { "retT",		{ Iw, BND } },
   2433  1.1.1.1.8.1       tls   { "retT",		{ BND } },
   2434          1.1  christos   { X86_64_TABLE (X86_64_C4) },
   2435          1.1  christos   { X86_64_TABLE (X86_64_C5) },
   2436          1.1  christos   { REG_TABLE (REG_C6) },
   2437          1.1  christos   { REG_TABLE (REG_C7) },
   2438          1.1  christos   /* c8 */
   2439          1.1  christos   { "enterT",		{ Iw, Ib } },
   2440          1.1  christos   { "leaveT",		{ XX } },
   2441          1.1  christos   { "Jret{|f}P",	{ Iw } },
   2442          1.1  christos   { "Jret{|f}P",	{ XX } },
   2443          1.1  christos   { "int3",		{ XX } },
   2444          1.1  christos   { "int",		{ Ib } },
   2445          1.1  christos   { X86_64_TABLE (X86_64_CE) },
   2446          1.1  christos   { "iretP",		{ XX } },
   2447          1.1  christos   /* d0 */
   2448          1.1  christos   { REG_TABLE (REG_D0) },
   2449          1.1  christos   { REG_TABLE (REG_D1) },
   2450          1.1  christos   { REG_TABLE (REG_D2) },
   2451          1.1  christos   { REG_TABLE (REG_D3) },
   2452          1.1  christos   { X86_64_TABLE (X86_64_D4) },
   2453          1.1  christos   { X86_64_TABLE (X86_64_D5) },
   2454          1.1  christos   { Bad_Opcode },
   2455          1.1  christos   { "xlat",		{ DSBX } },
   2456          1.1  christos   /* d8 */
   2457          1.1  christos   { FLOAT },
   2458          1.1  christos   { FLOAT },
   2459          1.1  christos   { FLOAT },
   2460          1.1  christos   { FLOAT },
   2461          1.1  christos   { FLOAT },
   2462          1.1  christos   { FLOAT },
   2463          1.1  christos   { FLOAT },
   2464          1.1  christos   { FLOAT },
   2465          1.1  christos   /* e0 */
   2466          1.1  christos   { "loopneFH",		{ Jb, XX, loop_jcxz_flag } },
   2467          1.1  christos   { "loopeFH",		{ Jb, XX, loop_jcxz_flag } },
   2468          1.1  christos   { "loopFH",		{ Jb, XX, loop_jcxz_flag } },
   2469          1.1  christos   { "jEcxzH",		{ Jb, XX, loop_jcxz_flag } },
   2470          1.1  christos   { "inB",		{ AL, Ib } },
   2471          1.1  christos   { "inG",		{ zAX, Ib } },
   2472          1.1  christos   { "outB",		{ Ib, AL } },
   2473          1.1  christos   { "outG",		{ Ib, zAX } },
   2474          1.1  christos   /* e8 */
   2475  1.1.1.1.8.1       tls   { "callT",		{ Jv, BND } },
   2476  1.1.1.1.8.1       tls   { "jmpT",		{ Jv, BND } },
   2477          1.1  christos   { X86_64_TABLE (X86_64_EA) },
   2478  1.1.1.1.8.1       tls   { "jmp",		{ Jb, BND } },
   2479          1.1  christos   { "inB",		{ AL, indirDX } },
   2480          1.1  christos   { "inG",		{ zAX, indirDX } },
   2481          1.1  christos   { "outB",		{ indirDX, AL } },
   2482          1.1  christos   { "outG",		{ indirDX, zAX } },
   2483          1.1  christos   /* f0 */
   2484          1.1  christos   { Bad_Opcode },	/* lock prefix */
   2485          1.1  christos   { "icebp",		{ XX } },
   2486          1.1  christos   { Bad_Opcode },	/* repne */
   2487          1.1  christos   { Bad_Opcode },	/* repz */
   2488          1.1  christos   { "hlt",		{ XX } },
   2489          1.1  christos   { "cmc",		{ XX } },
   2490          1.1  christos   { REG_TABLE (REG_F6) },
   2491          1.1  christos   { REG_TABLE (REG_F7) },
   2492          1.1  christos   /* f8 */
   2493          1.1  christos   { "clc",		{ XX } },
   2494          1.1  christos   { "stc",		{ XX } },
   2495          1.1  christos   { "cli",		{ XX } },
   2496          1.1  christos   { "sti",		{ XX } },
   2497          1.1  christos   { "cld",		{ XX } },
   2498          1.1  christos   { "std",		{ XX } },
   2499          1.1  christos   { REG_TABLE (REG_FE) },
   2500          1.1  christos   { REG_TABLE (REG_FF) },
   2501          1.1  christos };
   2502          1.1  christos 
   2503          1.1  christos static const struct dis386 dis386_twobyte[] = {
   2504          1.1  christos   /* 00 */
   2505          1.1  christos   { REG_TABLE (REG_0F00 ) },
   2506          1.1  christos   { REG_TABLE (REG_0F01 ) },
   2507          1.1  christos   { "larS",		{ Gv, Ew } },
   2508          1.1  christos   { "lslS",		{ Gv, Ew } },
   2509          1.1  christos   { Bad_Opcode },
   2510          1.1  christos   { "syscall",		{ XX } },
   2511          1.1  christos   { "clts",		{ XX } },
   2512          1.1  christos   { "sysretP",		{ XX } },
   2513          1.1  christos   /* 08 */
   2514          1.1  christos   { "invd",		{ XX } },
   2515          1.1  christos   { "wbinvd",		{ XX } },
   2516          1.1  christos   { Bad_Opcode },
   2517          1.1  christos   { "ud2",		{ XX } },
   2518          1.1  christos   { Bad_Opcode },
   2519          1.1  christos   { REG_TABLE (REG_0F0D) },
   2520          1.1  christos   { "femms",		{ XX } },
   2521          1.1  christos   { "",			{ MX, EM, OPSUF } }, /* See OP_3DNowSuffix.  */
   2522          1.1  christos   /* 10 */
   2523          1.1  christos   { PREFIX_TABLE (PREFIX_0F10) },
   2524          1.1  christos   { PREFIX_TABLE (PREFIX_0F11) },
   2525          1.1  christos   { PREFIX_TABLE (PREFIX_0F12) },
   2526          1.1  christos   { MOD_TABLE (MOD_0F13) },
   2527          1.1  christos   { "unpcklpX",		{ XM, EXx } },
   2528          1.1  christos   { "unpckhpX",		{ XM, EXx } },
   2529          1.1  christos   { PREFIX_TABLE (PREFIX_0F16) },
   2530          1.1  christos   { MOD_TABLE (MOD_0F17) },
   2531          1.1  christos   /* 18 */
   2532          1.1  christos   { REG_TABLE (REG_0F18) },
   2533          1.1  christos   { "nopQ",		{ Ev } },
   2534  1.1.1.1.8.1       tls   { PREFIX_TABLE (PREFIX_0F1A) },
   2535  1.1.1.1.8.1       tls   { PREFIX_TABLE (PREFIX_0F1B) },
   2536          1.1  christos   { "nopQ",		{ Ev } },
   2537          1.1  christos   { "nopQ",		{ Ev } },
   2538          1.1  christos   { "nopQ",		{ Ev } },
   2539          1.1  christos   { "nopQ",		{ Ev } },
   2540          1.1  christos   /* 20 */
   2541          1.1  christos   { MOD_TABLE (MOD_0F20) },
   2542          1.1  christos   { MOD_TABLE (MOD_0F21) },
   2543          1.1  christos   { MOD_TABLE (MOD_0F22) },
   2544          1.1  christos   { MOD_TABLE (MOD_0F23) },
   2545          1.1  christos   { MOD_TABLE (MOD_0F24) },
   2546          1.1  christos   { Bad_Opcode },
   2547          1.1  christos   { MOD_TABLE (MOD_0F26) },
   2548          1.1  christos   { Bad_Opcode },
   2549          1.1  christos   /* 28 */
   2550          1.1  christos   { "movapX",		{ XM, EXx } },
   2551          1.1  christos   { "movapX",		{ EXxS, XM } },
   2552          1.1  christos   { PREFIX_TABLE (PREFIX_0F2A) },
   2553          1.1  christos   { PREFIX_TABLE (PREFIX_0F2B) },
   2554          1.1  christos   { PREFIX_TABLE (PREFIX_0F2C) },
   2555          1.1  christos   { PREFIX_TABLE (PREFIX_0F2D) },
   2556          1.1  christos   { PREFIX_TABLE (PREFIX_0F2E) },
   2557          1.1  christos   { PREFIX_TABLE (PREFIX_0F2F) },
   2558          1.1  christos   /* 30 */
   2559          1.1  christos   { "wrmsr",		{ XX } },
   2560          1.1  christos   { "rdtsc",		{ XX } },
   2561          1.1  christos   { "rdmsr",		{ XX } },
   2562          1.1  christos   { "rdpmc",		{ XX } },
   2563          1.1  christos   { "sysenter",		{ XX } },
   2564          1.1  christos   { "sysexit",		{ XX } },
   2565          1.1  christos   { Bad_Opcode },
   2566          1.1  christos   { "getsec",		{ XX } },
   2567          1.1  christos   /* 38 */
   2568          1.1  christos   { THREE_BYTE_TABLE (THREE_BYTE_0F38) },
   2569          1.1  christos   { Bad_Opcode },
   2570          1.1  christos   { THREE_BYTE_TABLE (THREE_BYTE_0F3A) },
   2571          1.1  christos   { Bad_Opcode },
   2572          1.1  christos   { Bad_Opcode },
   2573          1.1  christos   { Bad_Opcode },
   2574          1.1  christos   { Bad_Opcode },
   2575          1.1  christos   { Bad_Opcode },
   2576          1.1  christos   /* 40 */
   2577          1.1  christos   { "cmovoS",		{ Gv, Ev } },
   2578          1.1  christos   { "cmovnoS",		{ Gv, Ev } },
   2579          1.1  christos   { "cmovbS",		{ Gv, Ev } },
   2580          1.1  christos   { "cmovaeS",		{ Gv, Ev } },
   2581          1.1  christos   { "cmoveS",		{ Gv, Ev } },
   2582          1.1  christos   { "cmovneS",		{ Gv, Ev } },
   2583          1.1  christos   { "cmovbeS",		{ Gv, Ev } },
   2584          1.1  christos   { "cmovaS",		{ Gv, Ev } },
   2585          1.1  christos   /* 48 */
   2586          1.1  christos   { "cmovsS",		{ Gv, Ev } },
   2587          1.1  christos   { "cmovnsS",		{ Gv, Ev } },
   2588          1.1  christos   { "cmovpS",		{ Gv, Ev } },
   2589          1.1  christos   { "cmovnpS",		{ Gv, Ev } },
   2590          1.1  christos   { "cmovlS",		{ Gv, Ev } },
   2591          1.1  christos   { "cmovgeS",		{ Gv, Ev } },
   2592          1.1  christos   { "cmovleS",		{ Gv, Ev } },
   2593          1.1  christos   { "cmovgS",		{ Gv, Ev } },
   2594          1.1  christos   /* 50 */
   2595          1.1  christos   { MOD_TABLE (MOD_0F51) },
   2596          1.1  christos   { PREFIX_TABLE (PREFIX_0F51) },
   2597          1.1  christos   { PREFIX_TABLE (PREFIX_0F52) },
   2598          1.1  christos   { PREFIX_TABLE (PREFIX_0F53) },
   2599          1.1  christos   { "andpX",		{ XM, EXx } },
   2600          1.1  christos   { "andnpX",		{ XM, EXx } },
   2601          1.1  christos   { "orpX",		{ XM, EXx } },
   2602          1.1  christos   { "xorpX",		{ XM, EXx } },
   2603          1.1  christos   /* 58 */
   2604          1.1  christos   { PREFIX_TABLE (PREFIX_0F58) },
   2605          1.1  christos   { PREFIX_TABLE (PREFIX_0F59) },
   2606          1.1  christos   { PREFIX_TABLE (PREFIX_0F5A) },
   2607          1.1  christos   { PREFIX_TABLE (PREFIX_0F5B) },
   2608          1.1  christos   { PREFIX_TABLE (PREFIX_0F5C) },
   2609          1.1  christos   { PREFIX_TABLE (PREFIX_0F5D) },
   2610          1.1  christos   { PREFIX_TABLE (PREFIX_0F5E) },
   2611          1.1  christos   { PREFIX_TABLE (PREFIX_0F5F) },
   2612          1.1  christos   /* 60 */
   2613          1.1  christos   { PREFIX_TABLE (PREFIX_0F60) },
   2614          1.1  christos   { PREFIX_TABLE (PREFIX_0F61) },
   2615          1.1  christos   { PREFIX_TABLE (PREFIX_0F62) },
   2616          1.1  christos   { "packsswb",		{ MX, EM } },
   2617          1.1  christos   { "pcmpgtb",		{ MX, EM } },
   2618          1.1  christos   { "pcmpgtw",		{ MX, EM } },
   2619          1.1  christos   { "pcmpgtd",		{ MX, EM } },
   2620          1.1  christos   { "packuswb",		{ MX, EM } },
   2621          1.1  christos   /* 68 */
   2622          1.1  christos   { "punpckhbw",	{ MX, EM } },
   2623          1.1  christos   { "punpckhwd",	{ MX, EM } },
   2624          1.1  christos   { "punpckhdq",	{ MX, EM } },
   2625          1.1  christos   { "packssdw",		{ MX, EM } },
   2626          1.1  christos   { PREFIX_TABLE (PREFIX_0F6C) },
   2627          1.1  christos   { PREFIX_TABLE (PREFIX_0F6D) },
   2628          1.1  christos   { "movK",		{ MX, Edq } },
   2629          1.1  christos   { PREFIX_TABLE (PREFIX_0F6F) },
   2630          1.1  christos   /* 70 */
   2631          1.1  christos   { PREFIX_TABLE (PREFIX_0F70) },
   2632          1.1  christos   { REG_TABLE (REG_0F71) },
   2633          1.1  christos   { REG_TABLE (REG_0F72) },
   2634          1.1  christos   { REG_TABLE (REG_0F73) },
   2635          1.1  christos   { "pcmpeqb",		{ MX, EM } },
   2636          1.1  christos   { "pcmpeqw",		{ MX, EM } },
   2637          1.1  christos   { "pcmpeqd",		{ MX, EM } },
   2638          1.1  christos   { "emms",		{ XX } },
   2639          1.1  christos   /* 78 */
   2640          1.1  christos   { PREFIX_TABLE (PREFIX_0F78) },
   2641          1.1  christos   { PREFIX_TABLE (PREFIX_0F79) },
   2642          1.1  christos   { THREE_BYTE_TABLE (THREE_BYTE_0F7A) },
   2643          1.1  christos   { Bad_Opcode },
   2644          1.1  christos   { PREFIX_TABLE (PREFIX_0F7C) },
   2645          1.1  christos   { PREFIX_TABLE (PREFIX_0F7D) },
   2646          1.1  christos   { PREFIX_TABLE (PREFIX_0F7E) },
   2647          1.1  christos   { PREFIX_TABLE (PREFIX_0F7F) },
   2648          1.1  christos   /* 80 */
   2649  1.1.1.1.8.1       tls   { "joH",		{ Jv, BND, cond_jump_flag } },
   2650  1.1.1.1.8.1       tls   { "jnoH",		{ Jv, BND, cond_jump_flag } },
   2651  1.1.1.1.8.1       tls   { "jbH",		{ Jv, BND, cond_jump_flag } },
   2652  1.1.1.1.8.1       tls   { "jaeH",		{ Jv, BND, cond_jump_flag } },
   2653  1.1.1.1.8.1       tls   { "jeH",		{ Jv, BND, cond_jump_flag } },
   2654  1.1.1.1.8.1       tls   { "jneH",		{ Jv, BND, cond_jump_flag } },
   2655  1.1.1.1.8.1       tls   { "jbeH",		{ Jv, BND, cond_jump_flag } },
   2656  1.1.1.1.8.1       tls   { "jaH",		{ Jv, BND, cond_jump_flag } },
   2657          1.1  christos   /* 88 */
   2658  1.1.1.1.8.1       tls   { "jsH",		{ Jv, BND, cond_jump_flag } },
   2659  1.1.1.1.8.1       tls   { "jnsH",		{ Jv, BND, cond_jump_flag } },
   2660  1.1.1.1.8.1       tls   { "jpH",		{ Jv, BND, cond_jump_flag } },
   2661  1.1.1.1.8.1       tls   { "jnpH",		{ Jv, BND, cond_jump_flag } },
   2662  1.1.1.1.8.1       tls   { "jlH",		{ Jv, BND, cond_jump_flag } },
   2663  1.1.1.1.8.1       tls   { "jgeH",		{ Jv, BND, cond_jump_flag } },
   2664  1.1.1.1.8.1       tls   { "jleH",		{ Jv, BND, cond_jump_flag } },
   2665  1.1.1.1.8.1       tls   { "jgH",		{ Jv, BND, cond_jump_flag } },
   2666          1.1  christos   /* 90 */
   2667          1.1  christos   { "seto",		{ Eb } },
   2668          1.1  christos   { "setno",		{ Eb } },
   2669          1.1  christos   { "setb",		{ Eb } },
   2670          1.1  christos   { "setae",		{ Eb } },
   2671          1.1  christos   { "sete",		{ Eb } },
   2672          1.1  christos   { "setne",		{ Eb } },
   2673          1.1  christos   { "setbe",		{ Eb } },
   2674          1.1  christos   { "seta",		{ Eb } },
   2675          1.1  christos   /* 98 */
   2676          1.1  christos   { "sets",		{ Eb } },
   2677          1.1  christos   { "setns",		{ Eb } },
   2678          1.1  christos   { "setp",		{ Eb } },
   2679          1.1  christos   { "setnp",		{ Eb } },
   2680          1.1  christos   { "setl",		{ Eb } },
   2681          1.1  christos   { "setge",		{ Eb } },
   2682          1.1  christos   { "setle",		{ Eb } },
   2683          1.1  christos   { "setg",		{ Eb } },
   2684          1.1  christos   /* a0 */
   2685          1.1  christos   { "pushT",		{ fs } },
   2686          1.1  christos   { "popT",		{ fs } },
   2687          1.1  christos   { "cpuid",		{ XX } },
   2688          1.1  christos   { "btS",		{ Ev, Gv } },
   2689          1.1  christos   { "shldS",		{ Ev, Gv, Ib } },
   2690          1.1  christos   { "shldS",		{ Ev, Gv, CL } },
   2691          1.1  christos   { REG_TABLE (REG_0FA6) },
   2692          1.1  christos   { REG_TABLE (REG_0FA7) },
   2693          1.1  christos   /* a8 */
   2694          1.1  christos   { "pushT",		{ gs } },
   2695          1.1  christos   { "popT",		{ gs } },
   2696          1.1  christos   { "rsm",		{ XX } },
   2697  1.1.1.1.8.1       tls   { "btsS",		{ Evh1, Gv } },
   2698          1.1  christos   { "shrdS",		{ Ev, Gv, Ib } },
   2699          1.1  christos   { "shrdS",		{ Ev, Gv, CL } },
   2700          1.1  christos   { REG_TABLE (REG_0FAE) },
   2701          1.1  christos   { "imulS",		{ Gv, Ev } },
   2702          1.1  christos   /* b0 */
   2703  1.1.1.1.8.1       tls   { "cmpxchgB",		{ Ebh1, Gb } },
   2704  1.1.1.1.8.1       tls   { "cmpxchgS",		{ Evh1, Gv } },
   2705          1.1  christos   { MOD_TABLE (MOD_0FB2) },
   2706  1.1.1.1.8.1       tls   { "btrS",		{ Evh1, Gv } },
   2707          1.1  christos   { MOD_TABLE (MOD_0FB4) },
   2708          1.1  christos   { MOD_TABLE (MOD_0FB5) },
   2709          1.1  christos   { "movz{bR|x}",	{ Gv, Eb } },
   2710          1.1  christos   { "movz{wR|x}",	{ Gv, Ew } }, /* yes, there really is movzww ! */
   2711          1.1  christos   /* b8 */
   2712          1.1  christos   { PREFIX_TABLE (PREFIX_0FB8) },
   2713          1.1  christos   { "ud1",		{ XX } },
   2714          1.1  christos   { REG_TABLE (REG_0FBA) },
   2715  1.1.1.1.8.1       tls   { "btcS",		{ Evh1, Gv } },
   2716          1.1  christos   { PREFIX_TABLE (PREFIX_0FBC) },
   2717          1.1  christos   { PREFIX_TABLE (PREFIX_0FBD) },
   2718          1.1  christos   { "movs{bR|x}",	{ Gv, Eb } },
   2719          1.1  christos   { "movs{wR|x}",	{ Gv, Ew } }, /* yes, there really is movsww ! */
   2720          1.1  christos   /* c0 */
   2721  1.1.1.1.8.1       tls   { "xaddB",		{ Ebh1, Gb } },
   2722  1.1.1.1.8.1       tls   { "xaddS",		{ Evh1, Gv } },
   2723          1.1  christos   { PREFIX_TABLE (PREFIX_0FC2) },
   2724          1.1  christos   { PREFIX_TABLE (PREFIX_0FC3) },
   2725          1.1  christos   { "pinsrw",		{ MX, Edqw, Ib } },
   2726          1.1  christos   { "pextrw",		{ Gdq, MS, Ib } },
   2727          1.1  christos   { "shufpX",		{ XM, EXx, Ib } },
   2728          1.1  christos   { REG_TABLE (REG_0FC7) },
   2729          1.1  christos   /* c8 */
   2730          1.1  christos   { "bswap",		{ RMeAX } },
   2731          1.1  christos   { "bswap",		{ RMeCX } },
   2732          1.1  christos   { "bswap",		{ RMeDX } },
   2733          1.1  christos   { "bswap",		{ RMeBX } },
   2734          1.1  christos   { "bswap",		{ RMeSP } },
   2735          1.1  christos   { "bswap",		{ RMeBP } },
   2736          1.1  christos   { "bswap",		{ RMeSI } },
   2737          1.1  christos   { "bswap",		{ RMeDI } },
   2738          1.1  christos   /* d0 */
   2739          1.1  christos   { PREFIX_TABLE (PREFIX_0FD0) },
   2740          1.1  christos   { "psrlw",		{ MX, EM } },
   2741          1.1  christos   { "psrld",		{ MX, EM } },
   2742          1.1  christos   { "psrlq",		{ MX, EM } },
   2743          1.1  christos   { "paddq",		{ MX, EM } },
   2744          1.1  christos   { "pmullw",		{ MX, EM } },
   2745          1.1  christos   { PREFIX_TABLE (PREFIX_0FD6) },
   2746          1.1  christos   { MOD_TABLE (MOD_0FD7) },
   2747          1.1  christos   /* d8 */
   2748          1.1  christos   { "psubusb",		{ MX, EM } },
   2749          1.1  christos   { "psubusw",		{ MX, EM } },
   2750          1.1  christos   { "pminub",		{ MX, EM } },
   2751          1.1  christos   { "pand",		{ MX, EM } },
   2752          1.1  christos   { "paddusb",		{ MX, EM } },
   2753          1.1  christos   { "paddusw",		{ MX, EM } },
   2754          1.1  christos   { "pmaxub",		{ MX, EM } },
   2755          1.1  christos   { "pandn",		{ MX, EM } },
   2756          1.1  christos   /* e0 */
   2757          1.1  christos   { "pavgb",		{ MX, EM } },
   2758          1.1  christos   { "psraw",		{ MX, EM } },
   2759          1.1  christos   { "psrad",		{ MX, EM } },
   2760          1.1  christos   { "pavgw",		{ MX, EM } },
   2761          1.1  christos   { "pmulhuw",		{ MX, EM } },
   2762          1.1  christos   { "pmulhw",		{ MX, EM } },
   2763          1.1  christos   { PREFIX_TABLE (PREFIX_0FE6) },
   2764          1.1  christos   { PREFIX_TABLE (PREFIX_0FE7) },
   2765          1.1  christos   /* e8 */
   2766          1.1  christos   { "psubsb",		{ MX, EM } },
   2767          1.1  christos   { "psubsw",		{ MX, EM } },
   2768          1.1  christos   { "pminsw",		{ MX, EM } },
   2769          1.1  christos   { "por",		{ MX, EM } },
   2770          1.1  christos   { "paddsb",		{ MX, EM } },
   2771          1.1  christos   { "paddsw",		{ MX, EM } },
   2772          1.1  christos   { "pmaxsw",		{ MX, EM } },
   2773          1.1  christos   { "pxor",		{ MX, EM } },
   2774          1.1  christos   /* f0 */
   2775          1.1  christos   { PREFIX_TABLE (PREFIX_0FF0) },
   2776          1.1  christos   { "psllw",		{ MX, EM } },
   2777          1.1  christos   { "pslld",		{ MX, EM } },
   2778          1.1  christos   { "psllq",		{ MX, EM } },
   2779          1.1  christos   { "pmuludq",		{ MX, EM } },
   2780          1.1  christos   { "pmaddwd",		{ MX, EM } },
   2781          1.1  christos   { "psadbw",		{ MX, EM } },
   2782          1.1  christos   { PREFIX_TABLE (PREFIX_0FF7) },
   2783          1.1  christos   /* f8 */
   2784          1.1  christos   { "psubb",		{ MX, EM } },
   2785          1.1  christos   { "psubw",		{ MX, EM } },
   2786          1.1  christos   { "psubd",		{ MX, EM } },
   2787          1.1  christos   { "psubq",		{ MX, EM } },
   2788          1.1  christos   { "paddb",		{ MX, EM } },
   2789          1.1  christos   { "paddw",		{ MX, EM } },
   2790          1.1  christos   { "paddd",		{ MX, EM } },
   2791          1.1  christos   { Bad_Opcode },
   2792          1.1  christos };
   2793          1.1  christos 
   2794          1.1  christos static const unsigned char onebyte_has_modrm[256] = {
   2795          1.1  christos   /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
   2796          1.1  christos   /*       -------------------------------        */
   2797          1.1  christos   /* 00 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 00 */
   2798          1.1  christos   /* 10 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 10 */
   2799          1.1  christos   /* 20 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 20 */
   2800          1.1  christos   /* 30 */ 1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0, /* 30 */
   2801          1.1  christos   /* 40 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40 */
   2802          1.1  christos   /* 50 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 50 */
   2803          1.1  christos   /* 60 */ 0,0,1,1,0,0,0,0,0,1,0,1,0,0,0,0, /* 60 */
   2804          1.1  christos   /* 70 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 70 */
   2805          1.1  christos   /* 80 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 80 */
   2806          1.1  christos   /* 90 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 90 */
   2807          1.1  christos   /* a0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* a0 */
   2808          1.1  christos   /* b0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* b0 */
   2809          1.1  christos   /* c0 */ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0, /* c0 */
   2810          1.1  christos   /* d0 */ 1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1, /* d0 */
   2811          1.1  christos   /* e0 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* e0 */
   2812          1.1  christos   /* f0 */ 0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1  /* f0 */
   2813          1.1  christos   /*       -------------------------------        */
   2814          1.1  christos   /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
   2815          1.1  christos };
   2816          1.1  christos 
   2817          1.1  christos static const unsigned char twobyte_has_modrm[256] = {
   2818          1.1  christos   /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
   2819          1.1  christos   /*       -------------------------------        */
   2820          1.1  christos   /* 00 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0f */
   2821          1.1  christos   /* 10 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1f */
   2822          1.1  christos   /* 20 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 2f */
   2823          1.1  christos   /* 30 */ 0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0, /* 3f */
   2824          1.1  christos   /* 40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4f */
   2825          1.1  christos   /* 50 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 5f */
   2826          1.1  christos   /* 60 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 6f */
   2827          1.1  christos   /* 70 */ 1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1, /* 7f */
   2828          1.1  christos   /* 80 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 8f */
   2829          1.1  christos   /* 90 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 9f */
   2830          1.1  christos   /* a0 */ 0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1, /* af */
   2831          1.1  christos   /* b0 */ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1, /* bf */
   2832          1.1  christos   /* c0 */ 1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0, /* cf */
   2833          1.1  christos   /* d0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* df */
   2834          1.1  christos   /* e0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ef */
   2835          1.1  christos   /* f0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0  /* ff */
   2836          1.1  christos   /*       -------------------------------        */
   2837          1.1  christos   /*       0 1 2 3 4 5 6 7 8 9 a b c d e f        */
   2838          1.1  christos };
   2839          1.1  christos 
   2840          1.1  christos static char obuf[100];
   2841          1.1  christos static char *obufp;
   2842          1.1  christos static char *mnemonicendp;
   2843          1.1  christos static char scratchbuf[100];
   2844          1.1  christos static unsigned char *start_codep;
   2845          1.1  christos static unsigned char *insn_codep;
   2846          1.1  christos static unsigned char *codep;
   2847          1.1  christos static int last_lock_prefix;
   2848          1.1  christos static int last_repz_prefix;
   2849          1.1  christos static int last_repnz_prefix;
   2850          1.1  christos static int last_data_prefix;
   2851          1.1  christos static int last_addr_prefix;
   2852          1.1  christos static int last_rex_prefix;
   2853          1.1  christos static int last_seg_prefix;
   2854          1.1  christos #define MAX_CODE_LENGTH 15
   2855          1.1  christos /* We can up to 14 prefixes since the maximum instruction length is
   2856          1.1  christos    15bytes.  */
   2857          1.1  christos static int all_prefixes[MAX_CODE_LENGTH - 1];
   2858          1.1  christos static disassemble_info *the_info;
   2859          1.1  christos static struct
   2860          1.1  christos   {
   2861          1.1  christos     int mod;
   2862          1.1  christos     int reg;
   2863          1.1  christos     int rm;
   2864          1.1  christos   }
   2865          1.1  christos modrm;
   2866          1.1  christos static unsigned char need_modrm;
   2867          1.1  christos static struct
   2868          1.1  christos   {
   2869          1.1  christos     int scale;
   2870          1.1  christos     int index;
   2871          1.1  christos     int base;
   2872          1.1  christos   }
   2873          1.1  christos sib;
   2874          1.1  christos static struct
   2875          1.1  christos   {
   2876          1.1  christos     int register_specifier;
   2877          1.1  christos     int length;
   2878          1.1  christos     int prefix;
   2879          1.1  christos     int w;
   2880  1.1.1.1.8.1       tls     int evex;
   2881  1.1.1.1.8.1       tls     int r;
   2882  1.1.1.1.8.1       tls     int v;
   2883  1.1.1.1.8.1       tls     int mask_register_specifier;
   2884  1.1.1.1.8.1       tls     int zeroing;
   2885  1.1.1.1.8.1       tls     int ll;
   2886  1.1.1.1.8.1       tls     int b;
   2887          1.1  christos   }
   2888          1.1  christos vex;
   2889          1.1  christos static unsigned char need_vex;
   2890          1.1  christos static unsigned char need_vex_reg;
   2891          1.1  christos static unsigned char vex_w_done;
   2892          1.1  christos 
   2893          1.1  christos struct op
   2894          1.1  christos   {
   2895          1.1  christos     const char *name;
   2896          1.1  christos     unsigned int len;
   2897          1.1  christos   };
   2898          1.1  christos 
   2899          1.1  christos /* If we are accessing mod/rm/reg without need_modrm set, then the
   2900          1.1  christos    values are stale.  Hitting this abort likely indicates that you
   2901          1.1  christos    need to update onebyte_has_modrm or twobyte_has_modrm.  */
   2902          1.1  christos #define MODRM_CHECK  if (!need_modrm) abort ()
   2903          1.1  christos 
   2904          1.1  christos static const char **names64;
   2905          1.1  christos static const char **names32;
   2906          1.1  christos static const char **names16;
   2907          1.1  christos static const char **names8;
   2908          1.1  christos static const char **names8rex;
   2909          1.1  christos static const char **names_seg;
   2910          1.1  christos static const char *index64;
   2911          1.1  christos static const char *index32;
   2912          1.1  christos static const char **index16;
   2913  1.1.1.1.8.1       tls static const char **names_bnd;
   2914          1.1  christos 
   2915          1.1  christos static const char *intel_names64[] = {
   2916          1.1  christos   "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi",
   2917          1.1  christos   "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
   2918          1.1  christos };
   2919          1.1  christos static const char *intel_names32[] = {
   2920          1.1  christos   "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi",
   2921          1.1  christos   "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d"
   2922          1.1  christos };
   2923          1.1  christos static const char *intel_names16[] = {
   2924          1.1  christos   "ax", "cx", "dx", "bx", "sp", "bp", "si", "di",
   2925          1.1  christos   "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
   2926          1.1  christos };
   2927          1.1  christos static const char *intel_names8[] = {
   2928          1.1  christos   "al", "cl", "dl", "bl", "ah", "ch", "dh", "bh",
   2929          1.1  christos };
   2930          1.1  christos static const char *intel_names8rex[] = {
   2931          1.1  christos   "al", "cl", "dl", "bl", "spl", "bpl", "sil", "dil",
   2932          1.1  christos   "r8b", "r9b", "r10b", "r11b", "r12b", "r13b", "r14b", "r15b"
   2933          1.1  christos };
   2934          1.1  christos static const char *intel_names_seg[] = {
   2935          1.1  christos   "es", "cs", "ss", "ds", "fs", "gs", "?", "?",
   2936          1.1  christos };
   2937          1.1  christos static const char *intel_index64 = "riz";
   2938          1.1  christos static const char *intel_index32 = "eiz";
   2939          1.1  christos static const char *intel_index16[] = {
   2940          1.1  christos   "bx+si", "bx+di", "bp+si", "bp+di", "si", "di", "bp", "bx"
   2941          1.1  christos };
   2942          1.1  christos 
   2943          1.1  christos static const char *att_names64[] = {
   2944          1.1  christos   "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi",
   2945          1.1  christos   "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15"
   2946          1.1  christos };
   2947          1.1  christos static const char *att_names32[] = {
   2948          1.1  christos   "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi",
   2949          1.1  christos   "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d"
   2950          1.1  christos };
   2951          1.1  christos static const char *att_names16[] = {
   2952          1.1  christos   "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di",
   2953          1.1  christos   "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w"
   2954          1.1  christos };
   2955          1.1  christos static const char *att_names8[] = {
   2956          1.1  christos   "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh",
   2957          1.1  christos };
   2958          1.1  christos static const char *att_names8rex[] = {
   2959          1.1  christos   "%al", "%cl", "%dl", "%bl", "%spl", "%bpl", "%sil", "%dil",
   2960          1.1  christos   "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b"
   2961          1.1  christos };
   2962          1.1  christos static const char *att_names_seg[] = {
   2963          1.1  christos   "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?",
   2964          1.1  christos };
   2965          1.1  christos static const char *att_index64 = "%riz";
   2966          1.1  christos static const char *att_index32 = "%eiz";
   2967          1.1  christos static const char *att_index16[] = {
   2968          1.1  christos   "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx"
   2969          1.1  christos };
   2970          1.1  christos 
   2971          1.1  christos static const char **names_mm;
   2972          1.1  christos static const char *intel_names_mm[] = {
   2973          1.1  christos   "mm0", "mm1", "mm2", "mm3",
   2974          1.1  christos   "mm4", "mm5", "mm6", "mm7"
   2975          1.1  christos };
   2976          1.1  christos static const char *att_names_mm[] = {
   2977          1.1  christos   "%mm0", "%mm1", "%mm2", "%mm3",
   2978          1.1  christos   "%mm4", "%mm5", "%mm6", "%mm7"
   2979          1.1  christos };
   2980          1.1  christos 
   2981  1.1.1.1.8.1       tls static const char *intel_names_bnd[] = {
   2982  1.1.1.1.8.1       tls   "bnd0", "bnd1", "bnd2", "bnd3"
   2983  1.1.1.1.8.1       tls };
   2984  1.1.1.1.8.1       tls 
   2985  1.1.1.1.8.1       tls static const char *att_names_bnd[] = {
   2986  1.1.1.1.8.1       tls   "%bnd0", "%bnd1", "%bnd2", "%bnd3"
   2987  1.1.1.1.8.1       tls };
   2988  1.1.1.1.8.1       tls 
   2989          1.1  christos static const char **names_xmm;
   2990          1.1  christos static const char *intel_names_xmm[] = {
   2991          1.1  christos   "xmm0", "xmm1", "xmm2", "xmm3",
   2992          1.1  christos   "xmm4", "xmm5", "xmm6", "xmm7",
   2993          1.1  christos   "xmm8", "xmm9", "xmm10", "xmm11",
   2994  1.1.1.1.8.1       tls   "xmm12", "xmm13", "xmm14", "xmm15",
   2995  1.1.1.1.8.1       tls   "xmm16", "xmm17", "xmm18", "xmm19",
   2996  1.1.1.1.8.1       tls   "xmm20", "xmm21", "xmm22", "xmm23",
   2997  1.1.1.1.8.1       tls   "xmm24", "xmm25", "xmm26", "xmm27",
   2998  1.1.1.1.8.1       tls   "xmm28", "xmm29", "xmm30", "xmm31"
   2999          1.1  christos };
   3000          1.1  christos static const char *att_names_xmm[] = {
   3001          1.1  christos   "%xmm0", "%xmm1", "%xmm2", "%xmm3",
   3002          1.1  christos   "%xmm4", "%xmm5", "%xmm6", "%xmm7",
   3003          1.1  christos   "%xmm8", "%xmm9", "%xmm10", "%xmm11",
   3004  1.1.1.1.8.1       tls   "%xmm12", "%xmm13", "%xmm14", "%xmm15",
   3005  1.1.1.1.8.1       tls   "%xmm16", "%xmm17", "%xmm18", "%xmm19",
   3006  1.1.1.1.8.1       tls   "%xmm20", "%xmm21", "%xmm22", "%xmm23",
   3007  1.1.1.1.8.1       tls   "%xmm24", "%xmm25", "%xmm26", "%xmm27",
   3008  1.1.1.1.8.1       tls   "%xmm28", "%xmm29", "%xmm30", "%xmm31"
   3009          1.1  christos };
   3010          1.1  christos 
   3011          1.1  christos static const char **names_ymm;
   3012          1.1  christos static const char *intel_names_ymm[] = {
   3013          1.1  christos   "ymm0", "ymm1", "ymm2", "ymm3",
   3014          1.1  christos   "ymm4", "ymm5", "ymm6", "ymm7",
   3015          1.1  christos   "ymm8", "ymm9", "ymm10", "ymm11",
   3016  1.1.1.1.8.1       tls   "ymm12", "ymm13", "ymm14", "ymm15",
   3017  1.1.1.1.8.1       tls   "ymm16", "ymm17", "ymm18", "ymm19",
   3018  1.1.1.1.8.1       tls   "ymm20", "ymm21", "ymm22", "ymm23",
   3019  1.1.1.1.8.1       tls   "ymm24", "ymm25", "ymm26", "ymm27",
   3020  1.1.1.1.8.1       tls   "ymm28", "ymm29", "ymm30", "ymm31"
   3021          1.1  christos };
   3022          1.1  christos static const char *att_names_ymm[] = {
   3023          1.1  christos   "%ymm0", "%ymm1", "%ymm2", "%ymm3",
   3024          1.1  christos   "%ymm4", "%ymm5", "%ymm6", "%ymm7",
   3025          1.1  christos   "%ymm8", "%ymm9", "%ymm10", "%ymm11",
   3026  1.1.1.1.8.1       tls   "%ymm12", "%ymm13", "%ymm14", "%ymm15",
   3027  1.1.1.1.8.1       tls   "%ymm16", "%ymm17", "%ymm18", "%ymm19",
   3028  1.1.1.1.8.1       tls   "%ymm20", "%ymm21", "%ymm22", "%ymm23",
   3029  1.1.1.1.8.1       tls   "%ymm24", "%ymm25", "%ymm26", "%ymm27",
   3030  1.1.1.1.8.1       tls   "%ymm28", "%ymm29", "%ymm30", "%ymm31"
   3031  1.1.1.1.8.1       tls };
   3032  1.1.1.1.8.1       tls 
   3033  1.1.1.1.8.1       tls static const char **names_zmm;
   3034  1.1.1.1.8.1       tls static const char *intel_names_zmm[] = {
   3035  1.1.1.1.8.1       tls   "zmm0", "zmm1", "zmm2", "zmm3",
   3036  1.1.1.1.8.1       tls   "zmm4", "zmm5", "zmm6", "zmm7",
   3037  1.1.1.1.8.1       tls   "zmm8", "zmm9", "zmm10", "zmm11",
   3038  1.1.1.1.8.1       tls   "zmm12", "zmm13", "zmm14", "zmm15",
   3039  1.1.1.1.8.1       tls   "zmm16", "zmm17", "zmm18", "zmm19",
   3040  1.1.1.1.8.1       tls   "zmm20", "zmm21", "zmm22", "zmm23",
   3041  1.1.1.1.8.1       tls   "zmm24", "zmm25", "zmm26", "zmm27",
   3042  1.1.1.1.8.1       tls   "zmm28", "zmm29", "zmm30", "zmm31"
   3043  1.1.1.1.8.1       tls };
   3044  1.1.1.1.8.1       tls static const char *att_names_zmm[] = {
   3045  1.1.1.1.8.1       tls   "%zmm0", "%zmm1", "%zmm2", "%zmm3",
   3046  1.1.1.1.8.1       tls   "%zmm4", "%zmm5", "%zmm6", "%zmm7",
   3047  1.1.1.1.8.1       tls   "%zmm8", "%zmm9", "%zmm10", "%zmm11",
   3048  1.1.1.1.8.1       tls   "%zmm12", "%zmm13", "%zmm14", "%zmm15",
   3049  1.1.1.1.8.1       tls   "%zmm16", "%zmm17", "%zmm18", "%zmm19",
   3050  1.1.1.1.8.1       tls   "%zmm20", "%zmm21", "%zmm22", "%zmm23",
   3051  1.1.1.1.8.1       tls   "%zmm24", "%zmm25", "%zmm26", "%zmm27",
   3052  1.1.1.1.8.1       tls   "%zmm28", "%zmm29", "%zmm30", "%zmm31"
   3053  1.1.1.1.8.1       tls };
   3054  1.1.1.1.8.1       tls 
   3055  1.1.1.1.8.1       tls static const char **names_mask;
   3056  1.1.1.1.8.1       tls static const char *intel_names_mask[] = {
   3057  1.1.1.1.8.1       tls   "k0", "k1", "k2", "k3", "k4", "k5", "k6", "k7"
   3058  1.1.1.1.8.1       tls };
   3059  1.1.1.1.8.1       tls static const char *att_names_mask[] = {
   3060  1.1.1.1.8.1       tls   "%k0", "%k1", "%k2", "%k3", "%k4", "%k5", "%k6", "%k7"
   3061  1.1.1.1.8.1       tls };
   3062  1.1.1.1.8.1       tls 
   3063  1.1.1.1.8.1       tls static const char *names_rounding[] =
   3064  1.1.1.1.8.1       tls {
   3065  1.1.1.1.8.1       tls   "{rn-sae}",
   3066  1.1.1.1.8.1       tls   "{rd-sae}",
   3067  1.1.1.1.8.1       tls   "{ru-sae}",
   3068  1.1.1.1.8.1       tls   "{rz-sae}"
   3069          1.1  christos };
   3070          1.1  christos 
   3071          1.1  christos static const struct dis386 reg_table[][8] = {
   3072          1.1  christos   /* REG_80 */
   3073          1.1  christos   {
   3074  1.1.1.1.8.1       tls     { "addA",	{ Ebh1, Ib } },
   3075  1.1.1.1.8.1       tls     { "orA",	{ Ebh1, Ib } },
   3076  1.1.1.1.8.1       tls     { "adcA",	{ Ebh1, Ib } },
   3077  1.1.1.1.8.1       tls     { "sbbA",	{ Ebh1, Ib } },
   3078  1.1.1.1.8.1       tls     { "andA",	{ Ebh1, Ib } },
   3079  1.1.1.1.8.1       tls     { "subA",	{ Ebh1, Ib } },
   3080  1.1.1.1.8.1       tls     { "xorA",	{ Ebh1, Ib } },
   3081          1.1  christos     { "cmpA",	{ Eb, Ib } },
   3082          1.1  christos   },
   3083          1.1  christos   /* REG_81 */
   3084          1.1  christos   {
   3085  1.1.1.1.8.1       tls     { "addQ",	{ Evh1, Iv } },
   3086  1.1.1.1.8.1       tls     { "orQ",	{ Evh1, Iv } },
   3087  1.1.1.1.8.1       tls     { "adcQ",	{ Evh1, Iv } },
   3088  1.1.1.1.8.1       tls     { "sbbQ",	{ Evh1, Iv } },
   3089  1.1.1.1.8.1       tls     { "andQ",	{ Evh1, Iv } },
   3090  1.1.1.1.8.1       tls     { "subQ",	{ Evh1, Iv } },
   3091  1.1.1.1.8.1       tls     { "xorQ",	{ Evh1, Iv } },
   3092          1.1  christos     { "cmpQ",	{ Ev, Iv } },
   3093          1.1  christos   },
   3094          1.1  christos   /* REG_82 */
   3095          1.1  christos   {
   3096  1.1.1.1.8.1       tls     { "addQ",	{ Evh1, sIb } },
   3097  1.1.1.1.8.1       tls     { "orQ",	{ Evh1, sIb } },
   3098  1.1.1.1.8.1       tls     { "adcQ",	{ Evh1, sIb } },
   3099  1.1.1.1.8.1       tls     { "sbbQ",	{ Evh1, sIb } },
   3100  1.1.1.1.8.1       tls     { "andQ",	{ Evh1, sIb } },
   3101  1.1.1.1.8.1       tls     { "subQ",	{ Evh1, sIb } },
   3102  1.1.1.1.8.1       tls     { "xorQ",	{ Evh1, sIb } },
   3103          1.1  christos     { "cmpQ",	{ Ev, sIb } },
   3104          1.1  christos   },
   3105          1.1  christos   /* REG_8F */
   3106          1.1  christos   {
   3107          1.1  christos     { "popU",	{ stackEv } },
   3108          1.1  christos     { XOP_8F_TABLE (XOP_09) },
   3109          1.1  christos     { Bad_Opcode },
   3110          1.1  christos     { Bad_Opcode },
   3111          1.1  christos     { Bad_Opcode },
   3112          1.1  christos     { XOP_8F_TABLE (XOP_09) },
   3113          1.1  christos   },
   3114          1.1  christos   /* REG_C0 */
   3115          1.1  christos   {
   3116          1.1  christos     { "rolA",	{ Eb, Ib } },
   3117          1.1  christos     { "rorA",	{ Eb, Ib } },
   3118          1.1  christos     { "rclA",	{ Eb, Ib } },
   3119          1.1  christos     { "rcrA",	{ Eb, Ib } },
   3120          1.1  christos     { "shlA",	{ Eb, Ib } },
   3121          1.1  christos     { "shrA",	{ Eb, Ib } },
   3122          1.1  christos     { Bad_Opcode },
   3123          1.1  christos     { "sarA",	{ Eb, Ib } },
   3124          1.1  christos   },
   3125          1.1  christos   /* REG_C1 */
   3126          1.1  christos   {
   3127          1.1  christos     { "rolQ",	{ Ev, Ib } },
   3128          1.1  christos     { "rorQ",	{ Ev, Ib } },
   3129          1.1  christos     { "rclQ",	{ Ev, Ib } },
   3130          1.1  christos     { "rcrQ",	{ Ev, Ib } },
   3131          1.1  christos     { "shlQ",	{ Ev, Ib } },
   3132          1.1  christos     { "shrQ",	{ Ev, Ib } },
   3133          1.1  christos     { Bad_Opcode },
   3134          1.1  christos     { "sarQ",	{ Ev, Ib } },
   3135          1.1  christos   },
   3136          1.1  christos   /* REG_C6 */
   3137          1.1  christos   {
   3138  1.1.1.1.8.1       tls     { "movA",	{ Ebh3, Ib } },
   3139  1.1.1.1.8.1       tls     { Bad_Opcode },
   3140  1.1.1.1.8.1       tls     { Bad_Opcode },
   3141  1.1.1.1.8.1       tls     { Bad_Opcode },
   3142  1.1.1.1.8.1       tls     { Bad_Opcode },
   3143  1.1.1.1.8.1       tls     { Bad_Opcode },
   3144  1.1.1.1.8.1       tls     { Bad_Opcode },
   3145  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_C6_REG_7) },
   3146          1.1  christos   },
   3147          1.1  christos   /* REG_C7 */
   3148          1.1  christos   {
   3149  1.1.1.1.8.1       tls     { "movQ",	{ Evh3, Iv } },
   3150  1.1.1.1.8.1       tls     { Bad_Opcode },
   3151  1.1.1.1.8.1       tls     { Bad_Opcode },
   3152  1.1.1.1.8.1       tls     { Bad_Opcode },
   3153  1.1.1.1.8.1       tls     { Bad_Opcode },
   3154  1.1.1.1.8.1       tls     { Bad_Opcode },
   3155  1.1.1.1.8.1       tls     { Bad_Opcode },
   3156  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_C7_REG_7) },
   3157          1.1  christos   },
   3158          1.1  christos   /* REG_D0 */
   3159          1.1  christos   {
   3160          1.1  christos     { "rolA",	{ Eb, I1 } },
   3161          1.1  christos     { "rorA",	{ Eb, I1 } },
   3162          1.1  christos     { "rclA",	{ Eb, I1 } },
   3163          1.1  christos     { "rcrA",	{ Eb, I1 } },
   3164          1.1  christos     { "shlA",	{ Eb, I1 } },
   3165          1.1  christos     { "shrA",	{ Eb, I1 } },
   3166          1.1  christos     { Bad_Opcode },
   3167          1.1  christos     { "sarA",	{ Eb, I1 } },
   3168          1.1  christos   },
   3169          1.1  christos   /* REG_D1 */
   3170          1.1  christos   {
   3171          1.1  christos     { "rolQ",	{ Ev, I1 } },
   3172          1.1  christos     { "rorQ",	{ Ev, I1 } },
   3173          1.1  christos     { "rclQ",	{ Ev, I1 } },
   3174          1.1  christos     { "rcrQ",	{ Ev, I1 } },
   3175          1.1  christos     { "shlQ",	{ Ev, I1 } },
   3176          1.1  christos     { "shrQ",	{ Ev, I1 } },
   3177          1.1  christos     { Bad_Opcode },
   3178          1.1  christos     { "sarQ",	{ Ev, I1 } },
   3179          1.1  christos   },
   3180          1.1  christos   /* REG_D2 */
   3181          1.1  christos   {
   3182          1.1  christos     { "rolA",	{ Eb, CL } },
   3183          1.1  christos     { "rorA",	{ Eb, CL } },
   3184          1.1  christos     { "rclA",	{ Eb, CL } },
   3185          1.1  christos     { "rcrA",	{ Eb, CL } },
   3186          1.1  christos     { "shlA",	{ Eb, CL } },
   3187          1.1  christos     { "shrA",	{ Eb, CL } },
   3188          1.1  christos     { Bad_Opcode },
   3189          1.1  christos     { "sarA",	{ Eb, CL } },
   3190          1.1  christos   },
   3191          1.1  christos   /* REG_D3 */
   3192          1.1  christos   {
   3193          1.1  christos     { "rolQ",	{ Ev, CL } },
   3194          1.1  christos     { "rorQ",	{ Ev, CL } },
   3195          1.1  christos     { "rclQ",	{ Ev, CL } },
   3196          1.1  christos     { "rcrQ",	{ Ev, CL } },
   3197          1.1  christos     { "shlQ",	{ Ev, CL } },
   3198          1.1  christos     { "shrQ",	{ Ev, CL } },
   3199          1.1  christos     { Bad_Opcode },
   3200          1.1  christos     { "sarQ",	{ Ev, CL } },
   3201          1.1  christos   },
   3202          1.1  christos   /* REG_F6 */
   3203          1.1  christos   {
   3204          1.1  christos     { "testA",	{ Eb, Ib } },
   3205          1.1  christos     { Bad_Opcode },
   3206  1.1.1.1.8.1       tls     { "notA",	{ Ebh1 } },
   3207  1.1.1.1.8.1       tls     { "negA",	{ Ebh1 } },
   3208          1.1  christos     { "mulA",	{ Eb } },	/* Don't print the implicit %al register,  */
   3209          1.1  christos     { "imulA",	{ Eb } },	/* to distinguish these opcodes from other */
   3210          1.1  christos     { "divA",	{ Eb } },	/* mul/imul opcodes.  Do the same for div  */
   3211          1.1  christos     { "idivA",	{ Eb } },	/* and idiv for consistency.		   */
   3212          1.1  christos   },
   3213          1.1  christos   /* REG_F7 */
   3214          1.1  christos   {
   3215          1.1  christos     { "testQ",	{ Ev, Iv } },
   3216          1.1  christos     { Bad_Opcode },
   3217  1.1.1.1.8.1       tls     { "notQ",	{ Evh1 } },
   3218  1.1.1.1.8.1       tls     { "negQ",	{ Evh1 } },
   3219          1.1  christos     { "mulQ",	{ Ev } },	/* Don't print the implicit register.  */
   3220          1.1  christos     { "imulQ",	{ Ev } },
   3221          1.1  christos     { "divQ",	{ Ev } },
   3222          1.1  christos     { "idivQ",	{ Ev } },
   3223          1.1  christos   },
   3224          1.1  christos   /* REG_FE */
   3225          1.1  christos   {
   3226  1.1.1.1.8.1       tls     { "incA",	{ Ebh1 } },
   3227  1.1.1.1.8.1       tls     { "decA",	{ Ebh1 } },
   3228          1.1  christos   },
   3229          1.1  christos   /* REG_FF */
   3230          1.1  christos   {
   3231  1.1.1.1.8.1       tls     { "incQ",	{ Evh1 } },
   3232  1.1.1.1.8.1       tls     { "decQ",	{ Evh1 } },
   3233  1.1.1.1.8.1       tls     { "call{T|}", { indirEv, BND } },
   3234  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_FF_REG_3) },
   3235  1.1.1.1.8.1       tls     { "jmp{T|}", { indirEv, BND } },
   3236  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_FF_REG_5) },
   3237          1.1  christos     { "pushU",	{ stackEv } },
   3238          1.1  christos     { Bad_Opcode },
   3239          1.1  christos   },
   3240          1.1  christos   /* REG_0F00 */
   3241          1.1  christos   {
   3242          1.1  christos     { "sldtD",	{ Sv } },
   3243          1.1  christos     { "strD",	{ Sv } },
   3244          1.1  christos     { "lldt",	{ Ew } },
   3245          1.1  christos     { "ltr",	{ Ew } },
   3246          1.1  christos     { "verr",	{ Ew } },
   3247          1.1  christos     { "verw",	{ Ew } },
   3248          1.1  christos     { Bad_Opcode },
   3249          1.1  christos     { Bad_Opcode },
   3250          1.1  christos   },
   3251          1.1  christos   /* REG_0F01 */
   3252          1.1  christos   {
   3253          1.1  christos     { MOD_TABLE (MOD_0F01_REG_0) },
   3254          1.1  christos     { MOD_TABLE (MOD_0F01_REG_1) },
   3255          1.1  christos     { MOD_TABLE (MOD_0F01_REG_2) },
   3256          1.1  christos     { MOD_TABLE (MOD_0F01_REG_3) },
   3257          1.1  christos     { "smswD",	{ Sv } },
   3258          1.1  christos     { Bad_Opcode },
   3259          1.1  christos     { "lmsw",	{ Ew } },
   3260          1.1  christos     { MOD_TABLE (MOD_0F01_REG_7) },
   3261          1.1  christos   },
   3262          1.1  christos   /* REG_0F0D */
   3263          1.1  christos   {
   3264          1.1  christos     { "prefetch",	{ Mb } },
   3265          1.1  christos     { "prefetchw",	{ Mb } },
   3266  1.1.1.1.8.1       tls     { "prefetchwt1",	{ Mb } },
   3267  1.1.1.1.8.1       tls     { "prefetch",	{ Mb } },
   3268  1.1.1.1.8.1       tls     { "prefetch",	{ Mb } },
   3269  1.1.1.1.8.1       tls     { "prefetch",	{ Mb } },
   3270  1.1.1.1.8.1       tls     { "prefetch",	{ Mb } },
   3271  1.1.1.1.8.1       tls     { "prefetch",	{ Mb } },
   3272          1.1  christos   },
   3273          1.1  christos   /* REG_0F18 */
   3274          1.1  christos   {
   3275          1.1  christos     { MOD_TABLE (MOD_0F18_REG_0) },
   3276          1.1  christos     { MOD_TABLE (MOD_0F18_REG_1) },
   3277          1.1  christos     { MOD_TABLE (MOD_0F18_REG_2) },
   3278          1.1  christos     { MOD_TABLE (MOD_0F18_REG_3) },
   3279  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F18_REG_4) },
   3280  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F18_REG_5) },
   3281  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F18_REG_6) },
   3282  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F18_REG_7) },
   3283          1.1  christos   },
   3284          1.1  christos   /* REG_0F71 */
   3285          1.1  christos   {
   3286          1.1  christos     { Bad_Opcode },
   3287          1.1  christos     { Bad_Opcode },
   3288          1.1  christos     { MOD_TABLE (MOD_0F71_REG_2) },
   3289          1.1  christos     { Bad_Opcode },
   3290          1.1  christos     { MOD_TABLE (MOD_0F71_REG_4) },
   3291          1.1  christos     { Bad_Opcode },
   3292          1.1  christos     { MOD_TABLE (MOD_0F71_REG_6) },
   3293          1.1  christos   },
   3294          1.1  christos   /* REG_0F72 */
   3295          1.1  christos   {
   3296          1.1  christos     { Bad_Opcode },
   3297          1.1  christos     { Bad_Opcode },
   3298          1.1  christos     { MOD_TABLE (MOD_0F72_REG_2) },
   3299          1.1  christos     { Bad_Opcode },
   3300          1.1  christos     { MOD_TABLE (MOD_0F72_REG_4) },
   3301          1.1  christos     { Bad_Opcode },
   3302          1.1  christos     { MOD_TABLE (MOD_0F72_REG_6) },
   3303          1.1  christos   },
   3304          1.1  christos   /* REG_0F73 */
   3305          1.1  christos   {
   3306          1.1  christos     { Bad_Opcode },
   3307          1.1  christos     { Bad_Opcode },
   3308          1.1  christos     { MOD_TABLE (MOD_0F73_REG_2) },
   3309          1.1  christos     { MOD_TABLE (MOD_0F73_REG_3) },
   3310          1.1  christos     { Bad_Opcode },
   3311          1.1  christos     { Bad_Opcode },
   3312          1.1  christos     { MOD_TABLE (MOD_0F73_REG_6) },
   3313          1.1  christos     { MOD_TABLE (MOD_0F73_REG_7) },
   3314          1.1  christos   },
   3315          1.1  christos   /* REG_0FA6 */
   3316          1.1  christos   {
   3317          1.1  christos     { "montmul",	{ { OP_0f07, 0 } } },
   3318          1.1  christos     { "xsha1",		{ { OP_0f07, 0 } } },
   3319          1.1  christos     { "xsha256",	{ { OP_0f07, 0 } } },
   3320          1.1  christos   },
   3321          1.1  christos   /* REG_0FA7 */
   3322          1.1  christos   {
   3323          1.1  christos     { "xstore-rng",	{ { OP_0f07, 0 } } },
   3324          1.1  christos     { "xcrypt-ecb",	{ { OP_0f07, 0 } } },
   3325          1.1  christos     { "xcrypt-cbc",	{ { OP_0f07, 0 } } },
   3326          1.1  christos     { "xcrypt-ctr",	{ { OP_0f07, 0 } } },
   3327          1.1  christos     { "xcrypt-cfb",	{ { OP_0f07, 0 } } },
   3328          1.1  christos     { "xcrypt-ofb",	{ { OP_0f07, 0 } } },
   3329          1.1  christos   },
   3330          1.1  christos   /* REG_0FAE */
   3331          1.1  christos   {
   3332          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_0) },
   3333          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_1) },
   3334          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_2) },
   3335          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_3) },
   3336          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_4) },
   3337          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_5) },
   3338          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_6) },
   3339          1.1  christos     { MOD_TABLE (MOD_0FAE_REG_7) },
   3340          1.1  christos   },
   3341          1.1  christos   /* REG_0FBA */
   3342          1.1  christos   {
   3343          1.1  christos     { Bad_Opcode },
   3344          1.1  christos     { Bad_Opcode },
   3345          1.1  christos     { Bad_Opcode },
   3346          1.1  christos     { Bad_Opcode },
   3347          1.1  christos     { "btQ",	{ Ev, Ib } },
   3348  1.1.1.1.8.1       tls     { "btsQ",	{ Evh1, Ib } },
   3349  1.1.1.1.8.1       tls     { "btrQ",	{ Evh1, Ib } },
   3350  1.1.1.1.8.1       tls     { "btcQ",	{ Evh1, Ib } },
   3351          1.1  christos   },
   3352          1.1  christos   /* REG_0FC7 */
   3353          1.1  christos   {
   3354          1.1  christos     { Bad_Opcode },
   3355          1.1  christos     { "cmpxchg8b", { { CMPXCHG8B_Fixup, q_mode } } },
   3356          1.1  christos     { Bad_Opcode },
   3357          1.1  christos     { Bad_Opcode },
   3358          1.1  christos     { Bad_Opcode },
   3359          1.1  christos     { Bad_Opcode },
   3360          1.1  christos     { MOD_TABLE (MOD_0FC7_REG_6) },
   3361          1.1  christos     { MOD_TABLE (MOD_0FC7_REG_7) },
   3362          1.1  christos   },
   3363          1.1  christos   /* REG_VEX_0F71 */
   3364          1.1  christos   {
   3365          1.1  christos     { Bad_Opcode },
   3366          1.1  christos     { Bad_Opcode },
   3367          1.1  christos     { MOD_TABLE (MOD_VEX_0F71_REG_2) },
   3368          1.1  christos     { Bad_Opcode },
   3369          1.1  christos     { MOD_TABLE (MOD_VEX_0F71_REG_4) },
   3370          1.1  christos     { Bad_Opcode },
   3371          1.1  christos     { MOD_TABLE (MOD_VEX_0F71_REG_6) },
   3372          1.1  christos   },
   3373          1.1  christos   /* REG_VEX_0F72 */
   3374          1.1  christos   {
   3375          1.1  christos     { Bad_Opcode },
   3376          1.1  christos     { Bad_Opcode },
   3377          1.1  christos     { MOD_TABLE (MOD_VEX_0F72_REG_2) },
   3378          1.1  christos     { Bad_Opcode },
   3379          1.1  christos     { MOD_TABLE (MOD_VEX_0F72_REG_4) },
   3380          1.1  christos     { Bad_Opcode },
   3381          1.1  christos     { MOD_TABLE (MOD_VEX_0F72_REG_6) },
   3382          1.1  christos   },
   3383          1.1  christos   /* REG_VEX_0F73 */
   3384          1.1  christos   {
   3385          1.1  christos     { Bad_Opcode },
   3386          1.1  christos     { Bad_Opcode },
   3387          1.1  christos     { MOD_TABLE (MOD_VEX_0F73_REG_2) },
   3388          1.1  christos     { MOD_TABLE (MOD_VEX_0F73_REG_3) },
   3389          1.1  christos     { Bad_Opcode },
   3390          1.1  christos     { Bad_Opcode },
   3391          1.1  christos     { MOD_TABLE (MOD_VEX_0F73_REG_6) },
   3392          1.1  christos     { MOD_TABLE (MOD_VEX_0F73_REG_7) },
   3393          1.1  christos   },
   3394          1.1  christos   /* REG_VEX_0FAE */
   3395          1.1  christos   {
   3396          1.1  christos     { Bad_Opcode },
   3397          1.1  christos     { Bad_Opcode },
   3398          1.1  christos     { MOD_TABLE (MOD_VEX_0FAE_REG_2) },
   3399          1.1  christos     { MOD_TABLE (MOD_VEX_0FAE_REG_3) },
   3400          1.1  christos   },
   3401          1.1  christos   /* REG_VEX_0F38F3 */
   3402          1.1  christos   {
   3403          1.1  christos     { Bad_Opcode },
   3404          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38F3_REG_1) },
   3405          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38F3_REG_2) },
   3406          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38F3_REG_3) },
   3407          1.1  christos   },
   3408          1.1  christos   /* REG_XOP_LWPCB */
   3409          1.1  christos   {
   3410          1.1  christos     { "llwpcb", { { OP_LWPCB_E, 0 } } },
   3411          1.1  christos     { "slwpcb",	{ { OP_LWPCB_E, 0 } } },
   3412          1.1  christos   },
   3413          1.1  christos   /* REG_XOP_LWP */
   3414          1.1  christos   {
   3415          1.1  christos     { "lwpins", { { OP_LWP_E, 0 }, Ed, Iq } },
   3416          1.1  christos     { "lwpval",	{ { OP_LWP_E, 0 }, Ed, Iq } },
   3417          1.1  christos   },
   3418          1.1  christos   /* REG_XOP_TBM_01 */
   3419          1.1  christos   {
   3420          1.1  christos     { Bad_Opcode },
   3421          1.1  christos     { "blcfill",	{ { OP_LWP_E, 0 }, Ev } },
   3422          1.1  christos     { "blsfill",	{ { OP_LWP_E, 0 }, Ev } },
   3423          1.1  christos     { "blcs",	{ { OP_LWP_E, 0 }, Ev } },
   3424          1.1  christos     { "tzmsk",	{ { OP_LWP_E, 0 }, Ev } },
   3425          1.1  christos     { "blcic",	{ { OP_LWP_E, 0 }, Ev } },
   3426          1.1  christos     { "blsic",	{ { OP_LWP_E, 0 }, Ev } },
   3427          1.1  christos     { "t1mskc",	{ { OP_LWP_E, 0 }, Ev } },
   3428          1.1  christos   },
   3429          1.1  christos   /* REG_XOP_TBM_02 */
   3430          1.1  christos   {
   3431          1.1  christos     { Bad_Opcode },
   3432          1.1  christos     { "blcmsk",	{ { OP_LWP_E, 0 }, Ev } },
   3433          1.1  christos     { Bad_Opcode },
   3434          1.1  christos     { Bad_Opcode },
   3435          1.1  christos     { Bad_Opcode },
   3436          1.1  christos     { Bad_Opcode },
   3437          1.1  christos     { "blci",	{ { OP_LWP_E, 0 }, Ev } },
   3438          1.1  christos   },
   3439  1.1.1.1.8.1       tls #define NEED_REG_TABLE
   3440  1.1.1.1.8.1       tls #include "i386-dis-evex.h"
   3441  1.1.1.1.8.1       tls #undef NEED_REG_TABLE
   3442          1.1  christos };
   3443          1.1  christos 
   3444          1.1  christos static const struct dis386 prefix_table[][4] = {
   3445          1.1  christos   /* PREFIX_90 */
   3446          1.1  christos   {
   3447          1.1  christos     { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } },
   3448          1.1  christos     { "pause", { XX } },
   3449          1.1  christos     { "xchgS", { { NOP_Fixup1, eAX_reg }, { NOP_Fixup2, eAX_reg } } },
   3450          1.1  christos   },
   3451          1.1  christos 
   3452          1.1  christos   /* PREFIX_0F10 */
   3453          1.1  christos   {
   3454          1.1  christos     { "movups",	{ XM, EXx } },
   3455          1.1  christos     { "movss",	{ XM, EXd } },
   3456          1.1  christos     { "movupd",	{ XM, EXx } },
   3457          1.1  christos     { "movsd",	{ XM, EXq } },
   3458          1.1  christos   },
   3459          1.1  christos 
   3460          1.1  christos   /* PREFIX_0F11 */
   3461          1.1  christos   {
   3462          1.1  christos     { "movups",	{ EXxS, XM } },
   3463          1.1  christos     { "movss",	{ EXdS, XM } },
   3464          1.1  christos     { "movupd",	{ EXxS, XM } },
   3465          1.1  christos     { "movsd",	{ EXqS, XM } },
   3466          1.1  christos   },
   3467          1.1  christos 
   3468          1.1  christos   /* PREFIX_0F12 */
   3469          1.1  christos   {
   3470          1.1  christos     { MOD_TABLE (MOD_0F12_PREFIX_0) },
   3471          1.1  christos     { "movsldup", { XM, EXx } },
   3472          1.1  christos     { "movlpd",	{ XM, EXq } },
   3473          1.1  christos     { "movddup", { XM, EXq } },
   3474          1.1  christos   },
   3475          1.1  christos 
   3476          1.1  christos   /* PREFIX_0F16 */
   3477          1.1  christos   {
   3478          1.1  christos     { MOD_TABLE (MOD_0F16_PREFIX_0) },
   3479          1.1  christos     { "movshdup", { XM, EXx } },
   3480          1.1  christos     { "movhpd",	{ XM, EXq } },
   3481          1.1  christos   },
   3482          1.1  christos 
   3483  1.1.1.1.8.1       tls   /* PREFIX_0F1A */
   3484  1.1.1.1.8.1       tls   {
   3485  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F1A_PREFIX_0) },
   3486  1.1.1.1.8.1       tls     { "bndcl",  { Gbnd, Ev_bnd } },
   3487  1.1.1.1.8.1       tls     { "bndmov", { Gbnd, Ebnd } },
   3488  1.1.1.1.8.1       tls     { "bndcu",  { Gbnd, Ev_bnd } },
   3489  1.1.1.1.8.1       tls   },
   3490  1.1.1.1.8.1       tls 
   3491  1.1.1.1.8.1       tls   /* PREFIX_0F1B */
   3492  1.1.1.1.8.1       tls   {
   3493  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F1B_PREFIX_0) },
   3494  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_0F1B_PREFIX_1) },
   3495  1.1.1.1.8.1       tls     { "bndmov", { Ebnd, Gbnd } },
   3496  1.1.1.1.8.1       tls     { "bndcn",  { Gbnd, Ev_bnd } },
   3497  1.1.1.1.8.1       tls   },
   3498  1.1.1.1.8.1       tls 
   3499          1.1  christos   /* PREFIX_0F2A */
   3500          1.1  christos   {
   3501          1.1  christos     { "cvtpi2ps", { XM, EMCq } },
   3502          1.1  christos     { "cvtsi2ss%LQ", { XM, Ev } },
   3503          1.1  christos     { "cvtpi2pd", { XM, EMCq } },
   3504          1.1  christos     { "cvtsi2sd%LQ", { XM, Ev } },
   3505          1.1  christos   },
   3506          1.1  christos 
   3507          1.1  christos   /* PREFIX_0F2B */
   3508          1.1  christos   {
   3509          1.1  christos     { MOD_TABLE (MOD_0F2B_PREFIX_0) },
   3510          1.1  christos     { MOD_TABLE (MOD_0F2B_PREFIX_1) },
   3511          1.1  christos     { MOD_TABLE (MOD_0F2B_PREFIX_2) },
   3512          1.1  christos     { MOD_TABLE (MOD_0F2B_PREFIX_3) },
   3513          1.1  christos   },
   3514          1.1  christos 
   3515          1.1  christos   /* PREFIX_0F2C */
   3516          1.1  christos   {
   3517          1.1  christos     { "cvttps2pi", { MXC, EXq } },
   3518          1.1  christos     { "cvttss2siY", { Gv, EXd } },
   3519          1.1  christos     { "cvttpd2pi", { MXC, EXx } },
   3520          1.1  christos     { "cvttsd2siY", { Gv, EXq } },
   3521          1.1  christos   },
   3522          1.1  christos 
   3523          1.1  christos   /* PREFIX_0F2D */
   3524          1.1  christos   {
   3525          1.1  christos     { "cvtps2pi", { MXC, EXq } },
   3526          1.1  christos     { "cvtss2siY", { Gv, EXd } },
   3527          1.1  christos     { "cvtpd2pi", { MXC, EXx } },
   3528          1.1  christos     { "cvtsd2siY", { Gv, EXq } },
   3529          1.1  christos   },
   3530          1.1  christos 
   3531          1.1  christos   /* PREFIX_0F2E */
   3532          1.1  christos   {
   3533  1.1.1.1.8.1       tls     { "ucomiss",{ XM, EXd } },
   3534          1.1  christos     { Bad_Opcode },
   3535  1.1.1.1.8.1       tls     { "ucomisd",{ XM, EXq } },
   3536          1.1  christos   },
   3537          1.1  christos 
   3538          1.1  christos   /* PREFIX_0F2F */
   3539          1.1  christos   {
   3540          1.1  christos     { "comiss",	{ XM, EXd } },
   3541          1.1  christos     { Bad_Opcode },
   3542          1.1  christos     { "comisd",	{ XM, EXq } },
   3543          1.1  christos   },
   3544          1.1  christos 
   3545          1.1  christos   /* PREFIX_0F51 */
   3546          1.1  christos   {
   3547          1.1  christos     { "sqrtps", { XM, EXx } },
   3548          1.1  christos     { "sqrtss", { XM, EXd } },
   3549          1.1  christos     { "sqrtpd", { XM, EXx } },
   3550          1.1  christos     { "sqrtsd",	{ XM, EXq } },
   3551          1.1  christos   },
   3552          1.1  christos 
   3553          1.1  christos   /* PREFIX_0F52 */
   3554          1.1  christos   {
   3555          1.1  christos     { "rsqrtps",{ XM, EXx } },
   3556          1.1  christos     { "rsqrtss",{ XM, EXd } },
   3557          1.1  christos   },
   3558          1.1  christos 
   3559          1.1  christos   /* PREFIX_0F53 */
   3560          1.1  christos   {
   3561          1.1  christos     { "rcpps",	{ XM, EXx } },
   3562          1.1  christos     { "rcpss",	{ XM, EXd } },
   3563          1.1  christos   },
   3564          1.1  christos 
   3565          1.1  christos   /* PREFIX_0F58 */
   3566          1.1  christos   {
   3567          1.1  christos     { "addps", { XM, EXx } },
   3568          1.1  christos     { "addss", { XM, EXd } },
   3569          1.1  christos     { "addpd", { XM, EXx } },
   3570          1.1  christos     { "addsd", { XM, EXq } },
   3571          1.1  christos   },
   3572          1.1  christos 
   3573          1.1  christos   /* PREFIX_0F59 */
   3574          1.1  christos   {
   3575          1.1  christos     { "mulps",	{ XM, EXx } },
   3576          1.1  christos     { "mulss",	{ XM, EXd } },
   3577          1.1  christos     { "mulpd",	{ XM, EXx } },
   3578          1.1  christos     { "mulsd",	{ XM, EXq } },
   3579          1.1  christos   },
   3580          1.1  christos 
   3581          1.1  christos   /* PREFIX_0F5A */
   3582          1.1  christos   {
   3583          1.1  christos     { "cvtps2pd", { XM, EXq } },
   3584          1.1  christos     { "cvtss2sd", { XM, EXd } },
   3585          1.1  christos     { "cvtpd2ps", { XM, EXx } },
   3586          1.1  christos     { "cvtsd2ss", { XM, EXq } },
   3587          1.1  christos   },
   3588          1.1  christos 
   3589          1.1  christos   /* PREFIX_0F5B */
   3590          1.1  christos   {
   3591          1.1  christos     { "cvtdq2ps", { XM, EXx } },
   3592          1.1  christos     { "cvttps2dq", { XM, EXx } },
   3593          1.1  christos     { "cvtps2dq", { XM, EXx } },
   3594          1.1  christos   },
   3595          1.1  christos 
   3596          1.1  christos   /* PREFIX_0F5C */
   3597          1.1  christos   {
   3598          1.1  christos     { "subps",	{ XM, EXx } },
   3599          1.1  christos     { "subss",	{ XM, EXd } },
   3600          1.1  christos     { "subpd",	{ XM, EXx } },
   3601          1.1  christos     { "subsd",	{ XM, EXq } },
   3602          1.1  christos   },
   3603          1.1  christos 
   3604          1.1  christos   /* PREFIX_0F5D */
   3605          1.1  christos   {
   3606          1.1  christos     { "minps",	{ XM, EXx } },
   3607          1.1  christos     { "minss",	{ XM, EXd } },
   3608          1.1  christos     { "minpd",	{ XM, EXx } },
   3609          1.1  christos     { "minsd",	{ XM, EXq } },
   3610          1.1  christos   },
   3611          1.1  christos 
   3612          1.1  christos   /* PREFIX_0F5E */
   3613          1.1  christos   {
   3614          1.1  christos     { "divps",	{ XM, EXx } },
   3615          1.1  christos     { "divss",	{ XM, EXd } },
   3616          1.1  christos     { "divpd",	{ XM, EXx } },
   3617          1.1  christos     { "divsd",	{ XM, EXq } },
   3618          1.1  christos   },
   3619          1.1  christos 
   3620          1.1  christos   /* PREFIX_0F5F */
   3621          1.1  christos   {
   3622          1.1  christos     { "maxps",	{ XM, EXx } },
   3623          1.1  christos     { "maxss",	{ XM, EXd } },
   3624          1.1  christos     { "maxpd",	{ XM, EXx } },
   3625          1.1  christos     { "maxsd",	{ XM, EXq } },
   3626          1.1  christos   },
   3627          1.1  christos 
   3628          1.1  christos   /* PREFIX_0F60 */
   3629          1.1  christos   {
   3630          1.1  christos     { "punpcklbw",{ MX, EMd } },
   3631          1.1  christos     { Bad_Opcode },
   3632          1.1  christos     { "punpcklbw",{ MX, EMx } },
   3633          1.1  christos   },
   3634          1.1  christos 
   3635          1.1  christos   /* PREFIX_0F61 */
   3636          1.1  christos   {
   3637          1.1  christos     { "punpcklwd",{ MX, EMd } },
   3638          1.1  christos     { Bad_Opcode },
   3639          1.1  christos     { "punpcklwd",{ MX, EMx } },
   3640          1.1  christos   },
   3641          1.1  christos 
   3642          1.1  christos   /* PREFIX_0F62 */
   3643          1.1  christos   {
   3644          1.1  christos     { "punpckldq",{ MX, EMd } },
   3645          1.1  christos     { Bad_Opcode },
   3646          1.1  christos     { "punpckldq",{ MX, EMx } },
   3647          1.1  christos   },
   3648          1.1  christos 
   3649          1.1  christos   /* PREFIX_0F6C */
   3650          1.1  christos   {
   3651          1.1  christos     { Bad_Opcode },
   3652          1.1  christos     { Bad_Opcode },
   3653          1.1  christos     { "punpcklqdq", { XM, EXx } },
   3654          1.1  christos   },
   3655          1.1  christos 
   3656          1.1  christos   /* PREFIX_0F6D */
   3657          1.1  christos   {
   3658          1.1  christos     { Bad_Opcode },
   3659          1.1  christos     { Bad_Opcode },
   3660          1.1  christos     { "punpckhqdq", { XM, EXx } },
   3661          1.1  christos   },
   3662          1.1  christos 
   3663          1.1  christos   /* PREFIX_0F6F */
   3664          1.1  christos   {
   3665          1.1  christos     { "movq",	{ MX, EM } },
   3666          1.1  christos     { "movdqu",	{ XM, EXx } },
   3667          1.1  christos     { "movdqa",	{ XM, EXx } },
   3668          1.1  christos   },
   3669          1.1  christos 
   3670          1.1  christos   /* PREFIX_0F70 */
   3671          1.1  christos   {
   3672          1.1  christos     { "pshufw",	{ MX, EM, Ib } },
   3673          1.1  christos     { "pshufhw",{ XM, EXx, Ib } },
   3674          1.1  christos     { "pshufd",	{ XM, EXx, Ib } },
   3675          1.1  christos     { "pshuflw",{ XM, EXx, Ib } },
   3676          1.1  christos   },
   3677          1.1  christos 
   3678          1.1  christos   /* PREFIX_0F73_REG_3 */
   3679          1.1  christos   {
   3680          1.1  christos     { Bad_Opcode },
   3681          1.1  christos     { Bad_Opcode },
   3682          1.1  christos     { "psrldq",	{ XS, Ib } },
   3683          1.1  christos   },
   3684          1.1  christos 
   3685          1.1  christos   /* PREFIX_0F73_REG_7 */
   3686          1.1  christos   {
   3687          1.1  christos     { Bad_Opcode },
   3688          1.1  christos     { Bad_Opcode },
   3689          1.1  christos     { "pslldq",	{ XS, Ib } },
   3690          1.1  christos   },
   3691          1.1  christos 
   3692          1.1  christos   /* PREFIX_0F78 */
   3693          1.1  christos   {
   3694          1.1  christos     {"vmread",	{ Em, Gm } },
   3695          1.1  christos     { Bad_Opcode },
   3696          1.1  christos     {"extrq",	{ XS, Ib, Ib } },
   3697          1.1  christos     {"insertq",	{ XM, XS, Ib, Ib } },
   3698          1.1  christos   },
   3699          1.1  christos 
   3700          1.1  christos   /* PREFIX_0F79 */
   3701          1.1  christos   {
   3702          1.1  christos     {"vmwrite",	{ Gm, Em } },
   3703          1.1  christos     { Bad_Opcode },
   3704          1.1  christos     {"extrq",	{ XM, XS } },
   3705          1.1  christos     {"insertq",	{ XM, XS } },
   3706          1.1  christos   },
   3707          1.1  christos 
   3708          1.1  christos   /* PREFIX_0F7C */
   3709          1.1  christos   {
   3710          1.1  christos     { Bad_Opcode },
   3711          1.1  christos     { Bad_Opcode },
   3712          1.1  christos     { "haddpd",	{ XM, EXx } },
   3713          1.1  christos     { "haddps",	{ XM, EXx } },
   3714          1.1  christos   },
   3715          1.1  christos 
   3716          1.1  christos   /* PREFIX_0F7D */
   3717          1.1  christos   {
   3718          1.1  christos     { Bad_Opcode },
   3719          1.1  christos     { Bad_Opcode },
   3720          1.1  christos     { "hsubpd",	{ XM, EXx } },
   3721          1.1  christos     { "hsubps",	{ XM, EXx } },
   3722          1.1  christos   },
   3723          1.1  christos 
   3724          1.1  christos   /* PREFIX_0F7E */
   3725          1.1  christos   {
   3726          1.1  christos     { "movK",	{ Edq, MX } },
   3727          1.1  christos     { "movq",	{ XM, EXq } },
   3728          1.1  christos     { "movK",	{ Edq, XM } },
   3729          1.1  christos   },
   3730          1.1  christos 
   3731          1.1  christos   /* PREFIX_0F7F */
   3732          1.1  christos   {
   3733          1.1  christos     { "movq",	{ EMS, MX } },
   3734          1.1  christos     { "movdqu",	{ EXxS, XM } },
   3735          1.1  christos     { "movdqa",	{ EXxS, XM } },
   3736          1.1  christos   },
   3737          1.1  christos 
   3738          1.1  christos   /* PREFIX_0FAE_REG_0 */
   3739          1.1  christos   {
   3740          1.1  christos     { Bad_Opcode },
   3741          1.1  christos     { "rdfsbase", { Ev } },
   3742          1.1  christos   },
   3743          1.1  christos 
   3744          1.1  christos   /* PREFIX_0FAE_REG_1 */
   3745          1.1  christos   {
   3746          1.1  christos     { Bad_Opcode },
   3747          1.1  christos     { "rdgsbase", { Ev } },
   3748          1.1  christos   },
   3749          1.1  christos 
   3750          1.1  christos   /* PREFIX_0FAE_REG_2 */
   3751          1.1  christos   {
   3752          1.1  christos     { Bad_Opcode },
   3753          1.1  christos     { "wrfsbase", { Ev } },
   3754          1.1  christos   },
   3755          1.1  christos 
   3756          1.1  christos   /* PREFIX_0FAE_REG_3 */
   3757          1.1  christos   {
   3758          1.1  christos     { Bad_Opcode },
   3759          1.1  christos     { "wrgsbase", { Ev } },
   3760          1.1  christos   },
   3761          1.1  christos 
   3762          1.1  christos   /* PREFIX_0FB8 */
   3763          1.1  christos   {
   3764          1.1  christos     { Bad_Opcode },
   3765          1.1  christos     { "popcntS", { Gv, Ev } },
   3766          1.1  christos   },
   3767          1.1  christos 
   3768          1.1  christos   /* PREFIX_0FBC */
   3769          1.1  christos   {
   3770          1.1  christos     { "bsfS",	{ Gv, Ev } },
   3771          1.1  christos     { "tzcntS",	{ Gv, Ev } },
   3772          1.1  christos     { "bsfS",	{ Gv, Ev } },
   3773          1.1  christos   },
   3774          1.1  christos 
   3775          1.1  christos   /* PREFIX_0FBD */
   3776          1.1  christos   {
   3777          1.1  christos     { "bsrS",	{ Gv, Ev } },
   3778          1.1  christos     { "lzcntS",	{ Gv, Ev } },
   3779          1.1  christos     { "bsrS",	{ Gv, Ev } },
   3780          1.1  christos   },
   3781          1.1  christos 
   3782          1.1  christos   /* PREFIX_0FC2 */
   3783          1.1  christos   {
   3784          1.1  christos     { "cmpps",	{ XM, EXx, CMP } },
   3785          1.1  christos     { "cmpss",	{ XM, EXd, CMP } },
   3786          1.1  christos     { "cmppd",	{ XM, EXx, CMP } },
   3787          1.1  christos     { "cmpsd",	{ XM, EXq, CMP } },
   3788          1.1  christos   },
   3789          1.1  christos 
   3790          1.1  christos   /* PREFIX_0FC3 */
   3791          1.1  christos   {
   3792          1.1  christos     { "movntiS", { Ma, Gv } },
   3793          1.1  christos   },
   3794          1.1  christos 
   3795          1.1  christos   /* PREFIX_0FC7_REG_6 */
   3796          1.1  christos   {
   3797          1.1  christos     { "vmptrld",{ Mq } },
   3798          1.1  christos     { "vmxon",	{ Mq } },
   3799          1.1  christos     { "vmclear",{ Mq } },
   3800          1.1  christos   },
   3801          1.1  christos 
   3802          1.1  christos   /* PREFIX_0FD0 */
   3803          1.1  christos   {
   3804          1.1  christos     { Bad_Opcode },
   3805          1.1  christos     { Bad_Opcode },
   3806          1.1  christos     { "addsubpd", { XM, EXx } },
   3807          1.1  christos     { "addsubps", { XM, EXx } },
   3808          1.1  christos   },
   3809          1.1  christos 
   3810          1.1  christos   /* PREFIX_0FD6 */
   3811          1.1  christos   {
   3812          1.1  christos     { Bad_Opcode },
   3813          1.1  christos     { "movq2dq",{ XM, MS } },
   3814          1.1  christos     { "movq",	{ EXqS, XM } },
   3815          1.1  christos     { "movdq2q",{ MX, XS } },
   3816          1.1  christos   },
   3817          1.1  christos 
   3818          1.1  christos   /* PREFIX_0FE6 */
   3819          1.1  christos   {
   3820          1.1  christos     { Bad_Opcode },
   3821          1.1  christos     { "cvtdq2pd", { XM, EXq } },
   3822          1.1  christos     { "cvttpd2dq", { XM, EXx } },
   3823          1.1  christos     { "cvtpd2dq", { XM, EXx } },
   3824          1.1  christos   },
   3825          1.1  christos 
   3826          1.1  christos   /* PREFIX_0FE7 */
   3827          1.1  christos   {
   3828          1.1  christos     { "movntq",	{ Mq, MX } },
   3829          1.1  christos     { Bad_Opcode },
   3830          1.1  christos     { MOD_TABLE (MOD_0FE7_PREFIX_2) },
   3831          1.1  christos   },
   3832          1.1  christos 
   3833          1.1  christos   /* PREFIX_0FF0 */
   3834          1.1  christos   {
   3835          1.1  christos     { Bad_Opcode },
   3836          1.1  christos     { Bad_Opcode },
   3837          1.1  christos     { Bad_Opcode },
   3838          1.1  christos     { MOD_TABLE (MOD_0FF0_PREFIX_3) },
   3839          1.1  christos   },
   3840          1.1  christos 
   3841          1.1  christos   /* PREFIX_0FF7 */
   3842          1.1  christos   {
   3843          1.1  christos     { "maskmovq", { MX, MS } },
   3844          1.1  christos     { Bad_Opcode },
   3845          1.1  christos     { "maskmovdqu", { XM, XS } },
   3846          1.1  christos   },
   3847          1.1  christos 
   3848          1.1  christos   /* PREFIX_0F3810 */
   3849          1.1  christos   {
   3850          1.1  christos     { Bad_Opcode },
   3851          1.1  christos     { Bad_Opcode },
   3852          1.1  christos     { "pblendvb", { XM, EXx, XMM0 } },
   3853          1.1  christos   },
   3854          1.1  christos 
   3855          1.1  christos   /* PREFIX_0F3814 */
   3856          1.1  christos   {
   3857          1.1  christos     { Bad_Opcode },
   3858          1.1  christos     { Bad_Opcode },
   3859          1.1  christos     { "blendvps", { XM, EXx, XMM0 } },
   3860          1.1  christos   },
   3861          1.1  christos 
   3862          1.1  christos   /* PREFIX_0F3815 */
   3863          1.1  christos   {
   3864          1.1  christos     { Bad_Opcode },
   3865          1.1  christos     { Bad_Opcode },
   3866          1.1  christos     { "blendvpd", { XM, EXx, XMM0 } },
   3867          1.1  christos   },
   3868          1.1  christos 
   3869          1.1  christos   /* PREFIX_0F3817 */
   3870          1.1  christos   {
   3871          1.1  christos     { Bad_Opcode },
   3872          1.1  christos     { Bad_Opcode },
   3873          1.1  christos     { "ptest",  { XM, EXx } },
   3874          1.1  christos   },
   3875          1.1  christos 
   3876          1.1  christos   /* PREFIX_0F3820 */
   3877          1.1  christos   {
   3878          1.1  christos     { Bad_Opcode },
   3879          1.1  christos     { Bad_Opcode },
   3880          1.1  christos     { "pmovsxbw", { XM, EXq } },
   3881          1.1  christos   },
   3882          1.1  christos 
   3883          1.1  christos   /* PREFIX_0F3821 */
   3884          1.1  christos   {
   3885          1.1  christos     { Bad_Opcode },
   3886          1.1  christos     { Bad_Opcode },
   3887          1.1  christos     { "pmovsxbd", { XM, EXd } },
   3888          1.1  christos   },
   3889          1.1  christos 
   3890          1.1  christos   /* PREFIX_0F3822 */
   3891          1.1  christos   {
   3892          1.1  christos     { Bad_Opcode },
   3893          1.1  christos     { Bad_Opcode },
   3894          1.1  christos     { "pmovsxbq", { XM, EXw } },
   3895          1.1  christos   },
   3896          1.1  christos 
   3897          1.1  christos   /* PREFIX_0F3823 */
   3898          1.1  christos   {
   3899          1.1  christos     { Bad_Opcode },
   3900          1.1  christos     { Bad_Opcode },
   3901          1.1  christos     { "pmovsxwd", { XM, EXq } },
   3902          1.1  christos   },
   3903          1.1  christos 
   3904          1.1  christos   /* PREFIX_0F3824 */
   3905          1.1  christos   {
   3906          1.1  christos     { Bad_Opcode },
   3907          1.1  christos     { Bad_Opcode },
   3908          1.1  christos     { "pmovsxwq", { XM, EXd } },
   3909          1.1  christos   },
   3910          1.1  christos 
   3911          1.1  christos   /* PREFIX_0F3825 */
   3912          1.1  christos   {
   3913          1.1  christos     { Bad_Opcode },
   3914          1.1  christos     { Bad_Opcode },
   3915          1.1  christos     { "pmovsxdq", { XM, EXq } },
   3916          1.1  christos   },
   3917          1.1  christos 
   3918          1.1  christos   /* PREFIX_0F3828 */
   3919          1.1  christos   {
   3920          1.1  christos     { Bad_Opcode },
   3921          1.1  christos     { Bad_Opcode },
   3922          1.1  christos     { "pmuldq", { XM, EXx } },
   3923          1.1  christos   },
   3924          1.1  christos 
   3925          1.1  christos   /* PREFIX_0F3829 */
   3926          1.1  christos   {
   3927          1.1  christos     { Bad_Opcode },
   3928          1.1  christos     { Bad_Opcode },
   3929          1.1  christos     { "pcmpeqq", { XM, EXx } },
   3930          1.1  christos   },
   3931          1.1  christos 
   3932          1.1  christos   /* PREFIX_0F382A */
   3933          1.1  christos   {
   3934          1.1  christos     { Bad_Opcode },
   3935          1.1  christos     { Bad_Opcode },
   3936          1.1  christos     { MOD_TABLE (MOD_0F382A_PREFIX_2) },
   3937          1.1  christos   },
   3938          1.1  christos 
   3939          1.1  christos   /* PREFIX_0F382B */
   3940          1.1  christos   {
   3941          1.1  christos     { Bad_Opcode },
   3942          1.1  christos     { Bad_Opcode },
   3943          1.1  christos     { "packusdw", { XM, EXx } },
   3944          1.1  christos   },
   3945          1.1  christos 
   3946          1.1  christos   /* PREFIX_0F3830 */
   3947          1.1  christos   {
   3948          1.1  christos     { Bad_Opcode },
   3949          1.1  christos     { Bad_Opcode },
   3950          1.1  christos     { "pmovzxbw", { XM, EXq } },
   3951          1.1  christos   },
   3952          1.1  christos 
   3953          1.1  christos   /* PREFIX_0F3831 */
   3954          1.1  christos   {
   3955          1.1  christos     { Bad_Opcode },
   3956          1.1  christos     { Bad_Opcode },
   3957          1.1  christos     { "pmovzxbd", { XM, EXd } },
   3958          1.1  christos   },
   3959          1.1  christos 
   3960          1.1  christos   /* PREFIX_0F3832 */
   3961          1.1  christos   {
   3962          1.1  christos     { Bad_Opcode },
   3963          1.1  christos     { Bad_Opcode },
   3964          1.1  christos     { "pmovzxbq", { XM, EXw } },
   3965          1.1  christos   },
   3966          1.1  christos 
   3967          1.1  christos   /* PREFIX_0F3833 */
   3968          1.1  christos   {
   3969          1.1  christos     { Bad_Opcode },
   3970          1.1  christos     { Bad_Opcode },
   3971          1.1  christos     { "pmovzxwd", { XM, EXq } },
   3972          1.1  christos   },
   3973          1.1  christos 
   3974          1.1  christos   /* PREFIX_0F3834 */
   3975          1.1  christos   {
   3976          1.1  christos     { Bad_Opcode },
   3977          1.1  christos     { Bad_Opcode },
   3978          1.1  christos     { "pmovzxwq", { XM, EXd } },
   3979          1.1  christos   },
   3980          1.1  christos 
   3981          1.1  christos   /* PREFIX_0F3835 */
   3982          1.1  christos   {
   3983          1.1  christos     { Bad_Opcode },
   3984          1.1  christos     { Bad_Opcode },
   3985          1.1  christos     { "pmovzxdq", { XM, EXq } },
   3986          1.1  christos   },
   3987          1.1  christos 
   3988          1.1  christos   /* PREFIX_0F3837 */
   3989          1.1  christos   {
   3990          1.1  christos     { Bad_Opcode },
   3991          1.1  christos     { Bad_Opcode },
   3992          1.1  christos     { "pcmpgtq", { XM, EXx } },
   3993          1.1  christos   },
   3994          1.1  christos 
   3995          1.1  christos   /* PREFIX_0F3838 */
   3996          1.1  christos   {
   3997          1.1  christos     { Bad_Opcode },
   3998          1.1  christos     { Bad_Opcode },
   3999          1.1  christos     { "pminsb",	{ XM, EXx } },
   4000          1.1  christos   },
   4001          1.1  christos 
   4002          1.1  christos   /* PREFIX_0F3839 */
   4003          1.1  christos   {
   4004          1.1  christos     { Bad_Opcode },
   4005          1.1  christos     { Bad_Opcode },
   4006          1.1  christos     { "pminsd",	{ XM, EXx } },
   4007          1.1  christos   },
   4008          1.1  christos 
   4009          1.1  christos   /* PREFIX_0F383A */
   4010          1.1  christos   {
   4011          1.1  christos     { Bad_Opcode },
   4012          1.1  christos     { Bad_Opcode },
   4013          1.1  christos     { "pminuw",	{ XM, EXx } },
   4014          1.1  christos   },
   4015          1.1  christos 
   4016          1.1  christos   /* PREFIX_0F383B */
   4017          1.1  christos   {
   4018          1.1  christos     { Bad_Opcode },
   4019          1.1  christos     { Bad_Opcode },
   4020          1.1  christos     { "pminud",	{ XM, EXx } },
   4021          1.1  christos   },
   4022          1.1  christos 
   4023          1.1  christos   /* PREFIX_0F383C */
   4024          1.1  christos   {
   4025          1.1  christos     { Bad_Opcode },
   4026          1.1  christos     { Bad_Opcode },
   4027          1.1  christos     { "pmaxsb",	{ XM, EXx } },
   4028          1.1  christos   },
   4029          1.1  christos 
   4030          1.1  christos   /* PREFIX_0F383D */
   4031          1.1  christos   {
   4032          1.1  christos     { Bad_Opcode },
   4033          1.1  christos     { Bad_Opcode },
   4034          1.1  christos     { "pmaxsd",	{ XM, EXx } },
   4035          1.1  christos   },
   4036          1.1  christos 
   4037          1.1  christos   /* PREFIX_0F383E */
   4038          1.1  christos   {
   4039          1.1  christos     { Bad_Opcode },
   4040          1.1  christos     { Bad_Opcode },
   4041          1.1  christos     { "pmaxuw", { XM, EXx } },
   4042          1.1  christos   },
   4043          1.1  christos 
   4044          1.1  christos   /* PREFIX_0F383F */
   4045          1.1  christos   {
   4046          1.1  christos     { Bad_Opcode },
   4047          1.1  christos     { Bad_Opcode },
   4048          1.1  christos     { "pmaxud", { XM, EXx } },
   4049          1.1  christos   },
   4050          1.1  christos 
   4051          1.1  christos   /* PREFIX_0F3840 */
   4052          1.1  christos   {
   4053          1.1  christos     { Bad_Opcode },
   4054          1.1  christos     { Bad_Opcode },
   4055          1.1  christos     { "pmulld", { XM, EXx } },
   4056          1.1  christos   },
   4057          1.1  christos 
   4058          1.1  christos   /* PREFIX_0F3841 */
   4059          1.1  christos   {
   4060          1.1  christos     { Bad_Opcode },
   4061          1.1  christos     { Bad_Opcode },
   4062          1.1  christos     { "phminposuw", { XM, EXx } },
   4063          1.1  christos   },
   4064          1.1  christos 
   4065          1.1  christos   /* PREFIX_0F3880 */
   4066          1.1  christos   {
   4067          1.1  christos     { Bad_Opcode },
   4068          1.1  christos     { Bad_Opcode },
   4069          1.1  christos     { "invept",	{ Gm, Mo } },
   4070          1.1  christos   },
   4071          1.1  christos 
   4072          1.1  christos   /* PREFIX_0F3881 */
   4073          1.1  christos   {
   4074          1.1  christos     { Bad_Opcode },
   4075          1.1  christos     { Bad_Opcode },
   4076          1.1  christos     { "invvpid", { Gm, Mo } },
   4077          1.1  christos   },
   4078          1.1  christos 
   4079  1.1.1.1.8.1       tls   /* PREFIX_0F3882 */
   4080  1.1.1.1.8.1       tls   {
   4081  1.1.1.1.8.1       tls     { Bad_Opcode },
   4082  1.1.1.1.8.1       tls     { Bad_Opcode },
   4083  1.1.1.1.8.1       tls     { "invpcid", { Gm, M } },
   4084  1.1.1.1.8.1       tls   },
   4085  1.1.1.1.8.1       tls 
   4086  1.1.1.1.8.1       tls   /* PREFIX_0F38C8 */
   4087  1.1.1.1.8.1       tls   {
   4088  1.1.1.1.8.1       tls     { "sha1nexte", { XM, EXxmm } },
   4089  1.1.1.1.8.1       tls   },
   4090  1.1.1.1.8.1       tls 
   4091  1.1.1.1.8.1       tls   /* PREFIX_0F38C9 */
   4092  1.1.1.1.8.1       tls   {
   4093  1.1.1.1.8.1       tls     { "sha1msg1", { XM, EXxmm } },
   4094  1.1.1.1.8.1       tls   },
   4095  1.1.1.1.8.1       tls 
   4096  1.1.1.1.8.1       tls   /* PREFIX_0F38CA */
   4097  1.1.1.1.8.1       tls   {
   4098  1.1.1.1.8.1       tls     { "sha1msg2", { XM, EXxmm } },
   4099  1.1.1.1.8.1       tls   },
   4100  1.1.1.1.8.1       tls 
   4101  1.1.1.1.8.1       tls   /* PREFIX_0F38CB */
   4102  1.1.1.1.8.1       tls   {
   4103  1.1.1.1.8.1       tls     { "sha256rnds2", { XM, EXxmm, XMM0 } },
   4104  1.1.1.1.8.1       tls   },
   4105  1.1.1.1.8.1       tls 
   4106  1.1.1.1.8.1       tls   /* PREFIX_0F38CC */
   4107  1.1.1.1.8.1       tls   {
   4108  1.1.1.1.8.1       tls     { "sha256msg1", { XM, EXxmm } },
   4109  1.1.1.1.8.1       tls   },
   4110  1.1.1.1.8.1       tls 
   4111  1.1.1.1.8.1       tls   /* PREFIX_0F38CD */
   4112  1.1.1.1.8.1       tls   {
   4113  1.1.1.1.8.1       tls     { "sha256msg2", { XM, EXxmm } },
   4114  1.1.1.1.8.1       tls   },
   4115  1.1.1.1.8.1       tls 
   4116          1.1  christos   /* PREFIX_0F38DB */
   4117          1.1  christos   {
   4118          1.1  christos     { Bad_Opcode },
   4119          1.1  christos     { Bad_Opcode },
   4120          1.1  christos     { "aesimc", { XM, EXx } },
   4121          1.1  christos   },
   4122          1.1  christos 
   4123          1.1  christos   /* PREFIX_0F38DC */
   4124          1.1  christos   {
   4125          1.1  christos     { Bad_Opcode },
   4126          1.1  christos     { Bad_Opcode },
   4127          1.1  christos     { "aesenc", { XM, EXx } },
   4128          1.1  christos   },
   4129          1.1  christos 
   4130          1.1  christos   /* PREFIX_0F38DD */
   4131          1.1  christos   {
   4132          1.1  christos     { Bad_Opcode },
   4133          1.1  christos     { Bad_Opcode },
   4134          1.1  christos     { "aesenclast", { XM, EXx } },
   4135          1.1  christos   },
   4136          1.1  christos 
   4137          1.1  christos   /* PREFIX_0F38DE */
   4138          1.1  christos   {
   4139          1.1  christos     { Bad_Opcode },
   4140          1.1  christos     { Bad_Opcode },
   4141          1.1  christos     { "aesdec", { XM, EXx } },
   4142          1.1  christos   },
   4143          1.1  christos 
   4144          1.1  christos   /* PREFIX_0F38DF */
   4145          1.1  christos   {
   4146          1.1  christos     { Bad_Opcode },
   4147          1.1  christos     { Bad_Opcode },
   4148          1.1  christos     { "aesdeclast", { XM, EXx } },
   4149          1.1  christos   },
   4150          1.1  christos 
   4151          1.1  christos   /* PREFIX_0F38F0 */
   4152          1.1  christos   {
   4153          1.1  christos     { "movbeS",	{ Gv, { MOVBE_Fixup, v_mode } } },
   4154          1.1  christos     { Bad_Opcode },
   4155          1.1  christos     { "movbeS",	{ Gv, { MOVBE_Fixup, v_mode } } },
   4156  1.1.1.1.8.1       tls     { "crc32",	{ Gdq, { CRC32_Fixup, b_mode } } },
   4157          1.1  christos   },
   4158          1.1  christos 
   4159          1.1  christos   /* PREFIX_0F38F1 */
   4160          1.1  christos   {
   4161          1.1  christos     { "movbeS",	{ { MOVBE_Fixup, v_mode }, Gv } },
   4162          1.1  christos     { Bad_Opcode },
   4163          1.1  christos     { "movbeS",	{ { MOVBE_Fixup, v_mode }, Gv } },
   4164  1.1.1.1.8.1       tls     { "crc32",	{ Gdq, { CRC32_Fixup, v_mode } } },
   4165  1.1.1.1.8.1       tls   },
   4166  1.1.1.1.8.1       tls 
   4167  1.1.1.1.8.1       tls   /* PREFIX_0F38F6 */
   4168  1.1.1.1.8.1       tls   {
   4169  1.1.1.1.8.1       tls     { Bad_Opcode },
   4170  1.1.1.1.8.1       tls     { "adoxS",	{ Gdq, Edq} },
   4171  1.1.1.1.8.1       tls     { "adcxS",	{ Gdq, Edq} },
   4172  1.1.1.1.8.1       tls     { Bad_Opcode },
   4173          1.1  christos   },
   4174          1.1  christos 
   4175          1.1  christos   /* PREFIX_0F3A08 */
   4176          1.1  christos   {
   4177          1.1  christos     { Bad_Opcode },
   4178          1.1  christos     { Bad_Opcode },
   4179          1.1  christos     { "roundps", { XM, EXx, Ib } },
   4180          1.1  christos   },
   4181          1.1  christos 
   4182          1.1  christos   /* PREFIX_0F3A09 */
   4183          1.1  christos   {
   4184          1.1  christos     { Bad_Opcode },
   4185          1.1  christos     { Bad_Opcode },
   4186          1.1  christos     { "roundpd", { XM, EXx, Ib } },
   4187          1.1  christos   },
   4188          1.1  christos 
   4189          1.1  christos   /* PREFIX_0F3A0A */
   4190          1.1  christos   {
   4191          1.1  christos     { Bad_Opcode },
   4192          1.1  christos     { Bad_Opcode },
   4193          1.1  christos     { "roundss", { XM, EXd, Ib } },
   4194          1.1  christos   },
   4195          1.1  christos 
   4196          1.1  christos   /* PREFIX_0F3A0B */
   4197          1.1  christos   {
   4198          1.1  christos     { Bad_Opcode },
   4199          1.1  christos     { Bad_Opcode },
   4200          1.1  christos     { "roundsd", { XM, EXq, Ib } },
   4201          1.1  christos   },
   4202          1.1  christos 
   4203          1.1  christos   /* PREFIX_0F3A0C */
   4204          1.1  christos   {
   4205          1.1  christos     { Bad_Opcode },
   4206          1.1  christos     { Bad_Opcode },
   4207          1.1  christos     { "blendps", { XM, EXx, Ib } },
   4208          1.1  christos   },
   4209          1.1  christos 
   4210          1.1  christos   /* PREFIX_0F3A0D */
   4211          1.1  christos   {
   4212          1.1  christos     { Bad_Opcode },
   4213          1.1  christos     { Bad_Opcode },
   4214          1.1  christos     { "blendpd", { XM, EXx, Ib } },
   4215          1.1  christos   },
   4216          1.1  christos 
   4217          1.1  christos   /* PREFIX_0F3A0E */
   4218          1.1  christos   {
   4219          1.1  christos     { Bad_Opcode },
   4220          1.1  christos     { Bad_Opcode },
   4221          1.1  christos     { "pblendw", { XM, EXx, Ib } },
   4222          1.1  christos   },
   4223          1.1  christos 
   4224          1.1  christos   /* PREFIX_0F3A14 */
   4225          1.1  christos   {
   4226          1.1  christos     { Bad_Opcode },
   4227          1.1  christos     { Bad_Opcode },
   4228          1.1  christos     { "pextrb",	{ Edqb, XM, Ib } },
   4229          1.1  christos   },
   4230          1.1  christos 
   4231          1.1  christos   /* PREFIX_0F3A15 */
   4232          1.1  christos   {
   4233          1.1  christos     { Bad_Opcode },
   4234          1.1  christos     { Bad_Opcode },
   4235          1.1  christos     { "pextrw",	{ Edqw, XM, Ib } },
   4236          1.1  christos   },
   4237          1.1  christos 
   4238          1.1  christos   /* PREFIX_0F3A16 */
   4239          1.1  christos   {
   4240          1.1  christos     { Bad_Opcode },
   4241          1.1  christos     { Bad_Opcode },
   4242          1.1  christos     { "pextrK",	{ Edq, XM, Ib } },
   4243          1.1  christos   },
   4244          1.1  christos 
   4245          1.1  christos   /* PREFIX_0F3A17 */
   4246          1.1  christos   {
   4247          1.1  christos     { Bad_Opcode },
   4248          1.1  christos     { Bad_Opcode },
   4249          1.1  christos     { "extractps", { Edqd, XM, Ib } },
   4250          1.1  christos   },
   4251          1.1  christos 
   4252          1.1  christos   /* PREFIX_0F3A20 */
   4253          1.1  christos   {
   4254          1.1  christos     { Bad_Opcode },
   4255          1.1  christos     { Bad_Opcode },
   4256          1.1  christos     { "pinsrb",	{ XM, Edqb, Ib } },
   4257          1.1  christos   },
   4258          1.1  christos 
   4259          1.1  christos   /* PREFIX_0F3A21 */
   4260          1.1  christos   {
   4261          1.1  christos     { Bad_Opcode },
   4262          1.1  christos     { Bad_Opcode },
   4263          1.1  christos     { "insertps", { XM, EXd, Ib } },
   4264          1.1  christos   },
   4265          1.1  christos 
   4266          1.1  christos   /* PREFIX_0F3A22 */
   4267          1.1  christos   {
   4268          1.1  christos     { Bad_Opcode },
   4269          1.1  christos     { Bad_Opcode },
   4270          1.1  christos     { "pinsrK",	{ XM, Edq, Ib } },
   4271          1.1  christos   },
   4272          1.1  christos 
   4273          1.1  christos   /* PREFIX_0F3A40 */
   4274          1.1  christos   {
   4275          1.1  christos     { Bad_Opcode },
   4276          1.1  christos     { Bad_Opcode },
   4277          1.1  christos     { "dpps",	{ XM, EXx, Ib } },
   4278          1.1  christos   },
   4279          1.1  christos 
   4280          1.1  christos   /* PREFIX_0F3A41 */
   4281          1.1  christos   {
   4282          1.1  christos     { Bad_Opcode },
   4283          1.1  christos     { Bad_Opcode },
   4284          1.1  christos     { "dppd",	{ XM, EXx, Ib } },
   4285          1.1  christos   },
   4286          1.1  christos 
   4287          1.1  christos   /* PREFIX_0F3A42 */
   4288          1.1  christos   {
   4289          1.1  christos     { Bad_Opcode },
   4290          1.1  christos     { Bad_Opcode },
   4291          1.1  christos     { "mpsadbw", { XM, EXx, Ib } },
   4292          1.1  christos   },
   4293          1.1  christos 
   4294          1.1  christos   /* PREFIX_0F3A44 */
   4295          1.1  christos   {
   4296          1.1  christos     { Bad_Opcode },
   4297          1.1  christos     { Bad_Opcode },
   4298          1.1  christos     { "pclmulqdq", { XM, EXx, PCLMUL } },
   4299          1.1  christos   },
   4300          1.1  christos 
   4301          1.1  christos   /* PREFIX_0F3A60 */
   4302          1.1  christos   {
   4303          1.1  christos     { Bad_Opcode },
   4304          1.1  christos     { Bad_Opcode },
   4305          1.1  christos     { "pcmpestrm", { XM, EXx, Ib } },
   4306          1.1  christos   },
   4307          1.1  christos 
   4308          1.1  christos   /* PREFIX_0F3A61 */
   4309          1.1  christos   {
   4310          1.1  christos     { Bad_Opcode },
   4311          1.1  christos     { Bad_Opcode },
   4312          1.1  christos     { "pcmpestri", { XM, EXx, Ib } },
   4313          1.1  christos   },
   4314          1.1  christos 
   4315          1.1  christos   /* PREFIX_0F3A62 */
   4316          1.1  christos   {
   4317          1.1  christos     { Bad_Opcode },
   4318          1.1  christos     { Bad_Opcode },
   4319          1.1  christos     { "pcmpistrm", { XM, EXx, Ib } },
   4320          1.1  christos   },
   4321          1.1  christos 
   4322          1.1  christos   /* PREFIX_0F3A63 */
   4323          1.1  christos   {
   4324          1.1  christos     { Bad_Opcode },
   4325          1.1  christos     { Bad_Opcode },
   4326          1.1  christos     { "pcmpistri", { XM, EXx, Ib } },
   4327          1.1  christos   },
   4328          1.1  christos 
   4329  1.1.1.1.8.1       tls   /* PREFIX_0F3ACC */
   4330  1.1.1.1.8.1       tls   {
   4331  1.1.1.1.8.1       tls     { "sha1rnds4", { XM, EXxmm, Ib } },
   4332  1.1.1.1.8.1       tls   },
   4333  1.1.1.1.8.1       tls 
   4334          1.1  christos   /* PREFIX_0F3ADF */
   4335          1.1  christos   {
   4336          1.1  christos     { Bad_Opcode },
   4337          1.1  christos     { Bad_Opcode },
   4338          1.1  christos     { "aeskeygenassist", { XM, EXx, Ib } },
   4339          1.1  christos   },
   4340          1.1  christos 
   4341          1.1  christos   /* PREFIX_VEX_0F10 */
   4342          1.1  christos   {
   4343          1.1  christos     { VEX_W_TABLE (VEX_W_0F10_P_0) },
   4344          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F10_P_1) },
   4345          1.1  christos     { VEX_W_TABLE (VEX_W_0F10_P_2) },
   4346          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F10_P_3) },
   4347          1.1  christos   },
   4348          1.1  christos 
   4349          1.1  christos   /* PREFIX_VEX_0F11 */
   4350          1.1  christos   {
   4351          1.1  christos     { VEX_W_TABLE (VEX_W_0F11_P_0) },
   4352          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F11_P_1) },
   4353          1.1  christos     { VEX_W_TABLE (VEX_W_0F11_P_2) },
   4354          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F11_P_3) },
   4355          1.1  christos   },
   4356          1.1  christos 
   4357          1.1  christos   /* PREFIX_VEX_0F12 */
   4358          1.1  christos   {
   4359          1.1  christos     { MOD_TABLE (MOD_VEX_0F12_PREFIX_0) },
   4360          1.1  christos     { VEX_W_TABLE (VEX_W_0F12_P_1) },
   4361          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F12_P_2) },
   4362          1.1  christos     { VEX_W_TABLE (VEX_W_0F12_P_3) },
   4363          1.1  christos   },
   4364          1.1  christos 
   4365          1.1  christos   /* PREFIX_VEX_0F16 */
   4366          1.1  christos   {
   4367          1.1  christos     { MOD_TABLE (MOD_VEX_0F16_PREFIX_0) },
   4368          1.1  christos     { VEX_W_TABLE (VEX_W_0F16_P_1) },
   4369          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F16_P_2) },
   4370          1.1  christos   },
   4371          1.1  christos 
   4372          1.1  christos   /* PREFIX_VEX_0F2A */
   4373          1.1  christos   {
   4374          1.1  christos     { Bad_Opcode },
   4375          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2A_P_1) },
   4376          1.1  christos     { Bad_Opcode },
   4377          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2A_P_3) },
   4378          1.1  christos   },
   4379          1.1  christos 
   4380          1.1  christos   /* PREFIX_VEX_0F2C */
   4381          1.1  christos   {
   4382          1.1  christos     { Bad_Opcode },
   4383          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2C_P_1) },
   4384          1.1  christos     { Bad_Opcode },
   4385          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2C_P_3) },
   4386          1.1  christos   },
   4387          1.1  christos 
   4388          1.1  christos   /* PREFIX_VEX_0F2D */
   4389          1.1  christos   {
   4390          1.1  christos     { Bad_Opcode },
   4391          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2D_P_1) },
   4392          1.1  christos     { Bad_Opcode },
   4393          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2D_P_3) },
   4394          1.1  christos   },
   4395          1.1  christos 
   4396          1.1  christos   /* PREFIX_VEX_0F2E */
   4397          1.1  christos   {
   4398          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2E_P_0) },
   4399          1.1  christos     { Bad_Opcode },
   4400          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2E_P_2) },
   4401          1.1  christos   },
   4402          1.1  christos 
   4403          1.1  christos   /* PREFIX_VEX_0F2F */
   4404          1.1  christos   {
   4405          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2F_P_0) },
   4406          1.1  christos     { Bad_Opcode },
   4407          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F2F_P_2) },
   4408          1.1  christos   },
   4409          1.1  christos 
   4410  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F41 */
   4411  1.1.1.1.8.1       tls   {
   4412  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F41_P_0) },
   4413  1.1.1.1.8.1       tls   },
   4414  1.1.1.1.8.1       tls 
   4415  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F42 */
   4416  1.1.1.1.8.1       tls   {
   4417  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F42_P_0) },
   4418  1.1.1.1.8.1       tls   },
   4419  1.1.1.1.8.1       tls 
   4420  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F44 */
   4421  1.1.1.1.8.1       tls   {
   4422  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F44_P_0) },
   4423  1.1.1.1.8.1       tls   },
   4424  1.1.1.1.8.1       tls 
   4425  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F45 */
   4426  1.1.1.1.8.1       tls   {
   4427  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F45_P_0) },
   4428  1.1.1.1.8.1       tls   },
   4429  1.1.1.1.8.1       tls 
   4430  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F46 */
   4431  1.1.1.1.8.1       tls   {
   4432  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F46_P_0) },
   4433  1.1.1.1.8.1       tls   },
   4434  1.1.1.1.8.1       tls 
   4435  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F47 */
   4436  1.1.1.1.8.1       tls   {
   4437  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F47_P_0) },
   4438  1.1.1.1.8.1       tls   },
   4439  1.1.1.1.8.1       tls 
   4440  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F4B */
   4441  1.1.1.1.8.1       tls   {
   4442  1.1.1.1.8.1       tls     { Bad_Opcode },
   4443  1.1.1.1.8.1       tls     { Bad_Opcode },
   4444  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F4B_P_2) },
   4445  1.1.1.1.8.1       tls   },
   4446  1.1.1.1.8.1       tls 
   4447          1.1  christos   /* PREFIX_VEX_0F51 */
   4448          1.1  christos   {
   4449          1.1  christos     { VEX_W_TABLE (VEX_W_0F51_P_0) },
   4450          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F51_P_1) },
   4451          1.1  christos     { VEX_W_TABLE (VEX_W_0F51_P_2) },
   4452          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F51_P_3) },
   4453          1.1  christos   },
   4454          1.1  christos 
   4455          1.1  christos   /* PREFIX_VEX_0F52 */
   4456          1.1  christos   {
   4457          1.1  christos     { VEX_W_TABLE (VEX_W_0F52_P_0) },
   4458          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F52_P_1) },
   4459          1.1  christos   },
   4460          1.1  christos 
   4461          1.1  christos   /* PREFIX_VEX_0F53 */
   4462          1.1  christos   {
   4463          1.1  christos     { VEX_W_TABLE (VEX_W_0F53_P_0) },
   4464          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F53_P_1) },
   4465          1.1  christos   },
   4466          1.1  christos 
   4467          1.1  christos   /* PREFIX_VEX_0F58 */
   4468          1.1  christos   {
   4469          1.1  christos     { VEX_W_TABLE (VEX_W_0F58_P_0) },
   4470          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F58_P_1) },
   4471          1.1  christos     { VEX_W_TABLE (VEX_W_0F58_P_2) },
   4472          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F58_P_3) },
   4473          1.1  christos   },
   4474          1.1  christos 
   4475          1.1  christos   /* PREFIX_VEX_0F59 */
   4476          1.1  christos   {
   4477          1.1  christos     { VEX_W_TABLE (VEX_W_0F59_P_0) },
   4478          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F59_P_1) },
   4479          1.1  christos     { VEX_W_TABLE (VEX_W_0F59_P_2) },
   4480          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F59_P_3) },
   4481          1.1  christos   },
   4482          1.1  christos 
   4483          1.1  christos   /* PREFIX_VEX_0F5A */
   4484          1.1  christos   {
   4485          1.1  christos     { VEX_W_TABLE (VEX_W_0F5A_P_0) },
   4486          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5A_P_1) },
   4487          1.1  christos     { "vcvtpd2ps%XY", { XMM, EXx } },
   4488          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5A_P_3) },
   4489          1.1  christos   },
   4490          1.1  christos 
   4491          1.1  christos   /* PREFIX_VEX_0F5B */
   4492          1.1  christos   {
   4493          1.1  christos     { VEX_W_TABLE (VEX_W_0F5B_P_0) },
   4494          1.1  christos     { VEX_W_TABLE (VEX_W_0F5B_P_1) },
   4495          1.1  christos     { VEX_W_TABLE (VEX_W_0F5B_P_2) },
   4496          1.1  christos   },
   4497          1.1  christos 
   4498          1.1  christos   /* PREFIX_VEX_0F5C */
   4499          1.1  christos   {
   4500          1.1  christos     { VEX_W_TABLE (VEX_W_0F5C_P_0) },
   4501          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5C_P_1) },
   4502          1.1  christos     { VEX_W_TABLE (VEX_W_0F5C_P_2) },
   4503          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5C_P_3) },
   4504          1.1  christos   },
   4505          1.1  christos 
   4506          1.1  christos   /* PREFIX_VEX_0F5D */
   4507          1.1  christos   {
   4508          1.1  christos     { VEX_W_TABLE (VEX_W_0F5D_P_0) },
   4509          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5D_P_1) },
   4510          1.1  christos     { VEX_W_TABLE (VEX_W_0F5D_P_2) },
   4511          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5D_P_3) },
   4512          1.1  christos   },
   4513          1.1  christos 
   4514          1.1  christos   /* PREFIX_VEX_0F5E */
   4515          1.1  christos   {
   4516          1.1  christos     { VEX_W_TABLE (VEX_W_0F5E_P_0) },
   4517          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5E_P_1) },
   4518          1.1  christos     { VEX_W_TABLE (VEX_W_0F5E_P_2) },
   4519          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5E_P_3) },
   4520          1.1  christos   },
   4521          1.1  christos 
   4522          1.1  christos   /* PREFIX_VEX_0F5F */
   4523          1.1  christos   {
   4524          1.1  christos     { VEX_W_TABLE (VEX_W_0F5F_P_0) },
   4525          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5F_P_1) },
   4526          1.1  christos     { VEX_W_TABLE (VEX_W_0F5F_P_2) },
   4527          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F5F_P_3) },
   4528          1.1  christos   },
   4529          1.1  christos 
   4530          1.1  christos   /* PREFIX_VEX_0F60 */
   4531          1.1  christos   {
   4532          1.1  christos     { Bad_Opcode },
   4533          1.1  christos     { Bad_Opcode },
   4534  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F60_P_2) },
   4535          1.1  christos   },
   4536          1.1  christos 
   4537          1.1  christos   /* PREFIX_VEX_0F61 */
   4538          1.1  christos   {
   4539          1.1  christos     { Bad_Opcode },
   4540          1.1  christos     { Bad_Opcode },
   4541  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F61_P_2) },
   4542          1.1  christos   },
   4543          1.1  christos 
   4544          1.1  christos   /* PREFIX_VEX_0F62 */
   4545          1.1  christos   {
   4546          1.1  christos     { Bad_Opcode },
   4547          1.1  christos     { Bad_Opcode },
   4548  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F62_P_2) },
   4549          1.1  christos   },
   4550          1.1  christos 
   4551          1.1  christos   /* PREFIX_VEX_0F63 */
   4552          1.1  christos   {
   4553          1.1  christos     { Bad_Opcode },
   4554          1.1  christos     { Bad_Opcode },
   4555  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F63_P_2) },
   4556          1.1  christos   },
   4557          1.1  christos 
   4558          1.1  christos   /* PREFIX_VEX_0F64 */
   4559          1.1  christos   {
   4560          1.1  christos     { Bad_Opcode },
   4561          1.1  christos     { Bad_Opcode },
   4562  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F64_P_2) },
   4563          1.1  christos   },
   4564          1.1  christos 
   4565          1.1  christos   /* PREFIX_VEX_0F65 */
   4566          1.1  christos   {
   4567          1.1  christos     { Bad_Opcode },
   4568          1.1  christos     { Bad_Opcode },
   4569  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F65_P_2) },
   4570          1.1  christos   },
   4571          1.1  christos 
   4572          1.1  christos   /* PREFIX_VEX_0F66 */
   4573          1.1  christos   {
   4574          1.1  christos     { Bad_Opcode },
   4575          1.1  christos     { Bad_Opcode },
   4576  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F66_P_2) },
   4577          1.1  christos   },
   4578          1.1  christos 
   4579          1.1  christos   /* PREFIX_VEX_0F67 */
   4580          1.1  christos   {
   4581          1.1  christos     { Bad_Opcode },
   4582          1.1  christos     { Bad_Opcode },
   4583  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F67_P_2) },
   4584          1.1  christos   },
   4585          1.1  christos 
   4586          1.1  christos   /* PREFIX_VEX_0F68 */
   4587          1.1  christos   {
   4588          1.1  christos     { Bad_Opcode },
   4589          1.1  christos     { Bad_Opcode },
   4590  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F68_P_2) },
   4591          1.1  christos   },
   4592          1.1  christos 
   4593          1.1  christos   /* PREFIX_VEX_0F69 */
   4594          1.1  christos   {
   4595          1.1  christos     { Bad_Opcode },
   4596          1.1  christos     { Bad_Opcode },
   4597  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F69_P_2) },
   4598          1.1  christos   },
   4599          1.1  christos 
   4600          1.1  christos   /* PREFIX_VEX_0F6A */
   4601          1.1  christos   {
   4602          1.1  christos     { Bad_Opcode },
   4603          1.1  christos     { Bad_Opcode },
   4604  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F6A_P_2) },
   4605          1.1  christos   },
   4606          1.1  christos 
   4607          1.1  christos   /* PREFIX_VEX_0F6B */
   4608          1.1  christos   {
   4609          1.1  christos     { Bad_Opcode },
   4610          1.1  christos     { Bad_Opcode },
   4611  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F6B_P_2) },
   4612          1.1  christos   },
   4613          1.1  christos 
   4614          1.1  christos   /* PREFIX_VEX_0F6C */
   4615          1.1  christos   {
   4616          1.1  christos     { Bad_Opcode },
   4617          1.1  christos     { Bad_Opcode },
   4618  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F6C_P_2) },
   4619          1.1  christos   },
   4620          1.1  christos 
   4621          1.1  christos   /* PREFIX_VEX_0F6D */
   4622          1.1  christos   {
   4623          1.1  christos     { Bad_Opcode },
   4624          1.1  christos     { Bad_Opcode },
   4625  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F6D_P_2) },
   4626          1.1  christos   },
   4627          1.1  christos 
   4628          1.1  christos   /* PREFIX_VEX_0F6E */
   4629          1.1  christos   {
   4630          1.1  christos     { Bad_Opcode },
   4631          1.1  christos     { Bad_Opcode },
   4632          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F6E_P_2) },
   4633          1.1  christos   },
   4634          1.1  christos 
   4635          1.1  christos   /* PREFIX_VEX_0F6F */
   4636          1.1  christos   {
   4637          1.1  christos     { Bad_Opcode },
   4638          1.1  christos     { VEX_W_TABLE (VEX_W_0F6F_P_1) },
   4639          1.1  christos     { VEX_W_TABLE (VEX_W_0F6F_P_2) },
   4640          1.1  christos   },
   4641          1.1  christos 
   4642          1.1  christos   /* PREFIX_VEX_0F70 */
   4643          1.1  christos   {
   4644          1.1  christos     { Bad_Opcode },
   4645  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F70_P_1) },
   4646  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F70_P_2) },
   4647  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F70_P_3) },
   4648          1.1  christos   },
   4649          1.1  christos 
   4650          1.1  christos   /* PREFIX_VEX_0F71_REG_2 */
   4651          1.1  christos   {
   4652          1.1  christos     { Bad_Opcode },
   4653          1.1  christos     { Bad_Opcode },
   4654  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F71_R_2_P_2) },
   4655          1.1  christos   },
   4656          1.1  christos 
   4657          1.1  christos   /* PREFIX_VEX_0F71_REG_4 */
   4658          1.1  christos   {
   4659          1.1  christos     { Bad_Opcode },
   4660          1.1  christos     { Bad_Opcode },
   4661  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F71_R_4_P_2) },
   4662          1.1  christos   },
   4663          1.1  christos 
   4664          1.1  christos   /* PREFIX_VEX_0F71_REG_6 */
   4665          1.1  christos   {
   4666          1.1  christos     { Bad_Opcode },
   4667          1.1  christos     { Bad_Opcode },
   4668  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F71_R_6_P_2) },
   4669          1.1  christos   },
   4670          1.1  christos 
   4671          1.1  christos   /* PREFIX_VEX_0F72_REG_2 */
   4672          1.1  christos   {
   4673          1.1  christos     { Bad_Opcode },
   4674          1.1  christos     { Bad_Opcode },
   4675  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F72_R_2_P_2) },
   4676          1.1  christos   },
   4677          1.1  christos 
   4678          1.1  christos   /* PREFIX_VEX_0F72_REG_4 */
   4679          1.1  christos   {
   4680          1.1  christos     { Bad_Opcode },
   4681          1.1  christos     { Bad_Opcode },
   4682  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F72_R_4_P_2) },
   4683          1.1  christos   },
   4684          1.1  christos 
   4685          1.1  christos   /* PREFIX_VEX_0F72_REG_6 */
   4686          1.1  christos   {
   4687          1.1  christos     { Bad_Opcode },
   4688          1.1  christos     { Bad_Opcode },
   4689  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F72_R_6_P_2) },
   4690          1.1  christos   },
   4691          1.1  christos 
   4692          1.1  christos   /* PREFIX_VEX_0F73_REG_2 */
   4693          1.1  christos   {
   4694          1.1  christos     { Bad_Opcode },
   4695          1.1  christos     { Bad_Opcode },
   4696  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F73_R_2_P_2) },
   4697          1.1  christos   },
   4698          1.1  christos 
   4699          1.1  christos   /* PREFIX_VEX_0F73_REG_3 */
   4700          1.1  christos   {
   4701          1.1  christos     { Bad_Opcode },
   4702          1.1  christos     { Bad_Opcode },
   4703  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F73_R_3_P_2) },
   4704          1.1  christos   },
   4705          1.1  christos 
   4706          1.1  christos   /* PREFIX_VEX_0F73_REG_6 */
   4707          1.1  christos   {
   4708          1.1  christos     { Bad_Opcode },
   4709          1.1  christos     { Bad_Opcode },
   4710  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F73_R_6_P_2) },
   4711          1.1  christos   },
   4712          1.1  christos 
   4713          1.1  christos   /* PREFIX_VEX_0F73_REG_7 */
   4714          1.1  christos   {
   4715          1.1  christos     { Bad_Opcode },
   4716          1.1  christos     { Bad_Opcode },
   4717  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F73_R_7_P_2) },
   4718          1.1  christos   },
   4719          1.1  christos 
   4720          1.1  christos   /* PREFIX_VEX_0F74 */
   4721          1.1  christos   {
   4722          1.1  christos     { Bad_Opcode },
   4723          1.1  christos     { Bad_Opcode },
   4724  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F74_P_2) },
   4725          1.1  christos   },
   4726          1.1  christos 
   4727          1.1  christos   /* PREFIX_VEX_0F75 */
   4728          1.1  christos   {
   4729          1.1  christos     { Bad_Opcode },
   4730          1.1  christos     { Bad_Opcode },
   4731  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F75_P_2) },
   4732          1.1  christos   },
   4733          1.1  christos 
   4734          1.1  christos   /* PREFIX_VEX_0F76 */
   4735          1.1  christos   {
   4736          1.1  christos     { Bad_Opcode },
   4737          1.1  christos     { Bad_Opcode },
   4738  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F76_P_2) },
   4739          1.1  christos   },
   4740          1.1  christos 
   4741          1.1  christos   /* PREFIX_VEX_0F77 */
   4742          1.1  christos   {
   4743          1.1  christos     { VEX_W_TABLE (VEX_W_0F77_P_0) },
   4744          1.1  christos   },
   4745          1.1  christos 
   4746          1.1  christos   /* PREFIX_VEX_0F7C */
   4747          1.1  christos   {
   4748          1.1  christos     { Bad_Opcode },
   4749          1.1  christos     { Bad_Opcode },
   4750          1.1  christos     { VEX_W_TABLE (VEX_W_0F7C_P_2) },
   4751          1.1  christos     { VEX_W_TABLE (VEX_W_0F7C_P_3) },
   4752          1.1  christos   },
   4753          1.1  christos 
   4754          1.1  christos   /* PREFIX_VEX_0F7D */
   4755          1.1  christos   {
   4756          1.1  christos     { Bad_Opcode },
   4757          1.1  christos     { Bad_Opcode },
   4758          1.1  christos     { VEX_W_TABLE (VEX_W_0F7D_P_2) },
   4759          1.1  christos     { VEX_W_TABLE (VEX_W_0F7D_P_3) },
   4760          1.1  christos   },
   4761          1.1  christos 
   4762          1.1  christos   /* PREFIX_VEX_0F7E */
   4763          1.1  christos   {
   4764          1.1  christos     { Bad_Opcode },
   4765          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) },
   4766          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F7E_P_2) },
   4767          1.1  christos   },
   4768          1.1  christos 
   4769          1.1  christos   /* PREFIX_VEX_0F7F */
   4770          1.1  christos   {
   4771          1.1  christos     { Bad_Opcode },
   4772          1.1  christos     { VEX_W_TABLE (VEX_W_0F7F_P_1) },
   4773          1.1  christos     { VEX_W_TABLE (VEX_W_0F7F_P_2) },
   4774          1.1  christos   },
   4775          1.1  christos 
   4776  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F90 */
   4777  1.1.1.1.8.1       tls   {
   4778  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F90_P_0) },
   4779  1.1.1.1.8.1       tls   },
   4780  1.1.1.1.8.1       tls 
   4781  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F91 */
   4782  1.1.1.1.8.1       tls   {
   4783  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F91_P_0) },
   4784  1.1.1.1.8.1       tls   },
   4785  1.1.1.1.8.1       tls 
   4786  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F92 */
   4787  1.1.1.1.8.1       tls   {
   4788  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F92_P_0) },
   4789  1.1.1.1.8.1       tls   },
   4790  1.1.1.1.8.1       tls 
   4791  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F93 */
   4792  1.1.1.1.8.1       tls   {
   4793  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F93_P_0) },
   4794  1.1.1.1.8.1       tls   },
   4795  1.1.1.1.8.1       tls 
   4796  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F98 */
   4797  1.1.1.1.8.1       tls   {
   4798  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F98_P_0) },
   4799  1.1.1.1.8.1       tls   },
   4800  1.1.1.1.8.1       tls 
   4801          1.1  christos   /* PREFIX_VEX_0FC2 */
   4802          1.1  christos   {
   4803          1.1  christos     { VEX_W_TABLE (VEX_W_0FC2_P_0) },
   4804          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FC2_P_1) },
   4805          1.1  christos     { VEX_W_TABLE (VEX_W_0FC2_P_2) },
   4806          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FC2_P_3) },
   4807          1.1  christos   },
   4808          1.1  christos 
   4809          1.1  christos   /* PREFIX_VEX_0FC4 */
   4810          1.1  christos   {
   4811          1.1  christos     { Bad_Opcode },
   4812          1.1  christos     { Bad_Opcode },
   4813          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FC4_P_2) },
   4814          1.1  christos   },
   4815          1.1  christos 
   4816          1.1  christos   /* PREFIX_VEX_0FC5 */
   4817          1.1  christos   {
   4818          1.1  christos     { Bad_Opcode },
   4819          1.1  christos     { Bad_Opcode },
   4820          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FC5_P_2) },
   4821          1.1  christos   },
   4822          1.1  christos 
   4823          1.1  christos   /* PREFIX_VEX_0FD0 */
   4824          1.1  christos   {
   4825          1.1  christos     { Bad_Opcode },
   4826          1.1  christos     { Bad_Opcode },
   4827          1.1  christos     { VEX_W_TABLE (VEX_W_0FD0_P_2) },
   4828          1.1  christos     { VEX_W_TABLE (VEX_W_0FD0_P_3) },
   4829          1.1  christos   },
   4830          1.1  christos 
   4831          1.1  christos   /* PREFIX_VEX_0FD1 */
   4832          1.1  christos   {
   4833          1.1  christos     { Bad_Opcode },
   4834          1.1  christos     { Bad_Opcode },
   4835  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD1_P_2) },
   4836          1.1  christos   },
   4837          1.1  christos 
   4838          1.1  christos   /* PREFIX_VEX_0FD2 */
   4839          1.1  christos   {
   4840          1.1  christos     { Bad_Opcode },
   4841          1.1  christos     { Bad_Opcode },
   4842  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD2_P_2) },
   4843          1.1  christos   },
   4844          1.1  christos 
   4845          1.1  christos   /* PREFIX_VEX_0FD3 */
   4846          1.1  christos   {
   4847          1.1  christos     { Bad_Opcode },
   4848          1.1  christos     { Bad_Opcode },
   4849  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD3_P_2) },
   4850          1.1  christos   },
   4851          1.1  christos 
   4852          1.1  christos   /* PREFIX_VEX_0FD4 */
   4853          1.1  christos   {
   4854          1.1  christos     { Bad_Opcode },
   4855          1.1  christos     { Bad_Opcode },
   4856  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD4_P_2) },
   4857          1.1  christos   },
   4858          1.1  christos 
   4859          1.1  christos   /* PREFIX_VEX_0FD5 */
   4860          1.1  christos   {
   4861          1.1  christos     { Bad_Opcode },
   4862          1.1  christos     { Bad_Opcode },
   4863  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD5_P_2) },
   4864          1.1  christos   },
   4865          1.1  christos 
   4866          1.1  christos   /* PREFIX_VEX_0FD6 */
   4867          1.1  christos   {
   4868          1.1  christos     { Bad_Opcode },
   4869          1.1  christos     { Bad_Opcode },
   4870          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FD6_P_2) },
   4871          1.1  christos   },
   4872          1.1  christos 
   4873          1.1  christos   /* PREFIX_VEX_0FD7 */
   4874          1.1  christos   {
   4875          1.1  christos     { Bad_Opcode },
   4876          1.1  christos     { Bad_Opcode },
   4877          1.1  christos     { MOD_TABLE (MOD_VEX_0FD7_PREFIX_2) },
   4878          1.1  christos   },
   4879          1.1  christos 
   4880          1.1  christos   /* PREFIX_VEX_0FD8 */
   4881          1.1  christos   {
   4882          1.1  christos     { Bad_Opcode },
   4883          1.1  christos     { Bad_Opcode },
   4884  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD8_P_2) },
   4885          1.1  christos   },
   4886          1.1  christos 
   4887          1.1  christos   /* PREFIX_VEX_0FD9 */
   4888          1.1  christos   {
   4889          1.1  christos     { Bad_Opcode },
   4890          1.1  christos     { Bad_Opcode },
   4891  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD9_P_2) },
   4892          1.1  christos   },
   4893          1.1  christos 
   4894          1.1  christos   /* PREFIX_VEX_0FDA */
   4895          1.1  christos   {
   4896          1.1  christos     { Bad_Opcode },
   4897          1.1  christos     { Bad_Opcode },
   4898  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FDA_P_2) },
   4899          1.1  christos   },
   4900          1.1  christos 
   4901          1.1  christos   /* PREFIX_VEX_0FDB */
   4902          1.1  christos   {
   4903          1.1  christos     { Bad_Opcode },
   4904          1.1  christos     { Bad_Opcode },
   4905  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FDB_P_2) },
   4906          1.1  christos   },
   4907          1.1  christos 
   4908          1.1  christos   /* PREFIX_VEX_0FDC */
   4909          1.1  christos   {
   4910          1.1  christos     { Bad_Opcode },
   4911          1.1  christos     { Bad_Opcode },
   4912  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FDC_P_2) },
   4913          1.1  christos   },
   4914          1.1  christos 
   4915          1.1  christos   /* PREFIX_VEX_0FDD */
   4916          1.1  christos   {
   4917          1.1  christos     { Bad_Opcode },
   4918          1.1  christos     { Bad_Opcode },
   4919  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FDD_P_2) },
   4920          1.1  christos   },
   4921          1.1  christos 
   4922          1.1  christos   /* PREFIX_VEX_0FDE */
   4923          1.1  christos   {
   4924          1.1  christos     { Bad_Opcode },
   4925          1.1  christos     { Bad_Opcode },
   4926  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FDE_P_2) },
   4927          1.1  christos   },
   4928          1.1  christos 
   4929          1.1  christos   /* PREFIX_VEX_0FDF */
   4930          1.1  christos   {
   4931          1.1  christos     { Bad_Opcode },
   4932          1.1  christos     { Bad_Opcode },
   4933  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FDF_P_2) },
   4934          1.1  christos   },
   4935          1.1  christos 
   4936          1.1  christos   /* PREFIX_VEX_0FE0 */
   4937          1.1  christos   {
   4938          1.1  christos     { Bad_Opcode },
   4939          1.1  christos     { Bad_Opcode },
   4940  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE0_P_2) },
   4941          1.1  christos   },
   4942          1.1  christos 
   4943          1.1  christos   /* PREFIX_VEX_0FE1 */
   4944          1.1  christos   {
   4945          1.1  christos     { Bad_Opcode },
   4946          1.1  christos     { Bad_Opcode },
   4947  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE1_P_2) },
   4948          1.1  christos   },
   4949          1.1  christos 
   4950          1.1  christos   /* PREFIX_VEX_0FE2 */
   4951          1.1  christos   {
   4952          1.1  christos     { Bad_Opcode },
   4953          1.1  christos     { Bad_Opcode },
   4954  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE2_P_2) },
   4955          1.1  christos   },
   4956          1.1  christos 
   4957          1.1  christos   /* PREFIX_VEX_0FE3 */
   4958          1.1  christos   {
   4959          1.1  christos     { Bad_Opcode },
   4960          1.1  christos     { Bad_Opcode },
   4961  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE3_P_2) },
   4962          1.1  christos   },
   4963          1.1  christos 
   4964          1.1  christos   /* PREFIX_VEX_0FE4 */
   4965          1.1  christos   {
   4966          1.1  christos     { Bad_Opcode },
   4967          1.1  christos     { Bad_Opcode },
   4968  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE4_P_2) },
   4969          1.1  christos   },
   4970          1.1  christos 
   4971          1.1  christos   /* PREFIX_VEX_0FE5 */
   4972          1.1  christos   {
   4973          1.1  christos     { Bad_Opcode },
   4974          1.1  christos     { Bad_Opcode },
   4975  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE5_P_2) },
   4976          1.1  christos   },
   4977          1.1  christos 
   4978          1.1  christos   /* PREFIX_VEX_0FE6 */
   4979          1.1  christos   {
   4980          1.1  christos     { Bad_Opcode },
   4981          1.1  christos     { VEX_W_TABLE (VEX_W_0FE6_P_1) },
   4982          1.1  christos     { VEX_W_TABLE (VEX_W_0FE6_P_2) },
   4983          1.1  christos     { VEX_W_TABLE (VEX_W_0FE6_P_3) },
   4984          1.1  christos   },
   4985          1.1  christos 
   4986          1.1  christos   /* PREFIX_VEX_0FE7 */
   4987          1.1  christos   {
   4988          1.1  christos     { Bad_Opcode },
   4989          1.1  christos     { Bad_Opcode },
   4990          1.1  christos     { MOD_TABLE (MOD_VEX_0FE7_PREFIX_2) },
   4991          1.1  christos   },
   4992          1.1  christos 
   4993          1.1  christos   /* PREFIX_VEX_0FE8 */
   4994          1.1  christos   {
   4995          1.1  christos     { Bad_Opcode },
   4996          1.1  christos     { Bad_Opcode },
   4997  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE8_P_2) },
   4998          1.1  christos   },
   4999          1.1  christos 
   5000          1.1  christos   /* PREFIX_VEX_0FE9 */
   5001          1.1  christos   {
   5002          1.1  christos     { Bad_Opcode },
   5003          1.1  christos     { Bad_Opcode },
   5004  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FE9_P_2) },
   5005          1.1  christos   },
   5006          1.1  christos 
   5007          1.1  christos   /* PREFIX_VEX_0FEA */
   5008          1.1  christos   {
   5009          1.1  christos     { Bad_Opcode },
   5010          1.1  christos     { Bad_Opcode },
   5011  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FEA_P_2) },
   5012          1.1  christos   },
   5013          1.1  christos 
   5014          1.1  christos   /* PREFIX_VEX_0FEB */
   5015          1.1  christos   {
   5016          1.1  christos     { Bad_Opcode },
   5017          1.1  christos     { Bad_Opcode },
   5018  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FEB_P_2) },
   5019          1.1  christos   },
   5020          1.1  christos 
   5021          1.1  christos   /* PREFIX_VEX_0FEC */
   5022          1.1  christos   {
   5023          1.1  christos     { Bad_Opcode },
   5024          1.1  christos     { Bad_Opcode },
   5025  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FEC_P_2) },
   5026          1.1  christos   },
   5027          1.1  christos 
   5028          1.1  christos   /* PREFIX_VEX_0FED */
   5029          1.1  christos   {
   5030          1.1  christos     { Bad_Opcode },
   5031          1.1  christos     { Bad_Opcode },
   5032  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FED_P_2) },
   5033          1.1  christos   },
   5034          1.1  christos 
   5035          1.1  christos   /* PREFIX_VEX_0FEE */
   5036          1.1  christos   {
   5037          1.1  christos     { Bad_Opcode },
   5038          1.1  christos     { Bad_Opcode },
   5039  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FEE_P_2) },
   5040          1.1  christos   },
   5041          1.1  christos 
   5042          1.1  christos   /* PREFIX_VEX_0FEF */
   5043          1.1  christos   {
   5044          1.1  christos     { Bad_Opcode },
   5045          1.1  christos     { Bad_Opcode },
   5046  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FEF_P_2) },
   5047          1.1  christos   },
   5048          1.1  christos 
   5049          1.1  christos   /* PREFIX_VEX_0FF0 */
   5050          1.1  christos   {
   5051          1.1  christos     { Bad_Opcode },
   5052          1.1  christos     { Bad_Opcode },
   5053          1.1  christos     { Bad_Opcode },
   5054          1.1  christos     { MOD_TABLE (MOD_VEX_0FF0_PREFIX_3) },
   5055          1.1  christos   },
   5056          1.1  christos 
   5057          1.1  christos   /* PREFIX_VEX_0FF1 */
   5058          1.1  christos   {
   5059          1.1  christos     { Bad_Opcode },
   5060          1.1  christos     { Bad_Opcode },
   5061  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF1_P_2) },
   5062          1.1  christos   },
   5063          1.1  christos 
   5064          1.1  christos   /* PREFIX_VEX_0FF2 */
   5065          1.1  christos   {
   5066          1.1  christos     { Bad_Opcode },
   5067          1.1  christos     { Bad_Opcode },
   5068  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF2_P_2) },
   5069          1.1  christos   },
   5070          1.1  christos 
   5071          1.1  christos   /* PREFIX_VEX_0FF3 */
   5072          1.1  christos   {
   5073          1.1  christos     { Bad_Opcode },
   5074          1.1  christos     { Bad_Opcode },
   5075  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF3_P_2) },
   5076          1.1  christos   },
   5077          1.1  christos 
   5078          1.1  christos   /* PREFIX_VEX_0FF4 */
   5079          1.1  christos   {
   5080          1.1  christos     { Bad_Opcode },
   5081          1.1  christos     { Bad_Opcode },
   5082  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF4_P_2) },
   5083          1.1  christos   },
   5084          1.1  christos 
   5085          1.1  christos   /* PREFIX_VEX_0FF5 */
   5086          1.1  christos   {
   5087          1.1  christos     { Bad_Opcode },
   5088          1.1  christos     { Bad_Opcode },
   5089  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF5_P_2) },
   5090          1.1  christos   },
   5091          1.1  christos 
   5092          1.1  christos   /* PREFIX_VEX_0FF6 */
   5093          1.1  christos   {
   5094          1.1  christos     { Bad_Opcode },
   5095          1.1  christos     { Bad_Opcode },
   5096  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF6_P_2) },
   5097          1.1  christos   },
   5098          1.1  christos 
   5099          1.1  christos   /* PREFIX_VEX_0FF7 */
   5100          1.1  christos   {
   5101          1.1  christos     { Bad_Opcode },
   5102          1.1  christos     { Bad_Opcode },
   5103          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FF7_P_2) },
   5104          1.1  christos   },
   5105          1.1  christos 
   5106          1.1  christos   /* PREFIX_VEX_0FF8 */
   5107          1.1  christos   {
   5108          1.1  christos     { Bad_Opcode },
   5109          1.1  christos     { Bad_Opcode },
   5110  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF8_P_2) },
   5111          1.1  christos   },
   5112          1.1  christos 
   5113          1.1  christos   /* PREFIX_VEX_0FF9 */
   5114          1.1  christos   {
   5115          1.1  christos     { Bad_Opcode },
   5116          1.1  christos     { Bad_Opcode },
   5117  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF9_P_2) },
   5118          1.1  christos   },
   5119          1.1  christos 
   5120          1.1  christos   /* PREFIX_VEX_0FFA */
   5121          1.1  christos   {
   5122          1.1  christos     { Bad_Opcode },
   5123          1.1  christos     { Bad_Opcode },
   5124  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FFA_P_2) },
   5125          1.1  christos   },
   5126          1.1  christos 
   5127          1.1  christos   /* PREFIX_VEX_0FFB */
   5128          1.1  christos   {
   5129          1.1  christos     { Bad_Opcode },
   5130          1.1  christos     { Bad_Opcode },
   5131  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FFB_P_2) },
   5132          1.1  christos   },
   5133          1.1  christos 
   5134          1.1  christos   /* PREFIX_VEX_0FFC */
   5135          1.1  christos   {
   5136          1.1  christos     { Bad_Opcode },
   5137          1.1  christos     { Bad_Opcode },
   5138  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FFC_P_2) },
   5139          1.1  christos   },
   5140          1.1  christos 
   5141          1.1  christos   /* PREFIX_VEX_0FFD */
   5142          1.1  christos   {
   5143          1.1  christos     { Bad_Opcode },
   5144          1.1  christos     { Bad_Opcode },
   5145  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FFD_P_2) },
   5146          1.1  christos   },
   5147          1.1  christos 
   5148          1.1  christos   /* PREFIX_VEX_0FFE */
   5149          1.1  christos   {
   5150          1.1  christos     { Bad_Opcode },
   5151          1.1  christos     { Bad_Opcode },
   5152  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FFE_P_2) },
   5153          1.1  christos   },
   5154          1.1  christos 
   5155          1.1  christos   /* PREFIX_VEX_0F3800 */
   5156          1.1  christos   {
   5157          1.1  christos     { Bad_Opcode },
   5158          1.1  christos     { Bad_Opcode },
   5159  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3800_P_2) },
   5160          1.1  christos   },
   5161          1.1  christos 
   5162          1.1  christos   /* PREFIX_VEX_0F3801 */
   5163          1.1  christos   {
   5164          1.1  christos     { Bad_Opcode },
   5165          1.1  christos     { Bad_Opcode },
   5166  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3801_P_2) },
   5167          1.1  christos   },
   5168          1.1  christos 
   5169          1.1  christos   /* PREFIX_VEX_0F3802 */
   5170          1.1  christos   {
   5171          1.1  christos     { Bad_Opcode },
   5172          1.1  christos     { Bad_Opcode },
   5173  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3802_P_2) },
   5174          1.1  christos   },
   5175          1.1  christos 
   5176          1.1  christos   /* PREFIX_VEX_0F3803 */
   5177          1.1  christos   {
   5178          1.1  christos     { Bad_Opcode },
   5179          1.1  christos     { Bad_Opcode },
   5180  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3803_P_2) },
   5181          1.1  christos   },
   5182          1.1  christos 
   5183          1.1  christos   /* PREFIX_VEX_0F3804 */
   5184          1.1  christos   {
   5185          1.1  christos     { Bad_Opcode },
   5186          1.1  christos     { Bad_Opcode },
   5187  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3804_P_2) },
   5188          1.1  christos   },
   5189          1.1  christos 
   5190          1.1  christos   /* PREFIX_VEX_0F3805 */
   5191          1.1  christos   {
   5192          1.1  christos     { Bad_Opcode },
   5193          1.1  christos     { Bad_Opcode },
   5194  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3805_P_2) },
   5195          1.1  christos   },
   5196          1.1  christos 
   5197          1.1  christos   /* PREFIX_VEX_0F3806 */
   5198          1.1  christos   {
   5199          1.1  christos     { Bad_Opcode },
   5200          1.1  christos     { Bad_Opcode },
   5201  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3806_P_2) },
   5202          1.1  christos   },
   5203          1.1  christos 
   5204          1.1  christos   /* PREFIX_VEX_0F3807 */
   5205          1.1  christos   {
   5206          1.1  christos     { Bad_Opcode },
   5207          1.1  christos     { Bad_Opcode },
   5208  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3807_P_2) },
   5209          1.1  christos   },
   5210          1.1  christos 
   5211          1.1  christos   /* PREFIX_VEX_0F3808 */
   5212          1.1  christos   {
   5213          1.1  christos     { Bad_Opcode },
   5214          1.1  christos     { Bad_Opcode },
   5215  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3808_P_2) },
   5216          1.1  christos   },
   5217          1.1  christos 
   5218          1.1  christos   /* PREFIX_VEX_0F3809 */
   5219          1.1  christos   {
   5220          1.1  christos     { Bad_Opcode },
   5221          1.1  christos     { Bad_Opcode },
   5222  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3809_P_2) },
   5223          1.1  christos   },
   5224          1.1  christos 
   5225          1.1  christos   /* PREFIX_VEX_0F380A */
   5226          1.1  christos   {
   5227          1.1  christos     { Bad_Opcode },
   5228          1.1  christos     { Bad_Opcode },
   5229  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F380A_P_2) },
   5230          1.1  christos   },
   5231          1.1  christos 
   5232          1.1  christos   /* PREFIX_VEX_0F380B */
   5233          1.1  christos   {
   5234          1.1  christos     { Bad_Opcode },
   5235          1.1  christos     { Bad_Opcode },
   5236  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F380B_P_2) },
   5237          1.1  christos   },
   5238          1.1  christos 
   5239          1.1  christos   /* PREFIX_VEX_0F380C */
   5240          1.1  christos   {
   5241          1.1  christos     { Bad_Opcode },
   5242          1.1  christos     { Bad_Opcode },
   5243          1.1  christos     { VEX_W_TABLE (VEX_W_0F380C_P_2) },
   5244          1.1  christos   },
   5245          1.1  christos 
   5246          1.1  christos   /* PREFIX_VEX_0F380D */
   5247          1.1  christos   {
   5248          1.1  christos     { Bad_Opcode },
   5249          1.1  christos     { Bad_Opcode },
   5250          1.1  christos     { VEX_W_TABLE (VEX_W_0F380D_P_2) },
   5251          1.1  christos   },
   5252          1.1  christos 
   5253          1.1  christos   /* PREFIX_VEX_0F380E */
   5254          1.1  christos   {
   5255          1.1  christos     { Bad_Opcode },
   5256          1.1  christos     { Bad_Opcode },
   5257          1.1  christos     { VEX_W_TABLE (VEX_W_0F380E_P_2) },
   5258          1.1  christos   },
   5259          1.1  christos 
   5260          1.1  christos   /* PREFIX_VEX_0F380F */
   5261          1.1  christos   {
   5262          1.1  christos     { Bad_Opcode },
   5263          1.1  christos     { Bad_Opcode },
   5264          1.1  christos     { VEX_W_TABLE (VEX_W_0F380F_P_2) },
   5265          1.1  christos   },
   5266          1.1  christos 
   5267          1.1  christos   /* PREFIX_VEX_0F3813 */
   5268          1.1  christos   {
   5269          1.1  christos     { Bad_Opcode },
   5270          1.1  christos     { Bad_Opcode },
   5271          1.1  christos     { "vcvtph2ps", { XM, EXxmmq } },
   5272          1.1  christos   },
   5273          1.1  christos 
   5274  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3816 */
   5275  1.1.1.1.8.1       tls   {
   5276  1.1.1.1.8.1       tls     { Bad_Opcode },
   5277  1.1.1.1.8.1       tls     { Bad_Opcode },
   5278  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3816_P_2) },
   5279  1.1.1.1.8.1       tls   },
   5280  1.1.1.1.8.1       tls 
   5281          1.1  christos   /* PREFIX_VEX_0F3817 */
   5282          1.1  christos   {
   5283          1.1  christos     { Bad_Opcode },
   5284          1.1  christos     { Bad_Opcode },
   5285          1.1  christos     { VEX_W_TABLE (VEX_W_0F3817_P_2) },
   5286          1.1  christos   },
   5287          1.1  christos 
   5288          1.1  christos   /* PREFIX_VEX_0F3818 */
   5289          1.1  christos   {
   5290          1.1  christos     { Bad_Opcode },
   5291          1.1  christos     { Bad_Opcode },
   5292  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3818_P_2) },
   5293          1.1  christos   },
   5294          1.1  christos 
   5295          1.1  christos   /* PREFIX_VEX_0F3819 */
   5296          1.1  christos   {
   5297          1.1  christos     { Bad_Opcode },
   5298          1.1  christos     { Bad_Opcode },
   5299  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3819_P_2) },
   5300          1.1  christos   },
   5301          1.1  christos 
   5302          1.1  christos   /* PREFIX_VEX_0F381A */
   5303          1.1  christos   {
   5304          1.1  christos     { Bad_Opcode },
   5305          1.1  christos     { Bad_Opcode },
   5306          1.1  christos     { MOD_TABLE (MOD_VEX_0F381A_PREFIX_2) },
   5307          1.1  christos   },
   5308          1.1  christos 
   5309          1.1  christos   /* PREFIX_VEX_0F381C */
   5310          1.1  christos   {
   5311          1.1  christos     { Bad_Opcode },
   5312          1.1  christos     { Bad_Opcode },
   5313  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F381C_P_2) },
   5314          1.1  christos   },
   5315          1.1  christos 
   5316          1.1  christos   /* PREFIX_VEX_0F381D */
   5317          1.1  christos   {
   5318          1.1  christos     { Bad_Opcode },
   5319          1.1  christos     { Bad_Opcode },
   5320  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F381D_P_2) },
   5321          1.1  christos   },
   5322          1.1  christos 
   5323          1.1  christos   /* PREFIX_VEX_0F381E */
   5324          1.1  christos   {
   5325          1.1  christos     { Bad_Opcode },
   5326          1.1  christos     { Bad_Opcode },
   5327  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F381E_P_2) },
   5328          1.1  christos   },
   5329          1.1  christos 
   5330          1.1  christos   /* PREFIX_VEX_0F3820 */
   5331          1.1  christos   {
   5332          1.1  christos     { Bad_Opcode },
   5333          1.1  christos     { Bad_Opcode },
   5334  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3820_P_2) },
   5335          1.1  christos   },
   5336          1.1  christos 
   5337          1.1  christos   /* PREFIX_VEX_0F3821 */
   5338          1.1  christos   {
   5339          1.1  christos     { Bad_Opcode },
   5340          1.1  christos     { Bad_Opcode },
   5341  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3821_P_2) },
   5342          1.1  christos   },
   5343          1.1  christos 
   5344          1.1  christos   /* PREFIX_VEX_0F3822 */
   5345          1.1  christos   {
   5346          1.1  christos     { Bad_Opcode },
   5347          1.1  christos     { Bad_Opcode },
   5348  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3822_P_2) },
   5349          1.1  christos   },
   5350          1.1  christos 
   5351          1.1  christos   /* PREFIX_VEX_0F3823 */
   5352          1.1  christos   {
   5353          1.1  christos     { Bad_Opcode },
   5354          1.1  christos     { Bad_Opcode },
   5355  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3823_P_2) },
   5356          1.1  christos   },
   5357          1.1  christos 
   5358          1.1  christos   /* PREFIX_VEX_0F3824 */
   5359          1.1  christos   {
   5360          1.1  christos     { Bad_Opcode },
   5361          1.1  christos     { Bad_Opcode },
   5362  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3824_P_2) },
   5363          1.1  christos   },
   5364          1.1  christos 
   5365          1.1  christos   /* PREFIX_VEX_0F3825 */
   5366          1.1  christos   {
   5367          1.1  christos     { Bad_Opcode },
   5368          1.1  christos     { Bad_Opcode },
   5369  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3825_P_2) },
   5370          1.1  christos   },
   5371          1.1  christos 
   5372          1.1  christos   /* PREFIX_VEX_0F3828 */
   5373          1.1  christos   {
   5374          1.1  christos     { Bad_Opcode },
   5375          1.1  christos     { Bad_Opcode },
   5376  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3828_P_2) },
   5377          1.1  christos   },
   5378          1.1  christos 
   5379          1.1  christos   /* PREFIX_VEX_0F3829 */
   5380          1.1  christos   {
   5381          1.1  christos     { Bad_Opcode },
   5382          1.1  christos     { Bad_Opcode },
   5383  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3829_P_2) },
   5384          1.1  christos   },
   5385          1.1  christos 
   5386          1.1  christos   /* PREFIX_VEX_0F382A */
   5387          1.1  christos   {
   5388          1.1  christos     { Bad_Opcode },
   5389          1.1  christos     { Bad_Opcode },
   5390          1.1  christos     { MOD_TABLE (MOD_VEX_0F382A_PREFIX_2) },
   5391          1.1  christos   },
   5392          1.1  christos 
   5393          1.1  christos   /* PREFIX_VEX_0F382B */
   5394          1.1  christos   {
   5395          1.1  christos     { Bad_Opcode },
   5396          1.1  christos     { Bad_Opcode },
   5397  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F382B_P_2) },
   5398          1.1  christos   },
   5399          1.1  christos 
   5400          1.1  christos   /* PREFIX_VEX_0F382C */
   5401          1.1  christos   {
   5402          1.1  christos     { Bad_Opcode },
   5403          1.1  christos     { Bad_Opcode },
   5404          1.1  christos      { MOD_TABLE (MOD_VEX_0F382C_PREFIX_2) },
   5405          1.1  christos   },
   5406          1.1  christos 
   5407          1.1  christos   /* PREFIX_VEX_0F382D */
   5408          1.1  christos   {
   5409          1.1  christos     { Bad_Opcode },
   5410          1.1  christos     { Bad_Opcode },
   5411          1.1  christos      { MOD_TABLE (MOD_VEX_0F382D_PREFIX_2) },
   5412          1.1  christos   },
   5413          1.1  christos 
   5414          1.1  christos   /* PREFIX_VEX_0F382E */
   5415          1.1  christos   {
   5416          1.1  christos     { Bad_Opcode },
   5417          1.1  christos     { Bad_Opcode },
   5418          1.1  christos      { MOD_TABLE (MOD_VEX_0F382E_PREFIX_2) },
   5419          1.1  christos   },
   5420          1.1  christos 
   5421          1.1  christos   /* PREFIX_VEX_0F382F */
   5422          1.1  christos   {
   5423          1.1  christos     { Bad_Opcode },
   5424          1.1  christos     { Bad_Opcode },
   5425          1.1  christos      { MOD_TABLE (MOD_VEX_0F382F_PREFIX_2) },
   5426          1.1  christos   },
   5427          1.1  christos 
   5428          1.1  christos   /* PREFIX_VEX_0F3830 */
   5429          1.1  christos   {
   5430          1.1  christos     { Bad_Opcode },
   5431          1.1  christos     { Bad_Opcode },
   5432  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3830_P_2) },
   5433          1.1  christos   },
   5434          1.1  christos 
   5435          1.1  christos   /* PREFIX_VEX_0F3831 */
   5436          1.1  christos   {
   5437          1.1  christos     { Bad_Opcode },
   5438          1.1  christos     { Bad_Opcode },
   5439  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3831_P_2) },
   5440          1.1  christos   },
   5441          1.1  christos 
   5442          1.1  christos   /* PREFIX_VEX_0F3832 */
   5443          1.1  christos   {
   5444          1.1  christos     { Bad_Opcode },
   5445          1.1  christos     { Bad_Opcode },
   5446  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3832_P_2) },
   5447          1.1  christos   },
   5448          1.1  christos 
   5449          1.1  christos   /* PREFIX_VEX_0F3833 */
   5450          1.1  christos   {
   5451          1.1  christos     { Bad_Opcode },
   5452          1.1  christos     { Bad_Opcode },
   5453  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3833_P_2) },
   5454          1.1  christos   },
   5455          1.1  christos 
   5456          1.1  christos   /* PREFIX_VEX_0F3834 */
   5457          1.1  christos   {
   5458          1.1  christos     { Bad_Opcode },
   5459          1.1  christos     { Bad_Opcode },
   5460  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3834_P_2) },
   5461          1.1  christos   },
   5462          1.1  christos 
   5463          1.1  christos   /* PREFIX_VEX_0F3835 */
   5464          1.1  christos   {
   5465          1.1  christos     { Bad_Opcode },
   5466          1.1  christos     { Bad_Opcode },
   5467  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3835_P_2) },
   5468  1.1.1.1.8.1       tls   },
   5469  1.1.1.1.8.1       tls 
   5470  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3836 */
   5471  1.1.1.1.8.1       tls   {
   5472  1.1.1.1.8.1       tls     { Bad_Opcode },
   5473  1.1.1.1.8.1       tls     { Bad_Opcode },
   5474  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3836_P_2) },
   5475          1.1  christos   },
   5476          1.1  christos 
   5477          1.1  christos   /* PREFIX_VEX_0F3837 */
   5478          1.1  christos   {
   5479          1.1  christos     { Bad_Opcode },
   5480          1.1  christos     { Bad_Opcode },
   5481  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3837_P_2) },
   5482          1.1  christos   },
   5483          1.1  christos 
   5484          1.1  christos   /* PREFIX_VEX_0F3838 */
   5485          1.1  christos   {
   5486          1.1  christos     { Bad_Opcode },
   5487          1.1  christos     { Bad_Opcode },
   5488  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3838_P_2) },
   5489          1.1  christos   },
   5490          1.1  christos 
   5491          1.1  christos   /* PREFIX_VEX_0F3839 */
   5492          1.1  christos   {
   5493          1.1  christos     { Bad_Opcode },
   5494          1.1  christos     { Bad_Opcode },
   5495  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3839_P_2) },
   5496          1.1  christos   },
   5497          1.1  christos 
   5498          1.1  christos   /* PREFIX_VEX_0F383A */
   5499          1.1  christos   {
   5500          1.1  christos     { Bad_Opcode },
   5501          1.1  christos     { Bad_Opcode },
   5502  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F383A_P_2) },
   5503          1.1  christos   },
   5504          1.1  christos 
   5505          1.1  christos   /* PREFIX_VEX_0F383B */
   5506          1.1  christos   {
   5507          1.1  christos     { Bad_Opcode },
   5508          1.1  christos     { Bad_Opcode },
   5509  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F383B_P_2) },
   5510          1.1  christos   },
   5511          1.1  christos 
   5512          1.1  christos   /* PREFIX_VEX_0F383C */
   5513          1.1  christos   {
   5514          1.1  christos     { Bad_Opcode },
   5515          1.1  christos     { Bad_Opcode },
   5516  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F383C_P_2) },
   5517          1.1  christos   },
   5518          1.1  christos 
   5519          1.1  christos   /* PREFIX_VEX_0F383D */
   5520          1.1  christos   {
   5521          1.1  christos     { Bad_Opcode },
   5522          1.1  christos     { Bad_Opcode },
   5523  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F383D_P_2) },
   5524          1.1  christos   },
   5525          1.1  christos 
   5526          1.1  christos   /* PREFIX_VEX_0F383E */
   5527          1.1  christos   {
   5528          1.1  christos     { Bad_Opcode },
   5529          1.1  christos     { Bad_Opcode },
   5530  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F383E_P_2) },
   5531          1.1  christos   },
   5532          1.1  christos 
   5533          1.1  christos   /* PREFIX_VEX_0F383F */
   5534          1.1  christos   {
   5535          1.1  christos     { Bad_Opcode },
   5536          1.1  christos     { Bad_Opcode },
   5537  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F383F_P_2) },
   5538          1.1  christos   },
   5539          1.1  christos 
   5540          1.1  christos   /* PREFIX_VEX_0F3840 */
   5541          1.1  christos   {
   5542          1.1  christos     { Bad_Opcode },
   5543          1.1  christos     { Bad_Opcode },
   5544  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3840_P_2) },
   5545          1.1  christos   },
   5546          1.1  christos 
   5547          1.1  christos   /* PREFIX_VEX_0F3841 */
   5548          1.1  christos   {
   5549          1.1  christos     { Bad_Opcode },
   5550          1.1  christos     { Bad_Opcode },
   5551          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3841_P_2) },
   5552          1.1  christos   },
   5553          1.1  christos 
   5554  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3845 */
   5555          1.1  christos   {
   5556          1.1  christos     { Bad_Opcode },
   5557          1.1  christos     { Bad_Opcode },
   5558  1.1.1.1.8.1       tls     { "vpsrlv%LW", { XM, Vex, EXx } },
   5559          1.1  christos   },
   5560          1.1  christos 
   5561  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3846 */
   5562          1.1  christos   {
   5563          1.1  christos     { Bad_Opcode },
   5564          1.1  christos     { Bad_Opcode },
   5565  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3846_P_2) },
   5566          1.1  christos   },
   5567          1.1  christos 
   5568  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3847 */
   5569          1.1  christos   {
   5570          1.1  christos     { Bad_Opcode },
   5571          1.1  christos     { Bad_Opcode },
   5572  1.1.1.1.8.1       tls     { "vpsllv%LW", { XM, Vex, EXx } },
   5573          1.1  christos   },
   5574          1.1  christos 
   5575  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3858 */
   5576          1.1  christos   {
   5577          1.1  christos     { Bad_Opcode },
   5578          1.1  christos     { Bad_Opcode },
   5579  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3858_P_2) },
   5580          1.1  christos   },
   5581          1.1  christos 
   5582  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3859 */
   5583          1.1  christos   {
   5584          1.1  christos     { Bad_Opcode },
   5585          1.1  christos     { Bad_Opcode },
   5586  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3859_P_2) },
   5587          1.1  christos   },
   5588          1.1  christos 
   5589  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F385A */
   5590  1.1.1.1.8.1       tls   {
   5591  1.1.1.1.8.1       tls     { Bad_Opcode },
   5592  1.1.1.1.8.1       tls     { Bad_Opcode },
   5593  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_VEX_0F385A_PREFIX_2) },
   5594  1.1.1.1.8.1       tls   },
   5595  1.1.1.1.8.1       tls 
   5596  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3878 */
   5597  1.1.1.1.8.1       tls   {
   5598  1.1.1.1.8.1       tls     { Bad_Opcode },
   5599  1.1.1.1.8.1       tls     { Bad_Opcode },
   5600  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3878_P_2) },
   5601  1.1.1.1.8.1       tls   },
   5602  1.1.1.1.8.1       tls 
   5603  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3879 */
   5604  1.1.1.1.8.1       tls   {
   5605  1.1.1.1.8.1       tls     { Bad_Opcode },
   5606  1.1.1.1.8.1       tls     { Bad_Opcode },
   5607  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3879_P_2) },
   5608  1.1.1.1.8.1       tls   },
   5609  1.1.1.1.8.1       tls 
   5610  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F388C */
   5611  1.1.1.1.8.1       tls   {
   5612  1.1.1.1.8.1       tls     { Bad_Opcode },
   5613  1.1.1.1.8.1       tls     { Bad_Opcode },
   5614  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_VEX_0F388C_PREFIX_2) },
   5615  1.1.1.1.8.1       tls   },
   5616  1.1.1.1.8.1       tls 
   5617  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F388E */
   5618  1.1.1.1.8.1       tls   {
   5619  1.1.1.1.8.1       tls     { Bad_Opcode },
   5620  1.1.1.1.8.1       tls     { Bad_Opcode },
   5621  1.1.1.1.8.1       tls     { MOD_TABLE (MOD_VEX_0F388E_PREFIX_2) },
   5622  1.1.1.1.8.1       tls   },
   5623  1.1.1.1.8.1       tls 
   5624  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3890 */
   5625  1.1.1.1.8.1       tls   {
   5626  1.1.1.1.8.1       tls     { Bad_Opcode },
   5627  1.1.1.1.8.1       tls     { Bad_Opcode },
   5628  1.1.1.1.8.1       tls     { "vpgatherd%LW", { XM, MVexVSIBDWpX, Vex } },
   5629  1.1.1.1.8.1       tls   },
   5630  1.1.1.1.8.1       tls 
   5631  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3891 */
   5632  1.1.1.1.8.1       tls   {
   5633  1.1.1.1.8.1       tls     { Bad_Opcode },
   5634  1.1.1.1.8.1       tls     { Bad_Opcode },
   5635  1.1.1.1.8.1       tls     { "vpgatherq%LW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ } },
   5636  1.1.1.1.8.1       tls   },
   5637  1.1.1.1.8.1       tls 
   5638  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3892 */
   5639  1.1.1.1.8.1       tls   {
   5640  1.1.1.1.8.1       tls     { Bad_Opcode },
   5641  1.1.1.1.8.1       tls     { Bad_Opcode },
   5642  1.1.1.1.8.1       tls     { "vgatherdp%XW", { XM, MVexVSIBDWpX, Vex } },
   5643  1.1.1.1.8.1       tls   },
   5644  1.1.1.1.8.1       tls 
   5645  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3893 */
   5646  1.1.1.1.8.1       tls   {
   5647  1.1.1.1.8.1       tls     { Bad_Opcode },
   5648  1.1.1.1.8.1       tls     { Bad_Opcode },
   5649  1.1.1.1.8.1       tls     { "vgatherqp%XW", { XMGatherQ, MVexVSIBQWpX, VexGatherQ } },
   5650  1.1.1.1.8.1       tls   },
   5651  1.1.1.1.8.1       tls 
   5652  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3896 */
   5653  1.1.1.1.8.1       tls   {
   5654  1.1.1.1.8.1       tls     { Bad_Opcode },
   5655  1.1.1.1.8.1       tls     { Bad_Opcode },
   5656  1.1.1.1.8.1       tls     { "vfmaddsub132p%XW", { XM, Vex, EXx } },
   5657  1.1.1.1.8.1       tls   },
   5658  1.1.1.1.8.1       tls 
   5659  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3897 */
   5660  1.1.1.1.8.1       tls   {
   5661  1.1.1.1.8.1       tls     { Bad_Opcode },
   5662  1.1.1.1.8.1       tls     { Bad_Opcode },
   5663  1.1.1.1.8.1       tls     { "vfmsubadd132p%XW", { XM, Vex, EXx } },
   5664  1.1.1.1.8.1       tls   },
   5665  1.1.1.1.8.1       tls 
   5666  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3898 */
   5667  1.1.1.1.8.1       tls   {
   5668  1.1.1.1.8.1       tls     { Bad_Opcode },
   5669  1.1.1.1.8.1       tls     { Bad_Opcode },
   5670  1.1.1.1.8.1       tls     { "vfmadd132p%XW", { XM, Vex, EXx } },
   5671  1.1.1.1.8.1       tls   },
   5672  1.1.1.1.8.1       tls 
   5673  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3899 */
   5674  1.1.1.1.8.1       tls   {
   5675  1.1.1.1.8.1       tls     { Bad_Opcode },
   5676  1.1.1.1.8.1       tls     { Bad_Opcode },
   5677  1.1.1.1.8.1       tls     { "vfmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5678  1.1.1.1.8.1       tls   },
   5679  1.1.1.1.8.1       tls 
   5680  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F389A */
   5681  1.1.1.1.8.1       tls   {
   5682  1.1.1.1.8.1       tls     { Bad_Opcode },
   5683  1.1.1.1.8.1       tls     { Bad_Opcode },
   5684  1.1.1.1.8.1       tls     { "vfmsub132p%XW", { XM, Vex, EXx } },
   5685  1.1.1.1.8.1       tls   },
   5686  1.1.1.1.8.1       tls 
   5687  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F389B */
   5688          1.1  christos   {
   5689          1.1  christos     { Bad_Opcode },
   5690          1.1  christos     { Bad_Opcode },
   5691          1.1  christos     { "vfmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5692          1.1  christos   },
   5693          1.1  christos 
   5694          1.1  christos   /* PREFIX_VEX_0F389C */
   5695          1.1  christos   {
   5696          1.1  christos     { Bad_Opcode },
   5697          1.1  christos     { Bad_Opcode },
   5698          1.1  christos     { "vfnmadd132p%XW", { XM, Vex, EXx } },
   5699          1.1  christos   },
   5700          1.1  christos 
   5701          1.1  christos   /* PREFIX_VEX_0F389D */
   5702          1.1  christos   {
   5703          1.1  christos     { Bad_Opcode },
   5704          1.1  christos     { Bad_Opcode },
   5705          1.1  christos     { "vfnmadd132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5706          1.1  christos   },
   5707          1.1  christos 
   5708          1.1  christos   /* PREFIX_VEX_0F389E */
   5709          1.1  christos   {
   5710          1.1  christos     { Bad_Opcode },
   5711          1.1  christos     { Bad_Opcode },
   5712          1.1  christos     { "vfnmsub132p%XW", { XM, Vex, EXx } },
   5713          1.1  christos   },
   5714          1.1  christos 
   5715          1.1  christos   /* PREFIX_VEX_0F389F */
   5716          1.1  christos   {
   5717          1.1  christos     { Bad_Opcode },
   5718          1.1  christos     { Bad_Opcode },
   5719          1.1  christos     { "vfnmsub132s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5720          1.1  christos   },
   5721          1.1  christos 
   5722          1.1  christos   /* PREFIX_VEX_0F38A6 */
   5723          1.1  christos   {
   5724          1.1  christos     { Bad_Opcode },
   5725          1.1  christos     { Bad_Opcode },
   5726          1.1  christos     { "vfmaddsub213p%XW", { XM, Vex, EXx } },
   5727          1.1  christos     { Bad_Opcode },
   5728          1.1  christos   },
   5729          1.1  christos 
   5730          1.1  christos   /* PREFIX_VEX_0F38A7 */
   5731          1.1  christos   {
   5732          1.1  christos     { Bad_Opcode },
   5733          1.1  christos     { Bad_Opcode },
   5734          1.1  christos     { "vfmsubadd213p%XW", { XM, Vex, EXx } },
   5735          1.1  christos   },
   5736          1.1  christos 
   5737          1.1  christos   /* PREFIX_VEX_0F38A8 */
   5738          1.1  christos   {
   5739          1.1  christos     { Bad_Opcode },
   5740          1.1  christos     { Bad_Opcode },
   5741          1.1  christos     { "vfmadd213p%XW", { XM, Vex, EXx } },
   5742          1.1  christos   },
   5743          1.1  christos 
   5744          1.1  christos   /* PREFIX_VEX_0F38A9 */
   5745          1.1  christos   {
   5746          1.1  christos     { Bad_Opcode },
   5747          1.1  christos     { Bad_Opcode },
   5748          1.1  christos     { "vfmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5749          1.1  christos   },
   5750          1.1  christos 
   5751          1.1  christos   /* PREFIX_VEX_0F38AA */
   5752          1.1  christos   {
   5753          1.1  christos     { Bad_Opcode },
   5754          1.1  christos     { Bad_Opcode },
   5755          1.1  christos     { "vfmsub213p%XW", { XM, Vex, EXx } },
   5756          1.1  christos   },
   5757          1.1  christos 
   5758          1.1  christos   /* PREFIX_VEX_0F38AB */
   5759          1.1  christos   {
   5760          1.1  christos     { Bad_Opcode },
   5761          1.1  christos     { Bad_Opcode },
   5762          1.1  christos     { "vfmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5763          1.1  christos   },
   5764          1.1  christos 
   5765          1.1  christos   /* PREFIX_VEX_0F38AC */
   5766          1.1  christos   {
   5767          1.1  christos     { Bad_Opcode },
   5768          1.1  christos     { Bad_Opcode },
   5769          1.1  christos     { "vfnmadd213p%XW", { XM, Vex, EXx } },
   5770          1.1  christos   },
   5771          1.1  christos 
   5772          1.1  christos   /* PREFIX_VEX_0F38AD */
   5773          1.1  christos   {
   5774          1.1  christos     { Bad_Opcode },
   5775          1.1  christos     { Bad_Opcode },
   5776          1.1  christos     { "vfnmadd213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5777          1.1  christos   },
   5778          1.1  christos 
   5779          1.1  christos   /* PREFIX_VEX_0F38AE */
   5780          1.1  christos   {
   5781          1.1  christos     { Bad_Opcode },
   5782          1.1  christos     { Bad_Opcode },
   5783          1.1  christos     { "vfnmsub213p%XW", { XM, Vex, EXx } },
   5784          1.1  christos   },
   5785          1.1  christos 
   5786          1.1  christos   /* PREFIX_VEX_0F38AF */
   5787          1.1  christos   {
   5788          1.1  christos     { Bad_Opcode },
   5789          1.1  christos     { Bad_Opcode },
   5790          1.1  christos     { "vfnmsub213s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5791          1.1  christos   },
   5792          1.1  christos 
   5793          1.1  christos   /* PREFIX_VEX_0F38B6 */
   5794          1.1  christos   {
   5795          1.1  christos     { Bad_Opcode },
   5796          1.1  christos     { Bad_Opcode },
   5797          1.1  christos     { "vfmaddsub231p%XW", { XM, Vex, EXx } },
   5798          1.1  christos   },
   5799          1.1  christos 
   5800          1.1  christos   /* PREFIX_VEX_0F38B7 */
   5801          1.1  christos   {
   5802          1.1  christos     { Bad_Opcode },
   5803          1.1  christos     { Bad_Opcode },
   5804          1.1  christos     { "vfmsubadd231p%XW", { XM, Vex, EXx } },
   5805          1.1  christos   },
   5806          1.1  christos 
   5807          1.1  christos   /* PREFIX_VEX_0F38B8 */
   5808          1.1  christos   {
   5809          1.1  christos     { Bad_Opcode },
   5810          1.1  christos     { Bad_Opcode },
   5811          1.1  christos     { "vfmadd231p%XW", { XM, Vex, EXx } },
   5812          1.1  christos   },
   5813          1.1  christos 
   5814          1.1  christos   /* PREFIX_VEX_0F38B9 */
   5815          1.1  christos   {
   5816          1.1  christos     { Bad_Opcode },
   5817          1.1  christos     { Bad_Opcode },
   5818          1.1  christos     { "vfmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5819          1.1  christos   },
   5820          1.1  christos 
   5821          1.1  christos   /* PREFIX_VEX_0F38BA */
   5822          1.1  christos   {
   5823          1.1  christos     { Bad_Opcode },
   5824          1.1  christos     { Bad_Opcode },
   5825          1.1  christos     { "vfmsub231p%XW", { XM, Vex, EXx } },
   5826          1.1  christos   },
   5827          1.1  christos 
   5828          1.1  christos   /* PREFIX_VEX_0F38BB */
   5829          1.1  christos   {
   5830          1.1  christos     { Bad_Opcode },
   5831          1.1  christos     { Bad_Opcode },
   5832          1.1  christos     { "vfmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5833          1.1  christos   },
   5834          1.1  christos 
   5835          1.1  christos   /* PREFIX_VEX_0F38BC */
   5836          1.1  christos   {
   5837          1.1  christos     { Bad_Opcode },
   5838          1.1  christos     { Bad_Opcode },
   5839          1.1  christos     { "vfnmadd231p%XW", { XM, Vex, EXx } },
   5840          1.1  christos   },
   5841          1.1  christos 
   5842          1.1  christos   /* PREFIX_VEX_0F38BD */
   5843          1.1  christos   {
   5844          1.1  christos     { Bad_Opcode },
   5845          1.1  christos     { Bad_Opcode },
   5846          1.1  christos     { "vfnmadd231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5847          1.1  christos   },
   5848          1.1  christos 
   5849          1.1  christos   /* PREFIX_VEX_0F38BE */
   5850          1.1  christos   {
   5851          1.1  christos     { Bad_Opcode },
   5852          1.1  christos     { Bad_Opcode },
   5853          1.1  christos     { "vfnmsub231p%XW", { XM, Vex, EXx } },
   5854          1.1  christos   },
   5855          1.1  christos 
   5856          1.1  christos   /* PREFIX_VEX_0F38BF */
   5857          1.1  christos   {
   5858          1.1  christos     { Bad_Opcode },
   5859          1.1  christos     { Bad_Opcode },
   5860          1.1  christos     { "vfnmsub231s%XW", { XMScalar, VexScalar, EXVexWdqScalar } },
   5861          1.1  christos   },
   5862          1.1  christos 
   5863          1.1  christos   /* PREFIX_VEX_0F38DB */
   5864          1.1  christos   {
   5865          1.1  christos     { Bad_Opcode },
   5866          1.1  christos     { Bad_Opcode },
   5867          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38DB_P_2) },
   5868          1.1  christos   },
   5869          1.1  christos 
   5870          1.1  christos   /* PREFIX_VEX_0F38DC */
   5871          1.1  christos   {
   5872          1.1  christos     { Bad_Opcode },
   5873          1.1  christos     { Bad_Opcode },
   5874          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38DC_P_2) },
   5875          1.1  christos   },
   5876          1.1  christos 
   5877          1.1  christos   /* PREFIX_VEX_0F38DD */
   5878          1.1  christos   {
   5879          1.1  christos     { Bad_Opcode },
   5880          1.1  christos     { Bad_Opcode },
   5881          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38DD_P_2) },
   5882          1.1  christos   },
   5883          1.1  christos 
   5884          1.1  christos   /* PREFIX_VEX_0F38DE */
   5885          1.1  christos   {
   5886          1.1  christos     { Bad_Opcode },
   5887          1.1  christos     { Bad_Opcode },
   5888          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38DE_P_2) },
   5889          1.1  christos   },
   5890          1.1  christos 
   5891          1.1  christos   /* PREFIX_VEX_0F38DF */
   5892          1.1  christos   {
   5893          1.1  christos     { Bad_Opcode },
   5894          1.1  christos     { Bad_Opcode },
   5895          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38DF_P_2) },
   5896          1.1  christos   },
   5897          1.1  christos 
   5898          1.1  christos   /* PREFIX_VEX_0F38F2 */
   5899          1.1  christos   {
   5900          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38F2_P_0) },
   5901          1.1  christos   },
   5902          1.1  christos 
   5903          1.1  christos   /* PREFIX_VEX_0F38F3_REG_1 */
   5904          1.1  christos   {
   5905          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_1_P_0) },
   5906          1.1  christos   },
   5907          1.1  christos 
   5908          1.1  christos   /* PREFIX_VEX_0F38F3_REG_2 */
   5909          1.1  christos   {
   5910          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_2_P_0) },
   5911          1.1  christos   },
   5912          1.1  christos 
   5913          1.1  christos   /* PREFIX_VEX_0F38F3_REG_3 */
   5914          1.1  christos   {
   5915          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38F3_R_3_P_0) },
   5916          1.1  christos   },
   5917          1.1  christos 
   5918  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F38F5 */
   5919  1.1.1.1.8.1       tls   {
   5920  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_0) },
   5921  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_1) },
   5922  1.1.1.1.8.1       tls     { Bad_Opcode },
   5923  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F5_P_3) },
   5924  1.1.1.1.8.1       tls   },
   5925  1.1.1.1.8.1       tls 
   5926  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F38F6 */
   5927  1.1.1.1.8.1       tls   {
   5928  1.1.1.1.8.1       tls     { Bad_Opcode },
   5929  1.1.1.1.8.1       tls     { Bad_Opcode },
   5930  1.1.1.1.8.1       tls     { Bad_Opcode },
   5931  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F6_P_3) },
   5932  1.1.1.1.8.1       tls   },
   5933  1.1.1.1.8.1       tls 
   5934          1.1  christos   /* PREFIX_VEX_0F38F7 */
   5935          1.1  christos   {
   5936          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_0) },
   5937  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_1) },
   5938  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_2) },
   5939  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F38F7_P_3) },
   5940  1.1.1.1.8.1       tls   },
   5941  1.1.1.1.8.1       tls 
   5942  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A00 */
   5943  1.1.1.1.8.1       tls   {
   5944  1.1.1.1.8.1       tls     { Bad_Opcode },
   5945  1.1.1.1.8.1       tls     { Bad_Opcode },
   5946  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A00_P_2) },
   5947  1.1.1.1.8.1       tls   },
   5948  1.1.1.1.8.1       tls 
   5949  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A01 */
   5950  1.1.1.1.8.1       tls   {
   5951  1.1.1.1.8.1       tls     { Bad_Opcode },
   5952  1.1.1.1.8.1       tls     { Bad_Opcode },
   5953  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A01_P_2) },
   5954  1.1.1.1.8.1       tls   },
   5955  1.1.1.1.8.1       tls 
   5956  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A02 */
   5957  1.1.1.1.8.1       tls   {
   5958  1.1.1.1.8.1       tls     { Bad_Opcode },
   5959  1.1.1.1.8.1       tls     { Bad_Opcode },
   5960  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A02_P_2) },
   5961          1.1  christos   },
   5962          1.1  christos 
   5963          1.1  christos   /* PREFIX_VEX_0F3A04 */
   5964          1.1  christos   {
   5965          1.1  christos     { Bad_Opcode },
   5966          1.1  christos     { Bad_Opcode },
   5967          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A04_P_2) },
   5968          1.1  christos   },
   5969          1.1  christos 
   5970          1.1  christos   /* PREFIX_VEX_0F3A05 */
   5971          1.1  christos   {
   5972          1.1  christos     { Bad_Opcode },
   5973          1.1  christos     { Bad_Opcode },
   5974          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A05_P_2) },
   5975          1.1  christos   },
   5976          1.1  christos 
   5977          1.1  christos   /* PREFIX_VEX_0F3A06 */
   5978          1.1  christos   {
   5979          1.1  christos     { Bad_Opcode },
   5980          1.1  christos     { Bad_Opcode },
   5981          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A06_P_2) },
   5982          1.1  christos   },
   5983          1.1  christos 
   5984          1.1  christos   /* PREFIX_VEX_0F3A08 */
   5985          1.1  christos   {
   5986          1.1  christos     { Bad_Opcode },
   5987          1.1  christos     { Bad_Opcode },
   5988          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A08_P_2) },
   5989          1.1  christos   },
   5990          1.1  christos 
   5991          1.1  christos   /* PREFIX_VEX_0F3A09 */
   5992          1.1  christos   {
   5993          1.1  christos     { Bad_Opcode },
   5994          1.1  christos     { Bad_Opcode },
   5995          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A09_P_2) },
   5996          1.1  christos   },
   5997          1.1  christos 
   5998          1.1  christos   /* PREFIX_VEX_0F3A0A */
   5999          1.1  christos   {
   6000          1.1  christos     { Bad_Opcode },
   6001          1.1  christos     { Bad_Opcode },
   6002          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A0A_P_2) },
   6003          1.1  christos   },
   6004          1.1  christos 
   6005          1.1  christos   /* PREFIX_VEX_0F3A0B */
   6006          1.1  christos   {
   6007          1.1  christos     { Bad_Opcode },
   6008          1.1  christos     { Bad_Opcode },
   6009          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A0B_P_2) },
   6010          1.1  christos   },
   6011          1.1  christos 
   6012          1.1  christos   /* PREFIX_VEX_0F3A0C */
   6013          1.1  christos   {
   6014          1.1  christos     { Bad_Opcode },
   6015          1.1  christos     { Bad_Opcode },
   6016          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A0C_P_2) },
   6017          1.1  christos   },
   6018          1.1  christos 
   6019          1.1  christos   /* PREFIX_VEX_0F3A0D */
   6020          1.1  christos   {
   6021          1.1  christos     { Bad_Opcode },
   6022          1.1  christos     { Bad_Opcode },
   6023          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A0D_P_2) },
   6024          1.1  christos   },
   6025          1.1  christos 
   6026          1.1  christos   /* PREFIX_VEX_0F3A0E */
   6027          1.1  christos   {
   6028          1.1  christos     { Bad_Opcode },
   6029          1.1  christos     { Bad_Opcode },
   6030  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A0E_P_2) },
   6031          1.1  christos   },
   6032          1.1  christos 
   6033          1.1  christos   /* PREFIX_VEX_0F3A0F */
   6034          1.1  christos   {
   6035          1.1  christos     { Bad_Opcode },
   6036          1.1  christos     { Bad_Opcode },
   6037  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A0F_P_2) },
   6038          1.1  christos   },
   6039          1.1  christos 
   6040          1.1  christos   /* PREFIX_VEX_0F3A14 */
   6041          1.1  christos   {
   6042          1.1  christos     { Bad_Opcode },
   6043          1.1  christos     { Bad_Opcode },
   6044          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A14_P_2) },
   6045          1.1  christos   },
   6046          1.1  christos 
   6047          1.1  christos   /* PREFIX_VEX_0F3A15 */
   6048          1.1  christos   {
   6049          1.1  christos     { Bad_Opcode },
   6050          1.1  christos     { Bad_Opcode },
   6051          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A15_P_2) },
   6052          1.1  christos   },
   6053          1.1  christos 
   6054          1.1  christos   /* PREFIX_VEX_0F3A16 */
   6055          1.1  christos   {
   6056          1.1  christos     { Bad_Opcode },
   6057          1.1  christos     { Bad_Opcode },
   6058          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A16_P_2) },
   6059          1.1  christos   },
   6060          1.1  christos 
   6061          1.1  christos   /* PREFIX_VEX_0F3A17 */
   6062          1.1  christos   {
   6063          1.1  christos     { Bad_Opcode },
   6064          1.1  christos     { Bad_Opcode },
   6065          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A17_P_2) },
   6066          1.1  christos   },
   6067          1.1  christos 
   6068          1.1  christos   /* PREFIX_VEX_0F3A18 */
   6069          1.1  christos   {
   6070          1.1  christos     { Bad_Opcode },
   6071          1.1  christos     { Bad_Opcode },
   6072          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A18_P_2) },
   6073          1.1  christos   },
   6074          1.1  christos 
   6075          1.1  christos   /* PREFIX_VEX_0F3A19 */
   6076          1.1  christos   {
   6077          1.1  christos     { Bad_Opcode },
   6078          1.1  christos     { Bad_Opcode },
   6079          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A19_P_2) },
   6080          1.1  christos   },
   6081          1.1  christos 
   6082          1.1  christos   /* PREFIX_VEX_0F3A1D */
   6083          1.1  christos   {
   6084          1.1  christos     { Bad_Opcode },
   6085          1.1  christos     { Bad_Opcode },
   6086          1.1  christos     { "vcvtps2ph", { EXxmmq, XM, Ib } },
   6087          1.1  christos   },
   6088          1.1  christos 
   6089          1.1  christos   /* PREFIX_VEX_0F3A20 */
   6090          1.1  christos   {
   6091          1.1  christos     { Bad_Opcode },
   6092          1.1  christos     { Bad_Opcode },
   6093          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A20_P_2) },
   6094          1.1  christos   },
   6095          1.1  christos 
   6096          1.1  christos   /* PREFIX_VEX_0F3A21 */
   6097          1.1  christos   {
   6098          1.1  christos     { Bad_Opcode },
   6099          1.1  christos     { Bad_Opcode },
   6100          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A21_P_2) },
   6101          1.1  christos   },
   6102          1.1  christos 
   6103          1.1  christos   /* PREFIX_VEX_0F3A22 */
   6104          1.1  christos   {
   6105          1.1  christos     { Bad_Opcode },
   6106          1.1  christos     { Bad_Opcode },
   6107          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A22_P_2) },
   6108          1.1  christos   },
   6109          1.1  christos 
   6110  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A30 */
   6111  1.1.1.1.8.1       tls   {
   6112  1.1.1.1.8.1       tls     { Bad_Opcode },
   6113  1.1.1.1.8.1       tls     { Bad_Opcode },
   6114  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A30_P_2) },
   6115  1.1.1.1.8.1       tls   },
   6116  1.1.1.1.8.1       tls 
   6117  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A32 */
   6118  1.1.1.1.8.1       tls   {
   6119  1.1.1.1.8.1       tls     { Bad_Opcode },
   6120  1.1.1.1.8.1       tls     { Bad_Opcode },
   6121  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A32_P_2) },
   6122  1.1.1.1.8.1       tls   },
   6123  1.1.1.1.8.1       tls 
   6124  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A38 */
   6125  1.1.1.1.8.1       tls   {
   6126  1.1.1.1.8.1       tls     { Bad_Opcode },
   6127  1.1.1.1.8.1       tls     { Bad_Opcode },
   6128  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A38_P_2) },
   6129  1.1.1.1.8.1       tls   },
   6130  1.1.1.1.8.1       tls 
   6131  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A39 */
   6132  1.1.1.1.8.1       tls   {
   6133  1.1.1.1.8.1       tls     { Bad_Opcode },
   6134  1.1.1.1.8.1       tls     { Bad_Opcode },
   6135  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A39_P_2) },
   6136  1.1.1.1.8.1       tls   },
   6137  1.1.1.1.8.1       tls 
   6138          1.1  christos   /* PREFIX_VEX_0F3A40 */
   6139          1.1  christos   {
   6140          1.1  christos     { Bad_Opcode },
   6141          1.1  christos     { Bad_Opcode },
   6142          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A40_P_2) },
   6143          1.1  christos   },
   6144          1.1  christos 
   6145          1.1  christos   /* PREFIX_VEX_0F3A41 */
   6146          1.1  christos   {
   6147          1.1  christos     { Bad_Opcode },
   6148          1.1  christos     { Bad_Opcode },
   6149          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A41_P_2) },
   6150          1.1  christos   },
   6151          1.1  christos 
   6152          1.1  christos   /* PREFIX_VEX_0F3A42 */
   6153          1.1  christos   {
   6154          1.1  christos     { Bad_Opcode },
   6155          1.1  christos     { Bad_Opcode },
   6156  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A42_P_2) },
   6157          1.1  christos   },
   6158          1.1  christos 
   6159          1.1  christos   /* PREFIX_VEX_0F3A44 */
   6160          1.1  christos   {
   6161          1.1  christos     { Bad_Opcode },
   6162          1.1  christos     { Bad_Opcode },
   6163          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A44_P_2) },
   6164          1.1  christos   },
   6165          1.1  christos 
   6166  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3A46 */
   6167  1.1.1.1.8.1       tls   {
   6168  1.1.1.1.8.1       tls     { Bad_Opcode },
   6169  1.1.1.1.8.1       tls     { Bad_Opcode },
   6170  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3A46_P_2) },
   6171  1.1.1.1.8.1       tls   },
   6172  1.1.1.1.8.1       tls 
   6173          1.1  christos   /* PREFIX_VEX_0F3A48 */
   6174          1.1  christos   {
   6175          1.1  christos     { Bad_Opcode },
   6176          1.1  christos     { Bad_Opcode },
   6177          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A48_P_2) },
   6178          1.1  christos   },
   6179          1.1  christos 
   6180          1.1  christos   /* PREFIX_VEX_0F3A49 */
   6181          1.1  christos   {
   6182          1.1  christos     { Bad_Opcode },
   6183          1.1  christos     { Bad_Opcode },
   6184          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A49_P_2) },
   6185          1.1  christos   },
   6186          1.1  christos 
   6187          1.1  christos   /* PREFIX_VEX_0F3A4A */
   6188          1.1  christos   {
   6189          1.1  christos     { Bad_Opcode },
   6190          1.1  christos     { Bad_Opcode },
   6191          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A4A_P_2) },
   6192          1.1  christos   },
   6193          1.1  christos 
   6194          1.1  christos   /* PREFIX_VEX_0F3A4B */
   6195          1.1  christos   {
   6196          1.1  christos     { Bad_Opcode },
   6197          1.1  christos     { Bad_Opcode },
   6198          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A4B_P_2) },
   6199          1.1  christos   },
   6200          1.1  christos 
   6201          1.1  christos   /* PREFIX_VEX_0F3A4C */
   6202          1.1  christos   {
   6203          1.1  christos     { Bad_Opcode },
   6204          1.1  christos     { Bad_Opcode },
   6205  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A4C_P_2) },
   6206          1.1  christos   },
   6207          1.1  christos 
   6208          1.1  christos   /* PREFIX_VEX_0F3A5C */
   6209          1.1  christos   {
   6210          1.1  christos     { Bad_Opcode },
   6211          1.1  christos     { Bad_Opcode },
   6212          1.1  christos     { "vfmaddsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6213          1.1  christos   },
   6214          1.1  christos 
   6215          1.1  christos   /* PREFIX_VEX_0F3A5D */
   6216          1.1  christos   {
   6217          1.1  christos     { Bad_Opcode },
   6218          1.1  christos     { Bad_Opcode },
   6219          1.1  christos     { "vfmaddsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6220          1.1  christos   },
   6221          1.1  christos 
   6222          1.1  christos   /* PREFIX_VEX_0F3A5E */
   6223          1.1  christos   {
   6224          1.1  christos     { Bad_Opcode },
   6225          1.1  christos     { Bad_Opcode },
   6226          1.1  christos     { "vfmsubaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6227          1.1  christos   },
   6228          1.1  christos 
   6229          1.1  christos   /* PREFIX_VEX_0F3A5F */
   6230          1.1  christos   {
   6231          1.1  christos     { Bad_Opcode },
   6232          1.1  christos     { Bad_Opcode },
   6233          1.1  christos     { "vfmsubaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6234          1.1  christos   },
   6235          1.1  christos 
   6236          1.1  christos   /* PREFIX_VEX_0F3A60 */
   6237          1.1  christos   {
   6238          1.1  christos     { Bad_Opcode },
   6239          1.1  christos     { Bad_Opcode },
   6240          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A60_P_2) },
   6241          1.1  christos     { Bad_Opcode },
   6242          1.1  christos   },
   6243          1.1  christos 
   6244          1.1  christos   /* PREFIX_VEX_0F3A61 */
   6245          1.1  christos   {
   6246          1.1  christos     { Bad_Opcode },
   6247          1.1  christos     { Bad_Opcode },
   6248          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A61_P_2) },
   6249          1.1  christos   },
   6250          1.1  christos 
   6251          1.1  christos   /* PREFIX_VEX_0F3A62 */
   6252          1.1  christos   {
   6253          1.1  christos     { Bad_Opcode },
   6254          1.1  christos     { Bad_Opcode },
   6255          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A62_P_2) },
   6256          1.1  christos   },
   6257          1.1  christos 
   6258          1.1  christos   /* PREFIX_VEX_0F3A63 */
   6259          1.1  christos   {
   6260          1.1  christos     { Bad_Opcode },
   6261          1.1  christos     { Bad_Opcode },
   6262          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A63_P_2) },
   6263          1.1  christos   },
   6264          1.1  christos 
   6265          1.1  christos   /* PREFIX_VEX_0F3A68 */
   6266          1.1  christos   {
   6267          1.1  christos     { Bad_Opcode },
   6268          1.1  christos     { Bad_Opcode },
   6269          1.1  christos     { "vfmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6270          1.1  christos   },
   6271          1.1  christos 
   6272          1.1  christos   /* PREFIX_VEX_0F3A69 */
   6273          1.1  christos   {
   6274          1.1  christos     { Bad_Opcode },
   6275          1.1  christos     { Bad_Opcode },
   6276          1.1  christos     { "vfmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6277          1.1  christos   },
   6278          1.1  christos 
   6279          1.1  christos   /* PREFIX_VEX_0F3A6A */
   6280          1.1  christos   {
   6281          1.1  christos     { Bad_Opcode },
   6282          1.1  christos     { Bad_Opcode },
   6283          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A6A_P_2) },
   6284          1.1  christos   },
   6285          1.1  christos 
   6286          1.1  christos   /* PREFIX_VEX_0F3A6B */
   6287          1.1  christos   {
   6288          1.1  christos     { Bad_Opcode },
   6289          1.1  christos     { Bad_Opcode },
   6290          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A6B_P_2) },
   6291          1.1  christos   },
   6292          1.1  christos 
   6293          1.1  christos   /* PREFIX_VEX_0F3A6C */
   6294          1.1  christos   {
   6295          1.1  christos     { Bad_Opcode },
   6296          1.1  christos     { Bad_Opcode },
   6297          1.1  christos     { "vfmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6298          1.1  christos   },
   6299          1.1  christos 
   6300          1.1  christos   /* PREFIX_VEX_0F3A6D */
   6301          1.1  christos   {
   6302          1.1  christos     { Bad_Opcode },
   6303          1.1  christos     { Bad_Opcode },
   6304          1.1  christos     { "vfmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6305          1.1  christos   },
   6306          1.1  christos 
   6307          1.1  christos   /* PREFIX_VEX_0F3A6E */
   6308          1.1  christos   {
   6309          1.1  christos     { Bad_Opcode },
   6310          1.1  christos     { Bad_Opcode },
   6311          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A6E_P_2) },
   6312          1.1  christos   },
   6313          1.1  christos 
   6314          1.1  christos   /* PREFIX_VEX_0F3A6F */
   6315          1.1  christos   {
   6316          1.1  christos     { Bad_Opcode },
   6317          1.1  christos     { Bad_Opcode },
   6318          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A6F_P_2) },
   6319          1.1  christos   },
   6320          1.1  christos 
   6321          1.1  christos   /* PREFIX_VEX_0F3A78 */
   6322          1.1  christos   {
   6323          1.1  christos     { Bad_Opcode },
   6324          1.1  christos     { Bad_Opcode },
   6325          1.1  christos     { "vfnmaddps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6326          1.1  christos   },
   6327          1.1  christos 
   6328          1.1  christos   /* PREFIX_VEX_0F3A79 */
   6329          1.1  christos   {
   6330          1.1  christos     { Bad_Opcode },
   6331          1.1  christos     { Bad_Opcode },
   6332          1.1  christos     { "vfnmaddpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6333          1.1  christos   },
   6334          1.1  christos 
   6335          1.1  christos   /* PREFIX_VEX_0F3A7A */
   6336          1.1  christos   {
   6337          1.1  christos     { Bad_Opcode },
   6338          1.1  christos     { Bad_Opcode },
   6339          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A7A_P_2) },
   6340          1.1  christos   },
   6341          1.1  christos 
   6342          1.1  christos   /* PREFIX_VEX_0F3A7B */
   6343          1.1  christos   {
   6344          1.1  christos     { Bad_Opcode },
   6345          1.1  christos     { Bad_Opcode },
   6346          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A7B_P_2) },
   6347          1.1  christos   },
   6348          1.1  christos 
   6349          1.1  christos   /* PREFIX_VEX_0F3A7C */
   6350          1.1  christos   {
   6351          1.1  christos     { Bad_Opcode },
   6352          1.1  christos     { Bad_Opcode },
   6353          1.1  christos     { "vfnmsubps", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6354          1.1  christos     { Bad_Opcode },
   6355          1.1  christos   },
   6356          1.1  christos 
   6357          1.1  christos   /* PREFIX_VEX_0F3A7D */
   6358          1.1  christos   {
   6359          1.1  christos     { Bad_Opcode },
   6360          1.1  christos     { Bad_Opcode },
   6361          1.1  christos     { "vfnmsubpd", { XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   6362          1.1  christos   },
   6363          1.1  christos 
   6364          1.1  christos   /* PREFIX_VEX_0F3A7E */
   6365          1.1  christos   {
   6366          1.1  christos     { Bad_Opcode },
   6367          1.1  christos     { Bad_Opcode },
   6368          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A7E_P_2) },
   6369          1.1  christos   },
   6370          1.1  christos 
   6371          1.1  christos   /* PREFIX_VEX_0F3A7F */
   6372          1.1  christos   {
   6373          1.1  christos     { Bad_Opcode },
   6374          1.1  christos     { Bad_Opcode },
   6375          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3A7F_P_2) },
   6376          1.1  christos   },
   6377          1.1  christos 
   6378          1.1  christos   /* PREFIX_VEX_0F3ADF */
   6379          1.1  christos   {
   6380          1.1  christos     { Bad_Opcode },
   6381          1.1  christos     { Bad_Opcode },
   6382          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F3ADF_P_2) },
   6383          1.1  christos   },
   6384  1.1.1.1.8.1       tls 
   6385  1.1.1.1.8.1       tls   /* PREFIX_VEX_0F3AF0 */
   6386  1.1.1.1.8.1       tls   {
   6387  1.1.1.1.8.1       tls     { Bad_Opcode },
   6388  1.1.1.1.8.1       tls     { Bad_Opcode },
   6389  1.1.1.1.8.1       tls     { Bad_Opcode },
   6390  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F3AF0_P_3) },
   6391  1.1.1.1.8.1       tls   },
   6392  1.1.1.1.8.1       tls 
   6393  1.1.1.1.8.1       tls #define NEED_PREFIX_TABLE
   6394  1.1.1.1.8.1       tls #include "i386-dis-evex.h"
   6395  1.1.1.1.8.1       tls #undef NEED_PREFIX_TABLE
   6396          1.1  christos };
   6397          1.1  christos 
   6398          1.1  christos static const struct dis386 x86_64_table[][2] = {
   6399          1.1  christos   /* X86_64_06 */
   6400          1.1  christos   {
   6401          1.1  christos     { "pushP", { es } },
   6402          1.1  christos   },
   6403          1.1  christos 
   6404          1.1  christos   /* X86_64_07 */
   6405          1.1  christos   {
   6406          1.1  christos     { "popP", { es } },
   6407          1.1  christos   },
   6408          1.1  christos 
   6409          1.1  christos   /* X86_64_0D */
   6410          1.1  christos   {
   6411          1.1  christos     { "pushP", { cs } },
   6412          1.1  christos   },
   6413          1.1  christos 
   6414          1.1  christos   /* X86_64_16 */
   6415          1.1  christos   {
   6416          1.1  christos     { "pushP", { ss } },
   6417          1.1  christos   },
   6418          1.1  christos 
   6419          1.1  christos   /* X86_64_17 */
   6420          1.1  christos   {
   6421          1.1  christos     { "popP", { ss } },
   6422          1.1  christos   },
   6423          1.1  christos 
   6424          1.1  christos   /* X86_64_1E */
   6425          1.1  christos   {
   6426          1.1  christos     { "pushP", { ds } },
   6427          1.1  christos   },
   6428          1.1  christos 
   6429          1.1  christos   /* X86_64_1F */
   6430          1.1  christos   {
   6431          1.1  christos     { "popP", { ds } },
   6432          1.1  christos   },
   6433          1.1  christos 
   6434          1.1  christos   /* X86_64_27 */
   6435          1.1  christos   {
   6436          1.1  christos     { "daa", { XX } },
   6437          1.1  christos   },
   6438          1.1  christos 
   6439          1.1  christos   /* X86_64_2F */
   6440          1.1  christos   {
   6441          1.1  christos     { "das", { XX } },
   6442          1.1  christos   },
   6443          1.1  christos 
   6444          1.1  christos   /* X86_64_37 */
   6445          1.1  christos   {
   6446          1.1  christos     { "aaa", { XX } },
   6447          1.1  christos   },
   6448          1.1  christos 
   6449          1.1  christos   /* X86_64_3F */
   6450          1.1  christos   {
   6451          1.1  christos     { "aas", { XX } },
   6452          1.1  christos   },
   6453          1.1  christos 
   6454          1.1  christos   /* X86_64_60 */
   6455          1.1  christos   {
   6456          1.1  christos     { "pushaP", { XX } },
   6457          1.1  christos   },
   6458          1.1  christos 
   6459          1.1  christos   /* X86_64_61 */
   6460          1.1  christos   {
   6461          1.1  christos     { "popaP", { XX } },
   6462          1.1  christos   },
   6463          1.1  christos 
   6464          1.1  christos   /* X86_64_62 */
   6465          1.1  christos   {
   6466          1.1  christos     { MOD_TABLE (MOD_62_32BIT) },
   6467  1.1.1.1.8.1       tls     { EVEX_TABLE (EVEX_0F) },
   6468          1.1  christos   },
   6469          1.1  christos 
   6470          1.1  christos   /* X86_64_63 */
   6471          1.1  christos   {
   6472          1.1  christos     { "arpl", { Ew, Gw } },
   6473          1.1  christos     { "movs{lq|xd}", { Gv, Ed } },
   6474          1.1  christos   },
   6475          1.1  christos 
   6476          1.1  christos   /* X86_64_6D */
   6477          1.1  christos   {
   6478          1.1  christos     { "ins{R|}", { Yzr, indirDX } },
   6479          1.1  christos     { "ins{G|}", { Yzr, indirDX } },
   6480          1.1  christos   },
   6481          1.1  christos 
   6482          1.1  christos   /* X86_64_6F */
   6483          1.1  christos   {
   6484          1.1  christos     { "outs{R|}", { indirDXr, Xz } },
   6485          1.1  christos     { "outs{G|}", { indirDXr, Xz } },
   6486          1.1  christos   },
   6487          1.1  christos 
   6488          1.1  christos   /* X86_64_9A */
   6489          1.1  christos   {
   6490          1.1  christos     { "Jcall{T|}", { Ap } },
   6491          1.1  christos   },
   6492          1.1  christos 
   6493          1.1  christos   /* X86_64_C4 */
   6494          1.1  christos   {
   6495          1.1  christos     { MOD_TABLE (MOD_C4_32BIT) },
   6496          1.1  christos     { VEX_C4_TABLE (VEX_0F) },
   6497          1.1  christos   },
   6498          1.1  christos 
   6499          1.1  christos   /* X86_64_C5 */
   6500          1.1  christos   {
   6501          1.1  christos     { MOD_TABLE (MOD_C5_32BIT) },
   6502          1.1  christos     { VEX_C5_TABLE (VEX_0F) },
   6503          1.1  christos   },
   6504          1.1  christos 
   6505          1.1  christos   /* X86_64_CE */
   6506          1.1  christos   {
   6507          1.1  christos     { "into", { XX } },
   6508          1.1  christos   },
   6509          1.1  christos 
   6510          1.1  christos   /* X86_64_D4 */
   6511          1.1  christos   {
   6512          1.1  christos     { "aam", { Ib } },
   6513          1.1  christos   },
   6514          1.1  christos 
   6515          1.1  christos   /* X86_64_D5 */
   6516          1.1  christos   {
   6517          1.1  christos     { "aad", { Ib } },
   6518          1.1  christos   },
   6519          1.1  christos 
   6520          1.1  christos   /* X86_64_EA */
   6521          1.1  christos   {
   6522          1.1  christos     { "Jjmp{T|}", { Ap } },
   6523          1.1  christos   },
   6524          1.1  christos 
   6525          1.1  christos   /* X86_64_0F01_REG_0 */
   6526          1.1  christos   {
   6527          1.1  christos     { "sgdt{Q|IQ}", { M } },
   6528          1.1  christos     { "sgdt", { M } },
   6529          1.1  christos   },
   6530          1.1  christos 
   6531          1.1  christos   /* X86_64_0F01_REG_1 */
   6532          1.1  christos   {
   6533          1.1  christos     { "sidt{Q|IQ}", { M } },
   6534          1.1  christos     { "sidt", { M } },
   6535          1.1  christos   },
   6536          1.1  christos 
   6537          1.1  christos   /* X86_64_0F01_REG_2 */
   6538          1.1  christos   {
   6539          1.1  christos     { "lgdt{Q|Q}", { M } },
   6540          1.1  christos     { "lgdt", { M } },
   6541          1.1  christos   },
   6542          1.1  christos 
   6543          1.1  christos   /* X86_64_0F01_REG_3 */
   6544          1.1  christos   {
   6545          1.1  christos     { "lidt{Q|Q}", { M } },
   6546          1.1  christos     { "lidt", { M } },
   6547          1.1  christos   },
   6548          1.1  christos };
   6549          1.1  christos 
   6550          1.1  christos static const struct dis386 three_byte_table[][256] = {
   6551          1.1  christos 
   6552          1.1  christos   /* THREE_BYTE_0F38 */
   6553          1.1  christos   {
   6554          1.1  christos     /* 00 */
   6555          1.1  christos     { "pshufb",		{ MX, EM } },
   6556          1.1  christos     { "phaddw",		{ MX, EM } },
   6557          1.1  christos     { "phaddd",		{ MX, EM } },
   6558          1.1  christos     { "phaddsw",	{ MX, EM } },
   6559          1.1  christos     { "pmaddubsw",	{ MX, EM } },
   6560          1.1  christos     { "phsubw",		{ MX, EM } },
   6561          1.1  christos     { "phsubd",		{ MX, EM } },
   6562          1.1  christos     { "phsubsw",	{ MX, EM } },
   6563          1.1  christos     /* 08 */
   6564          1.1  christos     { "psignb",		{ MX, EM } },
   6565          1.1  christos     { "psignw",		{ MX, EM } },
   6566          1.1  christos     { "psignd",		{ MX, EM } },
   6567          1.1  christos     { "pmulhrsw",	{ MX, EM } },
   6568          1.1  christos     { Bad_Opcode },
   6569          1.1  christos     { Bad_Opcode },
   6570          1.1  christos     { Bad_Opcode },
   6571          1.1  christos     { Bad_Opcode },
   6572          1.1  christos     /* 10 */
   6573          1.1  christos     { PREFIX_TABLE (PREFIX_0F3810) },
   6574          1.1  christos     { Bad_Opcode },
   6575          1.1  christos     { Bad_Opcode },
   6576          1.1  christos     { Bad_Opcode },
   6577          1.1  christos     { PREFIX_TABLE (PREFIX_0F3814) },
   6578          1.1  christos     { PREFIX_TABLE (PREFIX_0F3815) },
   6579          1.1  christos     { Bad_Opcode },
   6580          1.1  christos     { PREFIX_TABLE (PREFIX_0F3817) },
   6581          1.1  christos     /* 18 */
   6582          1.1  christos     { Bad_Opcode },
   6583          1.1  christos     { Bad_Opcode },
   6584          1.1  christos     { Bad_Opcode },
   6585          1.1  christos     { Bad_Opcode },
   6586          1.1  christos     { "pabsb",		{ MX, EM } },
   6587          1.1  christos     { "pabsw",		{ MX, EM } },
   6588          1.1  christos     { "pabsd",		{ MX, EM } },
   6589          1.1  christos     { Bad_Opcode },
   6590          1.1  christos     /* 20 */
   6591          1.1  christos     { PREFIX_TABLE (PREFIX_0F3820) },
   6592          1.1  christos     { PREFIX_TABLE (PREFIX_0F3821) },
   6593          1.1  christos     { PREFIX_TABLE (PREFIX_0F3822) },
   6594          1.1  christos     { PREFIX_TABLE (PREFIX_0F3823) },
   6595          1.1  christos     { PREFIX_TABLE (PREFIX_0F3824) },
   6596          1.1  christos     { PREFIX_TABLE (PREFIX_0F3825) },
   6597          1.1  christos     { Bad_Opcode },
   6598          1.1  christos     { Bad_Opcode },
   6599          1.1  christos     /* 28 */
   6600          1.1  christos     { PREFIX_TABLE (PREFIX_0F3828) },
   6601          1.1  christos     { PREFIX_TABLE (PREFIX_0F3829) },
   6602          1.1  christos     { PREFIX_TABLE (PREFIX_0F382A) },
   6603          1.1  christos     { PREFIX_TABLE (PREFIX_0F382B) },
   6604          1.1  christos     { Bad_Opcode },
   6605          1.1  christos     { Bad_Opcode },
   6606          1.1  christos     { Bad_Opcode },
   6607          1.1  christos     { Bad_Opcode },
   6608          1.1  christos     /* 30 */
   6609          1.1  christos     { PREFIX_TABLE (PREFIX_0F3830) },
   6610          1.1  christos     { PREFIX_TABLE (PREFIX_0F3831) },
   6611          1.1  christos     { PREFIX_TABLE (PREFIX_0F3832) },
   6612          1.1  christos     { PREFIX_TABLE (PREFIX_0F3833) },
   6613          1.1  christos     { PREFIX_TABLE (PREFIX_0F3834) },
   6614          1.1  christos     { PREFIX_TABLE (PREFIX_0F3835) },
   6615          1.1  christos     { Bad_Opcode },
   6616          1.1  christos     { PREFIX_TABLE (PREFIX_0F3837) },
   6617          1.1  christos     /* 38 */
   6618          1.1  christos     { PREFIX_TABLE (PREFIX_0F3838) },
   6619          1.1  christos     { PREFIX_TABLE (PREFIX_0F3839) },
   6620          1.1  christos     { PREFIX_TABLE (PREFIX_0F383A) },
   6621          1.1  christos     { PREFIX_TABLE (PREFIX_0F383B) },
   6622          1.1  christos     { PREFIX_TABLE (PREFIX_0F383C) },
   6623          1.1  christos     { PREFIX_TABLE (PREFIX_0F383D) },
   6624          1.1  christos     { PREFIX_TABLE (PREFIX_0F383E) },
   6625          1.1  christos     { PREFIX_TABLE (PREFIX_0F383F) },
   6626          1.1  christos     /* 40 */
   6627          1.1  christos     { PREFIX_TABLE (PREFIX_0F3840) },
   6628          1.1  christos     { PREFIX_TABLE (PREFIX_0F3841) },
   6629          1.1  christos     { Bad_Opcode },
   6630          1.1  christos     { Bad_Opcode },
   6631          1.1  christos     { Bad_Opcode },
   6632          1.1  christos     { Bad_Opcode },
   6633          1.1  christos     { Bad_Opcode },
   6634          1.1  christos     { Bad_Opcode },
   6635          1.1  christos     /* 48 */
   6636          1.1  christos     { Bad_Opcode },
   6637          1.1  christos     { Bad_Opcode },
   6638          1.1  christos     { Bad_Opcode },
   6639          1.1  christos     { Bad_Opcode },
   6640          1.1  christos     { Bad_Opcode },
   6641          1.1  christos     { Bad_Opcode },
   6642          1.1  christos     { Bad_Opcode },
   6643          1.1  christos     { Bad_Opcode },
   6644          1.1  christos     /* 50 */
   6645          1.1  christos     { Bad_Opcode },
   6646          1.1  christos     { Bad_Opcode },
   6647          1.1  christos     { Bad_Opcode },
   6648          1.1  christos     { Bad_Opcode },
   6649          1.1  christos     { Bad_Opcode },
   6650          1.1  christos     { Bad_Opcode },
   6651          1.1  christos     { Bad_Opcode },
   6652          1.1  christos     { Bad_Opcode },
   6653          1.1  christos     /* 58 */
   6654          1.1  christos     { Bad_Opcode },
   6655          1.1  christos     { Bad_Opcode },
   6656          1.1  christos     { Bad_Opcode },
   6657          1.1  christos     { Bad_Opcode },
   6658          1.1  christos     { Bad_Opcode },
   6659          1.1  christos     { Bad_Opcode },
   6660          1.1  christos     { Bad_Opcode },
   6661          1.1  christos     { Bad_Opcode },
   6662          1.1  christos     /* 60 */
   6663          1.1  christos     { Bad_Opcode },
   6664          1.1  christos     { Bad_Opcode },
   6665          1.1  christos     { Bad_Opcode },
   6666          1.1  christos     { Bad_Opcode },
   6667          1.1  christos     { Bad_Opcode },
   6668          1.1  christos     { Bad_Opcode },
   6669          1.1  christos     { Bad_Opcode },
   6670          1.1  christos     { Bad_Opcode },
   6671          1.1  christos     /* 68 */
   6672          1.1  christos     { Bad_Opcode },
   6673          1.1  christos     { Bad_Opcode },
   6674          1.1  christos     { Bad_Opcode },
   6675          1.1  christos     { Bad_Opcode },
   6676          1.1  christos     { Bad_Opcode },
   6677          1.1  christos     { Bad_Opcode },
   6678          1.1  christos     { Bad_Opcode },
   6679          1.1  christos     { Bad_Opcode },
   6680          1.1  christos     /* 70 */
   6681          1.1  christos     { Bad_Opcode },
   6682          1.1  christos     { Bad_Opcode },
   6683          1.1  christos     { Bad_Opcode },
   6684          1.1  christos     { Bad_Opcode },
   6685          1.1  christos     { Bad_Opcode },
   6686          1.1  christos     { Bad_Opcode },
   6687          1.1  christos     { Bad_Opcode },
   6688          1.1  christos     { Bad_Opcode },
   6689          1.1  christos     /* 78 */
   6690          1.1  christos     { Bad_Opcode },
   6691          1.1  christos     { Bad_Opcode },
   6692          1.1  christos     { Bad_Opcode },
   6693          1.1  christos     { Bad_Opcode },
   6694          1.1  christos     { Bad_Opcode },
   6695          1.1  christos     { Bad_Opcode },
   6696          1.1  christos     { Bad_Opcode },
   6697          1.1  christos     { Bad_Opcode },
   6698          1.1  christos     /* 80 */
   6699          1.1  christos     { PREFIX_TABLE (PREFIX_0F3880) },
   6700          1.1  christos     { PREFIX_TABLE (PREFIX_0F3881) },
   6701  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F3882) },
   6702          1.1  christos     { Bad_Opcode },
   6703          1.1  christos     { Bad_Opcode },
   6704          1.1  christos     { Bad_Opcode },
   6705          1.1  christos     { Bad_Opcode },
   6706          1.1  christos     { Bad_Opcode },
   6707          1.1  christos     /* 88 */
   6708          1.1  christos     { Bad_Opcode },
   6709          1.1  christos     { Bad_Opcode },
   6710          1.1  christos     { Bad_Opcode },
   6711          1.1  christos     { Bad_Opcode },
   6712          1.1  christos     { Bad_Opcode },
   6713          1.1  christos     { Bad_Opcode },
   6714          1.1  christos     { Bad_Opcode },
   6715          1.1  christos     { Bad_Opcode },
   6716          1.1  christos     /* 90 */
   6717          1.1  christos     { Bad_Opcode },
   6718          1.1  christos     { Bad_Opcode },
   6719          1.1  christos     { Bad_Opcode },
   6720          1.1  christos     { Bad_Opcode },
   6721          1.1  christos     { Bad_Opcode },
   6722          1.1  christos     { Bad_Opcode },
   6723          1.1  christos     { Bad_Opcode },
   6724          1.1  christos     { Bad_Opcode },
   6725          1.1  christos     /* 98 */
   6726          1.1  christos     { Bad_Opcode },
   6727          1.1  christos     { Bad_Opcode },
   6728          1.1  christos     { Bad_Opcode },
   6729          1.1  christos     { Bad_Opcode },
   6730          1.1  christos     { Bad_Opcode },
   6731          1.1  christos     { Bad_Opcode },
   6732          1.1  christos     { Bad_Opcode },
   6733          1.1  christos     { Bad_Opcode },
   6734          1.1  christos     /* a0 */
   6735          1.1  christos     { Bad_Opcode },
   6736          1.1  christos     { Bad_Opcode },
   6737          1.1  christos     { Bad_Opcode },
   6738          1.1  christos     { Bad_Opcode },
   6739          1.1  christos     { Bad_Opcode },
   6740          1.1  christos     { Bad_Opcode },
   6741          1.1  christos     { Bad_Opcode },
   6742          1.1  christos     { Bad_Opcode },
   6743          1.1  christos     /* a8 */
   6744          1.1  christos     { Bad_Opcode },
   6745          1.1  christos     { Bad_Opcode },
   6746          1.1  christos     { Bad_Opcode },
   6747          1.1  christos     { Bad_Opcode },
   6748          1.1  christos     { Bad_Opcode },
   6749          1.1  christos     { Bad_Opcode },
   6750          1.1  christos     { Bad_Opcode },
   6751          1.1  christos     { Bad_Opcode },
   6752          1.1  christos     /* b0 */
   6753          1.1  christos     { Bad_Opcode },
   6754          1.1  christos     { Bad_Opcode },
   6755          1.1  christos     { Bad_Opcode },
   6756          1.1  christos     { Bad_Opcode },
   6757          1.1  christos     { Bad_Opcode },
   6758          1.1  christos     { Bad_Opcode },
   6759          1.1  christos     { Bad_Opcode },
   6760          1.1  christos     { Bad_Opcode },
   6761          1.1  christos     /* b8 */
   6762          1.1  christos     { Bad_Opcode },
   6763          1.1  christos     { Bad_Opcode },
   6764          1.1  christos     { Bad_Opcode },
   6765          1.1  christos     { Bad_Opcode },
   6766          1.1  christos     { Bad_Opcode },
   6767          1.1  christos     { Bad_Opcode },
   6768          1.1  christos     { Bad_Opcode },
   6769          1.1  christos     { Bad_Opcode },
   6770          1.1  christos     /* c0 */
   6771          1.1  christos     { Bad_Opcode },
   6772          1.1  christos     { Bad_Opcode },
   6773          1.1  christos     { Bad_Opcode },
   6774          1.1  christos     { Bad_Opcode },
   6775          1.1  christos     { Bad_Opcode },
   6776          1.1  christos     { Bad_Opcode },
   6777          1.1  christos     { Bad_Opcode },
   6778          1.1  christos     { Bad_Opcode },
   6779          1.1  christos     /* c8 */
   6780  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38C8) },
   6781  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38C9) },
   6782  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38CA) },
   6783  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38CB) },
   6784  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38CC) },
   6785  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38CD) },
   6786          1.1  christos     { Bad_Opcode },
   6787          1.1  christos     { Bad_Opcode },
   6788          1.1  christos     /* d0 */
   6789          1.1  christos     { Bad_Opcode },
   6790          1.1  christos     { Bad_Opcode },
   6791          1.1  christos     { Bad_Opcode },
   6792          1.1  christos     { Bad_Opcode },
   6793          1.1  christos     { Bad_Opcode },
   6794          1.1  christos     { Bad_Opcode },
   6795          1.1  christos     { Bad_Opcode },
   6796          1.1  christos     { Bad_Opcode },
   6797          1.1  christos     /* d8 */
   6798          1.1  christos     { Bad_Opcode },
   6799          1.1  christos     { Bad_Opcode },
   6800          1.1  christos     { Bad_Opcode },
   6801          1.1  christos     { PREFIX_TABLE (PREFIX_0F38DB) },
   6802          1.1  christos     { PREFIX_TABLE (PREFIX_0F38DC) },
   6803          1.1  christos     { PREFIX_TABLE (PREFIX_0F38DD) },
   6804          1.1  christos     { PREFIX_TABLE (PREFIX_0F38DE) },
   6805          1.1  christos     { PREFIX_TABLE (PREFIX_0F38DF) },
   6806          1.1  christos     /* e0 */
   6807          1.1  christos     { Bad_Opcode },
   6808          1.1  christos     { Bad_Opcode },
   6809          1.1  christos     { Bad_Opcode },
   6810          1.1  christos     { Bad_Opcode },
   6811          1.1  christos     { Bad_Opcode },
   6812          1.1  christos     { Bad_Opcode },
   6813          1.1  christos     { Bad_Opcode },
   6814          1.1  christos     { Bad_Opcode },
   6815          1.1  christos     /* e8 */
   6816          1.1  christos     { Bad_Opcode },
   6817          1.1  christos     { Bad_Opcode },
   6818          1.1  christos     { Bad_Opcode },
   6819          1.1  christos     { Bad_Opcode },
   6820          1.1  christos     { Bad_Opcode },
   6821          1.1  christos     { Bad_Opcode },
   6822          1.1  christos     { Bad_Opcode },
   6823          1.1  christos     { Bad_Opcode },
   6824          1.1  christos     /* f0 */
   6825          1.1  christos     { PREFIX_TABLE (PREFIX_0F38F0) },
   6826          1.1  christos     { PREFIX_TABLE (PREFIX_0F38F1) },
   6827          1.1  christos     { Bad_Opcode },
   6828          1.1  christos     { Bad_Opcode },
   6829          1.1  christos     { Bad_Opcode },
   6830          1.1  christos     { Bad_Opcode },
   6831  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F38F6) },
   6832          1.1  christos     { Bad_Opcode },
   6833          1.1  christos     /* f8 */
   6834          1.1  christos     { Bad_Opcode },
   6835          1.1  christos     { Bad_Opcode },
   6836          1.1  christos     { Bad_Opcode },
   6837          1.1  christos     { Bad_Opcode },
   6838          1.1  christos     { Bad_Opcode },
   6839          1.1  christos     { Bad_Opcode },
   6840          1.1  christos     { Bad_Opcode },
   6841          1.1  christos     { Bad_Opcode },
   6842          1.1  christos   },
   6843          1.1  christos   /* THREE_BYTE_0F3A */
   6844          1.1  christos   {
   6845          1.1  christos     /* 00 */
   6846          1.1  christos     { Bad_Opcode },
   6847          1.1  christos     { Bad_Opcode },
   6848          1.1  christos     { Bad_Opcode },
   6849          1.1  christos     { Bad_Opcode },
   6850          1.1  christos     { Bad_Opcode },
   6851          1.1  christos     { Bad_Opcode },
   6852          1.1  christos     { Bad_Opcode },
   6853          1.1  christos     { Bad_Opcode },
   6854          1.1  christos     /* 08 */
   6855          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A08) },
   6856          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A09) },
   6857          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A0A) },
   6858          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A0B) },
   6859          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A0C) },
   6860          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A0D) },
   6861          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A0E) },
   6862          1.1  christos     { "palignr",	{ MX, EM, Ib } },
   6863          1.1  christos     /* 10 */
   6864          1.1  christos     { Bad_Opcode },
   6865          1.1  christos     { Bad_Opcode },
   6866          1.1  christos     { Bad_Opcode },
   6867          1.1  christos     { Bad_Opcode },
   6868          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A14) },
   6869          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A15) },
   6870          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A16) },
   6871          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A17) },
   6872          1.1  christos     /* 18 */
   6873          1.1  christos     { Bad_Opcode },
   6874          1.1  christos     { Bad_Opcode },
   6875          1.1  christos     { Bad_Opcode },
   6876          1.1  christos     { Bad_Opcode },
   6877          1.1  christos     { Bad_Opcode },
   6878          1.1  christos     { Bad_Opcode },
   6879          1.1  christos     { Bad_Opcode },
   6880          1.1  christos     { Bad_Opcode },
   6881          1.1  christos     /* 20 */
   6882          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A20) },
   6883          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A21) },
   6884          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A22) },
   6885          1.1  christos     { Bad_Opcode },
   6886          1.1  christos     { Bad_Opcode },
   6887          1.1  christos     { Bad_Opcode },
   6888          1.1  christos     { Bad_Opcode },
   6889          1.1  christos     { Bad_Opcode },
   6890          1.1  christos     /* 28 */
   6891          1.1  christos     { Bad_Opcode },
   6892          1.1  christos     { Bad_Opcode },
   6893          1.1  christos     { Bad_Opcode },
   6894          1.1  christos     { Bad_Opcode },
   6895          1.1  christos     { Bad_Opcode },
   6896          1.1  christos     { Bad_Opcode },
   6897          1.1  christos     { Bad_Opcode },
   6898          1.1  christos     { Bad_Opcode },
   6899          1.1  christos     /* 30 */
   6900          1.1  christos     { Bad_Opcode },
   6901          1.1  christos     { Bad_Opcode },
   6902          1.1  christos     { Bad_Opcode },
   6903          1.1  christos     { Bad_Opcode },
   6904          1.1  christos     { Bad_Opcode },
   6905          1.1  christos     { Bad_Opcode },
   6906          1.1  christos     { Bad_Opcode },
   6907          1.1  christos     { Bad_Opcode },
   6908          1.1  christos     /* 38 */
   6909          1.1  christos     { Bad_Opcode },
   6910          1.1  christos     { Bad_Opcode },
   6911          1.1  christos     { Bad_Opcode },
   6912          1.1  christos     { Bad_Opcode },
   6913          1.1  christos     { Bad_Opcode },
   6914          1.1  christos     { Bad_Opcode },
   6915          1.1  christos     { Bad_Opcode },
   6916          1.1  christos     { Bad_Opcode },
   6917          1.1  christos     /* 40 */
   6918          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A40) },
   6919          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A41) },
   6920          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A42) },
   6921          1.1  christos     { Bad_Opcode },
   6922          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A44) },
   6923          1.1  christos     { Bad_Opcode },
   6924          1.1  christos     { Bad_Opcode },
   6925          1.1  christos     { Bad_Opcode },
   6926          1.1  christos     /* 48 */
   6927          1.1  christos     { Bad_Opcode },
   6928          1.1  christos     { Bad_Opcode },
   6929          1.1  christos     { Bad_Opcode },
   6930          1.1  christos     { Bad_Opcode },
   6931          1.1  christos     { Bad_Opcode },
   6932          1.1  christos     { Bad_Opcode },
   6933          1.1  christos     { Bad_Opcode },
   6934          1.1  christos     { Bad_Opcode },
   6935          1.1  christos     /* 50 */
   6936          1.1  christos     { Bad_Opcode },
   6937          1.1  christos     { Bad_Opcode },
   6938          1.1  christos     { Bad_Opcode },
   6939          1.1  christos     { Bad_Opcode },
   6940          1.1  christos     { Bad_Opcode },
   6941          1.1  christos     { Bad_Opcode },
   6942          1.1  christos     { Bad_Opcode },
   6943          1.1  christos     { Bad_Opcode },
   6944          1.1  christos     /* 58 */
   6945          1.1  christos     { Bad_Opcode },
   6946          1.1  christos     { Bad_Opcode },
   6947          1.1  christos     { Bad_Opcode },
   6948          1.1  christos     { Bad_Opcode },
   6949          1.1  christos     { Bad_Opcode },
   6950          1.1  christos     { Bad_Opcode },
   6951          1.1  christos     { Bad_Opcode },
   6952          1.1  christos     { Bad_Opcode },
   6953          1.1  christos     /* 60 */
   6954          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A60) },
   6955          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A61) },
   6956          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A62) },
   6957          1.1  christos     { PREFIX_TABLE (PREFIX_0F3A63) },
   6958          1.1  christos     { Bad_Opcode },
   6959          1.1  christos     { Bad_Opcode },
   6960          1.1  christos     { Bad_Opcode },
   6961          1.1  christos     { Bad_Opcode },
   6962          1.1  christos     /* 68 */
   6963          1.1  christos     { Bad_Opcode },
   6964          1.1  christos     { Bad_Opcode },
   6965          1.1  christos     { Bad_Opcode },
   6966          1.1  christos     { Bad_Opcode },
   6967          1.1  christos     { Bad_Opcode },
   6968          1.1  christos     { Bad_Opcode },
   6969          1.1  christos     { Bad_Opcode },
   6970          1.1  christos     { Bad_Opcode },
   6971          1.1  christos     /* 70 */
   6972          1.1  christos     { Bad_Opcode },
   6973          1.1  christos     { Bad_Opcode },
   6974          1.1  christos     { Bad_Opcode },
   6975          1.1  christos     { Bad_Opcode },
   6976          1.1  christos     { Bad_Opcode },
   6977          1.1  christos     { Bad_Opcode },
   6978          1.1  christos     { Bad_Opcode },
   6979          1.1  christos     { Bad_Opcode },
   6980          1.1  christos     /* 78 */
   6981          1.1  christos     { Bad_Opcode },
   6982          1.1  christos     { Bad_Opcode },
   6983          1.1  christos     { Bad_Opcode },
   6984          1.1  christos     { Bad_Opcode },
   6985          1.1  christos     { Bad_Opcode },
   6986          1.1  christos     { Bad_Opcode },
   6987          1.1  christos     { Bad_Opcode },
   6988          1.1  christos     { Bad_Opcode },
   6989          1.1  christos     /* 80 */
   6990          1.1  christos     { Bad_Opcode },
   6991          1.1  christos     { Bad_Opcode },
   6992          1.1  christos     { Bad_Opcode },
   6993          1.1  christos     { Bad_Opcode },
   6994          1.1  christos     { Bad_Opcode },
   6995          1.1  christos     { Bad_Opcode },
   6996          1.1  christos     { Bad_Opcode },
   6997          1.1  christos     { Bad_Opcode },
   6998          1.1  christos     /* 88 */
   6999          1.1  christos     { Bad_Opcode },
   7000          1.1  christos     { Bad_Opcode },
   7001          1.1  christos     { Bad_Opcode },
   7002          1.1  christos     { Bad_Opcode },
   7003          1.1  christos     { Bad_Opcode },
   7004          1.1  christos     { Bad_Opcode },
   7005          1.1  christos     { Bad_Opcode },
   7006          1.1  christos     { Bad_Opcode },
   7007          1.1  christos     /* 90 */
   7008          1.1  christos     { Bad_Opcode },
   7009          1.1  christos     { Bad_Opcode },
   7010          1.1  christos     { Bad_Opcode },
   7011          1.1  christos     { Bad_Opcode },
   7012          1.1  christos     { Bad_Opcode },
   7013          1.1  christos     { Bad_Opcode },
   7014          1.1  christos     { Bad_Opcode },
   7015          1.1  christos     { Bad_Opcode },
   7016          1.1  christos     /* 98 */
   7017          1.1  christos     { Bad_Opcode },
   7018          1.1  christos     { Bad_Opcode },
   7019          1.1  christos     { Bad_Opcode },
   7020          1.1  christos     { Bad_Opcode },
   7021          1.1  christos     { Bad_Opcode },
   7022          1.1  christos     { Bad_Opcode },
   7023          1.1  christos     { Bad_Opcode },
   7024          1.1  christos     { Bad_Opcode },
   7025          1.1  christos     /* a0 */
   7026          1.1  christos     { Bad_Opcode },
   7027          1.1  christos     { Bad_Opcode },
   7028          1.1  christos     { Bad_Opcode },
   7029          1.1  christos     { Bad_Opcode },
   7030          1.1  christos     { Bad_Opcode },
   7031          1.1  christos     { Bad_Opcode },
   7032          1.1  christos     { Bad_Opcode },
   7033          1.1  christos     { Bad_Opcode },
   7034          1.1  christos     /* a8 */
   7035          1.1  christos     { Bad_Opcode },
   7036          1.1  christos     { Bad_Opcode },
   7037          1.1  christos     { Bad_Opcode },
   7038          1.1  christos     { Bad_Opcode },
   7039          1.1  christos     { Bad_Opcode },
   7040          1.1  christos     { Bad_Opcode },
   7041          1.1  christos     { Bad_Opcode },
   7042          1.1  christos     { Bad_Opcode },
   7043          1.1  christos     /* b0 */
   7044          1.1  christos     { Bad_Opcode },
   7045          1.1  christos     { Bad_Opcode },
   7046          1.1  christos     { Bad_Opcode },
   7047          1.1  christos     { Bad_Opcode },
   7048          1.1  christos     { Bad_Opcode },
   7049          1.1  christos     { Bad_Opcode },
   7050          1.1  christos     { Bad_Opcode },
   7051          1.1  christos     { Bad_Opcode },
   7052          1.1  christos     /* b8 */
   7053          1.1  christos     { Bad_Opcode },
   7054          1.1  christos     { Bad_Opcode },
   7055          1.1  christos     { Bad_Opcode },
   7056          1.1  christos     { Bad_Opcode },
   7057          1.1  christos     { Bad_Opcode },
   7058          1.1  christos     { Bad_Opcode },
   7059          1.1  christos     { Bad_Opcode },
   7060          1.1  christos     { Bad_Opcode },
   7061          1.1  christos     /* c0 */
   7062          1.1  christos     { Bad_Opcode },
   7063          1.1  christos     { Bad_Opcode },
   7064          1.1  christos     { Bad_Opcode },
   7065          1.1  christos     { Bad_Opcode },
   7066          1.1  christos     { Bad_Opcode },
   7067          1.1  christos     { Bad_Opcode },
   7068          1.1  christos     { Bad_Opcode },
   7069          1.1  christos     { Bad_Opcode },
   7070          1.1  christos     /* c8 */
   7071          1.1  christos     { Bad_Opcode },
   7072          1.1  christos     { Bad_Opcode },
   7073          1.1  christos     { Bad_Opcode },
   7074          1.1  christos     { Bad_Opcode },
   7075  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_0F3ACC) },
   7076          1.1  christos     { Bad_Opcode },
   7077          1.1  christos     { Bad_Opcode },
   7078          1.1  christos     { Bad_Opcode },
   7079          1.1  christos     /* d0 */
   7080          1.1  christos     { Bad_Opcode },
   7081          1.1  christos     { Bad_Opcode },
   7082          1.1  christos     { Bad_Opcode },
   7083          1.1  christos     { Bad_Opcode },
   7084          1.1  christos     { Bad_Opcode },
   7085          1.1  christos     { Bad_Opcode },
   7086          1.1  christos     { Bad_Opcode },
   7087          1.1  christos     { Bad_Opcode },
   7088          1.1  christos     /* d8 */
   7089          1.1  christos     { Bad_Opcode },
   7090          1.1  christos     { Bad_Opcode },
   7091          1.1  christos     { Bad_Opcode },
   7092          1.1  christos     { Bad_Opcode },
   7093          1.1  christos     { Bad_Opcode },
   7094          1.1  christos     { Bad_Opcode },
   7095          1.1  christos     { Bad_Opcode },
   7096          1.1  christos     { PREFIX_TABLE (PREFIX_0F3ADF) },
   7097          1.1  christos     /* e0 */
   7098          1.1  christos     { Bad_Opcode },
   7099          1.1  christos     { Bad_Opcode },
   7100          1.1  christos     { Bad_Opcode },
   7101          1.1  christos     { Bad_Opcode },
   7102          1.1  christos     { Bad_Opcode },
   7103          1.1  christos     { Bad_Opcode },
   7104          1.1  christos     { Bad_Opcode },
   7105          1.1  christos     { Bad_Opcode },
   7106          1.1  christos     /* e8 */
   7107          1.1  christos     { Bad_Opcode },
   7108          1.1  christos     { Bad_Opcode },
   7109          1.1  christos     { Bad_Opcode },
   7110          1.1  christos     { Bad_Opcode },
   7111          1.1  christos     { Bad_Opcode },
   7112          1.1  christos     { Bad_Opcode },
   7113          1.1  christos     { Bad_Opcode },
   7114          1.1  christos     { Bad_Opcode },
   7115          1.1  christos     /* f0 */
   7116          1.1  christos     { Bad_Opcode },
   7117          1.1  christos     { Bad_Opcode },
   7118          1.1  christos     { Bad_Opcode },
   7119          1.1  christos     { Bad_Opcode },
   7120          1.1  christos     { Bad_Opcode },
   7121          1.1  christos     { Bad_Opcode },
   7122          1.1  christos     { Bad_Opcode },
   7123          1.1  christos     { Bad_Opcode },
   7124          1.1  christos     /* f8 */
   7125          1.1  christos     { Bad_Opcode },
   7126          1.1  christos     { Bad_Opcode },
   7127          1.1  christos     { Bad_Opcode },
   7128          1.1  christos     { Bad_Opcode },
   7129          1.1  christos     { Bad_Opcode },
   7130          1.1  christos     { Bad_Opcode },
   7131          1.1  christos     { Bad_Opcode },
   7132          1.1  christos     { Bad_Opcode },
   7133          1.1  christos   },
   7134          1.1  christos 
   7135          1.1  christos   /* THREE_BYTE_0F7A */
   7136          1.1  christos   {
   7137          1.1  christos     /* 00 */
   7138          1.1  christos     { Bad_Opcode },
   7139          1.1  christos     { Bad_Opcode },
   7140          1.1  christos     { Bad_Opcode },
   7141          1.1  christos     { Bad_Opcode },
   7142          1.1  christos     { Bad_Opcode },
   7143          1.1  christos     { Bad_Opcode },
   7144          1.1  christos     { Bad_Opcode },
   7145          1.1  christos     { Bad_Opcode },
   7146          1.1  christos     /* 08 */
   7147          1.1  christos     { Bad_Opcode },
   7148          1.1  christos     { Bad_Opcode },
   7149          1.1  christos     { Bad_Opcode },
   7150          1.1  christos     { Bad_Opcode },
   7151          1.1  christos     { Bad_Opcode },
   7152          1.1  christos     { Bad_Opcode },
   7153          1.1  christos     { Bad_Opcode },
   7154          1.1  christos     { Bad_Opcode },
   7155          1.1  christos     /* 10 */
   7156          1.1  christos     { Bad_Opcode },
   7157          1.1  christos     { Bad_Opcode },
   7158          1.1  christos     { Bad_Opcode },
   7159          1.1  christos     { Bad_Opcode },
   7160          1.1  christos     { Bad_Opcode },
   7161          1.1  christos     { Bad_Opcode },
   7162          1.1  christos     { Bad_Opcode },
   7163          1.1  christos     { Bad_Opcode },
   7164          1.1  christos     /* 18 */
   7165          1.1  christos     { Bad_Opcode },
   7166          1.1  christos     { Bad_Opcode },
   7167          1.1  christos     { Bad_Opcode },
   7168          1.1  christos     { Bad_Opcode },
   7169          1.1  christos     { Bad_Opcode },
   7170          1.1  christos     { Bad_Opcode },
   7171          1.1  christos     { Bad_Opcode },
   7172          1.1  christos     { Bad_Opcode },
   7173          1.1  christos     /* 20 */
   7174          1.1  christos     { "ptest",		{ XX } },
   7175          1.1  christos     { Bad_Opcode },
   7176          1.1  christos     { Bad_Opcode },
   7177          1.1  christos     { Bad_Opcode },
   7178          1.1  christos     { Bad_Opcode },
   7179          1.1  christos     { Bad_Opcode },
   7180          1.1  christos     { Bad_Opcode },
   7181          1.1  christos     { Bad_Opcode },
   7182          1.1  christos     /* 28 */
   7183          1.1  christos     { Bad_Opcode },
   7184          1.1  christos     { Bad_Opcode },
   7185          1.1  christos     { Bad_Opcode },
   7186          1.1  christos     { Bad_Opcode },
   7187          1.1  christos     { Bad_Opcode },
   7188          1.1  christos     { Bad_Opcode },
   7189          1.1  christos     { Bad_Opcode },
   7190          1.1  christos     { Bad_Opcode },
   7191          1.1  christos     /* 30 */
   7192          1.1  christos     { Bad_Opcode },
   7193          1.1  christos     { Bad_Opcode },
   7194          1.1  christos     { Bad_Opcode },
   7195          1.1  christos     { Bad_Opcode },
   7196          1.1  christos     { Bad_Opcode },
   7197          1.1  christos     { Bad_Opcode },
   7198          1.1  christos     { Bad_Opcode },
   7199          1.1  christos     { Bad_Opcode },
   7200          1.1  christos     /* 38 */
   7201          1.1  christos     { Bad_Opcode },
   7202          1.1  christos     { Bad_Opcode },
   7203          1.1  christos     { Bad_Opcode },
   7204          1.1  christos     { Bad_Opcode },
   7205          1.1  christos     { Bad_Opcode },
   7206          1.1  christos     { Bad_Opcode },
   7207          1.1  christos     { Bad_Opcode },
   7208          1.1  christos     { Bad_Opcode },
   7209          1.1  christos     /* 40 */
   7210          1.1  christos     { Bad_Opcode },
   7211          1.1  christos     { "phaddbw",	{ XM, EXq } },
   7212          1.1  christos     { "phaddbd",	{ XM, EXq } },
   7213          1.1  christos     { "phaddbq",	{ XM, EXq } },
   7214          1.1  christos     { Bad_Opcode },
   7215          1.1  christos     { Bad_Opcode },
   7216          1.1  christos     { "phaddwd",	{ XM, EXq } },
   7217          1.1  christos     { "phaddwq",	{ XM, EXq } },
   7218          1.1  christos     /* 48 */
   7219          1.1  christos     { Bad_Opcode },
   7220          1.1  christos     { Bad_Opcode },
   7221          1.1  christos     { Bad_Opcode },
   7222          1.1  christos     { "phadddq",	{ XM, EXq } },
   7223          1.1  christos     { Bad_Opcode },
   7224          1.1  christos     { Bad_Opcode },
   7225          1.1  christos     { Bad_Opcode },
   7226          1.1  christos     { Bad_Opcode },
   7227          1.1  christos     /* 50 */
   7228          1.1  christos     { Bad_Opcode },
   7229          1.1  christos     { "phaddubw",	{ XM, EXq } },
   7230          1.1  christos     { "phaddubd",	{ XM, EXq } },
   7231          1.1  christos     { "phaddubq",	{ XM, EXq } },
   7232          1.1  christos     { Bad_Opcode },
   7233          1.1  christos     { Bad_Opcode },
   7234          1.1  christos     { "phadduwd",	{ XM, EXq } },
   7235          1.1  christos     { "phadduwq",	{ XM, EXq } },
   7236          1.1  christos     /* 58 */
   7237          1.1  christos     { Bad_Opcode },
   7238          1.1  christos     { Bad_Opcode },
   7239          1.1  christos     { Bad_Opcode },
   7240          1.1  christos     { "phaddudq",	{ XM, EXq } },
   7241          1.1  christos     { Bad_Opcode },
   7242          1.1  christos     { Bad_Opcode },
   7243          1.1  christos     { Bad_Opcode },
   7244          1.1  christos     { Bad_Opcode },
   7245          1.1  christos     /* 60 */
   7246          1.1  christos     { Bad_Opcode },
   7247          1.1  christos     { "phsubbw",	{ XM, EXq } },
   7248          1.1  christos     { "phsubbd",	{ XM, EXq } },
   7249          1.1  christos     { "phsubbq",	{ XM, EXq } },
   7250          1.1  christos     { Bad_Opcode },
   7251          1.1  christos     { Bad_Opcode },
   7252          1.1  christos     { Bad_Opcode },
   7253          1.1  christos     { Bad_Opcode },
   7254          1.1  christos     /* 68 */
   7255          1.1  christos     { Bad_Opcode },
   7256          1.1  christos     { Bad_Opcode },
   7257          1.1  christos     { Bad_Opcode },
   7258          1.1  christos     { Bad_Opcode },
   7259          1.1  christos     { Bad_Opcode },
   7260          1.1  christos     { Bad_Opcode },
   7261          1.1  christos     { Bad_Opcode },
   7262          1.1  christos     { Bad_Opcode },
   7263          1.1  christos     /* 70 */
   7264          1.1  christos     { Bad_Opcode },
   7265          1.1  christos     { Bad_Opcode },
   7266          1.1  christos     { Bad_Opcode },
   7267          1.1  christos     { Bad_Opcode },
   7268          1.1  christos     { Bad_Opcode },
   7269          1.1  christos     { Bad_Opcode },
   7270          1.1  christos     { Bad_Opcode },
   7271          1.1  christos     { Bad_Opcode },
   7272          1.1  christos     /* 78 */
   7273          1.1  christos     { Bad_Opcode },
   7274          1.1  christos     { Bad_Opcode },
   7275          1.1  christos     { Bad_Opcode },
   7276          1.1  christos     { Bad_Opcode },
   7277          1.1  christos     { Bad_Opcode },
   7278          1.1  christos     { Bad_Opcode },
   7279          1.1  christos     { Bad_Opcode },
   7280          1.1  christos     { Bad_Opcode },
   7281          1.1  christos     /* 80 */
   7282          1.1  christos     { Bad_Opcode },
   7283          1.1  christos     { Bad_Opcode },
   7284          1.1  christos     { Bad_Opcode },
   7285          1.1  christos     { Bad_Opcode },
   7286          1.1  christos     { Bad_Opcode },
   7287          1.1  christos     { Bad_Opcode },
   7288          1.1  christos     { Bad_Opcode },
   7289          1.1  christos     { Bad_Opcode },
   7290          1.1  christos     /* 88 */
   7291          1.1  christos     { Bad_Opcode },
   7292          1.1  christos     { Bad_Opcode },
   7293          1.1  christos     { Bad_Opcode },
   7294          1.1  christos     { Bad_Opcode },
   7295          1.1  christos     { Bad_Opcode },
   7296          1.1  christos     { Bad_Opcode },
   7297          1.1  christos     { Bad_Opcode },
   7298          1.1  christos     { Bad_Opcode },
   7299          1.1  christos     /* 90 */
   7300          1.1  christos     { Bad_Opcode },
   7301          1.1  christos     { Bad_Opcode },
   7302          1.1  christos     { Bad_Opcode },
   7303          1.1  christos     { Bad_Opcode },
   7304          1.1  christos     { Bad_Opcode },
   7305          1.1  christos     { Bad_Opcode },
   7306          1.1  christos     { Bad_Opcode },
   7307          1.1  christos     { Bad_Opcode },
   7308          1.1  christos     /* 98 */
   7309          1.1  christos     { Bad_Opcode },
   7310          1.1  christos     { Bad_Opcode },
   7311          1.1  christos     { Bad_Opcode },
   7312          1.1  christos     { Bad_Opcode },
   7313          1.1  christos     { Bad_Opcode },
   7314          1.1  christos     { Bad_Opcode },
   7315          1.1  christos     { Bad_Opcode },
   7316          1.1  christos     { Bad_Opcode },
   7317          1.1  christos     /* a0 */
   7318          1.1  christos     { Bad_Opcode },
   7319          1.1  christos     { Bad_Opcode },
   7320          1.1  christos     { Bad_Opcode },
   7321          1.1  christos     { Bad_Opcode },
   7322          1.1  christos     { Bad_Opcode },
   7323          1.1  christos     { Bad_Opcode },
   7324          1.1  christos     { Bad_Opcode },
   7325          1.1  christos     { Bad_Opcode },
   7326          1.1  christos     /* a8 */
   7327          1.1  christos     { Bad_Opcode },
   7328          1.1  christos     { Bad_Opcode },
   7329          1.1  christos     { Bad_Opcode },
   7330          1.1  christos     { Bad_Opcode },
   7331          1.1  christos     { Bad_Opcode },
   7332          1.1  christos     { Bad_Opcode },
   7333          1.1  christos     { Bad_Opcode },
   7334          1.1  christos     { Bad_Opcode },
   7335          1.1  christos     /* b0 */
   7336          1.1  christos     { Bad_Opcode },
   7337          1.1  christos     { Bad_Opcode },
   7338          1.1  christos     { Bad_Opcode },
   7339          1.1  christos     { Bad_Opcode },
   7340          1.1  christos     { Bad_Opcode },
   7341          1.1  christos     { Bad_Opcode },
   7342          1.1  christos     { Bad_Opcode },
   7343          1.1  christos     { Bad_Opcode },
   7344          1.1  christos     /* b8 */
   7345          1.1  christos     { Bad_Opcode },
   7346          1.1  christos     { Bad_Opcode },
   7347          1.1  christos     { Bad_Opcode },
   7348          1.1  christos     { Bad_Opcode },
   7349          1.1  christos     { Bad_Opcode },
   7350          1.1  christos     { Bad_Opcode },
   7351          1.1  christos     { Bad_Opcode },
   7352          1.1  christos     { Bad_Opcode },
   7353          1.1  christos     /* c0 */
   7354          1.1  christos     { Bad_Opcode },
   7355          1.1  christos     { Bad_Opcode },
   7356          1.1  christos     { Bad_Opcode },
   7357          1.1  christos     { Bad_Opcode },
   7358          1.1  christos     { Bad_Opcode },
   7359          1.1  christos     { Bad_Opcode },
   7360          1.1  christos     { Bad_Opcode },
   7361          1.1  christos     { Bad_Opcode },
   7362          1.1  christos     /* c8 */
   7363          1.1  christos     { Bad_Opcode },
   7364          1.1  christos     { Bad_Opcode },
   7365          1.1  christos     { Bad_Opcode },
   7366          1.1  christos     { Bad_Opcode },
   7367          1.1  christos     { Bad_Opcode },
   7368          1.1  christos     { Bad_Opcode },
   7369          1.1  christos     { Bad_Opcode },
   7370          1.1  christos     { Bad_Opcode },
   7371          1.1  christos     /* d0 */
   7372          1.1  christos     { Bad_Opcode },
   7373          1.1  christos     { Bad_Opcode },
   7374          1.1  christos     { Bad_Opcode },
   7375          1.1  christos     { Bad_Opcode },
   7376          1.1  christos     { Bad_Opcode },
   7377          1.1  christos     { Bad_Opcode },
   7378          1.1  christos     { Bad_Opcode },
   7379          1.1  christos     { Bad_Opcode },
   7380          1.1  christos     /* d8 */
   7381          1.1  christos     { Bad_Opcode },
   7382          1.1  christos     { Bad_Opcode },
   7383          1.1  christos     { Bad_Opcode },
   7384          1.1  christos     { Bad_Opcode },
   7385          1.1  christos     { Bad_Opcode },
   7386          1.1  christos     { Bad_Opcode },
   7387          1.1  christos     { Bad_Opcode },
   7388          1.1  christos     { Bad_Opcode },
   7389          1.1  christos     /* e0 */
   7390          1.1  christos     { Bad_Opcode },
   7391          1.1  christos     { Bad_Opcode },
   7392          1.1  christos     { Bad_Opcode },
   7393          1.1  christos     { Bad_Opcode },
   7394          1.1  christos     { Bad_Opcode },
   7395          1.1  christos     { Bad_Opcode },
   7396          1.1  christos     { Bad_Opcode },
   7397          1.1  christos     { Bad_Opcode },
   7398          1.1  christos     /* e8 */
   7399          1.1  christos     { Bad_Opcode },
   7400          1.1  christos     { Bad_Opcode },
   7401          1.1  christos     { Bad_Opcode },
   7402          1.1  christos     { Bad_Opcode },
   7403          1.1  christos     { Bad_Opcode },
   7404          1.1  christos     { Bad_Opcode },
   7405          1.1  christos     { Bad_Opcode },
   7406          1.1  christos     { Bad_Opcode },
   7407          1.1  christos     /* f0 */
   7408          1.1  christos     { Bad_Opcode },
   7409          1.1  christos     { Bad_Opcode },
   7410          1.1  christos     { Bad_Opcode },
   7411          1.1  christos     { Bad_Opcode },
   7412          1.1  christos     { Bad_Opcode },
   7413          1.1  christos     { Bad_Opcode },
   7414          1.1  christos     { Bad_Opcode },
   7415          1.1  christos     { Bad_Opcode },
   7416          1.1  christos     /* f8 */
   7417          1.1  christos     { Bad_Opcode },
   7418          1.1  christos     { Bad_Opcode },
   7419          1.1  christos     { Bad_Opcode },
   7420          1.1  christos     { Bad_Opcode },
   7421          1.1  christos     { Bad_Opcode },
   7422          1.1  christos     { Bad_Opcode },
   7423          1.1  christos     { Bad_Opcode },
   7424          1.1  christos     { Bad_Opcode },
   7425          1.1  christos   },
   7426          1.1  christos };
   7427          1.1  christos 
   7428          1.1  christos static const struct dis386 xop_table[][256] = {
   7429          1.1  christos   /* XOP_08 */
   7430          1.1  christos   {
   7431          1.1  christos     /* 00 */
   7432          1.1  christos     { Bad_Opcode },
   7433          1.1  christos     { Bad_Opcode },
   7434          1.1  christos     { Bad_Opcode },
   7435          1.1  christos     { Bad_Opcode },
   7436          1.1  christos     { Bad_Opcode },
   7437          1.1  christos     { Bad_Opcode },
   7438          1.1  christos     { Bad_Opcode },
   7439          1.1  christos     { Bad_Opcode },
   7440          1.1  christos     /* 08 */
   7441          1.1  christos     { Bad_Opcode },
   7442          1.1  christos     { Bad_Opcode },
   7443          1.1  christos     { Bad_Opcode },
   7444          1.1  christos     { Bad_Opcode },
   7445          1.1  christos     { Bad_Opcode },
   7446          1.1  christos     { Bad_Opcode },
   7447          1.1  christos     { Bad_Opcode },
   7448          1.1  christos     { Bad_Opcode },
   7449          1.1  christos     /* 10 */
   7450  1.1.1.1.8.1       tls     { Bad_Opcode },
   7451          1.1  christos     { Bad_Opcode },
   7452          1.1  christos     { Bad_Opcode },
   7453          1.1  christos     { Bad_Opcode },
   7454          1.1  christos     { Bad_Opcode },
   7455          1.1  christos     { Bad_Opcode },
   7456          1.1  christos     { Bad_Opcode },
   7457          1.1  christos     { Bad_Opcode },
   7458          1.1  christos     /* 18 */
   7459          1.1  christos     { Bad_Opcode },
   7460          1.1  christos     { Bad_Opcode },
   7461          1.1  christos     { Bad_Opcode },
   7462          1.1  christos     { Bad_Opcode },
   7463          1.1  christos     { Bad_Opcode },
   7464          1.1  christos     { Bad_Opcode },
   7465          1.1  christos     { Bad_Opcode },
   7466          1.1  christos     { Bad_Opcode },
   7467          1.1  christos     /* 20 */
   7468          1.1  christos     { Bad_Opcode },
   7469          1.1  christos     { Bad_Opcode },
   7470          1.1  christos     { Bad_Opcode },
   7471          1.1  christos     { Bad_Opcode },
   7472          1.1  christos     { Bad_Opcode },
   7473          1.1  christos     { Bad_Opcode },
   7474          1.1  christos     { Bad_Opcode },
   7475          1.1  christos     { Bad_Opcode },
   7476          1.1  christos     /* 28 */
   7477          1.1  christos     { Bad_Opcode },
   7478          1.1  christos     { Bad_Opcode },
   7479          1.1  christos     { Bad_Opcode },
   7480          1.1  christos     { Bad_Opcode },
   7481          1.1  christos     { Bad_Opcode },
   7482          1.1  christos     { Bad_Opcode },
   7483          1.1  christos     { Bad_Opcode },
   7484          1.1  christos     { Bad_Opcode },
   7485          1.1  christos     /* 30 */
   7486          1.1  christos     { Bad_Opcode },
   7487          1.1  christos     { Bad_Opcode },
   7488          1.1  christos     { Bad_Opcode },
   7489          1.1  christos     { Bad_Opcode },
   7490          1.1  christos     { Bad_Opcode },
   7491          1.1  christos     { Bad_Opcode },
   7492          1.1  christos     { Bad_Opcode },
   7493          1.1  christos     { Bad_Opcode },
   7494          1.1  christos     /* 38 */
   7495          1.1  christos     { Bad_Opcode },
   7496          1.1  christos     { Bad_Opcode },
   7497          1.1  christos     { Bad_Opcode },
   7498          1.1  christos     { Bad_Opcode },
   7499          1.1  christos     { Bad_Opcode },
   7500          1.1  christos     { Bad_Opcode },
   7501          1.1  christos     { Bad_Opcode },
   7502          1.1  christos     { Bad_Opcode },
   7503          1.1  christos     /* 40 */
   7504          1.1  christos     { Bad_Opcode },
   7505          1.1  christos     { Bad_Opcode },
   7506          1.1  christos     { Bad_Opcode },
   7507          1.1  christos     { Bad_Opcode },
   7508          1.1  christos     { Bad_Opcode },
   7509          1.1  christos     { Bad_Opcode },
   7510          1.1  christos     { Bad_Opcode },
   7511          1.1  christos     { Bad_Opcode },
   7512          1.1  christos     /* 48 */
   7513          1.1  christos     { Bad_Opcode },
   7514          1.1  christos     { Bad_Opcode },
   7515          1.1  christos     { Bad_Opcode },
   7516          1.1  christos     { Bad_Opcode },
   7517          1.1  christos     { Bad_Opcode },
   7518          1.1  christos     { Bad_Opcode },
   7519          1.1  christos     { Bad_Opcode },
   7520          1.1  christos     { Bad_Opcode },
   7521          1.1  christos     /* 50 */
   7522          1.1  christos     { Bad_Opcode },
   7523          1.1  christos     { Bad_Opcode },
   7524          1.1  christos     { Bad_Opcode },
   7525          1.1  christos     { Bad_Opcode },
   7526          1.1  christos     { Bad_Opcode },
   7527          1.1  christos     { Bad_Opcode },
   7528          1.1  christos     { Bad_Opcode },
   7529          1.1  christos     { Bad_Opcode },
   7530          1.1  christos     /* 58 */
   7531          1.1  christos     { Bad_Opcode },
   7532          1.1  christos     { Bad_Opcode },
   7533          1.1  christos     { Bad_Opcode },
   7534          1.1  christos     { Bad_Opcode },
   7535          1.1  christos     { Bad_Opcode },
   7536          1.1  christos     { Bad_Opcode },
   7537          1.1  christos     { Bad_Opcode },
   7538          1.1  christos     { Bad_Opcode },
   7539          1.1  christos     /* 60 */
   7540          1.1  christos     { Bad_Opcode },
   7541          1.1  christos     { Bad_Opcode },
   7542          1.1  christos     { Bad_Opcode },
   7543          1.1  christos     { Bad_Opcode },
   7544          1.1  christos     { Bad_Opcode },
   7545          1.1  christos     { Bad_Opcode },
   7546          1.1  christos     { Bad_Opcode },
   7547          1.1  christos     { Bad_Opcode },
   7548          1.1  christos     /* 68 */
   7549          1.1  christos     { Bad_Opcode },
   7550          1.1  christos     { Bad_Opcode },
   7551          1.1  christos     { Bad_Opcode },
   7552          1.1  christos     { Bad_Opcode },
   7553          1.1  christos     { Bad_Opcode },
   7554          1.1  christos     { Bad_Opcode },
   7555          1.1  christos     { Bad_Opcode },
   7556          1.1  christos     { Bad_Opcode },
   7557          1.1  christos     /* 70 */
   7558          1.1  christos     { Bad_Opcode },
   7559          1.1  christos     { Bad_Opcode },
   7560          1.1  christos     { Bad_Opcode },
   7561          1.1  christos     { Bad_Opcode },
   7562          1.1  christos     { Bad_Opcode },
   7563          1.1  christos     { Bad_Opcode },
   7564          1.1  christos     { Bad_Opcode },
   7565          1.1  christos     { Bad_Opcode },
   7566          1.1  christos     /* 78 */
   7567          1.1  christos     { Bad_Opcode },
   7568          1.1  christos     { Bad_Opcode },
   7569          1.1  christos     { Bad_Opcode },
   7570          1.1  christos     { Bad_Opcode },
   7571          1.1  christos     { Bad_Opcode },
   7572          1.1  christos     { Bad_Opcode },
   7573          1.1  christos     { Bad_Opcode },
   7574          1.1  christos     { Bad_Opcode },
   7575          1.1  christos     /* 80 */
   7576          1.1  christos     { Bad_Opcode },
   7577          1.1  christos     { Bad_Opcode },
   7578          1.1  christos     { Bad_Opcode },
   7579          1.1  christos     { Bad_Opcode },
   7580          1.1  christos     { Bad_Opcode },
   7581          1.1  christos     { "vpmacssww", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7582          1.1  christos     { "vpmacsswd", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7583          1.1  christos     { "vpmacssdql", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7584          1.1  christos     /* 88 */
   7585          1.1  christos     { Bad_Opcode },
   7586          1.1  christos     { Bad_Opcode },
   7587          1.1  christos     { Bad_Opcode },
   7588          1.1  christos     { Bad_Opcode },
   7589          1.1  christos     { Bad_Opcode },
   7590          1.1  christos     { Bad_Opcode },
   7591          1.1  christos     { "vpmacssdd", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7592          1.1  christos     { "vpmacssdqh", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7593          1.1  christos     /* 90 */
   7594          1.1  christos     { Bad_Opcode },
   7595          1.1  christos     { Bad_Opcode },
   7596          1.1  christos     { Bad_Opcode },
   7597          1.1  christos     { Bad_Opcode },
   7598          1.1  christos     { Bad_Opcode },
   7599          1.1  christos     { "vpmacsww", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7600          1.1  christos     { "vpmacswd", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7601          1.1  christos     { "vpmacsdql", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7602          1.1  christos     /* 98 */
   7603          1.1  christos     { Bad_Opcode },
   7604          1.1  christos     { Bad_Opcode },
   7605          1.1  christos     { Bad_Opcode },
   7606          1.1  christos     { Bad_Opcode },
   7607          1.1  christos     { Bad_Opcode },
   7608          1.1  christos     { Bad_Opcode },
   7609          1.1  christos     { "vpmacsdd", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7610          1.1  christos     { "vpmacsdqh", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7611          1.1  christos     /* a0 */
   7612          1.1  christos     { Bad_Opcode },
   7613          1.1  christos     { Bad_Opcode },
   7614          1.1  christos     { "vpcmov", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7615          1.1  christos     { "vpperm", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7616          1.1  christos     { Bad_Opcode },
   7617          1.1  christos     { Bad_Opcode },
   7618          1.1  christos     { "vpmadcsswd", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7619          1.1  christos     { Bad_Opcode },
   7620          1.1  christos     /* a8 */
   7621          1.1  christos     { Bad_Opcode },
   7622          1.1  christos     { Bad_Opcode },
   7623          1.1  christos     { Bad_Opcode },
   7624          1.1  christos     { Bad_Opcode },
   7625          1.1  christos     { Bad_Opcode },
   7626          1.1  christos     { Bad_Opcode },
   7627          1.1  christos     { Bad_Opcode },
   7628          1.1  christos     { Bad_Opcode },
   7629          1.1  christos     /* b0 */
   7630          1.1  christos     { Bad_Opcode },
   7631          1.1  christos     { Bad_Opcode },
   7632          1.1  christos     { Bad_Opcode },
   7633          1.1  christos     { Bad_Opcode },
   7634          1.1  christos     { Bad_Opcode },
   7635          1.1  christos     { Bad_Opcode },
   7636          1.1  christos     { "vpmadcswd", 	{ XMVexW, Vex, EXVexW, EXVexW, VexI4 } },
   7637          1.1  christos     { Bad_Opcode },
   7638          1.1  christos     /* b8 */
   7639          1.1  christos     { Bad_Opcode },
   7640          1.1  christos     { Bad_Opcode },
   7641          1.1  christos     { Bad_Opcode },
   7642          1.1  christos     { Bad_Opcode },
   7643          1.1  christos     { Bad_Opcode },
   7644          1.1  christos     { Bad_Opcode },
   7645          1.1  christos     { Bad_Opcode },
   7646          1.1  christos     { Bad_Opcode },
   7647          1.1  christos     /* c0 */
   7648          1.1  christos     { "vprotb", 	{ XM, Vex_2src_1, Ib } },
   7649          1.1  christos     { "vprotw", 	{ XM, Vex_2src_1, Ib } },
   7650          1.1  christos     { "vprotd", 	{ XM, Vex_2src_1, Ib } },
   7651          1.1  christos     { "vprotq", 	{ XM, Vex_2src_1, Ib } },
   7652          1.1  christos     { Bad_Opcode },
   7653          1.1  christos     { Bad_Opcode },
   7654          1.1  christos     { Bad_Opcode },
   7655          1.1  christos     { Bad_Opcode },
   7656          1.1  christos     /* c8 */
   7657          1.1  christos     { Bad_Opcode },
   7658          1.1  christos     { Bad_Opcode },
   7659          1.1  christos     { Bad_Opcode },
   7660          1.1  christos     { Bad_Opcode },
   7661  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CC) },
   7662  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CD) },
   7663  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CE) },
   7664  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_CF) },
   7665          1.1  christos     /* d0 */
   7666          1.1  christos     { Bad_Opcode },
   7667          1.1  christos     { Bad_Opcode },
   7668          1.1  christos     { Bad_Opcode },
   7669          1.1  christos     { Bad_Opcode },
   7670          1.1  christos     { Bad_Opcode },
   7671          1.1  christos     { Bad_Opcode },
   7672          1.1  christos     { Bad_Opcode },
   7673          1.1  christos     { Bad_Opcode },
   7674          1.1  christos     /* d8 */
   7675          1.1  christos     { Bad_Opcode },
   7676          1.1  christos     { Bad_Opcode },
   7677          1.1  christos     { Bad_Opcode },
   7678          1.1  christos     { Bad_Opcode },
   7679          1.1  christos     { Bad_Opcode },
   7680          1.1  christos     { Bad_Opcode },
   7681          1.1  christos     { Bad_Opcode },
   7682          1.1  christos     { Bad_Opcode },
   7683          1.1  christos     /* e0 */
   7684          1.1  christos     { Bad_Opcode },
   7685          1.1  christos     { Bad_Opcode },
   7686          1.1  christos     { Bad_Opcode },
   7687          1.1  christos     { Bad_Opcode },
   7688          1.1  christos     { Bad_Opcode },
   7689          1.1  christos     { Bad_Opcode },
   7690          1.1  christos     { Bad_Opcode },
   7691          1.1  christos     { Bad_Opcode },
   7692          1.1  christos     /* e8 */
   7693          1.1  christos     { Bad_Opcode },
   7694          1.1  christos     { Bad_Opcode },
   7695          1.1  christos     { Bad_Opcode },
   7696          1.1  christos     { Bad_Opcode },
   7697  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_EC) },
   7698  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_ED) },
   7699  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_EE) },
   7700  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0FXOP_08_EF) },
   7701          1.1  christos     /* f0 */
   7702          1.1  christos     { Bad_Opcode },
   7703          1.1  christos     { Bad_Opcode },
   7704          1.1  christos     { Bad_Opcode },
   7705          1.1  christos     { Bad_Opcode },
   7706          1.1  christos     { Bad_Opcode },
   7707          1.1  christos     { Bad_Opcode },
   7708          1.1  christos     { Bad_Opcode },
   7709          1.1  christos     { Bad_Opcode },
   7710          1.1  christos     /* f8 */
   7711          1.1  christos     { Bad_Opcode },
   7712          1.1  christos     { Bad_Opcode },
   7713          1.1  christos     { Bad_Opcode },
   7714          1.1  christos     { Bad_Opcode },
   7715          1.1  christos     { Bad_Opcode },
   7716          1.1  christos     { Bad_Opcode },
   7717          1.1  christos     { Bad_Opcode },
   7718          1.1  christos     { Bad_Opcode },
   7719          1.1  christos   },
   7720          1.1  christos   /* XOP_09 */
   7721          1.1  christos   {
   7722          1.1  christos     /* 00 */
   7723          1.1  christos     { Bad_Opcode },
   7724          1.1  christos     { REG_TABLE (REG_XOP_TBM_01) },
   7725          1.1  christos     { REG_TABLE (REG_XOP_TBM_02) },
   7726          1.1  christos     { Bad_Opcode },
   7727          1.1  christos     { Bad_Opcode },
   7728          1.1  christos     { Bad_Opcode },
   7729          1.1  christos     { Bad_Opcode },
   7730          1.1  christos     { Bad_Opcode },
   7731          1.1  christos     /* 08 */
   7732          1.1  christos     { Bad_Opcode },
   7733          1.1  christos     { Bad_Opcode },
   7734          1.1  christos     { Bad_Opcode },
   7735          1.1  christos     { Bad_Opcode },
   7736          1.1  christos     { Bad_Opcode },
   7737          1.1  christos     { Bad_Opcode },
   7738          1.1  christos     { Bad_Opcode },
   7739          1.1  christos     { Bad_Opcode },
   7740          1.1  christos     /* 10 */
   7741          1.1  christos     { Bad_Opcode },
   7742          1.1  christos     { Bad_Opcode },
   7743          1.1  christos     { REG_TABLE (REG_XOP_LWPCB) },
   7744          1.1  christos     { Bad_Opcode },
   7745          1.1  christos     { Bad_Opcode },
   7746          1.1  christos     { Bad_Opcode },
   7747          1.1  christos     { Bad_Opcode },
   7748          1.1  christos     { Bad_Opcode },
   7749          1.1  christos     /* 18 */
   7750          1.1  christos     { Bad_Opcode },
   7751          1.1  christos     { Bad_Opcode },
   7752          1.1  christos     { Bad_Opcode },
   7753          1.1  christos     { Bad_Opcode },
   7754          1.1  christos     { Bad_Opcode },
   7755          1.1  christos     { Bad_Opcode },
   7756          1.1  christos     { Bad_Opcode },
   7757          1.1  christos     { Bad_Opcode },
   7758          1.1  christos     /* 20 */
   7759          1.1  christos     { Bad_Opcode },
   7760          1.1  christos     { Bad_Opcode },
   7761          1.1  christos     { Bad_Opcode },
   7762          1.1  christos     { Bad_Opcode },
   7763          1.1  christos     { Bad_Opcode },
   7764          1.1  christos     { Bad_Opcode },
   7765          1.1  christos     { Bad_Opcode },
   7766          1.1  christos     { Bad_Opcode },
   7767          1.1  christos     /* 28 */
   7768          1.1  christos     { Bad_Opcode },
   7769          1.1  christos     { Bad_Opcode },
   7770          1.1  christos     { Bad_Opcode },
   7771          1.1  christos     { Bad_Opcode },
   7772          1.1  christos     { Bad_Opcode },
   7773          1.1  christos     { Bad_Opcode },
   7774          1.1  christos     { Bad_Opcode },
   7775          1.1  christos     { Bad_Opcode },
   7776          1.1  christos     /* 30 */
   7777          1.1  christos     { Bad_Opcode },
   7778          1.1  christos     { Bad_Opcode },
   7779          1.1  christos     { Bad_Opcode },
   7780          1.1  christos     { Bad_Opcode },
   7781          1.1  christos     { Bad_Opcode },
   7782          1.1  christos     { Bad_Opcode },
   7783          1.1  christos     { Bad_Opcode },
   7784          1.1  christos     { Bad_Opcode },
   7785          1.1  christos     /* 38 */
   7786          1.1  christos     { Bad_Opcode },
   7787          1.1  christos     { Bad_Opcode },
   7788          1.1  christos     { Bad_Opcode },
   7789          1.1  christos     { Bad_Opcode },
   7790          1.1  christos     { Bad_Opcode },
   7791          1.1  christos     { Bad_Opcode },
   7792          1.1  christos     { Bad_Opcode },
   7793          1.1  christos     { Bad_Opcode },
   7794          1.1  christos     /* 40 */
   7795          1.1  christos     { Bad_Opcode },
   7796          1.1  christos     { Bad_Opcode },
   7797          1.1  christos     { Bad_Opcode },
   7798          1.1  christos     { Bad_Opcode },
   7799          1.1  christos     { Bad_Opcode },
   7800          1.1  christos     { Bad_Opcode },
   7801          1.1  christos     { Bad_Opcode },
   7802          1.1  christos     { Bad_Opcode },
   7803          1.1  christos     /* 48 */
   7804          1.1  christos     { Bad_Opcode },
   7805          1.1  christos     { Bad_Opcode },
   7806          1.1  christos     { Bad_Opcode },
   7807          1.1  christos     { Bad_Opcode },
   7808          1.1  christos     { Bad_Opcode },
   7809          1.1  christos     { Bad_Opcode },
   7810          1.1  christos     { Bad_Opcode },
   7811          1.1  christos     { Bad_Opcode },
   7812          1.1  christos     /* 50 */
   7813          1.1  christos     { Bad_Opcode },
   7814          1.1  christos     { Bad_Opcode },
   7815          1.1  christos     { Bad_Opcode },
   7816          1.1  christos     { Bad_Opcode },
   7817          1.1  christos     { Bad_Opcode },
   7818          1.1  christos     { Bad_Opcode },
   7819          1.1  christos     { Bad_Opcode },
   7820          1.1  christos     { Bad_Opcode },
   7821          1.1  christos     /* 58 */
   7822          1.1  christos     { Bad_Opcode },
   7823          1.1  christos     { Bad_Opcode },
   7824          1.1  christos     { Bad_Opcode },
   7825          1.1  christos     { Bad_Opcode },
   7826          1.1  christos     { Bad_Opcode },
   7827          1.1  christos     { Bad_Opcode },
   7828          1.1  christos     { Bad_Opcode },
   7829          1.1  christos     { Bad_Opcode },
   7830          1.1  christos     /* 60 */
   7831          1.1  christos     { Bad_Opcode },
   7832          1.1  christos     { Bad_Opcode },
   7833          1.1  christos     { Bad_Opcode },
   7834          1.1  christos     { Bad_Opcode },
   7835          1.1  christos     { Bad_Opcode },
   7836          1.1  christos     { Bad_Opcode },
   7837          1.1  christos     { Bad_Opcode },
   7838          1.1  christos     { Bad_Opcode },
   7839          1.1  christos     /* 68 */
   7840          1.1  christos     { Bad_Opcode },
   7841          1.1  christos     { Bad_Opcode },
   7842          1.1  christos     { Bad_Opcode },
   7843          1.1  christos     { Bad_Opcode },
   7844          1.1  christos     { Bad_Opcode },
   7845          1.1  christos     { Bad_Opcode },
   7846          1.1  christos     { Bad_Opcode },
   7847          1.1  christos     { Bad_Opcode },
   7848          1.1  christos     /* 70 */
   7849          1.1  christos     { Bad_Opcode },
   7850          1.1  christos     { Bad_Opcode },
   7851          1.1  christos     { Bad_Opcode },
   7852          1.1  christos     { Bad_Opcode },
   7853          1.1  christos     { Bad_Opcode },
   7854          1.1  christos     { Bad_Opcode },
   7855          1.1  christos     { Bad_Opcode },
   7856          1.1  christos     { Bad_Opcode },
   7857          1.1  christos     /* 78 */
   7858          1.1  christos     { Bad_Opcode },
   7859          1.1  christos     { Bad_Opcode },
   7860          1.1  christos     { Bad_Opcode },
   7861          1.1  christos     { Bad_Opcode },
   7862          1.1  christos     { Bad_Opcode },
   7863          1.1  christos     { Bad_Opcode },
   7864          1.1  christos     { Bad_Opcode },
   7865          1.1  christos     { Bad_Opcode },
   7866          1.1  christos     /* 80 */
   7867          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_80) },
   7868          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FXOP_09_81) },
   7869          1.1  christos     { "vfrczss", 	{ XM, EXd } },
   7870          1.1  christos     { "vfrczsd", 	{ XM, EXq } },
   7871          1.1  christos     { Bad_Opcode },
   7872          1.1  christos     { Bad_Opcode },
   7873          1.1  christos     { Bad_Opcode },
   7874          1.1  christos     { Bad_Opcode },
   7875          1.1  christos     /* 88 */
   7876          1.1  christos     { Bad_Opcode },
   7877          1.1  christos     { Bad_Opcode },
   7878          1.1  christos     { Bad_Opcode },
   7879          1.1  christos     { Bad_Opcode },
   7880          1.1  christos     { Bad_Opcode },
   7881          1.1  christos     { Bad_Opcode },
   7882          1.1  christos     { Bad_Opcode },
   7883          1.1  christos     { Bad_Opcode },
   7884          1.1  christos     /* 90 */
   7885          1.1  christos     { "vprotb",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7886          1.1  christos     { "vprotw",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7887          1.1  christos     { "vprotd",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7888          1.1  christos     { "vprotq",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7889          1.1  christos     { "vpshlb",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7890          1.1  christos     { "vpshlw",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7891          1.1  christos     { "vpshld",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7892          1.1  christos     { "vpshlq",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7893          1.1  christos     /* 98 */
   7894          1.1  christos     { "vpshab",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7895          1.1  christos     { "vpshaw",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7896          1.1  christos     { "vpshad",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7897          1.1  christos     { "vpshaq",		{ XM, Vex_2src_1, Vex_2src_2 } },
   7898          1.1  christos     { Bad_Opcode },
   7899          1.1  christos     { Bad_Opcode },
   7900          1.1  christos     { Bad_Opcode },
   7901          1.1  christos     { Bad_Opcode },
   7902          1.1  christos     /* a0 */
   7903          1.1  christos     { Bad_Opcode },
   7904          1.1  christos     { Bad_Opcode },
   7905          1.1  christos     { Bad_Opcode },
   7906          1.1  christos     { Bad_Opcode },
   7907          1.1  christos     { Bad_Opcode },
   7908          1.1  christos     { Bad_Opcode },
   7909          1.1  christos     { Bad_Opcode },
   7910          1.1  christos     { Bad_Opcode },
   7911          1.1  christos     /* a8 */
   7912          1.1  christos     { Bad_Opcode },
   7913          1.1  christos     { Bad_Opcode },
   7914          1.1  christos     { Bad_Opcode },
   7915          1.1  christos     { Bad_Opcode },
   7916          1.1  christos     { Bad_Opcode },
   7917          1.1  christos     { Bad_Opcode },
   7918          1.1  christos     { Bad_Opcode },
   7919          1.1  christos     { Bad_Opcode },
   7920          1.1  christos     /* b0 */
   7921          1.1  christos     { Bad_Opcode },
   7922          1.1  christos     { Bad_Opcode },
   7923          1.1  christos     { Bad_Opcode },
   7924          1.1  christos     { Bad_Opcode },
   7925          1.1  christos     { Bad_Opcode },
   7926          1.1  christos     { Bad_Opcode },
   7927          1.1  christos     { Bad_Opcode },
   7928          1.1  christos     { Bad_Opcode },
   7929          1.1  christos     /* b8 */
   7930          1.1  christos     { Bad_Opcode },
   7931          1.1  christos     { Bad_Opcode },
   7932          1.1  christos     { Bad_Opcode },
   7933          1.1  christos     { Bad_Opcode },
   7934          1.1  christos     { Bad_Opcode },
   7935          1.1  christos     { Bad_Opcode },
   7936          1.1  christos     { Bad_Opcode },
   7937          1.1  christos     { Bad_Opcode },
   7938          1.1  christos     /* c0 */
   7939          1.1  christos     { Bad_Opcode },
   7940          1.1  christos     { "vphaddbw",	{ XM, EXxmm } },
   7941          1.1  christos     { "vphaddbd",	{ XM, EXxmm } },
   7942          1.1  christos     { "vphaddbq",	{ XM, EXxmm } },
   7943          1.1  christos     { Bad_Opcode },
   7944          1.1  christos     { Bad_Opcode },
   7945          1.1  christos     { "vphaddwd",	{ XM, EXxmm } },
   7946          1.1  christos     { "vphaddwq",	{ XM, EXxmm } },
   7947          1.1  christos     /* c8 */
   7948          1.1  christos     { Bad_Opcode },
   7949          1.1  christos     { Bad_Opcode },
   7950          1.1  christos     { Bad_Opcode },
   7951          1.1  christos     { "vphadddq",	{ XM, EXxmm } },
   7952          1.1  christos     { Bad_Opcode },
   7953          1.1  christos     { Bad_Opcode },
   7954          1.1  christos     { Bad_Opcode },
   7955          1.1  christos     { Bad_Opcode },
   7956          1.1  christos     /* d0 */
   7957          1.1  christos     { Bad_Opcode },
   7958          1.1  christos     { "vphaddubw",	{ XM, EXxmm } },
   7959          1.1  christos     { "vphaddubd",	{ XM, EXxmm } },
   7960          1.1  christos     { "vphaddubq",	{ XM, EXxmm } },
   7961          1.1  christos     { Bad_Opcode },
   7962          1.1  christos     { Bad_Opcode },
   7963          1.1  christos     { "vphadduwd",	{ XM, EXxmm } },
   7964          1.1  christos     { "vphadduwq",	{ XM, EXxmm } },
   7965          1.1  christos     /* d8 */
   7966          1.1  christos     { Bad_Opcode },
   7967          1.1  christos     { Bad_Opcode },
   7968          1.1  christos     { Bad_Opcode },
   7969          1.1  christos     { "vphaddudq",	{ XM, EXxmm } },
   7970          1.1  christos     { Bad_Opcode },
   7971          1.1  christos     { Bad_Opcode },
   7972          1.1  christos     { Bad_Opcode },
   7973          1.1  christos     { Bad_Opcode },
   7974          1.1  christos     /* e0 */
   7975          1.1  christos     { Bad_Opcode },
   7976          1.1  christos     { "vphsubbw",	{ XM, EXxmm } },
   7977          1.1  christos     { "vphsubwd",	{ XM, EXxmm } },
   7978          1.1  christos     { "vphsubdq",	{ XM, EXxmm } },
   7979          1.1  christos     { Bad_Opcode },
   7980          1.1  christos     { Bad_Opcode },
   7981          1.1  christos     { Bad_Opcode },
   7982          1.1  christos     { Bad_Opcode },
   7983          1.1  christos     /* e8 */
   7984          1.1  christos     { Bad_Opcode },
   7985          1.1  christos     { Bad_Opcode },
   7986          1.1  christos     { Bad_Opcode },
   7987          1.1  christos     { Bad_Opcode },
   7988          1.1  christos     { Bad_Opcode },
   7989          1.1  christos     { Bad_Opcode },
   7990          1.1  christos     { Bad_Opcode },
   7991          1.1  christos     { Bad_Opcode },
   7992          1.1  christos     /* f0 */
   7993          1.1  christos     { Bad_Opcode },
   7994          1.1  christos     { Bad_Opcode },
   7995          1.1  christos     { Bad_Opcode },
   7996          1.1  christos     { Bad_Opcode },
   7997          1.1  christos     { Bad_Opcode },
   7998          1.1  christos     { Bad_Opcode },
   7999          1.1  christos     { Bad_Opcode },
   8000          1.1  christos     { Bad_Opcode },
   8001          1.1  christos     /* f8 */
   8002          1.1  christos     { Bad_Opcode },
   8003          1.1  christos     { Bad_Opcode },
   8004          1.1  christos     { Bad_Opcode },
   8005          1.1  christos     { Bad_Opcode },
   8006          1.1  christos     { Bad_Opcode },
   8007          1.1  christos     { Bad_Opcode },
   8008          1.1  christos     { Bad_Opcode },
   8009          1.1  christos     { Bad_Opcode },
   8010          1.1  christos   },
   8011          1.1  christos   /* XOP_0A */
   8012          1.1  christos   {
   8013          1.1  christos     /* 00 */
   8014          1.1  christos     { Bad_Opcode },
   8015          1.1  christos     { Bad_Opcode },
   8016          1.1  christos     { Bad_Opcode },
   8017          1.1  christos     { Bad_Opcode },
   8018          1.1  christos     { Bad_Opcode },
   8019          1.1  christos     { Bad_Opcode },
   8020          1.1  christos     { Bad_Opcode },
   8021          1.1  christos     { Bad_Opcode },
   8022          1.1  christos     /* 08 */
   8023          1.1  christos     { Bad_Opcode },
   8024          1.1  christos     { Bad_Opcode },
   8025          1.1  christos     { Bad_Opcode },
   8026          1.1  christos     { Bad_Opcode },
   8027          1.1  christos     { Bad_Opcode },
   8028          1.1  christos     { Bad_Opcode },
   8029          1.1  christos     { Bad_Opcode },
   8030          1.1  christos     { Bad_Opcode },
   8031          1.1  christos     /* 10 */
   8032          1.1  christos     { "bextr",	{ Gv, Ev, Iq } },
   8033          1.1  christos     { Bad_Opcode },
   8034          1.1  christos     { REG_TABLE (REG_XOP_LWP) },
   8035          1.1  christos     { Bad_Opcode },
   8036          1.1  christos     { Bad_Opcode },
   8037          1.1  christos     { Bad_Opcode },
   8038          1.1  christos     { Bad_Opcode },
   8039          1.1  christos     { Bad_Opcode },
   8040          1.1  christos     /* 18 */
   8041          1.1  christos     { Bad_Opcode },
   8042          1.1  christos     { Bad_Opcode },
   8043          1.1  christos     { Bad_Opcode },
   8044          1.1  christos     { Bad_Opcode },
   8045          1.1  christos     { Bad_Opcode },
   8046          1.1  christos     { Bad_Opcode },
   8047          1.1  christos     { Bad_Opcode },
   8048          1.1  christos     { Bad_Opcode },
   8049          1.1  christos     /* 20 */
   8050          1.1  christos     { Bad_Opcode },
   8051          1.1  christos     { Bad_Opcode },
   8052          1.1  christos     { Bad_Opcode },
   8053          1.1  christos     { Bad_Opcode },
   8054          1.1  christos     { Bad_Opcode },
   8055          1.1  christos     { Bad_Opcode },
   8056          1.1  christos     { Bad_Opcode },
   8057          1.1  christos     { Bad_Opcode },
   8058          1.1  christos     /* 28 */
   8059          1.1  christos     { Bad_Opcode },
   8060          1.1  christos     { Bad_Opcode },
   8061          1.1  christos     { Bad_Opcode },
   8062          1.1  christos     { Bad_Opcode },
   8063          1.1  christos     { Bad_Opcode },
   8064          1.1  christos     { Bad_Opcode },
   8065          1.1  christos     { Bad_Opcode },
   8066          1.1  christos     { Bad_Opcode },
   8067          1.1  christos     /* 30 */
   8068          1.1  christos     { Bad_Opcode },
   8069          1.1  christos     { Bad_Opcode },
   8070          1.1  christos     { Bad_Opcode },
   8071          1.1  christos     { Bad_Opcode },
   8072          1.1  christos     { Bad_Opcode },
   8073          1.1  christos     { Bad_Opcode },
   8074          1.1  christos     { Bad_Opcode },
   8075          1.1  christos     { Bad_Opcode },
   8076          1.1  christos     /* 38 */
   8077          1.1  christos     { Bad_Opcode },
   8078          1.1  christos     { Bad_Opcode },
   8079          1.1  christos     { Bad_Opcode },
   8080          1.1  christos     { Bad_Opcode },
   8081          1.1  christos     { Bad_Opcode },
   8082          1.1  christos     { Bad_Opcode },
   8083          1.1  christos     { Bad_Opcode },
   8084          1.1  christos     { Bad_Opcode },
   8085          1.1  christos     /* 40 */
   8086          1.1  christos     { Bad_Opcode },
   8087          1.1  christos     { Bad_Opcode },
   8088          1.1  christos     { Bad_Opcode },
   8089          1.1  christos     { Bad_Opcode },
   8090          1.1  christos     { Bad_Opcode },
   8091          1.1  christos     { Bad_Opcode },
   8092          1.1  christos     { Bad_Opcode },
   8093          1.1  christos     { Bad_Opcode },
   8094          1.1  christos     /* 48 */
   8095          1.1  christos     { Bad_Opcode },
   8096          1.1  christos     { Bad_Opcode },
   8097          1.1  christos     { Bad_Opcode },
   8098          1.1  christos     { Bad_Opcode },
   8099          1.1  christos     { Bad_Opcode },
   8100          1.1  christos     { Bad_Opcode },
   8101          1.1  christos     { Bad_Opcode },
   8102          1.1  christos     { Bad_Opcode },
   8103          1.1  christos     /* 50 */
   8104          1.1  christos     { Bad_Opcode },
   8105          1.1  christos     { Bad_Opcode },
   8106          1.1  christos     { Bad_Opcode },
   8107          1.1  christos     { Bad_Opcode },
   8108          1.1  christos     { Bad_Opcode },
   8109          1.1  christos     { Bad_Opcode },
   8110          1.1  christos     { Bad_Opcode },
   8111          1.1  christos     { Bad_Opcode },
   8112          1.1  christos     /* 58 */
   8113          1.1  christos     { Bad_Opcode },
   8114          1.1  christos     { Bad_Opcode },
   8115          1.1  christos     { Bad_Opcode },
   8116          1.1  christos     { Bad_Opcode },
   8117          1.1  christos     { Bad_Opcode },
   8118          1.1  christos     { Bad_Opcode },
   8119          1.1  christos     { Bad_Opcode },
   8120          1.1  christos     { Bad_Opcode },
   8121          1.1  christos     /* 60 */
   8122          1.1  christos     { Bad_Opcode },
   8123          1.1  christos     { Bad_Opcode },
   8124          1.1  christos     { Bad_Opcode },
   8125          1.1  christos     { Bad_Opcode },
   8126          1.1  christos     { Bad_Opcode },
   8127          1.1  christos     { Bad_Opcode },
   8128          1.1  christos     { Bad_Opcode },
   8129          1.1  christos     { Bad_Opcode },
   8130          1.1  christos     /* 68 */
   8131          1.1  christos     { Bad_Opcode },
   8132          1.1  christos     { Bad_Opcode },
   8133          1.1  christos     { Bad_Opcode },
   8134          1.1  christos     { Bad_Opcode },
   8135          1.1  christos     { Bad_Opcode },
   8136          1.1  christos     { Bad_Opcode },
   8137          1.1  christos     { Bad_Opcode },
   8138          1.1  christos     { Bad_Opcode },
   8139          1.1  christos     /* 70 */
   8140          1.1  christos     { Bad_Opcode },
   8141          1.1  christos     { Bad_Opcode },
   8142          1.1  christos     { Bad_Opcode },
   8143          1.1  christos     { Bad_Opcode },
   8144          1.1  christos     { Bad_Opcode },
   8145          1.1  christos     { Bad_Opcode },
   8146          1.1  christos     { Bad_Opcode },
   8147          1.1  christos     { Bad_Opcode },
   8148          1.1  christos     /* 78 */
   8149          1.1  christos     { Bad_Opcode },
   8150          1.1  christos     { Bad_Opcode },
   8151          1.1  christos     { Bad_Opcode },
   8152          1.1  christos     { Bad_Opcode },
   8153          1.1  christos     { Bad_Opcode },
   8154          1.1  christos     { Bad_Opcode },
   8155          1.1  christos     { Bad_Opcode },
   8156          1.1  christos     { Bad_Opcode },
   8157          1.1  christos     /* 80 */
   8158          1.1  christos     { Bad_Opcode },
   8159          1.1  christos     { Bad_Opcode },
   8160          1.1  christos     { Bad_Opcode },
   8161          1.1  christos     { Bad_Opcode },
   8162          1.1  christos     { Bad_Opcode },
   8163          1.1  christos     { Bad_Opcode },
   8164          1.1  christos     { Bad_Opcode },
   8165          1.1  christos     { Bad_Opcode },
   8166          1.1  christos     /* 88 */
   8167          1.1  christos     { Bad_Opcode },
   8168          1.1  christos     { Bad_Opcode },
   8169          1.1  christos     { Bad_Opcode },
   8170          1.1  christos     { Bad_Opcode },
   8171          1.1  christos     { Bad_Opcode },
   8172          1.1  christos     { Bad_Opcode },
   8173          1.1  christos     { Bad_Opcode },
   8174          1.1  christos     { Bad_Opcode },
   8175          1.1  christos     /* 90 */
   8176          1.1  christos     { Bad_Opcode },
   8177          1.1  christos     { Bad_Opcode },
   8178          1.1  christos     { Bad_Opcode },
   8179          1.1  christos     { Bad_Opcode },
   8180          1.1  christos     { Bad_Opcode },
   8181          1.1  christos     { Bad_Opcode },
   8182          1.1  christos     { Bad_Opcode },
   8183          1.1  christos     { Bad_Opcode },
   8184          1.1  christos     /* 98 */
   8185          1.1  christos     { Bad_Opcode },
   8186          1.1  christos     { Bad_Opcode },
   8187          1.1  christos     { Bad_Opcode },
   8188          1.1  christos     { Bad_Opcode },
   8189          1.1  christos     { Bad_Opcode },
   8190          1.1  christos     { Bad_Opcode },
   8191          1.1  christos     { Bad_Opcode },
   8192          1.1  christos     { Bad_Opcode },
   8193          1.1  christos     /* a0 */
   8194          1.1  christos     { Bad_Opcode },
   8195          1.1  christos     { Bad_Opcode },
   8196          1.1  christos     { Bad_Opcode },
   8197          1.1  christos     { Bad_Opcode },
   8198          1.1  christos     { Bad_Opcode },
   8199          1.1  christos     { Bad_Opcode },
   8200          1.1  christos     { Bad_Opcode },
   8201          1.1  christos     { Bad_Opcode },
   8202          1.1  christos     /* a8 */
   8203          1.1  christos     { Bad_Opcode },
   8204          1.1  christos     { Bad_Opcode },
   8205          1.1  christos     { Bad_Opcode },
   8206          1.1  christos     { Bad_Opcode },
   8207          1.1  christos     { Bad_Opcode },
   8208          1.1  christos     { Bad_Opcode },
   8209          1.1  christos     { Bad_Opcode },
   8210          1.1  christos     { Bad_Opcode },
   8211          1.1  christos     /* b0 */
   8212          1.1  christos     { Bad_Opcode },
   8213          1.1  christos     { Bad_Opcode },
   8214          1.1  christos     { Bad_Opcode },
   8215          1.1  christos     { Bad_Opcode },
   8216          1.1  christos     { Bad_Opcode },
   8217          1.1  christos     { Bad_Opcode },
   8218          1.1  christos     { Bad_Opcode },
   8219          1.1  christos     { Bad_Opcode },
   8220          1.1  christos     /* b8 */
   8221          1.1  christos     { Bad_Opcode },
   8222          1.1  christos     { Bad_Opcode },
   8223          1.1  christos     { Bad_Opcode },
   8224          1.1  christos     { Bad_Opcode },
   8225          1.1  christos     { Bad_Opcode },
   8226          1.1  christos     { Bad_Opcode },
   8227          1.1  christos     { Bad_Opcode },
   8228          1.1  christos     { Bad_Opcode },
   8229          1.1  christos     /* c0 */
   8230          1.1  christos     { Bad_Opcode },
   8231          1.1  christos     { Bad_Opcode },
   8232          1.1  christos     { Bad_Opcode },
   8233          1.1  christos     { Bad_Opcode },
   8234          1.1  christos     { Bad_Opcode },
   8235          1.1  christos     { Bad_Opcode },
   8236          1.1  christos     { Bad_Opcode },
   8237          1.1  christos     { Bad_Opcode },
   8238          1.1  christos     /* c8 */
   8239          1.1  christos     { Bad_Opcode },
   8240          1.1  christos     { Bad_Opcode },
   8241          1.1  christos     { Bad_Opcode },
   8242          1.1  christos     { Bad_Opcode },
   8243          1.1  christos     { Bad_Opcode },
   8244          1.1  christos     { Bad_Opcode },
   8245          1.1  christos     { Bad_Opcode },
   8246          1.1  christos     { Bad_Opcode },
   8247          1.1  christos     /* d0 */
   8248          1.1  christos     { Bad_Opcode },
   8249          1.1  christos     { Bad_Opcode },
   8250          1.1  christos     { Bad_Opcode },
   8251          1.1  christos     { Bad_Opcode },
   8252          1.1  christos     { Bad_Opcode },
   8253          1.1  christos     { Bad_Opcode },
   8254          1.1  christos     { Bad_Opcode },
   8255          1.1  christos     { Bad_Opcode },
   8256          1.1  christos     /* d8 */
   8257          1.1  christos     { Bad_Opcode },
   8258          1.1  christos     { Bad_Opcode },
   8259          1.1  christos     { Bad_Opcode },
   8260          1.1  christos     { Bad_Opcode },
   8261          1.1  christos     { Bad_Opcode },
   8262          1.1  christos     { Bad_Opcode },
   8263          1.1  christos     { Bad_Opcode },
   8264          1.1  christos     { Bad_Opcode },
   8265          1.1  christos     /* e0 */
   8266          1.1  christos     { Bad_Opcode },
   8267          1.1  christos     { Bad_Opcode },
   8268          1.1  christos     { Bad_Opcode },
   8269          1.1  christos     { Bad_Opcode },
   8270          1.1  christos     { Bad_Opcode },
   8271          1.1  christos     { Bad_Opcode },
   8272          1.1  christos     { Bad_Opcode },
   8273          1.1  christos     { Bad_Opcode },
   8274          1.1  christos     /* e8 */
   8275          1.1  christos     { Bad_Opcode },
   8276          1.1  christos     { Bad_Opcode },
   8277          1.1  christos     { Bad_Opcode },
   8278          1.1  christos     { Bad_Opcode },
   8279          1.1  christos     { Bad_Opcode },
   8280          1.1  christos     { Bad_Opcode },
   8281          1.1  christos     { Bad_Opcode },
   8282          1.1  christos     { Bad_Opcode },
   8283          1.1  christos     /* f0 */
   8284          1.1  christos     { Bad_Opcode },
   8285          1.1  christos     { Bad_Opcode },
   8286          1.1  christos     { Bad_Opcode },
   8287          1.1  christos     { Bad_Opcode },
   8288          1.1  christos     { Bad_Opcode },
   8289          1.1  christos     { Bad_Opcode },
   8290          1.1  christos     { Bad_Opcode },
   8291          1.1  christos     { Bad_Opcode },
   8292          1.1  christos     /* f8 */
   8293          1.1  christos     { Bad_Opcode },
   8294          1.1  christos     { Bad_Opcode },
   8295          1.1  christos     { Bad_Opcode },
   8296          1.1  christos     { Bad_Opcode },
   8297          1.1  christos     { Bad_Opcode },
   8298          1.1  christos     { Bad_Opcode },
   8299          1.1  christos     { Bad_Opcode },
   8300          1.1  christos     { Bad_Opcode },
   8301          1.1  christos   },
   8302          1.1  christos };
   8303          1.1  christos 
   8304          1.1  christos static const struct dis386 vex_table[][256] = {
   8305          1.1  christos   /* VEX_0F */
   8306          1.1  christos   {
   8307          1.1  christos     /* 00 */
   8308          1.1  christos     { Bad_Opcode },
   8309          1.1  christos     { Bad_Opcode },
   8310          1.1  christos     { Bad_Opcode },
   8311          1.1  christos     { Bad_Opcode },
   8312          1.1  christos     { Bad_Opcode },
   8313          1.1  christos     { Bad_Opcode },
   8314          1.1  christos     { Bad_Opcode },
   8315          1.1  christos     { Bad_Opcode },
   8316          1.1  christos     /* 08 */
   8317          1.1  christos     { Bad_Opcode },
   8318          1.1  christos     { Bad_Opcode },
   8319          1.1  christos     { Bad_Opcode },
   8320          1.1  christos     { Bad_Opcode },
   8321          1.1  christos     { Bad_Opcode },
   8322          1.1  christos     { Bad_Opcode },
   8323          1.1  christos     { Bad_Opcode },
   8324          1.1  christos     { Bad_Opcode },
   8325          1.1  christos     /* 10 */
   8326          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F10) },
   8327          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F11) },
   8328          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F12) },
   8329          1.1  christos     { MOD_TABLE (MOD_VEX_0F13) },
   8330          1.1  christos     { VEX_W_TABLE (VEX_W_0F14) },
   8331          1.1  christos     { VEX_W_TABLE (VEX_W_0F15) },
   8332          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F16) },
   8333          1.1  christos     { MOD_TABLE (MOD_VEX_0F17) },
   8334          1.1  christos     /* 18 */
   8335          1.1  christos     { Bad_Opcode },
   8336          1.1  christos     { Bad_Opcode },
   8337          1.1  christos     { Bad_Opcode },
   8338          1.1  christos     { Bad_Opcode },
   8339          1.1  christos     { Bad_Opcode },
   8340          1.1  christos     { Bad_Opcode },
   8341          1.1  christos     { Bad_Opcode },
   8342          1.1  christos     { Bad_Opcode },
   8343          1.1  christos     /* 20 */
   8344          1.1  christos     { Bad_Opcode },
   8345          1.1  christos     { Bad_Opcode },
   8346          1.1  christos     { Bad_Opcode },
   8347          1.1  christos     { Bad_Opcode },
   8348          1.1  christos     { Bad_Opcode },
   8349          1.1  christos     { Bad_Opcode },
   8350          1.1  christos     { Bad_Opcode },
   8351          1.1  christos     { Bad_Opcode },
   8352          1.1  christos     /* 28 */
   8353          1.1  christos     { VEX_W_TABLE (VEX_W_0F28) },
   8354          1.1  christos     { VEX_W_TABLE (VEX_W_0F29) },
   8355          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F2A) },
   8356          1.1  christos     { MOD_TABLE (MOD_VEX_0F2B) },
   8357          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F2C) },
   8358          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F2D) },
   8359          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F2E) },
   8360          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F2F) },
   8361          1.1  christos     /* 30 */
   8362          1.1  christos     { Bad_Opcode },
   8363          1.1  christos     { Bad_Opcode },
   8364          1.1  christos     { Bad_Opcode },
   8365          1.1  christos     { Bad_Opcode },
   8366          1.1  christos     { Bad_Opcode },
   8367          1.1  christos     { Bad_Opcode },
   8368          1.1  christos     { Bad_Opcode },
   8369          1.1  christos     { Bad_Opcode },
   8370          1.1  christos     /* 38 */
   8371          1.1  christos     { Bad_Opcode },
   8372          1.1  christos     { Bad_Opcode },
   8373          1.1  christos     { Bad_Opcode },
   8374          1.1  christos     { Bad_Opcode },
   8375          1.1  christos     { Bad_Opcode },
   8376          1.1  christos     { Bad_Opcode },
   8377          1.1  christos     { Bad_Opcode },
   8378          1.1  christos     { Bad_Opcode },
   8379          1.1  christos     /* 40 */
   8380          1.1  christos     { Bad_Opcode },
   8381  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F41) },
   8382  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F42) },
   8383          1.1  christos     { Bad_Opcode },
   8384  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F44) },
   8385  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F45) },
   8386  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F46) },
   8387  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F47) },
   8388          1.1  christos     /* 48 */
   8389          1.1  christos     { Bad_Opcode },
   8390          1.1  christos     { Bad_Opcode },
   8391          1.1  christos     { Bad_Opcode },
   8392  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F4B) },
   8393          1.1  christos     { Bad_Opcode },
   8394          1.1  christos     { Bad_Opcode },
   8395          1.1  christos     { Bad_Opcode },
   8396          1.1  christos     { Bad_Opcode },
   8397          1.1  christos     /* 50 */
   8398          1.1  christos     { MOD_TABLE (MOD_VEX_0F50) },
   8399          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F51) },
   8400          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F52) },
   8401          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F53) },
   8402          1.1  christos     { "vandpX",		{ XM, Vex, EXx } },
   8403          1.1  christos     { "vandnpX",	{ XM, Vex, EXx } },
   8404          1.1  christos     { "vorpX",		{ XM, Vex, EXx } },
   8405          1.1  christos     { "vxorpX",		{ XM, Vex, EXx } },
   8406          1.1  christos     /* 58 */
   8407          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F58) },
   8408          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F59) },
   8409          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F5A) },
   8410          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F5B) },
   8411          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F5C) },
   8412          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F5D) },
   8413          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F5E) },
   8414          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F5F) },
   8415          1.1  christos     /* 60 */
   8416          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F60) },
   8417          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F61) },
   8418          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F62) },
   8419          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F63) },
   8420          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F64) },
   8421          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F65) },
   8422          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F66) },
   8423          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F67) },
   8424          1.1  christos     /* 68 */
   8425          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F68) },
   8426          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F69) },
   8427          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F6A) },
   8428          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F6B) },
   8429          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F6C) },
   8430          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F6D) },
   8431          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F6E) },
   8432          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F6F) },
   8433          1.1  christos     /* 70 */
   8434          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F70) },
   8435          1.1  christos     { REG_TABLE (REG_VEX_0F71) },
   8436          1.1  christos     { REG_TABLE (REG_VEX_0F72) },
   8437          1.1  christos     { REG_TABLE (REG_VEX_0F73) },
   8438          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F74) },
   8439          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F75) },
   8440          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F76) },
   8441          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F77) },
   8442          1.1  christos     /* 78 */
   8443          1.1  christos     { Bad_Opcode },
   8444          1.1  christos     { Bad_Opcode },
   8445          1.1  christos     { Bad_Opcode },
   8446          1.1  christos     { Bad_Opcode },
   8447          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F7C) },
   8448          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F7D) },
   8449          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F7E) },
   8450          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F7F) },
   8451          1.1  christos     /* 80 */
   8452          1.1  christos     { Bad_Opcode },
   8453          1.1  christos     { Bad_Opcode },
   8454          1.1  christos     { Bad_Opcode },
   8455          1.1  christos     { Bad_Opcode },
   8456          1.1  christos     { Bad_Opcode },
   8457          1.1  christos     { Bad_Opcode },
   8458          1.1  christos     { Bad_Opcode },
   8459          1.1  christos     { Bad_Opcode },
   8460          1.1  christos     /* 88 */
   8461          1.1  christos     { Bad_Opcode },
   8462          1.1  christos     { Bad_Opcode },
   8463          1.1  christos     { Bad_Opcode },
   8464          1.1  christos     { Bad_Opcode },
   8465          1.1  christos     { Bad_Opcode },
   8466          1.1  christos     { Bad_Opcode },
   8467          1.1  christos     { Bad_Opcode },
   8468          1.1  christos     { Bad_Opcode },
   8469          1.1  christos     /* 90 */
   8470  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F90) },
   8471  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F91) },
   8472  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F92) },
   8473  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F93) },
   8474          1.1  christos     { Bad_Opcode },
   8475          1.1  christos     { Bad_Opcode },
   8476          1.1  christos     { Bad_Opcode },
   8477          1.1  christos     { Bad_Opcode },
   8478          1.1  christos     /* 98 */
   8479  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F98) },
   8480          1.1  christos     { Bad_Opcode },
   8481          1.1  christos     { Bad_Opcode },
   8482          1.1  christos     { Bad_Opcode },
   8483          1.1  christos     { Bad_Opcode },
   8484          1.1  christos     { Bad_Opcode },
   8485          1.1  christos     { Bad_Opcode },
   8486          1.1  christos     { Bad_Opcode },
   8487          1.1  christos     /* a0 */
   8488          1.1  christos     { Bad_Opcode },
   8489          1.1  christos     { Bad_Opcode },
   8490          1.1  christos     { Bad_Opcode },
   8491          1.1  christos     { Bad_Opcode },
   8492          1.1  christos     { Bad_Opcode },
   8493          1.1  christos     { Bad_Opcode },
   8494          1.1  christos     { Bad_Opcode },
   8495          1.1  christos     { Bad_Opcode },
   8496          1.1  christos     /* a8 */
   8497          1.1  christos     { Bad_Opcode },
   8498          1.1  christos     { Bad_Opcode },
   8499          1.1  christos     { Bad_Opcode },
   8500          1.1  christos     { Bad_Opcode },
   8501          1.1  christos     { Bad_Opcode },
   8502          1.1  christos     { Bad_Opcode },
   8503          1.1  christos     { REG_TABLE (REG_VEX_0FAE) },
   8504          1.1  christos     { Bad_Opcode },
   8505          1.1  christos     /* b0 */
   8506          1.1  christos     { Bad_Opcode },
   8507          1.1  christos     { Bad_Opcode },
   8508          1.1  christos     { Bad_Opcode },
   8509          1.1  christos     { Bad_Opcode },
   8510          1.1  christos     { Bad_Opcode },
   8511          1.1  christos     { Bad_Opcode },
   8512          1.1  christos     { Bad_Opcode },
   8513          1.1  christos     { Bad_Opcode },
   8514          1.1  christos     /* b8 */
   8515          1.1  christos     { Bad_Opcode },
   8516          1.1  christos     { Bad_Opcode },
   8517          1.1  christos     { Bad_Opcode },
   8518          1.1  christos     { Bad_Opcode },
   8519          1.1  christos     { Bad_Opcode },
   8520          1.1  christos     { Bad_Opcode },
   8521          1.1  christos     { Bad_Opcode },
   8522          1.1  christos     { Bad_Opcode },
   8523          1.1  christos     /* c0 */
   8524          1.1  christos     { Bad_Opcode },
   8525          1.1  christos     { Bad_Opcode },
   8526          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FC2) },
   8527          1.1  christos     { Bad_Opcode },
   8528          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FC4) },
   8529          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FC5) },
   8530          1.1  christos     { "vshufpX",	{ XM, Vex, EXx, Ib } },
   8531          1.1  christos     { Bad_Opcode },
   8532          1.1  christos     /* c8 */
   8533          1.1  christos     { Bad_Opcode },
   8534          1.1  christos     { Bad_Opcode },
   8535          1.1  christos     { Bad_Opcode },
   8536          1.1  christos     { Bad_Opcode },
   8537          1.1  christos     { Bad_Opcode },
   8538          1.1  christos     { Bad_Opcode },
   8539          1.1  christos     { Bad_Opcode },
   8540          1.1  christos     { Bad_Opcode },
   8541          1.1  christos     /* d0 */
   8542          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD0) },
   8543          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD1) },
   8544          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD2) },
   8545          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD3) },
   8546          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD4) },
   8547          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD5) },
   8548          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD6) },
   8549          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD7) },
   8550          1.1  christos     /* d8 */
   8551          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD8) },
   8552          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FD9) },
   8553          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FDA) },
   8554          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FDB) },
   8555          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FDC) },
   8556          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FDD) },
   8557          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FDE) },
   8558          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FDF) },
   8559          1.1  christos     /* e0 */
   8560          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE0) },
   8561          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE1) },
   8562          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE2) },
   8563          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE3) },
   8564          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE4) },
   8565          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE5) },
   8566          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE6) },
   8567          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE7) },
   8568          1.1  christos     /* e8 */
   8569          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE8) },
   8570          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FE9) },
   8571          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FEA) },
   8572          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FEB) },
   8573          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FEC) },
   8574          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FED) },
   8575          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FEE) },
   8576          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FEF) },
   8577          1.1  christos     /* f0 */
   8578          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF0) },
   8579          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF1) },
   8580          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF2) },
   8581          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF3) },
   8582          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF4) },
   8583          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF5) },
   8584          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF6) },
   8585          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF7) },
   8586          1.1  christos     /* f8 */
   8587          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF8) },
   8588          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FF9) },
   8589          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FFA) },
   8590          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FFB) },
   8591          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FFC) },
   8592          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FFD) },
   8593          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0FFE) },
   8594          1.1  christos     { Bad_Opcode },
   8595          1.1  christos   },
   8596          1.1  christos   /* VEX_0F38 */
   8597          1.1  christos   {
   8598          1.1  christos     /* 00 */
   8599          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3800) },
   8600          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3801) },
   8601          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3802) },
   8602          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3803) },
   8603          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3804) },
   8604          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3805) },
   8605          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3806) },
   8606          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3807) },
   8607          1.1  christos     /* 08 */
   8608          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3808) },
   8609          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3809) },
   8610          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F380A) },
   8611          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F380B) },
   8612          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F380C) },
   8613          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F380D) },
   8614          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F380E) },
   8615          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F380F) },
   8616          1.1  christos     /* 10 */
   8617          1.1  christos     { Bad_Opcode },
   8618          1.1  christos     { Bad_Opcode },
   8619          1.1  christos     { Bad_Opcode },
   8620          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3813) },
   8621          1.1  christos     { Bad_Opcode },
   8622          1.1  christos     { Bad_Opcode },
   8623  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3816) },
   8624          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3817) },
   8625          1.1  christos     /* 18 */
   8626          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3818) },
   8627          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3819) },
   8628          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F381A) },
   8629          1.1  christos     { Bad_Opcode },
   8630          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F381C) },
   8631          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F381D) },
   8632          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F381E) },
   8633          1.1  christos     { Bad_Opcode },
   8634          1.1  christos     /* 20 */
   8635          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3820) },
   8636          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3821) },
   8637          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3822) },
   8638          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3823) },
   8639          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3824) },
   8640          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3825) },
   8641          1.1  christos     { Bad_Opcode },
   8642          1.1  christos     { Bad_Opcode },
   8643          1.1  christos     /* 28 */
   8644          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3828) },
   8645          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3829) },
   8646          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F382A) },
   8647          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F382B) },
   8648          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F382C) },
   8649          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F382D) },
   8650          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F382E) },
   8651          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F382F) },
   8652          1.1  christos     /* 30 */
   8653          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3830) },
   8654          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3831) },
   8655          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3832) },
   8656          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3833) },
   8657          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3834) },
   8658          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3835) },
   8659  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3836) },
   8660          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3837) },
   8661          1.1  christos     /* 38 */
   8662          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3838) },
   8663          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3839) },
   8664          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F383A) },
   8665          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F383B) },
   8666          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F383C) },
   8667          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F383D) },
   8668          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F383E) },
   8669          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F383F) },
   8670          1.1  christos     /* 40 */
   8671          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3840) },
   8672          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3841) },
   8673          1.1  christos     { Bad_Opcode },
   8674          1.1  christos     { Bad_Opcode },
   8675          1.1  christos     { Bad_Opcode },
   8676  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3845) },
   8677  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3846) },
   8678  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3847) },
   8679          1.1  christos     /* 48 */
   8680          1.1  christos     { Bad_Opcode },
   8681          1.1  christos     { Bad_Opcode },
   8682          1.1  christos     { Bad_Opcode },
   8683          1.1  christos     { Bad_Opcode },
   8684          1.1  christos     { Bad_Opcode },
   8685          1.1  christos     { Bad_Opcode },
   8686          1.1  christos     { Bad_Opcode },
   8687          1.1  christos     { Bad_Opcode },
   8688          1.1  christos     /* 50 */
   8689          1.1  christos     { Bad_Opcode },
   8690          1.1  christos     { Bad_Opcode },
   8691          1.1  christos     { Bad_Opcode },
   8692          1.1  christos     { Bad_Opcode },
   8693          1.1  christos     { Bad_Opcode },
   8694          1.1  christos     { Bad_Opcode },
   8695          1.1  christos     { Bad_Opcode },
   8696          1.1  christos     { Bad_Opcode },
   8697          1.1  christos     /* 58 */
   8698  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3858) },
   8699  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3859) },
   8700  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F385A) },
   8701          1.1  christos     { Bad_Opcode },
   8702          1.1  christos     { Bad_Opcode },
   8703          1.1  christos     { Bad_Opcode },
   8704          1.1  christos     { Bad_Opcode },
   8705          1.1  christos     { Bad_Opcode },
   8706          1.1  christos     /* 60 */
   8707          1.1  christos     { Bad_Opcode },
   8708          1.1  christos     { Bad_Opcode },
   8709          1.1  christos     { Bad_Opcode },
   8710          1.1  christos     { Bad_Opcode },
   8711          1.1  christos     { Bad_Opcode },
   8712          1.1  christos     { Bad_Opcode },
   8713          1.1  christos     { Bad_Opcode },
   8714          1.1  christos     { Bad_Opcode },
   8715          1.1  christos     /* 68 */
   8716          1.1  christos     { Bad_Opcode },
   8717          1.1  christos     { Bad_Opcode },
   8718          1.1  christos     { Bad_Opcode },
   8719          1.1  christos     { Bad_Opcode },
   8720          1.1  christos     { Bad_Opcode },
   8721          1.1  christos     { Bad_Opcode },
   8722          1.1  christos     { Bad_Opcode },
   8723          1.1  christos     { Bad_Opcode },
   8724          1.1  christos     /* 70 */
   8725          1.1  christos     { Bad_Opcode },
   8726          1.1  christos     { Bad_Opcode },
   8727          1.1  christos     { Bad_Opcode },
   8728          1.1  christos     { Bad_Opcode },
   8729          1.1  christos     { Bad_Opcode },
   8730          1.1  christos     { Bad_Opcode },
   8731          1.1  christos     { Bad_Opcode },
   8732          1.1  christos     { Bad_Opcode },
   8733          1.1  christos     /* 78 */
   8734  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3878) },
   8735  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3879) },
   8736          1.1  christos     { Bad_Opcode },
   8737          1.1  christos     { Bad_Opcode },
   8738          1.1  christos     { Bad_Opcode },
   8739          1.1  christos     { Bad_Opcode },
   8740          1.1  christos     { Bad_Opcode },
   8741          1.1  christos     { Bad_Opcode },
   8742          1.1  christos     /* 80 */
   8743          1.1  christos     { Bad_Opcode },
   8744          1.1  christos     { Bad_Opcode },
   8745          1.1  christos     { Bad_Opcode },
   8746          1.1  christos     { Bad_Opcode },
   8747          1.1  christos     { Bad_Opcode },
   8748          1.1  christos     { Bad_Opcode },
   8749          1.1  christos     { Bad_Opcode },
   8750          1.1  christos     { Bad_Opcode },
   8751          1.1  christos     /* 88 */
   8752          1.1  christos     { Bad_Opcode },
   8753          1.1  christos     { Bad_Opcode },
   8754          1.1  christos     { Bad_Opcode },
   8755          1.1  christos     { Bad_Opcode },
   8756  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F388C) },
   8757          1.1  christos     { Bad_Opcode },
   8758  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F388E) },
   8759          1.1  christos     { Bad_Opcode },
   8760          1.1  christos     /* 90 */
   8761  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3890) },
   8762  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3891) },
   8763  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3892) },
   8764  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3893) },
   8765          1.1  christos     { Bad_Opcode },
   8766          1.1  christos     { Bad_Opcode },
   8767          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3896) },
   8768          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3897) },
   8769          1.1  christos     /* 98 */
   8770          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3898) },
   8771          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3899) },
   8772          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F389A) },
   8773          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F389B) },
   8774          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F389C) },
   8775          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F389D) },
   8776          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F389E) },
   8777          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F389F) },
   8778          1.1  christos     /* a0 */
   8779          1.1  christos     { Bad_Opcode },
   8780          1.1  christos     { Bad_Opcode },
   8781          1.1  christos     { Bad_Opcode },
   8782          1.1  christos     { Bad_Opcode },
   8783          1.1  christos     { Bad_Opcode },
   8784          1.1  christos     { Bad_Opcode },
   8785          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38A6) },
   8786          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38A7) },
   8787          1.1  christos     /* a8 */
   8788          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38A8) },
   8789          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38A9) },
   8790          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38AA) },
   8791          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38AB) },
   8792          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38AC) },
   8793          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38AD) },
   8794          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38AE) },
   8795          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38AF) },
   8796          1.1  christos     /* b0 */
   8797          1.1  christos     { Bad_Opcode },
   8798          1.1  christos     { Bad_Opcode },
   8799          1.1  christos     { Bad_Opcode },
   8800          1.1  christos     { Bad_Opcode },
   8801          1.1  christos     { Bad_Opcode },
   8802          1.1  christos     { Bad_Opcode },
   8803          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38B6) },
   8804          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38B7) },
   8805          1.1  christos     /* b8 */
   8806          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38B8) },
   8807          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38B9) },
   8808          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38BA) },
   8809          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38BB) },
   8810          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38BC) },
   8811          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38BD) },
   8812          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38BE) },
   8813          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38BF) },
   8814          1.1  christos     /* c0 */
   8815          1.1  christos     { Bad_Opcode },
   8816          1.1  christos     { Bad_Opcode },
   8817          1.1  christos     { Bad_Opcode },
   8818          1.1  christos     { Bad_Opcode },
   8819          1.1  christos     { Bad_Opcode },
   8820          1.1  christos     { Bad_Opcode },
   8821          1.1  christos     { Bad_Opcode },
   8822          1.1  christos     { Bad_Opcode },
   8823          1.1  christos     /* c8 */
   8824          1.1  christos     { Bad_Opcode },
   8825          1.1  christos     { Bad_Opcode },
   8826          1.1  christos     { Bad_Opcode },
   8827          1.1  christos     { Bad_Opcode },
   8828          1.1  christos     { Bad_Opcode },
   8829          1.1  christos     { Bad_Opcode },
   8830          1.1  christos     { Bad_Opcode },
   8831          1.1  christos     { Bad_Opcode },
   8832          1.1  christos     /* d0 */
   8833          1.1  christos     { Bad_Opcode },
   8834          1.1  christos     { Bad_Opcode },
   8835          1.1  christos     { Bad_Opcode },
   8836          1.1  christos     { Bad_Opcode },
   8837          1.1  christos     { Bad_Opcode },
   8838          1.1  christos     { Bad_Opcode },
   8839          1.1  christos     { Bad_Opcode },
   8840          1.1  christos     { Bad_Opcode },
   8841          1.1  christos     /* d8 */
   8842          1.1  christos     { Bad_Opcode },
   8843          1.1  christos     { Bad_Opcode },
   8844          1.1  christos     { Bad_Opcode },
   8845          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38DB) },
   8846          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38DC) },
   8847          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38DD) },
   8848          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38DE) },
   8849          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38DF) },
   8850          1.1  christos     /* e0 */
   8851          1.1  christos     { Bad_Opcode },
   8852          1.1  christos     { Bad_Opcode },
   8853          1.1  christos     { Bad_Opcode },
   8854          1.1  christos     { Bad_Opcode },
   8855          1.1  christos     { Bad_Opcode },
   8856          1.1  christos     { Bad_Opcode },
   8857          1.1  christos     { Bad_Opcode },
   8858          1.1  christos     { Bad_Opcode },
   8859          1.1  christos     /* e8 */
   8860          1.1  christos     { Bad_Opcode },
   8861          1.1  christos     { Bad_Opcode },
   8862          1.1  christos     { Bad_Opcode },
   8863          1.1  christos     { Bad_Opcode },
   8864          1.1  christos     { Bad_Opcode },
   8865          1.1  christos     { Bad_Opcode },
   8866          1.1  christos     { Bad_Opcode },
   8867          1.1  christos     { Bad_Opcode },
   8868          1.1  christos     /* f0 */
   8869          1.1  christos     { Bad_Opcode },
   8870          1.1  christos     { Bad_Opcode },
   8871          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38F2) },
   8872          1.1  christos     { REG_TABLE (REG_VEX_0F38F3) },
   8873          1.1  christos     { Bad_Opcode },
   8874  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F38F5) },
   8875  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F38F6) },
   8876          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F38F7) },
   8877          1.1  christos     /* f8 */
   8878          1.1  christos     { Bad_Opcode },
   8879          1.1  christos     { Bad_Opcode },
   8880          1.1  christos     { Bad_Opcode },
   8881          1.1  christos     { Bad_Opcode },
   8882          1.1  christos     { Bad_Opcode },
   8883          1.1  christos     { Bad_Opcode },
   8884          1.1  christos     { Bad_Opcode },
   8885          1.1  christos     { Bad_Opcode },
   8886          1.1  christos   },
   8887          1.1  christos   /* VEX_0F3A */
   8888          1.1  christos   {
   8889          1.1  christos     /* 00 */
   8890  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A00) },
   8891  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A01) },
   8892  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A02) },
   8893          1.1  christos     { Bad_Opcode },
   8894          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A04) },
   8895          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A05) },
   8896          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A06) },
   8897          1.1  christos     { Bad_Opcode },
   8898          1.1  christos     /* 08 */
   8899          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A08) },
   8900          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A09) },
   8901          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A0A) },
   8902          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A0B) },
   8903          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A0C) },
   8904          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A0D) },
   8905          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A0E) },
   8906          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A0F) },
   8907          1.1  christos     /* 10 */
   8908          1.1  christos     { Bad_Opcode },
   8909          1.1  christos     { Bad_Opcode },
   8910          1.1  christos     { Bad_Opcode },
   8911          1.1  christos     { Bad_Opcode },
   8912          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A14) },
   8913          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A15) },
   8914          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A16) },
   8915          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A17) },
   8916          1.1  christos     /* 18 */
   8917          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A18) },
   8918          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A19) },
   8919          1.1  christos     { Bad_Opcode },
   8920          1.1  christos     { Bad_Opcode },
   8921          1.1  christos     { Bad_Opcode },
   8922          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A1D) },
   8923          1.1  christos     { Bad_Opcode },
   8924          1.1  christos     { Bad_Opcode },
   8925          1.1  christos     /* 20 */
   8926          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A20) },
   8927          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A21) },
   8928          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A22) },
   8929          1.1  christos     { Bad_Opcode },
   8930          1.1  christos     { Bad_Opcode },
   8931          1.1  christos     { Bad_Opcode },
   8932          1.1  christos     { Bad_Opcode },
   8933          1.1  christos     { Bad_Opcode },
   8934          1.1  christos     /* 28 */
   8935          1.1  christos     { Bad_Opcode },
   8936          1.1  christos     { Bad_Opcode },
   8937          1.1  christos     { Bad_Opcode },
   8938          1.1  christos     { Bad_Opcode },
   8939          1.1  christos     { Bad_Opcode },
   8940          1.1  christos     { Bad_Opcode },
   8941          1.1  christos     { Bad_Opcode },
   8942          1.1  christos     { Bad_Opcode },
   8943          1.1  christos     /* 30 */
   8944  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A30) },
   8945          1.1  christos     { Bad_Opcode },
   8946  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A32) },
   8947          1.1  christos     { Bad_Opcode },
   8948          1.1  christos     { Bad_Opcode },
   8949          1.1  christos     { Bad_Opcode },
   8950          1.1  christos     { Bad_Opcode },
   8951          1.1  christos     { Bad_Opcode },
   8952          1.1  christos     /* 38 */
   8953  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A38) },
   8954  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A39) },
   8955          1.1  christos     { Bad_Opcode },
   8956          1.1  christos     { Bad_Opcode },
   8957          1.1  christos     { Bad_Opcode },
   8958          1.1  christos     { Bad_Opcode },
   8959          1.1  christos     { Bad_Opcode },
   8960          1.1  christos     { Bad_Opcode },
   8961          1.1  christos     /* 40 */
   8962          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A40) },
   8963          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A41) },
   8964          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A42) },
   8965          1.1  christos     { Bad_Opcode },
   8966          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A44) },
   8967          1.1  christos     { Bad_Opcode },
   8968  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3A46) },
   8969          1.1  christos     { Bad_Opcode },
   8970          1.1  christos     /* 48 */
   8971          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A48) },
   8972          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A49) },
   8973          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A4A) },
   8974          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A4B) },
   8975          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A4C) },
   8976          1.1  christos     { Bad_Opcode },
   8977          1.1  christos     { Bad_Opcode },
   8978          1.1  christos     { Bad_Opcode },
   8979          1.1  christos     /* 50 */
   8980          1.1  christos     { Bad_Opcode },
   8981          1.1  christos     { Bad_Opcode },
   8982          1.1  christos     { Bad_Opcode },
   8983          1.1  christos     { Bad_Opcode },
   8984          1.1  christos     { Bad_Opcode },
   8985          1.1  christos     { Bad_Opcode },
   8986          1.1  christos     { Bad_Opcode },
   8987          1.1  christos     { Bad_Opcode },
   8988          1.1  christos     /* 58 */
   8989          1.1  christos     { Bad_Opcode },
   8990          1.1  christos     { Bad_Opcode },
   8991          1.1  christos     { Bad_Opcode },
   8992          1.1  christos     { Bad_Opcode },
   8993          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A5C) },
   8994          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A5D) },
   8995          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A5E) },
   8996          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A5F) },
   8997          1.1  christos     /* 60 */
   8998          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A60) },
   8999          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A61) },
   9000          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A62) },
   9001          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A63) },
   9002          1.1  christos     { Bad_Opcode },
   9003          1.1  christos     { Bad_Opcode },
   9004          1.1  christos     { Bad_Opcode },
   9005          1.1  christos     { Bad_Opcode },
   9006          1.1  christos     /* 68 */
   9007          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A68) },
   9008          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A69) },
   9009          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A6A) },
   9010          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A6B) },
   9011          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A6C) },
   9012          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A6D) },
   9013          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A6E) },
   9014          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A6F) },
   9015          1.1  christos     /* 70 */
   9016          1.1  christos     { Bad_Opcode },
   9017          1.1  christos     { Bad_Opcode },
   9018          1.1  christos     { Bad_Opcode },
   9019          1.1  christos     { Bad_Opcode },
   9020          1.1  christos     { Bad_Opcode },
   9021          1.1  christos     { Bad_Opcode },
   9022          1.1  christos     { Bad_Opcode },
   9023          1.1  christos     { Bad_Opcode },
   9024          1.1  christos     /* 78 */
   9025          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A78) },
   9026          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A79) },
   9027          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A7A) },
   9028          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A7B) },
   9029          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A7C) },
   9030          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A7D) },
   9031          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A7E) },
   9032          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3A7F) },
   9033          1.1  christos     /* 80 */
   9034          1.1  christos     { Bad_Opcode },
   9035          1.1  christos     { Bad_Opcode },
   9036          1.1  christos     { Bad_Opcode },
   9037          1.1  christos     { Bad_Opcode },
   9038          1.1  christos     { Bad_Opcode },
   9039          1.1  christos     { Bad_Opcode },
   9040          1.1  christos     { Bad_Opcode },
   9041          1.1  christos     { Bad_Opcode },
   9042          1.1  christos     /* 88 */
   9043          1.1  christos     { Bad_Opcode },
   9044          1.1  christos     { Bad_Opcode },
   9045          1.1  christos     { Bad_Opcode },
   9046          1.1  christos     { Bad_Opcode },
   9047          1.1  christos     { Bad_Opcode },
   9048          1.1  christos     { Bad_Opcode },
   9049          1.1  christos     { Bad_Opcode },
   9050          1.1  christos     { Bad_Opcode },
   9051          1.1  christos     /* 90 */
   9052          1.1  christos     { Bad_Opcode },
   9053          1.1  christos     { Bad_Opcode },
   9054          1.1  christos     { Bad_Opcode },
   9055          1.1  christos     { Bad_Opcode },
   9056          1.1  christos     { Bad_Opcode },
   9057          1.1  christos     { Bad_Opcode },
   9058          1.1  christos     { Bad_Opcode },
   9059          1.1  christos     { Bad_Opcode },
   9060          1.1  christos     /* 98 */
   9061          1.1  christos     { Bad_Opcode },
   9062          1.1  christos     { Bad_Opcode },
   9063          1.1  christos     { Bad_Opcode },
   9064          1.1  christos     { Bad_Opcode },
   9065          1.1  christos     { Bad_Opcode },
   9066          1.1  christos     { Bad_Opcode },
   9067          1.1  christos     { Bad_Opcode },
   9068          1.1  christos     { Bad_Opcode },
   9069          1.1  christos     /* a0 */
   9070          1.1  christos     { Bad_Opcode },
   9071          1.1  christos     { Bad_Opcode },
   9072          1.1  christos     { Bad_Opcode },
   9073          1.1  christos     { Bad_Opcode },
   9074          1.1  christos     { Bad_Opcode },
   9075          1.1  christos     { Bad_Opcode },
   9076          1.1  christos     { Bad_Opcode },
   9077          1.1  christos     { Bad_Opcode },
   9078          1.1  christos     /* a8 */
   9079          1.1  christos     { Bad_Opcode },
   9080          1.1  christos     { Bad_Opcode },
   9081          1.1  christos     { Bad_Opcode },
   9082          1.1  christos     { Bad_Opcode },
   9083          1.1  christos     { Bad_Opcode },
   9084          1.1  christos     { Bad_Opcode },
   9085          1.1  christos     { Bad_Opcode },
   9086          1.1  christos     { Bad_Opcode },
   9087          1.1  christos     /* b0 */
   9088          1.1  christos     { Bad_Opcode },
   9089          1.1  christos     { Bad_Opcode },
   9090          1.1  christos     { Bad_Opcode },
   9091          1.1  christos     { Bad_Opcode },
   9092          1.1  christos     { Bad_Opcode },
   9093          1.1  christos     { Bad_Opcode },
   9094          1.1  christos     { Bad_Opcode },
   9095          1.1  christos     { Bad_Opcode },
   9096          1.1  christos     /* b8 */
   9097          1.1  christos     { Bad_Opcode },
   9098          1.1  christos     { Bad_Opcode },
   9099          1.1  christos     { Bad_Opcode },
   9100          1.1  christos     { Bad_Opcode },
   9101          1.1  christos     { Bad_Opcode },
   9102          1.1  christos     { Bad_Opcode },
   9103          1.1  christos     { Bad_Opcode },
   9104          1.1  christos     { Bad_Opcode },
   9105          1.1  christos     /* c0 */
   9106          1.1  christos     { Bad_Opcode },
   9107          1.1  christos     { Bad_Opcode },
   9108          1.1  christos     { Bad_Opcode },
   9109          1.1  christos     { Bad_Opcode },
   9110          1.1  christos     { Bad_Opcode },
   9111          1.1  christos     { Bad_Opcode },
   9112          1.1  christos     { Bad_Opcode },
   9113          1.1  christos     { Bad_Opcode },
   9114          1.1  christos     /* c8 */
   9115          1.1  christos     { Bad_Opcode },
   9116          1.1  christos     { Bad_Opcode },
   9117          1.1  christos     { Bad_Opcode },
   9118          1.1  christos     { Bad_Opcode },
   9119          1.1  christos     { Bad_Opcode },
   9120          1.1  christos     { Bad_Opcode },
   9121          1.1  christos     { Bad_Opcode },
   9122          1.1  christos     { Bad_Opcode },
   9123          1.1  christos     /* d0 */
   9124          1.1  christos     { Bad_Opcode },
   9125          1.1  christos     { Bad_Opcode },
   9126          1.1  christos     { Bad_Opcode },
   9127          1.1  christos     { Bad_Opcode },
   9128          1.1  christos     { Bad_Opcode },
   9129          1.1  christos     { Bad_Opcode },
   9130          1.1  christos     { Bad_Opcode },
   9131          1.1  christos     { Bad_Opcode },
   9132          1.1  christos     /* d8 */
   9133          1.1  christos     { Bad_Opcode },
   9134          1.1  christos     { Bad_Opcode },
   9135          1.1  christos     { Bad_Opcode },
   9136          1.1  christos     { Bad_Opcode },
   9137          1.1  christos     { Bad_Opcode },
   9138          1.1  christos     { Bad_Opcode },
   9139          1.1  christos     { Bad_Opcode },
   9140          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F3ADF) },
   9141          1.1  christos     /* e0 */
   9142          1.1  christos     { Bad_Opcode },
   9143          1.1  christos     { Bad_Opcode },
   9144          1.1  christos     { Bad_Opcode },
   9145          1.1  christos     { Bad_Opcode },
   9146          1.1  christos     { Bad_Opcode },
   9147          1.1  christos     { Bad_Opcode },
   9148          1.1  christos     { Bad_Opcode },
   9149          1.1  christos     { Bad_Opcode },
   9150          1.1  christos     /* e8 */
   9151          1.1  christos     { Bad_Opcode },
   9152          1.1  christos     { Bad_Opcode },
   9153          1.1  christos     { Bad_Opcode },
   9154          1.1  christos     { Bad_Opcode },
   9155          1.1  christos     { Bad_Opcode },
   9156          1.1  christos     { Bad_Opcode },
   9157          1.1  christos     { Bad_Opcode },
   9158          1.1  christos     { Bad_Opcode },
   9159          1.1  christos     /* f0 */
   9160  1.1.1.1.8.1       tls     { PREFIX_TABLE (PREFIX_VEX_0F3AF0) },
   9161          1.1  christos     { Bad_Opcode },
   9162          1.1  christos     { Bad_Opcode },
   9163          1.1  christos     { Bad_Opcode },
   9164          1.1  christos     { Bad_Opcode },
   9165          1.1  christos     { Bad_Opcode },
   9166          1.1  christos     { Bad_Opcode },
   9167          1.1  christos     { Bad_Opcode },
   9168          1.1  christos     /* f8 */
   9169          1.1  christos     { Bad_Opcode },
   9170          1.1  christos     { Bad_Opcode },
   9171          1.1  christos     { Bad_Opcode },
   9172          1.1  christos     { Bad_Opcode },
   9173          1.1  christos     { Bad_Opcode },
   9174          1.1  christos     { Bad_Opcode },
   9175          1.1  christos     { Bad_Opcode },
   9176          1.1  christos     { Bad_Opcode },
   9177          1.1  christos   },
   9178          1.1  christos };
   9179          1.1  christos 
   9180  1.1.1.1.8.1       tls #define NEED_OPCODE_TABLE
   9181  1.1.1.1.8.1       tls #include "i386-dis-evex.h"
   9182  1.1.1.1.8.1       tls #undef NEED_OPCODE_TABLE
   9183          1.1  christos static const struct dis386 vex_len_table[][2] = {
   9184          1.1  christos   /* VEX_LEN_0F10_P_1 */
   9185          1.1  christos   {
   9186          1.1  christos     { VEX_W_TABLE (VEX_W_0F10_P_1) },
   9187          1.1  christos     { VEX_W_TABLE (VEX_W_0F10_P_1) },
   9188          1.1  christos   },
   9189          1.1  christos 
   9190          1.1  christos   /* VEX_LEN_0F10_P_3 */
   9191          1.1  christos   {
   9192          1.1  christos     { VEX_W_TABLE (VEX_W_0F10_P_3) },
   9193          1.1  christos     { VEX_W_TABLE (VEX_W_0F10_P_3) },
   9194          1.1  christos   },
   9195          1.1  christos 
   9196          1.1  christos   /* VEX_LEN_0F11_P_1 */
   9197          1.1  christos   {
   9198          1.1  christos     { VEX_W_TABLE (VEX_W_0F11_P_1) },
   9199          1.1  christos     { VEX_W_TABLE (VEX_W_0F11_P_1) },
   9200          1.1  christos   },
   9201          1.1  christos 
   9202          1.1  christos   /* VEX_LEN_0F11_P_3 */
   9203          1.1  christos   {
   9204          1.1  christos     { VEX_W_TABLE (VEX_W_0F11_P_3) },
   9205          1.1  christos     { VEX_W_TABLE (VEX_W_0F11_P_3) },
   9206          1.1  christos   },
   9207          1.1  christos 
   9208          1.1  christos   /* VEX_LEN_0F12_P_0_M_0 */
   9209          1.1  christos   {
   9210          1.1  christos     { VEX_W_TABLE (VEX_W_0F12_P_0_M_0) },
   9211          1.1  christos   },
   9212          1.1  christos 
   9213          1.1  christos   /* VEX_LEN_0F12_P_0_M_1 */
   9214          1.1  christos   {
   9215          1.1  christos     { VEX_W_TABLE (VEX_W_0F12_P_0_M_1) },
   9216          1.1  christos   },
   9217          1.1  christos 
   9218          1.1  christos   /* VEX_LEN_0F12_P_2 */
   9219          1.1  christos   {
   9220          1.1  christos     { VEX_W_TABLE (VEX_W_0F12_P_2) },
   9221          1.1  christos   },
   9222          1.1  christos 
   9223          1.1  christos   /* VEX_LEN_0F13_M_0 */
   9224          1.1  christos   {
   9225          1.1  christos     { VEX_W_TABLE (VEX_W_0F13_M_0) },
   9226          1.1  christos   },
   9227          1.1  christos 
   9228          1.1  christos   /* VEX_LEN_0F16_P_0_M_0 */
   9229          1.1  christos   {
   9230          1.1  christos     { VEX_W_TABLE (VEX_W_0F16_P_0_M_0) },
   9231          1.1  christos   },
   9232          1.1  christos 
   9233          1.1  christos   /* VEX_LEN_0F16_P_0_M_1 */
   9234          1.1  christos   {
   9235          1.1  christos     { VEX_W_TABLE (VEX_W_0F16_P_0_M_1) },
   9236          1.1  christos   },
   9237          1.1  christos 
   9238          1.1  christos   /* VEX_LEN_0F16_P_2 */
   9239          1.1  christos   {
   9240          1.1  christos     { VEX_W_TABLE (VEX_W_0F16_P_2) },
   9241          1.1  christos   },
   9242          1.1  christos 
   9243          1.1  christos   /* VEX_LEN_0F17_M_0 */
   9244          1.1  christos   {
   9245          1.1  christos     { VEX_W_TABLE (VEX_W_0F17_M_0) },
   9246          1.1  christos   },
   9247          1.1  christos 
   9248          1.1  christos   /* VEX_LEN_0F2A_P_1 */
   9249          1.1  christos   {
   9250          1.1  christos     { "vcvtsi2ss%LQ",	{ XMScalar, VexScalar, Ev } },
   9251          1.1  christos     { "vcvtsi2ss%LQ",	{ XMScalar, VexScalar, Ev } },
   9252          1.1  christos   },
   9253          1.1  christos 
   9254          1.1  christos   /* VEX_LEN_0F2A_P_3 */
   9255          1.1  christos   {
   9256          1.1  christos     { "vcvtsi2sd%LQ",	{ XMScalar, VexScalar, Ev } },
   9257          1.1  christos     { "vcvtsi2sd%LQ",	{ XMScalar, VexScalar, Ev } },
   9258          1.1  christos   },
   9259          1.1  christos 
   9260          1.1  christos   /* VEX_LEN_0F2C_P_1 */
   9261          1.1  christos   {
   9262          1.1  christos     { "vcvttss2siY",	{ Gv, EXdScalar } },
   9263          1.1  christos     { "vcvttss2siY",	{ Gv, EXdScalar } },
   9264          1.1  christos   },
   9265          1.1  christos 
   9266          1.1  christos   /* VEX_LEN_0F2C_P_3 */
   9267          1.1  christos   {
   9268          1.1  christos     { "vcvttsd2siY",	{ Gv, EXqScalar } },
   9269          1.1  christos     { "vcvttsd2siY",	{ Gv, EXqScalar } },
   9270          1.1  christos   },
   9271          1.1  christos 
   9272          1.1  christos   /* VEX_LEN_0F2D_P_1 */
   9273          1.1  christos   {
   9274          1.1  christos     { "vcvtss2siY",	{ Gv, EXdScalar } },
   9275          1.1  christos     { "vcvtss2siY",	{ Gv, EXdScalar } },
   9276          1.1  christos   },
   9277          1.1  christos 
   9278          1.1  christos   /* VEX_LEN_0F2D_P_3 */
   9279          1.1  christos   {
   9280          1.1  christos     { "vcvtsd2siY",	{ Gv, EXqScalar } },
   9281          1.1  christos     { "vcvtsd2siY",	{ Gv, EXqScalar } },
   9282          1.1  christos   },
   9283          1.1  christos 
   9284          1.1  christos   /* VEX_LEN_0F2E_P_0 */
   9285          1.1  christos   {
   9286          1.1  christos     { VEX_W_TABLE (VEX_W_0F2E_P_0) },
   9287          1.1  christos     { VEX_W_TABLE (VEX_W_0F2E_P_0) },
   9288          1.1  christos   },
   9289          1.1  christos 
   9290          1.1  christos   /* VEX_LEN_0F2E_P_2 */
   9291          1.1  christos   {
   9292          1.1  christos     { VEX_W_TABLE (VEX_W_0F2E_P_2) },
   9293          1.1  christos     { VEX_W_TABLE (VEX_W_0F2E_P_2) },
   9294          1.1  christos   },
   9295          1.1  christos 
   9296          1.1  christos   /* VEX_LEN_0F2F_P_0 */
   9297          1.1  christos   {
   9298          1.1  christos     { VEX_W_TABLE (VEX_W_0F2F_P_0) },
   9299          1.1  christos     { VEX_W_TABLE (VEX_W_0F2F_P_0) },
   9300          1.1  christos   },
   9301          1.1  christos 
   9302          1.1  christos   /* VEX_LEN_0F2F_P_2 */
   9303          1.1  christos   {
   9304          1.1  christos     { VEX_W_TABLE (VEX_W_0F2F_P_2) },
   9305          1.1  christos     { VEX_W_TABLE (VEX_W_0F2F_P_2) },
   9306          1.1  christos   },
   9307          1.1  christos 
   9308  1.1.1.1.8.1       tls   /* VEX_LEN_0F41_P_0 */
   9309  1.1.1.1.8.1       tls   {
   9310  1.1.1.1.8.1       tls     { Bad_Opcode },
   9311  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F41_P_0_LEN_1) },
   9312  1.1.1.1.8.1       tls   },
   9313  1.1.1.1.8.1       tls   /* VEX_LEN_0F42_P_0 */
   9314  1.1.1.1.8.1       tls   {
   9315  1.1.1.1.8.1       tls     { Bad_Opcode },
   9316  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F42_P_0_LEN_1) },
   9317  1.1.1.1.8.1       tls   },
   9318  1.1.1.1.8.1       tls   /* VEX_LEN_0F44_P_0 */
   9319  1.1.1.1.8.1       tls   {
   9320  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F44_P_0_LEN_0) },
   9321  1.1.1.1.8.1       tls   },
   9322  1.1.1.1.8.1       tls   /* VEX_LEN_0F45_P_0 */
   9323  1.1.1.1.8.1       tls   {
   9324  1.1.1.1.8.1       tls     { Bad_Opcode },
   9325  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F45_P_0_LEN_1) },
   9326  1.1.1.1.8.1       tls   },
   9327  1.1.1.1.8.1       tls   /* VEX_LEN_0F46_P_0 */
   9328  1.1.1.1.8.1       tls   {
   9329  1.1.1.1.8.1       tls     { Bad_Opcode },
   9330  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F46_P_0_LEN_1) },
   9331  1.1.1.1.8.1       tls   },
   9332  1.1.1.1.8.1       tls   /* VEX_LEN_0F47_P_0 */
   9333  1.1.1.1.8.1       tls   {
   9334  1.1.1.1.8.1       tls     { Bad_Opcode },
   9335  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F47_P_0_LEN_1) },
   9336  1.1.1.1.8.1       tls   },
   9337  1.1.1.1.8.1       tls   /* VEX_LEN_0F4B_P_2 */
   9338  1.1.1.1.8.1       tls   {
   9339  1.1.1.1.8.1       tls     { Bad_Opcode },
   9340  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F4B_P_2_LEN_1) },
   9341  1.1.1.1.8.1       tls   },
   9342  1.1.1.1.8.1       tls 
   9343          1.1  christos   /* VEX_LEN_0F51_P_1 */
   9344          1.1  christos   {
   9345          1.1  christos     { VEX_W_TABLE (VEX_W_0F51_P_1) },
   9346          1.1  christos     { VEX_W_TABLE (VEX_W_0F51_P_1) },
   9347          1.1  christos   },
   9348          1.1  christos 
   9349          1.1  christos   /* VEX_LEN_0F51_P_3 */
   9350          1.1  christos   {
   9351          1.1  christos     { VEX_W_TABLE (VEX_W_0F51_P_3) },
   9352          1.1  christos     { VEX_W_TABLE (VEX_W_0F51_P_3) },
   9353          1.1  christos   },
   9354          1.1  christos 
   9355          1.1  christos   /* VEX_LEN_0F52_P_1 */
   9356          1.1  christos   {
   9357          1.1  christos     { VEX_W_TABLE (VEX_W_0F52_P_1) },
   9358          1.1  christos     { VEX_W_TABLE (VEX_W_0F52_P_1) },
   9359          1.1  christos   },
   9360          1.1  christos 
   9361          1.1  christos   /* VEX_LEN_0F53_P_1 */
   9362          1.1  christos   {
   9363          1.1  christos     { VEX_W_TABLE (VEX_W_0F53_P_1) },
   9364          1.1  christos     { VEX_W_TABLE (VEX_W_0F53_P_1) },
   9365          1.1  christos   },
   9366          1.1  christos 
   9367          1.1  christos   /* VEX_LEN_0F58_P_1 */
   9368          1.1  christos   {
   9369          1.1  christos     { VEX_W_TABLE (VEX_W_0F58_P_1) },
   9370          1.1  christos     { VEX_W_TABLE (VEX_W_0F58_P_1) },
   9371          1.1  christos   },
   9372          1.1  christos 
   9373          1.1  christos   /* VEX_LEN_0F58_P_3 */
   9374          1.1  christos   {
   9375          1.1  christos     { VEX_W_TABLE (VEX_W_0F58_P_3) },
   9376          1.1  christos     { VEX_W_TABLE (VEX_W_0F58_P_3) },
   9377          1.1  christos   },
   9378          1.1  christos 
   9379          1.1  christos   /* VEX_LEN_0F59_P_1 */
   9380          1.1  christos   {
   9381          1.1  christos     { VEX_W_TABLE (VEX_W_0F59_P_1) },
   9382          1.1  christos     { VEX_W_TABLE (VEX_W_0F59_P_1) },
   9383          1.1  christos   },
   9384          1.1  christos 
   9385          1.1  christos   /* VEX_LEN_0F59_P_3 */
   9386          1.1  christos   {
   9387          1.1  christos     { VEX_W_TABLE (VEX_W_0F59_P_3) },
   9388          1.1  christos     { VEX_W_TABLE (VEX_W_0F59_P_3) },
   9389          1.1  christos   },
   9390          1.1  christos 
   9391          1.1  christos   /* VEX_LEN_0F5A_P_1 */
   9392          1.1  christos   {
   9393          1.1  christos     { VEX_W_TABLE (VEX_W_0F5A_P_1) },
   9394          1.1  christos     { VEX_W_TABLE (VEX_W_0F5A_P_1) },
   9395          1.1  christos   },
   9396          1.1  christos 
   9397          1.1  christos   /* VEX_LEN_0F5A_P_3 */
   9398          1.1  christos   {
   9399          1.1  christos     { VEX_W_TABLE (VEX_W_0F5A_P_3) },
   9400          1.1  christos     { VEX_W_TABLE (VEX_W_0F5A_P_3) },
   9401          1.1  christos   },
   9402          1.1  christos 
   9403          1.1  christos   /* VEX_LEN_0F5C_P_1 */
   9404          1.1  christos   {
   9405          1.1  christos     { VEX_W_TABLE (VEX_W_0F5C_P_1) },
   9406          1.1  christos     { VEX_W_TABLE (VEX_W_0F5C_P_1) },
   9407          1.1  christos   },
   9408          1.1  christos 
   9409          1.1  christos   /* VEX_LEN_0F5C_P_3 */
   9410          1.1  christos   {
   9411          1.1  christos     { VEX_W_TABLE (VEX_W_0F5C_P_3) },
   9412          1.1  christos     { VEX_W_TABLE (VEX_W_0F5C_P_3) },
   9413          1.1  christos   },
   9414          1.1  christos 
   9415          1.1  christos   /* VEX_LEN_0F5D_P_1 */
   9416          1.1  christos   {
   9417          1.1  christos     { VEX_W_TABLE (VEX_W_0F5D_P_1) },
   9418          1.1  christos     { VEX_W_TABLE (VEX_W_0F5D_P_1) },
   9419          1.1  christos   },
   9420          1.1  christos 
   9421          1.1  christos   /* VEX_LEN_0F5D_P_3 */
   9422          1.1  christos   {
   9423          1.1  christos     { VEX_W_TABLE (VEX_W_0F5D_P_3) },
   9424          1.1  christos     { VEX_W_TABLE (VEX_W_0F5D_P_3) },
   9425          1.1  christos   },
   9426          1.1  christos 
   9427          1.1  christos   /* VEX_LEN_0F5E_P_1 */
   9428          1.1  christos   {
   9429          1.1  christos     { VEX_W_TABLE (VEX_W_0F5E_P_1) },
   9430          1.1  christos     { VEX_W_TABLE (VEX_W_0F5E_P_1) },
   9431          1.1  christos   },
   9432          1.1  christos 
   9433          1.1  christos   /* VEX_LEN_0F5E_P_3 */
   9434          1.1  christos   {
   9435          1.1  christos     { VEX_W_TABLE (VEX_W_0F5E_P_3) },
   9436          1.1  christos     { VEX_W_TABLE (VEX_W_0F5E_P_3) },
   9437          1.1  christos   },
   9438          1.1  christos 
   9439          1.1  christos   /* VEX_LEN_0F5F_P_1 */
   9440          1.1  christos   {
   9441          1.1  christos     { VEX_W_TABLE (VEX_W_0F5F_P_1) },
   9442          1.1  christos     { VEX_W_TABLE (VEX_W_0F5F_P_1) },
   9443          1.1  christos   },
   9444          1.1  christos 
   9445          1.1  christos   /* VEX_LEN_0F5F_P_3 */
   9446          1.1  christos   {
   9447          1.1  christos     { VEX_W_TABLE (VEX_W_0F5F_P_3) },
   9448          1.1  christos     { VEX_W_TABLE (VEX_W_0F5F_P_3) },
   9449          1.1  christos   },
   9450          1.1  christos 
   9451  1.1.1.1.8.1       tls   /* VEX_LEN_0F6E_P_2 */
   9452          1.1  christos   {
   9453  1.1.1.1.8.1       tls     { "vmovK",		{ XMScalar, Edq } },
   9454  1.1.1.1.8.1       tls     { "vmovK",		{ XMScalar, Edq } },
   9455          1.1  christos   },
   9456          1.1  christos 
   9457  1.1.1.1.8.1       tls   /* VEX_LEN_0F7E_P_1 */
   9458          1.1  christos   {
   9459  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F7E_P_1) },
   9460  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F7E_P_1) },
   9461          1.1  christos   },
   9462          1.1  christos 
   9463  1.1.1.1.8.1       tls   /* VEX_LEN_0F7E_P_2 */
   9464          1.1  christos   {
   9465  1.1.1.1.8.1       tls     { "vmovK",		{ Edq, XMScalar } },
   9466  1.1.1.1.8.1       tls     { "vmovK",		{ Edq, XMScalar } },
   9467          1.1  christos   },
   9468          1.1  christos 
   9469  1.1.1.1.8.1       tls   /* VEX_LEN_0F90_P_0 */
   9470          1.1  christos   {
   9471  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F90_P_0_LEN_0) },
   9472          1.1  christos   },
   9473          1.1  christos 
   9474  1.1.1.1.8.1       tls   /* VEX_LEN_0F91_P_0 */
   9475          1.1  christos   {
   9476  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F91_P_0_LEN_0) },
   9477          1.1  christos   },
   9478          1.1  christos 
   9479  1.1.1.1.8.1       tls   /* VEX_LEN_0F92_P_0 */
   9480          1.1  christos   {
   9481  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F92_P_0_LEN_0) },
   9482          1.1  christos   },
   9483          1.1  christos 
   9484  1.1.1.1.8.1       tls   /* VEX_LEN_0F93_P_0 */
   9485          1.1  christos   {
   9486  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F93_P_0_LEN_0) },
   9487          1.1  christos   },
   9488          1.1  christos 
   9489  1.1.1.1.8.1       tls   /* VEX_LEN_0F98_P_0 */
   9490          1.1  christos   {
   9491  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F98_P_0_LEN_0) },
   9492          1.1  christos   },
   9493          1.1  christos 
   9494  1.1.1.1.8.1       tls   /* VEX_LEN_0FAE_R_2_M_0 */
   9495          1.1  christos   {
   9496  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FAE_R_2_M_0) },
   9497          1.1  christos   },
   9498          1.1  christos 
   9499  1.1.1.1.8.1       tls   /* VEX_LEN_0FAE_R_3_M_0 */
   9500          1.1  christos   {
   9501  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FAE_R_3_M_0) },
   9502          1.1  christos   },
   9503          1.1  christos 
   9504  1.1.1.1.8.1       tls   /* VEX_LEN_0FC2_P_1 */
   9505          1.1  christos   {
   9506  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FC2_P_1) },
   9507  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FC2_P_1) },
   9508          1.1  christos   },
   9509          1.1  christos 
   9510  1.1.1.1.8.1       tls   /* VEX_LEN_0FC2_P_3 */
   9511          1.1  christos   {
   9512  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FC2_P_3) },
   9513  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FC2_P_3) },
   9514          1.1  christos   },
   9515          1.1  christos 
   9516  1.1.1.1.8.1       tls   /* VEX_LEN_0FC4_P_2 */
   9517          1.1  christos   {
   9518  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FC4_P_2) },
   9519          1.1  christos   },
   9520          1.1  christos 
   9521  1.1.1.1.8.1       tls   /* VEX_LEN_0FC5_P_2 */
   9522          1.1  christos   {
   9523  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FC5_P_2) },
   9524          1.1  christos   },
   9525          1.1  christos 
   9526  1.1.1.1.8.1       tls   /* VEX_LEN_0FD6_P_2 */
   9527          1.1  christos   {
   9528  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD6_P_2) },
   9529  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD6_P_2) },
   9530          1.1  christos   },
   9531          1.1  christos 
   9532  1.1.1.1.8.1       tls   /* VEX_LEN_0FF7_P_2 */
   9533          1.1  christos   {
   9534  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FF7_P_2) },
   9535          1.1  christos   },
   9536          1.1  christos 
   9537  1.1.1.1.8.1       tls   /* VEX_LEN_0F3816_P_2 */
   9538          1.1  christos   {
   9539  1.1.1.1.8.1       tls     { Bad_Opcode },
   9540  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3816_P_2) },
   9541          1.1  christos   },
   9542          1.1  christos 
   9543  1.1.1.1.8.1       tls   /* VEX_LEN_0F3819_P_2 */
   9544          1.1  christos   {
   9545          1.1  christos     { Bad_Opcode },
   9546  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3819_P_2) },
   9547          1.1  christos   },
   9548          1.1  christos 
   9549          1.1  christos   /* VEX_LEN_0F381A_P_2_M_0 */
   9550          1.1  christos   {
   9551          1.1  christos     { Bad_Opcode },
   9552          1.1  christos     { VEX_W_TABLE (VEX_W_0F381A_P_2_M_0) },
   9553          1.1  christos   },
   9554          1.1  christos 
   9555  1.1.1.1.8.1       tls   /* VEX_LEN_0F3836_P_2 */
   9556          1.1  christos   {
   9557  1.1.1.1.8.1       tls     { Bad_Opcode },
   9558  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3836_P_2) },
   9559          1.1  christos   },
   9560          1.1  christos 
   9561  1.1.1.1.8.1       tls   /* VEX_LEN_0F3841_P_2 */
   9562          1.1  christos   {
   9563  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3841_P_2) },
   9564          1.1  christos   },
   9565          1.1  christos 
   9566  1.1.1.1.8.1       tls   /* VEX_LEN_0F385A_P_2_M_0 */
   9567          1.1  christos   {
   9568  1.1.1.1.8.1       tls     { Bad_Opcode },
   9569  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F385A_P_2_M_0) },
   9570          1.1  christos   },
   9571          1.1  christos 
   9572  1.1.1.1.8.1       tls   /* VEX_LEN_0F38DB_P_2 */
   9573          1.1  christos   {
   9574  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F38DB_P_2) },
   9575          1.1  christos   },
   9576          1.1  christos 
   9577  1.1.1.1.8.1       tls   /* VEX_LEN_0F38DC_P_2 */
   9578          1.1  christos   {
   9579  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F38DC_P_2) },
   9580          1.1  christos   },
   9581          1.1  christos 
   9582  1.1.1.1.8.1       tls   /* VEX_LEN_0F38DD_P_2 */
   9583          1.1  christos   {
   9584  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F38DD_P_2) },
   9585          1.1  christos   },
   9586          1.1  christos 
   9587  1.1.1.1.8.1       tls   /* VEX_LEN_0F38DE_P_2 */
   9588          1.1  christos   {
   9589  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F38DE_P_2) },
   9590          1.1  christos   },
   9591          1.1  christos 
   9592  1.1.1.1.8.1       tls   /* VEX_LEN_0F38DF_P_2 */
   9593          1.1  christos   {
   9594  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F38DF_P_2) },
   9595          1.1  christos   },
   9596          1.1  christos 
   9597  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F2_P_0 */
   9598          1.1  christos   {
   9599  1.1.1.1.8.1       tls     { "andnS",		{ Gdq, VexGdq, Edq } },
   9600          1.1  christos   },
   9601          1.1  christos 
   9602  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F3_R_1_P_0 */
   9603          1.1  christos   {
   9604  1.1.1.1.8.1       tls     { "blsrS",		{ VexGdq, Edq } },
   9605          1.1  christos   },
   9606          1.1  christos 
   9607  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F3_R_2_P_0 */
   9608          1.1  christos   {
   9609  1.1.1.1.8.1       tls     { "blsmskS",	{ VexGdq, Edq } },
   9610          1.1  christos   },
   9611          1.1  christos 
   9612  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F3_R_3_P_0 */
   9613          1.1  christos   {
   9614  1.1.1.1.8.1       tls     { "blsiS",		{ VexGdq, Edq } },
   9615          1.1  christos   },
   9616          1.1  christos 
   9617  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F5_P_0 */
   9618          1.1  christos   {
   9619  1.1.1.1.8.1       tls     { "bzhiS",		{ Gdq, Edq, VexGdq } },
   9620          1.1  christos   },
   9621          1.1  christos 
   9622  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F5_P_1 */
   9623          1.1  christos   {
   9624  1.1.1.1.8.1       tls     { "pextS",		{ Gdq, VexGdq, Edq } },
   9625          1.1  christos   },
   9626          1.1  christos 
   9627  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F5_P_3 */
   9628          1.1  christos   {
   9629  1.1.1.1.8.1       tls     { "pdepS",		{ Gdq, VexGdq, Edq } },
   9630          1.1  christos   },
   9631          1.1  christos 
   9632  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F6_P_3 */
   9633          1.1  christos   {
   9634  1.1.1.1.8.1       tls     { "mulxS",		{ Gdq, VexGdq, Edq } },
   9635          1.1  christos   },
   9636          1.1  christos 
   9637  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F7_P_0 */
   9638          1.1  christos   {
   9639  1.1.1.1.8.1       tls     { "bextrS",		{ Gdq, Edq, VexGdq } },
   9640          1.1  christos   },
   9641          1.1  christos 
   9642  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F7_P_1 */
   9643          1.1  christos   {
   9644  1.1.1.1.8.1       tls     { "sarxS",		{ Gdq, Edq, VexGdq } },
   9645          1.1  christos   },
   9646          1.1  christos 
   9647  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F7_P_2 */
   9648          1.1  christos   {
   9649  1.1.1.1.8.1       tls     { "shlxS",		{ Gdq, Edq, VexGdq } },
   9650          1.1  christos   },
   9651          1.1  christos 
   9652  1.1.1.1.8.1       tls   /* VEX_LEN_0F38F7_P_3 */
   9653          1.1  christos   {
   9654  1.1.1.1.8.1       tls     { "shrxS",		{ Gdq, Edq, VexGdq } },
   9655          1.1  christos   },
   9656          1.1  christos 
   9657  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A00_P_2 */
   9658          1.1  christos   {
   9659  1.1.1.1.8.1       tls     { Bad_Opcode },
   9660  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A00_P_2) },
   9661          1.1  christos   },
   9662          1.1  christos 
   9663  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A01_P_2 */
   9664          1.1  christos   {
   9665  1.1.1.1.8.1       tls     { Bad_Opcode },
   9666  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A01_P_2) },
   9667          1.1  christos   },
   9668          1.1  christos 
   9669          1.1  christos   /* VEX_LEN_0F3A06_P_2 */
   9670          1.1  christos   {
   9671          1.1  christos     { Bad_Opcode },
   9672          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A06_P_2) },
   9673          1.1  christos   },
   9674          1.1  christos 
   9675          1.1  christos   /* VEX_LEN_0F3A0A_P_2 */
   9676          1.1  christos   {
   9677          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A0A_P_2) },
   9678          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A0A_P_2) },
   9679          1.1  christos   },
   9680          1.1  christos 
   9681          1.1  christos   /* VEX_LEN_0F3A0B_P_2 */
   9682          1.1  christos   {
   9683          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A0B_P_2) },
   9684          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A0B_P_2) },
   9685          1.1  christos   },
   9686          1.1  christos 
   9687          1.1  christos   /* VEX_LEN_0F3A14_P_2 */
   9688          1.1  christos   {
   9689          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A14_P_2) },
   9690          1.1  christos   },
   9691          1.1  christos 
   9692          1.1  christos   /* VEX_LEN_0F3A15_P_2 */
   9693          1.1  christos   {
   9694          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A15_P_2) },
   9695          1.1  christos   },
   9696          1.1  christos 
   9697          1.1  christos   /* VEX_LEN_0F3A16_P_2  */
   9698          1.1  christos   {
   9699          1.1  christos     { "vpextrK",	{ Edq, XM, Ib } },
   9700          1.1  christos   },
   9701          1.1  christos 
   9702          1.1  christos   /* VEX_LEN_0F3A17_P_2 */
   9703          1.1  christos   {
   9704          1.1  christos     { "vextractps",	{ Edqd, XM, Ib } },
   9705          1.1  christos   },
   9706          1.1  christos 
   9707          1.1  christos   /* VEX_LEN_0F3A18_P_2 */
   9708          1.1  christos   {
   9709          1.1  christos     { Bad_Opcode },
   9710          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A18_P_2) },
   9711          1.1  christos   },
   9712          1.1  christos 
   9713          1.1  christos   /* VEX_LEN_0F3A19_P_2 */
   9714          1.1  christos   {
   9715          1.1  christos     { Bad_Opcode },
   9716          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A19_P_2) },
   9717          1.1  christos   },
   9718          1.1  christos 
   9719          1.1  christos   /* VEX_LEN_0F3A20_P_2 */
   9720          1.1  christos   {
   9721          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A20_P_2) },
   9722          1.1  christos   },
   9723          1.1  christos 
   9724          1.1  christos   /* VEX_LEN_0F3A21_P_2 */
   9725          1.1  christos   {
   9726          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A21_P_2) },
   9727          1.1  christos   },
   9728          1.1  christos 
   9729          1.1  christos   /* VEX_LEN_0F3A22_P_2 */
   9730          1.1  christos   {
   9731          1.1  christos     { "vpinsrK",	{ XM, Vex128, Edq, Ib } },
   9732          1.1  christos   },
   9733          1.1  christos 
   9734  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A30_P_2 */
   9735          1.1  christos   {
   9736  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A30_P_2_LEN_0) },
   9737          1.1  christos   },
   9738          1.1  christos 
   9739  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A32_P_2 */
   9740          1.1  christos   {
   9741  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A32_P_2_LEN_0) },
   9742  1.1.1.1.8.1       tls   },
   9743  1.1.1.1.8.1       tls 
   9744  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A38_P_2 */
   9745  1.1.1.1.8.1       tls   {
   9746  1.1.1.1.8.1       tls     { Bad_Opcode },
   9747  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A38_P_2) },
   9748  1.1.1.1.8.1       tls   },
   9749  1.1.1.1.8.1       tls 
   9750  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A39_P_2 */
   9751  1.1.1.1.8.1       tls   {
   9752  1.1.1.1.8.1       tls     { Bad_Opcode },
   9753  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A39_P_2) },
   9754  1.1.1.1.8.1       tls   },
   9755  1.1.1.1.8.1       tls 
   9756  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A41_P_2 */
   9757  1.1.1.1.8.1       tls   {
   9758  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A41_P_2) },
   9759          1.1  christos   },
   9760          1.1  christos 
   9761          1.1  christos   /* VEX_LEN_0F3A44_P_2 */
   9762          1.1  christos   {
   9763          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A44_P_2) },
   9764          1.1  christos   },
   9765          1.1  christos 
   9766  1.1.1.1.8.1       tls   /* VEX_LEN_0F3A46_P_2 */
   9767          1.1  christos   {
   9768  1.1.1.1.8.1       tls     { Bad_Opcode },
   9769  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F3A46_P_2) },
   9770          1.1  christos   },
   9771          1.1  christos 
   9772          1.1  christos   /* VEX_LEN_0F3A60_P_2 */
   9773          1.1  christos   {
   9774          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A60_P_2) },
   9775          1.1  christos   },
   9776          1.1  christos 
   9777          1.1  christos   /* VEX_LEN_0F3A61_P_2 */
   9778          1.1  christos   {
   9779          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A61_P_2) },
   9780          1.1  christos   },
   9781          1.1  christos 
   9782          1.1  christos   /* VEX_LEN_0F3A62_P_2 */
   9783          1.1  christos   {
   9784          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A62_P_2) },
   9785          1.1  christos   },
   9786          1.1  christos 
   9787          1.1  christos   /* VEX_LEN_0F3A63_P_2 */
   9788          1.1  christos   {
   9789          1.1  christos     { VEX_W_TABLE (VEX_W_0F3A63_P_2) },
   9790          1.1  christos   },
   9791          1.1  christos 
   9792          1.1  christos   /* VEX_LEN_0F3A6A_P_2 */
   9793          1.1  christos   {
   9794          1.1  christos     { "vfmaddss",	{ XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
   9795          1.1  christos   },
   9796          1.1  christos 
   9797          1.1  christos   /* VEX_LEN_0F3A6B_P_2 */
   9798          1.1  christos   {
   9799          1.1  christos     { "vfmaddsd",	{ XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
   9800          1.1  christos   },
   9801          1.1  christos 
   9802          1.1  christos   /* VEX_LEN_0F3A6E_P_2 */
   9803          1.1  christos   {
   9804          1.1  christos     { "vfmsubss",	{ XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
   9805          1.1  christos   },
   9806          1.1  christos 
   9807          1.1  christos   /* VEX_LEN_0F3A6F_P_2 */
   9808          1.1  christos   {
   9809          1.1  christos     { "vfmsubsd",	{ XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
   9810          1.1  christos   },
   9811          1.1  christos 
   9812          1.1  christos   /* VEX_LEN_0F3A7A_P_2 */
   9813          1.1  christos   {
   9814          1.1  christos     { "vfnmaddss",	{ XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
   9815          1.1  christos   },
   9816          1.1  christos 
   9817          1.1  christos   /* VEX_LEN_0F3A7B_P_2 */
   9818          1.1  christos   {
   9819          1.1  christos     { "vfnmaddsd",	{ XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
   9820          1.1  christos   },
   9821          1.1  christos 
   9822          1.1  christos   /* VEX_LEN_0F3A7E_P_2 */
   9823          1.1  christos   {
   9824          1.1  christos     { "vfnmsubss",	{ XMVexW, Vex128, EXdVexW, EXdVexW, VexI4 } },
   9825          1.1  christos   },
   9826          1.1  christos 
   9827          1.1  christos   /* VEX_LEN_0F3A7F_P_2 */
   9828          1.1  christos   {
   9829          1.1  christos     { "vfnmsubsd",	{ XMVexW, Vex128, EXqVexW, EXqVexW, VexI4 } },
   9830          1.1  christos   },
   9831          1.1  christos 
   9832          1.1  christos   /* VEX_LEN_0F3ADF_P_2 */
   9833          1.1  christos   {
   9834          1.1  christos     { VEX_W_TABLE (VEX_W_0F3ADF_P_2) },
   9835          1.1  christos   },
   9836          1.1  christos 
   9837  1.1.1.1.8.1       tls   /* VEX_LEN_0F3AF0_P_3 */
   9838  1.1.1.1.8.1       tls   {
   9839  1.1.1.1.8.1       tls     { "rorxS",		{ Gdq, Edq, Ib } },
   9840  1.1.1.1.8.1       tls   },
   9841  1.1.1.1.8.1       tls 
   9842  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_CC */
   9843  1.1.1.1.8.1       tls   {
   9844  1.1.1.1.8.1       tls      { "vpcomb",	{ XM, Vex128, EXx, Ib } },
   9845  1.1.1.1.8.1       tls   },
   9846  1.1.1.1.8.1       tls 
   9847  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_CD */
   9848  1.1.1.1.8.1       tls   {
   9849  1.1.1.1.8.1       tls      { "vpcomw",	{ XM, Vex128, EXx, Ib } },
   9850  1.1.1.1.8.1       tls   },
   9851  1.1.1.1.8.1       tls 
   9852  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_CE */
   9853  1.1.1.1.8.1       tls   {
   9854  1.1.1.1.8.1       tls      { "vpcomd",	{ XM, Vex128, EXx, Ib } },
   9855  1.1.1.1.8.1       tls   },
   9856  1.1.1.1.8.1       tls 
   9857  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_CF */
   9858  1.1.1.1.8.1       tls   {
   9859  1.1.1.1.8.1       tls      { "vpcomq",	{ XM, Vex128, EXx, Ib } },
   9860  1.1.1.1.8.1       tls   },
   9861  1.1.1.1.8.1       tls 
   9862  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_EC */
   9863  1.1.1.1.8.1       tls   {
   9864  1.1.1.1.8.1       tls      { "vpcomub",	{ XM, Vex128, EXx, Ib } },
   9865  1.1.1.1.8.1       tls   },
   9866  1.1.1.1.8.1       tls 
   9867  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_ED */
   9868  1.1.1.1.8.1       tls   {
   9869  1.1.1.1.8.1       tls      { "vpcomuw",	{ XM, Vex128, EXx, Ib } },
   9870  1.1.1.1.8.1       tls   },
   9871  1.1.1.1.8.1       tls 
   9872  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_EE */
   9873  1.1.1.1.8.1       tls   {
   9874  1.1.1.1.8.1       tls      { "vpcomud",	{ XM, Vex128, EXx, Ib } },
   9875  1.1.1.1.8.1       tls   },
   9876  1.1.1.1.8.1       tls 
   9877  1.1.1.1.8.1       tls   /* VEX_LEN_0FXOP_08_EF */
   9878  1.1.1.1.8.1       tls   {
   9879  1.1.1.1.8.1       tls      { "vpcomuq",	{ XM, Vex128, EXx, Ib } },
   9880  1.1.1.1.8.1       tls   },
   9881  1.1.1.1.8.1       tls 
   9882          1.1  christos   /* VEX_LEN_0FXOP_09_80 */
   9883          1.1  christos   {
   9884          1.1  christos     { "vfrczps",	{ XM, EXxmm } },
   9885          1.1  christos     { "vfrczps",	{ XM, EXymmq } },
   9886          1.1  christos   },
   9887          1.1  christos 
   9888          1.1  christos   /* VEX_LEN_0FXOP_09_81 */
   9889          1.1  christos   {
   9890          1.1  christos     { "vfrczpd",	{ XM, EXxmm } },
   9891          1.1  christos     { "vfrczpd",	{ XM, EXymmq } },
   9892          1.1  christos   },
   9893          1.1  christos };
   9894          1.1  christos 
   9895          1.1  christos static const struct dis386 vex_w_table[][2] = {
   9896          1.1  christos   {
   9897          1.1  christos     /* VEX_W_0F10_P_0 */
   9898          1.1  christos     { "vmovups",	{ XM, EXx } },
   9899          1.1  christos   },
   9900          1.1  christos   {
   9901          1.1  christos     /* VEX_W_0F10_P_1 */
   9902          1.1  christos     { "vmovss",		{ XMVexScalar, VexScalar, EXdScalar } },
   9903          1.1  christos   },
   9904          1.1  christos   {
   9905          1.1  christos     /* VEX_W_0F10_P_2 */
   9906          1.1  christos     { "vmovupd",	{ XM, EXx } },
   9907          1.1  christos   },
   9908          1.1  christos   {
   9909          1.1  christos     /* VEX_W_0F10_P_3 */
   9910          1.1  christos     { "vmovsd",		{ XMVexScalar, VexScalar, EXqScalar } },
   9911          1.1  christos   },
   9912          1.1  christos   {
   9913          1.1  christos     /* VEX_W_0F11_P_0 */
   9914          1.1  christos     { "vmovups",	{ EXxS, XM } },
   9915          1.1  christos   },
   9916          1.1  christos   {
   9917          1.1  christos     /* VEX_W_0F11_P_1 */
   9918          1.1  christos     { "vmovss",		{ EXdVexScalarS, VexScalar, XMScalar } },
   9919          1.1  christos   },
   9920          1.1  christos   {
   9921          1.1  christos     /* VEX_W_0F11_P_2 */
   9922          1.1  christos     { "vmovupd",	{ EXxS, XM } },
   9923          1.1  christos   },
   9924          1.1  christos   {
   9925          1.1  christos     /* VEX_W_0F11_P_3 */
   9926          1.1  christos     { "vmovsd",		{ EXqVexScalarS, VexScalar, XMScalar } },
   9927          1.1  christos   },
   9928          1.1  christos   {
   9929          1.1  christos     /* VEX_W_0F12_P_0_M_0 */
   9930          1.1  christos     { "vmovlps",	{ XM, Vex128, EXq } },
   9931          1.1  christos   },
   9932          1.1  christos   {
   9933          1.1  christos     /* VEX_W_0F12_P_0_M_1 */
   9934          1.1  christos     { "vmovhlps",	{ XM, Vex128, EXq } },
   9935          1.1  christos   },
   9936          1.1  christos   {
   9937          1.1  christos     /* VEX_W_0F12_P_1 */
   9938          1.1  christos     { "vmovsldup",	{ XM, EXx } },
   9939          1.1  christos   },
   9940          1.1  christos   {
   9941          1.1  christos     /* VEX_W_0F12_P_2 */
   9942          1.1  christos     { "vmovlpd",	{ XM, Vex128, EXq } },
   9943          1.1  christos   },
   9944          1.1  christos   {
   9945          1.1  christos     /* VEX_W_0F12_P_3 */
   9946          1.1  christos     { "vmovddup",	{ XM, EXymmq } },
   9947          1.1  christos   },
   9948          1.1  christos   {
   9949          1.1  christos     /* VEX_W_0F13_M_0 */
   9950          1.1  christos     { "vmovlpX",	{ EXq, XM } },
   9951          1.1  christos   },
   9952          1.1  christos   {
   9953          1.1  christos     /* VEX_W_0F14 */
   9954          1.1  christos     { "vunpcklpX",	{ XM, Vex, EXx } },
   9955          1.1  christos   },
   9956          1.1  christos   {
   9957          1.1  christos     /* VEX_W_0F15 */
   9958          1.1  christos     { "vunpckhpX",	{ XM, Vex, EXx } },
   9959          1.1  christos   },
   9960          1.1  christos   {
   9961          1.1  christos     /* VEX_W_0F16_P_0_M_0 */
   9962          1.1  christos     { "vmovhps",	{ XM, Vex128, EXq } },
   9963          1.1  christos   },
   9964          1.1  christos   {
   9965          1.1  christos     /* VEX_W_0F16_P_0_M_1 */
   9966          1.1  christos     { "vmovlhps",	{ XM, Vex128, EXq } },
   9967          1.1  christos   },
   9968          1.1  christos   {
   9969          1.1  christos     /* VEX_W_0F16_P_1 */
   9970          1.1  christos     { "vmovshdup",	{ XM, EXx } },
   9971          1.1  christos   },
   9972          1.1  christos   {
   9973          1.1  christos     /* VEX_W_0F16_P_2 */
   9974          1.1  christos     { "vmovhpd",	{ XM, Vex128, EXq } },
   9975          1.1  christos   },
   9976          1.1  christos   {
   9977          1.1  christos     /* VEX_W_0F17_M_0 */
   9978          1.1  christos     { "vmovhpX",	{ EXq, XM } },
   9979          1.1  christos   },
   9980          1.1  christos   {
   9981          1.1  christos     /* VEX_W_0F28 */
   9982          1.1  christos     { "vmovapX",	{ XM, EXx } },
   9983          1.1  christos   },
   9984          1.1  christos   {
   9985          1.1  christos     /* VEX_W_0F29 */
   9986          1.1  christos     { "vmovapX",	{ EXxS, XM } },
   9987          1.1  christos   },
   9988          1.1  christos   {
   9989          1.1  christos     /* VEX_W_0F2B_M_0 */
   9990          1.1  christos     { "vmovntpX",	{ Mx, XM } },
   9991          1.1  christos   },
   9992          1.1  christos   {
   9993          1.1  christos     /* VEX_W_0F2E_P_0 */
   9994  1.1.1.1.8.1       tls     { "vucomiss",	{ XMScalar, EXdScalar } },
   9995          1.1  christos   },
   9996          1.1  christos   {
   9997          1.1  christos     /* VEX_W_0F2E_P_2 */
   9998  1.1.1.1.8.1       tls     { "vucomisd",	{ XMScalar, EXqScalar } },
   9999          1.1  christos   },
   10000          1.1  christos   {
   10001          1.1  christos     /* VEX_W_0F2F_P_0 */
   10002          1.1  christos     { "vcomiss",	{ XMScalar, EXdScalar } },
   10003          1.1  christos   },
   10004          1.1  christos   {
   10005          1.1  christos     /* VEX_W_0F2F_P_2 */
   10006          1.1  christos     { "vcomisd",	{ XMScalar, EXqScalar } },
   10007          1.1  christos   },
   10008          1.1  christos   {
   10009  1.1.1.1.8.1       tls     /* VEX_W_0F41_P_0_LEN_1 */
   10010  1.1.1.1.8.1       tls     { "kandw",          { MaskG, MaskVex, MaskR } },
   10011  1.1.1.1.8.1       tls   },
   10012  1.1.1.1.8.1       tls   {
   10013  1.1.1.1.8.1       tls     /* VEX_W_0F42_P_0_LEN_1 */
   10014  1.1.1.1.8.1       tls     { "kandnw",         { MaskG, MaskVex, MaskR } },
   10015  1.1.1.1.8.1       tls   },
   10016  1.1.1.1.8.1       tls   {
   10017  1.1.1.1.8.1       tls     /* VEX_W_0F44_P_0_LEN_0 */
   10018  1.1.1.1.8.1       tls     { "knotw",		{ MaskG, MaskR } },
   10019  1.1.1.1.8.1       tls   },
   10020  1.1.1.1.8.1       tls   {
   10021  1.1.1.1.8.1       tls     /* VEX_W_0F45_P_0_LEN_1 */
   10022  1.1.1.1.8.1       tls     { "korw",           { MaskG, MaskVex, MaskR } },
   10023  1.1.1.1.8.1       tls   },
   10024  1.1.1.1.8.1       tls   {
   10025  1.1.1.1.8.1       tls     /* VEX_W_0F46_P_0_LEN_1 */
   10026  1.1.1.1.8.1       tls     { "kxnorw",         { MaskG, MaskVex, MaskR } },
   10027  1.1.1.1.8.1       tls   },
   10028  1.1.1.1.8.1       tls   {
   10029  1.1.1.1.8.1       tls     /* VEX_W_0F47_P_0_LEN_1 */
   10030  1.1.1.1.8.1       tls     { "kxorw",          { MaskG, MaskVex, MaskR } },
   10031  1.1.1.1.8.1       tls   },
   10032  1.1.1.1.8.1       tls   {
   10033  1.1.1.1.8.1       tls     /* VEX_W_0F4B_P_2_LEN_1 */
   10034  1.1.1.1.8.1       tls     { "kunpckbw",	{ MaskG, MaskVex, MaskR } },
   10035  1.1.1.1.8.1       tls   },
   10036  1.1.1.1.8.1       tls   {
   10037          1.1  christos     /* VEX_W_0F50_M_0 */
   10038          1.1  christos     { "vmovmskpX",	{ Gdq, XS } },
   10039          1.1  christos   },
   10040          1.1  christos   {
   10041          1.1  christos     /* VEX_W_0F51_P_0 */
   10042          1.1  christos     { "vsqrtps",	{ XM, EXx } },
   10043          1.1  christos   },
   10044          1.1  christos   {
   10045          1.1  christos     /* VEX_W_0F51_P_1 */
   10046          1.1  christos     { "vsqrtss",	{ XMScalar, VexScalar, EXdScalar } },
   10047          1.1  christos   },
   10048          1.1  christos   {
   10049          1.1  christos     /* VEX_W_0F51_P_2  */
   10050          1.1  christos     { "vsqrtpd",	{ XM, EXx } },
   10051          1.1  christos   },
   10052          1.1  christos   {
   10053          1.1  christos     /* VEX_W_0F51_P_3 */
   10054          1.1  christos     { "vsqrtsd",	{ XMScalar, VexScalar, EXqScalar } },
   10055          1.1  christos   },
   10056          1.1  christos   {
   10057          1.1  christos     /* VEX_W_0F52_P_0 */
   10058          1.1  christos     { "vrsqrtps",	{ XM, EXx } },
   10059          1.1  christos   },
   10060          1.1  christos   {
   10061          1.1  christos     /* VEX_W_0F52_P_1 */
   10062          1.1  christos     { "vrsqrtss",	{ XMScalar, VexScalar, EXdScalar } },
   10063          1.1  christos   },
   10064          1.1  christos   {
   10065          1.1  christos     /* VEX_W_0F53_P_0  */
   10066          1.1  christos     { "vrcpps",		{ XM, EXx } },
   10067          1.1  christos   },
   10068          1.1  christos   {
   10069          1.1  christos     /* VEX_W_0F53_P_1  */
   10070          1.1  christos     { "vrcpss",		{ XMScalar, VexScalar, EXdScalar } },
   10071          1.1  christos   },
   10072          1.1  christos   {
   10073          1.1  christos     /* VEX_W_0F58_P_0  */
   10074          1.1  christos     { "vaddps",		{ XM, Vex, EXx } },
   10075          1.1  christos   },
   10076          1.1  christos   {
   10077          1.1  christos     /* VEX_W_0F58_P_1  */
   10078          1.1  christos     { "vaddss",		{ XMScalar, VexScalar, EXdScalar } },
   10079          1.1  christos   },
   10080          1.1  christos   {
   10081          1.1  christos     /* VEX_W_0F58_P_2  */
   10082          1.1  christos     { "vaddpd",		{ XM, Vex, EXx } },
   10083          1.1  christos   },
   10084          1.1  christos   {
   10085          1.1  christos     /* VEX_W_0F58_P_3  */
   10086          1.1  christos     { "vaddsd",		{ XMScalar, VexScalar, EXqScalar } },
   10087          1.1  christos   },
   10088          1.1  christos   {
   10089          1.1  christos     /* VEX_W_0F59_P_0  */
   10090          1.1  christos     { "vmulps",		{ XM, Vex, EXx } },
   10091          1.1  christos   },
   10092          1.1  christos   {
   10093          1.1  christos     /* VEX_W_0F59_P_1  */
   10094          1.1  christos     { "vmulss",		{ XMScalar, VexScalar, EXdScalar } },
   10095          1.1  christos   },
   10096          1.1  christos   {
   10097          1.1  christos     /* VEX_W_0F59_P_2  */
   10098          1.1  christos     { "vmulpd",		{ XM, Vex, EXx } },
   10099          1.1  christos   },
   10100          1.1  christos   {
   10101          1.1  christos     /* VEX_W_0F59_P_3  */
   10102          1.1  christos     { "vmulsd",		{ XMScalar, VexScalar, EXqScalar } },
   10103          1.1  christos   },
   10104          1.1  christos   {
   10105          1.1  christos     /* VEX_W_0F5A_P_0  */
   10106          1.1  christos     { "vcvtps2pd",	{ XM, EXxmmq } },
   10107          1.1  christos   },
   10108          1.1  christos   {
   10109          1.1  christos     /* VEX_W_0F5A_P_1  */
   10110          1.1  christos     { "vcvtss2sd",	{ XMScalar, VexScalar, EXdScalar } },
   10111          1.1  christos   },
   10112          1.1  christos   {
   10113          1.1  christos     /* VEX_W_0F5A_P_3  */
   10114          1.1  christos     { "vcvtsd2ss",	{ XMScalar, VexScalar, EXqScalar } },
   10115          1.1  christos   },
   10116          1.1  christos   {
   10117          1.1  christos     /* VEX_W_0F5B_P_0  */
   10118          1.1  christos     { "vcvtdq2ps",	{ XM, EXx } },
   10119          1.1  christos   },
   10120          1.1  christos   {
   10121          1.1  christos     /* VEX_W_0F5B_P_1  */
   10122          1.1  christos     { "vcvttps2dq",	{ XM, EXx } },
   10123          1.1  christos   },
   10124          1.1  christos   {
   10125          1.1  christos     /* VEX_W_0F5B_P_2  */
   10126          1.1  christos     { "vcvtps2dq",	{ XM, EXx } },
   10127          1.1  christos   },
   10128          1.1  christos   {
   10129          1.1  christos     /* VEX_W_0F5C_P_0  */
   10130          1.1  christos     { "vsubps",		{ XM, Vex, EXx } },
   10131          1.1  christos   },
   10132          1.1  christos   {
   10133          1.1  christos     /* VEX_W_0F5C_P_1  */
   10134          1.1  christos     { "vsubss",		{ XMScalar, VexScalar, EXdScalar } },
   10135          1.1  christos   },
   10136          1.1  christos   {
   10137          1.1  christos     /* VEX_W_0F5C_P_2  */
   10138          1.1  christos     { "vsubpd",		{ XM, Vex, EXx } },
   10139          1.1  christos   },
   10140          1.1  christos   {
   10141          1.1  christos     /* VEX_W_0F5C_P_3  */
   10142          1.1  christos     { "vsubsd",		{ XMScalar, VexScalar, EXqScalar } },
   10143          1.1  christos   },
   10144          1.1  christos   {
   10145          1.1  christos     /* VEX_W_0F5D_P_0  */
   10146          1.1  christos     { "vminps",		{ XM, Vex, EXx } },
   10147          1.1  christos   },
   10148          1.1  christos   {
   10149          1.1  christos     /* VEX_W_0F5D_P_1  */
   10150          1.1  christos     { "vminss",		{ XMScalar, VexScalar, EXdScalar } },
   10151          1.1  christos   },
   10152          1.1  christos   {
   10153          1.1  christos     /* VEX_W_0F5D_P_2  */
   10154          1.1  christos     { "vminpd",		{ XM, Vex, EXx } },
   10155          1.1  christos   },
   10156          1.1  christos   {
   10157          1.1  christos     /* VEX_W_0F5D_P_3  */
   10158          1.1  christos     { "vminsd",		{ XMScalar, VexScalar, EXqScalar } },
   10159          1.1  christos   },
   10160          1.1  christos   {
   10161          1.1  christos     /* VEX_W_0F5E_P_0  */
   10162          1.1  christos     { "vdivps",		{ XM, Vex, EXx } },
   10163          1.1  christos   },
   10164          1.1  christos   {
   10165          1.1  christos     /* VEX_W_0F5E_P_1  */
   10166          1.1  christos     { "vdivss",		{ XMScalar, VexScalar, EXdScalar } },
   10167          1.1  christos   },
   10168          1.1  christos   {
   10169          1.1  christos     /* VEX_W_0F5E_P_2  */
   10170          1.1  christos     { "vdivpd",		{ XM, Vex, EXx } },
   10171          1.1  christos   },
   10172          1.1  christos   {
   10173          1.1  christos     /* VEX_W_0F5E_P_3  */
   10174          1.1  christos     { "vdivsd",		{ XMScalar, VexScalar, EXqScalar } },
   10175          1.1  christos   },
   10176          1.1  christos   {
   10177          1.1  christos     /* VEX_W_0F5F_P_0  */
   10178          1.1  christos     { "vmaxps",		{ XM, Vex, EXx } },
   10179          1.1  christos   },
   10180          1.1  christos   {
   10181          1.1  christos     /* VEX_W_0F5F_P_1  */
   10182          1.1  christos     { "vmaxss",		{ XMScalar, VexScalar, EXdScalar } },
   10183          1.1  christos   },
   10184          1.1  christos   {
   10185          1.1  christos     /* VEX_W_0F5F_P_2  */
   10186          1.1  christos     { "vmaxpd",		{ XM, Vex, EXx } },
   10187          1.1  christos   },
   10188          1.1  christos   {
   10189          1.1  christos     /* VEX_W_0F5F_P_3  */
   10190          1.1  christos     { "vmaxsd",		{ XMScalar, VexScalar, EXqScalar } },
   10191          1.1  christos   },
   10192          1.1  christos   {
   10193          1.1  christos     /* VEX_W_0F60_P_2  */
   10194  1.1.1.1.8.1       tls     { "vpunpcklbw",	{ XM, Vex, EXx } },
   10195          1.1  christos   },
   10196          1.1  christos   {
   10197          1.1  christos     /* VEX_W_0F61_P_2  */
   10198  1.1.1.1.8.1       tls     { "vpunpcklwd",	{ XM, Vex, EXx } },
   10199          1.1  christos   },
   10200          1.1  christos   {
   10201          1.1  christos     /* VEX_W_0F62_P_2  */
   10202  1.1.1.1.8.1       tls     { "vpunpckldq",	{ XM, Vex, EXx } },
   10203          1.1  christos   },
   10204          1.1  christos   {
   10205          1.1  christos     /* VEX_W_0F63_P_2  */
   10206  1.1.1.1.8.1       tls     { "vpacksswb",	{ XM, Vex, EXx } },
   10207          1.1  christos   },
   10208          1.1  christos   {
   10209          1.1  christos     /* VEX_W_0F64_P_2  */
   10210  1.1.1.1.8.1       tls     { "vpcmpgtb",	{ XM, Vex, EXx } },
   10211          1.1  christos   },
   10212          1.1  christos   {
   10213          1.1  christos     /* VEX_W_0F65_P_2  */
   10214  1.1.1.1.8.1       tls     { "vpcmpgtw",	{ XM, Vex, EXx } },
   10215          1.1  christos   },
   10216          1.1  christos   {
   10217          1.1  christos     /* VEX_W_0F66_P_2  */
   10218  1.1.1.1.8.1       tls     { "vpcmpgtd",	{ XM, Vex, EXx } },
   10219          1.1  christos   },
   10220          1.1  christos   {
   10221          1.1  christos     /* VEX_W_0F67_P_2  */
   10222  1.1.1.1.8.1       tls     { "vpackuswb",	{ XM, Vex, EXx } },
   10223          1.1  christos   },
   10224          1.1  christos   {
   10225          1.1  christos     /* VEX_W_0F68_P_2  */
   10226  1.1.1.1.8.1       tls     { "vpunpckhbw",	{ XM, Vex, EXx } },
   10227          1.1  christos   },
   10228          1.1  christos   {
   10229          1.1  christos     /* VEX_W_0F69_P_2  */
   10230  1.1.1.1.8.1       tls     { "vpunpckhwd",	{ XM, Vex, EXx } },
   10231          1.1  christos   },
   10232          1.1  christos   {
   10233          1.1  christos     /* VEX_W_0F6A_P_2  */
   10234  1.1.1.1.8.1       tls     { "vpunpckhdq",	{ XM, Vex, EXx } },
   10235          1.1  christos   },
   10236          1.1  christos   {
   10237          1.1  christos     /* VEX_W_0F6B_P_2  */
   10238  1.1.1.1.8.1       tls     { "vpackssdw",	{ XM, Vex, EXx } },
   10239          1.1  christos   },
   10240          1.1  christos   {
   10241          1.1  christos     /* VEX_W_0F6C_P_2  */
   10242  1.1.1.1.8.1       tls     { "vpunpcklqdq",	{ XM, Vex, EXx } },
   10243          1.1  christos   },
   10244          1.1  christos   {
   10245          1.1  christos     /* VEX_W_0F6D_P_2  */
   10246  1.1.1.1.8.1       tls     { "vpunpckhqdq",	{ XM, Vex, EXx } },
   10247          1.1  christos   },
   10248          1.1  christos   {
   10249          1.1  christos     /* VEX_W_0F6F_P_1  */
   10250          1.1  christos     { "vmovdqu",	{ XM, EXx } },
   10251          1.1  christos   },
   10252          1.1  christos   {
   10253          1.1  christos     /* VEX_W_0F6F_P_2  */
   10254          1.1  christos     { "vmovdqa",	{ XM, EXx } },
   10255          1.1  christos   },
   10256          1.1  christos   {
   10257          1.1  christos     /* VEX_W_0F70_P_1 */
   10258          1.1  christos     { "vpshufhw",	{ XM, EXx, Ib } },
   10259          1.1  christos   },
   10260          1.1  christos   {
   10261          1.1  christos     /* VEX_W_0F70_P_2 */
   10262          1.1  christos     { "vpshufd",	{ XM, EXx, Ib } },
   10263          1.1  christos   },
   10264          1.1  christos   {
   10265          1.1  christos     /* VEX_W_0F70_P_3 */
   10266          1.1  christos     { "vpshuflw",	{ XM, EXx, Ib } },
   10267          1.1  christos   },
   10268          1.1  christos   {
   10269          1.1  christos     /* VEX_W_0F71_R_2_P_2  */
   10270  1.1.1.1.8.1       tls     { "vpsrlw",		{ Vex, XS, Ib } },
   10271          1.1  christos   },
   10272          1.1  christos   {
   10273          1.1  christos     /* VEX_W_0F71_R_4_P_2  */
   10274  1.1.1.1.8.1       tls     { "vpsraw",		{ Vex, XS, Ib } },
   10275          1.1  christos   },
   10276          1.1  christos   {
   10277          1.1  christos     /* VEX_W_0F71_R_6_P_2  */
   10278  1.1.1.1.8.1       tls     { "vpsllw",		{ Vex, XS, Ib } },
   10279          1.1  christos   },
   10280          1.1  christos   {
   10281          1.1  christos     /* VEX_W_0F72_R_2_P_2  */
   10282  1.1.1.1.8.1       tls     { "vpsrld",		{ Vex, XS, Ib } },
   10283          1.1  christos   },
   10284          1.1  christos   {
   10285          1.1  christos     /* VEX_W_0F72_R_4_P_2  */
   10286  1.1.1.1.8.1       tls     { "vpsrad",		{ Vex, XS, Ib } },
   10287          1.1  christos   },
   10288          1.1  christos   {
   10289          1.1  christos     /* VEX_W_0F72_R_6_P_2  */
   10290  1.1.1.1.8.1       tls     { "vpslld",		{ Vex, XS, Ib } },
   10291          1.1  christos   },
   10292          1.1  christos   {
   10293          1.1  christos     /* VEX_W_0F73_R_2_P_2  */
   10294  1.1.1.1.8.1       tls     { "vpsrlq",		{ Vex, XS, Ib } },
   10295          1.1  christos   },
   10296          1.1  christos   {
   10297          1.1  christos     /* VEX_W_0F73_R_3_P_2  */
   10298  1.1.1.1.8.1       tls     { "vpsrldq",	{ Vex, XS, Ib } },
   10299          1.1  christos   },
   10300          1.1  christos   {
   10301          1.1  christos     /* VEX_W_0F73_R_6_P_2  */
   10302  1.1.1.1.8.1       tls     { "vpsllq",		{ Vex, XS, Ib } },
   10303          1.1  christos   },
   10304          1.1  christos   {
   10305          1.1  christos     /* VEX_W_0F73_R_7_P_2  */
   10306  1.1.1.1.8.1       tls     { "vpslldq",	{ Vex, XS, Ib } },
   10307          1.1  christos   },
   10308          1.1  christos   {
   10309          1.1  christos     /* VEX_W_0F74_P_2 */
   10310  1.1.1.1.8.1       tls     { "vpcmpeqb",	{ XM, Vex, EXx } },
   10311          1.1  christos   },
   10312          1.1  christos   {
   10313          1.1  christos     /* VEX_W_0F75_P_2 */
   10314  1.1.1.1.8.1       tls     { "vpcmpeqw",	{ XM, Vex, EXx } },
   10315          1.1  christos   },
   10316          1.1  christos   {
   10317          1.1  christos     /* VEX_W_0F76_P_2 */
   10318  1.1.1.1.8.1       tls     { "vpcmpeqd",	{ XM, Vex, EXx } },
   10319          1.1  christos   },
   10320          1.1  christos   {
   10321          1.1  christos     /* VEX_W_0F77_P_0 */
   10322          1.1  christos     { "",		{ VZERO } },
   10323          1.1  christos   },
   10324          1.1  christos   {
   10325          1.1  christos     /* VEX_W_0F7C_P_2 */
   10326          1.1  christos     { "vhaddpd",	{ XM, Vex, EXx } },
   10327          1.1  christos   },
   10328          1.1  christos   {
   10329          1.1  christos     /* VEX_W_0F7C_P_3 */
   10330          1.1  christos     { "vhaddps",	{ XM, Vex, EXx } },
   10331          1.1  christos   },
   10332          1.1  christos   {
   10333          1.1  christos     /* VEX_W_0F7D_P_2 */
   10334          1.1  christos     { "vhsubpd",	{ XM, Vex, EXx } },
   10335          1.1  christos   },
   10336          1.1  christos   {
   10337          1.1  christos     /* VEX_W_0F7D_P_3 */
   10338          1.1  christos     { "vhsubps",	{ XM, Vex, EXx } },
   10339          1.1  christos   },
   10340          1.1  christos   {
   10341          1.1  christos     /* VEX_W_0F7E_P_1 */
   10342          1.1  christos     { "vmovq",		{ XMScalar, EXqScalar } },
   10343          1.1  christos   },
   10344          1.1  christos   {
   10345          1.1  christos     /* VEX_W_0F7F_P_1 */
   10346          1.1  christos     { "vmovdqu",	{ EXxS, XM } },
   10347          1.1  christos   },
   10348          1.1  christos   {
   10349          1.1  christos     /* VEX_W_0F7F_P_2 */
   10350          1.1  christos     { "vmovdqa",	{ EXxS, XM } },
   10351          1.1  christos   },
   10352          1.1  christos   {
   10353  1.1.1.1.8.1       tls     /* VEX_W_0F90_P_0_LEN_0 */
   10354  1.1.1.1.8.1       tls     { "kmovw",		{ MaskG, MaskE } },
   10355  1.1.1.1.8.1       tls   },
   10356  1.1.1.1.8.1       tls   {
   10357  1.1.1.1.8.1       tls     /* VEX_W_0F91_P_0_LEN_0 */
   10358  1.1.1.1.8.1       tls     { "kmovw",		{ Ew, MaskG } },
   10359  1.1.1.1.8.1       tls   },
   10360  1.1.1.1.8.1       tls   {
   10361  1.1.1.1.8.1       tls     /* VEX_W_0F92_P_0_LEN_0 */
   10362  1.1.1.1.8.1       tls     { "kmovw",		{ MaskG, Rdq } },
   10363  1.1.1.1.8.1       tls   },
   10364  1.1.1.1.8.1       tls   {
   10365  1.1.1.1.8.1       tls     /* VEX_W_0F93_P_0_LEN_0 */
   10366  1.1.1.1.8.1       tls     { "kmovw",		{ Gdq, MaskR } },
   10367  1.1.1.1.8.1       tls   },
   10368  1.1.1.1.8.1       tls   {
   10369  1.1.1.1.8.1       tls     /* VEX_W_0F98_P_0_LEN_0 */
   10370  1.1.1.1.8.1       tls     { "kortestw",	{ MaskG, MaskR } },
   10371  1.1.1.1.8.1       tls   },
   10372  1.1.1.1.8.1       tls   {
   10373          1.1  christos     /* VEX_W_0FAE_R_2_M_0 */
   10374          1.1  christos     { "vldmxcsr",	{ Md } },
   10375          1.1  christos   },
   10376          1.1  christos   {
   10377          1.1  christos     /* VEX_W_0FAE_R_3_M_0 */
   10378          1.1  christos     { "vstmxcsr",	{ Md } },
   10379          1.1  christos   },
   10380          1.1  christos   {
   10381          1.1  christos     /* VEX_W_0FC2_P_0 */
   10382          1.1  christos     { "vcmpps",		{ XM, Vex, EXx, VCMP } },
   10383          1.1  christos   },
   10384          1.1  christos   {
   10385          1.1  christos     /* VEX_W_0FC2_P_1 */
   10386          1.1  christos     { "vcmpss",		{ XMScalar, VexScalar, EXdScalar, VCMP } },
   10387          1.1  christos   },
   10388          1.1  christos   {
   10389          1.1  christos     /* VEX_W_0FC2_P_2 */
   10390          1.1  christos     { "vcmppd",		{ XM, Vex, EXx, VCMP } },
   10391          1.1  christos   },
   10392          1.1  christos   {
   10393          1.1  christos     /* VEX_W_0FC2_P_3 */
   10394          1.1  christos     { "vcmpsd",		{ XMScalar, VexScalar, EXqScalar, VCMP } },
   10395          1.1  christos   },
   10396          1.1  christos   {
   10397          1.1  christos     /* VEX_W_0FC4_P_2 */
   10398          1.1  christos     { "vpinsrw",	{ XM, Vex128, Edqw, Ib } },
   10399          1.1  christos   },
   10400          1.1  christos   {
   10401          1.1  christos     /* VEX_W_0FC5_P_2 */
   10402          1.1  christos     { "vpextrw",	{ Gdq, XS, Ib } },
   10403          1.1  christos   },
   10404          1.1  christos   {
   10405          1.1  christos     /* VEX_W_0FD0_P_2 */
   10406          1.1  christos     { "vaddsubpd",	{ XM, Vex, EXx } },
   10407          1.1  christos   },
   10408          1.1  christos   {
   10409          1.1  christos     /* VEX_W_0FD0_P_3 */
   10410          1.1  christos     { "vaddsubps",	{ XM, Vex, EXx } },
   10411          1.1  christos   },
   10412          1.1  christos   {
   10413          1.1  christos     /* VEX_W_0FD1_P_2 */
   10414  1.1.1.1.8.1       tls     { "vpsrlw",		{ XM, Vex, EXxmm } },
   10415          1.1  christos   },
   10416          1.1  christos   {
   10417          1.1  christos     /* VEX_W_0FD2_P_2 */
   10418  1.1.1.1.8.1       tls     { "vpsrld",		{ XM, Vex, EXxmm } },
   10419          1.1  christos   },
   10420          1.1  christos   {
   10421          1.1  christos     /* VEX_W_0FD3_P_2 */
   10422  1.1.1.1.8.1       tls     { "vpsrlq",		{ XM, Vex, EXxmm } },
   10423          1.1  christos   },
   10424          1.1  christos   {
   10425          1.1  christos     /* VEX_W_0FD4_P_2 */
   10426  1.1.1.1.8.1       tls     { "vpaddq",		{ XM, Vex, EXx } },
   10427          1.1  christos   },
   10428          1.1  christos   {
   10429          1.1  christos     /* VEX_W_0FD5_P_2 */
   10430  1.1.1.1.8.1       tls     { "vpmullw",	{ XM, Vex, EXx } },
   10431          1.1  christos   },
   10432          1.1  christos   {
   10433          1.1  christos     /* VEX_W_0FD6_P_2 */
   10434          1.1  christos     { "vmovq",		{ EXqScalarS, XMScalar } },
   10435          1.1  christos   },
   10436          1.1  christos   {
   10437          1.1  christos     /* VEX_W_0FD7_P_2_M_1 */
   10438          1.1  christos     { "vpmovmskb",	{ Gdq, XS } },
   10439          1.1  christos   },
   10440          1.1  christos   {
   10441          1.1  christos     /* VEX_W_0FD8_P_2 */
   10442  1.1.1.1.8.1       tls     { "vpsubusb",	{ XM, Vex, EXx } },
   10443          1.1  christos   },
   10444          1.1  christos   {
   10445          1.1  christos     /* VEX_W_0FD9_P_2 */
   10446  1.1.1.1.8.1       tls     { "vpsubusw",	{ XM, Vex, EXx } },
   10447          1.1  christos   },
   10448          1.1  christos   {
   10449          1.1  christos     /* VEX_W_0FDA_P_2 */
   10450  1.1.1.1.8.1       tls     { "vpminub",	{ XM, Vex, EXx } },
   10451          1.1  christos   },
   10452          1.1  christos   {
   10453          1.1  christos     /* VEX_W_0FDB_P_2 */
   10454  1.1.1.1.8.1       tls     { "vpand",		{ XM, Vex, EXx } },
   10455          1.1  christos   },
   10456          1.1  christos   {
   10457          1.1  christos     /* VEX_W_0FDC_P_2 */
   10458  1.1.1.1.8.1       tls     { "vpaddusb",	{ XM, Vex, EXx } },
   10459          1.1  christos   },
   10460          1.1  christos   {
   10461          1.1  christos     /* VEX_W_0FDD_P_2 */
   10462  1.1.1.1.8.1       tls     { "vpaddusw",	{ XM, Vex, EXx } },
   10463          1.1  christos   },
   10464          1.1  christos   {
   10465          1.1  christos     /* VEX_W_0FDE_P_2 */
   10466  1.1.1.1.8.1       tls     { "vpmaxub",	{ XM, Vex, EXx } },
   10467          1.1  christos   },
   10468          1.1  christos   {
   10469          1.1  christos     /* VEX_W_0FDF_P_2 */
   10470  1.1.1.1.8.1       tls     { "vpandn",		{ XM, Vex, EXx } },
   10471          1.1  christos   },
   10472          1.1  christos   {
   10473          1.1  christos     /* VEX_W_0FE0_P_2  */
   10474  1.1.1.1.8.1       tls     { "vpavgb",		{ XM, Vex, EXx } },
   10475          1.1  christos   },
   10476          1.1  christos   {
   10477          1.1  christos     /* VEX_W_0FE1_P_2  */
   10478  1.1.1.1.8.1       tls     { "vpsraw",		{ XM, Vex, EXxmm } },
   10479          1.1  christos   },
   10480          1.1  christos   {
   10481          1.1  christos     /* VEX_W_0FE2_P_2  */
   10482  1.1.1.1.8.1       tls     { "vpsrad",		{ XM, Vex, EXxmm } },
   10483          1.1  christos   },
   10484          1.1  christos   {
   10485          1.1  christos     /* VEX_W_0FE3_P_2  */
   10486  1.1.1.1.8.1       tls     { "vpavgw",		{ XM, Vex, EXx } },
   10487          1.1  christos   },
   10488          1.1  christos   {
   10489          1.1  christos     /* VEX_W_0FE4_P_2  */
   10490  1.1.1.1.8.1       tls     { "vpmulhuw",	{ XM, Vex, EXx } },
   10491          1.1  christos   },
   10492          1.1  christos   {
   10493          1.1  christos     /* VEX_W_0FE5_P_2  */
   10494  1.1.1.1.8.1       tls     { "vpmulhw",	{ XM, Vex, EXx } },
   10495          1.1  christos   },
   10496          1.1  christos   {
   10497          1.1  christos     /* VEX_W_0FE6_P_1  */
   10498          1.1  christos     { "vcvtdq2pd",	{ XM, EXxmmq } },
   10499          1.1  christos   },
   10500          1.1  christos   {
   10501          1.1  christos     /* VEX_W_0FE6_P_2  */
   10502          1.1  christos     { "vcvttpd2dq%XY",	{ XMM, EXx } },
   10503          1.1  christos   },
   10504          1.1  christos   {
   10505          1.1  christos     /* VEX_W_0FE6_P_3  */
   10506          1.1  christos     { "vcvtpd2dq%XY",	{ XMM, EXx } },
   10507          1.1  christos   },
   10508          1.1  christos   {
   10509          1.1  christos     /* VEX_W_0FE7_P_2_M_0 */
   10510          1.1  christos     { "vmovntdq",	{ Mx, XM } },
   10511          1.1  christos   },
   10512          1.1  christos   {
   10513          1.1  christos     /* VEX_W_0FE8_P_2  */
   10514  1.1.1.1.8.1       tls     { "vpsubsb",	{ XM, Vex, EXx } },
   10515          1.1  christos   },
   10516          1.1  christos   {
   10517          1.1  christos     /* VEX_W_0FE9_P_2  */
   10518  1.1.1.1.8.1       tls     { "vpsubsw",	{ XM, Vex, EXx } },
   10519          1.1  christos   },
   10520          1.1  christos   {
   10521          1.1  christos     /* VEX_W_0FEA_P_2  */
   10522  1.1.1.1.8.1       tls     { "vpminsw",	{ XM, Vex, EXx } },
   10523          1.1  christos   },
   10524          1.1  christos   {
   10525          1.1  christos     /* VEX_W_0FEB_P_2  */
   10526  1.1.1.1.8.1       tls     { "vpor",		{ XM, Vex, EXx } },
   10527          1.1  christos   },
   10528          1.1  christos   {
   10529          1.1  christos     /* VEX_W_0FEC_P_2  */
   10530  1.1.1.1.8.1       tls     { "vpaddsb",	{ XM, Vex, EXx } },
   10531          1.1  christos   },
   10532          1.1  christos   {
   10533          1.1  christos     /* VEX_W_0FED_P_2  */
   10534  1.1.1.1.8.1       tls     { "vpaddsw",	{ XM, Vex, EXx } },
   10535          1.1  christos   },
   10536          1.1  christos   {
   10537          1.1  christos     /* VEX_W_0FEE_P_2  */
   10538  1.1.1.1.8.1       tls     { "vpmaxsw",	{ XM, Vex, EXx } },
   10539          1.1  christos   },
   10540          1.1  christos   {
   10541          1.1  christos     /* VEX_W_0FEF_P_2  */
   10542  1.1.1.1.8.1       tls     { "vpxor",		{ XM, Vex, EXx } },
   10543          1.1  christos   },
   10544          1.1  christos   {
   10545          1.1  christos     /* VEX_W_0FF0_P_3_M_0 */
   10546          1.1  christos     { "vlddqu",		{ XM, M } },
   10547          1.1  christos   },
   10548          1.1  christos   {
   10549          1.1  christos     /* VEX_W_0FF1_P_2 */
   10550  1.1.1.1.8.1       tls     { "vpsllw",		{ XM, Vex, EXxmm } },
   10551          1.1  christos   },
   10552          1.1  christos   {
   10553          1.1  christos     /* VEX_W_0FF2_P_2 */
   10554  1.1.1.1.8.1       tls     { "vpslld",		{ XM, Vex, EXxmm } },
   10555          1.1  christos   },
   10556          1.1  christos   {
   10557          1.1  christos     /* VEX_W_0FF3_P_2 */
   10558  1.1.1.1.8.1       tls     { "vpsllq",		{ XM, Vex, EXxmm } },
   10559          1.1  christos   },
   10560          1.1  christos   {
   10561          1.1  christos     /* VEX_W_0FF4_P_2 */
   10562  1.1.1.1.8.1       tls     { "vpmuludq",	{ XM, Vex, EXx } },
   10563          1.1  christos   },
   10564          1.1  christos   {
   10565          1.1  christos     /* VEX_W_0FF5_P_2 */
   10566  1.1.1.1.8.1       tls     { "vpmaddwd",	{ XM, Vex, EXx } },
   10567          1.1  christos   },
   10568          1.1  christos   {
   10569          1.1  christos     /* VEX_W_0FF6_P_2 */
   10570  1.1.1.1.8.1       tls     { "vpsadbw",	{ XM, Vex, EXx } },
   10571          1.1  christos   },
   10572          1.1  christos   {
   10573          1.1  christos     /* VEX_W_0FF7_P_2 */
   10574          1.1  christos     { "vmaskmovdqu",	{ XM, XS } },
   10575          1.1  christos   },
   10576          1.1  christos   {
   10577          1.1  christos     /* VEX_W_0FF8_P_2 */
   10578  1.1.1.1.8.1       tls     { "vpsubb",		{ XM, Vex, EXx } },
   10579          1.1  christos   },
   10580          1.1  christos   {
   10581          1.1  christos     /* VEX_W_0FF9_P_2 */
   10582  1.1.1.1.8.1       tls     { "vpsubw",		{ XM, Vex, EXx } },
   10583          1.1  christos   },
   10584          1.1  christos   {
   10585          1.1  christos     /* VEX_W_0FFA_P_2 */
   10586  1.1.1.1.8.1       tls     { "vpsubd",		{ XM, Vex, EXx } },
   10587          1.1  christos   },
   10588          1.1  christos   {
   10589          1.1  christos     /* VEX_W_0FFB_P_2 */
   10590  1.1.1.1.8.1       tls     { "vpsubq",		{ XM, Vex, EXx } },
   10591          1.1  christos   },
   10592          1.1  christos   {
   10593          1.1  christos     /* VEX_W_0FFC_P_2 */
   10594  1.1.1.1.8.1       tls     { "vpaddb",		{ XM, Vex, EXx } },
   10595          1.1  christos   },
   10596          1.1  christos   {
   10597          1.1  christos     /* VEX_W_0FFD_P_2 */
   10598  1.1.1.1.8.1       tls     { "vpaddw",		{ XM, Vex, EXx } },
   10599          1.1  christos   },
   10600          1.1  christos   {
   10601          1.1  christos     /* VEX_W_0FFE_P_2 */
   10602  1.1.1.1.8.1       tls     { "vpaddd",		{ XM, Vex, EXx } },
   10603          1.1  christos   },
   10604          1.1  christos   {
   10605          1.1  christos     /* VEX_W_0F3800_P_2  */
   10606  1.1.1.1.8.1       tls     { "vpshufb",	{ XM, Vex, EXx } },
   10607          1.1  christos   },
   10608          1.1  christos   {
   10609          1.1  christos     /* VEX_W_0F3801_P_2  */
   10610  1.1.1.1.8.1       tls     { "vphaddw",	{ XM, Vex, EXx } },
   10611          1.1  christos   },
   10612          1.1  christos   {
   10613          1.1  christos     /* VEX_W_0F3802_P_2  */
   10614  1.1.1.1.8.1       tls     { "vphaddd",	{ XM, Vex, EXx } },
   10615          1.1  christos   },
   10616          1.1  christos   {
   10617          1.1  christos     /* VEX_W_0F3803_P_2  */
   10618  1.1.1.1.8.1       tls     { "vphaddsw",	{ XM, Vex, EXx } },
   10619          1.1  christos   },
   10620          1.1  christos   {
   10621          1.1  christos     /* VEX_W_0F3804_P_2  */
   10622  1.1.1.1.8.1       tls     { "vpmaddubsw",	{ XM, Vex, EXx } },
   10623          1.1  christos   },
   10624          1.1  christos   {
   10625          1.1  christos     /* VEX_W_0F3805_P_2  */
   10626  1.1.1.1.8.1       tls     { "vphsubw",	{ XM, Vex, EXx } },
   10627          1.1  christos   },
   10628          1.1  christos   {
   10629          1.1  christos     /* VEX_W_0F3806_P_2  */
   10630  1.1.1.1.8.1       tls     { "vphsubd",	{ XM, Vex, EXx } },
   10631          1.1  christos   },
   10632          1.1  christos   {
   10633          1.1  christos     /* VEX_W_0F3807_P_2  */
   10634  1.1.1.1.8.1       tls     { "vphsubsw",	{ XM, Vex, EXx } },
   10635          1.1  christos   },
   10636          1.1  christos   {
   10637          1.1  christos     /* VEX_W_0F3808_P_2  */
   10638  1.1.1.1.8.1       tls     { "vpsignb",	{ XM, Vex, EXx } },
   10639          1.1  christos   },
   10640          1.1  christos   {
   10641          1.1  christos     /* VEX_W_0F3809_P_2  */
   10642  1.1.1.1.8.1       tls     { "vpsignw",	{ XM, Vex, EXx } },
   10643          1.1  christos   },
   10644          1.1  christos   {
   10645          1.1  christos     /* VEX_W_0F380A_P_2  */
   10646  1.1.1.1.8.1       tls     { "vpsignd",	{ XM, Vex, EXx } },
   10647          1.1  christos   },
   10648          1.1  christos   {
   10649          1.1  christos     /* VEX_W_0F380B_P_2  */
   10650  1.1.1.1.8.1       tls     { "vpmulhrsw",	{ XM, Vex, EXx } },
   10651          1.1  christos   },
   10652          1.1  christos   {
   10653          1.1  christos     /* VEX_W_0F380C_P_2  */
   10654          1.1  christos     { "vpermilps",	{ XM, Vex, EXx } },
   10655          1.1  christos   },
   10656          1.1  christos   {
   10657          1.1  christos     /* VEX_W_0F380D_P_2  */
   10658          1.1  christos     { "vpermilpd",	{ XM, Vex, EXx } },
   10659          1.1  christos   },
   10660          1.1  christos   {
   10661          1.1  christos     /* VEX_W_0F380E_P_2  */
   10662          1.1  christos     { "vtestps",	{ XM, EXx } },
   10663          1.1  christos   },
   10664          1.1  christos   {
   10665          1.1  christos     /* VEX_W_0F380F_P_2  */
   10666          1.1  christos     { "vtestpd",	{ XM, EXx } },
   10667          1.1  christos   },
   10668          1.1  christos   {
   10669  1.1.1.1.8.1       tls     /* VEX_W_0F3816_P_2  */
   10670  1.1.1.1.8.1       tls     { "vpermps",	{ XM, Vex, EXx } },
   10671  1.1.1.1.8.1       tls   },
   10672  1.1.1.1.8.1       tls   {
   10673          1.1  christos     /* VEX_W_0F3817_P_2 */
   10674          1.1  christos     { "vptest",		{ XM, EXx } },
   10675          1.1  christos   },
   10676          1.1  christos   {
   10677  1.1.1.1.8.1       tls     /* VEX_W_0F3818_P_2 */
   10678  1.1.1.1.8.1       tls     { "vbroadcastss",	{ XM, EXxmm_md } },
   10679          1.1  christos   },
   10680          1.1  christos   {
   10681  1.1.1.1.8.1       tls     /* VEX_W_0F3819_P_2 */
   10682  1.1.1.1.8.1       tls     { "vbroadcastsd",	{ XM, EXxmm_mq } },
   10683          1.1  christos   },
   10684          1.1  christos   {
   10685          1.1  christos     /* VEX_W_0F381A_P_2_M_0 */
   10686          1.1  christos     { "vbroadcastf128",	{ XM, Mxmm } },
   10687          1.1  christos   },
   10688          1.1  christos   {
   10689          1.1  christos     /* VEX_W_0F381C_P_2 */
   10690          1.1  christos     { "vpabsb",		{ XM, EXx } },
   10691          1.1  christos   },
   10692          1.1  christos   {
   10693          1.1  christos     /* VEX_W_0F381D_P_2 */
   10694          1.1  christos     { "vpabsw",		{ XM, EXx } },
   10695          1.1  christos   },
   10696          1.1  christos   {
   10697          1.1  christos     /* VEX_W_0F381E_P_2 */
   10698          1.1  christos     { "vpabsd",		{ XM, EXx } },
   10699          1.1  christos   },
   10700          1.1  christos   {
   10701          1.1  christos     /* VEX_W_0F3820_P_2 */
   10702  1.1.1.1.8.1       tls     { "vpmovsxbw",	{ XM, EXxmmq } },
   10703          1.1  christos   },
   10704          1.1  christos   {
   10705          1.1  christos     /* VEX_W_0F3821_P_2 */
   10706  1.1.1.1.8.1       tls     { "vpmovsxbd",	{ XM, EXxmmqd } },
   10707          1.1  christos   },
   10708          1.1  christos   {
   10709          1.1  christos     /* VEX_W_0F3822_P_2 */
   10710  1.1.1.1.8.1       tls     { "vpmovsxbq",	{ XM, EXxmmdw } },
   10711          1.1  christos   },
   10712          1.1  christos   {
   10713          1.1  christos     /* VEX_W_0F3823_P_2 */
   10714  1.1.1.1.8.1       tls     { "vpmovsxwd",	{ XM, EXxmmq } },
   10715          1.1  christos   },
   10716          1.1  christos   {
   10717          1.1  christos     /* VEX_W_0F3824_P_2 */
   10718  1.1.1.1.8.1       tls     { "vpmovsxwq",	{ XM, EXxmmqd } },
   10719          1.1  christos   },
   10720          1.1  christos   {
   10721          1.1  christos     /* VEX_W_0F3825_P_2 */
   10722  1.1.1.1.8.1       tls     { "vpmovsxdq",	{ XM, EXxmmq } },
   10723          1.1  christos   },
   10724          1.1  christos   {
   10725          1.1  christos     /* VEX_W_0F3828_P_2 */
   10726  1.1.1.1.8.1       tls     { "vpmuldq",	{ XM, Vex, EXx } },
   10727          1.1  christos   },
   10728          1.1  christos   {
   10729          1.1  christos     /* VEX_W_0F3829_P_2 */
   10730  1.1.1.1.8.1       tls     { "vpcmpeqq",	{ XM, Vex, EXx } },
   10731          1.1  christos   },
   10732          1.1  christos   {
   10733          1.1  christos     /* VEX_W_0F382A_P_2_M_0 */
   10734          1.1  christos     { "vmovntdqa",	{ XM, Mx } },
   10735          1.1  christos   },
   10736          1.1  christos   {
   10737          1.1  christos     /* VEX_W_0F382B_P_2 */
   10738  1.1.1.1.8.1       tls     { "vpackusdw",	{ XM, Vex, EXx } },
   10739          1.1  christos   },
   10740          1.1  christos   {
   10741          1.1  christos     /* VEX_W_0F382C_P_2_M_0 */
   10742          1.1  christos     { "vmaskmovps",	{ XM, Vex, Mx } },
   10743          1.1  christos   },
   10744          1.1  christos   {
   10745          1.1  christos     /* VEX_W_0F382D_P_2_M_0 */
   10746          1.1  christos     { "vmaskmovpd",	{ XM, Vex, Mx } },
   10747          1.1  christos   },
   10748          1.1  christos   {
   10749          1.1  christos     /* VEX_W_0F382E_P_2_M_0 */
   10750          1.1  christos     { "vmaskmovps",	{ Mx, Vex, XM } },
   10751          1.1  christos   },
   10752          1.1  christos   {
   10753          1.1  christos     /* VEX_W_0F382F_P_2_M_0 */
   10754          1.1  christos     { "vmaskmovpd",	{ Mx, Vex, XM } },
   10755          1.1  christos   },
   10756          1.1  christos   {
   10757          1.1  christos     /* VEX_W_0F3830_P_2 */
   10758  1.1.1.1.8.1       tls     { "vpmovzxbw",	{ XM, EXxmmq } },
   10759          1.1  christos   },
   10760          1.1  christos   {
   10761          1.1  christos     /* VEX_W_0F3831_P_2 */
   10762  1.1.1.1.8.1       tls     { "vpmovzxbd",	{ XM, EXxmmqd } },
   10763          1.1  christos   },
   10764          1.1  christos   {
   10765          1.1  christos     /* VEX_W_0F3832_P_2 */
   10766  1.1.1.1.8.1       tls     { "vpmovzxbq",	{ XM, EXxmmdw } },
   10767          1.1  christos   },
   10768          1.1  christos   {
   10769          1.1  christos     /* VEX_W_0F3833_P_2 */
   10770  1.1.1.1.8.1       tls     { "vpmovzxwd",	{ XM, EXxmmq } },
   10771          1.1  christos   },
   10772          1.1  christos   {
   10773          1.1  christos     /* VEX_W_0F3834_P_2 */
   10774  1.1.1.1.8.1       tls     { "vpmovzxwq",	{ XM, EXxmmqd } },
   10775          1.1  christos   },
   10776          1.1  christos   {
   10777          1.1  christos     /* VEX_W_0F3835_P_2 */
   10778  1.1.1.1.8.1       tls     { "vpmovzxdq",	{ XM, EXxmmq } },
   10779  1.1.1.1.8.1       tls   },
   10780  1.1.1.1.8.1       tls   {
   10781  1.1.1.1.8.1       tls     /* VEX_W_0F3836_P_2  */
   10782  1.1.1.1.8.1       tls     { "vpermd",		{ XM, Vex, EXx } },
   10783          1.1  christos   },
   10784          1.1  christos   {
   10785          1.1  christos     /* VEX_W_0F3837_P_2 */
   10786  1.1.1.1.8.1       tls     { "vpcmpgtq",	{ XM, Vex, EXx } },
   10787          1.1  christos   },
   10788          1.1  christos   {
   10789          1.1  christos     /* VEX_W_0F3838_P_2 */
   10790  1.1.1.1.8.1       tls     { "vpminsb",	{ XM, Vex, EXx } },
   10791          1.1  christos   },
   10792          1.1  christos   {
   10793          1.1  christos     /* VEX_W_0F3839_P_2 */
   10794  1.1.1.1.8.1       tls     { "vpminsd",	{ XM, Vex, EXx } },
   10795          1.1  christos   },
   10796          1.1  christos   {
   10797          1.1  christos     /* VEX_W_0F383A_P_2 */
   10798  1.1.1.1.8.1       tls     { "vpminuw",	{ XM, Vex, EXx } },
   10799          1.1  christos   },
   10800          1.1  christos   {
   10801          1.1  christos     /* VEX_W_0F383B_P_2 */
   10802  1.1.1.1.8.1       tls     { "vpminud",	{ XM, Vex, EXx } },
   10803          1.1  christos   },
   10804          1.1  christos   {
   10805          1.1  christos     /* VEX_W_0F383C_P_2 */
   10806  1.1.1.1.8.1       tls     { "vpmaxsb",	{ XM, Vex, EXx } },
   10807          1.1  christos   },
   10808          1.1  christos   {
   10809          1.1  christos     /* VEX_W_0F383D_P_2 */
   10810  1.1.1.1.8.1       tls     { "vpmaxsd",	{ XM, Vex, EXx } },
   10811          1.1  christos   },
   10812          1.1  christos   {
   10813          1.1  christos     /* VEX_W_0F383E_P_2 */
   10814  1.1.1.1.8.1       tls     { "vpmaxuw",	{ XM, Vex, EXx } },
   10815          1.1  christos   },
   10816          1.1  christos   {
   10817          1.1  christos     /* VEX_W_0F383F_P_2 */
   10818  1.1.1.1.8.1       tls     { "vpmaxud",	{ XM, Vex, EXx } },
   10819          1.1  christos   },
   10820          1.1  christos   {
   10821          1.1  christos     /* VEX_W_0F3840_P_2 */
   10822  1.1.1.1.8.1       tls     { "vpmulld",	{ XM, Vex, EXx } },
   10823          1.1  christos   },
   10824          1.1  christos   {
   10825          1.1  christos     /* VEX_W_0F3841_P_2 */
   10826          1.1  christos     { "vphminposuw",	{ XM, EXx } },
   10827          1.1  christos   },
   10828          1.1  christos   {
   10829  1.1.1.1.8.1       tls     /* VEX_W_0F3846_P_2 */
   10830  1.1.1.1.8.1       tls     { "vpsravd",	{ XM, Vex, EXx } },
   10831  1.1.1.1.8.1       tls   },
   10832  1.1.1.1.8.1       tls   {
   10833  1.1.1.1.8.1       tls     /* VEX_W_0F3858_P_2 */
   10834  1.1.1.1.8.1       tls     { "vpbroadcastd", { XM, EXxmm_md } },
   10835  1.1.1.1.8.1       tls   },
   10836  1.1.1.1.8.1       tls   {
   10837  1.1.1.1.8.1       tls     /* VEX_W_0F3859_P_2 */
   10838  1.1.1.1.8.1       tls     { "vpbroadcastq",	{ XM, EXxmm_mq } },
   10839  1.1.1.1.8.1       tls   },
   10840  1.1.1.1.8.1       tls   {
   10841  1.1.1.1.8.1       tls     /* VEX_W_0F385A_P_2_M_0 */
   10842  1.1.1.1.8.1       tls     { "vbroadcasti128", { XM, Mxmm } },
   10843  1.1.1.1.8.1       tls   },
   10844  1.1.1.1.8.1       tls   {
   10845  1.1.1.1.8.1       tls     /* VEX_W_0F3878_P_2 */
   10846  1.1.1.1.8.1       tls     { "vpbroadcastb",	{ XM, EXxmm_mb } },
   10847  1.1.1.1.8.1       tls   },
   10848  1.1.1.1.8.1       tls   {
   10849  1.1.1.1.8.1       tls     /* VEX_W_0F3879_P_2 */
   10850  1.1.1.1.8.1       tls     { "vpbroadcastw",	{ XM, EXxmm_mw } },
   10851  1.1.1.1.8.1       tls   },
   10852  1.1.1.1.8.1       tls   {
   10853          1.1  christos     /* VEX_W_0F38DB_P_2 */
   10854          1.1  christos     { "vaesimc",	{ XM, EXx } },
   10855          1.1  christos   },
   10856          1.1  christos   {
   10857          1.1  christos     /* VEX_W_0F38DC_P_2 */
   10858          1.1  christos     { "vaesenc",	{ XM, Vex128, EXx } },
   10859          1.1  christos   },
   10860          1.1  christos   {
   10861          1.1  christos     /* VEX_W_0F38DD_P_2 */
   10862          1.1  christos     { "vaesenclast",	{ XM, Vex128, EXx } },
   10863          1.1  christos   },
   10864          1.1  christos   {
   10865          1.1  christos     /* VEX_W_0F38DE_P_2 */
   10866          1.1  christos     { "vaesdec",	{ XM, Vex128, EXx } },
   10867          1.1  christos   },
   10868          1.1  christos   {
   10869  1.1.1.1.8.1       tls     /* VEX_W_0F38DF_P_2 */
   10870  1.1.1.1.8.1       tls     { "vaesdeclast",	{ XM, Vex128, EXx } },
   10871  1.1.1.1.8.1       tls   },
   10872  1.1.1.1.8.1       tls   {
   10873  1.1.1.1.8.1       tls     /* VEX_W_0F3A00_P_2 */
   10874  1.1.1.1.8.1       tls     { Bad_Opcode },
   10875  1.1.1.1.8.1       tls     { "vpermq",		{ XM, EXx, Ib } },
   10876  1.1.1.1.8.1       tls   },
   10877  1.1.1.1.8.1       tls   {
   10878  1.1.1.1.8.1       tls     /* VEX_W_0F3A01_P_2 */
   10879  1.1.1.1.8.1       tls     { Bad_Opcode },
   10880  1.1.1.1.8.1       tls     { "vpermpd",	{ XM, EXx, Ib } },
   10881  1.1.1.1.8.1       tls   },
   10882  1.1.1.1.8.1       tls   {
   10883  1.1.1.1.8.1       tls     /* VEX_W_0F3A02_P_2 */
   10884  1.1.1.1.8.1       tls     { "vpblendd",	{ XM, Vex, EXx, Ib } },
   10885          1.1  christos   },
   10886          1.1  christos   {
   10887          1.1  christos     /* VEX_W_0F3A04_P_2 */
   10888          1.1  christos     { "vpermilps",	{ XM, EXx, Ib } },
   10889          1.1  christos   },
   10890          1.1  christos   {
   10891          1.1  christos     /* VEX_W_0F3A05_P_2 */
   10892          1.1  christos     { "vpermilpd",	{ XM, EXx, Ib } },
   10893          1.1  christos   },
   10894          1.1  christos   {
   10895          1.1  christos     /* VEX_W_0F3A06_P_2 */
   10896          1.1  christos     { "vperm2f128",	{ XM, Vex256, EXx, Ib } },
   10897          1.1  christos   },
   10898          1.1  christos   {
   10899          1.1  christos     /* VEX_W_0F3A08_P_2 */
   10900          1.1  christos     { "vroundps",	{ XM, EXx, Ib } },
   10901          1.1  christos   },
   10902          1.1  christos   {
   10903          1.1  christos     /* VEX_W_0F3A09_P_2 */
   10904          1.1  christos     { "vroundpd",	{ XM, EXx, Ib } },
   10905          1.1  christos   },
   10906          1.1  christos   {
   10907          1.1  christos     /* VEX_W_0F3A0A_P_2 */
   10908          1.1  christos     { "vroundss",	{ XMScalar, VexScalar, EXdScalar, Ib } },
   10909          1.1  christos   },
   10910          1.1  christos   {
   10911          1.1  christos     /* VEX_W_0F3A0B_P_2 */
   10912          1.1  christos     { "vroundsd",	{ XMScalar, VexScalar, EXqScalar, Ib } },
   10913          1.1  christos   },
   10914          1.1  christos   {
   10915          1.1  christos     /* VEX_W_0F3A0C_P_2 */
   10916          1.1  christos     { "vblendps",	{ XM, Vex, EXx, Ib } },
   10917          1.1  christos   },
   10918          1.1  christos   {
   10919          1.1  christos     /* VEX_W_0F3A0D_P_2 */
   10920          1.1  christos     { "vblendpd",	{ XM, Vex, EXx, Ib } },
   10921          1.1  christos   },
   10922          1.1  christos   {
   10923          1.1  christos     /* VEX_W_0F3A0E_P_2 */
   10924  1.1.1.1.8.1       tls     { "vpblendw",	{ XM, Vex, EXx, Ib } },
   10925          1.1  christos   },
   10926          1.1  christos   {
   10927          1.1  christos     /* VEX_W_0F3A0F_P_2 */
   10928  1.1.1.1.8.1       tls     { "vpalignr",	{ XM, Vex, EXx, Ib } },
   10929          1.1  christos   },
   10930          1.1  christos   {
   10931          1.1  christos     /* VEX_W_0F3A14_P_2 */
   10932          1.1  christos     { "vpextrb",	{ Edqb, XM, Ib } },
   10933          1.1  christos   },
   10934          1.1  christos   {
   10935          1.1  christos     /* VEX_W_0F3A15_P_2 */
   10936          1.1  christos     { "vpextrw",	{ Edqw, XM, Ib } },
   10937          1.1  christos   },
   10938          1.1  christos   {
   10939          1.1  christos     /* VEX_W_0F3A18_P_2 */
   10940          1.1  christos     { "vinsertf128",	{ XM, Vex256, EXxmm, Ib } },
   10941          1.1  christos   },
   10942          1.1  christos   {
   10943          1.1  christos     /* VEX_W_0F3A19_P_2 */
   10944          1.1  christos     { "vextractf128",	{ EXxmm, XM, Ib } },
   10945          1.1  christos   },
   10946          1.1  christos   {
   10947          1.1  christos     /* VEX_W_0F3A20_P_2 */
   10948          1.1  christos     { "vpinsrb",	{ XM, Vex128, Edqb, Ib } },
   10949          1.1  christos   },
   10950          1.1  christos   {
   10951          1.1  christos     /* VEX_W_0F3A21_P_2 */
   10952          1.1  christos     { "vinsertps",	{ XM, Vex128, EXd, Ib } },
   10953          1.1  christos   },
   10954          1.1  christos   {
   10955  1.1.1.1.8.1       tls     /* VEX_W_0F3A30_P_2 */
   10956  1.1.1.1.8.1       tls     { Bad_Opcode },
   10957  1.1.1.1.8.1       tls     { "kshiftrw",	{ MaskG, MaskR, Ib } },
   10958  1.1.1.1.8.1       tls   },
   10959  1.1.1.1.8.1       tls   {
   10960  1.1.1.1.8.1       tls     /* VEX_W_0F3A32_P_2 */
   10961  1.1.1.1.8.1       tls     { Bad_Opcode },
   10962  1.1.1.1.8.1       tls     { "kshiftlw",	{ MaskG, MaskR, Ib } },
   10963  1.1.1.1.8.1       tls   },
   10964  1.1.1.1.8.1       tls   {
   10965  1.1.1.1.8.1       tls     /* VEX_W_0F3A38_P_2 */
   10966  1.1.1.1.8.1       tls     { "vinserti128",	{ XM, Vex256, EXxmm, Ib } },
   10967  1.1.1.1.8.1       tls   },
   10968  1.1.1.1.8.1       tls   {
   10969  1.1.1.1.8.1       tls     /* VEX_W_0F3A39_P_2 */
   10970  1.1.1.1.8.1       tls     { "vextracti128",	{ EXxmm, XM, Ib } },
   10971  1.1.1.1.8.1       tls   },
   10972  1.1.1.1.8.1       tls   {
   10973          1.1  christos     /* VEX_W_0F3A40_P_2 */
   10974          1.1  christos     { "vdpps",		{ XM, Vex, EXx, Ib } },
   10975          1.1  christos   },
   10976          1.1  christos   {
   10977          1.1  christos     /* VEX_W_0F3A41_P_2 */
   10978          1.1  christos     { "vdppd",		{ XM, Vex128, EXx, Ib } },
   10979          1.1  christos   },
   10980          1.1  christos   {
   10981          1.1  christos     /* VEX_W_0F3A42_P_2 */
   10982  1.1.1.1.8.1       tls     { "vmpsadbw",	{ XM, Vex, EXx, Ib } },
   10983          1.1  christos   },
   10984          1.1  christos   {
   10985          1.1  christos     /* VEX_W_0F3A44_P_2 */
   10986          1.1  christos     { "vpclmulqdq",	{ XM, Vex128, EXx, PCLMUL } },
   10987          1.1  christos   },
   10988          1.1  christos   {
   10989  1.1.1.1.8.1       tls     /* VEX_W_0F3A46_P_2 */
   10990  1.1.1.1.8.1       tls     { "vperm2i128",	{ XM, Vex256, EXx, Ib } },
   10991  1.1.1.1.8.1       tls   },
   10992  1.1.1.1.8.1       tls   {
   10993          1.1  christos     /* VEX_W_0F3A48_P_2 */
   10994          1.1  christos     { "vpermil2ps",	{ XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
   10995          1.1  christos     { "vpermil2ps",	{ XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
   10996          1.1  christos   },
   10997          1.1  christos   {
   10998          1.1  christos     /* VEX_W_0F3A49_P_2 */
   10999          1.1  christos     { "vpermil2pd",	{ XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
   11000          1.1  christos     { "vpermil2pd",	{ XMVexW, Vex, EXVexImmW, EXVexImmW, EXVexImmW } },
   11001          1.1  christos   },
   11002          1.1  christos   {
   11003          1.1  christos     /* VEX_W_0F3A4A_P_2 */
   11004          1.1  christos     { "vblendvps",	{ XM, Vex, EXx, XMVexI4 } },
   11005          1.1  christos   },
   11006          1.1  christos   {
   11007          1.1  christos     /* VEX_W_0F3A4B_P_2 */
   11008          1.1  christos     { "vblendvpd",	{ XM, Vex, EXx, XMVexI4 } },
   11009          1.1  christos   },
   11010          1.1  christos   {
   11011          1.1  christos     /* VEX_W_0F3A4C_P_2 */
   11012  1.1.1.1.8.1       tls     { "vpblendvb",	{ XM, Vex, EXx, XMVexI4 } },
   11013          1.1  christos   },
   11014          1.1  christos   {
   11015          1.1  christos     /* VEX_W_0F3A60_P_2 */
   11016          1.1  christos     { "vpcmpestrm",	{ XM, EXx, Ib } },
   11017          1.1  christos   },
   11018          1.1  christos   {
   11019          1.1  christos     /* VEX_W_0F3A61_P_2 */
   11020          1.1  christos     { "vpcmpestri",	{ XM, EXx, Ib } },
   11021          1.1  christos   },
   11022          1.1  christos   {
   11023          1.1  christos     /* VEX_W_0F3A62_P_2 */
   11024          1.1  christos     { "vpcmpistrm",	{ XM, EXx, Ib } },
   11025          1.1  christos   },
   11026          1.1  christos   {
   11027          1.1  christos     /* VEX_W_0F3A63_P_2 */
   11028          1.1  christos     { "vpcmpistri",	{ XM, EXx, Ib } },
   11029          1.1  christos   },
   11030          1.1  christos   {
   11031          1.1  christos     /* VEX_W_0F3ADF_P_2 */
   11032          1.1  christos     { "vaeskeygenassist", { XM, EXx, Ib } },
   11033          1.1  christos   },
   11034  1.1.1.1.8.1       tls #define NEED_VEX_W_TABLE
   11035  1.1.1.1.8.1       tls #include "i386-dis-evex.h"
   11036  1.1.1.1.8.1       tls #undef NEED_VEX_W_TABLE
   11037          1.1  christos };
   11038          1.1  christos 
   11039          1.1  christos static const struct dis386 mod_table[][2] = {
   11040          1.1  christos   {
   11041          1.1  christos     /* MOD_8D */
   11042          1.1  christos     { "leaS",		{ Gv, M } },
   11043          1.1  christos   },
   11044          1.1  christos   {
   11045  1.1.1.1.8.1       tls     /* MOD_C6_REG_7 */
   11046  1.1.1.1.8.1       tls     { Bad_Opcode },
   11047  1.1.1.1.8.1       tls     { RM_TABLE (RM_C6_REG_7) },
   11048  1.1.1.1.8.1       tls   },
   11049  1.1.1.1.8.1       tls   {
   11050  1.1.1.1.8.1       tls     /* MOD_C7_REG_7 */
   11051  1.1.1.1.8.1       tls     { Bad_Opcode },
   11052  1.1.1.1.8.1       tls     { RM_TABLE (RM_C7_REG_7) },
   11053  1.1.1.1.8.1       tls   },
   11054  1.1.1.1.8.1       tls   {
   11055  1.1.1.1.8.1       tls     /* MOD_FF_REG_3 */
   11056  1.1.1.1.8.1       tls     { "Jcall{T|}", { indirEp } },
   11057  1.1.1.1.8.1       tls   },
   11058  1.1.1.1.8.1       tls   {
   11059  1.1.1.1.8.1       tls     /* MOD_FF_REG_5 */
   11060  1.1.1.1.8.1       tls     { "Jjmp{T|}", { indirEp } },
   11061  1.1.1.1.8.1       tls   },
   11062  1.1.1.1.8.1       tls   {
   11063          1.1  christos     /* MOD_0F01_REG_0 */
   11064          1.1  christos     { X86_64_TABLE (X86_64_0F01_REG_0) },
   11065          1.1  christos     { RM_TABLE (RM_0F01_REG_0) },
   11066          1.1  christos   },
   11067          1.1  christos   {
   11068          1.1  christos     /* MOD_0F01_REG_1 */
   11069          1.1  christos     { X86_64_TABLE (X86_64_0F01_REG_1) },
   11070          1.1  christos     { RM_TABLE (RM_0F01_REG_1) },
   11071          1.1  christos   },
   11072          1.1  christos   {
   11073          1.1  christos     /* MOD_0F01_REG_2 */
   11074          1.1  christos     { X86_64_TABLE (X86_64_0F01_REG_2) },
   11075          1.1  christos     { RM_TABLE (RM_0F01_REG_2) },
   11076          1.1  christos   },
   11077          1.1  christos   {
   11078          1.1  christos     /* MOD_0F01_REG_3 */
   11079          1.1  christos     { X86_64_TABLE (X86_64_0F01_REG_3) },
   11080          1.1  christos     { RM_TABLE (RM_0F01_REG_3) },
   11081          1.1  christos   },
   11082          1.1  christos   {
   11083          1.1  christos     /* MOD_0F01_REG_7 */
   11084          1.1  christos     { "invlpg",		{ Mb } },
   11085          1.1  christos     { RM_TABLE (RM_0F01_REG_7) },
   11086          1.1  christos   },
   11087          1.1  christos   {
   11088          1.1  christos     /* MOD_0F12_PREFIX_0 */
   11089          1.1  christos     { "movlps",		{ XM, EXq } },
   11090          1.1  christos     { "movhlps",	{ XM, EXq } },
   11091          1.1  christos   },
   11092          1.1  christos   {
   11093          1.1  christos     /* MOD_0F13 */
   11094          1.1  christos     { "movlpX",		{ EXq, XM } },
   11095          1.1  christos   },
   11096          1.1  christos   {
   11097          1.1  christos     /* MOD_0F16_PREFIX_0 */
   11098          1.1  christos     { "movhps",		{ XM, EXq } },
   11099          1.1  christos     { "movlhps",	{ XM, EXq } },
   11100          1.1  christos   },
   11101          1.1  christos   {
   11102          1.1  christos     /* MOD_0F17 */
   11103          1.1  christos     { "movhpX",		{ EXq, XM } },
   11104          1.1  christos   },
   11105          1.1  christos   {
   11106          1.1  christos     /* MOD_0F18_REG_0 */
   11107          1.1  christos     { "prefetchnta",	{ Mb } },
   11108          1.1  christos   },
   11109          1.1  christos   {
   11110          1.1  christos     /* MOD_0F18_REG_1 */
   11111          1.1  christos     { "prefetcht0",	{ Mb } },
   11112          1.1  christos   },
   11113          1.1  christos   {
   11114          1.1  christos     /* MOD_0F18_REG_2 */
   11115          1.1  christos     { "prefetcht1",	{ Mb } },
   11116          1.1  christos   },
   11117          1.1  christos   {
   11118          1.1  christos     /* MOD_0F18_REG_3 */
   11119          1.1  christos     { "prefetcht2",	{ Mb } },
   11120          1.1  christos   },
   11121          1.1  christos   {
   11122  1.1.1.1.8.1       tls     /* MOD_0F18_REG_4 */
   11123  1.1.1.1.8.1       tls     { "nop/reserved",	{ Mb } },
   11124  1.1.1.1.8.1       tls   },
   11125  1.1.1.1.8.1       tls   {
   11126  1.1.1.1.8.1       tls     /* MOD_0F18_REG_5 */
   11127  1.1.1.1.8.1       tls     { "nop/reserved",	{ Mb } },
   11128  1.1.1.1.8.1       tls   },
   11129  1.1.1.1.8.1       tls   {
   11130  1.1.1.1.8.1       tls     /* MOD_0F18_REG_6 */
   11131  1.1.1.1.8.1       tls     { "nop/reserved",	{ Mb } },
   11132  1.1.1.1.8.1       tls   },
   11133  1.1.1.1.8.1       tls   {
   11134  1.1.1.1.8.1       tls     /* MOD_0F18_REG_7 */
   11135  1.1.1.1.8.1       tls     { "nop/reserved",	{ Mb } },
   11136  1.1.1.1.8.1       tls   },
   11137  1.1.1.1.8.1       tls   {
   11138  1.1.1.1.8.1       tls     /* MOD_0F1A_PREFIX_0 */
   11139  1.1.1.1.8.1       tls     { "bndldx",		{ Gbnd, Ev_bnd } },
   11140  1.1.1.1.8.1       tls     { "nopQ",		{ Ev } },
   11141  1.1.1.1.8.1       tls   },
   11142  1.1.1.1.8.1       tls   {
   11143  1.1.1.1.8.1       tls     /* MOD_0F1B_PREFIX_0 */
   11144  1.1.1.1.8.1       tls     { "bndstx",		{ Ev_bnd, Gbnd } },
   11145  1.1.1.1.8.1       tls     { "nopQ",		{ Ev } },
   11146  1.1.1.1.8.1       tls   },
   11147  1.1.1.1.8.1       tls   {
   11148  1.1.1.1.8.1       tls     /* MOD_0F1B_PREFIX_1 */
   11149  1.1.1.1.8.1       tls     { "bndmk",		{ Gbnd, Ev_bnd } },
   11150  1.1.1.1.8.1       tls     { "nopQ",		{ Ev } },
   11151  1.1.1.1.8.1       tls   },
   11152  1.1.1.1.8.1       tls   {
   11153          1.1  christos     /* MOD_0F20 */
   11154          1.1  christos     { Bad_Opcode },
   11155          1.1  christos     { "movZ",		{ Rm, Cm } },
   11156          1.1  christos   },
   11157          1.1  christos   {
   11158          1.1  christos     /* MOD_0F21 */
   11159          1.1  christos     { Bad_Opcode },
   11160          1.1  christos     { "movZ",		{ Rm, Dm } },
   11161          1.1  christos   },
   11162          1.1  christos   {
   11163          1.1  christos     /* MOD_0F22 */
   11164          1.1  christos     { Bad_Opcode },
   11165          1.1  christos     { "movZ",		{ Cm, Rm } },
   11166          1.1  christos   },
   11167          1.1  christos   {
   11168          1.1  christos     /* MOD_0F23 */
   11169          1.1  christos     { Bad_Opcode },
   11170          1.1  christos     { "movZ",		{ Dm, Rm } },
   11171          1.1  christos   },
   11172          1.1  christos   {
   11173          1.1  christos     /* MOD_0F24 */
   11174  1.1.1.1.8.1       tls     { Bad_Opcode },
   11175          1.1  christos     { "movL",		{ Rd, Td } },
   11176          1.1  christos   },
   11177          1.1  christos   {
   11178          1.1  christos     /* MOD_0F26 */
   11179          1.1  christos     { Bad_Opcode },
   11180          1.1  christos     { "movL",		{ Td, Rd } },
   11181          1.1  christos   },
   11182          1.1  christos   {
   11183          1.1  christos     /* MOD_0F2B_PREFIX_0 */
   11184          1.1  christos     {"movntps",		{ Mx, XM } },
   11185          1.1  christos   },
   11186          1.1  christos   {
   11187          1.1  christos     /* MOD_0F2B_PREFIX_1 */
   11188          1.1  christos     {"movntss",		{ Md, XM } },
   11189          1.1  christos   },
   11190          1.1  christos   {
   11191          1.1  christos     /* MOD_0F2B_PREFIX_2 */
   11192          1.1  christos     {"movntpd",		{ Mx, XM } },
   11193          1.1  christos   },
   11194          1.1  christos   {
   11195          1.1  christos     /* MOD_0F2B_PREFIX_3 */
   11196          1.1  christos     {"movntsd",		{ Mq, XM } },
   11197          1.1  christos   },
   11198          1.1  christos   {
   11199          1.1  christos     /* MOD_0F51 */
   11200          1.1  christos     { Bad_Opcode },
   11201          1.1  christos     { "movmskpX",	{ Gdq, XS } },
   11202          1.1  christos   },
   11203          1.1  christos   {
   11204          1.1  christos     /* MOD_0F71_REG_2 */
   11205          1.1  christos     { Bad_Opcode },
   11206          1.1  christos     { "psrlw",		{ MS, Ib } },
   11207          1.1  christos   },
   11208          1.1  christos   {
   11209          1.1  christos     /* MOD_0F71_REG_4 */
   11210          1.1  christos     { Bad_Opcode },
   11211          1.1  christos     { "psraw",		{ MS, Ib } },
   11212          1.1  christos   },
   11213          1.1  christos   {
   11214          1.1  christos     /* MOD_0F71_REG_6 */
   11215          1.1  christos     { Bad_Opcode },
   11216          1.1  christos     { "psllw",		{ MS, Ib } },
   11217          1.1  christos   },
   11218          1.1  christos   {
   11219          1.1  christos     /* MOD_0F72_REG_2 */
   11220          1.1  christos     { Bad_Opcode },
   11221          1.1  christos     { "psrld",		{ MS, Ib } },
   11222          1.1  christos   },
   11223          1.1  christos   {
   11224          1.1  christos     /* MOD_0F72_REG_4 */
   11225          1.1  christos     { Bad_Opcode },
   11226          1.1  christos     { "psrad",		{ MS, Ib } },
   11227          1.1  christos   },
   11228          1.1  christos   {
   11229          1.1  christos     /* MOD_0F72_REG_6 */
   11230          1.1  christos     { Bad_Opcode },
   11231          1.1  christos     { "pslld",		{ MS, Ib } },
   11232          1.1  christos   },
   11233          1.1  christos   {
   11234          1.1  christos     /* MOD_0F73_REG_2 */
   11235          1.1  christos     { Bad_Opcode },
   11236          1.1  christos     { "psrlq",		{ MS, Ib } },
   11237          1.1  christos   },
   11238          1.1  christos   {
   11239          1.1  christos     /* MOD_0F73_REG_3 */
   11240          1.1  christos     { Bad_Opcode },
   11241          1.1  christos     { PREFIX_TABLE (PREFIX_0F73_REG_3) },
   11242          1.1  christos   },
   11243          1.1  christos   {
   11244          1.1  christos     /* MOD_0F73_REG_6 */
   11245          1.1  christos     { Bad_Opcode },
   11246          1.1  christos     { "psllq",		{ MS, Ib } },
   11247          1.1  christos   },
   11248          1.1  christos   {
   11249          1.1  christos     /* MOD_0F73_REG_7 */
   11250          1.1  christos     { Bad_Opcode },
   11251          1.1  christos     { PREFIX_TABLE (PREFIX_0F73_REG_7) },
   11252          1.1  christos   },
   11253          1.1  christos   {
   11254          1.1  christos     /* MOD_0FAE_REG_0 */
   11255          1.1  christos     { "fxsave",		{ FXSAVE } },
   11256          1.1  christos     { PREFIX_TABLE (PREFIX_0FAE_REG_0) },
   11257          1.1  christos   },
   11258          1.1  christos   {
   11259          1.1  christos     /* MOD_0FAE_REG_1 */
   11260          1.1  christos     { "fxrstor",	{ FXSAVE } },
   11261          1.1  christos     { PREFIX_TABLE (PREFIX_0FAE_REG_1) },
   11262          1.1  christos   },
   11263          1.1  christos   {
   11264          1.1  christos     /* MOD_0FAE_REG_2 */
   11265          1.1  christos     { "ldmxcsr",	{ Md } },
   11266          1.1  christos     { PREFIX_TABLE (PREFIX_0FAE_REG_2) },
   11267          1.1  christos   },
   11268          1.1  christos   {
   11269          1.1  christos     /* MOD_0FAE_REG_3 */
   11270          1.1  christos     { "stmxcsr",	{ Md } },
   11271          1.1  christos     { PREFIX_TABLE (PREFIX_0FAE_REG_3) },
   11272          1.1  christos   },
   11273          1.1  christos   {
   11274          1.1  christos     /* MOD_0FAE_REG_4 */
   11275          1.1  christos     { "xsave",		{ FXSAVE } },
   11276          1.1  christos   },
   11277          1.1  christos   {
   11278          1.1  christos     /* MOD_0FAE_REG_5 */
   11279          1.1  christos     { "xrstor",		{ FXSAVE } },
   11280          1.1  christos     { RM_TABLE (RM_0FAE_REG_5) },
   11281          1.1  christos   },
   11282          1.1  christos   {
   11283          1.1  christos     /* MOD_0FAE_REG_6 */
   11284          1.1  christos     { "xsaveopt",	{ FXSAVE } },
   11285          1.1  christos     { RM_TABLE (RM_0FAE_REG_6) },
   11286          1.1  christos   },
   11287          1.1  christos   {
   11288          1.1  christos     /* MOD_0FAE_REG_7 */
   11289          1.1  christos     { "clflush",	{ Mb } },
   11290          1.1  christos     { RM_TABLE (RM_0FAE_REG_7) },
   11291          1.1  christos   },
   11292          1.1  christos   {
   11293          1.1  christos     /* MOD_0FB2 */
   11294          1.1  christos     { "lssS",		{ Gv, Mp } },
   11295          1.1  christos   },
   11296          1.1  christos   {
   11297          1.1  christos     /* MOD_0FB4 */
   11298          1.1  christos     { "lfsS",		{ Gv, Mp } },
   11299          1.1  christos   },
   11300          1.1  christos   {
   11301          1.1  christos     /* MOD_0FB5 */
   11302          1.1  christos     { "lgsS",		{ Gv, Mp } },
   11303          1.1  christos   },
   11304          1.1  christos   {
   11305          1.1  christos     /* MOD_0FC7_REG_6 */
   11306          1.1  christos     { PREFIX_TABLE (PREFIX_0FC7_REG_6) },
   11307          1.1  christos     { "rdrand",		{ Ev } },
   11308          1.1  christos   },
   11309          1.1  christos   {
   11310          1.1  christos     /* MOD_0FC7_REG_7 */
   11311          1.1  christos     { "vmptrst",	{ Mq } },
   11312  1.1.1.1.8.1       tls     { "rdseed",		{ Ev } },
   11313          1.1  christos   },
   11314          1.1  christos   {
   11315          1.1  christos     /* MOD_0FD7 */
   11316          1.1  christos     { Bad_Opcode },
   11317          1.1  christos     { "pmovmskb",	{ Gdq, MS } },
   11318          1.1  christos   },
   11319          1.1  christos   {
   11320          1.1  christos     /* MOD_0FE7_PREFIX_2 */
   11321          1.1  christos     { "movntdq",	{ Mx, XM } },
   11322          1.1  christos   },
   11323          1.1  christos   {
   11324          1.1  christos     /* MOD_0FF0_PREFIX_3 */
   11325          1.1  christos     { "lddqu",		{ XM, M } },
   11326          1.1  christos   },
   11327          1.1  christos   {
   11328          1.1  christos     /* MOD_0F382A_PREFIX_2 */
   11329          1.1  christos     { "movntdqa",	{ XM, Mx } },
   11330          1.1  christos   },
   11331          1.1  christos   {
   11332          1.1  christos     /* MOD_62_32BIT */
   11333          1.1  christos     { "bound{S|}",	{ Gv, Ma } },
   11334  1.1.1.1.8.1       tls     { EVEX_TABLE (EVEX_0F) },
   11335          1.1  christos   },
   11336          1.1  christos   {
   11337          1.1  christos     /* MOD_C4_32BIT */
   11338          1.1  christos     { "lesS",		{ Gv, Mp } },
   11339          1.1  christos     { VEX_C4_TABLE (VEX_0F) },
   11340          1.1  christos   },
   11341          1.1  christos   {
   11342          1.1  christos     /* MOD_C5_32BIT */
   11343          1.1  christos     { "ldsS",		{ Gv, Mp } },
   11344          1.1  christos     { VEX_C5_TABLE (VEX_0F) },
   11345          1.1  christos   },
   11346          1.1  christos   {
   11347          1.1  christos     /* MOD_VEX_0F12_PREFIX_0 */
   11348          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F12_P_0_M_0) },
   11349          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F12_P_0_M_1) },
   11350          1.1  christos   },
   11351          1.1  christos   {
   11352          1.1  christos     /* MOD_VEX_0F13 */
   11353          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F13_M_0) },
   11354          1.1  christos   },
   11355          1.1  christos   {
   11356          1.1  christos     /* MOD_VEX_0F16_PREFIX_0 */
   11357          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F16_P_0_M_0) },
   11358          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F16_P_0_M_1) },
   11359          1.1  christos   },
   11360          1.1  christos   {
   11361          1.1  christos     /* MOD_VEX_0F17 */
   11362          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F17_M_0) },
   11363          1.1  christos   },
   11364          1.1  christos   {
   11365          1.1  christos     /* MOD_VEX_0F2B */
   11366          1.1  christos     { VEX_W_TABLE (VEX_W_0F2B_M_0) },
   11367          1.1  christos   },
   11368          1.1  christos   {
   11369          1.1  christos     /* MOD_VEX_0F50 */
   11370          1.1  christos     { Bad_Opcode },
   11371          1.1  christos     { VEX_W_TABLE (VEX_W_0F50_M_0) },
   11372          1.1  christos   },
   11373          1.1  christos   {
   11374          1.1  christos     /* MOD_VEX_0F71_REG_2 */
   11375          1.1  christos     { Bad_Opcode },
   11376          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F71_REG_2) },
   11377          1.1  christos   },
   11378          1.1  christos   {
   11379          1.1  christos     /* MOD_VEX_0F71_REG_4 */
   11380          1.1  christos     { Bad_Opcode },
   11381          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F71_REG_4) },
   11382          1.1  christos   },
   11383          1.1  christos   {
   11384          1.1  christos     /* MOD_VEX_0F71_REG_6 */
   11385          1.1  christos     { Bad_Opcode },
   11386          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F71_REG_6) },
   11387          1.1  christos   },
   11388          1.1  christos   {
   11389          1.1  christos     /* MOD_VEX_0F72_REG_2 */
   11390          1.1  christos     { Bad_Opcode },
   11391          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F72_REG_2) },
   11392          1.1  christos   },
   11393          1.1  christos   {
   11394          1.1  christos     /* MOD_VEX_0F72_REG_4 */
   11395          1.1  christos     { Bad_Opcode },
   11396          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F72_REG_4) },
   11397          1.1  christos   },
   11398          1.1  christos   {
   11399          1.1  christos     /* MOD_VEX_0F72_REG_6 */
   11400          1.1  christos     { Bad_Opcode },
   11401          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F72_REG_6) },
   11402          1.1  christos   },
   11403          1.1  christos   {
   11404          1.1  christos     /* MOD_VEX_0F73_REG_2 */
   11405          1.1  christos     { Bad_Opcode },
   11406          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F73_REG_2) },
   11407          1.1  christos   },
   11408          1.1  christos   {
   11409          1.1  christos     /* MOD_VEX_0F73_REG_3 */
   11410          1.1  christos     { Bad_Opcode },
   11411          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F73_REG_3) },
   11412          1.1  christos   },
   11413          1.1  christos   {
   11414          1.1  christos     /* MOD_VEX_0F73_REG_6 */
   11415          1.1  christos     { Bad_Opcode },
   11416          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F73_REG_6) },
   11417          1.1  christos   },
   11418          1.1  christos   {
   11419          1.1  christos     /* MOD_VEX_0F73_REG_7 */
   11420          1.1  christos     { Bad_Opcode },
   11421          1.1  christos     { PREFIX_TABLE (PREFIX_VEX_0F73_REG_7) },
   11422          1.1  christos   },
   11423          1.1  christos   {
   11424          1.1  christos     /* MOD_VEX_0FAE_REG_2 */
   11425          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FAE_R_2_M_0) },
   11426          1.1  christos   },
   11427          1.1  christos   {
   11428          1.1  christos     /* MOD_VEX_0FAE_REG_3 */
   11429          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0FAE_R_3_M_0) },
   11430          1.1  christos   },
   11431          1.1  christos   {
   11432          1.1  christos     /* MOD_VEX_0FD7_PREFIX_2 */
   11433          1.1  christos     { Bad_Opcode },
   11434  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0FD7_P_2_M_1) },
   11435          1.1  christos   },
   11436          1.1  christos   {
   11437          1.1  christos     /* MOD_VEX_0FE7_PREFIX_2 */
   11438          1.1  christos     { VEX_W_TABLE (VEX_W_0FE7_P_2_M_0) },
   11439          1.1  christos   },
   11440          1.1  christos   {
   11441          1.1  christos     /* MOD_VEX_0FF0_PREFIX_3 */
   11442          1.1  christos     { VEX_W_TABLE (VEX_W_0FF0_P_3_M_0) },
   11443          1.1  christos   },
   11444          1.1  christos   {
   11445          1.1  christos     /* MOD_VEX_0F381A_PREFIX_2 */
   11446          1.1  christos     { VEX_LEN_TABLE (VEX_LEN_0F381A_P_2_M_0) },
   11447          1.1  christos   },
   11448          1.1  christos   {
   11449          1.1  christos     /* MOD_VEX_0F382A_PREFIX_2 */
   11450  1.1.1.1.8.1       tls     { VEX_W_TABLE (VEX_W_0F382A_P_2_M_0) },
   11451          1.1  christos   },
   11452          1.1  christos   {
   11453          1.1  christos     /* MOD_VEX_0F382C_PREFIX_2 */
   11454          1.1  christos     { VEX_W_TABLE (VEX_W_0F382C_P_2_M_0) },
   11455          1.1  christos   },
   11456          1.1  christos   {
   11457          1.1  christos     /* MOD_VEX_0F382D_PREFIX_2 */
   11458          1.1  christos     { VEX_W_TABLE (VEX_W_0F382D_P_2_M_0) },
   11459          1.1  christos   },
   11460          1.1  christos   {
   11461          1.1  christos     /* MOD_VEX_0F382E_PREFIX_2 */
   11462          1.1  christos     { VEX_W_TABLE (VEX_W_0F382E_P_2_M_0) },
   11463          1.1  christos   },
   11464          1.1  christos   {
   11465          1.1  christos     /* MOD_VEX_0F382F_PREFIX_2 */
   11466          1.1  christos     { VEX_W_TABLE (VEX_W_0F382F_P_2_M_0) },
   11467          1.1  christos   },
   11468  1.1.1.1.8.1       tls   {
   11469  1.1.1.1.8.1       tls     /* MOD_VEX_0F385A_PREFIX_2 */
   11470  1.1.1.1.8.1       tls     { VEX_LEN_TABLE (VEX_LEN_0F385A_P_2_M_0) },
   11471  1.1.1.1.8.1       tls   },
   11472  1.1.1.1.8.1       tls   {
   11473  1.1.1.1.8.1       tls     /* MOD_VEX_0F388C_PREFIX_2 */
   11474  1.1.1.1.8.1       tls     { "vpmaskmov%LW",	{ XM, Vex, Mx } },
   11475  1.1.1.1.8.1       tls   },
   11476  1.1.1.1.8.1       tls   {
   11477  1.1.1.1.8.1       tls     /* MOD_VEX_0F388E_PREFIX_2 */
   11478  1.1.1.1.8.1       tls     { "vpmaskmov%LW",	{ Mx, Vex, XM } },
   11479  1.1.1.1.8.1       tls   },
   11480  1.1.1.1.8.1       tls #define NEED_MOD_TABLE
   11481  1.1.1.1.8.1       tls #include "i386-dis-evex.h"
   11482  1.1.1.1.8.1       tls #undef NEED_MOD_TABLE
   11483          1.1  christos };
   11484          1.1  christos 
   11485          1.1  christos static const struct dis386 rm_table[][8] = {
   11486          1.1  christos   {
   11487  1.1.1.1.8.1       tls     /* RM_C6_REG_7 */
   11488  1.1.1.1.8.1       tls     { "xabort",		{ Skip_MODRM, Ib } },
   11489  1.1.1.1.8.1       tls   },
   11490  1.1.1.1.8.1       tls   {
   11491  1.1.1.1.8.1       tls     /* RM_C7_REG_7 */
   11492  1.1.1.1.8.1       tls     { "xbeginT",	{ Skip_MODRM, Jv } },
   11493  1.1.1.1.8.1       tls   },
   11494  1.1.1.1.8.1       tls   {
   11495          1.1  christos     /* RM_0F01_REG_0 */
   11496          1.1  christos     { Bad_Opcode },
   11497          1.1  christos     { "vmcall",		{ Skip_MODRM } },
   11498          1.1  christos     { "vmlaunch",	{ Skip_MODRM } },
   11499          1.1  christos     { "vmresume",	{ Skip_MODRM } },
   11500          1.1  christos     { "vmxoff",		{ Skip_MODRM } },
   11501          1.1  christos   },
   11502          1.1  christos   {
   11503          1.1  christos     /* RM_0F01_REG_1 */
   11504          1.1  christos     { "monitor",	{ { OP_Monitor, 0 } } },
   11505          1.1  christos     { "mwait",		{ { OP_Mwait, 0 } } },
   11506  1.1.1.1.8.1       tls     { "clac",		{ Skip_MODRM } },
   11507  1.1.1.1.8.1       tls     { "stac",		{ Skip_MODRM } },
   11508          1.1  christos   },
   11509          1.1  christos   {
   11510          1.1  christos     /* RM_0F01_REG_2 */
   11511          1.1  christos     { "xgetbv",		{ Skip_MODRM } },
   11512          1.1  christos     { "xsetbv",		{ Skip_MODRM } },
   11513  1.1.1.1.8.1       tls     { Bad_Opcode },
   11514  1.1.1.1.8.1       tls     { Bad_Opcode },
   11515  1.1.1.1.8.1       tls     { "vmfunc",		{ Skip_MODRM } },
   11516  1.1.1.1.8.1       tls     { "xend",		{ Skip_MODRM } },
   11517  1.1.1.1.8.1       tls     { "xtest",		{ Skip_MODRM } },
   11518  1.1.1.1.8.1       tls     { Bad_Opcode },
   11519          1.1  christos   },
   11520          1.1  christos   {
   11521          1.1  christos     /* RM_0F01_REG_3 */
   11522          1.1  christos     { "vmrun",		{ Skip_MODRM } },
   11523          1.1  christos     { "vmmcall",	{ Skip_MODRM } },
   11524          1.1  christos     { "vmload",		{ Skip_MODRM } },
   11525          1.1  christos     { "vmsave",		{ Skip_MODRM } },
   11526          1.1  christos     { "stgi",		{ Skip_MODRM } },
   11527          1.1  christos     { "clgi",		{ Skip_MODRM } },
   11528          1.1  christos     { "skinit",		{ Skip_MODRM } },
   11529          1.1  christos     { "invlpga",	{ Skip_MODRM } },
   11530          1.1  christos   },
   11531          1.1  christos   {
   11532          1.1  christos     /* RM_0F01_REG_7 */
   11533          1.1  christos     { "swapgs",		{ Skip_MODRM } },
   11534          1.1  christos     { "rdtscp",		{ Skip_MODRM } },
   11535          1.1  christos   },
   11536          1.1  christos   {
   11537          1.1  christos     /* RM_0FAE_REG_5 */
   11538          1.1  christos     { "lfence",		{ Skip_MODRM } },
   11539          1.1  christos   },
   11540          1.1  christos   {
   11541          1.1  christos     /* RM_0FAE_REG_6 */
   11542          1.1  christos     { "mfence",		{ Skip_MODRM } },
   11543          1.1  christos   },
   11544          1.1  christos   {
   11545          1.1  christos     /* RM_0FAE_REG_7 */
   11546          1.1  christos     { "sfence",		{ Skip_MODRM } },
   11547          1.1  christos   },
   11548          1.1  christos };
   11549          1.1  christos 
   11550          1.1  christos #define INTERNAL_DISASSEMBLER_ERROR _("<internal disassembler error>")
   11551          1.1  christos 
   11552          1.1  christos /* We use the high bit to indicate different name for the same
   11553          1.1  christos    prefix.  */
   11554          1.1  christos #define ADDR16_PREFIX	(0x67 | 0x100)
   11555          1.1  christos #define ADDR32_PREFIX	(0x67 | 0x200)
   11556          1.1  christos #define DATA16_PREFIX	(0x66 | 0x100)
   11557          1.1  christos #define DATA32_PREFIX	(0x66 | 0x200)
   11558          1.1  christos #define REP_PREFIX	(0xf3 | 0x100)
   11559  1.1.1.1.8.1       tls #define XACQUIRE_PREFIX	(0xf2 | 0x200)
   11560  1.1.1.1.8.1       tls #define XRELEASE_PREFIX	(0xf3 | 0x400)
   11561  1.1.1.1.8.1       tls #define BND_PREFIX	(0xf2 | 0x400)
   11562          1.1  christos 
   11563          1.1  christos static int
   11564          1.1  christos ckprefix (void)
   11565          1.1  christos {
   11566          1.1  christos   int newrex, i, length;
   11567          1.1  christos   rex = 0;
   11568          1.1  christos   rex_ignored = 0;
   11569          1.1  christos   prefixes = 0;
   11570          1.1  christos   used_prefixes = 0;
   11571          1.1  christos   rex_used = 0;
   11572          1.1  christos   last_lock_prefix = -1;
   11573          1.1  christos   last_repz_prefix = -1;
   11574          1.1  christos   last_repnz_prefix = -1;
   11575          1.1  christos   last_data_prefix = -1;
   11576          1.1  christos   last_addr_prefix = -1;
   11577          1.1  christos   last_rex_prefix = -1;
   11578          1.1  christos   last_seg_prefix = -1;
   11579          1.1  christos   for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++)
   11580          1.1  christos     all_prefixes[i] = 0;
   11581          1.1  christos   i = 0;
   11582          1.1  christos   length = 0;
   11583          1.1  christos   /* The maximum instruction length is 15bytes.  */
   11584          1.1  christos   while (length < MAX_CODE_LENGTH - 1)
   11585          1.1  christos     {
   11586          1.1  christos       FETCH_DATA (the_info, codep + 1);
   11587          1.1  christos       newrex = 0;
   11588          1.1  christos       switch (*codep)
   11589          1.1  christos 	{
   11590          1.1  christos 	/* REX prefixes family.  */
   11591          1.1  christos 	case 0x40:
   11592          1.1  christos 	case 0x41:
   11593          1.1  christos 	case 0x42:
   11594          1.1  christos 	case 0x43:
   11595          1.1  christos 	case 0x44:
   11596          1.1  christos 	case 0x45:
   11597          1.1  christos 	case 0x46:
   11598          1.1  christos 	case 0x47:
   11599          1.1  christos 	case 0x48:
   11600          1.1  christos 	case 0x49:
   11601          1.1  christos 	case 0x4a:
   11602          1.1  christos 	case 0x4b:
   11603          1.1  christos 	case 0x4c:
   11604          1.1  christos 	case 0x4d:
   11605          1.1  christos 	case 0x4e:
   11606          1.1  christos 	case 0x4f:
   11607          1.1  christos 	  if (address_mode == mode_64bit)
   11608          1.1  christos 	    newrex = *codep;
   11609          1.1  christos 	  else
   11610          1.1  christos 	    return 1;
   11611          1.1  christos 	  last_rex_prefix = i;
   11612          1.1  christos 	  break;
   11613          1.1  christos 	case 0xf3:
   11614          1.1  christos 	  prefixes |= PREFIX_REPZ;
   11615          1.1  christos 	  last_repz_prefix = i;
   11616          1.1  christos 	  break;
   11617          1.1  christos 	case 0xf2:
   11618          1.1  christos 	  prefixes |= PREFIX_REPNZ;
   11619          1.1  christos 	  last_repnz_prefix = i;
   11620          1.1  christos 	  break;
   11621          1.1  christos 	case 0xf0:
   11622          1.1  christos 	  prefixes |= PREFIX_LOCK;
   11623          1.1  christos 	  last_lock_prefix = i;
   11624          1.1  christos 	  break;
   11625          1.1  christos 	case 0x2e:
   11626          1.1  christos 	  prefixes |= PREFIX_CS;
   11627          1.1  christos 	  last_seg_prefix = i;
   11628          1.1  christos 	  break;
   11629          1.1  christos 	case 0x36:
   11630          1.1  christos 	  prefixes |= PREFIX_SS;
   11631          1.1  christos 	  last_seg_prefix = i;
   11632          1.1  christos 	  break;
   11633          1.1  christos 	case 0x3e:
   11634          1.1  christos 	  prefixes |= PREFIX_DS;
   11635          1.1  christos 	  last_seg_prefix = i;
   11636          1.1  christos 	  break;
   11637          1.1  christos 	case 0x26:
   11638          1.1  christos 	  prefixes |= PREFIX_ES;
   11639          1.1  christos 	  last_seg_prefix = i;
   11640          1.1  christos 	  break;
   11641          1.1  christos 	case 0x64:
   11642          1.1  christos 	  prefixes |= PREFIX_FS;
   11643          1.1  christos 	  last_seg_prefix = i;
   11644          1.1  christos 	  break;
   11645          1.1  christos 	case 0x65:
   11646          1.1  christos 	  prefixes |= PREFIX_GS;
   11647          1.1  christos 	  last_seg_prefix = i;
   11648          1.1  christos 	  break;
   11649          1.1  christos 	case 0x66:
   11650          1.1  christos 	  prefixes |= PREFIX_DATA;
   11651          1.1  christos 	  last_data_prefix = i;
   11652          1.1  christos 	  break;
   11653          1.1  christos 	case 0x67:
   11654          1.1  christos 	  prefixes |= PREFIX_ADDR;
   11655          1.1  christos 	  last_addr_prefix = i;
   11656          1.1  christos 	  break;
   11657          1.1  christos 	case FWAIT_OPCODE:
   11658          1.1  christos 	  /* fwait is really an instruction.  If there are prefixes
   11659          1.1  christos 	     before the fwait, they belong to the fwait, *not* to the
   11660          1.1  christos 	     following instruction.  */
   11661          1.1  christos 	  if (prefixes || rex)
   11662          1.1  christos 	    {
   11663          1.1  christos 	      prefixes |= PREFIX_FWAIT;
   11664          1.1  christos 	      codep++;
   11665  1.1.1.1.8.1       tls 	      /* This ensures that the previous REX prefixes are noticed
   11666  1.1.1.1.8.1       tls 		 as unused prefixes, as in the return case below.  */
   11667  1.1.1.1.8.1       tls 	      rex_used = rex;
   11668          1.1  christos 	      return 1;
   11669          1.1  christos 	    }
   11670          1.1  christos 	  prefixes = PREFIX_FWAIT;
   11671          1.1  christos 	  break;
   11672          1.1  christos 	default:
   11673          1.1  christos 	  return 1;
   11674          1.1  christos 	}
   11675          1.1  christos       /* Rex is ignored when followed by another prefix.  */
   11676          1.1  christos       if (rex)
   11677          1.1  christos 	{
   11678          1.1  christos 	  rex_used = rex;
   11679          1.1  christos 	  return 1;
   11680          1.1  christos 	}
   11681          1.1  christos       if (*codep != FWAIT_OPCODE)
   11682          1.1  christos 	all_prefixes[i++] = *codep;
   11683          1.1  christos       rex = newrex;
   11684          1.1  christos       codep++;
   11685          1.1  christos       length++;
   11686          1.1  christos     }
   11687          1.1  christos   return 0;
   11688          1.1  christos }
   11689          1.1  christos 
   11690          1.1  christos static int
   11691          1.1  christos seg_prefix (int pref)
   11692          1.1  christos {
   11693          1.1  christos   switch (pref)
   11694          1.1  christos     {
   11695          1.1  christos     case 0x2e:
   11696          1.1  christos       return PREFIX_CS;
   11697          1.1  christos     case 0x36:
   11698          1.1  christos       return PREFIX_SS;
   11699          1.1  christos     case 0x3e:
   11700          1.1  christos       return PREFIX_DS;
   11701          1.1  christos     case 0x26:
   11702          1.1  christos       return PREFIX_ES;
   11703          1.1  christos     case 0x64:
   11704          1.1  christos       return PREFIX_FS;
   11705          1.1  christos     case 0x65:
   11706          1.1  christos       return PREFIX_GS;
   11707          1.1  christos     default:
   11708          1.1  christos       return 0;
   11709          1.1  christos     }
   11710          1.1  christos }
   11711          1.1  christos 
   11712          1.1  christos /* Return the name of the prefix byte PREF, or NULL if PREF is not a
   11713          1.1  christos    prefix byte.  */
   11714          1.1  christos 
   11715          1.1  christos static const char *
   11716          1.1  christos prefix_name (int pref, int sizeflag)
   11717          1.1  christos {
   11718          1.1  christos   static const char *rexes [16] =
   11719          1.1  christos     {
   11720          1.1  christos       "rex",		/* 0x40 */
   11721          1.1  christos       "rex.B",		/* 0x41 */
   11722          1.1  christos       "rex.X",		/* 0x42 */
   11723          1.1  christos       "rex.XB",		/* 0x43 */
   11724          1.1  christos       "rex.R",		/* 0x44 */
   11725          1.1  christos       "rex.RB",		/* 0x45 */
   11726          1.1  christos       "rex.RX",		/* 0x46 */
   11727          1.1  christos       "rex.RXB",	/* 0x47 */
   11728          1.1  christos       "rex.W",		/* 0x48 */
   11729          1.1  christos       "rex.WB",		/* 0x49 */
   11730          1.1  christos       "rex.WX",		/* 0x4a */
   11731          1.1  christos       "rex.WXB",	/* 0x4b */
   11732          1.1  christos       "rex.WR",		/* 0x4c */
   11733          1.1  christos       "rex.WRB",	/* 0x4d */
   11734          1.1  christos       "rex.WRX",	/* 0x4e */
   11735          1.1  christos       "rex.WRXB",	/* 0x4f */
   11736          1.1  christos     };
   11737          1.1  christos 
   11738          1.1  christos   switch (pref)
   11739          1.1  christos     {
   11740          1.1  christos     /* REX prefixes family.  */
   11741          1.1  christos     case 0x40:
   11742          1.1  christos     case 0x41:
   11743          1.1  christos     case 0x42:
   11744          1.1  christos     case 0x43:
   11745          1.1  christos     case 0x44:
   11746          1.1  christos     case 0x45:
   11747          1.1  christos     case 0x46:
   11748          1.1  christos     case 0x47:
   11749          1.1  christos     case 0x48:
   11750          1.1  christos     case 0x49:
   11751          1.1  christos     case 0x4a:
   11752          1.1  christos     case 0x4b:
   11753          1.1  christos     case 0x4c:
   11754          1.1  christos     case 0x4d:
   11755          1.1  christos     case 0x4e:
   11756          1.1  christos     case 0x4f:
   11757          1.1  christos       return rexes [pref - 0x40];
   11758          1.1  christos     case 0xf3:
   11759          1.1  christos       return "repz";
   11760          1.1  christos     case 0xf2:
   11761          1.1  christos       return "repnz";
   11762          1.1  christos     case 0xf0:
   11763          1.1  christos       return "lock";
   11764          1.1  christos     case 0x2e:
   11765          1.1  christos       return "cs";
   11766          1.1  christos     case 0x36:
   11767          1.1  christos       return "ss";
   11768          1.1  christos     case 0x3e:
   11769          1.1  christos       return "ds";
   11770          1.1  christos     case 0x26:
   11771          1.1  christos       return "es";
   11772          1.1  christos     case 0x64:
   11773          1.1  christos       return "fs";
   11774          1.1  christos     case 0x65:
   11775          1.1  christos       return "gs";
   11776          1.1  christos     case 0x66:
   11777          1.1  christos       return (sizeflag & DFLAG) ? "data16" : "data32";
   11778          1.1  christos     case 0x67:
   11779          1.1  christos       if (address_mode == mode_64bit)
   11780          1.1  christos 	return (sizeflag & AFLAG) ? "addr32" : "addr64";
   11781          1.1  christos       else
   11782          1.1  christos 	return (sizeflag & AFLAG) ? "addr16" : "addr32";
   11783          1.1  christos     case FWAIT_OPCODE:
   11784          1.1  christos       return "fwait";
   11785          1.1  christos     case ADDR16_PREFIX:
   11786          1.1  christos       return "addr16";
   11787          1.1  christos     case ADDR32_PREFIX:
   11788          1.1  christos       return "addr32";
   11789          1.1  christos     case DATA16_PREFIX:
   11790          1.1  christos       return "data16";
   11791          1.1  christos     case DATA32_PREFIX:
   11792          1.1  christos       return "data32";
   11793          1.1  christos     case REP_PREFIX:
   11794          1.1  christos       return "rep";
   11795  1.1.1.1.8.1       tls     case XACQUIRE_PREFIX:
   11796  1.1.1.1.8.1       tls       return "xacquire";
   11797  1.1.1.1.8.1       tls     case XRELEASE_PREFIX:
   11798  1.1.1.1.8.1       tls       return "xrelease";
   11799  1.1.1.1.8.1       tls     case BND_PREFIX:
   11800  1.1.1.1.8.1       tls       return "bnd";
   11801          1.1  christos     default:
   11802          1.1  christos       return NULL;
   11803          1.1  christos     }
   11804          1.1  christos }
   11805          1.1  christos 
   11806          1.1  christos static char op_out[MAX_OPERANDS][100];
   11807          1.1  christos static int op_ad, op_index[MAX_OPERANDS];
   11808          1.1  christos static int two_source_ops;
   11809          1.1  christos static bfd_vma op_address[MAX_OPERANDS];
   11810          1.1  christos static bfd_vma op_riprel[MAX_OPERANDS];
   11811          1.1  christos static bfd_vma start_pc;
   11812          1.1  christos 
   11813          1.1  christos /*
   11814          1.1  christos  *   On the 386's of 1988, the maximum length of an instruction is 15 bytes.
   11815          1.1  christos  *   (see topic "Redundant prefixes" in the "Differences from 8086"
   11816          1.1  christos  *   section of the "Virtual 8086 Mode" chapter.)
   11817          1.1  christos  * 'pc' should be the address of this instruction, it will
   11818          1.1  christos  *   be used to print the target address if this is a relative jump or call
   11819          1.1  christos  * The function returns the length of this instruction in bytes.
   11820          1.1  christos  */
   11821          1.1  christos 
   11822          1.1  christos static char intel_syntax;
   11823          1.1  christos static char intel_mnemonic = !SYSV386_COMPAT;
   11824          1.1  christos static char open_char;
   11825          1.1  christos static char close_char;
   11826          1.1  christos static char separator_char;
   11827          1.1  christos static char scale_char;
   11828          1.1  christos 
   11829          1.1  christos /* Here for backwards compatibility.  When gdb stops using
   11830          1.1  christos    print_insn_i386_att and print_insn_i386_intel these functions can
   11831          1.1  christos    disappear, and print_insn_i386 be merged into print_insn.  */
   11832          1.1  christos int
   11833          1.1  christos print_insn_i386_att (bfd_vma pc, disassemble_info *info)
   11834          1.1  christos {
   11835          1.1  christos   intel_syntax = 0;
   11836          1.1  christos 
   11837          1.1  christos   return print_insn (pc, info);
   11838          1.1  christos }
   11839          1.1  christos 
   11840          1.1  christos int
   11841          1.1  christos print_insn_i386_intel (bfd_vma pc, disassemble_info *info)
   11842          1.1  christos {
   11843          1.1  christos   intel_syntax = 1;
   11844          1.1  christos 
   11845          1.1  christos   return print_insn (pc, info);
   11846          1.1  christos }
   11847          1.1  christos 
   11848          1.1  christos int
   11849          1.1  christos print_insn_i386 (bfd_vma pc, disassemble_info *info)
   11850          1.1  christos {
   11851          1.1  christos   intel_syntax = -1;
   11852          1.1  christos 
   11853          1.1  christos   return print_insn (pc, info);
   11854          1.1  christos }
   11855          1.1  christos 
   11856          1.1  christos void
   11857          1.1  christos print_i386_disassembler_options (FILE *stream)
   11858          1.1  christos {
   11859          1.1  christos   fprintf (stream, _("\n\
   11860          1.1  christos The following i386/x86-64 specific disassembler options are supported for use\n\
   11861          1.1  christos with the -M switch (multiple options should be separated by commas):\n"));
   11862          1.1  christos 
   11863          1.1  christos   fprintf (stream, _("  x86-64      Disassemble in 64bit mode\n"));
   11864          1.1  christos   fprintf (stream, _("  i386        Disassemble in 32bit mode\n"));
   11865          1.1  christos   fprintf (stream, _("  i8086       Disassemble in 16bit mode\n"));
   11866          1.1  christos   fprintf (stream, _("  att         Display instruction in AT&T syntax\n"));
   11867          1.1  christos   fprintf (stream, _("  intel       Display instruction in Intel syntax\n"));
   11868          1.1  christos   fprintf (stream, _("  att-mnemonic\n"
   11869          1.1  christos 		     "              Display instruction in AT&T mnemonic\n"));
   11870          1.1  christos   fprintf (stream, _("  intel-mnemonic\n"
   11871          1.1  christos 		     "              Display instruction in Intel mnemonic\n"));
   11872          1.1  christos   fprintf (stream, _("  addr64      Assume 64bit address size\n"));
   11873          1.1  christos   fprintf (stream, _("  addr32      Assume 32bit address size\n"));
   11874          1.1  christos   fprintf (stream, _("  addr16      Assume 16bit address size\n"));
   11875          1.1  christos   fprintf (stream, _("  data32      Assume 32bit data size\n"));
   11876          1.1  christos   fprintf (stream, _("  data16      Assume 16bit data size\n"));
   11877          1.1  christos   fprintf (stream, _("  suffix      Always display instruction suffix in AT&T syntax\n"));
   11878          1.1  christos }
   11879          1.1  christos 
   11880          1.1  christos /* Bad opcode.  */
   11881          1.1  christos static const struct dis386 bad_opcode = { "(bad)", { XX } };
   11882          1.1  christos 
   11883          1.1  christos /* Get a pointer to struct dis386 with a valid name.  */
   11884          1.1  christos 
   11885          1.1  christos static const struct dis386 *
   11886          1.1  christos get_valid_dis386 (const struct dis386 *dp, disassemble_info *info)
   11887          1.1  christos {
   11888          1.1  christos   int vindex, vex_table_index;
   11889          1.1  christos 
   11890          1.1  christos   if (dp->name != NULL)
   11891          1.1  christos     return dp;
   11892          1.1  christos 
   11893          1.1  christos   switch (dp->op[0].bytemode)
   11894          1.1  christos     {
   11895          1.1  christos     case USE_REG_TABLE:
   11896          1.1  christos       dp = &reg_table[dp->op[1].bytemode][modrm.reg];
   11897          1.1  christos       break;
   11898          1.1  christos 
   11899          1.1  christos     case USE_MOD_TABLE:
   11900          1.1  christos       vindex = modrm.mod == 0x3 ? 1 : 0;
   11901          1.1  christos       dp = &mod_table[dp->op[1].bytemode][vindex];
   11902          1.1  christos       break;
   11903          1.1  christos 
   11904          1.1  christos     case USE_RM_TABLE:
   11905          1.1  christos       dp = &rm_table[dp->op[1].bytemode][modrm.rm];
   11906          1.1  christos       break;
   11907          1.1  christos 
   11908          1.1  christos     case USE_PREFIX_TABLE:
   11909          1.1  christos       if (need_vex)
   11910          1.1  christos 	{
   11911          1.1  christos 	  /* The prefix in VEX is implicit.  */
   11912          1.1  christos 	  switch (vex.prefix)
   11913          1.1  christos 	    {
   11914          1.1  christos 	    case 0:
   11915          1.1  christos 	      vindex = 0;
   11916          1.1  christos 	      break;
   11917          1.1  christos 	    case REPE_PREFIX_OPCODE:
   11918          1.1  christos 	      vindex = 1;
   11919          1.1  christos 	      break;
   11920          1.1  christos 	    case DATA_PREFIX_OPCODE:
   11921          1.1  christos 	      vindex = 2;
   11922          1.1  christos 	      break;
   11923          1.1  christos 	    case REPNE_PREFIX_OPCODE:
   11924          1.1  christos 	      vindex = 3;
   11925          1.1  christos 	      break;
   11926          1.1  christos 	    default:
   11927          1.1  christos 	      abort ();
   11928          1.1  christos 	      break;
   11929          1.1  christos 	    }
   11930          1.1  christos 	}
   11931  1.1.1.1.8.1       tls       else
   11932          1.1  christos 	{
   11933          1.1  christos 	  vindex = 0;
   11934          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_REPZ);
   11935          1.1  christos 	  if (prefixes & PREFIX_REPZ)
   11936          1.1  christos 	    {
   11937          1.1  christos 	      vindex = 1;
   11938          1.1  christos 	      all_prefixes[last_repz_prefix] = 0;
   11939          1.1  christos 	    }
   11940          1.1  christos 	  else
   11941          1.1  christos 	    {
   11942          1.1  christos 	      /* We should check PREFIX_REPNZ and PREFIX_REPZ before
   11943          1.1  christos 		 PREFIX_DATA.  */
   11944          1.1  christos 	      used_prefixes |= (prefixes & PREFIX_REPNZ);
   11945          1.1  christos 	      if (prefixes & PREFIX_REPNZ)
   11946          1.1  christos 		{
   11947          1.1  christos 		  vindex = 3;
   11948          1.1  christos 		  all_prefixes[last_repnz_prefix] = 0;
   11949          1.1  christos 		}
   11950          1.1  christos 	      else
   11951          1.1  christos 		{
   11952          1.1  christos 		  used_prefixes |= (prefixes & PREFIX_DATA);
   11953          1.1  christos 		  if (prefixes & PREFIX_DATA)
   11954          1.1  christos 		    {
   11955          1.1  christos 		      vindex = 2;
   11956          1.1  christos 		      all_prefixes[last_data_prefix] = 0;
   11957          1.1  christos 		    }
   11958          1.1  christos 		}
   11959          1.1  christos 	    }
   11960          1.1  christos 	}
   11961          1.1  christos       dp = &prefix_table[dp->op[1].bytemode][vindex];
   11962          1.1  christos       break;
   11963          1.1  christos 
   11964          1.1  christos     case USE_X86_64_TABLE:
   11965          1.1  christos       vindex = address_mode == mode_64bit ? 1 : 0;
   11966          1.1  christos       dp = &x86_64_table[dp->op[1].bytemode][vindex];
   11967          1.1  christos       break;
   11968          1.1  christos 
   11969          1.1  christos     case USE_3BYTE_TABLE:
   11970          1.1  christos       FETCH_DATA (info, codep + 2);
   11971          1.1  christos       vindex = *codep++;
   11972          1.1  christos       dp = &three_byte_table[dp->op[1].bytemode][vindex];
   11973          1.1  christos       modrm.mod = (*codep >> 6) & 3;
   11974          1.1  christos       modrm.reg = (*codep >> 3) & 7;
   11975          1.1  christos       modrm.rm = *codep & 7;
   11976          1.1  christos       break;
   11977          1.1  christos 
   11978          1.1  christos     case USE_VEX_LEN_TABLE:
   11979          1.1  christos       if (!need_vex)
   11980          1.1  christos 	abort ();
   11981          1.1  christos 
   11982          1.1  christos       switch (vex.length)
   11983          1.1  christos 	{
   11984          1.1  christos 	case 128:
   11985          1.1  christos 	  vindex = 0;
   11986          1.1  christos 	  break;
   11987          1.1  christos 	case 256:
   11988          1.1  christos 	  vindex = 1;
   11989          1.1  christos 	  break;
   11990          1.1  christos 	default:
   11991          1.1  christos 	  abort ();
   11992          1.1  christos 	  break;
   11993          1.1  christos 	}
   11994          1.1  christos 
   11995          1.1  christos       dp = &vex_len_table[dp->op[1].bytemode][vindex];
   11996          1.1  christos       break;
   11997          1.1  christos 
   11998          1.1  christos     case USE_XOP_8F_TABLE:
   11999          1.1  christos       FETCH_DATA (info, codep + 3);
   12000          1.1  christos       /* All bits in the REX prefix are ignored.  */
   12001          1.1  christos       rex_ignored = rex;
   12002          1.1  christos       rex = ~(*codep >> 5) & 0x7;
   12003          1.1  christos 
   12004          1.1  christos       /* VEX_TABLE_INDEX is the mmmmm part of the XOP byte 1 "RCB.mmmmm".  */
   12005          1.1  christos       switch ((*codep & 0x1f))
   12006          1.1  christos 	{
   12007          1.1  christos 	default:
   12008          1.1  christos 	  dp = &bad_opcode;
   12009          1.1  christos 	  return dp;
   12010          1.1  christos 	case 0x8:
   12011          1.1  christos 	  vex_table_index = XOP_08;
   12012          1.1  christos 	  break;
   12013          1.1  christos 	case 0x9:
   12014          1.1  christos 	  vex_table_index = XOP_09;
   12015          1.1  christos 	  break;
   12016          1.1  christos 	case 0xa:
   12017          1.1  christos 	  vex_table_index = XOP_0A;
   12018          1.1  christos 	  break;
   12019          1.1  christos 	}
   12020          1.1  christos       codep++;
   12021          1.1  christos       vex.w = *codep & 0x80;
   12022          1.1  christos       if (vex.w && address_mode == mode_64bit)
   12023          1.1  christos 	rex |= REX_W;
   12024          1.1  christos 
   12025          1.1  christos       vex.register_specifier = (~(*codep >> 3)) & 0xf;
   12026          1.1  christos       if (address_mode != mode_64bit
   12027          1.1  christos 	  && vex.register_specifier > 0x7)
   12028          1.1  christos 	{
   12029          1.1  christos 	  dp = &bad_opcode;
   12030          1.1  christos 	  return dp;
   12031          1.1  christos 	}
   12032          1.1  christos 
   12033          1.1  christos       vex.length = (*codep & 0x4) ? 256 : 128;
   12034          1.1  christos       switch ((*codep & 0x3))
   12035          1.1  christos 	{
   12036          1.1  christos 	case 0:
   12037          1.1  christos 	  vex.prefix = 0;
   12038          1.1  christos 	  break;
   12039          1.1  christos 	case 1:
   12040          1.1  christos 	  vex.prefix = DATA_PREFIX_OPCODE;
   12041          1.1  christos 	  break;
   12042          1.1  christos 	case 2:
   12043          1.1  christos 	  vex.prefix = REPE_PREFIX_OPCODE;
   12044          1.1  christos 	  break;
   12045          1.1  christos 	case 3:
   12046          1.1  christos 	  vex.prefix = REPNE_PREFIX_OPCODE;
   12047          1.1  christos 	  break;
   12048          1.1  christos 	}
   12049          1.1  christos       need_vex = 1;
   12050          1.1  christos       need_vex_reg = 1;
   12051          1.1  christos       codep++;
   12052          1.1  christos       vindex = *codep++;
   12053          1.1  christos       dp = &xop_table[vex_table_index][vindex];
   12054          1.1  christos 
   12055          1.1  christos       FETCH_DATA (info, codep + 1);
   12056          1.1  christos       modrm.mod = (*codep >> 6) & 3;
   12057          1.1  christos       modrm.reg = (*codep >> 3) & 7;
   12058          1.1  christos       modrm.rm = *codep & 7;
   12059          1.1  christos       break;
   12060          1.1  christos 
   12061          1.1  christos     case USE_VEX_C4_TABLE:
   12062  1.1.1.1.8.1       tls       /* VEX prefix.  */
   12063          1.1  christos       FETCH_DATA (info, codep + 3);
   12064          1.1  christos       /* All bits in the REX prefix are ignored.  */
   12065          1.1  christos       rex_ignored = rex;
   12066          1.1  christos       rex = ~(*codep >> 5) & 0x7;
   12067          1.1  christos       switch ((*codep & 0x1f))
   12068          1.1  christos 	{
   12069          1.1  christos 	default:
   12070          1.1  christos 	  dp = &bad_opcode;
   12071          1.1  christos 	  return dp;
   12072          1.1  christos 	case 0x1:
   12073          1.1  christos 	  vex_table_index = VEX_0F;
   12074          1.1  christos 	  break;
   12075          1.1  christos 	case 0x2:
   12076          1.1  christos 	  vex_table_index = VEX_0F38;
   12077          1.1  christos 	  break;
   12078          1.1  christos 	case 0x3:
   12079          1.1  christos 	  vex_table_index = VEX_0F3A;
   12080          1.1  christos 	  break;
   12081          1.1  christos 	}
   12082          1.1  christos       codep++;
   12083          1.1  christos       vex.w = *codep & 0x80;
   12084          1.1  christos       if (vex.w && address_mode == mode_64bit)
   12085          1.1  christos 	rex |= REX_W;
   12086          1.1  christos 
   12087          1.1  christos       vex.register_specifier = (~(*codep >> 3)) & 0xf;
   12088          1.1  christos       if (address_mode != mode_64bit
   12089          1.1  christos 	  && vex.register_specifier > 0x7)
   12090          1.1  christos 	{
   12091          1.1  christos 	  dp = &bad_opcode;
   12092          1.1  christos 	  return dp;
   12093          1.1  christos 	}
   12094          1.1  christos 
   12095          1.1  christos       vex.length = (*codep & 0x4) ? 256 : 128;
   12096          1.1  christos       switch ((*codep & 0x3))
   12097          1.1  christos 	{
   12098          1.1  christos 	case 0:
   12099          1.1  christos 	  vex.prefix = 0;
   12100          1.1  christos 	  break;
   12101          1.1  christos 	case 1:
   12102          1.1  christos 	  vex.prefix = DATA_PREFIX_OPCODE;
   12103          1.1  christos 	  break;
   12104          1.1  christos 	case 2:
   12105          1.1  christos 	  vex.prefix = REPE_PREFIX_OPCODE;
   12106          1.1  christos 	  break;
   12107          1.1  christos 	case 3:
   12108          1.1  christos 	  vex.prefix = REPNE_PREFIX_OPCODE;
   12109          1.1  christos 	  break;
   12110          1.1  christos 	}
   12111          1.1  christos       need_vex = 1;
   12112          1.1  christos       need_vex_reg = 1;
   12113          1.1  christos       codep++;
   12114          1.1  christos       vindex = *codep++;
   12115          1.1  christos       dp = &vex_table[vex_table_index][vindex];
   12116          1.1  christos       /* There is no MODRM byte for VEX [82|77].  */
   12117          1.1  christos       if (vindex != 0x77 && vindex != 0x82)
   12118          1.1  christos 	{
   12119          1.1  christos 	  FETCH_DATA (info, codep + 1);
   12120          1.1  christos 	  modrm.mod = (*codep >> 6) & 3;
   12121          1.1  christos 	  modrm.reg = (*codep >> 3) & 7;
   12122          1.1  christos 	  modrm.rm = *codep & 7;
   12123          1.1  christos 	}
   12124          1.1  christos       break;
   12125          1.1  christos 
   12126          1.1  christos     case USE_VEX_C5_TABLE:
   12127  1.1.1.1.8.1       tls       /* VEX prefix.  */
   12128          1.1  christos       FETCH_DATA (info, codep + 2);
   12129          1.1  christos       /* All bits in the REX prefix are ignored.  */
   12130          1.1  christos       rex_ignored = rex;
   12131          1.1  christos       rex = (*codep & 0x80) ? 0 : REX_R;
   12132          1.1  christos 
   12133          1.1  christos       vex.register_specifier = (~(*codep >> 3)) & 0xf;
   12134          1.1  christos       if (address_mode != mode_64bit
   12135          1.1  christos 	  && vex.register_specifier > 0x7)
   12136          1.1  christos 	{
   12137          1.1  christos 	  dp = &bad_opcode;
   12138          1.1  christos 	  return dp;
   12139          1.1  christos 	}
   12140          1.1  christos 
   12141          1.1  christos       vex.w = 0;
   12142          1.1  christos 
   12143          1.1  christos       vex.length = (*codep & 0x4) ? 256 : 128;
   12144          1.1  christos       switch ((*codep & 0x3))
   12145          1.1  christos 	{
   12146          1.1  christos 	case 0:
   12147          1.1  christos 	  vex.prefix = 0;
   12148          1.1  christos 	  break;
   12149          1.1  christos 	case 1:
   12150          1.1  christos 	  vex.prefix = DATA_PREFIX_OPCODE;
   12151          1.1  christos 	  break;
   12152          1.1  christos 	case 2:
   12153          1.1  christos 	  vex.prefix = REPE_PREFIX_OPCODE;
   12154          1.1  christos 	  break;
   12155          1.1  christos 	case 3:
   12156          1.1  christos 	  vex.prefix = REPNE_PREFIX_OPCODE;
   12157          1.1  christos 	  break;
   12158          1.1  christos 	}
   12159          1.1  christos       need_vex = 1;
   12160          1.1  christos       need_vex_reg = 1;
   12161          1.1  christos       codep++;
   12162          1.1  christos       vindex = *codep++;
   12163          1.1  christos       dp = &vex_table[dp->op[1].bytemode][vindex];
   12164          1.1  christos       /* There is no MODRM byte for VEX [82|77].  */
   12165          1.1  christos       if (vindex != 0x77 && vindex != 0x82)
   12166          1.1  christos 	{
   12167          1.1  christos 	  FETCH_DATA (info, codep + 1);
   12168          1.1  christos 	  modrm.mod = (*codep >> 6) & 3;
   12169          1.1  christos 	  modrm.reg = (*codep >> 3) & 7;
   12170          1.1  christos 	  modrm.rm = *codep & 7;
   12171          1.1  christos 	}
   12172          1.1  christos       break;
   12173          1.1  christos 
   12174          1.1  christos     case USE_VEX_W_TABLE:
   12175          1.1  christos       if (!need_vex)
   12176          1.1  christos 	abort ();
   12177          1.1  christos 
   12178          1.1  christos       dp = &vex_w_table[dp->op[1].bytemode][vex.w ? 1 : 0];
   12179          1.1  christos       break;
   12180          1.1  christos 
   12181  1.1.1.1.8.1       tls     case USE_EVEX_TABLE:
   12182  1.1.1.1.8.1       tls       two_source_ops = 0;
   12183  1.1.1.1.8.1       tls       /* EVEX prefix.  */
   12184  1.1.1.1.8.1       tls       vex.evex = 1;
   12185  1.1.1.1.8.1       tls       FETCH_DATA (info, codep + 4);
   12186  1.1.1.1.8.1       tls       /* All bits in the REX prefix are ignored.  */
   12187  1.1.1.1.8.1       tls       rex_ignored = rex;
   12188  1.1.1.1.8.1       tls       /* The first byte after 0x62.  */
   12189  1.1.1.1.8.1       tls       rex = ~(*codep >> 5) & 0x7;
   12190  1.1.1.1.8.1       tls       vex.r = *codep & 0x10;
   12191  1.1.1.1.8.1       tls       switch ((*codep & 0xf))
   12192  1.1.1.1.8.1       tls 	{
   12193  1.1.1.1.8.1       tls 	default:
   12194  1.1.1.1.8.1       tls 	  return &bad_opcode;
   12195  1.1.1.1.8.1       tls 	case 0x1:
   12196  1.1.1.1.8.1       tls 	  vex_table_index = EVEX_0F;
   12197  1.1.1.1.8.1       tls 	  break;
   12198  1.1.1.1.8.1       tls 	case 0x2:
   12199  1.1.1.1.8.1       tls 	  vex_table_index = EVEX_0F38;
   12200  1.1.1.1.8.1       tls 	  break;
   12201  1.1.1.1.8.1       tls 	case 0x3:
   12202  1.1.1.1.8.1       tls 	  vex_table_index = EVEX_0F3A;
   12203  1.1.1.1.8.1       tls 	  break;
   12204  1.1.1.1.8.1       tls 	}
   12205  1.1.1.1.8.1       tls 
   12206  1.1.1.1.8.1       tls       /* The second byte after 0x62.  */
   12207  1.1.1.1.8.1       tls       codep++;
   12208  1.1.1.1.8.1       tls       vex.w = *codep & 0x80;
   12209  1.1.1.1.8.1       tls       if (vex.w && address_mode == mode_64bit)
   12210  1.1.1.1.8.1       tls 	rex |= REX_W;
   12211  1.1.1.1.8.1       tls 
   12212  1.1.1.1.8.1       tls       vex.register_specifier = (~(*codep >> 3)) & 0xf;
   12213  1.1.1.1.8.1       tls       if (address_mode != mode_64bit)
   12214  1.1.1.1.8.1       tls 	{
   12215  1.1.1.1.8.1       tls 	  /* In 16/32-bit mode silently ignore following bits.  */
   12216  1.1.1.1.8.1       tls 	  rex &= ~REX_B;
   12217  1.1.1.1.8.1       tls 	  vex.r = 1;
   12218  1.1.1.1.8.1       tls 	  vex.v = 1;
   12219  1.1.1.1.8.1       tls 	  vex.register_specifier &= 0x7;
   12220  1.1.1.1.8.1       tls 	}
   12221  1.1.1.1.8.1       tls 
   12222  1.1.1.1.8.1       tls       /* The U bit.  */
   12223  1.1.1.1.8.1       tls       if (!(*codep & 0x4))
   12224  1.1.1.1.8.1       tls 	return &bad_opcode;
   12225  1.1.1.1.8.1       tls 
   12226  1.1.1.1.8.1       tls       switch ((*codep & 0x3))
   12227  1.1.1.1.8.1       tls 	{
   12228  1.1.1.1.8.1       tls 	case 0:
   12229  1.1.1.1.8.1       tls 	  vex.prefix = 0;
   12230  1.1.1.1.8.1       tls 	  break;
   12231  1.1.1.1.8.1       tls 	case 1:
   12232  1.1.1.1.8.1       tls 	  vex.prefix = DATA_PREFIX_OPCODE;
   12233  1.1.1.1.8.1       tls 	  break;
   12234  1.1.1.1.8.1       tls 	case 2:
   12235  1.1.1.1.8.1       tls 	  vex.prefix = REPE_PREFIX_OPCODE;
   12236  1.1.1.1.8.1       tls 	  break;
   12237  1.1.1.1.8.1       tls 	case 3:
   12238  1.1.1.1.8.1       tls 	  vex.prefix = REPNE_PREFIX_OPCODE;
   12239  1.1.1.1.8.1       tls 	  break;
   12240  1.1.1.1.8.1       tls 	}
   12241  1.1.1.1.8.1       tls 
   12242  1.1.1.1.8.1       tls       /* The third byte after 0x62.  */
   12243  1.1.1.1.8.1       tls       codep++;
   12244  1.1.1.1.8.1       tls 
   12245  1.1.1.1.8.1       tls       /* Remember the static rounding bits.  */
   12246  1.1.1.1.8.1       tls       vex.ll = (*codep >> 5) & 3;
   12247  1.1.1.1.8.1       tls       vex.b = (*codep & 0x10) != 0;
   12248  1.1.1.1.8.1       tls 
   12249  1.1.1.1.8.1       tls       vex.v = *codep & 0x8;
   12250  1.1.1.1.8.1       tls       vex.mask_register_specifier = *codep & 0x7;
   12251  1.1.1.1.8.1       tls       vex.zeroing = *codep & 0x80;
   12252  1.1.1.1.8.1       tls 
   12253  1.1.1.1.8.1       tls       need_vex = 1;
   12254  1.1.1.1.8.1       tls       need_vex_reg = 1;
   12255  1.1.1.1.8.1       tls       codep++;
   12256  1.1.1.1.8.1       tls       vindex = *codep++;
   12257  1.1.1.1.8.1       tls       dp = &evex_table[vex_table_index][vindex];
   12258  1.1.1.1.8.1       tls       FETCH_DATA (info, codep + 1);
   12259  1.1.1.1.8.1       tls       modrm.mod = (*codep >> 6) & 3;
   12260  1.1.1.1.8.1       tls       modrm.reg = (*codep >> 3) & 7;
   12261  1.1.1.1.8.1       tls       modrm.rm = *codep & 7;
   12262  1.1.1.1.8.1       tls 
   12263  1.1.1.1.8.1       tls       /* Set vector length.  */
   12264  1.1.1.1.8.1       tls       if (modrm.mod == 3 && vex.b)
   12265  1.1.1.1.8.1       tls 	vex.length = 512;
   12266  1.1.1.1.8.1       tls       else
   12267  1.1.1.1.8.1       tls 	{
   12268  1.1.1.1.8.1       tls 	  switch (vex.ll)
   12269  1.1.1.1.8.1       tls 	    {
   12270  1.1.1.1.8.1       tls 	    case 0x0:
   12271  1.1.1.1.8.1       tls 	      vex.length = 128;
   12272  1.1.1.1.8.1       tls 	      break;
   12273  1.1.1.1.8.1       tls 	    case 0x1:
   12274  1.1.1.1.8.1       tls 	      vex.length = 256;
   12275  1.1.1.1.8.1       tls 	      break;
   12276  1.1.1.1.8.1       tls 	    case 0x2:
   12277  1.1.1.1.8.1       tls 	      vex.length = 512;
   12278  1.1.1.1.8.1       tls 	      break;
   12279  1.1.1.1.8.1       tls 	    default:
   12280  1.1.1.1.8.1       tls 	      return &bad_opcode;
   12281  1.1.1.1.8.1       tls 	    }
   12282  1.1.1.1.8.1       tls 	}
   12283  1.1.1.1.8.1       tls       break;
   12284  1.1.1.1.8.1       tls 
   12285          1.1  christos     case 0:
   12286          1.1  christos       dp = &bad_opcode;
   12287          1.1  christos       break;
   12288          1.1  christos 
   12289          1.1  christos     default:
   12290          1.1  christos       abort ();
   12291          1.1  christos     }
   12292          1.1  christos 
   12293          1.1  christos   if (dp->name != NULL)
   12294          1.1  christos     return dp;
   12295          1.1  christos   else
   12296          1.1  christos     return get_valid_dis386 (dp, info);
   12297          1.1  christos }
   12298          1.1  christos 
   12299          1.1  christos static void
   12300  1.1.1.1.8.1       tls get_sib (disassemble_info *info, int sizeflag)
   12301          1.1  christos {
   12302          1.1  christos   /* If modrm.mod == 3, operand must be register.  */
   12303          1.1  christos   if (need_modrm
   12304  1.1.1.1.8.1       tls       && ((sizeflag & AFLAG) || address_mode == mode_64bit)
   12305          1.1  christos       && modrm.mod != 3
   12306          1.1  christos       && modrm.rm == 4)
   12307          1.1  christos     {
   12308          1.1  christos       FETCH_DATA (info, codep + 2);
   12309          1.1  christos       sib.index = (codep [1] >> 3) & 7;
   12310          1.1  christos       sib.scale = (codep [1] >> 6) & 3;
   12311          1.1  christos       sib.base = codep [1] & 7;
   12312          1.1  christos     }
   12313          1.1  christos }
   12314          1.1  christos 
   12315          1.1  christos static int
   12316          1.1  christos print_insn (bfd_vma pc, disassemble_info *info)
   12317          1.1  christos {
   12318          1.1  christos   const struct dis386 *dp;
   12319          1.1  christos   int i;
   12320          1.1  christos   char *op_txt[MAX_OPERANDS];
   12321          1.1  christos   int needcomma;
   12322          1.1  christos   int sizeflag;
   12323          1.1  christos   const char *p;
   12324          1.1  christos   struct dis_private priv;
   12325          1.1  christos   int prefix_length;
   12326          1.1  christos   int default_prefixes;
   12327          1.1  christos 
   12328  1.1.1.1.8.1       tls   priv.orig_sizeflag = AFLAG | DFLAG;
   12329  1.1.1.1.8.1       tls   if ((info->mach & bfd_mach_i386_i386) != 0)
   12330          1.1  christos     address_mode = mode_32bit;
   12331          1.1  christos   else if (info->mach == bfd_mach_i386_i8086)
   12332  1.1.1.1.8.1       tls     {
   12333  1.1.1.1.8.1       tls       address_mode = mode_16bit;
   12334  1.1.1.1.8.1       tls       priv.orig_sizeflag = 0;
   12335  1.1.1.1.8.1       tls     }
   12336          1.1  christos   else
   12337  1.1.1.1.8.1       tls     address_mode = mode_64bit;
   12338  1.1.1.1.8.1       tls 
   12339  1.1.1.1.8.1       tls   if (intel_syntax == (char) -1)
   12340  1.1.1.1.8.1       tls     intel_syntax = (info->mach & bfd_mach_i386_intel_syntax) != 0;
   12341          1.1  christos 
   12342          1.1  christos   for (p = info->disassembler_options; p != NULL; )
   12343          1.1  christos     {
   12344          1.1  christos       if (CONST_STRNEQ (p, "x86-64"))
   12345          1.1  christos 	{
   12346          1.1  christos 	  address_mode = mode_64bit;
   12347          1.1  christos 	  priv.orig_sizeflag = AFLAG | DFLAG;
   12348          1.1  christos 	}
   12349          1.1  christos       else if (CONST_STRNEQ (p, "i386"))
   12350          1.1  christos 	{
   12351          1.1  christos 	  address_mode = mode_32bit;
   12352          1.1  christos 	  priv.orig_sizeflag = AFLAG | DFLAG;
   12353          1.1  christos 	}
   12354          1.1  christos       else if (CONST_STRNEQ (p, "i8086"))
   12355          1.1  christos 	{
   12356          1.1  christos 	  address_mode = mode_16bit;
   12357          1.1  christos 	  priv.orig_sizeflag = 0;
   12358          1.1  christos 	}
   12359          1.1  christos       else if (CONST_STRNEQ (p, "intel"))
   12360          1.1  christos 	{
   12361          1.1  christos 	  intel_syntax = 1;
   12362          1.1  christos 	  if (CONST_STRNEQ (p + 5, "-mnemonic"))
   12363          1.1  christos 	    intel_mnemonic = 1;
   12364          1.1  christos 	}
   12365          1.1  christos       else if (CONST_STRNEQ (p, "att"))
   12366          1.1  christos 	{
   12367          1.1  christos 	  intel_syntax = 0;
   12368          1.1  christos 	  if (CONST_STRNEQ (p + 3, "-mnemonic"))
   12369          1.1  christos 	    intel_mnemonic = 0;
   12370          1.1  christos 	}
   12371          1.1  christos       else if (CONST_STRNEQ (p, "addr"))
   12372          1.1  christos 	{
   12373          1.1  christos 	  if (address_mode == mode_64bit)
   12374          1.1  christos 	    {
   12375          1.1  christos 	      if (p[4] == '3' && p[5] == '2')
   12376          1.1  christos 		priv.orig_sizeflag &= ~AFLAG;
   12377          1.1  christos 	      else if (p[4] == '6' && p[5] == '4')
   12378          1.1  christos 		priv.orig_sizeflag |= AFLAG;
   12379          1.1  christos 	    }
   12380          1.1  christos 	  else
   12381          1.1  christos 	    {
   12382          1.1  christos 	      if (p[4] == '1' && p[5] == '6')
   12383          1.1  christos 		priv.orig_sizeflag &= ~AFLAG;
   12384          1.1  christos 	      else if (p[4] == '3' && p[5] == '2')
   12385          1.1  christos 		priv.orig_sizeflag |= AFLAG;
   12386          1.1  christos 	    }
   12387          1.1  christos 	}
   12388          1.1  christos       else if (CONST_STRNEQ (p, "data"))
   12389          1.1  christos 	{
   12390          1.1  christos 	  if (p[4] == '1' && p[5] == '6')
   12391          1.1  christos 	    priv.orig_sizeflag &= ~DFLAG;
   12392          1.1  christos 	  else if (p[4] == '3' && p[5] == '2')
   12393          1.1  christos 	    priv.orig_sizeflag |= DFLAG;
   12394          1.1  christos 	}
   12395          1.1  christos       else if (CONST_STRNEQ (p, "suffix"))
   12396          1.1  christos 	priv.orig_sizeflag |= SUFFIX_ALWAYS;
   12397          1.1  christos 
   12398          1.1  christos       p = strchr (p, ',');
   12399          1.1  christos       if (p != NULL)
   12400          1.1  christos 	p++;
   12401          1.1  christos     }
   12402          1.1  christos 
   12403          1.1  christos   if (intel_syntax)
   12404          1.1  christos     {
   12405          1.1  christos       names64 = intel_names64;
   12406          1.1  christos       names32 = intel_names32;
   12407          1.1  christos       names16 = intel_names16;
   12408          1.1  christos       names8 = intel_names8;
   12409          1.1  christos       names8rex = intel_names8rex;
   12410          1.1  christos       names_seg = intel_names_seg;
   12411          1.1  christos       names_mm = intel_names_mm;
   12412  1.1.1.1.8.1       tls       names_bnd = intel_names_bnd;
   12413          1.1  christos       names_xmm = intel_names_xmm;
   12414          1.1  christos       names_ymm = intel_names_ymm;
   12415  1.1.1.1.8.1       tls       names_zmm = intel_names_zmm;
   12416          1.1  christos       index64 = intel_index64;
   12417          1.1  christos       index32 = intel_index32;
   12418  1.1.1.1.8.1       tls       names_mask = intel_names_mask;
   12419          1.1  christos       index16 = intel_index16;
   12420          1.1  christos       open_char = '[';
   12421          1.1  christos       close_char = ']';
   12422          1.1  christos       separator_char = '+';
   12423          1.1  christos       scale_char = '*';
   12424          1.1  christos     }
   12425          1.1  christos   else
   12426          1.1  christos     {
   12427          1.1  christos       names64 = att_names64;
   12428          1.1  christos       names32 = att_names32;
   12429          1.1  christos       names16 = att_names16;
   12430          1.1  christos       names8 = att_names8;
   12431          1.1  christos       names8rex = att_names8rex;
   12432          1.1  christos       names_seg = att_names_seg;
   12433          1.1  christos       names_mm = att_names_mm;
   12434  1.1.1.1.8.1       tls       names_bnd = att_names_bnd;
   12435          1.1  christos       names_xmm = att_names_xmm;
   12436          1.1  christos       names_ymm = att_names_ymm;
   12437  1.1.1.1.8.1       tls       names_zmm = att_names_zmm;
   12438          1.1  christos       index64 = att_index64;
   12439          1.1  christos       index32 = att_index32;
   12440  1.1.1.1.8.1       tls       names_mask = att_names_mask;
   12441          1.1  christos       index16 = att_index16;
   12442          1.1  christos       open_char = '(';
   12443          1.1  christos       close_char =  ')';
   12444          1.1  christos       separator_char = ',';
   12445          1.1  christos       scale_char = ',';
   12446          1.1  christos     }
   12447          1.1  christos 
   12448          1.1  christos   /* The output looks better if we put 7 bytes on a line, since that
   12449          1.1  christos      puts most long word instructions on a single line.  Use 8 bytes
   12450          1.1  christos      for Intel L1OM.  */
   12451  1.1.1.1.8.1       tls   if ((info->mach & bfd_mach_l1om) != 0)
   12452          1.1  christos     info->bytes_per_line = 8;
   12453          1.1  christos   else
   12454          1.1  christos     info->bytes_per_line = 7;
   12455          1.1  christos 
   12456          1.1  christos   info->private_data = &priv;
   12457          1.1  christos   priv.max_fetched = priv.the_buffer;
   12458          1.1  christos   priv.insn_start = pc;
   12459          1.1  christos 
   12460          1.1  christos   obuf[0] = 0;
   12461          1.1  christos   for (i = 0; i < MAX_OPERANDS; ++i)
   12462          1.1  christos     {
   12463          1.1  christos       op_out[i][0] = 0;
   12464          1.1  christos       op_index[i] = -1;
   12465          1.1  christos     }
   12466          1.1  christos 
   12467          1.1  christos   the_info = info;
   12468          1.1  christos   start_pc = pc;
   12469          1.1  christos   start_codep = priv.the_buffer;
   12470          1.1  christos   codep = priv.the_buffer;
   12471          1.1  christos 
   12472          1.1  christos   if (setjmp (priv.bailout) != 0)
   12473          1.1  christos     {
   12474          1.1  christos       const char *name;
   12475          1.1  christos 
   12476          1.1  christos       /* Getting here means we tried for data but didn't get it.  That
   12477          1.1  christos 	 means we have an incomplete instruction of some sort.  Just
   12478          1.1  christos 	 print the first byte as a prefix or a .byte pseudo-op.  */
   12479          1.1  christos       if (codep > priv.the_buffer)
   12480          1.1  christos 	{
   12481          1.1  christos 	  name = prefix_name (priv.the_buffer[0], priv.orig_sizeflag);
   12482          1.1  christos 	  if (name != NULL)
   12483          1.1  christos 	    (*info->fprintf_func) (info->stream, "%s", name);
   12484          1.1  christos 	  else
   12485          1.1  christos 	    {
   12486          1.1  christos 	      /* Just print the first byte as a .byte instruction.  */
   12487          1.1  christos 	      (*info->fprintf_func) (info->stream, ".byte 0x%x",
   12488          1.1  christos 				     (unsigned int) priv.the_buffer[0]);
   12489          1.1  christos 	    }
   12490          1.1  christos 
   12491          1.1  christos 	  return 1;
   12492          1.1  christos 	}
   12493          1.1  christos 
   12494          1.1  christos       return -1;
   12495          1.1  christos     }
   12496          1.1  christos 
   12497          1.1  christos   obufp = obuf;
   12498          1.1  christos   sizeflag = priv.orig_sizeflag;
   12499          1.1  christos 
   12500          1.1  christos   if (!ckprefix () || rex_used)
   12501          1.1  christos     {
   12502          1.1  christos       /* Too many prefixes or unused REX prefixes.  */
   12503          1.1  christos       for (i = 0;
   12504  1.1.1.1.8.1       tls 	   i < (int) ARRAY_SIZE (all_prefixes) && all_prefixes[i];
   12505          1.1  christos 	   i++)
   12506  1.1.1.1.8.1       tls 	(*info->fprintf_func) (info->stream, "%s%s",
   12507  1.1.1.1.8.1       tls 			       i == 0 ? "" : " ",
   12508          1.1  christos 			       prefix_name (all_prefixes[i], sizeflag));
   12509  1.1.1.1.8.1       tls       return i;
   12510          1.1  christos     }
   12511          1.1  christos 
   12512          1.1  christos   insn_codep = codep;
   12513          1.1  christos 
   12514          1.1  christos   FETCH_DATA (info, codep + 1);
   12515          1.1  christos   two_source_ops = (*codep == 0x62) || (*codep == 0xc8);
   12516          1.1  christos 
   12517          1.1  christos   if (((prefixes & PREFIX_FWAIT)
   12518          1.1  christos        && ((*codep < 0xd8) || (*codep > 0xdf))))
   12519          1.1  christos     {
   12520          1.1  christos       (*info->fprintf_func) (info->stream, "fwait");
   12521          1.1  christos       return 1;
   12522          1.1  christos     }
   12523          1.1  christos 
   12524          1.1  christos   if (*codep == 0x0f)
   12525          1.1  christos     {
   12526          1.1  christos       unsigned char threebyte;
   12527          1.1  christos       FETCH_DATA (info, codep + 2);
   12528          1.1  christos       threebyte = *++codep;
   12529          1.1  christos       dp = &dis386_twobyte[threebyte];
   12530          1.1  christos       need_modrm = twobyte_has_modrm[*codep];
   12531          1.1  christos       codep++;
   12532          1.1  christos     }
   12533          1.1  christos   else
   12534          1.1  christos     {
   12535          1.1  christos       dp = &dis386[*codep];
   12536          1.1  christos       need_modrm = onebyte_has_modrm[*codep];
   12537          1.1  christos       codep++;
   12538          1.1  christos     }
   12539          1.1  christos 
   12540          1.1  christos   if ((prefixes & PREFIX_REPZ))
   12541          1.1  christos     used_prefixes |= PREFIX_REPZ;
   12542          1.1  christos   if ((prefixes & PREFIX_REPNZ))
   12543          1.1  christos     used_prefixes |= PREFIX_REPNZ;
   12544          1.1  christos   if ((prefixes & PREFIX_LOCK))
   12545          1.1  christos     used_prefixes |= PREFIX_LOCK;
   12546          1.1  christos 
   12547          1.1  christos   default_prefixes = 0;
   12548          1.1  christos   if (prefixes & PREFIX_ADDR)
   12549          1.1  christos     {
   12550          1.1  christos       sizeflag ^= AFLAG;
   12551          1.1  christos       if (dp->op[2].bytemode != loop_jcxz_mode || intel_syntax)
   12552          1.1  christos 	{
   12553          1.1  christos 	  if ((sizeflag & AFLAG) || address_mode == mode_64bit)
   12554          1.1  christos 	    all_prefixes[last_addr_prefix] = ADDR32_PREFIX;
   12555          1.1  christos 	  else
   12556          1.1  christos 	    all_prefixes[last_addr_prefix] = ADDR16_PREFIX;
   12557          1.1  christos 	  default_prefixes |= PREFIX_ADDR;
   12558          1.1  christos 	}
   12559          1.1  christos     }
   12560          1.1  christos 
   12561          1.1  christos   if ((prefixes & PREFIX_DATA))
   12562          1.1  christos     {
   12563          1.1  christos       sizeflag ^= DFLAG;
   12564          1.1  christos       if (dp->op[2].bytemode == cond_jump_mode
   12565          1.1  christos 	  && dp->op[0].bytemode == v_mode
   12566          1.1  christos 	  && !intel_syntax)
   12567          1.1  christos 	{
   12568          1.1  christos 	  if (sizeflag & DFLAG)
   12569          1.1  christos 	    all_prefixes[last_data_prefix] = DATA32_PREFIX;
   12570          1.1  christos 	  else
   12571          1.1  christos 	    all_prefixes[last_data_prefix] = DATA16_PREFIX;
   12572          1.1  christos 	  default_prefixes |= PREFIX_DATA;
   12573          1.1  christos 	}
   12574          1.1  christos       else if (rex & REX_W)
   12575          1.1  christos 	{
   12576          1.1  christos 	  /* REX_W will override PREFIX_DATA.  */
   12577          1.1  christos 	  default_prefixes |= PREFIX_DATA;
   12578          1.1  christos 	}
   12579          1.1  christos     }
   12580          1.1  christos 
   12581          1.1  christos   if (need_modrm)
   12582          1.1  christos     {
   12583          1.1  christos       FETCH_DATA (info, codep + 1);
   12584          1.1  christos       modrm.mod = (*codep >> 6) & 3;
   12585          1.1  christos       modrm.reg = (*codep >> 3) & 7;
   12586          1.1  christos       modrm.rm = *codep & 7;
   12587          1.1  christos     }
   12588          1.1  christos 
   12589          1.1  christos   need_vex = 0;
   12590          1.1  christos   need_vex_reg = 0;
   12591          1.1  christos   vex_w_done = 0;
   12592  1.1.1.1.8.1       tls   vex.evex = 0;
   12593          1.1  christos 
   12594          1.1  christos   if (dp->name == NULL && dp->op[0].bytemode == FLOATCODE)
   12595          1.1  christos     {
   12596  1.1.1.1.8.1       tls       get_sib (info, sizeflag);
   12597          1.1  christos       dofloat (sizeflag);
   12598          1.1  christos     }
   12599          1.1  christos   else
   12600          1.1  christos     {
   12601          1.1  christos       dp = get_valid_dis386 (dp, info);
   12602          1.1  christos       if (dp != NULL && putop (dp->name, sizeflag) == 0)
   12603  1.1.1.1.8.1       tls 	{
   12604  1.1.1.1.8.1       tls 	  get_sib (info, sizeflag);
   12605          1.1  christos 	  for (i = 0; i < MAX_OPERANDS; ++i)
   12606          1.1  christos 	    {
   12607          1.1  christos 	      obufp = op_out[i];
   12608          1.1  christos 	      op_ad = MAX_OPERANDS - 1 - i;
   12609          1.1  christos 	      if (dp->op[i].rtn)
   12610          1.1  christos 		(*dp->op[i].rtn) (dp->op[i].bytemode, sizeflag);
   12611  1.1.1.1.8.1       tls 	      /* For EVEX instruction after the last operand masking
   12612  1.1.1.1.8.1       tls 		 should be printed.  */
   12613  1.1.1.1.8.1       tls 	      if (i == 0 && vex.evex)
   12614  1.1.1.1.8.1       tls 		{
   12615  1.1.1.1.8.1       tls 		  /* Don't print {%k0}.  */
   12616  1.1.1.1.8.1       tls 		  if (vex.mask_register_specifier)
   12617  1.1.1.1.8.1       tls 		    {
   12618  1.1.1.1.8.1       tls 		      oappend ("{");
   12619  1.1.1.1.8.1       tls 		      oappend (names_mask[vex.mask_register_specifier]);
   12620  1.1.1.1.8.1       tls 		      oappend ("}");
   12621  1.1.1.1.8.1       tls 		    }
   12622  1.1.1.1.8.1       tls 		  if (vex.zeroing)
   12623  1.1.1.1.8.1       tls 		    oappend ("{z}");
   12624  1.1.1.1.8.1       tls 		}
   12625          1.1  christos 	    }
   12626          1.1  christos 	}
   12627          1.1  christos     }
   12628          1.1  christos 
   12629          1.1  christos   /* See if any prefixes were not used.  If so, print the first one
   12630          1.1  christos      separately.  If we don't do this, we'll wind up printing an
   12631          1.1  christos      instruction stream which does not precisely correspond to the
   12632          1.1  christos      bytes we are disassembling.  */
   12633          1.1  christos   if ((prefixes & ~(used_prefixes | default_prefixes)) != 0)
   12634          1.1  christos     {
   12635          1.1  christos       for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++)
   12636          1.1  christos 	if (all_prefixes[i])
   12637          1.1  christos 	  {
   12638          1.1  christos 	    const char *name;
   12639          1.1  christos 	    name = prefix_name (all_prefixes[i], priv.orig_sizeflag);
   12640          1.1  christos 	    if (name == NULL)
   12641          1.1  christos 	      name = INTERNAL_DISASSEMBLER_ERROR;
   12642          1.1  christos 	    (*info->fprintf_func) (info->stream, "%s", name);
   12643          1.1  christos 	    return 1;
   12644          1.1  christos 	  }
   12645          1.1  christos     }
   12646          1.1  christos 
   12647          1.1  christos   /* Check if the REX prefix is used.  */
   12648  1.1.1.1.8.1       tls   if (rex_ignored == 0 && (rex ^ rex_used) == 0 && last_rex_prefix >= 0)
   12649          1.1  christos     all_prefixes[last_rex_prefix] = 0;
   12650          1.1  christos 
   12651          1.1  christos   /* Check if the SEG prefix is used.  */
   12652          1.1  christos   if ((prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS | PREFIX_ES
   12653          1.1  christos 		   | PREFIX_FS | PREFIX_GS)) != 0
   12654          1.1  christos       && (used_prefixes
   12655          1.1  christos 	  & seg_prefix (all_prefixes[last_seg_prefix])) != 0)
   12656          1.1  christos     all_prefixes[last_seg_prefix] = 0;
   12657          1.1  christos 
   12658          1.1  christos   /* Check if the ADDR prefix is used.  */
   12659          1.1  christos   if ((prefixes & PREFIX_ADDR) != 0
   12660          1.1  christos       && (used_prefixes & PREFIX_ADDR) != 0)
   12661          1.1  christos     all_prefixes[last_addr_prefix] = 0;
   12662          1.1  christos 
   12663          1.1  christos   /* Check if the DATA prefix is used.  */
   12664          1.1  christos   if ((prefixes & PREFIX_DATA) != 0
   12665          1.1  christos       && (used_prefixes & PREFIX_DATA) != 0)
   12666          1.1  christos     all_prefixes[last_data_prefix] = 0;
   12667          1.1  christos 
   12668          1.1  christos   prefix_length = 0;
   12669          1.1  christos   for (i = 0; i < (int) ARRAY_SIZE (all_prefixes); i++)
   12670          1.1  christos     if (all_prefixes[i])
   12671          1.1  christos       {
   12672          1.1  christos 	const char *name;
   12673          1.1  christos 	name = prefix_name (all_prefixes[i], sizeflag);
   12674          1.1  christos 	if (name == NULL)
   12675          1.1  christos 	  abort ();
   12676          1.1  christos 	prefix_length += strlen (name) + 1;
   12677          1.1  christos 	(*info->fprintf_func) (info->stream, "%s ", name);
   12678          1.1  christos       }
   12679          1.1  christos 
   12680          1.1  christos   /* Check maximum code length.  */
   12681          1.1  christos   if ((codep - start_codep) > MAX_CODE_LENGTH)
   12682          1.1  christos     {
   12683          1.1  christos       (*info->fprintf_func) (info->stream, "(bad)");
   12684          1.1  christos       return MAX_CODE_LENGTH;
   12685          1.1  christos     }
   12686          1.1  christos 
   12687          1.1  christos   obufp = mnemonicendp;
   12688          1.1  christos   for (i = strlen (obuf) + prefix_length; i < 6; i++)
   12689          1.1  christos     oappend (" ");
   12690          1.1  christos   oappend (" ");
   12691          1.1  christos   (*info->fprintf_func) (info->stream, "%s", obuf);
   12692          1.1  christos 
   12693          1.1  christos   /* The enter and bound instructions are printed with operands in the same
   12694          1.1  christos      order as the intel book; everything else is printed in reverse order.  */
   12695          1.1  christos   if (intel_syntax || two_source_ops)
   12696          1.1  christos     {
   12697          1.1  christos       bfd_vma riprel;
   12698          1.1  christos 
   12699          1.1  christos       for (i = 0; i < MAX_OPERANDS; ++i)
   12700  1.1.1.1.8.1       tls 	op_txt[i] = op_out[i];
   12701          1.1  christos 
   12702          1.1  christos       for (i = 0; i < (MAX_OPERANDS >> 1); ++i)
   12703          1.1  christos 	{
   12704  1.1.1.1.8.1       tls 	  op_ad = op_index[i];
   12705  1.1.1.1.8.1       tls 	  op_index[i] = op_index[MAX_OPERANDS - 1 - i];
   12706  1.1.1.1.8.1       tls 	  op_index[MAX_OPERANDS - 1 - i] = op_ad;
   12707          1.1  christos 	  riprel = op_riprel[i];
   12708          1.1  christos 	  op_riprel[i] = op_riprel [MAX_OPERANDS - 1 - i];
   12709          1.1  christos 	  op_riprel[MAX_OPERANDS - 1 - i] = riprel;
   12710          1.1  christos 	}
   12711          1.1  christos     }
   12712          1.1  christos   else
   12713          1.1  christos     {
   12714          1.1  christos       for (i = 0; i < MAX_OPERANDS; ++i)
   12715  1.1.1.1.8.1       tls 	op_txt[MAX_OPERANDS - 1 - i] = op_out[i];
   12716          1.1  christos     }
   12717          1.1  christos 
   12718          1.1  christos   needcomma = 0;
   12719          1.1  christos   for (i = 0; i < MAX_OPERANDS; ++i)
   12720          1.1  christos     if (*op_txt[i])
   12721          1.1  christos       {
   12722          1.1  christos 	if (needcomma)
   12723          1.1  christos 	  (*info->fprintf_func) (info->stream, ",");
   12724          1.1  christos 	if (op_index[i] != -1 && !op_riprel[i])
   12725          1.1  christos 	  (*info->print_address_func) ((bfd_vma) op_address[op_index[i]], info);
   12726          1.1  christos 	else
   12727          1.1  christos 	  (*info->fprintf_func) (info->stream, "%s", op_txt[i]);
   12728          1.1  christos 	needcomma = 1;
   12729          1.1  christos       }
   12730          1.1  christos 
   12731          1.1  christos   for (i = 0; i < MAX_OPERANDS; i++)
   12732          1.1  christos     if (op_index[i] != -1 && op_riprel[i])
   12733          1.1  christos       {
   12734          1.1  christos 	(*info->fprintf_func) (info->stream, "        # ");
   12735          1.1  christos 	(*info->print_address_func) ((bfd_vma) (start_pc + codep - start_codep
   12736          1.1  christos 						+ op_address[op_index[i]]), info);
   12737          1.1  christos 	break;
   12738          1.1  christos       }
   12739          1.1  christos   return codep - priv.the_buffer;
   12740          1.1  christos }
   12741          1.1  christos 
   12742          1.1  christos static const char *float_mem[] = {
   12743          1.1  christos   /* d8 */
   12744          1.1  christos   "fadd{s|}",
   12745          1.1  christos   "fmul{s|}",
   12746          1.1  christos   "fcom{s|}",
   12747          1.1  christos   "fcomp{s|}",
   12748          1.1  christos   "fsub{s|}",
   12749          1.1  christos   "fsubr{s|}",
   12750          1.1  christos   "fdiv{s|}",
   12751          1.1  christos   "fdivr{s|}",
   12752          1.1  christos   /* d9 */
   12753          1.1  christos   "fld{s|}",
   12754          1.1  christos   "(bad)",
   12755          1.1  christos   "fst{s|}",
   12756          1.1  christos   "fstp{s|}",
   12757          1.1  christos   "fldenvIC",
   12758          1.1  christos   "fldcw",
   12759          1.1  christos   "fNstenvIC",
   12760          1.1  christos   "fNstcw",
   12761          1.1  christos   /* da */
   12762          1.1  christos   "fiadd{l|}",
   12763          1.1  christos   "fimul{l|}",
   12764          1.1  christos   "ficom{l|}",
   12765          1.1  christos   "ficomp{l|}",
   12766          1.1  christos   "fisub{l|}",
   12767          1.1  christos   "fisubr{l|}",
   12768          1.1  christos   "fidiv{l|}",
   12769          1.1  christos   "fidivr{l|}",
   12770          1.1  christos   /* db */
   12771          1.1  christos   "fild{l|}",
   12772          1.1  christos   "fisttp{l|}",
   12773          1.1  christos   "fist{l|}",
   12774          1.1  christos   "fistp{l|}",
   12775          1.1  christos   "(bad)",
   12776          1.1  christos   "fld{t||t|}",
   12777          1.1  christos   "(bad)",
   12778          1.1  christos   "fstp{t||t|}",
   12779          1.1  christos   /* dc */
   12780          1.1  christos   "fadd{l|}",
   12781          1.1  christos   "fmul{l|}",
   12782          1.1  christos   "fcom{l|}",
   12783          1.1  christos   "fcomp{l|}",
   12784          1.1  christos   "fsub{l|}",
   12785          1.1  christos   "fsubr{l|}",
   12786          1.1  christos   "fdiv{l|}",
   12787          1.1  christos   "fdivr{l|}",
   12788          1.1  christos   /* dd */
   12789          1.1  christos   "fld{l|}",
   12790          1.1  christos   "fisttp{ll|}",
   12791          1.1  christos   "fst{l||}",
   12792          1.1  christos   "fstp{l|}",
   12793          1.1  christos   "frstorIC",
   12794          1.1  christos   "(bad)",
   12795          1.1  christos   "fNsaveIC",
   12796          1.1  christos   "fNstsw",
   12797          1.1  christos   /* de */
   12798          1.1  christos   "fiadd",
   12799          1.1  christos   "fimul",
   12800          1.1  christos   "ficom",
   12801          1.1  christos   "ficomp",
   12802          1.1  christos   "fisub",
   12803          1.1  christos   "fisubr",
   12804          1.1  christos   "fidiv",
   12805          1.1  christos   "fidivr",
   12806          1.1  christos   /* df */
   12807          1.1  christos   "fild",
   12808          1.1  christos   "fisttp",
   12809          1.1  christos   "fist",
   12810          1.1  christos   "fistp",
   12811          1.1  christos   "fbld",
   12812          1.1  christos   "fild{ll|}",
   12813          1.1  christos   "fbstp",
   12814          1.1  christos   "fistp{ll|}",
   12815          1.1  christos };
   12816          1.1  christos 
   12817          1.1  christos static const unsigned char float_mem_mode[] = {
   12818          1.1  christos   /* d8 */
   12819          1.1  christos   d_mode,
   12820          1.1  christos   d_mode,
   12821          1.1  christos   d_mode,
   12822          1.1  christos   d_mode,
   12823          1.1  christos   d_mode,
   12824          1.1  christos   d_mode,
   12825          1.1  christos   d_mode,
   12826          1.1  christos   d_mode,
   12827          1.1  christos   /* d9 */
   12828          1.1  christos   d_mode,
   12829          1.1  christos   0,
   12830          1.1  christos   d_mode,
   12831          1.1  christos   d_mode,
   12832          1.1  christos   0,
   12833          1.1  christos   w_mode,
   12834          1.1  christos   0,
   12835          1.1  christos   w_mode,
   12836          1.1  christos   /* da */
   12837          1.1  christos   d_mode,
   12838          1.1  christos   d_mode,
   12839          1.1  christos   d_mode,
   12840          1.1  christos   d_mode,
   12841          1.1  christos   d_mode,
   12842          1.1  christos   d_mode,
   12843          1.1  christos   d_mode,
   12844          1.1  christos   d_mode,
   12845          1.1  christos   /* db */
   12846          1.1  christos   d_mode,
   12847          1.1  christos   d_mode,
   12848          1.1  christos   d_mode,
   12849          1.1  christos   d_mode,
   12850          1.1  christos   0,
   12851          1.1  christos   t_mode,
   12852          1.1  christos   0,
   12853          1.1  christos   t_mode,
   12854          1.1  christos   /* dc */
   12855          1.1  christos   q_mode,
   12856          1.1  christos   q_mode,
   12857          1.1  christos   q_mode,
   12858          1.1  christos   q_mode,
   12859          1.1  christos   q_mode,
   12860          1.1  christos   q_mode,
   12861          1.1  christos   q_mode,
   12862          1.1  christos   q_mode,
   12863          1.1  christos   /* dd */
   12864          1.1  christos   q_mode,
   12865          1.1  christos   q_mode,
   12866          1.1  christos   q_mode,
   12867          1.1  christos   q_mode,
   12868          1.1  christos   0,
   12869          1.1  christos   0,
   12870          1.1  christos   0,
   12871          1.1  christos   w_mode,
   12872          1.1  christos   /* de */
   12873          1.1  christos   w_mode,
   12874          1.1  christos   w_mode,
   12875          1.1  christos   w_mode,
   12876          1.1  christos   w_mode,
   12877          1.1  christos   w_mode,
   12878          1.1  christos   w_mode,
   12879          1.1  christos   w_mode,
   12880          1.1  christos   w_mode,
   12881          1.1  christos   /* df */
   12882          1.1  christos   w_mode,
   12883          1.1  christos   w_mode,
   12884          1.1  christos   w_mode,
   12885          1.1  christos   w_mode,
   12886          1.1  christos   t_mode,
   12887          1.1  christos   q_mode,
   12888          1.1  christos   t_mode,
   12889          1.1  christos   q_mode
   12890          1.1  christos };
   12891          1.1  christos 
   12892          1.1  christos #define ST { OP_ST, 0 }
   12893          1.1  christos #define STi { OP_STi, 0 }
   12894          1.1  christos 
   12895          1.1  christos #define FGRPd9_2 NULL, { { NULL, 0 } }
   12896          1.1  christos #define FGRPd9_4 NULL, { { NULL, 1 } }
   12897          1.1  christos #define FGRPd9_5 NULL, { { NULL, 2 } }
   12898          1.1  christos #define FGRPd9_6 NULL, { { NULL, 3 } }
   12899          1.1  christos #define FGRPd9_7 NULL, { { NULL, 4 } }
   12900          1.1  christos #define FGRPda_5 NULL, { { NULL, 5 } }
   12901          1.1  christos #define FGRPdb_4 NULL, { { NULL, 6 } }
   12902          1.1  christos #define FGRPde_3 NULL, { { NULL, 7 } }
   12903          1.1  christos #define FGRPdf_4 NULL, { { NULL, 8 } }
   12904          1.1  christos 
   12905          1.1  christos static const struct dis386 float_reg[][8] = {
   12906          1.1  christos   /* d8 */
   12907          1.1  christos   {
   12908          1.1  christos     { "fadd",	{ ST, STi } },
   12909          1.1  christos     { "fmul",	{ ST, STi } },
   12910          1.1  christos     { "fcom",	{ STi } },
   12911          1.1  christos     { "fcomp",	{ STi } },
   12912          1.1  christos     { "fsub",	{ ST, STi } },
   12913          1.1  christos     { "fsubr",	{ ST, STi } },
   12914          1.1  christos     { "fdiv",	{ ST, STi } },
   12915          1.1  christos     { "fdivr",	{ ST, STi } },
   12916          1.1  christos   },
   12917          1.1  christos   /* d9 */
   12918          1.1  christos   {
   12919          1.1  christos     { "fld",	{ STi } },
   12920          1.1  christos     { "fxch",	{ STi } },
   12921          1.1  christos     { FGRPd9_2 },
   12922          1.1  christos     { Bad_Opcode },
   12923          1.1  christos     { FGRPd9_4 },
   12924          1.1  christos     { FGRPd9_5 },
   12925          1.1  christos     { FGRPd9_6 },
   12926          1.1  christos     { FGRPd9_7 },
   12927          1.1  christos   },
   12928          1.1  christos   /* da */
   12929          1.1  christos   {
   12930          1.1  christos     { "fcmovb",	{ ST, STi } },
   12931          1.1  christos     { "fcmove",	{ ST, STi } },
   12932          1.1  christos     { "fcmovbe",{ ST, STi } },
   12933          1.1  christos     { "fcmovu",	{ ST, STi } },
   12934          1.1  christos     { Bad_Opcode },
   12935          1.1  christos     { FGRPda_5 },
   12936          1.1  christos     { Bad_Opcode },
   12937          1.1  christos     { Bad_Opcode },
   12938          1.1  christos   },
   12939          1.1  christos   /* db */
   12940          1.1  christos   {
   12941          1.1  christos     { "fcmovnb",{ ST, STi } },
   12942          1.1  christos     { "fcmovne",{ ST, STi } },
   12943          1.1  christos     { "fcmovnbe",{ ST, STi } },
   12944          1.1  christos     { "fcmovnu",{ ST, STi } },
   12945          1.1  christos     { FGRPdb_4 },
   12946          1.1  christos     { "fucomi",	{ ST, STi } },
   12947          1.1  christos     { "fcomi",	{ ST, STi } },
   12948          1.1  christos     { Bad_Opcode },
   12949          1.1  christos   },
   12950          1.1  christos   /* dc */
   12951          1.1  christos   {
   12952          1.1  christos     { "fadd",	{ STi, ST } },
   12953          1.1  christos     { "fmul",	{ STi, ST } },
   12954          1.1  christos     { Bad_Opcode },
   12955          1.1  christos     { Bad_Opcode },
   12956          1.1  christos     { "fsub!M",	{ STi, ST } },
   12957          1.1  christos     { "fsubM",	{ STi, ST } },
   12958          1.1  christos     { "fdiv!M",	{ STi, ST } },
   12959          1.1  christos     { "fdivM",	{ STi, ST } },
   12960          1.1  christos   },
   12961          1.1  christos   /* dd */
   12962          1.1  christos   {
   12963          1.1  christos     { "ffree",	{ STi } },
   12964          1.1  christos     { Bad_Opcode },
   12965          1.1  christos     { "fst",	{ STi } },
   12966          1.1  christos     { "fstp",	{ STi } },
   12967          1.1  christos     { "fucom",	{ STi } },
   12968          1.1  christos     { "fucomp",	{ STi } },
   12969          1.1  christos     { Bad_Opcode },
   12970          1.1  christos     { Bad_Opcode },
   12971          1.1  christos   },
   12972          1.1  christos   /* de */
   12973          1.1  christos   {
   12974          1.1  christos     { "faddp",	{ STi, ST } },
   12975          1.1  christos     { "fmulp",	{ STi, ST } },
   12976          1.1  christos     { Bad_Opcode },
   12977          1.1  christos     { FGRPde_3 },
   12978          1.1  christos     { "fsub!Mp", { STi, ST } },
   12979          1.1  christos     { "fsubMp",	{ STi, ST } },
   12980          1.1  christos     { "fdiv!Mp", { STi, ST } },
   12981          1.1  christos     { "fdivMp",	{ STi, ST } },
   12982          1.1  christos   },
   12983          1.1  christos   /* df */
   12984          1.1  christos   {
   12985          1.1  christos     { "ffreep",	{ STi } },
   12986          1.1  christos     { Bad_Opcode },
   12987          1.1  christos     { Bad_Opcode },
   12988          1.1  christos     { Bad_Opcode },
   12989          1.1  christos     { FGRPdf_4 },
   12990          1.1  christos     { "fucomip", { ST, STi } },
   12991          1.1  christos     { "fcomip", { ST, STi } },
   12992          1.1  christos     { Bad_Opcode },
   12993          1.1  christos   },
   12994          1.1  christos };
   12995          1.1  christos 
   12996          1.1  christos static char *fgrps[][8] = {
   12997          1.1  christos   /* d9_2  0 */
   12998          1.1  christos   {
   12999          1.1  christos     "fnop","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
   13000          1.1  christos   },
   13001          1.1  christos 
   13002          1.1  christos   /* d9_4  1 */
   13003          1.1  christos   {
   13004          1.1  christos     "fchs","fabs","(bad)","(bad)","ftst","fxam","(bad)","(bad)",
   13005          1.1  christos   },
   13006          1.1  christos 
   13007          1.1  christos   /* d9_5  2 */
   13008          1.1  christos   {
   13009          1.1  christos     "fld1","fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz","(bad)",
   13010          1.1  christos   },
   13011          1.1  christos 
   13012          1.1  christos   /* d9_6  3 */
   13013          1.1  christos   {
   13014          1.1  christos     "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp","fincstp",
   13015          1.1  christos   },
   13016          1.1  christos 
   13017          1.1  christos   /* d9_7  4 */
   13018          1.1  christos   {
   13019          1.1  christos     "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos",
   13020          1.1  christos   },
   13021          1.1  christos 
   13022          1.1  christos   /* da_5  5 */
   13023          1.1  christos   {
   13024          1.1  christos     "(bad)","fucompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
   13025          1.1  christos   },
   13026          1.1  christos 
   13027          1.1  christos   /* db_4  6 */
   13028          1.1  christos   {
   13029          1.1  christos     "fNeni(8087 only)","fNdisi(8087 only)","fNclex","fNinit",
   13030          1.1  christos     "fNsetpm(287 only)","frstpm(287 only)","(bad)","(bad)",
   13031          1.1  christos   },
   13032          1.1  christos 
   13033          1.1  christos   /* de_3  7 */
   13034          1.1  christos   {
   13035          1.1  christos     "(bad)","fcompp","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
   13036          1.1  christos   },
   13037          1.1  christos 
   13038          1.1  christos   /* df_4  8 */
   13039          1.1  christos   {
   13040          1.1  christos     "fNstsw","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)","(bad)",
   13041          1.1  christos   },
   13042          1.1  christos };
   13043          1.1  christos 
   13044          1.1  christos static void
   13045          1.1  christos swap_operand (void)
   13046          1.1  christos {
   13047          1.1  christos   mnemonicendp[0] = '.';
   13048          1.1  christos   mnemonicendp[1] = 's';
   13049          1.1  christos   mnemonicendp += 2;
   13050          1.1  christos }
   13051          1.1  christos 
   13052          1.1  christos static void
   13053          1.1  christos OP_Skip_MODRM (int bytemode ATTRIBUTE_UNUSED,
   13054          1.1  christos 	       int sizeflag ATTRIBUTE_UNUSED)
   13055          1.1  christos {
   13056          1.1  christos   /* Skip mod/rm byte.  */
   13057          1.1  christos   MODRM_CHECK;
   13058          1.1  christos   codep++;
   13059          1.1  christos }
   13060          1.1  christos 
   13061          1.1  christos static void
   13062          1.1  christos dofloat (int sizeflag)
   13063          1.1  christos {
   13064          1.1  christos   const struct dis386 *dp;
   13065          1.1  christos   unsigned char floatop;
   13066          1.1  christos 
   13067          1.1  christos   floatop = codep[-1];
   13068          1.1  christos 
   13069          1.1  christos   if (modrm.mod != 3)
   13070          1.1  christos     {
   13071          1.1  christos       int fp_indx = (floatop - 0xd8) * 8 + modrm.reg;
   13072          1.1  christos 
   13073          1.1  christos       putop (float_mem[fp_indx], sizeflag);
   13074          1.1  christos       obufp = op_out[0];
   13075          1.1  christos       op_ad = 2;
   13076          1.1  christos       OP_E (float_mem_mode[fp_indx], sizeflag);
   13077          1.1  christos       return;
   13078          1.1  christos     }
   13079          1.1  christos   /* Skip mod/rm byte.  */
   13080          1.1  christos   MODRM_CHECK;
   13081          1.1  christos   codep++;
   13082          1.1  christos 
   13083          1.1  christos   dp = &float_reg[floatop - 0xd8][modrm.reg];
   13084          1.1  christos   if (dp->name == NULL)
   13085          1.1  christos     {
   13086          1.1  christos       putop (fgrps[dp->op[0].bytemode][modrm.rm], sizeflag);
   13087          1.1  christos 
   13088          1.1  christos       /* Instruction fnstsw is only one with strange arg.  */
   13089          1.1  christos       if (floatop == 0xdf && codep[-1] == 0xe0)
   13090          1.1  christos 	strcpy (op_out[0], names16[0]);
   13091          1.1  christos     }
   13092          1.1  christos   else
   13093          1.1  christos     {
   13094          1.1  christos       putop (dp->name, sizeflag);
   13095          1.1  christos 
   13096          1.1  christos       obufp = op_out[0];
   13097          1.1  christos       op_ad = 2;
   13098          1.1  christos       if (dp->op[0].rtn)
   13099          1.1  christos 	(*dp->op[0].rtn) (dp->op[0].bytemode, sizeflag);
   13100          1.1  christos 
   13101          1.1  christos       obufp = op_out[1];
   13102          1.1  christos       op_ad = 1;
   13103          1.1  christos       if (dp->op[1].rtn)
   13104          1.1  christos 	(*dp->op[1].rtn) (dp->op[1].bytemode, sizeflag);
   13105          1.1  christos     }
   13106          1.1  christos }
   13107          1.1  christos 
   13108  1.1.1.1.8.1       tls /* Like oappend (below), but S is a string starting with '%'.
   13109  1.1.1.1.8.1       tls    In Intel syntax, the '%' is elided.  */
   13110  1.1.1.1.8.1       tls static void
   13111  1.1.1.1.8.1       tls oappend_maybe_intel (const char *s)
   13112  1.1.1.1.8.1       tls {
   13113  1.1.1.1.8.1       tls   oappend (s + intel_syntax);
   13114  1.1.1.1.8.1       tls }
   13115  1.1.1.1.8.1       tls 
   13116          1.1  christos static void
   13117          1.1  christos OP_ST (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   13118          1.1  christos {
   13119  1.1.1.1.8.1       tls   oappend_maybe_intel ("%st");
   13120          1.1  christos }
   13121          1.1  christos 
   13122          1.1  christos static void
   13123          1.1  christos OP_STi (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   13124          1.1  christos {
   13125          1.1  christos   sprintf (scratchbuf, "%%st(%d)", modrm.rm);
   13126  1.1.1.1.8.1       tls   oappend_maybe_intel (scratchbuf);
   13127          1.1  christos }
   13128          1.1  christos 
   13129          1.1  christos /* Capital letters in template are macros.  */
   13130          1.1  christos static int
   13131          1.1  christos putop (const char *in_template, int sizeflag)
   13132          1.1  christos {
   13133          1.1  christos   const char *p;
   13134          1.1  christos   int alt = 0;
   13135          1.1  christos   int cond = 1;
   13136          1.1  christos   unsigned int l = 0, len = 1;
   13137          1.1  christos   char last[4];
   13138          1.1  christos 
   13139          1.1  christos #define SAVE_LAST(c)			\
   13140          1.1  christos   if (l < len && l < sizeof (last))	\
   13141          1.1  christos     last[l++] = c;			\
   13142          1.1  christos   else					\
   13143          1.1  christos     abort ();
   13144          1.1  christos 
   13145          1.1  christos   for (p = in_template; *p; p++)
   13146          1.1  christos     {
   13147          1.1  christos       switch (*p)
   13148          1.1  christos 	{
   13149          1.1  christos 	default:
   13150          1.1  christos 	  *obufp++ = *p;
   13151          1.1  christos 	  break;
   13152          1.1  christos 	case '%':
   13153          1.1  christos 	  len++;
   13154          1.1  christos 	  break;
   13155          1.1  christos 	case '!':
   13156          1.1  christos 	  cond = 0;
   13157          1.1  christos 	  break;
   13158          1.1  christos 	case '{':
   13159          1.1  christos 	  alt = 0;
   13160          1.1  christos 	  if (intel_syntax)
   13161          1.1  christos 	    {
   13162          1.1  christos 	      while (*++p != '|')
   13163          1.1  christos 		if (*p == '}' || *p == '\0')
   13164          1.1  christos 		  abort ();
   13165          1.1  christos 	    }
   13166          1.1  christos 	  /* Fall through.  */
   13167          1.1  christos 	case 'I':
   13168          1.1  christos 	  alt = 1;
   13169          1.1  christos 	  continue;
   13170          1.1  christos 	case '|':
   13171          1.1  christos 	  while (*++p != '}')
   13172          1.1  christos 	    {
   13173          1.1  christos 	      if (*p == '\0')
   13174          1.1  christos 		abort ();
   13175          1.1  christos 	    }
   13176          1.1  christos 	  break;
   13177          1.1  christos 	case '}':
   13178          1.1  christos 	  break;
   13179          1.1  christos 	case 'A':
   13180          1.1  christos 	  if (intel_syntax)
   13181          1.1  christos 	    break;
   13182          1.1  christos 	  if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
   13183          1.1  christos 	    *obufp++ = 'b';
   13184          1.1  christos 	  break;
   13185          1.1  christos 	case 'B':
   13186          1.1  christos 	  if (l == 0 && len == 1)
   13187          1.1  christos 	    {
   13188          1.1  christos case_B:
   13189          1.1  christos 	      if (intel_syntax)
   13190          1.1  christos 		break;
   13191          1.1  christos 	      if (sizeflag & SUFFIX_ALWAYS)
   13192          1.1  christos 		*obufp++ = 'b';
   13193          1.1  christos 	    }
   13194          1.1  christos 	  else
   13195          1.1  christos 	    {
   13196          1.1  christos 	      if (l != 1
   13197          1.1  christos 		  || len != 2
   13198          1.1  christos 		  || last[0] != 'L')
   13199          1.1  christos 		{
   13200          1.1  christos 		  SAVE_LAST (*p);
   13201          1.1  christos 		  break;
   13202          1.1  christos 		}
   13203          1.1  christos 
   13204          1.1  christos 	      if (address_mode == mode_64bit
   13205          1.1  christos 		  && !(prefixes & PREFIX_ADDR))
   13206          1.1  christos 		{
   13207          1.1  christos 		  *obufp++ = 'a';
   13208          1.1  christos 		  *obufp++ = 'b';
   13209          1.1  christos 		  *obufp++ = 's';
   13210          1.1  christos 		}
   13211          1.1  christos 
   13212          1.1  christos 	      goto case_B;
   13213          1.1  christos 	    }
   13214          1.1  christos 	  break;
   13215          1.1  christos 	case 'C':
   13216          1.1  christos 	  if (intel_syntax && !alt)
   13217          1.1  christos 	    break;
   13218          1.1  christos 	  if ((prefixes & PREFIX_DATA) || (sizeflag & SUFFIX_ALWAYS))
   13219          1.1  christos 	    {
   13220          1.1  christos 	      if (sizeflag & DFLAG)
   13221          1.1  christos 		*obufp++ = intel_syntax ? 'd' : 'l';
   13222          1.1  christos 	      else
   13223          1.1  christos 		*obufp++ = intel_syntax ? 'w' : 's';
   13224          1.1  christos 	      used_prefixes |= (prefixes & PREFIX_DATA);
   13225          1.1  christos 	    }
   13226          1.1  christos 	  break;
   13227          1.1  christos 	case 'D':
   13228          1.1  christos 	  if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
   13229          1.1  christos 	    break;
   13230          1.1  christos 	  USED_REX (REX_W);
   13231          1.1  christos 	  if (modrm.mod == 3)
   13232          1.1  christos 	    {
   13233          1.1  christos 	      if (rex & REX_W)
   13234          1.1  christos 		*obufp++ = 'q';
   13235          1.1  christos 	      else
   13236          1.1  christos 		{
   13237          1.1  christos 		  if (sizeflag & DFLAG)
   13238          1.1  christos 		    *obufp++ = intel_syntax ? 'd' : 'l';
   13239          1.1  christos 		  else
   13240          1.1  christos 		    *obufp++ = 'w';
   13241          1.1  christos 		  used_prefixes |= (prefixes & PREFIX_DATA);
   13242          1.1  christos 		}
   13243          1.1  christos 	    }
   13244          1.1  christos 	  else
   13245          1.1  christos 	    *obufp++ = 'w';
   13246          1.1  christos 	  break;
   13247          1.1  christos 	case 'E':		/* For jcxz/jecxz */
   13248          1.1  christos 	  if (address_mode == mode_64bit)
   13249          1.1  christos 	    {
   13250          1.1  christos 	      if (sizeflag & AFLAG)
   13251          1.1  christos 		*obufp++ = 'r';
   13252          1.1  christos 	      else
   13253          1.1  christos 		*obufp++ = 'e';
   13254          1.1  christos 	    }
   13255          1.1  christos 	  else
   13256          1.1  christos 	    if (sizeflag & AFLAG)
   13257          1.1  christos 	      *obufp++ = 'e';
   13258          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_ADDR);
   13259          1.1  christos 	  break;
   13260          1.1  christos 	case 'F':
   13261          1.1  christos 	  if (intel_syntax)
   13262          1.1  christos 	    break;
   13263          1.1  christos 	  if ((prefixes & PREFIX_ADDR) || (sizeflag & SUFFIX_ALWAYS))
   13264          1.1  christos 	    {
   13265          1.1  christos 	      if (sizeflag & AFLAG)
   13266          1.1  christos 		*obufp++ = address_mode == mode_64bit ? 'q' : 'l';
   13267          1.1  christos 	      else
   13268          1.1  christos 		*obufp++ = address_mode == mode_64bit ? 'l' : 'w';
   13269          1.1  christos 	      used_prefixes |= (prefixes & PREFIX_ADDR);
   13270          1.1  christos 	    }
   13271          1.1  christos 	  break;
   13272          1.1  christos 	case 'G':
   13273          1.1  christos 	  if (intel_syntax || (obufp[-1] != 's' && !(sizeflag & SUFFIX_ALWAYS)))
   13274          1.1  christos 	    break;
   13275          1.1  christos 	  if ((rex & REX_W) || (sizeflag & DFLAG))
   13276          1.1  christos 	    *obufp++ = 'l';
   13277          1.1  christos 	  else
   13278          1.1  christos 	    *obufp++ = 'w';
   13279          1.1  christos 	  if (!(rex & REX_W))
   13280          1.1  christos 	    used_prefixes |= (prefixes & PREFIX_DATA);
   13281          1.1  christos 	  break;
   13282          1.1  christos 	case 'H':
   13283          1.1  christos 	  if (intel_syntax)
   13284          1.1  christos 	    break;
   13285          1.1  christos 	  if ((prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_CS
   13286          1.1  christos 	      || (prefixes & (PREFIX_CS | PREFIX_DS)) == PREFIX_DS)
   13287          1.1  christos 	    {
   13288          1.1  christos 	      used_prefixes |= prefixes & (PREFIX_CS | PREFIX_DS);
   13289          1.1  christos 	      *obufp++ = ',';
   13290          1.1  christos 	      *obufp++ = 'p';
   13291          1.1  christos 	      if (prefixes & PREFIX_DS)
   13292          1.1  christos 		*obufp++ = 't';
   13293          1.1  christos 	      else
   13294          1.1  christos 		*obufp++ = 'n';
   13295          1.1  christos 	    }
   13296          1.1  christos 	  break;
   13297          1.1  christos 	case 'J':
   13298          1.1  christos 	  if (intel_syntax)
   13299          1.1  christos 	    break;
   13300          1.1  christos 	  *obufp++ = 'l';
   13301          1.1  christos 	  break;
   13302          1.1  christos 	case 'K':
   13303          1.1  christos 	  USED_REX (REX_W);
   13304          1.1  christos 	  if (rex & REX_W)
   13305          1.1  christos 	    *obufp++ = 'q';
   13306          1.1  christos 	  else
   13307          1.1  christos 	    *obufp++ = 'd';
   13308          1.1  christos 	  break;
   13309          1.1  christos 	case 'Z':
   13310          1.1  christos 	  if (intel_syntax)
   13311          1.1  christos 	    break;
   13312          1.1  christos 	  if (address_mode == mode_64bit && (sizeflag & SUFFIX_ALWAYS))
   13313          1.1  christos 	    {
   13314          1.1  christos 	      *obufp++ = 'q';
   13315          1.1  christos 	      break;
   13316          1.1  christos 	    }
   13317          1.1  christos 	  /* Fall through.  */
   13318          1.1  christos 	  goto case_L;
   13319          1.1  christos 	case 'L':
   13320          1.1  christos 	  if (l != 0 || len != 1)
   13321          1.1  christos 	    {
   13322          1.1  christos 	      SAVE_LAST (*p);
   13323          1.1  christos 	      break;
   13324          1.1  christos 	    }
   13325          1.1  christos case_L:
   13326          1.1  christos 	  if (intel_syntax)
   13327          1.1  christos 	    break;
   13328          1.1  christos 	  if (sizeflag & SUFFIX_ALWAYS)
   13329          1.1  christos 	    *obufp++ = 'l';
   13330          1.1  christos 	  break;
   13331          1.1  christos 	case 'M':
   13332          1.1  christos 	  if (intel_mnemonic != cond)
   13333          1.1  christos 	    *obufp++ = 'r';
   13334          1.1  christos 	  break;
   13335          1.1  christos 	case 'N':
   13336          1.1  christos 	  if ((prefixes & PREFIX_FWAIT) == 0)
   13337          1.1  christos 	    *obufp++ = 'n';
   13338          1.1  christos 	  else
   13339          1.1  christos 	    used_prefixes |= PREFIX_FWAIT;
   13340          1.1  christos 	  break;
   13341          1.1  christos 	case 'O':
   13342          1.1  christos 	  USED_REX (REX_W);
   13343          1.1  christos 	  if (rex & REX_W)
   13344          1.1  christos 	    *obufp++ = 'o';
   13345          1.1  christos 	  else if (intel_syntax && (sizeflag & DFLAG))
   13346          1.1  christos 	    *obufp++ = 'q';
   13347          1.1  christos 	  else
   13348          1.1  christos 	    *obufp++ = 'd';
   13349          1.1  christos 	  if (!(rex & REX_W))
   13350          1.1  christos 	    used_prefixes |= (prefixes & PREFIX_DATA);
   13351          1.1  christos 	  break;
   13352          1.1  christos 	case 'T':
   13353          1.1  christos 	  if (!intel_syntax
   13354          1.1  christos 	      && address_mode == mode_64bit
   13355  1.1.1.1.8.1       tls 	      && ((sizeflag & DFLAG) || (rex & REX_W)))
   13356          1.1  christos 	    {
   13357          1.1  christos 	      *obufp++ = 'q';
   13358          1.1  christos 	      break;
   13359          1.1  christos 	    }
   13360          1.1  christos 	  /* Fall through.  */
   13361          1.1  christos 	case 'P':
   13362          1.1  christos 	  if (intel_syntax)
   13363          1.1  christos 	    {
   13364          1.1  christos 	      if ((rex & REX_W) == 0
   13365          1.1  christos 		  && (prefixes & PREFIX_DATA))
   13366          1.1  christos 		{
   13367          1.1  christos 		  if ((sizeflag & DFLAG) == 0)
   13368          1.1  christos 		    *obufp++ = 'w';
   13369          1.1  christos 		   used_prefixes |= (prefixes & PREFIX_DATA);
   13370          1.1  christos 		}
   13371          1.1  christos 	      break;
   13372          1.1  christos 	    }
   13373          1.1  christos 	  if ((prefixes & PREFIX_DATA)
   13374          1.1  christos 	      || (rex & REX_W)
   13375          1.1  christos 	      || (sizeflag & SUFFIX_ALWAYS))
   13376          1.1  christos 	    {
   13377          1.1  christos 	      USED_REX (REX_W);
   13378          1.1  christos 	      if (rex & REX_W)
   13379          1.1  christos 		*obufp++ = 'q';
   13380          1.1  christos 	      else
   13381          1.1  christos 		{
   13382          1.1  christos 		   if (sizeflag & DFLAG)
   13383          1.1  christos 		      *obufp++ = 'l';
   13384          1.1  christos 		   else
   13385          1.1  christos 		     *obufp++ = 'w';
   13386          1.1  christos 		   used_prefixes |= (prefixes & PREFIX_DATA);
   13387          1.1  christos 		}
   13388          1.1  christos 	    }
   13389          1.1  christos 	  break;
   13390          1.1  christos 	case 'U':
   13391          1.1  christos 	  if (intel_syntax)
   13392          1.1  christos 	    break;
   13393  1.1.1.1.8.1       tls 	  if (address_mode == mode_64bit
   13394  1.1.1.1.8.1       tls 	      && ((sizeflag & DFLAG) || (rex & REX_W)))
   13395          1.1  christos 	    {
   13396          1.1  christos 	      if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
   13397          1.1  christos 		*obufp++ = 'q';
   13398          1.1  christos 	      break;
   13399          1.1  christos 	    }
   13400          1.1  christos 	  /* Fall through.  */
   13401          1.1  christos 	  goto case_Q;
   13402          1.1  christos 	case 'Q':
   13403          1.1  christos 	  if (l == 0 && len == 1)
   13404          1.1  christos 	    {
   13405          1.1  christos case_Q:
   13406          1.1  christos 	      if (intel_syntax && !alt)
   13407          1.1  christos 		break;
   13408          1.1  christos 	      USED_REX (REX_W);
   13409          1.1  christos 	      if (modrm.mod != 3 || (sizeflag & SUFFIX_ALWAYS))
   13410          1.1  christos 		{
   13411          1.1  christos 		  if (rex & REX_W)
   13412          1.1  christos 		    *obufp++ = 'q';
   13413          1.1  christos 		  else
   13414          1.1  christos 		    {
   13415          1.1  christos 		      if (sizeflag & DFLAG)
   13416          1.1  christos 			*obufp++ = intel_syntax ? 'd' : 'l';
   13417          1.1  christos 		      else
   13418          1.1  christos 			*obufp++ = 'w';
   13419          1.1  christos 		      used_prefixes |= (prefixes & PREFIX_DATA);
   13420          1.1  christos 		    }
   13421          1.1  christos 		}
   13422          1.1  christos 	    }
   13423          1.1  christos 	  else
   13424          1.1  christos 	    {
   13425          1.1  christos 	      if (l != 1 || len != 2 || last[0] != 'L')
   13426          1.1  christos 		{
   13427          1.1  christos 		  SAVE_LAST (*p);
   13428          1.1  christos 		  break;
   13429          1.1  christos 		}
   13430          1.1  christos 	      if (intel_syntax
   13431          1.1  christos 		  || (modrm.mod == 3 && !(sizeflag & SUFFIX_ALWAYS)))
   13432          1.1  christos 		break;
   13433          1.1  christos 	      if ((rex & REX_W))
   13434          1.1  christos 		{
   13435          1.1  christos 		  USED_REX (REX_W);
   13436          1.1  christos 		  *obufp++ = 'q';
   13437          1.1  christos 		}
   13438          1.1  christos 	      else
   13439          1.1  christos 		*obufp++ = 'l';
   13440          1.1  christos 	    }
   13441          1.1  christos 	  break;
   13442          1.1  christos 	case 'R':
   13443          1.1  christos 	  USED_REX (REX_W);
   13444          1.1  christos 	  if (rex & REX_W)
   13445          1.1  christos 	    *obufp++ = 'q';
   13446          1.1  christos 	  else if (sizeflag & DFLAG)
   13447          1.1  christos 	    {
   13448          1.1  christos 	      if (intel_syntax)
   13449          1.1  christos 		  *obufp++ = 'd';
   13450          1.1  christos 	      else
   13451          1.1  christos 		  *obufp++ = 'l';
   13452          1.1  christos 	    }
   13453          1.1  christos 	  else
   13454          1.1  christos 	    *obufp++ = 'w';
   13455          1.1  christos 	  if (intel_syntax && !p[1]
   13456          1.1  christos 	      && ((rex & REX_W) || (sizeflag & DFLAG)))
   13457          1.1  christos 	    *obufp++ = 'e';
   13458          1.1  christos 	  if (!(rex & REX_W))
   13459          1.1  christos 	    used_prefixes |= (prefixes & PREFIX_DATA);
   13460          1.1  christos 	  break;
   13461          1.1  christos 	case 'V':
   13462          1.1  christos 	  if (l == 0 && len == 1)
   13463          1.1  christos 	    {
   13464          1.1  christos 	      if (intel_syntax)
   13465          1.1  christos 		break;
   13466  1.1.1.1.8.1       tls 	      if (address_mode == mode_64bit
   13467  1.1.1.1.8.1       tls 		  && ((sizeflag & DFLAG) || (rex & REX_W)))
   13468          1.1  christos 		{
   13469          1.1  christos 		  if (sizeflag & SUFFIX_ALWAYS)
   13470          1.1  christos 		    *obufp++ = 'q';
   13471          1.1  christos 		  break;
   13472          1.1  christos 		}
   13473          1.1  christos 	    }
   13474          1.1  christos 	  else
   13475          1.1  christos 	    {
   13476          1.1  christos 	      if (l != 1
   13477          1.1  christos 		  || len != 2
   13478          1.1  christos 		  || last[0] != 'L')
   13479          1.1  christos 		{
   13480          1.1  christos 		  SAVE_LAST (*p);
   13481          1.1  christos 		  break;
   13482          1.1  christos 		}
   13483          1.1  christos 
   13484          1.1  christos 	      if (rex & REX_W)
   13485          1.1  christos 		{
   13486          1.1  christos 		  *obufp++ = 'a';
   13487          1.1  christos 		  *obufp++ = 'b';
   13488          1.1  christos 		  *obufp++ = 's';
   13489          1.1  christos 		}
   13490          1.1  christos 	    }
   13491          1.1  christos 	  /* Fall through.  */
   13492          1.1  christos 	  goto case_S;
   13493          1.1  christos 	case 'S':
   13494          1.1  christos 	  if (l == 0 && len == 1)
   13495          1.1  christos 	    {
   13496          1.1  christos case_S:
   13497          1.1  christos 	      if (intel_syntax)
   13498          1.1  christos 		break;
   13499          1.1  christos 	      if (sizeflag & SUFFIX_ALWAYS)
   13500          1.1  christos 		{
   13501          1.1  christos 		  if (rex & REX_W)
   13502          1.1  christos 		    *obufp++ = 'q';
   13503          1.1  christos 		  else
   13504          1.1  christos 		    {
   13505          1.1  christos 		      if (sizeflag & DFLAG)
   13506          1.1  christos 			*obufp++ = 'l';
   13507          1.1  christos 		      else
   13508          1.1  christos 			*obufp++ = 'w';
   13509          1.1  christos 		      used_prefixes |= (prefixes & PREFIX_DATA);
   13510          1.1  christos 		    }
   13511          1.1  christos 		}
   13512          1.1  christos 	    }
   13513          1.1  christos 	  else
   13514          1.1  christos 	    {
   13515          1.1  christos 	      if (l != 1
   13516          1.1  christos 		  || len != 2
   13517          1.1  christos 		  || last[0] != 'L')
   13518          1.1  christos 		{
   13519          1.1  christos 		  SAVE_LAST (*p);
   13520          1.1  christos 		  break;
   13521          1.1  christos 		}
   13522          1.1  christos 
   13523          1.1  christos 	      if (address_mode == mode_64bit
   13524          1.1  christos 		  && !(prefixes & PREFIX_ADDR))
   13525          1.1  christos 		{
   13526          1.1  christos 		  *obufp++ = 'a';
   13527          1.1  christos 		  *obufp++ = 'b';
   13528          1.1  christos 		  *obufp++ = 's';
   13529          1.1  christos 		}
   13530          1.1  christos 
   13531          1.1  christos 	      goto case_S;
   13532          1.1  christos 	    }
   13533          1.1  christos 	  break;
   13534          1.1  christos 	case 'X':
   13535          1.1  christos 	  if (l != 0 || len != 1)
   13536          1.1  christos 	    {
   13537          1.1  christos 	      SAVE_LAST (*p);
   13538          1.1  christos 	      break;
   13539          1.1  christos 	    }
   13540          1.1  christos 	  if (need_vex && vex.prefix)
   13541          1.1  christos 	    {
   13542          1.1  christos 	      if (vex.prefix == DATA_PREFIX_OPCODE)
   13543          1.1  christos 		*obufp++ = 'd';
   13544          1.1  christos 	      else
   13545          1.1  christos 		*obufp++ = 's';
   13546          1.1  christos 	    }
   13547          1.1  christos 	  else
   13548          1.1  christos 	    {
   13549          1.1  christos 	      if (prefixes & PREFIX_DATA)
   13550          1.1  christos 		*obufp++ = 'd';
   13551          1.1  christos 	      else
   13552          1.1  christos 		*obufp++ = 's';
   13553          1.1  christos 	      used_prefixes |= (prefixes & PREFIX_DATA);
   13554          1.1  christos 	    }
   13555          1.1  christos 	  break;
   13556          1.1  christos 	case 'Y':
   13557          1.1  christos 	  if (l == 0 && len == 1)
   13558          1.1  christos 	    {
   13559          1.1  christos 	      if (intel_syntax || !(sizeflag & SUFFIX_ALWAYS))
   13560          1.1  christos 		break;
   13561          1.1  christos 	      if (rex & REX_W)
   13562          1.1  christos 		{
   13563          1.1  christos 		  USED_REX (REX_W);
   13564          1.1  christos 		  *obufp++ = 'q';
   13565          1.1  christos 		}
   13566          1.1  christos 	      break;
   13567          1.1  christos 	    }
   13568          1.1  christos 	  else
   13569          1.1  christos 	    {
   13570          1.1  christos 	      if (l != 1 || len != 2 || last[0] != 'X')
   13571          1.1  christos 		{
   13572          1.1  christos 		  SAVE_LAST (*p);
   13573          1.1  christos 		  break;
   13574          1.1  christos 		}
   13575          1.1  christos 	      if (!need_vex)
   13576          1.1  christos 		abort ();
   13577          1.1  christos 	      if (intel_syntax
   13578          1.1  christos 		  || (modrm.mod == 3 && !(sizeflag & SUFFIX_ALWAYS)))
   13579          1.1  christos 		break;
   13580          1.1  christos 	      switch (vex.length)
   13581          1.1  christos 		{
   13582          1.1  christos 		case 128:
   13583          1.1  christos 		  *obufp++ = 'x';
   13584          1.1  christos 		  break;
   13585          1.1  christos 		case 256:
   13586          1.1  christos 		  *obufp++ = 'y';
   13587          1.1  christos 		  break;
   13588          1.1  christos 		default:
   13589          1.1  christos 		  abort ();
   13590          1.1  christos 		}
   13591          1.1  christos 	    }
   13592          1.1  christos 	  break;
   13593          1.1  christos 	case 'W':
   13594          1.1  christos 	  if (l == 0 && len == 1)
   13595          1.1  christos 	    {
   13596          1.1  christos 	      /* operand size flag for cwtl, cbtw */
   13597          1.1  christos 	      USED_REX (REX_W);
   13598          1.1  christos 	      if (rex & REX_W)
   13599          1.1  christos 		{
   13600          1.1  christos 		  if (intel_syntax)
   13601          1.1  christos 		    *obufp++ = 'd';
   13602          1.1  christos 		  else
   13603          1.1  christos 		    *obufp++ = 'l';
   13604          1.1  christos 		}
   13605          1.1  christos 	      else if (sizeflag & DFLAG)
   13606          1.1  christos 		*obufp++ = 'w';
   13607          1.1  christos 	      else
   13608          1.1  christos 		*obufp++ = 'b';
   13609          1.1  christos 	      if (!(rex & REX_W))
   13610          1.1  christos 		used_prefixes |= (prefixes & PREFIX_DATA);
   13611          1.1  christos 	    }
   13612          1.1  christos 	  else
   13613          1.1  christos 	    {
   13614  1.1.1.1.8.1       tls 	      if (l != 1
   13615  1.1.1.1.8.1       tls 		  || len != 2
   13616  1.1.1.1.8.1       tls 		  || (last[0] != 'X'
   13617  1.1.1.1.8.1       tls 		      && last[0] != 'L'))
   13618          1.1  christos 		{
   13619          1.1  christos 		  SAVE_LAST (*p);
   13620          1.1  christos 		  break;
   13621          1.1  christos 		}
   13622          1.1  christos 	      if (!need_vex)
   13623          1.1  christos 		abort ();
   13624  1.1.1.1.8.1       tls 	      if (last[0] == 'X')
   13625  1.1.1.1.8.1       tls 		*obufp++ = vex.w ? 'd': 's';
   13626  1.1.1.1.8.1       tls 	      else
   13627  1.1.1.1.8.1       tls 		*obufp++ = vex.w ? 'q': 'd';
   13628          1.1  christos 	    }
   13629          1.1  christos 	  break;
   13630          1.1  christos 	}
   13631          1.1  christos       alt = 0;
   13632          1.1  christos     }
   13633          1.1  christos   *obufp = 0;
   13634          1.1  christos   mnemonicendp = obufp;
   13635          1.1  christos   return 0;
   13636          1.1  christos }
   13637          1.1  christos 
   13638          1.1  christos static void
   13639          1.1  christos oappend (const char *s)
   13640          1.1  christos {
   13641          1.1  christos   obufp = stpcpy (obufp, s);
   13642          1.1  christos }
   13643          1.1  christos 
   13644          1.1  christos static void
   13645          1.1  christos append_seg (void)
   13646          1.1  christos {
   13647          1.1  christos   if (prefixes & PREFIX_CS)
   13648          1.1  christos     {
   13649          1.1  christos       used_prefixes |= PREFIX_CS;
   13650  1.1.1.1.8.1       tls       oappend_maybe_intel ("%cs:");
   13651          1.1  christos     }
   13652          1.1  christos   if (prefixes & PREFIX_DS)
   13653          1.1  christos     {
   13654          1.1  christos       used_prefixes |= PREFIX_DS;
   13655  1.1.1.1.8.1       tls       oappend_maybe_intel ("%ds:");
   13656          1.1  christos     }
   13657          1.1  christos   if (prefixes & PREFIX_SS)
   13658          1.1  christos     {
   13659          1.1  christos       used_prefixes |= PREFIX_SS;
   13660  1.1.1.1.8.1       tls       oappend_maybe_intel ("%ss:");
   13661          1.1  christos     }
   13662          1.1  christos   if (prefixes & PREFIX_ES)
   13663          1.1  christos     {
   13664          1.1  christos       used_prefixes |= PREFIX_ES;
   13665  1.1.1.1.8.1       tls       oappend_maybe_intel ("%es:");
   13666          1.1  christos     }
   13667          1.1  christos   if (prefixes & PREFIX_FS)
   13668          1.1  christos     {
   13669          1.1  christos       used_prefixes |= PREFIX_FS;
   13670  1.1.1.1.8.1       tls       oappend_maybe_intel ("%fs:");
   13671          1.1  christos     }
   13672          1.1  christos   if (prefixes & PREFIX_GS)
   13673          1.1  christos     {
   13674          1.1  christos       used_prefixes |= PREFIX_GS;
   13675  1.1.1.1.8.1       tls       oappend_maybe_intel ("%gs:");
   13676          1.1  christos     }
   13677          1.1  christos }
   13678          1.1  christos 
   13679          1.1  christos static void
   13680          1.1  christos OP_indirE (int bytemode, int sizeflag)
   13681          1.1  christos {
   13682          1.1  christos   if (!intel_syntax)
   13683          1.1  christos     oappend ("*");
   13684          1.1  christos   OP_E (bytemode, sizeflag);
   13685          1.1  christos }
   13686          1.1  christos 
   13687          1.1  christos static void
   13688          1.1  christos print_operand_value (char *buf, int hex, bfd_vma disp)
   13689          1.1  christos {
   13690          1.1  christos   if (address_mode == mode_64bit)
   13691          1.1  christos     {
   13692          1.1  christos       if (hex)
   13693          1.1  christos 	{
   13694          1.1  christos 	  char tmp[30];
   13695          1.1  christos 	  int i;
   13696          1.1  christos 	  buf[0] = '0';
   13697          1.1  christos 	  buf[1] = 'x';
   13698          1.1  christos 	  sprintf_vma (tmp, disp);
   13699          1.1  christos 	  for (i = 0; tmp[i] == '0' && tmp[i + 1]; i++);
   13700          1.1  christos 	  strcpy (buf + 2, tmp + i);
   13701          1.1  christos 	}
   13702          1.1  christos       else
   13703          1.1  christos 	{
   13704          1.1  christos 	  bfd_signed_vma v = disp;
   13705          1.1  christos 	  char tmp[30];
   13706          1.1  christos 	  int i;
   13707          1.1  christos 	  if (v < 0)
   13708          1.1  christos 	    {
   13709          1.1  christos 	      *(buf++) = '-';
   13710          1.1  christos 	      v = -disp;
   13711          1.1  christos 	      /* Check for possible overflow on 0x8000000000000000.  */
   13712          1.1  christos 	      if (v < 0)
   13713          1.1  christos 		{
   13714          1.1  christos 		  strcpy (buf, "9223372036854775808");
   13715          1.1  christos 		  return;
   13716          1.1  christos 		}
   13717          1.1  christos 	    }
   13718          1.1  christos 	  if (!v)
   13719          1.1  christos 	    {
   13720          1.1  christos 	      strcpy (buf, "0");
   13721          1.1  christos 	      return;
   13722          1.1  christos 	    }
   13723          1.1  christos 
   13724          1.1  christos 	  i = 0;
   13725          1.1  christos 	  tmp[29] = 0;
   13726          1.1  christos 	  while (v)
   13727          1.1  christos 	    {
   13728          1.1  christos 	      tmp[28 - i] = (v % 10) + '0';
   13729          1.1  christos 	      v /= 10;
   13730          1.1  christos 	      i++;
   13731          1.1  christos 	    }
   13732          1.1  christos 	  strcpy (buf, tmp + 29 - i);
   13733          1.1  christos 	}
   13734          1.1  christos     }
   13735          1.1  christos   else
   13736          1.1  christos     {
   13737          1.1  christos       if (hex)
   13738          1.1  christos 	sprintf (buf, "0x%x", (unsigned int) disp);
   13739          1.1  christos       else
   13740          1.1  christos 	sprintf (buf, "%d", (int) disp);
   13741          1.1  christos     }
   13742          1.1  christos }
   13743          1.1  christos 
   13744          1.1  christos /* Put DISP in BUF as signed hex number.  */
   13745          1.1  christos 
   13746          1.1  christos static void
   13747          1.1  christos print_displacement (char *buf, bfd_vma disp)
   13748          1.1  christos {
   13749          1.1  christos   bfd_signed_vma val = disp;
   13750          1.1  christos   char tmp[30];
   13751          1.1  christos   int i, j = 0;
   13752          1.1  christos 
   13753          1.1  christos   if (val < 0)
   13754          1.1  christos     {
   13755          1.1  christos       buf[j++] = '-';
   13756          1.1  christos       val = -disp;
   13757          1.1  christos 
   13758          1.1  christos       /* Check for possible overflow.  */
   13759          1.1  christos       if (val < 0)
   13760          1.1  christos 	{
   13761          1.1  christos 	  switch (address_mode)
   13762          1.1  christos 	    {
   13763          1.1  christos 	    case mode_64bit:
   13764          1.1  christos 	      strcpy (buf + j, "0x8000000000000000");
   13765          1.1  christos 	      break;
   13766          1.1  christos 	    case mode_32bit:
   13767          1.1  christos 	      strcpy (buf + j, "0x80000000");
   13768          1.1  christos 	      break;
   13769          1.1  christos 	    case mode_16bit:
   13770          1.1  christos 	      strcpy (buf + j, "0x8000");
   13771          1.1  christos 	      break;
   13772          1.1  christos 	    }
   13773          1.1  christos 	  return;
   13774          1.1  christos 	}
   13775          1.1  christos     }
   13776          1.1  christos 
   13777          1.1  christos   buf[j++] = '0';
   13778          1.1  christos   buf[j++] = 'x';
   13779          1.1  christos 
   13780          1.1  christos   sprintf_vma (tmp, (bfd_vma) val);
   13781          1.1  christos   for (i = 0; tmp[i] == '0'; i++)
   13782          1.1  christos     continue;
   13783          1.1  christos   if (tmp[i] == '\0')
   13784          1.1  christos     i--;
   13785          1.1  christos   strcpy (buf + j, tmp + i);
   13786          1.1  christos }
   13787          1.1  christos 
   13788          1.1  christos static void
   13789          1.1  christos intel_operand_size (int bytemode, int sizeflag)
   13790          1.1  christos {
   13791  1.1.1.1.8.1       tls   if (vex.evex
   13792  1.1.1.1.8.1       tls       && vex.b
   13793  1.1.1.1.8.1       tls       && (bytemode == x_mode
   13794  1.1.1.1.8.1       tls 	  || bytemode == evex_half_bcst_xmmq_mode))
   13795  1.1.1.1.8.1       tls     {
   13796  1.1.1.1.8.1       tls       if (vex.w)
   13797  1.1.1.1.8.1       tls 	oappend ("QWORD PTR ");
   13798  1.1.1.1.8.1       tls       else
   13799  1.1.1.1.8.1       tls 	oappend ("DWORD PTR ");
   13800  1.1.1.1.8.1       tls       return;
   13801  1.1.1.1.8.1       tls     }
   13802          1.1  christos   switch (bytemode)
   13803          1.1  christos     {
   13804          1.1  christos     case b_mode:
   13805          1.1  christos     case b_swap_mode:
   13806          1.1  christos     case dqb_mode:
   13807          1.1  christos       oappend ("BYTE PTR ");
   13808          1.1  christos       break;
   13809          1.1  christos     case w_mode:
   13810          1.1  christos     case dqw_mode:
   13811          1.1  christos       oappend ("WORD PTR ");
   13812          1.1  christos       break;
   13813          1.1  christos     case stack_v_mode:
   13814  1.1.1.1.8.1       tls       if (address_mode == mode_64bit && ((sizeflag & DFLAG) || (rex & REX_W)))
   13815          1.1  christos 	{
   13816          1.1  christos 	  oappend ("QWORD PTR ");
   13817          1.1  christos 	  break;
   13818          1.1  christos 	}
   13819          1.1  christos       /* FALLTHRU */
   13820          1.1  christos     case v_mode:
   13821          1.1  christos     case v_swap_mode:
   13822          1.1  christos     case dq_mode:
   13823          1.1  christos       USED_REX (REX_W);
   13824          1.1  christos       if (rex & REX_W)
   13825          1.1  christos 	oappend ("QWORD PTR ");
   13826          1.1  christos       else
   13827          1.1  christos 	{
   13828          1.1  christos 	  if ((sizeflag & DFLAG) || bytemode == dq_mode)
   13829          1.1  christos 	    oappend ("DWORD PTR ");
   13830          1.1  christos 	  else
   13831          1.1  christos 	    oappend ("WORD PTR ");
   13832          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   13833          1.1  christos 	}
   13834          1.1  christos       break;
   13835          1.1  christos     case z_mode:
   13836          1.1  christos       if ((rex & REX_W) || (sizeflag & DFLAG))
   13837          1.1  christos 	*obufp++ = 'D';
   13838          1.1  christos       oappend ("WORD PTR ");
   13839          1.1  christos       if (!(rex & REX_W))
   13840          1.1  christos 	used_prefixes |= (prefixes & PREFIX_DATA);
   13841          1.1  christos       break;
   13842          1.1  christos     case a_mode:
   13843          1.1  christos       if (sizeflag & DFLAG)
   13844          1.1  christos 	oappend ("QWORD PTR ");
   13845          1.1  christos       else
   13846          1.1  christos 	oappend ("DWORD PTR ");
   13847          1.1  christos       used_prefixes |= (prefixes & PREFIX_DATA);
   13848          1.1  christos       break;
   13849          1.1  christos     case d_mode:
   13850          1.1  christos     case d_scalar_mode:
   13851          1.1  christos     case d_scalar_swap_mode:
   13852          1.1  christos     case d_swap_mode:
   13853          1.1  christos     case dqd_mode:
   13854          1.1  christos       oappend ("DWORD PTR ");
   13855          1.1  christos       break;
   13856          1.1  christos     case q_mode:
   13857          1.1  christos     case q_scalar_mode:
   13858          1.1  christos     case q_scalar_swap_mode:
   13859          1.1  christos     case q_swap_mode:
   13860          1.1  christos       oappend ("QWORD PTR ");
   13861          1.1  christos       break;
   13862          1.1  christos     case m_mode:
   13863          1.1  christos       if (address_mode == mode_64bit)
   13864          1.1  christos 	oappend ("QWORD PTR ");
   13865          1.1  christos       else
   13866          1.1  christos 	oappend ("DWORD PTR ");
   13867          1.1  christos       break;
   13868          1.1  christos     case f_mode:
   13869          1.1  christos       if (sizeflag & DFLAG)
   13870          1.1  christos 	oappend ("FWORD PTR ");
   13871          1.1  christos       else
   13872          1.1  christos 	oappend ("DWORD PTR ");
   13873          1.1  christos       used_prefixes |= (prefixes & PREFIX_DATA);
   13874          1.1  christos       break;
   13875          1.1  christos     case t_mode:
   13876          1.1  christos       oappend ("TBYTE PTR ");
   13877          1.1  christos       break;
   13878          1.1  christos     case x_mode:
   13879          1.1  christos     case x_swap_mode:
   13880  1.1.1.1.8.1       tls     case evex_x_gscat_mode:
   13881  1.1.1.1.8.1       tls     case evex_x_nobcst_mode:
   13882          1.1  christos       if (need_vex)
   13883          1.1  christos 	{
   13884          1.1  christos 	  switch (vex.length)
   13885          1.1  christos 	    {
   13886          1.1  christos 	    case 128:
   13887          1.1  christos 	      oappend ("XMMWORD PTR ");
   13888          1.1  christos 	      break;
   13889          1.1  christos 	    case 256:
   13890          1.1  christos 	      oappend ("YMMWORD PTR ");
   13891          1.1  christos 	      break;
   13892  1.1.1.1.8.1       tls 	    case 512:
   13893  1.1.1.1.8.1       tls 	      oappend ("ZMMWORD PTR ");
   13894  1.1.1.1.8.1       tls 	      break;
   13895          1.1  christos 	    default:
   13896          1.1  christos 	      abort ();
   13897          1.1  christos 	    }
   13898          1.1  christos 	}
   13899          1.1  christos       else
   13900          1.1  christos 	oappend ("XMMWORD PTR ");
   13901          1.1  christos       break;
   13902          1.1  christos     case xmm_mode:
   13903          1.1  christos       oappend ("XMMWORD PTR ");
   13904          1.1  christos       break;
   13905  1.1.1.1.8.1       tls     case ymm_mode:
   13906  1.1.1.1.8.1       tls       oappend ("YMMWORD PTR ");
   13907  1.1.1.1.8.1       tls       break;
   13908  1.1.1.1.8.1       tls     case xmmq_mode:
   13909  1.1.1.1.8.1       tls     case evex_half_bcst_xmmq_mode:
   13910  1.1.1.1.8.1       tls       if (!need_vex)
   13911  1.1.1.1.8.1       tls 	abort ();
   13912  1.1.1.1.8.1       tls 
   13913  1.1.1.1.8.1       tls       switch (vex.length)
   13914  1.1.1.1.8.1       tls 	{
   13915  1.1.1.1.8.1       tls 	case 128:
   13916  1.1.1.1.8.1       tls 	  oappend ("QWORD PTR ");
   13917  1.1.1.1.8.1       tls 	  break;
   13918  1.1.1.1.8.1       tls 	case 256:
   13919  1.1.1.1.8.1       tls 	  oappend ("XMMWORD PTR ");
   13920  1.1.1.1.8.1       tls 	  break;
   13921  1.1.1.1.8.1       tls 	case 512:
   13922  1.1.1.1.8.1       tls 	  oappend ("YMMWORD PTR ");
   13923  1.1.1.1.8.1       tls 	  break;
   13924  1.1.1.1.8.1       tls 	default:
   13925  1.1.1.1.8.1       tls 	  abort ();
   13926  1.1.1.1.8.1       tls 	}
   13927  1.1.1.1.8.1       tls       break;
   13928  1.1.1.1.8.1       tls     case xmm_mb_mode:
   13929  1.1.1.1.8.1       tls       if (!need_vex)
   13930  1.1.1.1.8.1       tls 	abort ();
   13931  1.1.1.1.8.1       tls 
   13932  1.1.1.1.8.1       tls       switch (vex.length)
   13933  1.1.1.1.8.1       tls 	{
   13934  1.1.1.1.8.1       tls 	case 128:
   13935  1.1.1.1.8.1       tls 	case 256:
   13936  1.1.1.1.8.1       tls 	case 512:
   13937  1.1.1.1.8.1       tls 	  oappend ("BYTE PTR ");
   13938  1.1.1.1.8.1       tls 	  break;
   13939  1.1.1.1.8.1       tls 	default:
   13940  1.1.1.1.8.1       tls 	  abort ();
   13941  1.1.1.1.8.1       tls 	}
   13942  1.1.1.1.8.1       tls       break;
   13943  1.1.1.1.8.1       tls     case xmm_mw_mode:
   13944  1.1.1.1.8.1       tls       if (!need_vex)
   13945  1.1.1.1.8.1       tls 	abort ();
   13946  1.1.1.1.8.1       tls 
   13947  1.1.1.1.8.1       tls       switch (vex.length)
   13948  1.1.1.1.8.1       tls 	{
   13949  1.1.1.1.8.1       tls 	case 128:
   13950  1.1.1.1.8.1       tls 	case 256:
   13951  1.1.1.1.8.1       tls 	case 512:
   13952  1.1.1.1.8.1       tls 	  oappend ("WORD PTR ");
   13953  1.1.1.1.8.1       tls 	  break;
   13954  1.1.1.1.8.1       tls 	default:
   13955  1.1.1.1.8.1       tls 	  abort ();
   13956  1.1.1.1.8.1       tls 	}
   13957  1.1.1.1.8.1       tls       break;
   13958  1.1.1.1.8.1       tls     case xmm_md_mode:
   13959  1.1.1.1.8.1       tls       if (!need_vex)
   13960  1.1.1.1.8.1       tls 	abort ();
   13961  1.1.1.1.8.1       tls 
   13962  1.1.1.1.8.1       tls       switch (vex.length)
   13963  1.1.1.1.8.1       tls 	{
   13964  1.1.1.1.8.1       tls 	case 128:
   13965  1.1.1.1.8.1       tls 	case 256:
   13966  1.1.1.1.8.1       tls 	case 512:
   13967  1.1.1.1.8.1       tls 	  oappend ("DWORD PTR ");
   13968  1.1.1.1.8.1       tls 	  break;
   13969  1.1.1.1.8.1       tls 	default:
   13970  1.1.1.1.8.1       tls 	  abort ();
   13971  1.1.1.1.8.1       tls 	}
   13972  1.1.1.1.8.1       tls       break;
   13973  1.1.1.1.8.1       tls     case xmm_mq_mode:
   13974  1.1.1.1.8.1       tls       if (!need_vex)
   13975  1.1.1.1.8.1       tls 	abort ();
   13976  1.1.1.1.8.1       tls 
   13977  1.1.1.1.8.1       tls       switch (vex.length)
   13978  1.1.1.1.8.1       tls 	{
   13979  1.1.1.1.8.1       tls 	case 128:
   13980  1.1.1.1.8.1       tls 	case 256:
   13981  1.1.1.1.8.1       tls 	case 512:
   13982  1.1.1.1.8.1       tls 	  oappend ("QWORD PTR ");
   13983  1.1.1.1.8.1       tls 	  break;
   13984  1.1.1.1.8.1       tls 	default:
   13985  1.1.1.1.8.1       tls 	  abort ();
   13986  1.1.1.1.8.1       tls 	}
   13987  1.1.1.1.8.1       tls       break;
   13988  1.1.1.1.8.1       tls     case xmmdw_mode:
   13989  1.1.1.1.8.1       tls       if (!need_vex)
   13990  1.1.1.1.8.1       tls 	abort ();
   13991  1.1.1.1.8.1       tls 
   13992  1.1.1.1.8.1       tls       switch (vex.length)
   13993  1.1.1.1.8.1       tls 	{
   13994  1.1.1.1.8.1       tls 	case 128:
   13995  1.1.1.1.8.1       tls 	  oappend ("WORD PTR ");
   13996  1.1.1.1.8.1       tls 	  break;
   13997  1.1.1.1.8.1       tls 	case 256:
   13998  1.1.1.1.8.1       tls 	  oappend ("DWORD PTR ");
   13999  1.1.1.1.8.1       tls 	  break;
   14000  1.1.1.1.8.1       tls 	case 512:
   14001  1.1.1.1.8.1       tls 	  oappend ("QWORD PTR ");
   14002  1.1.1.1.8.1       tls 	  break;
   14003  1.1.1.1.8.1       tls 	default:
   14004  1.1.1.1.8.1       tls 	  abort ();
   14005  1.1.1.1.8.1       tls 	}
   14006  1.1.1.1.8.1       tls       break;
   14007  1.1.1.1.8.1       tls     case xmmqd_mode:
   14008  1.1.1.1.8.1       tls       if (!need_vex)
   14009  1.1.1.1.8.1       tls 	abort ();
   14010  1.1.1.1.8.1       tls 
   14011  1.1.1.1.8.1       tls       switch (vex.length)
   14012  1.1.1.1.8.1       tls 	{
   14013  1.1.1.1.8.1       tls 	case 128:
   14014  1.1.1.1.8.1       tls 	  oappend ("DWORD PTR ");
   14015  1.1.1.1.8.1       tls 	  break;
   14016  1.1.1.1.8.1       tls 	case 256:
   14017  1.1.1.1.8.1       tls 	  oappend ("QWORD PTR ");
   14018  1.1.1.1.8.1       tls 	  break;
   14019  1.1.1.1.8.1       tls 	case 512:
   14020  1.1.1.1.8.1       tls 	  oappend ("XMMWORD PTR ");
   14021  1.1.1.1.8.1       tls 	  break;
   14022  1.1.1.1.8.1       tls 	default:
   14023  1.1.1.1.8.1       tls 	  abort ();
   14024  1.1.1.1.8.1       tls 	}
   14025  1.1.1.1.8.1       tls       break;
   14026  1.1.1.1.8.1       tls     case ymmq_mode:
   14027          1.1  christos       if (!need_vex)
   14028          1.1  christos 	abort ();
   14029          1.1  christos 
   14030          1.1  christos       switch (vex.length)
   14031          1.1  christos 	{
   14032          1.1  christos 	case 128:
   14033          1.1  christos 	  oappend ("QWORD PTR ");
   14034          1.1  christos 	  break;
   14035          1.1  christos 	case 256:
   14036  1.1.1.1.8.1       tls 	  oappend ("YMMWORD PTR ");
   14037  1.1.1.1.8.1       tls 	  break;
   14038  1.1.1.1.8.1       tls 	case 512:
   14039  1.1.1.1.8.1       tls 	  oappend ("ZMMWORD PTR ");
   14040          1.1  christos 	  break;
   14041          1.1  christos 	default:
   14042          1.1  christos 	  abort ();
   14043          1.1  christos 	}
   14044          1.1  christos       break;
   14045  1.1.1.1.8.1       tls     case ymmxmm_mode:
   14046          1.1  christos       if (!need_vex)
   14047          1.1  christos 	abort ();
   14048          1.1  christos 
   14049          1.1  christos       switch (vex.length)
   14050          1.1  christos 	{
   14051          1.1  christos 	case 128:
   14052          1.1  christos 	case 256:
   14053  1.1.1.1.8.1       tls 	  oappend ("XMMWORD PTR ");
   14054          1.1  christos 	  break;
   14055          1.1  christos 	default:
   14056          1.1  christos 	  abort ();
   14057          1.1  christos 	}
   14058          1.1  christos       break;
   14059          1.1  christos     case o_mode:
   14060          1.1  christos       oappend ("OWORD PTR ");
   14061          1.1  christos       break;
   14062  1.1.1.1.8.1       tls     case xmm_mdq_mode:
   14063          1.1  christos     case vex_w_dq_mode:
   14064          1.1  christos     case vex_scalar_w_dq_mode:
   14065          1.1  christos       if (!need_vex)
   14066          1.1  christos 	abort ();
   14067          1.1  christos 
   14068          1.1  christos       if (vex.w)
   14069          1.1  christos 	oappend ("QWORD PTR ");
   14070          1.1  christos       else
   14071          1.1  christos 	oappend ("DWORD PTR ");
   14072          1.1  christos       break;
   14073  1.1.1.1.8.1       tls     case vex_vsib_d_w_dq_mode:
   14074  1.1.1.1.8.1       tls     case vex_vsib_q_w_dq_mode:
   14075  1.1.1.1.8.1       tls       if (!need_vex)
   14076  1.1.1.1.8.1       tls 	abort ();
   14077  1.1.1.1.8.1       tls 
   14078  1.1.1.1.8.1       tls       if (!vex.evex)
   14079  1.1.1.1.8.1       tls 	{
   14080  1.1.1.1.8.1       tls 	  if (vex.w)
   14081  1.1.1.1.8.1       tls 	    oappend ("QWORD PTR ");
   14082  1.1.1.1.8.1       tls 	  else
   14083  1.1.1.1.8.1       tls 	    oappend ("DWORD PTR ");
   14084  1.1.1.1.8.1       tls 	}
   14085  1.1.1.1.8.1       tls       else
   14086  1.1.1.1.8.1       tls 	{
   14087  1.1.1.1.8.1       tls 	  if (vex.length != 512)
   14088  1.1.1.1.8.1       tls 	    abort ();
   14089  1.1.1.1.8.1       tls 	  oappend ("ZMMWORD PTR ");
   14090  1.1.1.1.8.1       tls 	}
   14091  1.1.1.1.8.1       tls       break;
   14092  1.1.1.1.8.1       tls     case mask_mode:
   14093  1.1.1.1.8.1       tls       if (!need_vex)
   14094  1.1.1.1.8.1       tls 	abort ();
   14095  1.1.1.1.8.1       tls       /* Currently the only instructions, which allows either mask or
   14096  1.1.1.1.8.1       tls 	 memory operand, are AVX512's KMOVW instructions.  They need
   14097  1.1.1.1.8.1       tls 	 Word-sized operand.  */
   14098  1.1.1.1.8.1       tls       if (vex.w || vex.length != 128)
   14099  1.1.1.1.8.1       tls 	abort ();
   14100  1.1.1.1.8.1       tls       oappend ("WORD PTR ");
   14101  1.1.1.1.8.1       tls       break;
   14102  1.1.1.1.8.1       tls     case v_bnd_mode:
   14103          1.1  christos     default:
   14104          1.1  christos       break;
   14105          1.1  christos     }
   14106          1.1  christos }
   14107          1.1  christos 
   14108          1.1  christos static void
   14109          1.1  christos OP_E_register (int bytemode, int sizeflag)
   14110          1.1  christos {
   14111          1.1  christos   int reg = modrm.rm;
   14112          1.1  christos   const char **names;
   14113          1.1  christos 
   14114          1.1  christos   USED_REX (REX_B);
   14115          1.1  christos   if ((rex & REX_B))
   14116          1.1  christos     reg += 8;
   14117          1.1  christos 
   14118          1.1  christos   if ((sizeflag & SUFFIX_ALWAYS)
   14119          1.1  christos       && (bytemode == b_swap_mode || bytemode == v_swap_mode))
   14120          1.1  christos     swap_operand ();
   14121          1.1  christos 
   14122          1.1  christos   switch (bytemode)
   14123          1.1  christos     {
   14124          1.1  christos     case b_mode:
   14125          1.1  christos     case b_swap_mode:
   14126          1.1  christos       USED_REX (0);
   14127          1.1  christos       if (rex)
   14128          1.1  christos 	names = names8rex;
   14129          1.1  christos       else
   14130          1.1  christos 	names = names8;
   14131          1.1  christos       break;
   14132          1.1  christos     case w_mode:
   14133          1.1  christos       names = names16;
   14134          1.1  christos       break;
   14135          1.1  christos     case d_mode:
   14136          1.1  christos       names = names32;
   14137          1.1  christos       break;
   14138          1.1  christos     case q_mode:
   14139          1.1  christos       names = names64;
   14140          1.1  christos       break;
   14141          1.1  christos     case m_mode:
   14142  1.1.1.1.8.1       tls     case v_bnd_mode:
   14143          1.1  christos       names = address_mode == mode_64bit ? names64 : names32;
   14144          1.1  christos       break;
   14145  1.1.1.1.8.1       tls     case bnd_mode:
   14146  1.1.1.1.8.1       tls       names = names_bnd;
   14147  1.1.1.1.8.1       tls       break;
   14148          1.1  christos     case stack_v_mode:
   14149  1.1.1.1.8.1       tls       if (address_mode == mode_64bit && ((sizeflag & DFLAG) || (rex & REX_W)))
   14150          1.1  christos 	{
   14151          1.1  christos 	  names = names64;
   14152          1.1  christos 	  break;
   14153          1.1  christos 	}
   14154          1.1  christos       bytemode = v_mode;
   14155          1.1  christos       /* FALLTHRU */
   14156          1.1  christos     case v_mode:
   14157          1.1  christos     case v_swap_mode:
   14158          1.1  christos     case dq_mode:
   14159          1.1  christos     case dqb_mode:
   14160          1.1  christos     case dqd_mode:
   14161          1.1  christos     case dqw_mode:
   14162          1.1  christos       USED_REX (REX_W);
   14163          1.1  christos       if (rex & REX_W)
   14164          1.1  christos 	names = names64;
   14165          1.1  christos       else
   14166          1.1  christos 	{
   14167  1.1.1.1.8.1       tls 	  if ((sizeflag & DFLAG)
   14168          1.1  christos 	      || (bytemode != v_mode
   14169          1.1  christos 		  && bytemode != v_swap_mode))
   14170          1.1  christos 	    names = names32;
   14171          1.1  christos 	  else
   14172          1.1  christos 	    names = names16;
   14173          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   14174          1.1  christos 	}
   14175          1.1  christos       break;
   14176  1.1.1.1.8.1       tls     case mask_mode:
   14177  1.1.1.1.8.1       tls       names = names_mask;
   14178  1.1.1.1.8.1       tls       break;
   14179          1.1  christos     case 0:
   14180          1.1  christos       return;
   14181          1.1  christos     default:
   14182          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   14183          1.1  christos       return;
   14184          1.1  christos     }
   14185          1.1  christos   oappend (names[reg]);
   14186          1.1  christos }
   14187          1.1  christos 
   14188          1.1  christos static void
   14189          1.1  christos OP_E_memory (int bytemode, int sizeflag)
   14190          1.1  christos {
   14191          1.1  christos   bfd_vma disp = 0;
   14192          1.1  christos   int add = (rex & REX_B) ? 8 : 0;
   14193          1.1  christos   int riprel = 0;
   14194  1.1.1.1.8.1       tls   int shift;
   14195  1.1.1.1.8.1       tls 
   14196  1.1.1.1.8.1       tls   if (vex.evex)
   14197  1.1.1.1.8.1       tls     {
   14198  1.1.1.1.8.1       tls       /* In EVEX, if operand doesn't allow broadcast, vex.b should be 0.  */
   14199  1.1.1.1.8.1       tls       if (vex.b
   14200  1.1.1.1.8.1       tls 	  && bytemode != x_mode
   14201  1.1.1.1.8.1       tls 	  && bytemode != evex_half_bcst_xmmq_mode)
   14202  1.1.1.1.8.1       tls 	{
   14203  1.1.1.1.8.1       tls 	  BadOp ();
   14204  1.1.1.1.8.1       tls 	  return;
   14205  1.1.1.1.8.1       tls 	}
   14206  1.1.1.1.8.1       tls       switch (bytemode)
   14207  1.1.1.1.8.1       tls 	{
   14208  1.1.1.1.8.1       tls 	case vex_vsib_d_w_dq_mode:
   14209  1.1.1.1.8.1       tls 	case vex_vsib_q_w_dq_mode:
   14210  1.1.1.1.8.1       tls 	case evex_x_gscat_mode:
   14211  1.1.1.1.8.1       tls 	case xmm_mdq_mode:
   14212  1.1.1.1.8.1       tls 	  shift = vex.w ? 3 : 2;
   14213  1.1.1.1.8.1       tls 	  break;
   14214  1.1.1.1.8.1       tls 	case x_mode:
   14215  1.1.1.1.8.1       tls 	case evex_half_bcst_xmmq_mode:
   14216  1.1.1.1.8.1       tls 	  if (vex.b)
   14217  1.1.1.1.8.1       tls 	    {
   14218  1.1.1.1.8.1       tls 	      shift = vex.w ? 3 : 2;
   14219  1.1.1.1.8.1       tls 	      break;
   14220  1.1.1.1.8.1       tls 	    }
   14221  1.1.1.1.8.1       tls 	  /* Fall through if vex.b == 0.  */
   14222  1.1.1.1.8.1       tls 	case xmmqd_mode:
   14223  1.1.1.1.8.1       tls 	case xmmdw_mode:
   14224  1.1.1.1.8.1       tls 	case xmmq_mode:
   14225  1.1.1.1.8.1       tls 	case ymmq_mode:
   14226  1.1.1.1.8.1       tls 	case evex_x_nobcst_mode:
   14227  1.1.1.1.8.1       tls 	case x_swap_mode:
   14228  1.1.1.1.8.1       tls 	  switch (vex.length)
   14229  1.1.1.1.8.1       tls 	    {
   14230  1.1.1.1.8.1       tls 	    case 128:
   14231  1.1.1.1.8.1       tls 	      shift = 4;
   14232  1.1.1.1.8.1       tls 	      break;
   14233  1.1.1.1.8.1       tls 	    case 256:
   14234  1.1.1.1.8.1       tls 	      shift = 5;
   14235  1.1.1.1.8.1       tls 	      break;
   14236  1.1.1.1.8.1       tls 	    case 512:
   14237  1.1.1.1.8.1       tls 	      shift = 6;
   14238  1.1.1.1.8.1       tls 	      break;
   14239  1.1.1.1.8.1       tls 	    default:
   14240  1.1.1.1.8.1       tls 	      abort ();
   14241  1.1.1.1.8.1       tls 	    }
   14242  1.1.1.1.8.1       tls 	  break;
   14243  1.1.1.1.8.1       tls 	case ymm_mode:
   14244  1.1.1.1.8.1       tls 	  shift = 5;
   14245  1.1.1.1.8.1       tls 	  break;
   14246  1.1.1.1.8.1       tls 	case xmm_mode:
   14247  1.1.1.1.8.1       tls 	  shift = 4;
   14248  1.1.1.1.8.1       tls 	  break;
   14249  1.1.1.1.8.1       tls 	case xmm_mq_mode:
   14250  1.1.1.1.8.1       tls 	case q_mode:
   14251  1.1.1.1.8.1       tls 	case q_scalar_mode:
   14252  1.1.1.1.8.1       tls 	case q_swap_mode:
   14253  1.1.1.1.8.1       tls 	case q_scalar_swap_mode:
   14254  1.1.1.1.8.1       tls 	  shift = 3;
   14255  1.1.1.1.8.1       tls 	  break;
   14256  1.1.1.1.8.1       tls 	case dqd_mode:
   14257  1.1.1.1.8.1       tls 	case xmm_md_mode:
   14258  1.1.1.1.8.1       tls 	case d_mode:
   14259  1.1.1.1.8.1       tls 	case d_scalar_mode:
   14260  1.1.1.1.8.1       tls 	case d_swap_mode:
   14261  1.1.1.1.8.1       tls 	case d_scalar_swap_mode:
   14262  1.1.1.1.8.1       tls 	  shift = 2;
   14263  1.1.1.1.8.1       tls 	  break;
   14264  1.1.1.1.8.1       tls 	case xmm_mw_mode:
   14265  1.1.1.1.8.1       tls 	  shift = 1;
   14266  1.1.1.1.8.1       tls 	  break;
   14267  1.1.1.1.8.1       tls 	case xmm_mb_mode:
   14268  1.1.1.1.8.1       tls 	  shift = 0;
   14269  1.1.1.1.8.1       tls 	  break;
   14270  1.1.1.1.8.1       tls 	default:
   14271  1.1.1.1.8.1       tls 	  abort ();
   14272  1.1.1.1.8.1       tls 	}
   14273  1.1.1.1.8.1       tls       /* Make necessary corrections to shift for modes that need it.
   14274  1.1.1.1.8.1       tls 	 For these modes we currently have shift 4, 5 or 6 depending on
   14275  1.1.1.1.8.1       tls 	 vex.length (it corresponds to xmmword, ymmword or zmmword
   14276  1.1.1.1.8.1       tls 	 operand).  We might want to make it 3, 4 or 5 (e.g. for
   14277  1.1.1.1.8.1       tls 	 xmmq_mode).  In case of broadcast enabled the corrections
   14278  1.1.1.1.8.1       tls 	 aren't needed, as element size is always 32 or 64 bits.  */
   14279  1.1.1.1.8.1       tls       if (bytemode == xmmq_mode
   14280  1.1.1.1.8.1       tls 	  || (bytemode == evex_half_bcst_xmmq_mode
   14281  1.1.1.1.8.1       tls 	      && !vex.b))
   14282  1.1.1.1.8.1       tls 	shift -= 1;
   14283  1.1.1.1.8.1       tls       else if (bytemode == xmmqd_mode)
   14284  1.1.1.1.8.1       tls 	shift -= 2;
   14285  1.1.1.1.8.1       tls       else if (bytemode == xmmdw_mode)
   14286  1.1.1.1.8.1       tls 	shift -= 3;
   14287  1.1.1.1.8.1       tls     }
   14288  1.1.1.1.8.1       tls   else
   14289  1.1.1.1.8.1       tls     shift = 0;
   14290          1.1  christos 
   14291          1.1  christos   USED_REX (REX_B);
   14292          1.1  christos   if (intel_syntax)
   14293          1.1  christos     intel_operand_size (bytemode, sizeflag);
   14294          1.1  christos   append_seg ();
   14295          1.1  christos 
   14296          1.1  christos   if ((sizeflag & AFLAG) || address_mode == mode_64bit)
   14297          1.1  christos     {
   14298          1.1  christos       /* 32/64 bit address mode */
   14299          1.1  christos       int havedisp;
   14300          1.1  christos       int havesib;
   14301          1.1  christos       int havebase;
   14302          1.1  christos       int haveindex;
   14303          1.1  christos       int needindex;
   14304          1.1  christos       int base, rbase;
   14305          1.1  christos       int vindex = 0;
   14306          1.1  christos       int scale = 0;
   14307  1.1.1.1.8.1       tls       int addr32flag = !((sizeflag & AFLAG)
   14308  1.1.1.1.8.1       tls 			 || bytemode == v_bnd_mode
   14309  1.1.1.1.8.1       tls 			 || bytemode == bnd_mode);
   14310  1.1.1.1.8.1       tls       const char **indexes64 = names64;
   14311  1.1.1.1.8.1       tls       const char **indexes32 = names32;
   14312          1.1  christos 
   14313          1.1  christos       havesib = 0;
   14314          1.1  christos       havebase = 1;
   14315          1.1  christos       haveindex = 0;
   14316          1.1  christos       base = modrm.rm;
   14317          1.1  christos 
   14318          1.1  christos       if (base == 4)
   14319          1.1  christos 	{
   14320          1.1  christos 	  havesib = 1;
   14321          1.1  christos 	  vindex = sib.index;
   14322          1.1  christos 	  USED_REX (REX_X);
   14323          1.1  christos 	  if (rex & REX_X)
   14324          1.1  christos 	    vindex += 8;
   14325  1.1.1.1.8.1       tls 	  switch (bytemode)
   14326  1.1.1.1.8.1       tls 	    {
   14327  1.1.1.1.8.1       tls 	    case vex_vsib_d_w_dq_mode:
   14328  1.1.1.1.8.1       tls 	    case vex_vsib_q_w_dq_mode:
   14329  1.1.1.1.8.1       tls 	      if (!need_vex)
   14330  1.1.1.1.8.1       tls 		abort ();
   14331  1.1.1.1.8.1       tls 	      if (vex.evex)
   14332  1.1.1.1.8.1       tls 		{
   14333  1.1.1.1.8.1       tls 		  if (!vex.v)
   14334  1.1.1.1.8.1       tls 		    vindex += 16;
   14335  1.1.1.1.8.1       tls 		}
   14336  1.1.1.1.8.1       tls 
   14337  1.1.1.1.8.1       tls 	      haveindex = 1;
   14338  1.1.1.1.8.1       tls 	      switch (vex.length)
   14339  1.1.1.1.8.1       tls 		{
   14340  1.1.1.1.8.1       tls 		case 128:
   14341  1.1.1.1.8.1       tls 		  indexes64 = indexes32 = names_xmm;
   14342  1.1.1.1.8.1       tls 		  break;
   14343  1.1.1.1.8.1       tls 		case 256:
   14344  1.1.1.1.8.1       tls 		  if (!vex.w || bytemode == vex_vsib_q_w_dq_mode)
   14345  1.1.1.1.8.1       tls 		    indexes64 = indexes32 = names_ymm;
   14346  1.1.1.1.8.1       tls 		  else
   14347  1.1.1.1.8.1       tls 		    indexes64 = indexes32 = names_xmm;
   14348  1.1.1.1.8.1       tls 		  break;
   14349  1.1.1.1.8.1       tls 		case 512:
   14350  1.1.1.1.8.1       tls 		  if (!vex.w || bytemode == vex_vsib_q_w_dq_mode)
   14351  1.1.1.1.8.1       tls 		    indexes64 = indexes32 = names_zmm;
   14352  1.1.1.1.8.1       tls 		  else
   14353  1.1.1.1.8.1       tls 		    indexes64 = indexes32 = names_ymm;
   14354  1.1.1.1.8.1       tls 		  break;
   14355  1.1.1.1.8.1       tls 		default:
   14356  1.1.1.1.8.1       tls 		  abort ();
   14357  1.1.1.1.8.1       tls 		}
   14358  1.1.1.1.8.1       tls 	      break;
   14359  1.1.1.1.8.1       tls 	    default:
   14360  1.1.1.1.8.1       tls 	      haveindex = vindex != 4;
   14361  1.1.1.1.8.1       tls 	      break;
   14362  1.1.1.1.8.1       tls 	    }
   14363  1.1.1.1.8.1       tls 	  scale = sib.scale;
   14364  1.1.1.1.8.1       tls 	  base = sib.base;
   14365          1.1  christos 	  codep++;
   14366          1.1  christos 	}
   14367          1.1  christos       rbase = base + add;
   14368          1.1  christos 
   14369          1.1  christos       switch (modrm.mod)
   14370          1.1  christos 	{
   14371          1.1  christos 	case 0:
   14372          1.1  christos 	  if (base == 5)
   14373          1.1  christos 	    {
   14374          1.1  christos 	      havebase = 0;
   14375          1.1  christos 	      if (address_mode == mode_64bit && !havesib)
   14376          1.1  christos 		riprel = 1;
   14377          1.1  christos 	      disp = get32s ();
   14378          1.1  christos 	    }
   14379          1.1  christos 	  break;
   14380          1.1  christos 	case 1:
   14381          1.1  christos 	  FETCH_DATA (the_info, codep + 1);
   14382          1.1  christos 	  disp = *codep++;
   14383          1.1  christos 	  if ((disp & 0x80) != 0)
   14384          1.1  christos 	    disp -= 0x100;
   14385  1.1.1.1.8.1       tls 	  if (vex.evex && shift > 0)
   14386  1.1.1.1.8.1       tls 	    disp <<= shift;
   14387          1.1  christos 	  break;
   14388          1.1  christos 	case 2:
   14389          1.1  christos 	  disp = get32s ();
   14390          1.1  christos 	  break;
   14391          1.1  christos 	}
   14392          1.1  christos 
   14393          1.1  christos       /* In 32bit mode, we need index register to tell [offset] from
   14394          1.1  christos 	 [eiz*1 + offset].  */
   14395          1.1  christos       needindex = (havesib
   14396          1.1  christos 		   && !havebase
   14397          1.1  christos 		   && !haveindex
   14398          1.1  christos 		   && address_mode == mode_32bit);
   14399          1.1  christos       havedisp = (havebase
   14400          1.1  christos 		  || needindex
   14401          1.1  christos 		  || (havesib && (haveindex || scale != 0)));
   14402          1.1  christos 
   14403          1.1  christos       if (!intel_syntax)
   14404          1.1  christos 	if (modrm.mod != 0 || base == 5)
   14405          1.1  christos 	  {
   14406          1.1  christos 	    if (havedisp || riprel)
   14407          1.1  christos 	      print_displacement (scratchbuf, disp);
   14408          1.1  christos 	    else
   14409          1.1  christos 	      print_operand_value (scratchbuf, 1, disp);
   14410          1.1  christos 	    oappend (scratchbuf);
   14411          1.1  christos 	    if (riprel)
   14412          1.1  christos 	      {
   14413          1.1  christos 		set_op (disp, 1);
   14414          1.1  christos 		oappend (sizeflag & AFLAG ? "(%rip)" : "(%eip)");
   14415          1.1  christos 	      }
   14416          1.1  christos 	  }
   14417          1.1  christos 
   14418  1.1.1.1.8.1       tls       if ((havebase || haveindex || riprel)
   14419  1.1.1.1.8.1       tls 	  && (bytemode != v_bnd_mode)
   14420  1.1.1.1.8.1       tls 	  && (bytemode != bnd_mode))
   14421          1.1  christos 	used_prefixes |= PREFIX_ADDR;
   14422          1.1  christos 
   14423          1.1  christos       if (havedisp || (intel_syntax && riprel))
   14424          1.1  christos 	{
   14425          1.1  christos 	  *obufp++ = open_char;
   14426          1.1  christos 	  if (intel_syntax && riprel)
   14427          1.1  christos 	    {
   14428          1.1  christos 	      set_op (disp, 1);
   14429          1.1  christos 	      oappend (sizeflag & AFLAG ? "rip" : "eip");
   14430          1.1  christos 	    }
   14431          1.1  christos 	  *obufp = '\0';
   14432          1.1  christos 	  if (havebase)
   14433  1.1.1.1.8.1       tls 	    oappend (address_mode == mode_64bit && !addr32flag
   14434          1.1  christos 		     ? names64[rbase] : names32[rbase]);
   14435          1.1  christos 	  if (havesib)
   14436          1.1  christos 	    {
   14437          1.1  christos 	      /* ESP/RSP won't allow index.  If base isn't ESP/RSP,
   14438          1.1  christos 		 print index to tell base + index from base.  */
   14439          1.1  christos 	      if (scale != 0
   14440          1.1  christos 		  || needindex
   14441          1.1  christos 		  || haveindex
   14442          1.1  christos 		  || (havebase && base != ESP_REG_NUM))
   14443          1.1  christos 		{
   14444          1.1  christos 		  if (!intel_syntax || havebase)
   14445          1.1  christos 		    {
   14446          1.1  christos 		      *obufp++ = separator_char;
   14447          1.1  christos 		      *obufp = '\0';
   14448          1.1  christos 		    }
   14449          1.1  christos 		  if (haveindex)
   14450  1.1.1.1.8.1       tls 		    oappend (address_mode == mode_64bit && !addr32flag
   14451  1.1.1.1.8.1       tls 			     ? indexes64[vindex] : indexes32[vindex]);
   14452          1.1  christos 		  else
   14453  1.1.1.1.8.1       tls 		    oappend (address_mode == mode_64bit && !addr32flag
   14454          1.1  christos 			     ? index64 : index32);
   14455          1.1  christos 
   14456          1.1  christos 		  *obufp++ = scale_char;
   14457          1.1  christos 		  *obufp = '\0';
   14458          1.1  christos 		  sprintf (scratchbuf, "%d", 1 << scale);
   14459          1.1  christos 		  oappend (scratchbuf);
   14460          1.1  christos 		}
   14461          1.1  christos 	    }
   14462          1.1  christos 	  if (intel_syntax
   14463          1.1  christos 	      && (disp || modrm.mod != 0 || base == 5))
   14464          1.1  christos 	    {
   14465          1.1  christos 	      if (!havedisp || (bfd_signed_vma) disp >= 0)
   14466          1.1  christos 		{
   14467          1.1  christos 		  *obufp++ = '+';
   14468          1.1  christos 		  *obufp = '\0';
   14469          1.1  christos 		}
   14470          1.1  christos 	      else if (modrm.mod != 1 && disp != -disp)
   14471          1.1  christos 		{
   14472          1.1  christos 		  *obufp++ = '-';
   14473          1.1  christos 		  *obufp = '\0';
   14474          1.1  christos 		  disp = - (bfd_signed_vma) disp;
   14475          1.1  christos 		}
   14476          1.1  christos 
   14477          1.1  christos 	      if (havedisp)
   14478          1.1  christos 		print_displacement (scratchbuf, disp);
   14479          1.1  christos 	      else
   14480          1.1  christos 		print_operand_value (scratchbuf, 1, disp);
   14481          1.1  christos 	      oappend (scratchbuf);
   14482          1.1  christos 	    }
   14483          1.1  christos 
   14484          1.1  christos 	  *obufp++ = close_char;
   14485          1.1  christos 	  *obufp = '\0';
   14486          1.1  christos 	}
   14487          1.1  christos       else if (intel_syntax)
   14488          1.1  christos 	{
   14489          1.1  christos 	  if (modrm.mod != 0 || base == 5)
   14490          1.1  christos 	    {
   14491          1.1  christos 	      if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
   14492          1.1  christos 			      | PREFIX_ES | PREFIX_FS | PREFIX_GS))
   14493          1.1  christos 		;
   14494          1.1  christos 	      else
   14495          1.1  christos 		{
   14496          1.1  christos 		  oappend (names_seg[ds_reg - es_reg]);
   14497          1.1  christos 		  oappend (":");
   14498          1.1  christos 		}
   14499          1.1  christos 	      print_operand_value (scratchbuf, 1, disp);
   14500          1.1  christos 	      oappend (scratchbuf);
   14501          1.1  christos 	    }
   14502          1.1  christos 	}
   14503          1.1  christos     }
   14504          1.1  christos   else
   14505          1.1  christos     {
   14506          1.1  christos       /* 16 bit address mode */
   14507          1.1  christos       used_prefixes |= prefixes & PREFIX_ADDR;
   14508          1.1  christos       switch (modrm.mod)
   14509          1.1  christos 	{
   14510          1.1  christos 	case 0:
   14511          1.1  christos 	  if (modrm.rm == 6)
   14512          1.1  christos 	    {
   14513          1.1  christos 	      disp = get16 ();
   14514          1.1  christos 	      if ((disp & 0x8000) != 0)
   14515          1.1  christos 		disp -= 0x10000;
   14516          1.1  christos 	    }
   14517          1.1  christos 	  break;
   14518          1.1  christos 	case 1:
   14519          1.1  christos 	  FETCH_DATA (the_info, codep + 1);
   14520          1.1  christos 	  disp = *codep++;
   14521          1.1  christos 	  if ((disp & 0x80) != 0)
   14522          1.1  christos 	    disp -= 0x100;
   14523          1.1  christos 	  break;
   14524          1.1  christos 	case 2:
   14525          1.1  christos 	  disp = get16 ();
   14526          1.1  christos 	  if ((disp & 0x8000) != 0)
   14527          1.1  christos 	    disp -= 0x10000;
   14528          1.1  christos 	  break;
   14529          1.1  christos 	}
   14530          1.1  christos 
   14531          1.1  christos       if (!intel_syntax)
   14532          1.1  christos 	if (modrm.mod != 0 || modrm.rm == 6)
   14533          1.1  christos 	  {
   14534          1.1  christos 	    print_displacement (scratchbuf, disp);
   14535          1.1  christos 	    oappend (scratchbuf);
   14536          1.1  christos 	  }
   14537          1.1  christos 
   14538          1.1  christos       if (modrm.mod != 0 || modrm.rm != 6)
   14539          1.1  christos 	{
   14540          1.1  christos 	  *obufp++ = open_char;
   14541          1.1  christos 	  *obufp = '\0';
   14542          1.1  christos 	  oappend (index16[modrm.rm]);
   14543          1.1  christos 	  if (intel_syntax
   14544          1.1  christos 	      && (disp || modrm.mod != 0 || modrm.rm == 6))
   14545          1.1  christos 	    {
   14546          1.1  christos 	      if ((bfd_signed_vma) disp >= 0)
   14547          1.1  christos 		{
   14548          1.1  christos 		  *obufp++ = '+';
   14549          1.1  christos 		  *obufp = '\0';
   14550          1.1  christos 		}
   14551          1.1  christos 	      else if (modrm.mod != 1)
   14552          1.1  christos 		{
   14553          1.1  christos 		  *obufp++ = '-';
   14554          1.1  christos 		  *obufp = '\0';
   14555          1.1  christos 		  disp = - (bfd_signed_vma) disp;
   14556          1.1  christos 		}
   14557          1.1  christos 
   14558          1.1  christos 	      print_displacement (scratchbuf, disp);
   14559          1.1  christos 	      oappend (scratchbuf);
   14560          1.1  christos 	    }
   14561          1.1  christos 
   14562          1.1  christos 	  *obufp++ = close_char;
   14563          1.1  christos 	  *obufp = '\0';
   14564          1.1  christos 	}
   14565          1.1  christos       else if (intel_syntax)
   14566          1.1  christos 	{
   14567          1.1  christos 	  if (prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
   14568          1.1  christos 			  | PREFIX_ES | PREFIX_FS | PREFIX_GS))
   14569          1.1  christos 	    ;
   14570          1.1  christos 	  else
   14571          1.1  christos 	    {
   14572          1.1  christos 	      oappend (names_seg[ds_reg - es_reg]);
   14573          1.1  christos 	      oappend (":");
   14574          1.1  christos 	    }
   14575          1.1  christos 	  print_operand_value (scratchbuf, 1, disp & 0xffff);
   14576          1.1  christos 	  oappend (scratchbuf);
   14577          1.1  christos 	}
   14578          1.1  christos     }
   14579  1.1.1.1.8.1       tls   if (vex.evex && vex.b
   14580  1.1.1.1.8.1       tls       && (bytemode == x_mode
   14581  1.1.1.1.8.1       tls 	  || bytemode == evex_half_bcst_xmmq_mode))
   14582  1.1.1.1.8.1       tls     {
   14583  1.1.1.1.8.1       tls       if (vex.w || bytemode == evex_half_bcst_xmmq_mode)
   14584  1.1.1.1.8.1       tls 	oappend ("{1to8}");
   14585  1.1.1.1.8.1       tls       else
   14586  1.1.1.1.8.1       tls 	oappend ("{1to16}");
   14587  1.1.1.1.8.1       tls     }
   14588          1.1  christos }
   14589          1.1  christos 
   14590          1.1  christos static void
   14591          1.1  christos OP_E (int bytemode, int sizeflag)
   14592          1.1  christos {
   14593          1.1  christos   /* Skip mod/rm byte.  */
   14594          1.1  christos   MODRM_CHECK;
   14595          1.1  christos   codep++;
   14596          1.1  christos 
   14597          1.1  christos   if (modrm.mod == 3)
   14598          1.1  christos     OP_E_register (bytemode, sizeflag);
   14599          1.1  christos   else
   14600          1.1  christos     OP_E_memory (bytemode, sizeflag);
   14601          1.1  christos }
   14602          1.1  christos 
   14603          1.1  christos static void
   14604          1.1  christos OP_G (int bytemode, int sizeflag)
   14605          1.1  christos {
   14606          1.1  christos   int add = 0;
   14607          1.1  christos   USED_REX (REX_R);
   14608          1.1  christos   if (rex & REX_R)
   14609          1.1  christos     add += 8;
   14610          1.1  christos   switch (bytemode)
   14611          1.1  christos     {
   14612          1.1  christos     case b_mode:
   14613          1.1  christos       USED_REX (0);
   14614          1.1  christos       if (rex)
   14615          1.1  christos 	oappend (names8rex[modrm.reg + add]);
   14616          1.1  christos       else
   14617          1.1  christos 	oappend (names8[modrm.reg + add]);
   14618          1.1  christos       break;
   14619          1.1  christos     case w_mode:
   14620          1.1  christos       oappend (names16[modrm.reg + add]);
   14621          1.1  christos       break;
   14622          1.1  christos     case d_mode:
   14623          1.1  christos       oappend (names32[modrm.reg + add]);
   14624          1.1  christos       break;
   14625          1.1  christos     case q_mode:
   14626          1.1  christos       oappend (names64[modrm.reg + add]);
   14627          1.1  christos       break;
   14628  1.1.1.1.8.1       tls     case bnd_mode:
   14629  1.1.1.1.8.1       tls       oappend (names_bnd[modrm.reg]);
   14630  1.1.1.1.8.1       tls       break;
   14631          1.1  christos     case v_mode:
   14632          1.1  christos     case dq_mode:
   14633          1.1  christos     case dqb_mode:
   14634          1.1  christos     case dqd_mode:
   14635          1.1  christos     case dqw_mode:
   14636          1.1  christos       USED_REX (REX_W);
   14637          1.1  christos       if (rex & REX_W)
   14638          1.1  christos 	oappend (names64[modrm.reg + add]);
   14639          1.1  christos       else
   14640          1.1  christos 	{
   14641          1.1  christos 	  if ((sizeflag & DFLAG) || bytemode != v_mode)
   14642          1.1  christos 	    oappend (names32[modrm.reg + add]);
   14643          1.1  christos 	  else
   14644          1.1  christos 	    oappend (names16[modrm.reg + add]);
   14645          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   14646          1.1  christos 	}
   14647          1.1  christos       break;
   14648          1.1  christos     case m_mode:
   14649          1.1  christos       if (address_mode == mode_64bit)
   14650          1.1  christos 	oappend (names64[modrm.reg + add]);
   14651          1.1  christos       else
   14652          1.1  christos 	oappend (names32[modrm.reg + add]);
   14653          1.1  christos       break;
   14654  1.1.1.1.8.1       tls     case mask_mode:
   14655  1.1.1.1.8.1       tls       oappend (names_mask[modrm.reg + add]);
   14656  1.1.1.1.8.1       tls       break;
   14657          1.1  christos     default:
   14658          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   14659          1.1  christos       break;
   14660          1.1  christos     }
   14661          1.1  christos }
   14662          1.1  christos 
   14663          1.1  christos static bfd_vma
   14664          1.1  christos get64 (void)
   14665          1.1  christos {
   14666          1.1  christos   bfd_vma x;
   14667          1.1  christos #ifdef BFD64
   14668          1.1  christos   unsigned int a;
   14669          1.1  christos   unsigned int b;
   14670          1.1  christos 
   14671          1.1  christos   FETCH_DATA (the_info, codep + 8);
   14672          1.1  christos   a = *codep++ & 0xff;
   14673          1.1  christos   a |= (*codep++ & 0xff) << 8;
   14674          1.1  christos   a |= (*codep++ & 0xff) << 16;
   14675          1.1  christos   a |= (*codep++ & 0xff) << 24;
   14676          1.1  christos   b = *codep++ & 0xff;
   14677          1.1  christos   b |= (*codep++ & 0xff) << 8;
   14678          1.1  christos   b |= (*codep++ & 0xff) << 16;
   14679          1.1  christos   b |= (*codep++ & 0xff) << 24;
   14680          1.1  christos   x = a + ((bfd_vma) b << 32);
   14681          1.1  christos #else
   14682          1.1  christos   abort ();
   14683          1.1  christos   x = 0;
   14684          1.1  christos #endif
   14685          1.1  christos   return x;
   14686          1.1  christos }
   14687          1.1  christos 
   14688          1.1  christos static bfd_signed_vma
   14689          1.1  christos get32 (void)
   14690          1.1  christos {
   14691          1.1  christos   bfd_signed_vma x = 0;
   14692          1.1  christos 
   14693          1.1  christos   FETCH_DATA (the_info, codep + 4);
   14694          1.1  christos   x = *codep++ & (bfd_signed_vma) 0xff;
   14695          1.1  christos   x |= (*codep++ & (bfd_signed_vma) 0xff) << 8;
   14696          1.1  christos   x |= (*codep++ & (bfd_signed_vma) 0xff) << 16;
   14697          1.1  christos   x |= (*codep++ & (bfd_signed_vma) 0xff) << 24;
   14698          1.1  christos   return x;
   14699          1.1  christos }
   14700          1.1  christos 
   14701          1.1  christos static bfd_signed_vma
   14702          1.1  christos get32s (void)
   14703          1.1  christos {
   14704          1.1  christos   bfd_signed_vma x = 0;
   14705          1.1  christos 
   14706          1.1  christos   FETCH_DATA (the_info, codep + 4);
   14707          1.1  christos   x = *codep++ & (bfd_signed_vma) 0xff;
   14708          1.1  christos   x |= (*codep++ & (bfd_signed_vma) 0xff) << 8;
   14709          1.1  christos   x |= (*codep++ & (bfd_signed_vma) 0xff) << 16;
   14710          1.1  christos   x |= (*codep++ & (bfd_signed_vma) 0xff) << 24;
   14711          1.1  christos 
   14712          1.1  christos   x = (x ^ ((bfd_signed_vma) 1 << 31)) - ((bfd_signed_vma) 1 << 31);
   14713          1.1  christos 
   14714          1.1  christos   return x;
   14715          1.1  christos }
   14716          1.1  christos 
   14717          1.1  christos static int
   14718          1.1  christos get16 (void)
   14719          1.1  christos {
   14720          1.1  christos   int x = 0;
   14721          1.1  christos 
   14722          1.1  christos   FETCH_DATA (the_info, codep + 2);
   14723          1.1  christos   x = *codep++ & 0xff;
   14724          1.1  christos   x |= (*codep++ & 0xff) << 8;
   14725          1.1  christos   return x;
   14726          1.1  christos }
   14727          1.1  christos 
   14728          1.1  christos static void
   14729          1.1  christos set_op (bfd_vma op, int riprel)
   14730          1.1  christos {
   14731          1.1  christos   op_index[op_ad] = op_ad;
   14732          1.1  christos   if (address_mode == mode_64bit)
   14733          1.1  christos     {
   14734          1.1  christos       op_address[op_ad] = op;
   14735          1.1  christos       op_riprel[op_ad] = riprel;
   14736          1.1  christos     }
   14737          1.1  christos   else
   14738          1.1  christos     {
   14739          1.1  christos       /* Mask to get a 32-bit address.  */
   14740          1.1  christos       op_address[op_ad] = op & 0xffffffff;
   14741          1.1  christos       op_riprel[op_ad] = riprel & 0xffffffff;
   14742          1.1  christos     }
   14743          1.1  christos }
   14744          1.1  christos 
   14745          1.1  christos static void
   14746          1.1  christos OP_REG (int code, int sizeflag)
   14747          1.1  christos {
   14748          1.1  christos   const char *s;
   14749          1.1  christos   int add;
   14750  1.1.1.1.8.1       tls 
   14751  1.1.1.1.8.1       tls   switch (code)
   14752  1.1.1.1.8.1       tls     {
   14753  1.1.1.1.8.1       tls     case es_reg: case ss_reg: case cs_reg:
   14754  1.1.1.1.8.1       tls     case ds_reg: case fs_reg: case gs_reg:
   14755  1.1.1.1.8.1       tls       oappend (names_seg[code - es_reg]);
   14756  1.1.1.1.8.1       tls       return;
   14757  1.1.1.1.8.1       tls     }
   14758  1.1.1.1.8.1       tls 
   14759          1.1  christos   USED_REX (REX_B);
   14760          1.1  christos   if (rex & REX_B)
   14761          1.1  christos     add = 8;
   14762          1.1  christos   else
   14763          1.1  christos     add = 0;
   14764          1.1  christos 
   14765          1.1  christos   switch (code)
   14766          1.1  christos     {
   14767          1.1  christos     case ax_reg: case cx_reg: case dx_reg: case bx_reg:
   14768          1.1  christos     case sp_reg: case bp_reg: case si_reg: case di_reg:
   14769          1.1  christos       s = names16[code - ax_reg + add];
   14770          1.1  christos       break;
   14771          1.1  christos     case al_reg: case ah_reg: case cl_reg: case ch_reg:
   14772          1.1  christos     case dl_reg: case dh_reg: case bl_reg: case bh_reg:
   14773          1.1  christos       USED_REX (0);
   14774          1.1  christos       if (rex)
   14775          1.1  christos 	s = names8rex[code - al_reg + add];
   14776          1.1  christos       else
   14777          1.1  christos 	s = names8[code - al_reg];
   14778          1.1  christos       break;
   14779          1.1  christos     case rAX_reg: case rCX_reg: case rDX_reg: case rBX_reg:
   14780          1.1  christos     case rSP_reg: case rBP_reg: case rSI_reg: case rDI_reg:
   14781  1.1.1.1.8.1       tls       if (address_mode == mode_64bit
   14782  1.1.1.1.8.1       tls 	  && ((sizeflag & DFLAG) || (rex & REX_W)))
   14783          1.1  christos 	{
   14784          1.1  christos 	  s = names64[code - rAX_reg + add];
   14785          1.1  christos 	  break;
   14786          1.1  christos 	}
   14787          1.1  christos       code += eAX_reg - rAX_reg;
   14788          1.1  christos       /* Fall through.  */
   14789          1.1  christos     case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
   14790          1.1  christos     case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
   14791          1.1  christos       USED_REX (REX_W);
   14792          1.1  christos       if (rex & REX_W)
   14793          1.1  christos 	s = names64[code - eAX_reg + add];
   14794          1.1  christos       else
   14795          1.1  christos 	{
   14796          1.1  christos 	  if (sizeflag & DFLAG)
   14797          1.1  christos 	    s = names32[code - eAX_reg + add];
   14798          1.1  christos 	  else
   14799          1.1  christos 	    s = names16[code - eAX_reg + add];
   14800          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   14801          1.1  christos 	}
   14802          1.1  christos       break;
   14803          1.1  christos     default:
   14804          1.1  christos       s = INTERNAL_DISASSEMBLER_ERROR;
   14805          1.1  christos       break;
   14806          1.1  christos     }
   14807          1.1  christos   oappend (s);
   14808          1.1  christos }
   14809          1.1  christos 
   14810          1.1  christos static void
   14811          1.1  christos OP_IMREG (int code, int sizeflag)
   14812          1.1  christos {
   14813          1.1  christos   const char *s;
   14814          1.1  christos 
   14815          1.1  christos   switch (code)
   14816          1.1  christos     {
   14817          1.1  christos     case indir_dx_reg:
   14818          1.1  christos       if (intel_syntax)
   14819          1.1  christos 	s = "dx";
   14820          1.1  christos       else
   14821          1.1  christos 	s = "(%dx)";
   14822          1.1  christos       break;
   14823          1.1  christos     case ax_reg: case cx_reg: case dx_reg: case bx_reg:
   14824          1.1  christos     case sp_reg: case bp_reg: case si_reg: case di_reg:
   14825          1.1  christos       s = names16[code - ax_reg];
   14826          1.1  christos       break;
   14827          1.1  christos     case es_reg: case ss_reg: case cs_reg:
   14828          1.1  christos     case ds_reg: case fs_reg: case gs_reg:
   14829          1.1  christos       s = names_seg[code - es_reg];
   14830          1.1  christos       break;
   14831          1.1  christos     case al_reg: case ah_reg: case cl_reg: case ch_reg:
   14832          1.1  christos     case dl_reg: case dh_reg: case bl_reg: case bh_reg:
   14833          1.1  christos       USED_REX (0);
   14834          1.1  christos       if (rex)
   14835          1.1  christos 	s = names8rex[code - al_reg];
   14836          1.1  christos       else
   14837          1.1  christos 	s = names8[code - al_reg];
   14838          1.1  christos       break;
   14839          1.1  christos     case eAX_reg: case eCX_reg: case eDX_reg: case eBX_reg:
   14840          1.1  christos     case eSP_reg: case eBP_reg: case eSI_reg: case eDI_reg:
   14841          1.1  christos       USED_REX (REX_W);
   14842          1.1  christos       if (rex & REX_W)
   14843          1.1  christos 	s = names64[code - eAX_reg];
   14844          1.1  christos       else
   14845          1.1  christos 	{
   14846          1.1  christos 	  if (sizeflag & DFLAG)
   14847          1.1  christos 	    s = names32[code - eAX_reg];
   14848          1.1  christos 	  else
   14849          1.1  christos 	    s = names16[code - eAX_reg];
   14850          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   14851          1.1  christos 	}
   14852          1.1  christos       break;
   14853          1.1  christos     case z_mode_ax_reg:
   14854          1.1  christos       if ((rex & REX_W) || (sizeflag & DFLAG))
   14855          1.1  christos 	s = *names32;
   14856          1.1  christos       else
   14857          1.1  christos 	s = *names16;
   14858          1.1  christos       if (!(rex & REX_W))
   14859          1.1  christos 	used_prefixes |= (prefixes & PREFIX_DATA);
   14860          1.1  christos       break;
   14861          1.1  christos     default:
   14862          1.1  christos       s = INTERNAL_DISASSEMBLER_ERROR;
   14863          1.1  christos       break;
   14864          1.1  christos     }
   14865          1.1  christos   oappend (s);
   14866          1.1  christos }
   14867          1.1  christos 
   14868          1.1  christos static void
   14869          1.1  christos OP_I (int bytemode, int sizeflag)
   14870          1.1  christos {
   14871          1.1  christos   bfd_signed_vma op;
   14872          1.1  christos   bfd_signed_vma mask = -1;
   14873          1.1  christos 
   14874          1.1  christos   switch (bytemode)
   14875          1.1  christos     {
   14876          1.1  christos     case b_mode:
   14877          1.1  christos       FETCH_DATA (the_info, codep + 1);
   14878          1.1  christos       op = *codep++;
   14879          1.1  christos       mask = 0xff;
   14880          1.1  christos       break;
   14881          1.1  christos     case q_mode:
   14882          1.1  christos       if (address_mode == mode_64bit)
   14883          1.1  christos 	{
   14884          1.1  christos 	  op = get32s ();
   14885          1.1  christos 	  break;
   14886          1.1  christos 	}
   14887          1.1  christos       /* Fall through.  */
   14888          1.1  christos     case v_mode:
   14889          1.1  christos       USED_REX (REX_W);
   14890          1.1  christos       if (rex & REX_W)
   14891          1.1  christos 	op = get32s ();
   14892          1.1  christos       else
   14893          1.1  christos 	{
   14894          1.1  christos 	  if (sizeflag & DFLAG)
   14895          1.1  christos 	    {
   14896          1.1  christos 	      op = get32 ();
   14897          1.1  christos 	      mask = 0xffffffff;
   14898          1.1  christos 	    }
   14899          1.1  christos 	  else
   14900          1.1  christos 	    {
   14901          1.1  christos 	      op = get16 ();
   14902          1.1  christos 	      mask = 0xfffff;
   14903          1.1  christos 	    }
   14904          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   14905          1.1  christos 	}
   14906          1.1  christos       break;
   14907          1.1  christos     case w_mode:
   14908          1.1  christos       mask = 0xfffff;
   14909          1.1  christos       op = get16 ();
   14910          1.1  christos       break;
   14911          1.1  christos     case const_1_mode:
   14912          1.1  christos       if (intel_syntax)
   14913  1.1.1.1.8.1       tls 	oappend ("1");
   14914          1.1  christos       return;
   14915          1.1  christos     default:
   14916          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   14917          1.1  christos       return;
   14918          1.1  christos     }
   14919          1.1  christos 
   14920          1.1  christos   op &= mask;
   14921          1.1  christos   scratchbuf[0] = '$';
   14922          1.1  christos   print_operand_value (scratchbuf + 1, 1, op);
   14923  1.1.1.1.8.1       tls   oappend_maybe_intel (scratchbuf);
   14924          1.1  christos   scratchbuf[0] = '\0';
   14925          1.1  christos }
   14926          1.1  christos 
   14927          1.1  christos static void
   14928          1.1  christos OP_I64 (int bytemode, int sizeflag)
   14929          1.1  christos {
   14930          1.1  christos   bfd_signed_vma op;
   14931          1.1  christos   bfd_signed_vma mask = -1;
   14932          1.1  christos 
   14933          1.1  christos   if (address_mode != mode_64bit)
   14934          1.1  christos     {
   14935          1.1  christos       OP_I (bytemode, sizeflag);
   14936          1.1  christos       return;
   14937          1.1  christos     }
   14938          1.1  christos 
   14939          1.1  christos   switch (bytemode)
   14940          1.1  christos     {
   14941          1.1  christos     case b_mode:
   14942          1.1  christos       FETCH_DATA (the_info, codep + 1);
   14943          1.1  christos       op = *codep++;
   14944          1.1  christos       mask = 0xff;
   14945          1.1  christos       break;
   14946          1.1  christos     case v_mode:
   14947          1.1  christos       USED_REX (REX_W);
   14948          1.1  christos       if (rex & REX_W)
   14949          1.1  christos 	op = get64 ();
   14950          1.1  christos       else
   14951          1.1  christos 	{
   14952          1.1  christos 	  if (sizeflag & DFLAG)
   14953          1.1  christos 	    {
   14954          1.1  christos 	      op = get32 ();
   14955          1.1  christos 	      mask = 0xffffffff;
   14956          1.1  christos 	    }
   14957          1.1  christos 	  else
   14958          1.1  christos 	    {
   14959          1.1  christos 	      op = get16 ();
   14960          1.1  christos 	      mask = 0xfffff;
   14961          1.1  christos 	    }
   14962          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   14963          1.1  christos 	}
   14964          1.1  christos       break;
   14965          1.1  christos     case w_mode:
   14966          1.1  christos       mask = 0xfffff;
   14967          1.1  christos       op = get16 ();
   14968          1.1  christos       break;
   14969          1.1  christos     default:
   14970          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   14971          1.1  christos       return;
   14972          1.1  christos     }
   14973          1.1  christos 
   14974          1.1  christos   op &= mask;
   14975          1.1  christos   scratchbuf[0] = '$';
   14976          1.1  christos   print_operand_value (scratchbuf + 1, 1, op);
   14977  1.1.1.1.8.1       tls   oappend_maybe_intel (scratchbuf);
   14978          1.1  christos   scratchbuf[0] = '\0';
   14979          1.1  christos }
   14980          1.1  christos 
   14981          1.1  christos static void
   14982          1.1  christos OP_sI (int bytemode, int sizeflag)
   14983          1.1  christos {
   14984          1.1  christos   bfd_signed_vma op;
   14985          1.1  christos 
   14986          1.1  christos   switch (bytemode)
   14987          1.1  christos     {
   14988          1.1  christos     case b_mode:
   14989          1.1  christos     case b_T_mode:
   14990          1.1  christos       FETCH_DATA (the_info, codep + 1);
   14991          1.1  christos       op = *codep++;
   14992          1.1  christos       if ((op & 0x80) != 0)
   14993          1.1  christos 	op -= 0x100;
   14994          1.1  christos       if (bytemode == b_T_mode)
   14995          1.1  christos 	{
   14996          1.1  christos 	  if (address_mode != mode_64bit
   14997  1.1.1.1.8.1       tls 	      || !((sizeflag & DFLAG) || (rex & REX_W)))
   14998          1.1  christos 	    {
   14999  1.1.1.1.8.1       tls 	      /* The operand-size prefix is overridden by a REX prefix.  */
   15000  1.1.1.1.8.1       tls 	      if ((sizeflag & DFLAG) || (rex & REX_W))
   15001          1.1  christos 		op &= 0xffffffff;
   15002          1.1  christos 	      else
   15003          1.1  christos 		op &= 0xffff;
   15004          1.1  christos 	  }
   15005          1.1  christos 	}
   15006          1.1  christos       else
   15007          1.1  christos 	{
   15008          1.1  christos 	  if (!(rex & REX_W))
   15009          1.1  christos 	    {
   15010          1.1  christos 	      if (sizeflag & DFLAG)
   15011          1.1  christos 		op &= 0xffffffff;
   15012          1.1  christos 	      else
   15013          1.1  christos 		op &= 0xffff;
   15014          1.1  christos 	    }
   15015          1.1  christos 	}
   15016          1.1  christos       break;
   15017          1.1  christos     case v_mode:
   15018  1.1.1.1.8.1       tls       /* The operand-size prefix is overridden by a REX prefix.  */
   15019  1.1.1.1.8.1       tls       if ((sizeflag & DFLAG) || (rex & REX_W))
   15020          1.1  christos 	op = get32s ();
   15021          1.1  christos       else
   15022          1.1  christos 	op = get16 ();
   15023          1.1  christos       break;
   15024          1.1  christos     default:
   15025          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   15026          1.1  christos       return;
   15027          1.1  christos     }
   15028          1.1  christos 
   15029          1.1  christos   scratchbuf[0] = '$';
   15030          1.1  christos   print_operand_value (scratchbuf + 1, 1, op);
   15031  1.1.1.1.8.1       tls   oappend_maybe_intel (scratchbuf);
   15032          1.1  christos }
   15033          1.1  christos 
   15034          1.1  christos static void
   15035          1.1  christos OP_J (int bytemode, int sizeflag)
   15036          1.1  christos {
   15037          1.1  christos   bfd_vma disp;
   15038          1.1  christos   bfd_vma mask = -1;
   15039          1.1  christos   bfd_vma segment = 0;
   15040          1.1  christos 
   15041          1.1  christos   switch (bytemode)
   15042          1.1  christos     {
   15043          1.1  christos     case b_mode:
   15044          1.1  christos       FETCH_DATA (the_info, codep + 1);
   15045          1.1  christos       disp = *codep++;
   15046          1.1  christos       if ((disp & 0x80) != 0)
   15047          1.1  christos 	disp -= 0x100;
   15048          1.1  christos       break;
   15049          1.1  christos     case v_mode:
   15050          1.1  christos       USED_REX (REX_W);
   15051          1.1  christos       if ((sizeflag & DFLAG) || (rex & REX_W))
   15052          1.1  christos 	disp = get32s ();
   15053          1.1  christos       else
   15054          1.1  christos 	{
   15055          1.1  christos 	  disp = get16 ();
   15056          1.1  christos 	  if ((disp & 0x8000) != 0)
   15057          1.1  christos 	    disp -= 0x10000;
   15058          1.1  christos 	  /* In 16bit mode, address is wrapped around at 64k within
   15059          1.1  christos 	     the same segment.  Otherwise, a data16 prefix on a jump
   15060          1.1  christos 	     instruction means that the pc is masked to 16 bits after
   15061          1.1  christos 	     the displacement is added!  */
   15062          1.1  christos 	  mask = 0xffff;
   15063          1.1  christos 	  if ((prefixes & PREFIX_DATA) == 0)
   15064          1.1  christos 	    segment = ((start_pc + codep - start_codep)
   15065          1.1  christos 		       & ~((bfd_vma) 0xffff));
   15066          1.1  christos 	}
   15067          1.1  christos       if (!(rex & REX_W))
   15068          1.1  christos 	used_prefixes |= (prefixes & PREFIX_DATA);
   15069          1.1  christos       break;
   15070          1.1  christos     default:
   15071          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   15072          1.1  christos       return;
   15073          1.1  christos     }
   15074          1.1  christos   disp = ((start_pc + (codep - start_codep) + disp) & mask) | segment;
   15075          1.1  christos   set_op (disp, 0);
   15076          1.1  christos   print_operand_value (scratchbuf, 1, disp);
   15077          1.1  christos   oappend (scratchbuf);
   15078          1.1  christos }
   15079          1.1  christos 
   15080          1.1  christos static void
   15081          1.1  christos OP_SEG (int bytemode, int sizeflag)
   15082          1.1  christos {
   15083          1.1  christos   if (bytemode == w_mode)
   15084          1.1  christos     oappend (names_seg[modrm.reg]);
   15085          1.1  christos   else
   15086          1.1  christos     OP_E (modrm.mod == 3 ? bytemode : w_mode, sizeflag);
   15087          1.1  christos }
   15088          1.1  christos 
   15089          1.1  christos static void
   15090          1.1  christos OP_DIR (int dummy ATTRIBUTE_UNUSED, int sizeflag)
   15091          1.1  christos {
   15092          1.1  christos   int seg, offset;
   15093          1.1  christos 
   15094          1.1  christos   if (sizeflag & DFLAG)
   15095          1.1  christos     {
   15096          1.1  christos       offset = get32 ();
   15097          1.1  christos       seg = get16 ();
   15098          1.1  christos     }
   15099          1.1  christos   else
   15100          1.1  christos     {
   15101          1.1  christos       offset = get16 ();
   15102          1.1  christos       seg = get16 ();
   15103          1.1  christos     }
   15104          1.1  christos   used_prefixes |= (prefixes & PREFIX_DATA);
   15105          1.1  christos   if (intel_syntax)
   15106          1.1  christos     sprintf (scratchbuf, "0x%x:0x%x", seg, offset);
   15107          1.1  christos   else
   15108          1.1  christos     sprintf (scratchbuf, "$0x%x,$0x%x", seg, offset);
   15109          1.1  christos   oappend (scratchbuf);
   15110          1.1  christos }
   15111          1.1  christos 
   15112          1.1  christos static void
   15113          1.1  christos OP_OFF (int bytemode, int sizeflag)
   15114          1.1  christos {
   15115          1.1  christos   bfd_vma off;
   15116          1.1  christos 
   15117          1.1  christos   if (intel_syntax && (sizeflag & SUFFIX_ALWAYS))
   15118          1.1  christos     intel_operand_size (bytemode, sizeflag);
   15119          1.1  christos   append_seg ();
   15120          1.1  christos 
   15121          1.1  christos   if ((sizeflag & AFLAG) || address_mode == mode_64bit)
   15122          1.1  christos     off = get32 ();
   15123          1.1  christos   else
   15124          1.1  christos     off = get16 ();
   15125          1.1  christos 
   15126          1.1  christos   if (intel_syntax)
   15127          1.1  christos     {
   15128          1.1  christos       if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
   15129          1.1  christos 			| PREFIX_ES | PREFIX_FS | PREFIX_GS)))
   15130          1.1  christos 	{
   15131          1.1  christos 	  oappend (names_seg[ds_reg - es_reg]);
   15132          1.1  christos 	  oappend (":");
   15133          1.1  christos 	}
   15134          1.1  christos     }
   15135          1.1  christos   print_operand_value (scratchbuf, 1, off);
   15136          1.1  christos   oappend (scratchbuf);
   15137          1.1  christos }
   15138          1.1  christos 
   15139          1.1  christos static void
   15140          1.1  christos OP_OFF64 (int bytemode, int sizeflag)
   15141          1.1  christos {
   15142          1.1  christos   bfd_vma off;
   15143          1.1  christos 
   15144          1.1  christos   if (address_mode != mode_64bit
   15145          1.1  christos       || (prefixes & PREFIX_ADDR))
   15146          1.1  christos     {
   15147          1.1  christos       OP_OFF (bytemode, sizeflag);
   15148          1.1  christos       return;
   15149          1.1  christos     }
   15150          1.1  christos 
   15151          1.1  christos   if (intel_syntax && (sizeflag & SUFFIX_ALWAYS))
   15152          1.1  christos     intel_operand_size (bytemode, sizeflag);
   15153          1.1  christos   append_seg ();
   15154          1.1  christos 
   15155          1.1  christos   off = get64 ();
   15156          1.1  christos 
   15157          1.1  christos   if (intel_syntax)
   15158          1.1  christos     {
   15159          1.1  christos       if (!(prefixes & (PREFIX_CS | PREFIX_SS | PREFIX_DS
   15160          1.1  christos 			| PREFIX_ES | PREFIX_FS | PREFIX_GS)))
   15161          1.1  christos 	{
   15162          1.1  christos 	  oappend (names_seg[ds_reg - es_reg]);
   15163          1.1  christos 	  oappend (":");
   15164          1.1  christos 	}
   15165          1.1  christos     }
   15166          1.1  christos   print_operand_value (scratchbuf, 1, off);
   15167          1.1  christos   oappend (scratchbuf);
   15168          1.1  christos }
   15169          1.1  christos 
   15170          1.1  christos static void
   15171          1.1  christos ptr_reg (int code, int sizeflag)
   15172          1.1  christos {
   15173          1.1  christos   const char *s;
   15174          1.1  christos 
   15175          1.1  christos   *obufp++ = open_char;
   15176          1.1  christos   used_prefixes |= (prefixes & PREFIX_ADDR);
   15177          1.1  christos   if (address_mode == mode_64bit)
   15178          1.1  christos     {
   15179          1.1  christos       if (!(sizeflag & AFLAG))
   15180          1.1  christos 	s = names32[code - eAX_reg];
   15181          1.1  christos       else
   15182          1.1  christos 	s = names64[code - eAX_reg];
   15183          1.1  christos     }
   15184          1.1  christos   else if (sizeflag & AFLAG)
   15185          1.1  christos     s = names32[code - eAX_reg];
   15186          1.1  christos   else
   15187          1.1  christos     s = names16[code - eAX_reg];
   15188          1.1  christos   oappend (s);
   15189          1.1  christos   *obufp++ = close_char;
   15190          1.1  christos   *obufp = 0;
   15191          1.1  christos }
   15192          1.1  christos 
   15193          1.1  christos static void
   15194          1.1  christos OP_ESreg (int code, int sizeflag)
   15195          1.1  christos {
   15196          1.1  christos   if (intel_syntax)
   15197          1.1  christos     {
   15198          1.1  christos       switch (codep[-1])
   15199          1.1  christos 	{
   15200          1.1  christos 	case 0x6d:	/* insw/insl */
   15201          1.1  christos 	  intel_operand_size (z_mode, sizeflag);
   15202          1.1  christos 	  break;
   15203          1.1  christos 	case 0xa5:	/* movsw/movsl/movsq */
   15204          1.1  christos 	case 0xa7:	/* cmpsw/cmpsl/cmpsq */
   15205          1.1  christos 	case 0xab:	/* stosw/stosl */
   15206          1.1  christos 	case 0xaf:	/* scasw/scasl */
   15207          1.1  christos 	  intel_operand_size (v_mode, sizeflag);
   15208          1.1  christos 	  break;
   15209          1.1  christos 	default:
   15210          1.1  christos 	  intel_operand_size (b_mode, sizeflag);
   15211          1.1  christos 	}
   15212          1.1  christos     }
   15213  1.1.1.1.8.1       tls   oappend_maybe_intel ("%es:");
   15214          1.1  christos   ptr_reg (code, sizeflag);
   15215          1.1  christos }
   15216          1.1  christos 
   15217          1.1  christos static void
   15218          1.1  christos OP_DSreg (int code, int sizeflag)
   15219          1.1  christos {
   15220          1.1  christos   if (intel_syntax)
   15221          1.1  christos     {
   15222          1.1  christos       switch (codep[-1])
   15223          1.1  christos 	{
   15224          1.1  christos 	case 0x6f:	/* outsw/outsl */
   15225          1.1  christos 	  intel_operand_size (z_mode, sizeflag);
   15226          1.1  christos 	  break;
   15227          1.1  christos 	case 0xa5:	/* movsw/movsl/movsq */
   15228          1.1  christos 	case 0xa7:	/* cmpsw/cmpsl/cmpsq */
   15229          1.1  christos 	case 0xad:	/* lodsw/lodsl/lodsq */
   15230          1.1  christos 	  intel_operand_size (v_mode, sizeflag);
   15231          1.1  christos 	  break;
   15232          1.1  christos 	default:
   15233          1.1  christos 	  intel_operand_size (b_mode, sizeflag);
   15234          1.1  christos 	}
   15235          1.1  christos     }
   15236          1.1  christos   if ((prefixes
   15237          1.1  christos        & (PREFIX_CS
   15238          1.1  christos 	  | PREFIX_DS
   15239          1.1  christos 	  | PREFIX_SS
   15240          1.1  christos 	  | PREFIX_ES
   15241          1.1  christos 	  | PREFIX_FS
   15242          1.1  christos 	  | PREFIX_GS)) == 0)
   15243          1.1  christos     prefixes |= PREFIX_DS;
   15244          1.1  christos   append_seg ();
   15245          1.1  christos   ptr_reg (code, sizeflag);
   15246          1.1  christos }
   15247          1.1  christos 
   15248          1.1  christos static void
   15249          1.1  christos OP_C (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15250          1.1  christos {
   15251          1.1  christos   int add;
   15252          1.1  christos   if (rex & REX_R)
   15253          1.1  christos     {
   15254          1.1  christos       USED_REX (REX_R);
   15255          1.1  christos       add = 8;
   15256          1.1  christos     }
   15257          1.1  christos   else if (address_mode != mode_64bit && (prefixes & PREFIX_LOCK))
   15258          1.1  christos     {
   15259          1.1  christos       all_prefixes[last_lock_prefix] = 0;
   15260          1.1  christos       used_prefixes |= PREFIX_LOCK;
   15261          1.1  christos       add = 8;
   15262          1.1  christos     }
   15263          1.1  christos   else
   15264          1.1  christos     add = 0;
   15265          1.1  christos   sprintf (scratchbuf, "%%cr%d", modrm.reg + add);
   15266  1.1.1.1.8.1       tls   oappend_maybe_intel (scratchbuf);
   15267          1.1  christos }
   15268          1.1  christos 
   15269          1.1  christos static void
   15270          1.1  christos OP_D (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15271          1.1  christos {
   15272          1.1  christos   int add;
   15273          1.1  christos   USED_REX (REX_R);
   15274          1.1  christos   if (rex & REX_R)
   15275          1.1  christos     add = 8;
   15276          1.1  christos   else
   15277          1.1  christos     add = 0;
   15278          1.1  christos   if (intel_syntax)
   15279          1.1  christos     sprintf (scratchbuf, "db%d", modrm.reg + add);
   15280          1.1  christos   else
   15281          1.1  christos     sprintf (scratchbuf, "%%db%d", modrm.reg + add);
   15282          1.1  christos   oappend (scratchbuf);
   15283          1.1  christos }
   15284          1.1  christos 
   15285          1.1  christos static void
   15286          1.1  christos OP_T (int dummy ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15287          1.1  christos {
   15288          1.1  christos   sprintf (scratchbuf, "%%tr%d", modrm.reg);
   15289  1.1.1.1.8.1       tls   oappend_maybe_intel (scratchbuf);
   15290          1.1  christos }
   15291          1.1  christos 
   15292          1.1  christos static void
   15293          1.1  christos OP_R (int bytemode, int sizeflag)
   15294          1.1  christos {
   15295          1.1  christos   if (modrm.mod == 3)
   15296          1.1  christos     OP_E (bytemode, sizeflag);
   15297          1.1  christos   else
   15298          1.1  christos     BadOp ();
   15299          1.1  christos }
   15300          1.1  christos 
   15301          1.1  christos static void
   15302          1.1  christos OP_MMX (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15303          1.1  christos {
   15304          1.1  christos   int reg = modrm.reg;
   15305          1.1  christos   const char **names;
   15306          1.1  christos 
   15307          1.1  christos   used_prefixes |= (prefixes & PREFIX_DATA);
   15308          1.1  christos   if (prefixes & PREFIX_DATA)
   15309          1.1  christos     {
   15310          1.1  christos       names = names_xmm;
   15311          1.1  christos       USED_REX (REX_R);
   15312          1.1  christos       if (rex & REX_R)
   15313          1.1  christos 	reg += 8;
   15314          1.1  christos     }
   15315          1.1  christos   else
   15316          1.1  christos     names = names_mm;
   15317          1.1  christos   oappend (names[reg]);
   15318          1.1  christos }
   15319          1.1  christos 
   15320          1.1  christos static void
   15321          1.1  christos OP_XMM (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   15322          1.1  christos {
   15323          1.1  christos   int reg = modrm.reg;
   15324          1.1  christos   const char **names;
   15325          1.1  christos 
   15326          1.1  christos   USED_REX (REX_R);
   15327          1.1  christos   if (rex & REX_R)
   15328          1.1  christos     reg += 8;
   15329  1.1.1.1.8.1       tls   if (vex.evex)
   15330  1.1.1.1.8.1       tls     {
   15331  1.1.1.1.8.1       tls       if (!vex.r)
   15332  1.1.1.1.8.1       tls 	reg += 16;
   15333  1.1.1.1.8.1       tls     }
   15334  1.1.1.1.8.1       tls 
   15335          1.1  christos   if (need_vex
   15336          1.1  christos       && bytemode != xmm_mode
   15337  1.1.1.1.8.1       tls       && bytemode != xmmq_mode
   15338  1.1.1.1.8.1       tls       && bytemode != evex_half_bcst_xmmq_mode
   15339  1.1.1.1.8.1       tls       && bytemode != ymm_mode
   15340          1.1  christos       && bytemode != scalar_mode)
   15341          1.1  christos     {
   15342          1.1  christos       switch (vex.length)
   15343          1.1  christos 	{
   15344          1.1  christos 	case 128:
   15345          1.1  christos 	  names = names_xmm;
   15346          1.1  christos 	  break;
   15347          1.1  christos 	case 256:
   15348  1.1.1.1.8.1       tls 	  if (vex.w || bytemode != vex_vsib_q_w_dq_mode)
   15349  1.1.1.1.8.1       tls 	    names = names_ymm;
   15350  1.1.1.1.8.1       tls 	  else
   15351  1.1.1.1.8.1       tls 	    names = names_xmm;
   15352  1.1.1.1.8.1       tls 	  break;
   15353  1.1.1.1.8.1       tls 	case 512:
   15354  1.1.1.1.8.1       tls 	  names = names_zmm;
   15355  1.1.1.1.8.1       tls 	  break;
   15356  1.1.1.1.8.1       tls 	default:
   15357  1.1.1.1.8.1       tls 	  abort ();
   15358  1.1.1.1.8.1       tls 	}
   15359  1.1.1.1.8.1       tls     }
   15360  1.1.1.1.8.1       tls   else if (bytemode == xmmq_mode
   15361  1.1.1.1.8.1       tls 	   || bytemode == evex_half_bcst_xmmq_mode)
   15362  1.1.1.1.8.1       tls     {
   15363  1.1.1.1.8.1       tls       switch (vex.length)
   15364  1.1.1.1.8.1       tls 	{
   15365  1.1.1.1.8.1       tls 	case 128:
   15366  1.1.1.1.8.1       tls 	case 256:
   15367  1.1.1.1.8.1       tls 	  names = names_xmm;
   15368  1.1.1.1.8.1       tls 	  break;
   15369  1.1.1.1.8.1       tls 	case 512:
   15370          1.1  christos 	  names = names_ymm;
   15371          1.1  christos 	  break;
   15372          1.1  christos 	default:
   15373          1.1  christos 	  abort ();
   15374          1.1  christos 	}
   15375          1.1  christos     }
   15376  1.1.1.1.8.1       tls   else if (bytemode == ymm_mode)
   15377  1.1.1.1.8.1       tls     names = names_ymm;
   15378          1.1  christos   else
   15379          1.1  christos     names = names_xmm;
   15380          1.1  christos   oappend (names[reg]);
   15381          1.1  christos }
   15382          1.1  christos 
   15383          1.1  christos static void
   15384          1.1  christos OP_EM (int bytemode, int sizeflag)
   15385          1.1  christos {
   15386          1.1  christos   int reg;
   15387          1.1  christos   const char **names;
   15388          1.1  christos 
   15389          1.1  christos   if (modrm.mod != 3)
   15390          1.1  christos     {
   15391          1.1  christos       if (intel_syntax
   15392          1.1  christos 	  && (bytemode == v_mode || bytemode == v_swap_mode))
   15393          1.1  christos 	{
   15394          1.1  christos 	  bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
   15395          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   15396  1.1.1.1.8.1       tls 	}
   15397          1.1  christos       OP_E (bytemode, sizeflag);
   15398          1.1  christos       return;
   15399          1.1  christos     }
   15400          1.1  christos 
   15401          1.1  christos   if ((sizeflag & SUFFIX_ALWAYS) && bytemode == v_swap_mode)
   15402          1.1  christos     swap_operand ();
   15403          1.1  christos 
   15404          1.1  christos   /* Skip mod/rm byte.  */
   15405          1.1  christos   MODRM_CHECK;
   15406          1.1  christos   codep++;
   15407          1.1  christos   used_prefixes |= (prefixes & PREFIX_DATA);
   15408          1.1  christos   reg = modrm.rm;
   15409          1.1  christos   if (prefixes & PREFIX_DATA)
   15410          1.1  christos     {
   15411          1.1  christos       names = names_xmm;
   15412          1.1  christos       USED_REX (REX_B);
   15413          1.1  christos       if (rex & REX_B)
   15414          1.1  christos 	reg += 8;
   15415          1.1  christos     }
   15416          1.1  christos   else
   15417          1.1  christos     names = names_mm;
   15418          1.1  christos   oappend (names[reg]);
   15419          1.1  christos }
   15420          1.1  christos 
   15421          1.1  christos /* cvt* are the only instructions in sse2 which have
   15422          1.1  christos    both SSE and MMX operands and also have 0x66 prefix
   15423          1.1  christos    in their opcode. 0x66 was originally used to differentiate
   15424          1.1  christos    between SSE and MMX instruction(operands). So we have to handle the
   15425          1.1  christos    cvt* separately using OP_EMC and OP_MXC */
   15426          1.1  christos static void
   15427          1.1  christos OP_EMC (int bytemode, int sizeflag)
   15428          1.1  christos {
   15429          1.1  christos   if (modrm.mod != 3)
   15430          1.1  christos     {
   15431          1.1  christos       if (intel_syntax && bytemode == v_mode)
   15432          1.1  christos 	{
   15433          1.1  christos 	  bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
   15434          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   15435  1.1.1.1.8.1       tls 	}
   15436          1.1  christos       OP_E (bytemode, sizeflag);
   15437          1.1  christos       return;
   15438          1.1  christos     }
   15439          1.1  christos 
   15440          1.1  christos   /* Skip mod/rm byte.  */
   15441          1.1  christos   MODRM_CHECK;
   15442          1.1  christos   codep++;
   15443          1.1  christos   used_prefixes |= (prefixes & PREFIX_DATA);
   15444          1.1  christos   oappend (names_mm[modrm.rm]);
   15445          1.1  christos }
   15446          1.1  christos 
   15447          1.1  christos static void
   15448          1.1  christos OP_MXC (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15449          1.1  christos {
   15450          1.1  christos   used_prefixes |= (prefixes & PREFIX_DATA);
   15451          1.1  christos   oappend (names_mm[modrm.reg]);
   15452          1.1  christos }
   15453          1.1  christos 
   15454          1.1  christos static void
   15455          1.1  christos OP_EX (int bytemode, int sizeflag)
   15456          1.1  christos {
   15457          1.1  christos   int reg;
   15458          1.1  christos   const char **names;
   15459          1.1  christos 
   15460          1.1  christos   /* Skip mod/rm byte.  */
   15461          1.1  christos   MODRM_CHECK;
   15462          1.1  christos   codep++;
   15463          1.1  christos 
   15464          1.1  christos   if (modrm.mod != 3)
   15465          1.1  christos     {
   15466          1.1  christos       OP_E_memory (bytemode, sizeflag);
   15467          1.1  christos       return;
   15468          1.1  christos     }
   15469          1.1  christos 
   15470          1.1  christos   reg = modrm.rm;
   15471          1.1  christos   USED_REX (REX_B);
   15472          1.1  christos   if (rex & REX_B)
   15473          1.1  christos     reg += 8;
   15474  1.1.1.1.8.1       tls   if (vex.evex)
   15475  1.1.1.1.8.1       tls     {
   15476  1.1.1.1.8.1       tls       USED_REX (REX_X);
   15477  1.1.1.1.8.1       tls       if ((rex & REX_X))
   15478  1.1.1.1.8.1       tls 	reg += 16;
   15479  1.1.1.1.8.1       tls     }
   15480          1.1  christos 
   15481          1.1  christos   if ((sizeflag & SUFFIX_ALWAYS)
   15482          1.1  christos       && (bytemode == x_swap_mode
   15483          1.1  christos 	  || bytemode == d_swap_mode
   15484  1.1.1.1.8.1       tls 	  || bytemode == d_scalar_swap_mode
   15485          1.1  christos 	  || bytemode == q_swap_mode
   15486          1.1  christos 	  || bytemode == q_scalar_swap_mode))
   15487          1.1  christos     swap_operand ();
   15488          1.1  christos 
   15489          1.1  christos   if (need_vex
   15490          1.1  christos       && bytemode != xmm_mode
   15491  1.1.1.1.8.1       tls       && bytemode != xmmdw_mode
   15492  1.1.1.1.8.1       tls       && bytemode != xmmqd_mode
   15493  1.1.1.1.8.1       tls       && bytemode != xmm_mb_mode
   15494  1.1.1.1.8.1       tls       && bytemode != xmm_mw_mode
   15495  1.1.1.1.8.1       tls       && bytemode != xmm_md_mode
   15496  1.1.1.1.8.1       tls       && bytemode != xmm_mq_mode
   15497  1.1.1.1.8.1       tls       && bytemode != xmm_mdq_mode
   15498          1.1  christos       && bytemode != xmmq_mode
   15499  1.1.1.1.8.1       tls       && bytemode != evex_half_bcst_xmmq_mode
   15500  1.1.1.1.8.1       tls       && bytemode != ymm_mode
   15501          1.1  christos       && bytemode != d_scalar_mode
   15502  1.1.1.1.8.1       tls       && bytemode != d_scalar_swap_mode
   15503          1.1  christos       && bytemode != q_scalar_mode
   15504          1.1  christos       && bytemode != q_scalar_swap_mode
   15505          1.1  christos       && bytemode != vex_scalar_w_dq_mode)
   15506          1.1  christos     {
   15507          1.1  christos       switch (vex.length)
   15508          1.1  christos 	{
   15509          1.1  christos 	case 128:
   15510          1.1  christos 	  names = names_xmm;
   15511          1.1  christos 	  break;
   15512          1.1  christos 	case 256:
   15513          1.1  christos 	  names = names_ymm;
   15514          1.1  christos 	  break;
   15515  1.1.1.1.8.1       tls 	case 512:
   15516  1.1.1.1.8.1       tls 	  names = names_zmm;
   15517  1.1.1.1.8.1       tls 	  break;
   15518  1.1.1.1.8.1       tls 	default:
   15519  1.1.1.1.8.1       tls 	  abort ();
   15520  1.1.1.1.8.1       tls 	}
   15521  1.1.1.1.8.1       tls     }
   15522  1.1.1.1.8.1       tls   else if (bytemode == xmmq_mode
   15523  1.1.1.1.8.1       tls 	   || bytemode == evex_half_bcst_xmmq_mode)
   15524  1.1.1.1.8.1       tls     {
   15525  1.1.1.1.8.1       tls       switch (vex.length)
   15526  1.1.1.1.8.1       tls 	{
   15527  1.1.1.1.8.1       tls 	case 128:
   15528  1.1.1.1.8.1       tls 	case 256:
   15529  1.1.1.1.8.1       tls 	  names = names_xmm;
   15530  1.1.1.1.8.1       tls 	  break;
   15531  1.1.1.1.8.1       tls 	case 512:
   15532  1.1.1.1.8.1       tls 	  names = names_ymm;
   15533  1.1.1.1.8.1       tls 	  break;
   15534          1.1  christos 	default:
   15535          1.1  christos 	  abort ();
   15536          1.1  christos 	}
   15537          1.1  christos     }
   15538  1.1.1.1.8.1       tls   else if (bytemode == ymm_mode)
   15539  1.1.1.1.8.1       tls     names = names_ymm;
   15540          1.1  christos   else
   15541          1.1  christos     names = names_xmm;
   15542          1.1  christos   oappend (names[reg]);
   15543          1.1  christos }
   15544          1.1  christos 
   15545          1.1  christos static void
   15546          1.1  christos OP_MS (int bytemode, int sizeflag)
   15547          1.1  christos {
   15548          1.1  christos   if (modrm.mod == 3)
   15549          1.1  christos     OP_EM (bytemode, sizeflag);
   15550          1.1  christos   else
   15551          1.1  christos     BadOp ();
   15552          1.1  christos }
   15553          1.1  christos 
   15554          1.1  christos static void
   15555          1.1  christos OP_XS (int bytemode, int sizeflag)
   15556          1.1  christos {
   15557          1.1  christos   if (modrm.mod == 3)
   15558          1.1  christos     OP_EX (bytemode, sizeflag);
   15559          1.1  christos   else
   15560          1.1  christos     BadOp ();
   15561          1.1  christos }
   15562          1.1  christos 
   15563          1.1  christos static void
   15564          1.1  christos OP_M (int bytemode, int sizeflag)
   15565          1.1  christos {
   15566          1.1  christos   if (modrm.mod == 3)
   15567          1.1  christos     /* bad bound,lea,lds,les,lfs,lgs,lss,cmpxchg8b,vmptrst modrm */
   15568          1.1  christos     BadOp ();
   15569          1.1  christos   else
   15570          1.1  christos     OP_E (bytemode, sizeflag);
   15571          1.1  christos }
   15572          1.1  christos 
   15573          1.1  christos static void
   15574          1.1  christos OP_0f07 (int bytemode, int sizeflag)
   15575          1.1  christos {
   15576          1.1  christos   if (modrm.mod != 3 || modrm.rm != 0)
   15577          1.1  christos     BadOp ();
   15578          1.1  christos   else
   15579          1.1  christos     OP_E (bytemode, sizeflag);
   15580          1.1  christos }
   15581          1.1  christos 
   15582          1.1  christos /* NOP is an alias of "xchg %ax,%ax" in 16bit mode, "xchg %eax,%eax" in
   15583          1.1  christos    32bit mode and "xchg %rax,%rax" in 64bit mode.  */
   15584          1.1  christos 
   15585          1.1  christos static void
   15586          1.1  christos NOP_Fixup1 (int bytemode, int sizeflag)
   15587          1.1  christos {
   15588          1.1  christos   if ((prefixes & PREFIX_DATA) != 0
   15589          1.1  christos       || (rex != 0
   15590          1.1  christos 	  && rex != 0x48
   15591          1.1  christos 	  && address_mode == mode_64bit))
   15592          1.1  christos     OP_REG (bytemode, sizeflag);
   15593          1.1  christos   else
   15594          1.1  christos     strcpy (obuf, "nop");
   15595          1.1  christos }
   15596          1.1  christos 
   15597          1.1  christos static void
   15598          1.1  christos NOP_Fixup2 (int bytemode, int sizeflag)
   15599          1.1  christos {
   15600          1.1  christos   if ((prefixes & PREFIX_DATA) != 0
   15601          1.1  christos       || (rex != 0
   15602          1.1  christos 	  && rex != 0x48
   15603          1.1  christos 	  && address_mode == mode_64bit))
   15604          1.1  christos     OP_IMREG (bytemode, sizeflag);
   15605          1.1  christos }
   15606          1.1  christos 
   15607          1.1  christos static const char *const Suffix3DNow[] = {
   15608          1.1  christos /* 00 */	NULL,		NULL,		NULL,		NULL,
   15609          1.1  christos /* 04 */	NULL,		NULL,		NULL,		NULL,
   15610          1.1  christos /* 08 */	NULL,		NULL,		NULL,		NULL,
   15611          1.1  christos /* 0C */	"pi2fw",	"pi2fd",	NULL,		NULL,
   15612          1.1  christos /* 10 */	NULL,		NULL,		NULL,		NULL,
   15613          1.1  christos /* 14 */	NULL,		NULL,		NULL,		NULL,
   15614          1.1  christos /* 18 */	NULL,		NULL,		NULL,		NULL,
   15615          1.1  christos /* 1C */	"pf2iw",	"pf2id",	NULL,		NULL,
   15616          1.1  christos /* 20 */	NULL,		NULL,		NULL,		NULL,
   15617          1.1  christos /* 24 */	NULL,		NULL,		NULL,		NULL,
   15618          1.1  christos /* 28 */	NULL,		NULL,		NULL,		NULL,
   15619          1.1  christos /* 2C */	NULL,		NULL,		NULL,		NULL,
   15620          1.1  christos /* 30 */	NULL,		NULL,		NULL,		NULL,
   15621          1.1  christos /* 34 */	NULL,		NULL,		NULL,		NULL,
   15622          1.1  christos /* 38 */	NULL,		NULL,		NULL,		NULL,
   15623          1.1  christos /* 3C */	NULL,		NULL,		NULL,		NULL,
   15624          1.1  christos /* 40 */	NULL,		NULL,		NULL,		NULL,
   15625          1.1  christos /* 44 */	NULL,		NULL,		NULL,		NULL,
   15626          1.1  christos /* 48 */	NULL,		NULL,		NULL,		NULL,
   15627          1.1  christos /* 4C */	NULL,		NULL,		NULL,		NULL,
   15628          1.1  christos /* 50 */	NULL,		NULL,		NULL,		NULL,
   15629          1.1  christos /* 54 */	NULL,		NULL,		NULL,		NULL,
   15630          1.1  christos /* 58 */	NULL,		NULL,		NULL,		NULL,
   15631          1.1  christos /* 5C */	NULL,		NULL,		NULL,		NULL,
   15632          1.1  christos /* 60 */	NULL,		NULL,		NULL,		NULL,
   15633          1.1  christos /* 64 */	NULL,		NULL,		NULL,		NULL,
   15634          1.1  christos /* 68 */	NULL,		NULL,		NULL,		NULL,
   15635          1.1  christos /* 6C */	NULL,		NULL,		NULL,		NULL,
   15636          1.1  christos /* 70 */	NULL,		NULL,		NULL,		NULL,
   15637          1.1  christos /* 74 */	NULL,		NULL,		NULL,		NULL,
   15638          1.1  christos /* 78 */	NULL,		NULL,		NULL,		NULL,
   15639          1.1  christos /* 7C */	NULL,		NULL,		NULL,		NULL,
   15640          1.1  christos /* 80 */	NULL,		NULL,		NULL,		NULL,
   15641          1.1  christos /* 84 */	NULL,		NULL,		NULL,		NULL,
   15642          1.1  christos /* 88 */	NULL,		NULL,		"pfnacc",	NULL,
   15643          1.1  christos /* 8C */	NULL,		NULL,		"pfpnacc",	NULL,
   15644          1.1  christos /* 90 */	"pfcmpge",	NULL,		NULL,		NULL,
   15645          1.1  christos /* 94 */	"pfmin",	NULL,		"pfrcp",	"pfrsqrt",
   15646          1.1  christos /* 98 */	NULL,		NULL,		"pfsub",	NULL,
   15647          1.1  christos /* 9C */	NULL,		NULL,		"pfadd",	NULL,
   15648          1.1  christos /* A0 */	"pfcmpgt",	NULL,		NULL,		NULL,
   15649          1.1  christos /* A4 */	"pfmax",	NULL,		"pfrcpit1",	"pfrsqit1",
   15650          1.1  christos /* A8 */	NULL,		NULL,		"pfsubr",	NULL,
   15651          1.1  christos /* AC */	NULL,		NULL,		"pfacc",	NULL,
   15652          1.1  christos /* B0 */	"pfcmpeq",	NULL,		NULL,		NULL,
   15653          1.1  christos /* B4 */	"pfmul",	NULL,		"pfrcpit2",	"pmulhrw",
   15654          1.1  christos /* B8 */	NULL,		NULL,		NULL,		"pswapd",
   15655          1.1  christos /* BC */	NULL,		NULL,		NULL,		"pavgusb",
   15656          1.1  christos /* C0 */	NULL,		NULL,		NULL,		NULL,
   15657          1.1  christos /* C4 */	NULL,		NULL,		NULL,		NULL,
   15658          1.1  christos /* C8 */	NULL,		NULL,		NULL,		NULL,
   15659          1.1  christos /* CC */	NULL,		NULL,		NULL,		NULL,
   15660          1.1  christos /* D0 */	NULL,		NULL,		NULL,		NULL,
   15661          1.1  christos /* D4 */	NULL,		NULL,		NULL,		NULL,
   15662          1.1  christos /* D8 */	NULL,		NULL,		NULL,		NULL,
   15663          1.1  christos /* DC */	NULL,		NULL,		NULL,		NULL,
   15664          1.1  christos /* E0 */	NULL,		NULL,		NULL,		NULL,
   15665          1.1  christos /* E4 */	NULL,		NULL,		NULL,		NULL,
   15666          1.1  christos /* E8 */	NULL,		NULL,		NULL,		NULL,
   15667          1.1  christos /* EC */	NULL,		NULL,		NULL,		NULL,
   15668          1.1  christos /* F0 */	NULL,		NULL,		NULL,		NULL,
   15669          1.1  christos /* F4 */	NULL,		NULL,		NULL,		NULL,
   15670          1.1  christos /* F8 */	NULL,		NULL,		NULL,		NULL,
   15671          1.1  christos /* FC */	NULL,		NULL,		NULL,		NULL,
   15672          1.1  christos };
   15673          1.1  christos 
   15674          1.1  christos static void
   15675          1.1  christos OP_3DNowSuffix (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15676          1.1  christos {
   15677          1.1  christos   const char *mnemonic;
   15678          1.1  christos 
   15679          1.1  christos   FETCH_DATA (the_info, codep + 1);
   15680          1.1  christos   /* AMD 3DNow! instructions are specified by an opcode suffix in the
   15681          1.1  christos      place where an 8-bit immediate would normally go.  ie. the last
   15682          1.1  christos      byte of the instruction.  */
   15683          1.1  christos   obufp = mnemonicendp;
   15684          1.1  christos   mnemonic = Suffix3DNow[*codep++ & 0xff];
   15685          1.1  christos   if (mnemonic)
   15686          1.1  christos     oappend (mnemonic);
   15687          1.1  christos   else
   15688          1.1  christos     {
   15689          1.1  christos       /* Since a variable sized modrm/sib chunk is between the start
   15690          1.1  christos 	 of the opcode (0x0f0f) and the opcode suffix, we need to do
   15691          1.1  christos 	 all the modrm processing first, and don't know until now that
   15692          1.1  christos 	 we have a bad opcode.  This necessitates some cleaning up.  */
   15693          1.1  christos       op_out[0][0] = '\0';
   15694          1.1  christos       op_out[1][0] = '\0';
   15695          1.1  christos       BadOp ();
   15696          1.1  christos     }
   15697          1.1  christos   mnemonicendp = obufp;
   15698          1.1  christos }
   15699          1.1  christos 
   15700          1.1  christos static struct op simd_cmp_op[] =
   15701          1.1  christos {
   15702          1.1  christos   { STRING_COMMA_LEN ("eq") },
   15703          1.1  christos   { STRING_COMMA_LEN ("lt") },
   15704          1.1  christos   { STRING_COMMA_LEN ("le") },
   15705          1.1  christos   { STRING_COMMA_LEN ("unord") },
   15706          1.1  christos   { STRING_COMMA_LEN ("neq") },
   15707          1.1  christos   { STRING_COMMA_LEN ("nlt") },
   15708          1.1  christos   { STRING_COMMA_LEN ("nle") },
   15709          1.1  christos   { STRING_COMMA_LEN ("ord") }
   15710          1.1  christos };
   15711          1.1  christos 
   15712          1.1  christos static void
   15713          1.1  christos CMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15714          1.1  christos {
   15715          1.1  christos   unsigned int cmp_type;
   15716          1.1  christos 
   15717          1.1  christos   FETCH_DATA (the_info, codep + 1);
   15718          1.1  christos   cmp_type = *codep++ & 0xff;
   15719          1.1  christos   if (cmp_type < ARRAY_SIZE (simd_cmp_op))
   15720          1.1  christos     {
   15721          1.1  christos       char suffix [3];
   15722          1.1  christos       char *p = mnemonicendp - 2;
   15723          1.1  christos       suffix[0] = p[0];
   15724          1.1  christos       suffix[1] = p[1];
   15725          1.1  christos       suffix[2] = '\0';
   15726          1.1  christos       sprintf (p, "%s%s", simd_cmp_op[cmp_type].name, suffix);
   15727          1.1  christos       mnemonicendp += simd_cmp_op[cmp_type].len;
   15728          1.1  christos     }
   15729          1.1  christos   else
   15730          1.1  christos     {
   15731          1.1  christos       /* We have a reserved extension byte.  Output it directly.  */
   15732          1.1  christos       scratchbuf[0] = '$';
   15733          1.1  christos       print_operand_value (scratchbuf + 1, 1, cmp_type);
   15734  1.1.1.1.8.1       tls       oappend_maybe_intel (scratchbuf);
   15735          1.1  christos       scratchbuf[0] = '\0';
   15736          1.1  christos     }
   15737          1.1  christos }
   15738          1.1  christos 
   15739          1.1  christos static void
   15740          1.1  christos OP_Mwait (int bytemode ATTRIBUTE_UNUSED,
   15741          1.1  christos 	  int sizeflag ATTRIBUTE_UNUSED)
   15742          1.1  christos {
   15743          1.1  christos   /* mwait %eax,%ecx  */
   15744          1.1  christos   if (!intel_syntax)
   15745          1.1  christos     {
   15746          1.1  christos       const char **names = (address_mode == mode_64bit
   15747          1.1  christos 			    ? names64 : names32);
   15748          1.1  christos       strcpy (op_out[0], names[0]);
   15749          1.1  christos       strcpy (op_out[1], names[1]);
   15750          1.1  christos       two_source_ops = 1;
   15751          1.1  christos     }
   15752          1.1  christos   /* Skip mod/rm byte.  */
   15753          1.1  christos   MODRM_CHECK;
   15754          1.1  christos   codep++;
   15755          1.1  christos }
   15756          1.1  christos 
   15757          1.1  christos static void
   15758          1.1  christos OP_Monitor (int bytemode ATTRIBUTE_UNUSED,
   15759          1.1  christos 	    int sizeflag ATTRIBUTE_UNUSED)
   15760          1.1  christos {
   15761          1.1  christos   /* monitor %eax,%ecx,%edx"  */
   15762          1.1  christos   if (!intel_syntax)
   15763          1.1  christos     {
   15764          1.1  christos       const char **op1_names;
   15765          1.1  christos       const char **names = (address_mode == mode_64bit
   15766          1.1  christos 			    ? names64 : names32);
   15767          1.1  christos 
   15768          1.1  christos       if (!(prefixes & PREFIX_ADDR))
   15769          1.1  christos 	op1_names = (address_mode == mode_16bit
   15770          1.1  christos 		     ? names16 : names);
   15771          1.1  christos       else
   15772          1.1  christos 	{
   15773          1.1  christos 	  /* Remove "addr16/addr32".  */
   15774          1.1  christos 	  all_prefixes[last_addr_prefix] = 0;
   15775          1.1  christos 	  op1_names = (address_mode != mode_32bit
   15776          1.1  christos 		       ? names32 : names16);
   15777          1.1  christos 	  used_prefixes |= PREFIX_ADDR;
   15778          1.1  christos 	}
   15779          1.1  christos       strcpy (op_out[0], op1_names[0]);
   15780          1.1  christos       strcpy (op_out[1], names[1]);
   15781          1.1  christos       strcpy (op_out[2], names[2]);
   15782          1.1  christos       two_source_ops = 1;
   15783          1.1  christos     }
   15784          1.1  christos   /* Skip mod/rm byte.  */
   15785          1.1  christos   MODRM_CHECK;
   15786          1.1  christos   codep++;
   15787          1.1  christos }
   15788          1.1  christos 
   15789          1.1  christos static void
   15790          1.1  christos BadOp (void)
   15791          1.1  christos {
   15792          1.1  christos   /* Throw away prefixes and 1st. opcode byte.  */
   15793          1.1  christos   codep = insn_codep + 1;
   15794          1.1  christos   oappend ("(bad)");
   15795          1.1  christos }
   15796          1.1  christos 
   15797          1.1  christos static void
   15798          1.1  christos REP_Fixup (int bytemode, int sizeflag)
   15799          1.1  christos {
   15800          1.1  christos   /* The 0xf3 prefix should be displayed as "rep" for ins, outs, movs,
   15801          1.1  christos      lods and stos.  */
   15802          1.1  christos   if (prefixes & PREFIX_REPZ)
   15803          1.1  christos     all_prefixes[last_repz_prefix] = REP_PREFIX;
   15804          1.1  christos 
   15805          1.1  christos   switch (bytemode)
   15806          1.1  christos     {
   15807          1.1  christos     case al_reg:
   15808          1.1  christos     case eAX_reg:
   15809          1.1  christos     case indir_dx_reg:
   15810          1.1  christos       OP_IMREG (bytemode, sizeflag);
   15811          1.1  christos       break;
   15812          1.1  christos     case eDI_reg:
   15813          1.1  christos       OP_ESreg (bytemode, sizeflag);
   15814          1.1  christos       break;
   15815          1.1  christos     case eSI_reg:
   15816          1.1  christos       OP_DSreg (bytemode, sizeflag);
   15817          1.1  christos       break;
   15818          1.1  christos     default:
   15819          1.1  christos       abort ();
   15820          1.1  christos       break;
   15821          1.1  christos     }
   15822          1.1  christos }
   15823          1.1  christos 
   15824  1.1.1.1.8.1       tls /* For BND-prefixed instructions 0xF2 prefix should be displayed as
   15825  1.1.1.1.8.1       tls    "bnd".  */
   15826  1.1.1.1.8.1       tls 
   15827  1.1.1.1.8.1       tls static void
   15828  1.1.1.1.8.1       tls BND_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   15829  1.1.1.1.8.1       tls {
   15830  1.1.1.1.8.1       tls   if (prefixes & PREFIX_REPNZ)
   15831  1.1.1.1.8.1       tls     all_prefixes[last_repnz_prefix] = BND_PREFIX;
   15832  1.1.1.1.8.1       tls }
   15833  1.1.1.1.8.1       tls 
   15834  1.1.1.1.8.1       tls /* Similar to OP_E.  But the 0xf2/0xf3 prefixes should be displayed as
   15835  1.1.1.1.8.1       tls    "xacquire"/"xrelease" for memory operand if there is a LOCK prefix.
   15836  1.1.1.1.8.1       tls  */
   15837  1.1.1.1.8.1       tls 
   15838  1.1.1.1.8.1       tls static void
   15839  1.1.1.1.8.1       tls HLE_Fixup1 (int bytemode, int sizeflag)
   15840  1.1.1.1.8.1       tls {
   15841  1.1.1.1.8.1       tls   if (modrm.mod != 3
   15842  1.1.1.1.8.1       tls       && (prefixes & PREFIX_LOCK) != 0)
   15843  1.1.1.1.8.1       tls     {
   15844  1.1.1.1.8.1       tls       if (prefixes & PREFIX_REPZ)
   15845  1.1.1.1.8.1       tls 	all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
   15846  1.1.1.1.8.1       tls       if (prefixes & PREFIX_REPNZ)
   15847  1.1.1.1.8.1       tls 	all_prefixes[last_repnz_prefix] = XACQUIRE_PREFIX;
   15848  1.1.1.1.8.1       tls     }
   15849  1.1.1.1.8.1       tls 
   15850  1.1.1.1.8.1       tls   OP_E (bytemode, sizeflag);
   15851  1.1.1.1.8.1       tls }
   15852  1.1.1.1.8.1       tls 
   15853  1.1.1.1.8.1       tls /* Similar to OP_E.  But the 0xf2/0xf3 prefixes should be displayed as
   15854  1.1.1.1.8.1       tls    "xacquire"/"xrelease" for memory operand.  No check for LOCK prefix.
   15855  1.1.1.1.8.1       tls  */
   15856  1.1.1.1.8.1       tls 
   15857  1.1.1.1.8.1       tls static void
   15858  1.1.1.1.8.1       tls HLE_Fixup2 (int bytemode, int sizeflag)
   15859  1.1.1.1.8.1       tls {
   15860  1.1.1.1.8.1       tls   if (modrm.mod != 3)
   15861  1.1.1.1.8.1       tls     {
   15862  1.1.1.1.8.1       tls       if (prefixes & PREFIX_REPZ)
   15863  1.1.1.1.8.1       tls 	all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
   15864  1.1.1.1.8.1       tls       if (prefixes & PREFIX_REPNZ)
   15865  1.1.1.1.8.1       tls 	all_prefixes[last_repnz_prefix] = XACQUIRE_PREFIX;
   15866  1.1.1.1.8.1       tls     }
   15867  1.1.1.1.8.1       tls 
   15868  1.1.1.1.8.1       tls   OP_E (bytemode, sizeflag);
   15869  1.1.1.1.8.1       tls }
   15870  1.1.1.1.8.1       tls 
   15871  1.1.1.1.8.1       tls /* Similar to OP_E.  But the 0xf3 prefixes should be displayed as
   15872  1.1.1.1.8.1       tls    "xrelease" for memory operand.  No check for LOCK prefix.   */
   15873  1.1.1.1.8.1       tls 
   15874  1.1.1.1.8.1       tls static void
   15875  1.1.1.1.8.1       tls HLE_Fixup3 (int bytemode, int sizeflag)
   15876  1.1.1.1.8.1       tls {
   15877  1.1.1.1.8.1       tls   if (modrm.mod != 3
   15878  1.1.1.1.8.1       tls       && last_repz_prefix > last_repnz_prefix
   15879  1.1.1.1.8.1       tls       && (prefixes & PREFIX_REPZ) != 0)
   15880  1.1.1.1.8.1       tls     all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
   15881  1.1.1.1.8.1       tls 
   15882  1.1.1.1.8.1       tls   OP_E (bytemode, sizeflag);
   15883  1.1.1.1.8.1       tls }
   15884  1.1.1.1.8.1       tls 
   15885          1.1  christos static void
   15886          1.1  christos CMPXCHG8B_Fixup (int bytemode, int sizeflag)
   15887          1.1  christos {
   15888          1.1  christos   USED_REX (REX_W);
   15889          1.1  christos   if (rex & REX_W)
   15890          1.1  christos     {
   15891          1.1  christos       /* Change cmpxchg8b to cmpxchg16b.  */
   15892          1.1  christos       char *p = mnemonicendp - 2;
   15893          1.1  christos       mnemonicendp = stpcpy (p, "16b");
   15894          1.1  christos       bytemode = o_mode;
   15895          1.1  christos     }
   15896  1.1.1.1.8.1       tls   else if ((prefixes & PREFIX_LOCK) != 0)
   15897  1.1.1.1.8.1       tls     {
   15898  1.1.1.1.8.1       tls       if (prefixes & PREFIX_REPZ)
   15899  1.1.1.1.8.1       tls 	all_prefixes[last_repz_prefix] = XRELEASE_PREFIX;
   15900  1.1.1.1.8.1       tls       if (prefixes & PREFIX_REPNZ)
   15901  1.1.1.1.8.1       tls 	all_prefixes[last_repnz_prefix] = XACQUIRE_PREFIX;
   15902  1.1.1.1.8.1       tls     }
   15903  1.1.1.1.8.1       tls 
   15904          1.1  christos   OP_M (bytemode, sizeflag);
   15905          1.1  christos }
   15906          1.1  christos 
   15907          1.1  christos static void
   15908          1.1  christos XMM_Fixup (int reg, int sizeflag ATTRIBUTE_UNUSED)
   15909          1.1  christos {
   15910          1.1  christos   const char **names;
   15911          1.1  christos 
   15912          1.1  christos   if (need_vex)
   15913          1.1  christos     {
   15914          1.1  christos       switch (vex.length)
   15915          1.1  christos 	{
   15916          1.1  christos 	case 128:
   15917          1.1  christos 	  names = names_xmm;
   15918          1.1  christos 	  break;
   15919          1.1  christos 	case 256:
   15920          1.1  christos 	  names = names_ymm;
   15921          1.1  christos 	  break;
   15922          1.1  christos 	default:
   15923          1.1  christos 	  abort ();
   15924          1.1  christos 	}
   15925          1.1  christos     }
   15926          1.1  christos   else
   15927          1.1  christos     names = names_xmm;
   15928          1.1  christos   oappend (names[reg]);
   15929          1.1  christos }
   15930          1.1  christos 
   15931          1.1  christos static void
   15932          1.1  christos CRC32_Fixup (int bytemode, int sizeflag)
   15933          1.1  christos {
   15934          1.1  christos   /* Add proper suffix to "crc32".  */
   15935          1.1  christos   char *p = mnemonicendp;
   15936          1.1  christos 
   15937          1.1  christos   switch (bytemode)
   15938          1.1  christos     {
   15939          1.1  christos     case b_mode:
   15940          1.1  christos       if (intel_syntax)
   15941          1.1  christos 	goto skip;
   15942          1.1  christos 
   15943          1.1  christos       *p++ = 'b';
   15944          1.1  christos       break;
   15945          1.1  christos     case v_mode:
   15946          1.1  christos       if (intel_syntax)
   15947          1.1  christos 	goto skip;
   15948          1.1  christos 
   15949          1.1  christos       USED_REX (REX_W);
   15950          1.1  christos       if (rex & REX_W)
   15951          1.1  christos 	*p++ = 'q';
   15952  1.1.1.1.8.1       tls       else
   15953          1.1  christos 	{
   15954          1.1  christos 	  if (sizeflag & DFLAG)
   15955          1.1  christos 	    *p++ = 'l';
   15956          1.1  christos 	  else
   15957          1.1  christos 	    *p++ = 'w';
   15958          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   15959          1.1  christos 	}
   15960          1.1  christos       break;
   15961          1.1  christos     default:
   15962          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   15963          1.1  christos       break;
   15964          1.1  christos     }
   15965          1.1  christos   mnemonicendp = p;
   15966          1.1  christos   *p = '\0';
   15967          1.1  christos 
   15968          1.1  christos skip:
   15969          1.1  christos   if (modrm.mod == 3)
   15970          1.1  christos     {
   15971          1.1  christos       int add;
   15972          1.1  christos 
   15973          1.1  christos       /* Skip mod/rm byte.  */
   15974          1.1  christos       MODRM_CHECK;
   15975          1.1  christos       codep++;
   15976          1.1  christos 
   15977          1.1  christos       USED_REX (REX_B);
   15978          1.1  christos       add = (rex & REX_B) ? 8 : 0;
   15979          1.1  christos       if (bytemode == b_mode)
   15980          1.1  christos 	{
   15981          1.1  christos 	  USED_REX (0);
   15982          1.1  christos 	  if (rex)
   15983          1.1  christos 	    oappend (names8rex[modrm.rm + add]);
   15984          1.1  christos 	  else
   15985          1.1  christos 	    oappend (names8[modrm.rm + add]);
   15986          1.1  christos 	}
   15987          1.1  christos       else
   15988          1.1  christos 	{
   15989          1.1  christos 	  USED_REX (REX_W);
   15990          1.1  christos 	  if (rex & REX_W)
   15991          1.1  christos 	    oappend (names64[modrm.rm + add]);
   15992          1.1  christos 	  else if ((prefixes & PREFIX_DATA))
   15993          1.1  christos 	    oappend (names16[modrm.rm + add]);
   15994          1.1  christos 	  else
   15995          1.1  christos 	    oappend (names32[modrm.rm + add]);
   15996          1.1  christos 	}
   15997          1.1  christos     }
   15998          1.1  christos   else
   15999          1.1  christos     OP_E (bytemode, sizeflag);
   16000          1.1  christos }
   16001          1.1  christos 
   16002          1.1  christos static void
   16003          1.1  christos FXSAVE_Fixup (int bytemode, int sizeflag)
   16004          1.1  christos {
   16005          1.1  christos   /* Add proper suffix to "fxsave" and "fxrstor".  */
   16006          1.1  christos   USED_REX (REX_W);
   16007          1.1  christos   if (rex & REX_W)
   16008          1.1  christos     {
   16009          1.1  christos       char *p = mnemonicendp;
   16010          1.1  christos       *p++ = '6';
   16011          1.1  christos       *p++ = '4';
   16012          1.1  christos       *p = '\0';
   16013          1.1  christos       mnemonicendp = p;
   16014          1.1  christos     }
   16015          1.1  christos   OP_M (bytemode, sizeflag);
   16016          1.1  christos }
   16017          1.1  christos 
   16018          1.1  christos /* Display the destination register operand for instructions with
   16019          1.1  christos    VEX. */
   16020          1.1  christos 
   16021          1.1  christos static void
   16022          1.1  christos OP_VEX (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   16023          1.1  christos {
   16024          1.1  christos   int reg;
   16025          1.1  christos   const char **names;
   16026          1.1  christos 
   16027          1.1  christos   if (!need_vex)
   16028          1.1  christos     abort ();
   16029          1.1  christos 
   16030          1.1  christos   if (!need_vex_reg)
   16031          1.1  christos     return;
   16032          1.1  christos 
   16033          1.1  christos   reg = vex.register_specifier;
   16034  1.1.1.1.8.1       tls   if (vex.evex)
   16035  1.1.1.1.8.1       tls     {
   16036  1.1.1.1.8.1       tls       if (!vex.v)
   16037  1.1.1.1.8.1       tls 	reg += 16;
   16038  1.1.1.1.8.1       tls     }
   16039  1.1.1.1.8.1       tls 
   16040          1.1  christos   if (bytemode == vex_scalar_mode)
   16041          1.1  christos     {
   16042          1.1  christos       oappend (names_xmm[reg]);
   16043          1.1  christos       return;
   16044          1.1  christos     }
   16045          1.1  christos 
   16046          1.1  christos   switch (vex.length)
   16047          1.1  christos     {
   16048          1.1  christos     case 128:
   16049          1.1  christos       switch (bytemode)
   16050          1.1  christos 	{
   16051          1.1  christos 	case vex_mode:
   16052          1.1  christos 	case vex128_mode:
   16053  1.1.1.1.8.1       tls 	case vex_vsib_q_w_dq_mode:
   16054          1.1  christos 	  names = names_xmm;
   16055          1.1  christos 	  break;
   16056          1.1  christos 	case dq_mode:
   16057          1.1  christos 	  if (vex.w)
   16058          1.1  christos 	    names = names64;
   16059          1.1  christos 	  else
   16060          1.1  christos 	    names = names32;
   16061          1.1  christos 	  break;
   16062  1.1.1.1.8.1       tls 	case mask_mode:
   16063  1.1.1.1.8.1       tls 	  names = names_mask;
   16064  1.1.1.1.8.1       tls 	  break;
   16065          1.1  christos 	default:
   16066          1.1  christos 	  abort ();
   16067          1.1  christos 	  return;
   16068          1.1  christos 	}
   16069          1.1  christos       break;
   16070          1.1  christos     case 256:
   16071          1.1  christos       switch (bytemode)
   16072          1.1  christos 	{
   16073          1.1  christos 	case vex_mode:
   16074          1.1  christos 	case vex256_mode:
   16075  1.1.1.1.8.1       tls 	  names = names_ymm;
   16076  1.1.1.1.8.1       tls 	  break;
   16077  1.1.1.1.8.1       tls 	case vex_vsib_q_w_dq_mode:
   16078  1.1.1.1.8.1       tls 	  names = vex.w ? names_ymm : names_xmm;
   16079  1.1.1.1.8.1       tls 	  break;
   16080  1.1.1.1.8.1       tls 	case mask_mode:
   16081  1.1.1.1.8.1       tls 	  names = names_mask;
   16082          1.1  christos 	  break;
   16083          1.1  christos 	default:
   16084          1.1  christos 	  abort ();
   16085          1.1  christos 	  return;
   16086          1.1  christos 	}
   16087  1.1.1.1.8.1       tls       break;
   16088  1.1.1.1.8.1       tls     case 512:
   16089  1.1.1.1.8.1       tls       names = names_zmm;
   16090          1.1  christos       break;
   16091          1.1  christos     default:
   16092          1.1  christos       abort ();
   16093          1.1  christos       break;
   16094          1.1  christos     }
   16095          1.1  christos   oappend (names[reg]);
   16096          1.1  christos }
   16097          1.1  christos 
   16098          1.1  christos /* Get the VEX immediate byte without moving codep.  */
   16099          1.1  christos 
   16100          1.1  christos static unsigned char
   16101          1.1  christos get_vex_imm8 (int sizeflag, int opnum)
   16102          1.1  christos {
   16103          1.1  christos   int bytes_before_imm = 0;
   16104          1.1  christos 
   16105          1.1  christos   if (modrm.mod != 3)
   16106          1.1  christos     {
   16107          1.1  christos       /* There are SIB/displacement bytes.  */
   16108          1.1  christos       if ((sizeflag & AFLAG) || address_mode == mode_64bit)
   16109  1.1.1.1.8.1       tls 	{
   16110          1.1  christos 	  /* 32/64 bit address mode */
   16111  1.1.1.1.8.1       tls 	  int base = modrm.rm;
   16112          1.1  christos 
   16113          1.1  christos 	  /* Check SIB byte.  */
   16114  1.1.1.1.8.1       tls 	  if (base == 4)
   16115  1.1.1.1.8.1       tls 	    {
   16116  1.1.1.1.8.1       tls 	      FETCH_DATA (the_info, codep + 1);
   16117  1.1.1.1.8.1       tls 	      base = *codep & 7;
   16118  1.1.1.1.8.1       tls 	      /* When decoding the third source, don't increase
   16119  1.1.1.1.8.1       tls 		 bytes_before_imm as this has already been incremented
   16120  1.1.1.1.8.1       tls 		 by one in OP_E_memory while decoding the second
   16121  1.1.1.1.8.1       tls 		 source operand.  */
   16122  1.1.1.1.8.1       tls 	      if (opnum == 0)
   16123  1.1.1.1.8.1       tls 		bytes_before_imm++;
   16124  1.1.1.1.8.1       tls 	    }
   16125  1.1.1.1.8.1       tls 
   16126  1.1.1.1.8.1       tls 	  /* Don't increase bytes_before_imm when decoding the third source,
   16127  1.1.1.1.8.1       tls 	     it has already been incremented by OP_E_memory while decoding
   16128  1.1.1.1.8.1       tls 	     the second source operand.  */
   16129  1.1.1.1.8.1       tls 	  if (opnum == 0)
   16130  1.1.1.1.8.1       tls 	    {
   16131  1.1.1.1.8.1       tls 	      switch (modrm.mod)
   16132  1.1.1.1.8.1       tls 		{
   16133  1.1.1.1.8.1       tls 		  case 0:
   16134  1.1.1.1.8.1       tls 		    /* When modrm.rm == 5 or modrm.rm == 4 and base in
   16135  1.1.1.1.8.1       tls 		       SIB == 5, there is a 4 byte displacement.  */
   16136  1.1.1.1.8.1       tls 		    if (base != 5)
   16137  1.1.1.1.8.1       tls 		      /* No displacement. */
   16138  1.1.1.1.8.1       tls 		      break;
   16139  1.1.1.1.8.1       tls 		  case 2:
   16140  1.1.1.1.8.1       tls 		    /* 4 byte displacement.  */
   16141  1.1.1.1.8.1       tls 		    bytes_before_imm += 4;
   16142  1.1.1.1.8.1       tls 		    break;
   16143  1.1.1.1.8.1       tls 		  case 1:
   16144  1.1.1.1.8.1       tls 		    /* 1 byte displacement.  */
   16145  1.1.1.1.8.1       tls 		    bytes_before_imm++;
   16146  1.1.1.1.8.1       tls 		    break;
   16147  1.1.1.1.8.1       tls 		}
   16148  1.1.1.1.8.1       tls 	    }
   16149  1.1.1.1.8.1       tls 	}
   16150          1.1  christos       else
   16151          1.1  christos 	{
   16152          1.1  christos 	  /* 16 bit address mode */
   16153  1.1.1.1.8.1       tls 	  /* Don't increase bytes_before_imm when decoding the third source,
   16154  1.1.1.1.8.1       tls 	     it has already been incremented by OP_E_memory while decoding
   16155  1.1.1.1.8.1       tls 	     the second source operand.  */
   16156  1.1.1.1.8.1       tls 	  if (opnum == 0)
   16157  1.1.1.1.8.1       tls 	    {
   16158          1.1  christos 	      switch (modrm.mod)
   16159          1.1  christos 		{
   16160          1.1  christos 		case 0:
   16161          1.1  christos 		  /* When modrm.rm == 6, there is a 2 byte displacement.  */
   16162          1.1  christos 		  if (modrm.rm != 6)
   16163          1.1  christos 		    /* No displacement. */
   16164          1.1  christos 		    break;
   16165          1.1  christos 		case 2:
   16166          1.1  christos 		  /* 2 byte displacement.  */
   16167          1.1  christos 		  bytes_before_imm += 2;
   16168          1.1  christos 		  break;
   16169          1.1  christos 		case 1:
   16170          1.1  christos 		  /* 1 byte displacement: when decoding the third source,
   16171          1.1  christos 		     don't increase bytes_before_imm as this has already
   16172          1.1  christos 		     been incremented by one in OP_E_memory while decoding
   16173          1.1  christos 		     the second source operand.  */
   16174          1.1  christos 		  if (opnum == 0)
   16175          1.1  christos 		    bytes_before_imm++;
   16176          1.1  christos 
   16177          1.1  christos 		  break;
   16178          1.1  christos 		}
   16179          1.1  christos 	    }
   16180          1.1  christos 	}
   16181          1.1  christos     }
   16182          1.1  christos 
   16183          1.1  christos   FETCH_DATA (the_info, codep + bytes_before_imm + 1);
   16184          1.1  christos   return codep [bytes_before_imm];
   16185          1.1  christos }
   16186          1.1  christos 
   16187          1.1  christos static void
   16188          1.1  christos OP_EX_VexReg (int bytemode, int sizeflag, int reg)
   16189          1.1  christos {
   16190          1.1  christos   const char **names;
   16191          1.1  christos 
   16192          1.1  christos   if (reg == -1 && modrm.mod != 3)
   16193          1.1  christos     {
   16194          1.1  christos       OP_E_memory (bytemode, sizeflag);
   16195          1.1  christos       return;
   16196          1.1  christos     }
   16197          1.1  christos   else
   16198          1.1  christos     {
   16199          1.1  christos       if (reg == -1)
   16200          1.1  christos 	{
   16201          1.1  christos 	  reg = modrm.rm;
   16202          1.1  christos 	  USED_REX (REX_B);
   16203          1.1  christos 	  if (rex & REX_B)
   16204          1.1  christos 	    reg += 8;
   16205          1.1  christos 	}
   16206          1.1  christos       else if (reg > 7 && address_mode != mode_64bit)
   16207          1.1  christos 	BadOp ();
   16208          1.1  christos     }
   16209          1.1  christos 
   16210          1.1  christos   switch (vex.length)
   16211          1.1  christos     {
   16212          1.1  christos     case 128:
   16213          1.1  christos       names = names_xmm;
   16214          1.1  christos       break;
   16215          1.1  christos     case 256:
   16216          1.1  christos       names = names_ymm;
   16217          1.1  christos       break;
   16218          1.1  christos     default:
   16219          1.1  christos       abort ();
   16220          1.1  christos     }
   16221          1.1  christos   oappend (names[reg]);
   16222          1.1  christos }
   16223          1.1  christos 
   16224          1.1  christos static void
   16225          1.1  christos OP_EX_VexImmW (int bytemode, int sizeflag)
   16226          1.1  christos {
   16227          1.1  christos   int reg = -1;
   16228          1.1  christos   static unsigned char vex_imm8;
   16229          1.1  christos 
   16230          1.1  christos   if (vex_w_done == 0)
   16231          1.1  christos     {
   16232          1.1  christos       vex_w_done = 1;
   16233          1.1  christos 
   16234          1.1  christos       /* Skip mod/rm byte.  */
   16235          1.1  christos       MODRM_CHECK;
   16236          1.1  christos       codep++;
   16237          1.1  christos 
   16238          1.1  christos       vex_imm8 = get_vex_imm8 (sizeflag, 0);
   16239          1.1  christos 
   16240          1.1  christos       if (vex.w)
   16241          1.1  christos 	  reg = vex_imm8 >> 4;
   16242          1.1  christos 
   16243          1.1  christos       OP_EX_VexReg (bytemode, sizeflag, reg);
   16244          1.1  christos     }
   16245          1.1  christos   else if (vex_w_done == 1)
   16246          1.1  christos     {
   16247          1.1  christos       vex_w_done = 2;
   16248          1.1  christos 
   16249          1.1  christos       if (!vex.w)
   16250          1.1  christos 	  reg = vex_imm8 >> 4;
   16251          1.1  christos 
   16252          1.1  christos       OP_EX_VexReg (bytemode, sizeflag, reg);
   16253          1.1  christos     }
   16254          1.1  christos   else
   16255          1.1  christos     {
   16256          1.1  christos       /* Output the imm8 directly.  */
   16257          1.1  christos       scratchbuf[0] = '$';
   16258          1.1  christos       print_operand_value (scratchbuf + 1, 1, vex_imm8 & 0xf);
   16259  1.1.1.1.8.1       tls       oappend_maybe_intel (scratchbuf);
   16260          1.1  christos       scratchbuf[0] = '\0';
   16261          1.1  christos       codep++;
   16262          1.1  christos     }
   16263          1.1  christos }
   16264          1.1  christos 
   16265          1.1  christos static void
   16266          1.1  christos OP_Vex_2src (int bytemode, int sizeflag)
   16267          1.1  christos {
   16268          1.1  christos   if (modrm.mod == 3)
   16269          1.1  christos     {
   16270          1.1  christos       int reg = modrm.rm;
   16271          1.1  christos       USED_REX (REX_B);
   16272          1.1  christos       if (rex & REX_B)
   16273          1.1  christos 	reg += 8;
   16274          1.1  christos       oappend (names_xmm[reg]);
   16275          1.1  christos     }
   16276          1.1  christos   else
   16277          1.1  christos     {
   16278          1.1  christos       if (intel_syntax
   16279          1.1  christos 	  && (bytemode == v_mode || bytemode == v_swap_mode))
   16280          1.1  christos 	{
   16281          1.1  christos 	  bytemode = (prefixes & PREFIX_DATA) ? x_mode : q_mode;
   16282          1.1  christos 	  used_prefixes |= (prefixes & PREFIX_DATA);
   16283          1.1  christos 	}
   16284          1.1  christos       OP_E (bytemode, sizeflag);
   16285          1.1  christos     }
   16286          1.1  christos }
   16287          1.1  christos 
   16288          1.1  christos static void
   16289          1.1  christos OP_Vex_2src_1 (int bytemode, int sizeflag)
   16290          1.1  christos {
   16291          1.1  christos   if (modrm.mod == 3)
   16292          1.1  christos     {
   16293          1.1  christos       /* Skip mod/rm byte.   */
   16294          1.1  christos       MODRM_CHECK;
   16295          1.1  christos       codep++;
   16296          1.1  christos     }
   16297          1.1  christos 
   16298          1.1  christos   if (vex.w)
   16299          1.1  christos     oappend (names_xmm[vex.register_specifier]);
   16300          1.1  christos   else
   16301          1.1  christos     OP_Vex_2src (bytemode, sizeflag);
   16302          1.1  christos }
   16303          1.1  christos 
   16304          1.1  christos static void
   16305          1.1  christos OP_Vex_2src_2 (int bytemode, int sizeflag)
   16306          1.1  christos {
   16307          1.1  christos   if (vex.w)
   16308          1.1  christos     OP_Vex_2src (bytemode, sizeflag);
   16309          1.1  christos   else
   16310          1.1  christos     oappend (names_xmm[vex.register_specifier]);
   16311          1.1  christos }
   16312          1.1  christos 
   16313          1.1  christos static void
   16314          1.1  christos OP_EX_VexW (int bytemode, int sizeflag)
   16315          1.1  christos {
   16316          1.1  christos   int reg = -1;
   16317          1.1  christos 
   16318          1.1  christos   if (!vex_w_done)
   16319          1.1  christos     {
   16320          1.1  christos       vex_w_done = 1;
   16321          1.1  christos 
   16322          1.1  christos       /* Skip mod/rm byte.  */
   16323          1.1  christos       MODRM_CHECK;
   16324          1.1  christos       codep++;
   16325          1.1  christos 
   16326          1.1  christos       if (vex.w)
   16327          1.1  christos 	reg = get_vex_imm8 (sizeflag, 0) >> 4;
   16328          1.1  christos     }
   16329          1.1  christos   else
   16330          1.1  christos     {
   16331          1.1  christos       if (!vex.w)
   16332          1.1  christos 	reg = get_vex_imm8 (sizeflag, 1) >> 4;
   16333          1.1  christos     }
   16334          1.1  christos 
   16335          1.1  christos   OP_EX_VexReg (bytemode, sizeflag, reg);
   16336          1.1  christos }
   16337          1.1  christos 
   16338          1.1  christos static void
   16339          1.1  christos VEXI4_Fixup (int bytemode ATTRIBUTE_UNUSED,
   16340          1.1  christos 	     int sizeflag ATTRIBUTE_UNUSED)
   16341          1.1  christos {
   16342          1.1  christos   /* Skip the immediate byte and check for invalid bits.  */
   16343          1.1  christos   FETCH_DATA (the_info, codep + 1);
   16344          1.1  christos   if (*codep++ & 0xf)
   16345          1.1  christos     BadOp ();
   16346          1.1  christos }
   16347          1.1  christos 
   16348          1.1  christos static void
   16349          1.1  christos OP_REG_VexI4 (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   16350          1.1  christos {
   16351          1.1  christos   int reg;
   16352          1.1  christos   const char **names;
   16353          1.1  christos 
   16354          1.1  christos   FETCH_DATA (the_info, codep + 1);
   16355          1.1  christos   reg = *codep++;
   16356          1.1  christos 
   16357          1.1  christos   if (bytemode != x_mode)
   16358          1.1  christos     abort ();
   16359          1.1  christos 
   16360          1.1  christos   if (reg & 0xf)
   16361          1.1  christos       BadOp ();
   16362          1.1  christos 
   16363          1.1  christos   reg >>= 4;
   16364          1.1  christos   if (reg > 7 && address_mode != mode_64bit)
   16365          1.1  christos     BadOp ();
   16366          1.1  christos 
   16367          1.1  christos   switch (vex.length)
   16368          1.1  christos     {
   16369          1.1  christos     case 128:
   16370          1.1  christos       names = names_xmm;
   16371          1.1  christos       break;
   16372          1.1  christos     case 256:
   16373          1.1  christos       names = names_ymm;
   16374          1.1  christos       break;
   16375          1.1  christos     default:
   16376          1.1  christos       abort ();
   16377          1.1  christos     }
   16378          1.1  christos   oappend (names[reg]);
   16379          1.1  christos }
   16380          1.1  christos 
   16381          1.1  christos static void
   16382          1.1  christos OP_XMM_VexW (int bytemode, int sizeflag)
   16383          1.1  christos {
   16384          1.1  christos   /* Turn off the REX.W bit since it is used for swapping operands
   16385          1.1  christos      now.  */
   16386          1.1  christos   rex &= ~REX_W;
   16387          1.1  christos   OP_XMM (bytemode, sizeflag);
   16388          1.1  christos }
   16389          1.1  christos 
   16390          1.1  christos static void
   16391          1.1  christos OP_EX_Vex (int bytemode, int sizeflag)
   16392          1.1  christos {
   16393          1.1  christos   if (modrm.mod != 3)
   16394          1.1  christos     {
   16395          1.1  christos       if (vex.register_specifier != 0)
   16396          1.1  christos 	BadOp ();
   16397          1.1  christos       need_vex_reg = 0;
   16398          1.1  christos     }
   16399          1.1  christos   OP_EX (bytemode, sizeflag);
   16400          1.1  christos }
   16401          1.1  christos 
   16402          1.1  christos static void
   16403          1.1  christos OP_XMM_Vex (int bytemode, int sizeflag)
   16404          1.1  christos {
   16405          1.1  christos   if (modrm.mod != 3)
   16406          1.1  christos     {
   16407          1.1  christos       if (vex.register_specifier != 0)
   16408          1.1  christos 	BadOp ();
   16409          1.1  christos       need_vex_reg = 0;
   16410          1.1  christos     }
   16411          1.1  christos   OP_XMM (bytemode, sizeflag);
   16412          1.1  christos }
   16413          1.1  christos 
   16414          1.1  christos static void
   16415          1.1  christos VZERO_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   16416          1.1  christos {
   16417          1.1  christos   switch (vex.length)
   16418          1.1  christos     {
   16419          1.1  christos     case 128:
   16420          1.1  christos       mnemonicendp = stpcpy (obuf, "vzeroupper");
   16421          1.1  christos       break;
   16422          1.1  christos     case 256:
   16423          1.1  christos       mnemonicendp = stpcpy (obuf, "vzeroall");
   16424          1.1  christos       break;
   16425          1.1  christos     default:
   16426          1.1  christos       abort ();
   16427          1.1  christos     }
   16428          1.1  christos }
   16429          1.1  christos 
   16430          1.1  christos static struct op vex_cmp_op[] =
   16431          1.1  christos {
   16432          1.1  christos   { STRING_COMMA_LEN ("eq") },
   16433          1.1  christos   { STRING_COMMA_LEN ("lt") },
   16434          1.1  christos   { STRING_COMMA_LEN ("le") },
   16435          1.1  christos   { STRING_COMMA_LEN ("unord") },
   16436          1.1  christos   { STRING_COMMA_LEN ("neq") },
   16437          1.1  christos   { STRING_COMMA_LEN ("nlt") },
   16438          1.1  christos   { STRING_COMMA_LEN ("nle") },
   16439          1.1  christos   { STRING_COMMA_LEN ("ord") },
   16440          1.1  christos   { STRING_COMMA_LEN ("eq_uq") },
   16441          1.1  christos   { STRING_COMMA_LEN ("nge") },
   16442          1.1  christos   { STRING_COMMA_LEN ("ngt") },
   16443          1.1  christos   { STRING_COMMA_LEN ("false") },
   16444          1.1  christos   { STRING_COMMA_LEN ("neq_oq") },
   16445          1.1  christos   { STRING_COMMA_LEN ("ge") },
   16446          1.1  christos   { STRING_COMMA_LEN ("gt") },
   16447          1.1  christos   { STRING_COMMA_LEN ("true") },
   16448          1.1  christos   { STRING_COMMA_LEN ("eq_os") },
   16449          1.1  christos   { STRING_COMMA_LEN ("lt_oq") },
   16450          1.1  christos   { STRING_COMMA_LEN ("le_oq") },
   16451          1.1  christos   { STRING_COMMA_LEN ("unord_s") },
   16452          1.1  christos   { STRING_COMMA_LEN ("neq_us") },
   16453          1.1  christos   { STRING_COMMA_LEN ("nlt_uq") },
   16454          1.1  christos   { STRING_COMMA_LEN ("nle_uq") },
   16455          1.1  christos   { STRING_COMMA_LEN ("ord_s") },
   16456          1.1  christos   { STRING_COMMA_LEN ("eq_us") },
   16457          1.1  christos   { STRING_COMMA_LEN ("nge_uq") },
   16458          1.1  christos   { STRING_COMMA_LEN ("ngt_uq") },
   16459          1.1  christos   { STRING_COMMA_LEN ("false_os") },
   16460          1.1  christos   { STRING_COMMA_LEN ("neq_os") },
   16461          1.1  christos   { STRING_COMMA_LEN ("ge_oq") },
   16462          1.1  christos   { STRING_COMMA_LEN ("gt_oq") },
   16463          1.1  christos   { STRING_COMMA_LEN ("true_us") },
   16464          1.1  christos };
   16465          1.1  christos 
   16466          1.1  christos static void
   16467          1.1  christos VCMP_Fixup (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   16468          1.1  christos {
   16469          1.1  christos   unsigned int cmp_type;
   16470          1.1  christos 
   16471          1.1  christos   FETCH_DATA (the_info, codep + 1);
   16472          1.1  christos   cmp_type = *codep++ & 0xff;
   16473          1.1  christos   if (cmp_type < ARRAY_SIZE (vex_cmp_op))
   16474          1.1  christos     {
   16475          1.1  christos       char suffix [3];
   16476          1.1  christos       char *p = mnemonicendp - 2;
   16477          1.1  christos       suffix[0] = p[0];
   16478          1.1  christos       suffix[1] = p[1];
   16479          1.1  christos       suffix[2] = '\0';
   16480          1.1  christos       sprintf (p, "%s%s", vex_cmp_op[cmp_type].name, suffix);
   16481          1.1  christos       mnemonicendp += vex_cmp_op[cmp_type].len;
   16482          1.1  christos     }
   16483          1.1  christos   else
   16484          1.1  christos     {
   16485          1.1  christos       /* We have a reserved extension byte.  Output it directly.  */
   16486          1.1  christos       scratchbuf[0] = '$';
   16487          1.1  christos       print_operand_value (scratchbuf + 1, 1, cmp_type);
   16488  1.1.1.1.8.1       tls       oappend_maybe_intel (scratchbuf);
   16489  1.1.1.1.8.1       tls       scratchbuf[0] = '\0';
   16490  1.1.1.1.8.1       tls     }
   16491  1.1.1.1.8.1       tls }
   16492  1.1.1.1.8.1       tls 
   16493  1.1.1.1.8.1       tls static void
   16494  1.1.1.1.8.1       tls VPCMP_Fixup (int bytemode ATTRIBUTE_UNUSED,
   16495  1.1.1.1.8.1       tls 	     int sizeflag ATTRIBUTE_UNUSED)
   16496  1.1.1.1.8.1       tls {
   16497  1.1.1.1.8.1       tls   unsigned int cmp_type;
   16498  1.1.1.1.8.1       tls 
   16499  1.1.1.1.8.1       tls   if (!vex.evex)
   16500  1.1.1.1.8.1       tls     abort ();
   16501  1.1.1.1.8.1       tls 
   16502  1.1.1.1.8.1       tls   FETCH_DATA (the_info, codep + 1);
   16503  1.1.1.1.8.1       tls   cmp_type = *codep++ & 0xff;
   16504  1.1.1.1.8.1       tls   /* There are aliases for immediates 0, 1, 2, 4, 5, 6.
   16505  1.1.1.1.8.1       tls      If it's the case, print suffix, otherwise - print the immediate.  */
   16506  1.1.1.1.8.1       tls   if (cmp_type < ARRAY_SIZE (simd_cmp_op)
   16507  1.1.1.1.8.1       tls       && cmp_type != 3
   16508  1.1.1.1.8.1       tls       && cmp_type != 7)
   16509  1.1.1.1.8.1       tls     {
   16510  1.1.1.1.8.1       tls       char suffix [3];
   16511  1.1.1.1.8.1       tls       char *p = mnemonicendp - 2;
   16512  1.1.1.1.8.1       tls 
   16513  1.1.1.1.8.1       tls       /* vpcmp* can have both one- and two-lettered suffix.  */
   16514  1.1.1.1.8.1       tls       if (p[0] == 'p')
   16515  1.1.1.1.8.1       tls 	{
   16516  1.1.1.1.8.1       tls 	  p++;
   16517  1.1.1.1.8.1       tls 	  suffix[0] = p[0];
   16518  1.1.1.1.8.1       tls 	  suffix[1] = '\0';
   16519  1.1.1.1.8.1       tls 	}
   16520  1.1.1.1.8.1       tls       else
   16521  1.1.1.1.8.1       tls 	{
   16522  1.1.1.1.8.1       tls 	  suffix[0] = p[0];
   16523  1.1.1.1.8.1       tls 	  suffix[1] = p[1];
   16524  1.1.1.1.8.1       tls 	  suffix[2] = '\0';
   16525  1.1.1.1.8.1       tls 	}
   16526  1.1.1.1.8.1       tls 
   16527  1.1.1.1.8.1       tls       sprintf (p, "%s%s", simd_cmp_op[cmp_type].name, suffix);
   16528  1.1.1.1.8.1       tls       mnemonicendp += simd_cmp_op[cmp_type].len;
   16529  1.1.1.1.8.1       tls     }
   16530  1.1.1.1.8.1       tls   else
   16531  1.1.1.1.8.1       tls     {
   16532  1.1.1.1.8.1       tls       /* We have a reserved extension byte.  Output it directly.  */
   16533  1.1.1.1.8.1       tls       scratchbuf[0] = '$';
   16534  1.1.1.1.8.1       tls       print_operand_value (scratchbuf + 1, 1, cmp_type);
   16535  1.1.1.1.8.1       tls       oappend_maybe_intel (scratchbuf);
   16536          1.1  christos       scratchbuf[0] = '\0';
   16537          1.1  christos     }
   16538          1.1  christos }
   16539          1.1  christos 
   16540          1.1  christos static const struct op pclmul_op[] =
   16541          1.1  christos {
   16542          1.1  christos   { STRING_COMMA_LEN ("lql") },
   16543          1.1  christos   { STRING_COMMA_LEN ("hql") },
   16544          1.1  christos   { STRING_COMMA_LEN ("lqh") },
   16545          1.1  christos   { STRING_COMMA_LEN ("hqh") }
   16546          1.1  christos };
   16547          1.1  christos 
   16548          1.1  christos static void
   16549          1.1  christos PCLMUL_Fixup (int bytemode ATTRIBUTE_UNUSED,
   16550          1.1  christos 	      int sizeflag ATTRIBUTE_UNUSED)
   16551          1.1  christos {
   16552          1.1  christos   unsigned int pclmul_type;
   16553          1.1  christos 
   16554          1.1  christos   FETCH_DATA (the_info, codep + 1);
   16555          1.1  christos   pclmul_type = *codep++ & 0xff;
   16556          1.1  christos   switch (pclmul_type)
   16557          1.1  christos     {
   16558          1.1  christos     case 0x10:
   16559          1.1  christos       pclmul_type = 2;
   16560          1.1  christos       break;
   16561          1.1  christos     case 0x11:
   16562          1.1  christos       pclmul_type = 3;
   16563          1.1  christos       break;
   16564          1.1  christos     default:
   16565          1.1  christos       break;
   16566  1.1.1.1.8.1       tls     }
   16567          1.1  christos   if (pclmul_type < ARRAY_SIZE (pclmul_op))
   16568          1.1  christos     {
   16569          1.1  christos       char suffix [4];
   16570          1.1  christos       char *p = mnemonicendp - 3;
   16571          1.1  christos       suffix[0] = p[0];
   16572          1.1  christos       suffix[1] = p[1];
   16573          1.1  christos       suffix[2] = p[2];
   16574          1.1  christos       suffix[3] = '\0';
   16575          1.1  christos       sprintf (p, "%s%s", pclmul_op[pclmul_type].name, suffix);
   16576          1.1  christos       mnemonicendp += pclmul_op[pclmul_type].len;
   16577          1.1  christos     }
   16578          1.1  christos   else
   16579          1.1  christos     {
   16580          1.1  christos       /* We have a reserved extension byte.  Output it directly.  */
   16581          1.1  christos       scratchbuf[0] = '$';
   16582          1.1  christos       print_operand_value (scratchbuf + 1, 1, pclmul_type);
   16583  1.1.1.1.8.1       tls       oappend_maybe_intel (scratchbuf);
   16584          1.1  christos       scratchbuf[0] = '\0';
   16585          1.1  christos     }
   16586          1.1  christos }
   16587          1.1  christos 
   16588          1.1  christos static void
   16589          1.1  christos MOVBE_Fixup (int bytemode, int sizeflag)
   16590          1.1  christos {
   16591          1.1  christos   /* Add proper suffix to "movbe".  */
   16592          1.1  christos   char *p = mnemonicendp;
   16593          1.1  christos 
   16594          1.1  christos   switch (bytemode)
   16595          1.1  christos     {
   16596          1.1  christos     case v_mode:
   16597          1.1  christos       if (intel_syntax)
   16598          1.1  christos 	goto skip;
   16599          1.1  christos 
   16600          1.1  christos       USED_REX (REX_W);
   16601          1.1  christos       if (sizeflag & SUFFIX_ALWAYS)
   16602          1.1  christos 	{
   16603          1.1  christos 	  if (rex & REX_W)
   16604          1.1  christos 	    *p++ = 'q';
   16605          1.1  christos 	  else
   16606          1.1  christos 	    {
   16607          1.1  christos 	      if (sizeflag & DFLAG)
   16608          1.1  christos 		*p++ = 'l';
   16609          1.1  christos 	      else
   16610          1.1  christos 		*p++ = 'w';
   16611          1.1  christos 	      used_prefixes |= (prefixes & PREFIX_DATA);
   16612          1.1  christos 	    }
   16613          1.1  christos 	}
   16614          1.1  christos       break;
   16615          1.1  christos     default:
   16616          1.1  christos       oappend (INTERNAL_DISASSEMBLER_ERROR);
   16617          1.1  christos       break;
   16618          1.1  christos     }
   16619          1.1  christos   mnemonicendp = p;
   16620          1.1  christos   *p = '\0';
   16621          1.1  christos 
   16622          1.1  christos skip:
   16623          1.1  christos   OP_M (bytemode, sizeflag);
   16624          1.1  christos }
   16625          1.1  christos 
   16626          1.1  christos static void
   16627          1.1  christos OP_LWPCB_E (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   16628          1.1  christos {
   16629          1.1  christos   int reg;
   16630          1.1  christos   const char **names;
   16631          1.1  christos 
   16632          1.1  christos   /* Skip mod/rm byte.  */
   16633          1.1  christos   MODRM_CHECK;
   16634          1.1  christos   codep++;
   16635          1.1  christos 
   16636          1.1  christos   if (vex.w)
   16637          1.1  christos     names = names64;
   16638          1.1  christos   else
   16639          1.1  christos     names = names32;
   16640          1.1  christos 
   16641          1.1  christos   reg = modrm.rm;
   16642          1.1  christos   USED_REX (REX_B);
   16643          1.1  christos   if (rex & REX_B)
   16644          1.1  christos     reg += 8;
   16645          1.1  christos 
   16646          1.1  christos   oappend (names[reg]);
   16647          1.1  christos }
   16648          1.1  christos 
   16649          1.1  christos static void
   16650          1.1  christos OP_LWP_E (int bytemode ATTRIBUTE_UNUSED, int sizeflag ATTRIBUTE_UNUSED)
   16651          1.1  christos {
   16652          1.1  christos   const char **names;
   16653          1.1  christos 
   16654          1.1  christos   if (vex.w)
   16655          1.1  christos     names = names64;
   16656          1.1  christos   else
   16657          1.1  christos     names = names32;
   16658          1.1  christos 
   16659          1.1  christos   oappend (names[vex.register_specifier]);
   16660          1.1  christos }
   16661          1.1  christos 
   16662  1.1.1.1.8.1       tls static void
   16663  1.1.1.1.8.1       tls OP_Mask (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   16664  1.1.1.1.8.1       tls {
   16665  1.1.1.1.8.1       tls   if (!vex.evex
   16666  1.1.1.1.8.1       tls       || bytemode != mask_mode)
   16667  1.1.1.1.8.1       tls     abort ();
   16668  1.1.1.1.8.1       tls 
   16669  1.1.1.1.8.1       tls   USED_REX (REX_R);
   16670  1.1.1.1.8.1       tls   if ((rex & REX_R) != 0 || !vex.r)
   16671  1.1.1.1.8.1       tls     {
   16672  1.1.1.1.8.1       tls       BadOp ();
   16673  1.1.1.1.8.1       tls       return;
   16674  1.1.1.1.8.1       tls     }
   16675  1.1.1.1.8.1       tls 
   16676  1.1.1.1.8.1       tls   oappend (names_mask [modrm.reg]);
   16677  1.1.1.1.8.1       tls }
   16678  1.1.1.1.8.1       tls 
   16679  1.1.1.1.8.1       tls static void
   16680  1.1.1.1.8.1       tls OP_Rounding (int bytemode, int sizeflag ATTRIBUTE_UNUSED)
   16681  1.1.1.1.8.1       tls {
   16682  1.1.1.1.8.1       tls   if (!vex.evex
   16683  1.1.1.1.8.1       tls       || (bytemode != evex_rounding_mode
   16684  1.1.1.1.8.1       tls 	  && bytemode != evex_sae_mode))
   16685  1.1.1.1.8.1       tls     abort ();
   16686  1.1.1.1.8.1       tls   if (modrm.mod == 3 && vex.b)
   16687  1.1.1.1.8.1       tls     switch (bytemode)
   16688  1.1.1.1.8.1       tls       {
   16689  1.1.1.1.8.1       tls       case evex_rounding_mode:
   16690  1.1.1.1.8.1       tls 	oappend (names_rounding[vex.ll]);
   16691  1.1.1.1.8.1       tls 	break;
   16692  1.1.1.1.8.1       tls       case evex_sae_mode:
   16693  1.1.1.1.8.1       tls 	oappend ("{sae}");
   16694  1.1.1.1.8.1       tls 	break;
   16695  1.1.1.1.8.1       tls       default:
   16696  1.1.1.1.8.1       tls 	break;
   16697  1.1.1.1.8.1       tls       }
   16698  1.1.1.1.8.1       tls }
   16699