Author: avg
Date: Mon Jul 29 16:56:38 2013
New Revision: 253772
URL: http://svnweb.freebsd.org/changeset/base/253772

Log:
  dtrace disassembler: take the latest/last CDDL code from OpenSolaris
  
  OpenSolaris version is:
  13108:33bb8a0301ab
  6762020 Disassembly support for Intel Advanced Vector Extensions (AVX)
  
  This corresponds to Illumos-gate (github) version
  ab47273fedff893c8ae22ec39ffc666d4fa6fc8b
  
  MFC after:    3 weeks

Modified:
  head/sys/cddl/dev/dtrace/amd64/dis_tables.c
  head/sys/cddl/dev/dtrace/amd64/dis_tables.h
  head/sys/cddl/dev/dtrace/i386/dis_tables.c
  head/sys/cddl/dev/dtrace/i386/dis_tables.h

Modified: head/sys/cddl/dev/dtrace/amd64/dis_tables.c
==============================================================================
--- head/sys/cddl/dev/dtrace/amd64/dis_tables.c Mon Jul 29 16:03:45 2013        
(r253771)
+++ head/sys/cddl/dev/dtrace/amd64/dis_tables.c Mon Jul 29 16:56:38 2013        
(r253772)
@@ -1,4 +1,5 @@
 /*
+ *
  * CDDL HEADER START
  *
  * The contents of this file are subject to the terms of the
@@ -17,21 +18,22 @@
  * information: Portions Copyright [yyyy] [name of copyright owner]
  *
  * CDDL HEADER END
- *
- * $FreeBSD$
  */
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ */
+
+/*
+ * Copyright (c) 2010, Intel Corporation.
+ * All rights reserved.
  */
 
 /*     Copyright (c) 1988 AT&T */
 /*       All Rights Reserved   */
 
-
-#if defined(sun)
-#pragma ident  "@(#)dis_tables.c       1.11    06/03/02 SMI"
-#endif
+/*
+ * $FreeBSD$
+ */
 
 #include       "dis_tables.h"
 
@@ -66,16 +68,16 @@ extern size_t strlcat(char *, const char
 #endif
 
 
-#define                TERM    NULL    /* used to indicate that the 'indirect' 
*/
+#define                TERM    0       /* used to indicate that the 'indirect' 
*/
                                /* field terminates - no pointer.       */
 
 /* Used to decode instructions. */
 typedef struct instable {
-       const struct instable   *it_indirect;   /* for decode op codes */
+       struct instable *it_indirect;   /* for decode op codes */
        uchar_t         it_adrmode;
 #ifdef DIS_TEXT
        char            it_name[NCPS];
-       uint_t          it_suffix:1;            /* mneu + "w", "l", or "d" */
+       uint_t          it_suffix:1;            /* mnem + "w", "l", or "d" */
 #endif
 #ifdef DIS_MEM
        uint_t          it_size:16;
@@ -106,6 +108,7 @@ enum {
        MO,             /* memory only (no registers) */
        PREF,
        SWAPGS,
+       MONITOR_MWAIT,
        R,
        RA,
        SEG,
@@ -152,8 +155,10 @@ enum {
        CWD,            /* so data16 can be evaluated for cwd and variants */
        RET,            /* single immediate 16-bit operand */
        MOVZ,           /* for movs and movz, with different size operands */
+       CRC32,          /* for crc32, with different size operands */
        XADDB,          /* for xaddb */
        MOVSXZ,         /* AMD64 mov sign extend 32 to 64 bit instruction */
+       MOVBE,          /* movbe instruction */
 
 /*
  * MMX/SIMD addressing modes.
@@ -166,6 +171,7 @@ enum {
        MMOS,           /* Prefixable MMX/SIMD-Int      mm      -> mm/mem */
        MMOMS,          /* Prefixable MMX/SIMD-Int      mm      -> mem */
        MMOPM,          /* MMX/SIMD-Int                 mm/mem  -> mm,imm8 */
+       MMOPM_66o,      /* MMX/SIMD-Int 0x66 optional   mm/mem  -> mm,imm8 */
        MMOPRM,         /* Prefixable MMX/SIMD-Int      r32/mem -> mm,imm8 */
        MMOSH,          /* Prefixable MMX               mm,imm8 */
        MM,             /* MMX/SIMD-Int                 mm/mem  -> mm   */
@@ -180,12 +186,19 @@ enum {
        XMMOM,          /* Prefixable SIMD              xmm     -> mem */
        XMMOMS,         /* Prefixable SIMD              mem     -> xmm */
        XMM,            /* SIMD                         xmm/mem -> xmm */
+       XMM_66r,        /* SIMD 0x66 prefix required    xmm/mem -> xmm */
+       XMM_66o,        /* SIMD 0x66 prefix optional    xmm/mem -> xmm */
        XMMXIMPL,       /* SIMD                         xmm     -> xmm (mem) */
        XMM3P,          /* SIMD                         xmm     -> r32,imm8 */
+       XMM3PM_66r,     /* SIMD 0x66 prefix required    xmm     -> r32/mem,imm8 
*/
        XMMP,           /* SIMD                         xmm/mem w/to xmm,imm8 */
+       XMMP_66o,       /* SIMD 0x66 prefix optional    xmm/mem w/to xmm,imm8 */
+       XMMP_66r,       /* SIMD 0x66 prefix required    xmm/mem w/to xmm,imm8 */
        XMMPRM,         /* SIMD                         r32/mem -> xmm,imm8 */
+       XMMPRM_66r,     /* SIMD 0x66 prefix required    r32/mem -> xmm,imm8 */
        XMMS,           /* SIMD                         xmm     -> xmm/mem */
        XMMM,           /* SIMD                         mem     -> xmm */
+       XMMM_66r,       /* SIMD 0x66 prefix required    mem     -> xmm */
        XMMMS,          /* SIMD                         xmm     -> mem */
        XMM3MX,         /* SIMD                         r32/mem -> xmm */
        XMM3MXS,        /* SIMD                         xmm     -> r32/mem */
@@ -195,10 +208,35 @@ enum {
        XMMXMM,         /* SIMD                         xmm/mem -> mm */
        XMMMX,          /* SIMD                         mm      -> xmm */
        XMMXM,          /* SIMD                         xmm     -> mm */
+        XMMX2I,                /* SIMD                         xmm -> xmm, 
imm, imm */
+        XMM2I,         /* SIMD                         xmm, imm, imm */
        XMMFENCE,       /* SIMD lfence or mfence */
-       XMMSFNC         /* SIMD sfence (none or mem) */
+       XMMSFNC,        /* SIMD sfence (none or mem) */
+       XGETBV_XSETBV,
+       VEX_NONE,       /* VEX  no operand */
+       VEX_MO,         /* VEX  mod_rm                         -> implicit reg 
*/
+       VEX_RMrX,       /* VEX  VEX.vvvv, mod_rm               -> mod_reg */
+       VEX_RRX,        /* VEX  VEX.vvvv, mod_reg              -> mod_rm */
+       VEX_RMRX,       /* VEX  VEX.vvvv, mod_rm, imm8[7:4]    -> mod_reg */
+       VEX_MX,         /* VEX  mod_rm                         -> mod_reg */
+       VEX_MXI,        /* VEX  mod_rm, imm8                   -> mod_reg */
+       VEX_XXI,        /* VEX  mod_rm, imm8                   -> VEX.vvvv */
+       VEX_MR,         /* VEX  mod_rm                         -> mod_reg */
+       VEX_RRI,        /* VEX  mod_reg, mod_rm                -> 
implicit(eflags/r32) */
+       VEX_RX,         /* VEX  mod_reg                        -> mod_rm */
+       VEX_RR,         /* VEX  mod_rm                         -> mod_reg */
+       VEX_RRi,        /* VEX  mod_rm, imm8                   -> mod_reg */
+       VEX_RM,         /* VEX  mod_reg                        -> mod_rm */
+       VEX_RRM,        /* VEX  VEX.vvvv, mod_reg              -> mod_rm */
+       VEX_RMX         /* VEX  VEX.vvvv, mod_rm               -> mod_reg */
 };
 
+/*
+ * VEX prefixes
+ */
+#define VEX_2bytes     0xC5    /* the first byte of two-byte form */
+#define VEX_3bytes     0xC4    /* the first byte of three-byte form */
+
 #define        FILL    0x90    /* Fill byte used for alignment (nop)   */
 
 /*
@@ -221,6 +259,7 @@ enum {
 #define        MODE_SIGNED     2       /* sign extended immediate */
 #define        MODE_IMPLIED    3       /* constant value implied from opcode */
 #define        MODE_OFFSET     4       /* offset part of an address */
+#define        MODE_RIPREL     5       /* like IPREL, but from %rip (amd64) */
 
 /*
  * The letters used in these macros are:
@@ -236,8 +275,8 @@ enum {
  */
 
 #if defined(DIS_TEXT) && defined(DIS_MEM)
-#define        IND(table)              {table, 0, "", 0, 0, 0, 0, 0, 0}
-#define        INDx(table)             {table, 0, "", 0, 0, 1, 0, 0, 0}
+#define        IND(table)              {(instable_t *)table, 0, "", 0, 0, 0, 
0, 0, 0}
+#define        INDx(table)             {(instable_t *)table, 0, "", 0, 0, 1, 
0, 0, 0}
 #define        TNS(name, amode)        {TERM, amode, name, 0, 0, 0, 0, 0, 0}
 #define        TNSu(name, amode)       {TERM, amode, name, 0, 0, 0, 0, 1, 0}
 #define        TNSx(name, amode)       {TERM, amode, name, 0, 0, 1, 0, 0, 0}
@@ -254,8 +293,8 @@ enum {
 #define        TSZy(name, amode, sz)   {TERM, amode, name, 1, sz, 0, 1, 0, 0}
 #define        INVALID                 {TERM, UNKNOWN, "", 0, 0, 0, 0, 0}
 #elif defined(DIS_TEXT)
-#define        IND(table)              {table, 0, "", 0, 0, 0, 0, 0}
-#define        INDx(table)             {table, 0, "", 0, 1, 0, 0, 0}
+#define        IND(table)              {(instable_t *)table, 0, "", 0, 0, 0, 
0, 0}
+#define        INDx(table)             {(instable_t *)table, 0, "", 0, 1, 0, 
0, 0}
 #define        TNS(name, amode)        {TERM, amode, name, 0, 0, 0, 0, 0}
 #define        TNSu(name, amode)       {TERM, amode, name, 0, 0, 0, 1, 0}
 #define        TNSx(name, amode)       {TERM, amode, name, 0, 1, 0, 0, 0}
@@ -272,8 +311,8 @@ enum {
 #define        TSZy(name, amode, sz)   {TERM, amode, name, 1, 0, 1, 0, 0}
 #define        INVALID                 {TERM, UNKNOWN, "", 0, 0, 0, 0, 0}
 #elif defined(DIS_MEM)
-#define        IND(table)              {table, 0, 0, 0, 0, 0, 0}
-#define        INDx(table)             {table, 0, 0, 1, 0, 0, 0}
+#define        IND(table)              {(instable_t *)table, 0, 0, 0, 0, 0, 0}
+#define        INDx(table)             {(instable_t *)table, 0, 0, 1, 0, 0, 0}
 #define        TNS(name, amode)        {TERM, amode,  0, 0, 0, 0, 0}
 #define        TNSu(name, amode)       {TERM, amode,  0, 0, 0, 1, 0}
 #define        TNSy(name, amode)       {TERM, amode,  0, 0, 1, 0, 0}
@@ -290,8 +329,8 @@ enum {
 #define        TSZy(name, amode, sz)   {TERM, amode, sz, 0, 1, 0, 0}
 #define        INVALID                 {TERM, UNKNOWN, 0, 0, 0, 0, 0}
 #else
-#define        IND(table)              {table[0], 0, 0, 0, 0, 0}
-#define        INDx(table)             {table[0], 0, 1, 0, 0, 0}
+#define        IND(table)              {(instable_t *)table, 0, 0, 0, 0, 0}
+#define        INDx(table)             {(instable_t *)table, 0, 1, 0, 0, 0}
 #define        TNS(name, amode)        {TERM, amode,  0, 0, 0, 0}
 #define        TNSu(name, amode)       {TERM, amode,  0, 0, 1, 0}
 #define        TNSy(name, amode)       {TERM, amode,  0, 1, 0, 0}
@@ -406,6 +445,11 @@ const char *const dis_XMMREG[16] = {
     "%xmm8", "%xmm9", "%xmm10", "%xmm11", "%xmm12", "%xmm13", "%xmm14", 
"%xmm15"
 };
 
+const char *const dis_YMMREG[16] = {
+    "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7",
+    "%ymm8", "%ymm9", "%ymm10", "%ymm11", "%ymm12", "%ymm13", "%ymm14", 
"%ymm15"
+};
+
 const char *const dis_SEGREG[16] = {
        "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "<reserved>", "<reserved>",
        "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "<reserved>", "<reserved>"
@@ -418,13 +462,15 @@ const char *const dis_PREDSUFFIX[8] = {
        "eq", "lt", "le", "unord", "neq", "nlt", "nle", "ord"
 };
 
-
+const char *const dis_AVXvgrp7[3][8] = {
+       /*0     1       2               3               4               5       
6               7*/
+/*71*/ {"",    "",     "vpsrlw",       "",             "vpsraw",       "",     
"vpsllw",       ""},
+/*72*/ {"",    "",     "vpsrld",       "",             "vpsrad",       "",     
"vpslld",       ""},
+/*73*/ {"",    "",     "vpsrlq",       "vpsrldq",      "",             "",     
"vpsllq",       "vpslldq"}
+};
 
 #endif /* DIS_TEXT */
 
-
-
-
 /*
  *     "decode table" for 64 bit mode MOVSXD instruction (opcode 0x63)
  */
@@ -450,7 +496,7 @@ const instable_t dis_op0F00[8] = {
  */
 const instable_t dis_op0F01[8] = {
 
-/*  [0]  */    TNSZ("sgdt",MO,6),      TNSZ("sidt",MO,6),      
TNSZ("lgdt",MO,6),      TNSZ("lidt",MO,6),
+/*  [0]  */    TNSZ("sgdt",MO,6),      TNSZ("sidt",MONITOR_MWAIT,6), 
TNSZ("lgdt",XGETBV_XSETBV,6),     TNSZ("lidt",MO,6),
 /*  [4]  */    TNSZ("smsw",M,2),       INVALID,                
TNSZ("lmsw",M,2),       TNS("invlpg",SWAPGS),
 };
 
@@ -468,7 +514,7 @@ const instable_t dis_op0F18[8] = {
  */
 const instable_t dis_op0FAE[8] = {
 /*  [0]  */    TNSZ("fxsave",M,512),   TNSZ("fxrstor",M,512),  
TNS("ldmxcsr",M),       TNS("stmxcsr",M),
-/*  [4]  */    INVALID,                TNS("lfence",XMMFENCE), 
TNS("mfence",XMMFENCE), TNS("sfence",XMMSFNC),
+/*  [4]  */    TNSZ("xsave",M,512),    TNS("lfence",XMMFENCE), 
TNS("mfence",XMMFENCE), TNS("sfence",XMMSFNC),
 };
 
 /*
@@ -587,7 +633,7 @@ const instable_t dis_opSIMDdata16[256] =
 
 /*  [70]  */   TNSZ("pshufd",XMMP,16), INVALID,                INVALID,        
        INVALID,
 /*  [74]  */   TNSZ("pcmpeqb",XMM,16), TNSZ("pcmpeqw",XMM,16), 
TNSZ("pcmpeqd",XMM,16), INVALID,
-/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   TNSZ("extrq",XMM2I,16), TNSZ("extrq",XMM,16), INVALID,          
INVALID,
 /*  [7C]  */   INVALID,                INVALID,                
TNSZ("movd",XMM3MXS,4), TNSZ("movdqa",XMMS,16),
 
 /*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
@@ -631,6 +677,88 @@ const instable_t dis_opSIMDdata16[256] =
 /*  [FC]  */   TNSZ("paddb",XMM,16),   TNSZ("paddw",XMM,16),   
TNSZ("paddd",XMM,16),   INVALID,
 };
 
+const instable_t dis_opAVX660F[256] = {
+/*  [00]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [04]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [08]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [10]  */   TNSZ("vmovupd",VEX_MX,16),      TNSZ("vmovupd",VEX_RX,16),      
TNSZ("vmovlpd",VEX_RMrX,8),     TNSZ("vmovlpd",VEX_RM,8),
+/*  [14]  */   
TNSZ("vunpcklpd",VEX_RMrX,16),TNSZ("vunpckhpd",VEX_RMrX,16),TNSZ("vmovhpd",VEX_RMrX,8),
 TNSZ("vmovhpd",VEX_RM,8),
+/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [28]  */   TNSZ("vmovapd",VEX_MX,16),      TNSZ("vmovapd",VEX_RX,16),      
INVALID,                TNSZ("vmovntpd",VEX_RM,16),
+/*  [2C]  */   INVALID,                INVALID,                
TNSZ("vucomisd",VEX_MX,8),TNSZ("vcomisd",VEX_MX,8),
+
+/*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   TNS("vmovmskpd",VEX_MR),        TNSZ("vsqrtpd",VEX_MX,16),      
INVALID,                INVALID,
+/*  [54]  */   TNSZ("vandpd",VEX_RMrX,16),     TNSZ("vandnpd",VEX_RMrX,16),    
TNSZ("vorpd",VEX_RMrX,16),      TNSZ("vxorpd",VEX_RMrX,16),
+/*  [58]  */   TNSZ("vaddpd",VEX_RMrX,16),     TNSZ("vmulpd",VEX_RMrX,16),     
TNSZ("vcvtpd2ps",VEX_MX,16),TNSZ("vcvtps2dq",VEX_MX,16),
+/*  [5C]  */   TNSZ("vsubpd",VEX_RMrX,16),     TNSZ("vminpd",VEX_RMrX,16),     
TNSZ("vdivpd",VEX_RMrX,16),     TNSZ("vmaxpd",VEX_RMrX,16),
+
+/*  [60]  */   
TNSZ("vpunpcklbw",VEX_RMrX,16),TNSZ("vpunpcklwd",VEX_RMrX,16),TNSZ("vpunpckldq",VEX_RMrX,16),TNSZ("vpacksswb",VEX_RMrX,16),
+/*  [64]  */   TNSZ("vpcmpgtb",VEX_RMrX,16),   TNSZ("vpcmpgtw",VEX_RMrX,16),   
TNSZ("vpcmpgtd",VEX_RMrX,16),   TNSZ("vpackuswb",VEX_RMrX,16),
+/*  [68]  */   
TNSZ("vpunpckhbw",VEX_RMrX,16),TNSZ("vpunpckhwd",VEX_RMrX,16),TNSZ("vpunpckhdq",VEX_RMrX,16),TNSZ("vpackssdw",VEX_RMrX,16),
+/*  [6C]  */   
TNSZ("vpunpcklqdq",VEX_RMrX,16),TNSZ("vpunpckhqdq",VEX_RMrX,16),TNSZ("vmovd",VEX_MX,4),TNSZ("vmovdqa",VEX_MX,16),
+
+/*  [70]  */   TNSZ("vpshufd",VEX_MXI,16),     TNSZ("vgrp71",VEX_XXI,16),      
TNSZ("vgrp72",VEX_XXI,16),              TNSZ("vgrp73",VEX_XXI,16),
+/*  [74]  */   TNSZ("vpcmpeqb",VEX_RMrX,16),   TNSZ("vpcmpeqw",VEX_RMrX,16),   
TNSZ("vpcmpeqd",VEX_RMrX,16),   INVALID,
+/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [7C]  */   TNSZ("vhaddpd",VEX_RMrX,16),    TNSZ("vhsubpd",VEX_RMrX,16),    
TNSZ("vmovd",VEX_RR,4), TNSZ("vmovdqa",VEX_RX,16),
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [8C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                
TNSZ("vcmppd",VEX_RMRX,16),     INVALID,
+/*  [C4]  */   TNSZ("vpinsrw",VEX_RMRX,2),TNS("vpextrw",VEX_MR),       
TNSZ("vshufpd",VEX_RMRX,16),    INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   TNSZ("vaddsubpd",VEX_RMrX,16),TNSZ("vpsrlw",VEX_RMrX,16),       
TNSZ("vpsrld",VEX_RMrX,16),     TNSZ("vpsrlq",VEX_RMrX,16),
+/*  [D4]  */   TNSZ("vpaddq",VEX_RMrX,16),     TNSZ("vpmullw",VEX_RMrX,16),    
TNSZ("vmovq",VEX_RX,8), TNS("vpmovmskb",VEX_MR),
+/*  [D8]  */   TNSZ("vpsubusb",VEX_RMrX,16),   TNSZ("vpsubusw",VEX_RMrX,16),   
TNSZ("vpminub",VEX_RMrX,16),    TNSZ("vpand",VEX_RMrX,16),
+/*  [DC]  */   TNSZ("vpaddusb",VEX_RMrX,16),   TNSZ("vpaddusw",VEX_RMrX,16),   
TNSZ("vpmaxub",VEX_RMrX,16),    TNSZ("vpandn",VEX_RMrX,16),
+
+/*  [E0]  */   TNSZ("vpavgb",VEX_RMrX,16),     TNSZ("vpsraw",VEX_RMrX,16),     
TNSZ("vpsrad",VEX_RMrX,16),     TNSZ("vpavgw",VEX_RMrX,16),
+/*  [E4]  */   TNSZ("vpmulhuw",VEX_RMrX,16),   TNSZ("vpmulhw",VEX_RMrX,16),    
TNSZ("vcvttpd2dq",VEX_MX,16),TNSZ("vmovntdq",VEX_RM,16),
+/*  [E8]  */   TNSZ("vpsubsb",VEX_RMrX,16),    TNSZ("vpsubsw",VEX_RMrX,16),    
TNSZ("vpminsw",VEX_RMrX,16),    TNSZ("vpor",VEX_RMrX,16),
+/*  [EC]  */   TNSZ("vpaddsb",VEX_RMrX,16),    TNSZ("vpaddsw",VEX_RMrX,16),    
TNSZ("vpmaxsw",VEX_RMrX,16),    TNSZ("vpxor",VEX_RMrX,16),
+
+/*  [F0]  */   INVALID,                TNSZ("vpsllw",VEX_RMrX,16),     
TNSZ("vpslld",VEX_RMrX,16),     TNSZ("vpsllq",VEX_RMrX,16),
+/*  [F4]  */   TNSZ("vpmuludq",VEX_RMrX,16),   TNSZ("vpmaddwd",VEX_RMrX,16),   
TNSZ("vpsadbw",VEX_RMrX,16),    TNS("vmaskmovdqu",VEX_MX),
+/*  [F8]  */   TNSZ("vpsubb",VEX_RMrX,16),     TNSZ("vpsubw",VEX_RMrX,16),     
TNSZ("vpsubd",VEX_RMrX,16),     TNSZ("vpsubq",VEX_RMrX,16),
+/*  [FC]  */   TNSZ("vpaddb",VEX_RMrX,16),     TNSZ("vpaddw",VEX_RMrX,16),     
TNSZ("vpaddd",VEX_RMrX,16),     INVALID,
+};
+
 /*
  *     Decode table for SIMD instructions with the repnz (0xf2) prefix.
  */
@@ -645,32 +773,538 @@ const instable_t dis_opSIMDrepnz[256] = 
 /*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [28]  */   INVALID,                INVALID,                
TNSZ("cvtsi2sd",XMM3MX,4),TNSZ("movntsd",XMMMS,8),
+/*  [2C]  */   TNSZ("cvttsd2si",XMMXM3,8),TNSZ("cvtsd2si",XMMXM3,8),INVALID,   
        INVALID,
+
+/*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   INVALID,                TNSZ("sqrtsd",XMM,8),   INVALID,        
        INVALID,
+/*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [58]  */   TNSZ("addsd",XMM,8),    TNSZ("mulsd",XMM,8),    
TNSZ("cvtsd2ss",XMM,8), INVALID,
+/*  [5C]  */   TNSZ("subsd",XMM,8),    TNSZ("minsd",XMM,8),    
TNSZ("divsd",XMM,8),    TNSZ("maxsd",XMM,8),
+
+/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [70]  */   TNSZ("pshuflw",XMMP,16),INVALID,                INVALID,        
        INVALID,
+/*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   TNSZ("insertq",XMMX2I,16),TNSZ("insertq",XMM,8),INVALID,        
        INVALID,
+/*  [7C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                
TNSZ("cmpsd",XMMP,8),   INVALID,
+/*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D4]  */   INVALID,                INVALID,                
TNS("movdq2q",XMMXM),   INVALID,
+/*  [D8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [DC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E4]  */   INVALID,                INVALID,                
TNSZ("cvtpd2dq",XMM,16),INVALID,
+/*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [F0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+};
+
+const instable_t dis_opAVXF20F[256] = {
+/*  [00]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [04]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [08]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [10]  */   TNSZ("vmovsd",VEX_RMrX,8),      TNSZ("vmovsd",VEX_RRX,8),       
TNSZ("vmovddup",VEX_MX,8),      INVALID,
+/*  [14]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [28]  */   INVALID,                INVALID,                
TNSZ("vcvtsi2sd",VEX_RMrX,4),INVALID,
+/*  [2C]  */   TNSZ("vcvttsd2si",VEX_MR,8),TNSZ("vcvtsd2si",VEX_MR,8),INVALID, 
        INVALID,
+
+/*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   INVALID,                TNSZ("vsqrtsd",VEX_RMrX,8),     
INVALID,                INVALID,
+/*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [58]  */   TNSZ("vaddsd",VEX_RMrX,8),      TNSZ("vmulsd",VEX_RMrX,8),      
TNSZ("vcvtsd2ss",VEX_RMrX,8),   INVALID,
+/*  [5C]  */   TNSZ("vsubsd",VEX_RMrX,8),      TNSZ("vminsd",VEX_RMrX,8),      
TNSZ("vdivsd",VEX_RMrX,8),      TNSZ("vmaxsd",VEX_RMrX,8),
+
+/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [70]  */   TNSZ("vpshuflw",VEX_MXI,16),INVALID,            INVALID,        
        INVALID,
+/*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [7C]  */   TNSZ("vhaddps",VEX_RMrX,8),     TNSZ("vhsubps",VEX_RMrX,8),     
INVALID,                INVALID,
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                
TNSZ("vcmpsd",VEX_RMRX,8),      INVALID,
+/*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   TNSZ("vaddsubps",VEX_RMrX,8),   INVALID,                
INVALID,                INVALID,
+/*  [D4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [DC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E4]  */   INVALID,                INVALID,                
TNSZ("vcvtpd2dq",VEX_MX,16),INVALID,
+/*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [F0]  */   TNSZ("vlddqu",VEX_MX,16),       INVALID,                
INVALID,                INVALID,
+/*  [F4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+};
+
+/*
+ *     Decode table for SIMD instructions with the repz (0xf3) prefix.
+ */
+const instable_t dis_opSIMDrepz[256] = {
+/*  [00]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [04]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [08]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [10]  */   TNSZ("movss",XMM,4),    TNSZ("movss",XMMS,4),   INVALID,        
        INVALID,
+/*  [14]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [28]  */   INVALID,                INVALID,                
TNSZ("cvtsi2ss",XMM3MX,4),TNSZ("movntss",XMMMS,4),
+/*  [2C]  */   TNSZ("cvttss2si",XMMXM3,4),TNSZ("cvtss2si",XMMXM3,4),INVALID,   
        INVALID,
+
+/*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   INVALID,                TNSZ("sqrtss",XMM,4),   
TNSZ("rsqrtss",XMM,4),  TNSZ("rcpss",XMM,4),
+/*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [58]  */   TNSZ("addss",XMM,4),    TNSZ("mulss",XMM,4),    
TNSZ("cvtss2sd",XMM,4), TNSZ("cvttps2dq",XMM,16),
+/*  [5C]  */   TNSZ("subss",XMM,4),    TNSZ("minss",XMM,4),    
TNSZ("divss",XMM,4),    TNSZ("maxss",XMM,4),
+
+/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("movdqu",XMM,16),
+
+/*  [70]  */   TNSZ("pshufhw",XMMP,16),INVALID,                INVALID,        
        INVALID,
+/*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [7C]  */   INVALID,                INVALID,                
TNSZ("movq",XMM,8),     TNSZ("movdqu",XMMS,16),
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   TS("popcnt",MRw),       INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                TS("lzcnt",MRw),        INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                
TNSZ("cmpss",XMMP,4),   INVALID,
+/*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D4]  */   INVALID,                INVALID,                
TNS("movq2dq",XMMMX),   INVALID,
+/*  [D8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [DC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E4]  */   INVALID,                INVALID,                
TNSZ("cvtdq2pd",XMM,8), INVALID,
+/*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [F0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+};
+
+const instable_t dis_opAVXF30F[256] = {
+/*  [00]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [04]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [08]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [10]  */   TNSZ("vmovss",VEX_RMrX,4),      TNSZ("vmovss",VEX_RRX,4),       
TNSZ("vmovsldup",VEX_MX,4),     INVALID,
+/*  [14]  */   INVALID,                INVALID,                
TNSZ("vmovshdup",VEX_MX,4),     INVALID,
+/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [28]  */   INVALID,                INVALID,                
TNSZ("vcvtsi2ss",VEX_RMrX,4),INVALID,
+/*  [2C]  */   TNSZ("vcvttss2si",VEX_MR,4),TNSZ("vcvtss2si",VEX_MR,4),INVALID, 
        INVALID,
+
+/*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   INVALID,                TNSZ("vsqrtss",VEX_RMrX,4),     
TNSZ("vrsqrtss",VEX_RMrX,4),    TNSZ("vrcpss",VEX_RMrX,4),
+/*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [58]  */   TNSZ("vaddss",VEX_RMrX,4),      TNSZ("vmulss",VEX_RMrX,4),      
TNSZ("vcvtss2sd",VEX_RMrX,4),   TNSZ("vcvttps2dq",VEX_MX,16),
+/*  [5C]  */   TNSZ("vsubss",VEX_RMrX,4),      TNSZ("vminss",VEX_RMrX,4),      
TNSZ("vdivss",VEX_RMrX,4),      TNSZ("vmaxss",VEX_RMrX,4),
+
+/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("vmovdqu",VEX_MX,16),
+
+/*  [70]  */   TNSZ("vpshufhw",VEX_MXI,16),INVALID,            INVALID,        
        INVALID,
+/*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [7C]  */   INVALID,                INVALID,                
TNSZ("vmovq",VEX_MX,8), TNSZ("vmovdqu",VEX_RX,16),
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                
TNSZ("vcmpss",VEX_RMRX,4),      INVALID,
+/*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [DC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E4]  */   INVALID,                INVALID,                
TNSZ("vcvtdq2pd",VEX_MX,8),     INVALID,
+/*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [F0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+};
+/*
+ * The following two tables are used to encode crc32 and movbe
+ * since they share the same opcodes.
+ */
+const instable_t dis_op0F38F0[2] = {
+/*  [00]  */   TNS("crc32b",CRC32),
+               TS("movbe",MOVBE),
+};
+
+const instable_t dis_op0F38F1[2] = {
+/*  [00]  */   TS("crc32",CRC32),
+               TS("movbe",MOVBE),
+};
+
+const instable_t dis_op0F38[256] = {
+/*  [00]  */   
TNSZ("pshufb",XMM_66o,16),TNSZ("phaddw",XMM_66o,16),TNSZ("phaddd",XMM_66o,16),TNSZ("phaddsw",XMM_66o,16),
+/*  [04]  */   TNSZ("pmaddubsw",XMM_66o,16),TNSZ("phsubw",XMM_66o,16), 
TNSZ("phsubd",XMM_66o,16),TNSZ("phsubsw",XMM_66o,16),
+/*  [08]  */   
TNSZ("psignb",XMM_66o,16),TNSZ("psignw",XMM_66o,16),TNSZ("psignd",XMM_66o,16),TNSZ("pmulhrsw",XMM_66o,16),
+/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [10]  */   TNSZ("pblendvb",XMM_66r,16),INVALID,            INVALID,        
        INVALID,
+/*  [14]  */   
TNSZ("blendvps",XMM_66r,16),TNSZ("blendvpd",XMM_66r,16),INVALID,        
TNSZ("ptest",XMM_66r,16),
+/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [1C]  */   
TNSZ("pabsb",XMM_66o,16),TNSZ("pabsw",XMM_66o,16),TNSZ("pabsd",XMM_66o,16),INVALID,
+
+/*  [20]  */   
TNSZ("pmovsxbw",XMM_66r,16),TNSZ("pmovsxbd",XMM_66r,16),TNSZ("pmovsxbq",XMM_66r,16),TNSZ("pmovsxwd",XMM_66r,16),
+/*  [24]  */   
TNSZ("pmovsxwq",XMM_66r,16),TNSZ("pmovsxdq",XMM_66r,16),INVALID,        INVALID,
+/*  [28]  */   
TNSZ("pmuldq",XMM_66r,16),TNSZ("pcmpeqq",XMM_66r,16),TNSZ("movntdqa",XMMM_66r,16),TNSZ("packusdw",XMM_66r,16),
+/*  [2C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [30]  */   
TNSZ("pmovzxbw",XMM_66r,16),TNSZ("pmovzxbd",XMM_66r,16),TNSZ("pmovzxbq",XMM_66r,16),TNSZ("pmovzxwd",XMM_66r,16),
+/*  [34]  */   
TNSZ("pmovzxwq",XMM_66r,16),TNSZ("pmovzxdq",XMM_66r,16),INVALID,        
TNSZ("pcmpgtq",XMM_66r,16),
+/*  [38]  */   
TNSZ("pminsb",XMM_66r,16),TNSZ("pminsd",XMM_66r,16),TNSZ("pminuw",XMM_66r,16),TNSZ("pminud",XMM_66r,16),
+/*  [3C]  */   
TNSZ("pmaxsb",XMM_66r,16),TNSZ("pmaxsd",XMM_66r,16),TNSZ("pmaxuw",XMM_66r,16),TNSZ("pmaxud",XMM_66r,16),
+
+/*  [40]  */   
TNSZ("pmulld",XMM_66r,16),TNSZ("phminposuw",XMM_66r,16),INVALID,        INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [58]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [5C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [70]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [7C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [8C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D8]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("aesimc",XMM_66r,16),
+/*  [DC]  */   
TNSZ("aesenc",XMM_66r,16),TNSZ("aesenclast",XMM_66r,16),TNSZ("aesdec",XMM_66r,16),TNSZ("aesdeclast",XMM_66r,16),
+
+/*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F0]  */   IND(dis_op0F38F0),      IND(dis_op0F38F1),      INVALID,        
        INVALID,
+/*  [F4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+};
+
+const instable_t dis_opAVX660F38[256] = {
+/*  [00]  */   
TNSZ("vpshufb",VEX_RMrX,16),TNSZ("vphaddw",VEX_RMrX,16),TNSZ("vphaddd",VEX_RMrX,16),TNSZ("vphaddsw",VEX_RMrX,16),
+/*  [04]  */   TNSZ("vpmaddubsw",VEX_RMrX,16),TNSZ("vphsubw",VEX_RMrX,16),     
TNSZ("vphsubd",VEX_RMrX,16),TNSZ("vphsubsw",VEX_RMrX,16),
+/*  [08]  */   
TNSZ("vpsignb",VEX_RMrX,16),TNSZ("vpsignw",VEX_RMrX,16),TNSZ("vpsignd",VEX_RMrX,16),TNSZ("vpmulhrsw",VEX_RMrX,16),
+/*  [0C]  */   
TNSZ("vpermilps",VEX_RMrX,8),TNSZ("vpermilpd",VEX_RMrX,16),TNSZ("vtestps",VEX_RRI,8),
   TNSZ("vtestpd",VEX_RRI,16),
+
+/*  [10]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [14]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("vptest",VEX_RRI,16),
+/*  [18]  */   
TNSZ("vbroadcastss",VEX_MX,4),TNSZ("vbroadcastsd",VEX_MX,8),TNSZ("vbroadcastf128",VEX_MX,16),INVALID,
+/*  [1C]  */   
TNSZ("vpabsb",VEX_MX,16),TNSZ("vpabsw",VEX_MX,16),TNSZ("vpabsd",VEX_MX,16),INVALID,
+
+/*  [20]  */   
TNSZ("vpmovsxbw",VEX_MX,16),TNSZ("vpmovsxbd",VEX_MX,16),TNSZ("vpmovsxbq",VEX_MX,16),TNSZ("vpmovsxwd",VEX_MX,16),
+/*  [24]  */   
TNSZ("vpmovsxwq",VEX_MX,16),TNSZ("vpmovsxdq",VEX_MX,16),INVALID,        INVALID,
+/*  [28]  */   
TNSZ("vpmuldq",VEX_RMrX,16),TNSZ("vpcmpeqq",VEX_RMrX,16),TNSZ("vmovntdqa",VEX_MX,16),TNSZ("vpackusdw",VEX_RMrX,16),
+/*  [2C]  */   
TNSZ("vmaskmovps",VEX_RMrX,8),TNSZ("vmaskmovpd",VEX_RMrX,16),TNSZ("vmaskmovps",VEX_RRM,8),TNSZ("vmaskmovpd",VEX_RRM,16),
+
+/*  [30]  */   
TNSZ("vpmovzxbw",VEX_MX,16),TNSZ("vpmovzxbd",VEX_MX,16),TNSZ("vpmovzxbq",VEX_MX,16),TNSZ("vpmovzxwd",VEX_MX,16),
+/*  [34]  */   
TNSZ("vpmovzxwq",VEX_MX,16),TNSZ("vpmovzxdq",VEX_MX,16),INVALID,        
TNSZ("vpcmpgtq",VEX_RMrX,16),
+/*  [38]  */   
TNSZ("vpminsb",VEX_RMrX,16),TNSZ("vpminsd",VEX_RMrX,16),TNSZ("vpminuw",VEX_RMrX,16),TNSZ("vpminud",VEX_RMrX,16),
+/*  [3C]  */   
TNSZ("vpmaxsb",VEX_RMrX,16),TNSZ("vpmaxsd",VEX_RMrX,16),TNSZ("vpmaxuw",VEX_RMrX,16),TNSZ("vpmaxud",VEX_RMrX,16),
+
+/*  [40]  */   
TNSZ("vpmulld",VEX_RMrX,16),TNSZ("vphminposuw",VEX_MX,16),INVALID,      INVALID,
+/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [50]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [58]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [5C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [70]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [7C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [8C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [98]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [9C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [A0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [A8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [AC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [B0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [C0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [D0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [D8]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("vaesimc",VEX_MX,16),
+/*  [DC]  */   
TNSZ("vaesenc",VEX_RMrX,16),TNSZ("vaesenclast",VEX_RMrX,16),TNSZ("vaesdec",VEX_RMrX,16),TNSZ("vaesdeclast",VEX_RMrX,16),
+
+/*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F0]  */   IND(dis_op0F38F0),      IND(dis_op0F38F1),      INVALID,        
        INVALID,
+/*  [F4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [F8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+};
+
+const instable_t dis_op0F3A[256] = {
+/*  [00]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [04]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [08]  */   
TNSZ("roundps",XMMP_66r,16),TNSZ("roundpd",XMMP_66r,16),TNSZ("roundss",XMMP_66r,16),TNSZ("roundsd",XMMP_66r,16),
+/*  [0C]  */   
TNSZ("blendps",XMMP_66r,16),TNSZ("blendpd",XMMP_66r,16),TNSZ("pblendw",XMMP_66r,16),TNSZ("palignr",XMMP_66o,16),
+
+/*  [10]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [14]  */   
TNSZ("pextrb",XMM3PM_66r,8),TNSZ("pextrw",XMM3PM_66r,16),TSZ("pextr",XMM3PM_66r,16),TNSZ("extractps",XMM3PM_66r,16),
+/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+
+/*  [20]  */   
TNSZ("pinsrb",XMMPRM_66r,8),TNSZ("insertps",XMMP_66r,16),TSZ("pinsr",XMMPRM_66r,16),INVALID,
 /*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [28]  */   INVALID,                INVALID,                
TNSZ("cvtsi2sd",XMM3MX,4),INVALID,
-/*  [2C]  */   TNSZ("cvttsd2si",XMMXM3,8),TNSZ("cvtsd2si",XMMXM3,8),INVALID,   
        INVALID,
+/*  [28]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [2C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
 /*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [40]  */   
TNSZ("dpps",XMMP_66r,16),TNSZ("dppd",XMMP_66r,16),TNSZ("mpsadbw",XMMP_66r,16),INVALID,
+/*  [44]  */   TNSZ("pclmulqdq",XMMP_66r,16),INVALID,          INVALID,        
        INVALID,
 /*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [50]  */   INVALID,                TNSZ("sqrtsd",XMM,8),   INVALID,        
        INVALID,
+/*  [50]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [58]  */   TNSZ("addsd",XMM,8),    TNSZ("mulsd",XMM,8),    
TNSZ("cvtsd2ss",XMM,8), INVALID,
-/*  [5C]  */   TNSZ("subsd",XMM,8),    TNSZ("minsd",XMM,8),    
TNSZ("divsd",XMM,8),    TNSZ("maxsd",XMM,8),
+/*  [58]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [5C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [60]  */   
TNSZ("pcmpestrm",XMMP_66r,16),TNSZ("pcmpestri",XMMP_66r,16),TNSZ("pcmpistrm",XMMP_66r,16),TNSZ("pcmpistri",XMMP_66r,16),
 /*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [6C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [70]  */   TNSZ("pshuflw",XMMP,16),INVALID,                INVALID,        
        INVALID,
+/*  [70]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [7C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
@@ -678,7 +1312,7 @@ const instable_t dis_opSIMDrepnz[256] = 
 /*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [8C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
 /*  [90]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [94]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
@@ -695,18 +1329,18 @@ const instable_t dis_opSIMDrepnz[256] = 
 /*  [B8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [BC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [C0]  */   INVALID,                INVALID,                
TNSZ("cmpsd",XMMP,8),   INVALID,
+/*  [C0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [C4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [C8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [CC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
 /*  [D0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [D4]  */   INVALID,                INVALID,                
TNS("movdq2q",XMMXM),   INVALID,
+/*  [D4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [D8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [DC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [DC]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("aeskeygenassist",XMMP_66r,16),
 
 /*  [E0]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [E4]  */   INVALID,                INVALID,                
TNSZ("cvtpd2dq",XMM,16),INVALID,
+/*  [E4]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [E8]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [EC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
@@ -716,54 +1350,51 @@ const instable_t dis_opSIMDrepnz[256] = 
 /*  [FC]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 };
 
-/*
- *     Decode table for SIMD instructions with the repz (0xf3) prefix.
- */
-const instable_t dis_opSIMDrepz[256] = {
+const instable_t dis_opAVX660F3A[256] = {
 /*  [00]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [04]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [08]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-
-/*  [10]  */   TNSZ("movss",XMM,4),    TNSZ("movss",XMMS,4),   INVALID,        
        INVALID,
-/*  [14]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [18]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [04]  */   
TNSZ("vpermilps",VEX_MXI,8),TNSZ("vpermilpd",VEX_MXI,16),TNSZ("vperm2f128",VEX_RMRX,16),INVALID,
+/*  [08]  */   
TNSZ("vroundps",VEX_MXI,16),TNSZ("vroundpd",VEX_MXI,16),TNSZ("vroundss",VEX_RMRX,16),TNSZ("vroundsd",VEX_RMRX,16),
+/*  [0C]  */   
TNSZ("vblendps",VEX_RMRX,16),TNSZ("vblendpd",VEX_RMRX,16),TNSZ("vpblendw",VEX_RMRX,16),TNSZ("vpalignr",VEX_RMRX,16),
+
+/*  [10]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [14]  */   
TNSZ("vpextrb",VEX_RRi,8),TNSZ("vpextrw",VEX_RRi,16),TNSZ("vpextrd",VEX_RRi,16),TNSZ("vextractps",VEX_RM,16),
+/*  [18]  */   
TNSZ("vinsertf128",VEX_RMRX,16),TNSZ("vextractf128",VEX_RX,16),INVALID,         
INVALID,
 /*  [1C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [20]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [20]  */   
TNSZ("vpinsrb",VEX_RMRX,8),TNSZ("vinsertps",VEX_RMRX,16),TNSZ("vpinsrd",VEX_RMRX,16),INVALID,
 /*  [24]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [28]  */   INVALID,                INVALID,                
TNSZ("cvtsi2ss",XMM3MX,4),INVALID,
-/*  [2C]  */   TNSZ("cvttss2si",XMMXM3,4),TNSZ("cvtss2si",XMMXM3,4),INVALID,   
        INVALID,
+/*  [28]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [2C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
 /*  [30]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [34]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [38]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [3C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [40]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [44]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [48]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [4C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [40]  */   
TNSZ("vdpps",VEX_RMRX,16),TNSZ("vdppd",VEX_RMRX,16),TNSZ("vmpsadbw",VEX_RMRX,16),INVALID,
+/*  [44]  */   TNSZ("vpclmulqdq",VEX_RMRX,16),INVALID,         INVALID,        
        INVALID,
+/*  [48]  */   INVALID,                INVALID,                
TNSZ("vblendvps",VEX_RMRX,8),   TNSZ("vblendvpd",VEX_RMRX,16),
+/*  [4C]  */   TNSZ("vpblendvb",VEX_RMRX,16),INVALID,          INVALID,        
        INVALID,
 
-/*  [50]  */   INVALID,                TNSZ("sqrtss",XMM,4),   
TNSZ("rsqrtss",XMM,4),  TNSZ("rcpss",XMM,4),
+/*  [50]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [54]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [58]  */   TNSZ("addss",XMM,4),    TNSZ("mulss",XMM,4),    
TNSZ("cvtss2sd",XMM,4), TNSZ("cvttps2dq",XMM,16),
-/*  [5C]  */   TNSZ("subss",XMM,4),    TNSZ("minss",XMM,4),    
TNSZ("divss",XMM,4),    TNSZ("maxss",XMM,4),
+/*  [58]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [5C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [60]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [60]  */   
TNSZ("vpcmpestrm",VEX_MXI,16),TNSZ("vpcmpestri",VEX_MXI,16),TNSZ("vpcmpistrm",VEX_MXI,16),TNSZ("vpcmpistri",VEX_MXI,16),
 /*  [64]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [68]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        TNSZ("movdqu",XMM,16),
+/*  [6C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
-/*  [70]  */   TNSZ("pshufhw",XMMP,16),INVALID,                INVALID,        
        INVALID,
+/*  [70]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [74]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [78]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [7C]  */   INVALID,                INVALID,                
TNSZ("movq",XMM,8),     TNSZ("movdqu",XMMS,16),
+/*  [7C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 
 /*  [80]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [84]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 /*  [88]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
-/*  [0C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
+/*  [8C]  */   INVALID,                INVALID,                INVALID,        
        INVALID,
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to