VirtualBox

Changeset 66479 in vbox


Ignore:
Timestamp:
Apr 7, 2017 3:55:21 PM (8 years ago)
Author:
vboxsync
Message:

IEM: Stubbed VEX opcode map 2 and 3.

Location:
trunk/src/VBox/VMM
Files:
7 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/Makefile.kmk

    r66474 r66479  
    10171017IEMAllInstructionsThree0f3a.cpp.o  IEMAllInstructionsThree0f3a.cpp.obj \
    10181018IEMAllInstructionsVexMap1.cpp.o    IEMAllInstructionsVexMap1.cpp.obj \
     1019IEMAllInstructionsVexMap2.cpp.o    IEMAllInstructionsVexMap2.cpp.obj \
     1020IEMAllInstructionsVexMap3.cpp.o    IEMAllInstructionsVexMap3.cpp.obj \
    10191021IEMAllInstructions3DNow.cpp.o      IEMAllInstructions3DNow.cpp.obj \
    10201022IEMAllCImpl.cpp.o                  IEMAllCImpl.cpp.obj \
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h

    r66474 r66479  
    743743#ifdef IEM_WITH_VEX
    744744# include "IEMAllInstructionsVexMap1.cpp.h"
     745# include "IEMAllInstructionsVexMap2.cpp.h"
     746# include "IEMAllInstructionsVexMap3.cpp.h"
    745747#endif
    746748#include "IEMAllInstructionsOneByte.cpp.h"
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsOneByte.cpp.h

    r66469 r66479  
    62396239
    62406240                case 2: /* 0x0f 0x38 lead opcode bytes. */
    6241                     /** @todo VEX: Just use new tables and decoders. */
     6241#ifdef IEM_WITH_VEX
     6242                    return FNIEMOP_CALL(g_apfnVexMap2[(uintptr_t)bOpcode * 4 + pVCpu->iem.s.idxPrefix]);
     6243#else
    62426244                    IEMOP_BITCH_ABOUT_STUB();
    62436245                    return VERR_IEM_INSTR_NOT_IMPLEMENTED;
     6246#endif
    62446247
    62456248                case 3: /* 0x0f 0x3a lead opcode bytes. */
    6246                     /** @todo VEX: Just use new tables and decoders. */
     6249#ifdef IEM_WITH_VEX
     6250                    return FNIEMOP_CALL(g_apfnVexMap3[(uintptr_t)bOpcode * 4 + pVCpu->iem.s.idxPrefix]);
     6251#else
    62476252                    IEMOP_BITCH_ABOUT_STUB();
    62486253                    return VERR_IEM_INSTR_NOT_IMPLEMENTED;
     6254#endif
    62496255
    62506256                default:
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r66474 r66479  
    32213221        ( 'three0f3a',  'IEMAllInstructionsThree0f3a.cpp.h'),
    32223222        ( 'vexmap1',    'IEMAllInstructionsVexMap1.cpp.h'),
     3223        ( 'vexmap2',    'IEMAllInstructionsVexMap2.cpp.h'),
     3224        ( 'vexmap3',    'IEMAllInstructionsVexMap3.cpp.h'),
    32233225        ( '3dnow',      'IEMAllInstructions3DNow.cpp.h'),
    32243226    ]:
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f38.cpp.h

    r66474 r66479  
    33 * IEM - Instruction Decoding and Emulation.
    44 *
    5  * @remarks IEMAllInstructionsVexMap1.cpp.h is a VEX mirror of this file.
     5 * @remarks IEMAllInstructionsVexMap2.cpp.h is a VEX mirror of this file.
    66 *          Any update here is likely needed in that file too.
    77 */
     
    3535FNIEMOP_STUB(iemOp_phaddd_Pq_Qq);
    3636/** Opcode 0x66 0x0f 0x38 0x02. */
    37 FNIEMOP_STUB(iemOp_phaddd_vx_Wx);
     37FNIEMOP_STUB(iemOp_phaddd_Vx_Wx);
    3838/** Opcode      0x0f 0x38 0x03. */
    3939FNIEMOP_STUB(iemOp_phaddsw_Pq_Qq);
     
    8383
    8484/*  Opcode      0x0f 0x38 0x10 - invalid */
    85 /** Opcode 0x66 0x0f 0x38 0x10. */
     85/** Opcode 0x66 0x0f 0x38 0x10 (legacy only). */
    8686FNIEMOP_STUB(iemOp_pblendvb_Vdq_Wdq);
    8787/*  Opcode      0x0f 0x38 0x11 - invalid */
     
    9292/*  Opcode 0x66 0x0f 0x38 0x13 - invalid (vex only). */
    9393/*  Opcode      0x0f 0x38 0x14 - invalid */
    94 /** Opcode 0x66 0x0f 0x38 0x14. */
     94/** Opcode 0x66 0x0f 0x38 0x14 (legacy only). */
    9595FNIEMOP_STUB(iemOp_blendvps_Vdq_Wdq);
    9696/*  Opcode      0x0f 0x38 0x15 - invalid */
    97 /** Opcode 0x66 0x0f 0x38 0x15. */
     97/** Opcode 0x66 0x0f 0x38 0x15 (legacy only). */
    9898FNIEMOP_STUB(iemOp_blendvpd_Vdq_Wdq);
    9999/*  Opcode      0x0f 0x38 0x16 - invalid */
     
    388388FNIEMOP_STUB(iemOp_aesdeclast_Vdq_Wdq);
    389389
    390 /*  Opcode 0x66 0x0f 0x38 0xb0 - invalid. */
    391 /*  Opcode 0x66 0x0f 0x38 0xb1 - invalid. */
    392 /*  Opcode 0x66 0x0f 0x38 0xb2 - invalid. */
    393 /*  Opcode 0x66 0x0f 0x38 0xb3 - invalid. */
    394 /*  Opcode 0x66 0x0f 0x38 0xb4 - invalid. */
    395 /*  Opcode 0x66 0x0f 0x38 0xb5 - invalid. */
    396 /*  Opcode 0x66 0x0f 0x38 0xb6 - invalid. */
    397 /*  Opcode 0x66 0x0f 0x38 0xb7 - invalid. */
    398 /*  Opcode 0x66 0x0f 0x38 0xb8 - invalid. */
    399 /*  Opcode 0x66 0x0f 0x38 0xb9 - invalid. */
    400 /*  Opcode 0x66 0x0f 0x38 0xba - invalid. */
    401 /*  Opcode 0x66 0x0f 0x38 0xbb - invalid. */
    402 /*  Opcode 0x66 0x0f 0x38 0xbc - invalid. */
    403 /*  Opcode 0x66 0x0f 0x38 0xbd - invalid. */
    404 /*  Opcode 0x66 0x0f 0x38 0xbe - invalid. */
    405 /*  Opcode 0x66 0x0f 0x38 0xbf - invalid. */
     390/*  Opcode 0x66 0x0f 0x38 0xe0 - invalid. */
     391/*  Opcode 0x66 0x0f 0x38 0xe1 - invalid. */
     392/*  Opcode 0x66 0x0f 0x38 0xe2 - invalid. */
     393/*  Opcode 0x66 0x0f 0x38 0xe3 - invalid. */
     394/*  Opcode 0x66 0x0f 0x38 0xe4 - invalid. */
     395/*  Opcode 0x66 0x0f 0x38 0xe5 - invalid. */
     396/*  Opcode 0x66 0x0f 0x38 0xe6 - invalid. */
     397/*  Opcode 0x66 0x0f 0x38 0xe7 - invalid. */
     398/*  Opcode 0x66 0x0f 0x38 0xe8 - invalid. */
     399/*  Opcode 0x66 0x0f 0x38 0xe9 - invalid. */
     400/*  Opcode 0x66 0x0f 0x38 0xea - invalid. */
     401/*  Opcode 0x66 0x0f 0x38 0xeb - invalid. */
     402/*  Opcode 0x66 0x0f 0x38 0xec - invalid. */
     403/*  Opcode 0x66 0x0f 0x38 0xed - invalid. */
     404/*  Opcode 0x66 0x0f 0x38 0xee - invalid. */
     405/*  Opcode 0x66 0x0f 0x38 0xef - invalid. */
    406406
    407407
     
    504504    /* 0x00 */  iemOp_pshufb_Pq_Qq,         iemOp_pshufb_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    505505    /* 0x01 */  iemOp_phaddw_Pq_Qq,         iemOp_phaddw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    506     /* 0x02 */  iemOp_phaddd_Pq_Qq,         iemOp_phaddd_vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     506    /* 0x02 */  iemOp_phaddd_Pq_Qq,         iemOp_phaddd_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    507507    /* 0x03 */  iemOp_phaddsw_Pq_Qq,        iemOp_phaddsw_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    508508    /* 0x04 */  iemOp_pmaddubsw_Pq_Qq,      iemOp_pmaddubsw_Vx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f3a.cpp.h

    r66474 r66479  
    2424 */
    2525
    26 /** Opcode 0x66 0x0f 0x00. */
    27 FNIEMOP_STUB(iemOp_permq_Vqq_Wqq_Ib);
    28 /** Opcode 0x66 0x0f 0x01. */
    29 FNIEMOP_STUB(iemOp_permqd_Vqq_Wqq_Ib);
    30 /** Opcode 0x66 0x0f 0x02. */
    31 FNIEMOP_STUB(iemOp_pblendd_Vx_Wx_Ib);
     26/** Opcode 0x66 0x0f 0x00 - invalid (vex only). */
     27/** Opcode 0x66 0x0f 0x01 - invalid (vex only). */
     28/** Opcode 0x66 0x0f 0x02 - invalid (vex only). */
    3229/*  Opcode 0x66 0x0f 0x03 - invalid */
    33 /** Opcode 0x66 0x0f 0x04. */
    34 FNIEMOP_STUB(iemOp_permilps_Vx_Wx_Ib);
    35 /** Opcode 0x66 0x0f 0x05. */
    36 FNIEMOP_STUB(iemOp_permilpd_Vx_Wx_Ib);
     30/** Opcode 0x66 0x0f 0x04 - invalid (vex only). */
     31/** Opcode 0x66 0x0f 0x05 - invalid (vex only). */
    3732/*  Opcode 0x66 0x0f 0x06 - invalid (vex only) */
    3833/*  Opcode 0x66 0x0f 0x07 - invalid */
     
    230225{
    231226    /*          no prefix,                  066h prefix                 f3h prefix,                 f2h prefix */
    232     /* 0x00 */  iemOp_InvalidNeedRMImm8,    iemOp_permq_Vqq_Wqq_Ib,     iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    233     /* 0x01 */  iemOp_InvalidNeedRMImm8,    iemOp_permqd_Vqq_Wqq_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    234     /* 0x02 */  iemOp_InvalidNeedRMImm8,    iemOp_pblendd_Vx_Wx_Ib,     iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     227    /* 0x00 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     228    /* 0x01 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     229    /* 0x02 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    235230    /* 0x03 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    236     /* 0x04 */  iemOp_InvalidNeedRMImm8,    iemOp_permilps_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    237     /* 0x05 */  iemOp_InvalidNeedRMImm8,    iemOp_permilpd_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     231    /* 0x04 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     232    /* 0x05 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    238233    /* 0x06 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    239234    /* 0x07 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap1.cpp.h

    r66469 r66479  
    1818 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
    1919 */
    20 
    21 
    22 /*******************************************************************************
    23 *   Global Variables                                                           *
    24 *******************************************************************************/
    25 extern const PFNIEMOP g_apfnOneByteMap[256]; /* not static since we need to forward declare it. */
    26 
    2720
    2821
     
    27902783 * VEX opcode map \#1.
    27912784 *
    2792  * @remarks This is (currently) a subset of g_apfnTwoByteMap, so please check if
    2793  *          it it needs updating too when making changes.
     2785 * @sa  g_apfnTwoByteMap
    27942786 */
    27952787IEM_STATIC const PFNIEMOP g_apfnVexMap1[] =
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap2.cpp.h

    r66474 r66479  
    33 * IEM - Instruction Decoding and Emulation.
    44 *
    5  * @remarks IEMAllInstructionsVexMap1.cpp.h is a VEX mirror of this file.
     5 * @remarks IEMAllInstructionsThree0f38.cpp.h is a VEX mirror of this file.
    66 *          Any update here is likely needed in that file too.
    77 */
     
    2020
    2121
    22 /** @name Three byte opcodes with first two bytes 0x0f 0x38
     22/** @name VEX Opcode Map 2
    2323 * @{
    2424 */
    2525
    26 /*  Opcode      0x0f 0x38 0x00. */
    27 FNIEMOP_STUB(iemOp_pshufb_Pq_Qq);
    28 /*  Opcode 0x66 0x0f 0x38 0x00. */
    29 FNIEMOP_STUB(iemOp_pshufb_Vx_Wx);
    30 /*  Opcode      0x0f 0x38 0x01. */
    31 FNIEMOP_STUB(iemOp_phaddw_Pq_Qq);
    32 /** Opcode 0x66 0x0f 0x38 0x01. */
    33 FNIEMOP_STUB(iemOp_phaddw_Vx_Wx);
    34 /** Opcode      0x0f 0x38 0x02. */
    35 FNIEMOP_STUB(iemOp_phaddd_Pq_Qq);
    36 /** Opcode 0x66 0x0f 0x38 0x02. */
    37 FNIEMOP_STUB(iemOp_phaddd_vx_Wx);
    38 /** Opcode      0x0f 0x38 0x03. */
    39 FNIEMOP_STUB(iemOp_phaddsw_Pq_Qq);
    40 /** Opcode 0x66 0x0f 0x38 0x03. */
    41 FNIEMOP_STUB(iemOp_phaddsw_Vx_Wx);
    42 /** Opcode      0x0f 0x38 0x04. */
    43 FNIEMOP_STUB(iemOp_pmaddubsw_Pq_Qq);
    44 /** Opcode 0x66 0x0f 0x38 0x04. */
    45 FNIEMOP_STUB(iemOp_pmaddubsw_Vx_Wx);
    46 /** Opcode      0x0f 0x38 0x05. */
    47 FNIEMOP_STUB(iemOp_phsubw_Pq_Qq);
    48 /** Opcode 0x66 0x0f 0x38 0x05. */
    49 FNIEMOP_STUB(iemOp_phsubw_Vx_Wx);
    50 /** Opcode      0x0f 0x38 0x06. */
    51 FNIEMOP_STUB(iemOp_phsubd_Pq_Qq);
    52 /** Opcode 0x66 0x0f 0x38 0x06. */
    53 FNIEMOP_STUB(iemOp_phsubdq_Vx_Wx);
    54 /** Opcode      0x0f 0x38 0x07. */
    55 FNIEMOP_STUB(iemOp_phsubsw_Pq_Qq);
    56 /** Opcode 0x66 0x0f 0x38 0x07. */
    57 FNIEMOP_STUB(iemOp_phsubsw_Vx_Wx);
    58 /** Opcode      0x0f 0x38 0x08. */
    59 FNIEMOP_STUB(iemOp_psignb_Pq_Qq);
    60 /** Opcode 0x66 0x0f 0x38 0x08. */
    61 FNIEMOP_STUB(iemOp_psignb_Vx_Wx);
    62 /** Opcode      0x0f 0x38 0x09. */
    63 FNIEMOP_STUB(iemOp_psignw_Pq_Qq);
    64 /** Opcode 0x66 0x0f 0x38 0x09. */
    65 FNIEMOP_STUB(iemOp_psignw_Vx_Wx);
    66 /** Opcode      0x0f 0x38 0x0a. */
    67 FNIEMOP_STUB(iemOp_psignd_Pq_Qq);
    68 /** Opcode 0x66 0x0f 0x38 0x0a. */
    69 FNIEMOP_STUB(iemOp_psignd_Vx_Wx);
    70 /** Opcode      0x0f 0x38 0x0b. */
    71 FNIEMOP_STUB(iemOp_pmulhrsw_Pq_Qq);
    72 /** Opcode 0x66 0x0f 0x38 0x0b. */
    73 FNIEMOP_STUB(iemOp_pmulhrsw_Vx_Wx);
    74 /*  Opcode      0x0f 0x38 0x0c - invalid. */
    75 /*  Opcode 0x66 0x0f 0x38 0x0c - invalid (vex only). */
    76 /*  Opcode      0x0f 0x38 0x0d - invalid. */
    77 /*  Opcode 0x66 0x0f 0x38 0x0d - invalid (vex only). */
    78 /*  Opcode      0x0f 0x38 0x0e - invalid. */
    79 /*  Opcode 0x66 0x0f 0x38 0x0e - invalid (vex only). */
    80 /*  Opcode      0x0f 0x38 0x0f - invalid. */
    81 /*  Opcode 0x66 0x0f 0x38 0x0f - invalid (vex only). */
    82 
    83 
    84 /*  Opcode      0x0f 0x38 0x10 - invalid */
    85 /** Opcode 0x66 0x0f 0x38 0x10. */
    86 FNIEMOP_STUB(iemOp_pblendvb_Vdq_Wdq);
    87 /*  Opcode      0x0f 0x38 0x11 - invalid */
    88 /*  Opcode 0x66 0x0f 0x38 0x11 - invalid */
    89 /*  Opcode      0x0f 0x38 0x12 - invalid */
    90 /*  Opcode 0x66 0x0f 0x38 0x12 - invalid */
    91 /*  Opcode      0x0f 0x38 0x13 - invalid */
    92 /*  Opcode 0x66 0x0f 0x38 0x13 - invalid (vex only). */
    93 /*  Opcode      0x0f 0x38 0x14 - invalid */
    94 /** Opcode 0x66 0x0f 0x38 0x14. */
    95 FNIEMOP_STUB(iemOp_blendvps_Vdq_Wdq);
    96 /*  Opcode      0x0f 0x38 0x15 - invalid */
    97 /** Opcode 0x66 0x0f 0x38 0x15. */
    98 FNIEMOP_STUB(iemOp_blendvpd_Vdq_Wdq);
    99 /*  Opcode      0x0f 0x38 0x16 - invalid */
    100 /*  Opcode 0x66 0x0f 0x38 0x16 - invalid (vex only). */
    101 /*  Opcode      0x0f 0x38 0x17 - invalid */
    102 /** Opcode 0x66 0x0f 0x38 0x17 - invalid */
    103 FNIEMOP_STUB(iemOp_ptest_Vx_Wx);
    104 /*  Opcode      0x0f 0x38 0x18 - invalid */
    105 /*  Opcode 0x66 0x0f 0x38 0x18 - invalid (vex only). */
    106 /*  Opcode      0x0f 0x38 0x19 - invalid */
    107 /*  Opcode 0x66 0x0f 0x38 0x19 - invalid (vex only). */
    108 /*  Opcode      0x0f 0x38 0x1a - invalid */
    109 /*  Opcode 0x66 0x0f 0x38 0x1a - invalid (vex only). */
    110 /*  Opcode      0x0f 0x38 0x1b - invalid */
    111 /*  Opcode 0x66 0x0f 0x38 0x1b - invalid */
    112 /** Opcode      0x0f 0x38 0x1c. */
    113 FNIEMOP_STUB(iemOp_pabsb_Pq_Qq);
    114 /** Opcode 0x66 0x0f 0x38 0x1c. */
    115 FNIEMOP_STUB(iemOp_pabsb_Vx_Wx);
    116 /** Opcode      0x0f 0x38 0x1d. */
    117 FNIEMOP_STUB(iemOp_pabsw_Pq_Qq);
    118 /** Opcode 0x66 0x0f 0x38 0x1d. */
    119 FNIEMOP_STUB(iemOp_pabsw_Vx_Wx);
    120 /** Opcode      0x0f 0x38 0x1e. */
    121 FNIEMOP_STUB(iemOp_pabsd_Pq_Qq);
    122 /** Opcode 0x66 0x0f 0x38 0x1e. */
    123 FNIEMOP_STUB(iemOp_pabsd_Vx_Wx);
    124 /*  Opcode      0x0f 0x38 0x1f - invalid */
    125 /*  Opcode 0x66 0x0f 0x38 0x1f - invalid */
    126 
    127 
    128 /** Opcode 0x66 0x0f 0x38 0x20. */
    129 FNIEMOP_STUB(iemOp_pmovsxbw_Vx_UxMq);
    130 /** Opcode 0x66 0x0f 0x38 0x21. */
    131 FNIEMOP_STUB(iemOp_pmovsxbd_Vx_UxMd);
    132 /** Opcode 0x66 0x0f 0x38 0x22. */
    133 FNIEMOP_STUB(iemOp_pmovsxbq_Vx_UxMw);
    134 /** Opcode 0x66 0x0f 0x38 0x23. */
    135 FNIEMOP_STUB(iemOp_pmovsxwd_Vx_UxMq);
    136 /** Opcode 0x66 0x0f 0x38 0x24. */
    137 FNIEMOP_STUB(iemOp_pmovsxwq_Vx_UxMd);
    138 /** Opcode 0x66 0x0f 0x38 0x25. */
    139 FNIEMOP_STUB(iemOp_pmovsxdq_Vx_UxMq);
    140 /*  Opcode 0x66 0x0f 0x38 0x26 - invalid */
    141 /*  Opcode 0x66 0x0f 0x38 0x27 - invalid */
    142 /** Opcode 0x66 0x0f 0x38 0x28. */
    143 FNIEMOP_STUB(iemOp_pmuldq_Vx_Wx);
    144 /** Opcode 0x66 0x0f 0x38 0x29. */
    145 FNIEMOP_STUB(iemOp_pcmpeqq_Vx_Wx);
    146 /** Opcode 0x66 0x0f 0x38 0x2a. */
    147 FNIEMOP_STUB(iemOp_movntdqa_Vx_Mx);
    148 /** Opcode 0x66 0x0f 0x38 0x2b. */
    149 FNIEMOP_STUB(iemOp_packusdw_Vx_Wx);
    150 /*  Opcode 0x66 0x0f 0x38 0x2c - invalid (vex only). */
    151 /*  Opcode 0x66 0x0f 0x38 0x2d - invalid (vex only). */
    152 /*  Opcode 0x66 0x0f 0x38 0x2e - invalid (vex only). */
    153 /*  Opcode 0x66 0x0f 0x38 0x2f - invalid (vex only). */
    154 
    155 /** Opcode 0x66 0x0f 0x38 0x30. */
    156 FNIEMOP_STUB(iemOp_pmovzxbw_Vx_UxMq);
    157 /** Opcode 0x66 0x0f 0x38 0x31. */
    158 FNIEMOP_STUB(iemOp_pmovzxbd_Vx_UxMd);
    159 /** Opcode 0x66 0x0f 0x38 0x32. */
    160 FNIEMOP_STUB(iemOp_pmovzxbq_Vx_UxMw);
    161 /** Opcode 0x66 0x0f 0x38 0x33. */
    162 FNIEMOP_STUB(iemOp_pmovzxwd_Vx_UxMq);
    163 /** Opcode 0x66 0x0f 0x38 0x34. */
    164 FNIEMOP_STUB(iemOp_pmovzxwq_Vx_UxMd);
    165 /** Opcode 0x66 0x0f 0x38 0x35. */
    166 FNIEMOP_STUB(iemOp_pmovzxdq_Vx_UxMq);
    167 /*  Opcode 0x66 0x0f 0x38 0x36 - invalid (vex only). */
    168 /** Opcode 0x66 0x0f 0x38 0x37. */
    169 FNIEMOP_STUB(iemOp_pcmpgtq_Vx_Wx);
    170 /** Opcode 0x66 0x0f 0x38 0x38. */
    171 FNIEMOP_STUB(iemOp_pminsb_Vx_Wx);
    172 /** Opcode 0x66 0x0f 0x38 0x39. */
    173 FNIEMOP_STUB(iemOp_pminsd_Vx_Wx);
    174 /** Opcode 0x66 0x0f 0x38 0x3a. */
    175 FNIEMOP_STUB(iemOp_pminuw_Vx_Wx);
    176 /** Opcode 0x66 0x0f 0x38 0x3b. */
    177 FNIEMOP_STUB(iemOp_pminud_Vx_Wx);
    178 /** Opcode 0x66 0x0f 0x38 0x3c. */
    179 FNIEMOP_STUB(iemOp_pmaxsb_Vx_Wx);
    180 /** Opcode 0x66 0x0f 0x38 0x3d. */
    181 FNIEMOP_STUB(iemOp_pmaxsd_Vx_Wx);
    182 /** Opcode 0x66 0x0f 0x38 0x3e. */
    183 FNIEMOP_STUB(iemOp_pmaxuw_Vx_Wx);
    184 /** Opcode 0x66 0x0f 0x38 0x3f. */
    185 FNIEMOP_STUB(iemOp_pmaxud_Vx_Wx);
    186 
    187 
    188 /** Opcode 0x66 0x0f 0x38 0x40. */
    189 FNIEMOP_STUB(iemOp_pmulld_Vx_Wx);
    190 /** Opcode 0x66 0x0f 0x38 0x41. */
    191 FNIEMOP_STUB(iemOp_phminposuw_Vdq_Wdq);
    192 /*  Opcode 0x66 0x0f 0x38 0x42 - invalid. */
    193 /*  Opcode 0x66 0x0f 0x38 0x43 - invalid. */
    194 /*  Opcode 0x66 0x0f 0x38 0x44 - invalid. */
    195 /*  Opcode 0x66 0x0f 0x38 0x45 - invalid (vex only). */
    196 /*  Opcode 0x66 0x0f 0x38 0x46 - invalid (vex only). */
    197 /*  Opcode 0x66 0x0f 0x38 0x47 - invalid (vex only). */
    198 /*  Opcode 0x66 0x0f 0x38 0x48 - invalid. */
    199 /*  Opcode 0x66 0x0f 0x38 0x49 - invalid. */
    200 /*  Opcode 0x66 0x0f 0x38 0x4a - invalid. */
    201 /*  Opcode 0x66 0x0f 0x38 0x4b - invalid. */
    202 /*  Opcode 0x66 0x0f 0x38 0x4c - invalid. */
    203 /*  Opcode 0x66 0x0f 0x38 0x4d - invalid. */
    204 /*  Opcode 0x66 0x0f 0x38 0x4e - invalid. */
    205 /*  Opcode 0x66 0x0f 0x38 0x4f - invalid. */
    206 
    207 /*  Opcode 0x66 0x0f 0x38 0x50 - invalid. */
    208 /*  Opcode 0x66 0x0f 0x38 0x51 - invalid. */
    209 /*  Opcode 0x66 0x0f 0x38 0x52 - invalid. */
    210 /*  Opcode 0x66 0x0f 0x38 0x53 - invalid. */
    211 /*  Opcode 0x66 0x0f 0x38 0x54 - invalid. */
    212 /*  Opcode 0x66 0x0f 0x38 0x55 - invalid. */
    213 /*  Opcode 0x66 0x0f 0x38 0x56 - invalid. */
    214 /*  Opcode 0x66 0x0f 0x38 0x57 - invalid. */
    215 /*  Opcode 0x66 0x0f 0x38 0x58 - invalid (vex only). */
    216 /*  Opcode 0x66 0x0f 0x38 0x59 - invalid (vex only). */
    217 /*  Opcode 0x66 0x0f 0x38 0x5a - invalid (vex only). */
    218 /*  Opcode 0x66 0x0f 0x38 0x5b - invalid. */
    219 /*  Opcode 0x66 0x0f 0x38 0x5c - invalid. */
    220 /*  Opcode 0x66 0x0f 0x38 0x5d - invalid. */
    221 /*  Opcode 0x66 0x0f 0x38 0x5e - invalid. */
    222 /*  Opcode 0x66 0x0f 0x38 0x5f - invalid. */
    223 
    224 /*  Opcode 0x66 0x0f 0x38 0x60 - invalid. */
    225 /*  Opcode 0x66 0x0f 0x38 0x61 - invalid. */
    226 /*  Opcode 0x66 0x0f 0x38 0x62 - invalid. */
    227 /*  Opcode 0x66 0x0f 0x38 0x63 - invalid. */
    228 /*  Opcode 0x66 0x0f 0x38 0x64 - invalid. */
    229 /*  Opcode 0x66 0x0f 0x38 0x65 - invalid. */
    230 /*  Opcode 0x66 0x0f 0x38 0x66 - invalid. */
    231 /*  Opcode 0x66 0x0f 0x38 0x67 - invalid. */
    232 /*  Opcode 0x66 0x0f 0x38 0x68 - invalid. */
    233 /*  Opcode 0x66 0x0f 0x38 0x69 - invalid. */
    234 /*  Opcode 0x66 0x0f 0x38 0x6a - invalid. */
    235 /*  Opcode 0x66 0x0f 0x38 0x6b - invalid. */
    236 /*  Opcode 0x66 0x0f 0x38 0x6c - invalid. */
    237 /*  Opcode 0x66 0x0f 0x38 0x6d - invalid. */
    238 /*  Opcode 0x66 0x0f 0x38 0x6e - invalid. */
    239 /*  Opcode 0x66 0x0f 0x38 0x6f - invalid. */
    240 
    241 /*  Opcode 0x66 0x0f 0x38 0x70 - invalid. */
    242 /*  Opcode 0x66 0x0f 0x38 0x71 - invalid. */
    243 /*  Opcode 0x66 0x0f 0x38 0x72 - invalid. */
    244 /*  Opcode 0x66 0x0f 0x38 0x73 - invalid. */
    245 /*  Opcode 0x66 0x0f 0x38 0x74 - invalid. */
    246 /*  Opcode 0x66 0x0f 0x38 0x75 - invalid. */
    247 /*  Opcode 0x66 0x0f 0x38 0x76 - invalid. */
    248 /*  Opcode 0x66 0x0f 0x38 0x77 - invalid. */
    249 /*  Opcode 0x66 0x0f 0x38 0x78 - invalid (vex only). */
    250 /*  Opcode 0x66 0x0f 0x38 0x79 - invalid (vex only). */
    251 /*  Opcode 0x66 0x0f 0x38 0x7a - invalid. */
    252 /*  Opcode 0x66 0x0f 0x38 0x7b - invalid. */
    253 /*  Opcode 0x66 0x0f 0x38 0x7c - invalid. */
    254 /*  Opcode 0x66 0x0f 0x38 0x7d - invalid. */
    255 /*  Opcode 0x66 0x0f 0x38 0x7e - invalid. */
    256 /*  Opcode 0x66 0x0f 0x38 0x7f - invalid. */
    257 
    258 /** Opcode 0x66 0x0f 0x38 0x80. */
    259 FNIEMOP_STUB(iemOp_invept_Gy_Mdq);
    260 /** Opcode 0x66 0x0f 0x38 0x81. */
    261 FNIEMOP_STUB(iemOp_invvpid_Gy_Mdq);
    262 /** Opcode 0x66 0x0f 0x38 0x82. */
    263 FNIEMOP_STUB(iemOp_invpcid_Gy_Mdq);
    264 /*  Opcode 0x66 0x0f 0x38 0x83 - invalid. */
    265 /*  Opcode 0x66 0x0f 0x38 0x84 - invalid. */
    266 /*  Opcode 0x66 0x0f 0x38 0x85 - invalid. */
    267 /*  Opcode 0x66 0x0f 0x38 0x86 - invalid. */
    268 /*  Opcode 0x66 0x0f 0x38 0x87 - invalid. */
    269 /*  Opcode 0x66 0x0f 0x38 0x88 - invalid. */
    270 /*  Opcode 0x66 0x0f 0x38 0x89 - invalid. */
    271 /*  Opcode 0x66 0x0f 0x38 0x8a - invalid. */
    272 /*  Opcode 0x66 0x0f 0x38 0x8b - invalid. */
    273 /*  Opcode 0x66 0x0f 0x38 0x8c - invalid (vex only). */
    274 /*  Opcode 0x66 0x0f 0x38 0x8d - invalid. */
    275 /*  Opcode 0x66 0x0f 0x38 0x8e - invalid (vex only). */
    276 /*  Opcode 0x66 0x0f 0x38 0x8f - invalid. */
    277 
    278 /*  Opcode 0x66 0x0f 0x38 0x90 - invalid (vex only). */
    279 /*  Opcode 0x66 0x0f 0x38 0x91 - invalid (vex only). */
    280 /*  Opcode 0x66 0x0f 0x38 0x92 - invalid (vex only). */
    281 /*  Opcode 0x66 0x0f 0x38 0x93 - invalid (vex only). */
    282 /*  Opcode 0x66 0x0f 0x38 0x94 - invalid. */
    283 /*  Opcode 0x66 0x0f 0x38 0x95 - invalid. */
    284 /*  Opcode 0x66 0x0f 0x38 0x96 - invalid (vex only). */
    285 /*  Opcode 0x66 0x0f 0x38 0x97 - invalid (vex only). */
    286 /*  Opcode 0x66 0x0f 0x38 0x98 - invalid (vex only). */
    287 /*  Opcode 0x66 0x0f 0x38 0x99 - invalid (vex only). */
    288 /*  Opcode 0x66 0x0f 0x38 0x9a - invalid (vex only). */
    289 /*  Opcode 0x66 0x0f 0x38 0x9b - invalid (vex only). */
    290 /*  Opcode 0x66 0x0f 0x38 0x9c - invalid (vex only). */
    291 /*  Opcode 0x66 0x0f 0x38 0x9d - invalid (vex only). */
    292 /*  Opcode 0x66 0x0f 0x38 0x9e - invalid (vex only). */
    293 /*  Opcode 0x66 0x0f 0x38 0x9f - invalid (vex only). */
    294 
    295 /*  Opcode 0x66 0x0f 0x38 0xa0 - invalid. */
    296 /*  Opcode 0x66 0x0f 0x38 0xa1 - invalid. */
    297 /*  Opcode 0x66 0x0f 0x38 0xa2 - invalid. */
    298 /*  Opcode 0x66 0x0f 0x38 0xa3 - invalid. */
    299 /*  Opcode 0x66 0x0f 0x38 0xa4 - invalid. */
    300 /*  Opcode 0x66 0x0f 0x38 0xa5 - invalid. */
    301 /*  Opcode 0x66 0x0f 0x38 0xa6 - invalid (vex only). */
    302 /*  Opcode 0x66 0x0f 0x38 0xa7 - invalid (vex only). */
    303 /*  Opcode 0x66 0x0f 0x38 0xa8 - invalid (vex only). */
    304 /*  Opcode 0x66 0x0f 0x38 0xa9 - invalid (vex only). */
    305 /*  Opcode 0x66 0x0f 0x38 0xaa - invalid (vex only). */
    306 /*  Opcode 0x66 0x0f 0x38 0xab - invalid (vex only). */
    307 /*  Opcode 0x66 0x0f 0x38 0xac - invalid (vex only). */
    308 /*  Opcode 0x66 0x0f 0x38 0xad - invalid (vex only). */
    309 /*  Opcode 0x66 0x0f 0x38 0xae - invalid (vex only). */
    310 /*  Opcode 0x66 0x0f 0x38 0xaf - invalid (vex only). */
    311 
    312 /*  Opcode 0x66 0x0f 0x38 0xb0 - invalid. */
    313 /*  Opcode 0x66 0x0f 0x38 0xb1 - invalid. */
    314 /*  Opcode 0x66 0x0f 0x38 0xb2 - invalid. */
    315 /*  Opcode 0x66 0x0f 0x38 0xb3 - invalid. */
    316 /*  Opcode 0x66 0x0f 0x38 0xb4 - invalid. */
    317 /*  Opcode 0x66 0x0f 0x38 0xb5 - invalid. */
    318 /*  Opcode 0x66 0x0f 0x38 0xb6 - invalid (vex only). */
    319 /*  Opcode 0x66 0x0f 0x38 0xb7 - invalid (vex only). */
    320 /*  Opcode 0x66 0x0f 0x38 0xb8 - invalid (vex only). */
    321 /*  Opcode 0x66 0x0f 0x38 0xb9 - invalid (vex only). */
    322 /*  Opcode 0x66 0x0f 0x38 0xba - invalid (vex only). */
    323 /*  Opcode 0x66 0x0f 0x38 0xbb - invalid (vex only). */
    324 /*  Opcode 0x66 0x0f 0x38 0xbc - invalid (vex only). */
    325 /*  Opcode 0x66 0x0f 0x38 0xbd - invalid (vex only). */
    326 /*  Opcode 0x66 0x0f 0x38 0xbe - invalid (vex only). */
    327 /*  Opcode 0x66 0x0f 0x38 0xbf - invalid (vex only). */
    328 
    329 /*  Opcode      0x0f 0x38 0xc0 - invalid. */
    330 /*  Opcode 0x66 0x0f 0x38 0xc0 - invalid. */
    331 /*  Opcode      0x0f 0x38 0xc1 - invalid. */
    332 /*  Opcode 0x66 0x0f 0x38 0xc1 - invalid. */
    333 /*  Opcode      0x0f 0x38 0xc2 - invalid. */
    334 /*  Opcode 0x66 0x0f 0x38 0xc2 - invalid. */
    335 /*  Opcode      0x0f 0x38 0xc3 - invalid. */
    336 /*  Opcode 0x66 0x0f 0x38 0xc3 - invalid. */
    337 /*  Opcode      0x0f 0x38 0xc4 - invalid. */
    338 /*  Opcode 0x66 0x0f 0x38 0xc4 - invalid. */
    339 /*  Opcode      0x0f 0x38 0xc5 - invalid. */
    340 /*  Opcode 0x66 0x0f 0x38 0xc5 - invalid. */
    341 /*  Opcode      0x0f 0x38 0xc6 - invalid. */
    342 /*  Opcode 0x66 0x0f 0x38 0xc6 - invalid. */
    343 /*  Opcode      0x0f 0x38 0xc7 - invalid. */
    344 /*  Opcode 0x66 0x0f 0x38 0xc7 - invalid. */
    345 /** Opcode      0x0f 0x38 0xc8. */
    346 FNIEMOP_STUB(iemOp_sha1nexte_Vdq_Wdq);
    347 /*  Opcode 0x66 0x0f 0x38 0xc8 - invalid. */
    348 /** Opcode      0x0f 0x38 0xc9. */
    349 FNIEMOP_STUB(iemOp_sha1msg1_Vdq_Wdq);
    350 /*  Opcode 0x66 0x0f 0x38 0xc9 - invalid. */
    351 /** Opcode      0x0f 0x38 0xca. */
    352 FNIEMOP_STUB(iemOp_sha1msg2_Vdq_Wdq);
    353 /*  Opcode 0x66 0x0f 0x38 0xca - invalid. */
    354 /** Opcode      0x0f 0x38 0xcb. */
    355 FNIEMOP_STUB(iemOp_sha256rnds2_Vdq_Wdq);
    356 /*  Opcode 0x66 0x0f 0x38 0xcb - invalid. */
    357 /** Opcode      0x0f 0x38 0xcc. */
    358 FNIEMOP_STUB(iemOp_sha256msg1_Vdq_Wdq);
    359 /*  Opcode 0x66 0x0f 0x38 0xcc - invalid. */
    360 /** Opcode      0x0f 0x38 0xcd. */
    361 FNIEMOP_STUB(iemOp_sha256msg2_Vdq_Wdq);
    362 /*  Opcode 0x66 0x0f 0x38 0xcd - invalid. */
    363 /*  Opcode      0x0f 0x38 0xce - invalid. */
    364 /*  Opcode 0x66 0x0f 0x38 0xce - invalid. */
    365 /*  Opcode      0x0f 0x38 0xcf - invalid. */
    366 /*  Opcode 0x66 0x0f 0x38 0xcf - invalid. */
    367 
    368 /*  Opcode 0x66 0x0f 0x38 0xd0 - invalid. */
    369 /*  Opcode 0x66 0x0f 0x38 0xd1 - invalid. */
    370 /*  Opcode 0x66 0x0f 0x38 0xd2 - invalid. */
    371 /*  Opcode 0x66 0x0f 0x38 0xd3 - invalid. */
    372 /*  Opcode 0x66 0x0f 0x38 0xd4 - invalid. */
    373 /*  Opcode 0x66 0x0f 0x38 0xd5 - invalid. */
    374 /*  Opcode 0x66 0x0f 0x38 0xd6 - invalid. */
    375 /*  Opcode 0x66 0x0f 0x38 0xd7 - invalid. */
    376 /*  Opcode 0x66 0x0f 0x38 0xd8 - invalid. */
    377 /*  Opcode 0x66 0x0f 0x38 0xd9 - invalid. */
    378 /*  Opcode 0x66 0x0f 0x38 0xda - invalid. */
    379 /** Opcode 0x66 0x0f 0x38 0xdb. */
    380 FNIEMOP_STUB(iemOp_aesimc_Vdq_Wdq);
    381 /** Opcode 0x66 0x0f 0x38 0xdc. */
    382 FNIEMOP_STUB(iemOp_aesenc_Vdq_Wdq);
    383 /** Opcode 0x66 0x0f 0x38 0xdd. */
    384 FNIEMOP_STUB(iemOp_aesenclast_Vdq_Wdq);
    385 /** Opcode 0x66 0x0f 0x38 0xde. */
    386 FNIEMOP_STUB(iemOp_aesdec_Vdq_Wdq);
    387 /** Opcode 0x66 0x0f 0x38 0xdf. */
    388 FNIEMOP_STUB(iemOp_aesdeclast_Vdq_Wdq);
    389 
    390 /*  Opcode 0x66 0x0f 0x38 0xb0 - invalid. */
    391 /*  Opcode 0x66 0x0f 0x38 0xb1 - invalid. */
    392 /*  Opcode 0x66 0x0f 0x38 0xb2 - invalid. */
    393 /*  Opcode 0x66 0x0f 0x38 0xb3 - invalid. */
    394 /*  Opcode 0x66 0x0f 0x38 0xb4 - invalid. */
    395 /*  Opcode 0x66 0x0f 0x38 0xb5 - invalid. */
    396 /*  Opcode 0x66 0x0f 0x38 0xb6 - invalid. */
    397 /*  Opcode 0x66 0x0f 0x38 0xb7 - invalid. */
    398 /*  Opcode 0x66 0x0f 0x38 0xb8 - invalid. */
    399 /*  Opcode 0x66 0x0f 0x38 0xb9 - invalid. */
    400 /*  Opcode 0x66 0x0f 0x38 0xba - invalid. */
    401 /*  Opcode 0x66 0x0f 0x38 0xbb - invalid. */
    402 /*  Opcode 0x66 0x0f 0x38 0xbc - invalid. */
    403 /*  Opcode 0x66 0x0f 0x38 0xbd - invalid. */
    404 /*  Opcode 0x66 0x0f 0x38 0xbe - invalid. */
    405 /*  Opcode 0x66 0x0f 0x38 0xbf - invalid. */
    406 
    407 
    408 /** Opcode      0x0f 0x38 0xf0. */
    409 FNIEMOP_STUB(iemOp_movbe_Gy_My);
    410 /** Opcode 0x66 0x0f 0x38 0xf0. */
    411 FNIEMOP_STUB(iemOp_movbe_Gw_Mw);
    412 /*  Opcode 0xf3 0x0f 0x38 0xf0 - invalid. */
    413 /** Opcode 0xf2 0x0f 0x38 0xf0. */
    414 FNIEMOP_STUB(iemOp_crc32_Gb_Eb);
    415 
    416 /** Opcode      0x0f 0x38 0xf1. */
    417 FNIEMOP_STUB(iemOp_movbe_My_Gy);
    418 /** Opcode 0x66 0x0f 0x38 0xf1. */
    419 FNIEMOP_STUB(iemOp_movbe_Mw_Gw);
    420 /*  Opcode 0xf3 0x0f 0x38 0xf1 - invalid. */
    421 /** Opcode 0xf2 0x0f 0x38 0xf1. */
    422 FNIEMOP_STUB(iemOp_crc32_Gv_Ev);
    423 
    424 /*  Opcode      0x0f 0x38 0xf2 - invalid (vex only). */
    425 /*  Opcode 0x66 0x0f 0x38 0xf2 - invalid. */
    426 /*  Opcode 0xf3 0x0f 0x38 0xf2 - invalid. */
    427 /*  Opcode 0xf2 0x0f 0x38 0xf2 - invalid. */
    428 
    429 /*  Opcode      0x0f 0x38 0xf3 - invalid (vex only - group 17). */
    430 /*  Opcode 0x66 0x0f 0x38 0xf3 - invalid (vex only - group 17). */
    431 /*  Opcode 0xf3 0x0f 0x38 0xf3 - invalid (vex only - group 17). */
    432 /*  Opcode 0xf2 0x0f 0x38 0xf3 - invalid (vex only - group 17). */
    433 
    434 /*  Opcode      0x0f 0x38 0xf4 - invalid. */
    435 /*  Opcode 0x66 0x0f 0x38 0xf4 - invalid. */
    436 /*  Opcode 0xf3 0x0f 0x38 0xf4 - invalid. */
    437 /*  Opcode 0xf2 0x0f 0x38 0xf4 - invalid. */
    438 
    439 /*  Opcode      0x0f 0x38 0xf5 - invalid (vex only). */
    440 /*  Opcode 0x66 0x0f 0x38 0xf5 - invalid. */
    441 /*  Opcode 0xf3 0x0f 0x38 0xf5 - invalid (vex only). */
    442 /*  Opcode 0xf2 0x0f 0x38 0xf5 - invalid (vex only). */
    443 
    444 /*  Opcode      0x0f 0x38 0xf6 - invalid. */
    445 /** Opcode 0x66 0x0f 0x38 0xf6. */
    446 FNIEMOP_STUB(iemOp_adcx_Gy_Ey);
    447 /** Opcode 0xf3 0x0f 0x38 0xf6. */
    448 FNIEMOP_STUB(iemOp_adox_Gy_Ey);
    449 /*  Opcode 0xf2 0x0f 0x38 0xf6 - invalid (vex only). */
    450 
    451 /*  Opcode      0x0f 0x38 0xf7 - invalid (vex only). */
    452 /*  Opcode 0x66 0x0f 0x38 0xf7 - invalid (vex only). */
    453 /*  Opcode 0xf3 0x0f 0x38 0xf7 - invalid (vex only). */
    454 /*  Opcode 0xf2 0x0f 0x38 0xf7 - invalid (vex only). */
    455 
    456 /*  Opcode      0x0f 0x38 0xf8 - invalid. */
    457 /*  Opcode 0x66 0x0f 0x38 0xf8 - invalid. */
    458 /*  Opcode 0xf3 0x0f 0x38 0xf8 - invalid. */
    459 /*  Opcode 0xf2 0x0f 0x38 0xf8 - invalid. */
    460 
    461 /*  Opcode      0x0f 0x38 0xf9 - invalid. */
    462 /*  Opcode 0x66 0x0f 0x38 0xf9 - invalid. */
    463 /*  Opcode 0xf3 0x0f 0x38 0xf9 - invalid. */
    464 /*  Opcode 0xf2 0x0f 0x38 0xf9 - invalid. */
    465 
    466 /*  Opcode      0x0f 0x38 0xfa - invalid. */
    467 /*  Opcode 0x66 0x0f 0x38 0xfa - invalid. */
    468 /*  Opcode 0xf3 0x0f 0x38 0xfa - invalid. */
    469 /*  Opcode 0xf2 0x0f 0x38 0xfa - invalid. */
    470 
    471 /*  Opcode      0x0f 0x38 0xfb - invalid. */
    472 /*  Opcode 0x66 0x0f 0x38 0xfb - invalid. */
    473 /*  Opcode 0xf3 0x0f 0x38 0xfb - invalid. */
    474 /*  Opcode 0xf2 0x0f 0x38 0xfb - invalid. */
    475 
    476 /*  Opcode      0x0f 0x38 0xfc - invalid. */
    477 /*  Opcode 0x66 0x0f 0x38 0xfc - invalid. */
    478 /*  Opcode 0xf3 0x0f 0x38 0xfc - invalid. */
    479 /*  Opcode 0xf2 0x0f 0x38 0xfc - invalid. */
    480 
    481 /*  Opcode      0x0f 0x38 0xfd - invalid. */
    482 /*  Opcode 0x66 0x0f 0x38 0xfd - invalid. */
    483 /*  Opcode 0xf3 0x0f 0x38 0xfd - invalid. */
    484 /*  Opcode 0xf2 0x0f 0x38 0xfd - invalid. */
    485 
    486 /*  Opcode      0x0f 0x38 0xfe - invalid. */
    487 /*  Opcode 0x66 0x0f 0x38 0xfe - invalid. */
    488 /*  Opcode 0xf3 0x0f 0x38 0xfe - invalid. */
    489 /*  Opcode 0xf2 0x0f 0x38 0xfe - invalid. */
    490 
    491 /*  Opcode      0x0f 0x38 0xff - invalid. */
    492 /*  Opcode 0x66 0x0f 0x38 0xff - invalid. */
    493 /*  Opcode 0xf3 0x0f 0x38 0xff - invalid. */
    494 /*  Opcode 0xf2 0x0f 0x38 0xff - invalid. */
    495 
     26/*  Opcode VEX.0F38 0x00 - invalid. */
     27/** Opcode VEX.66.0F38 0x00. */
     28FNIEMOP_STUB(iemOp_vpshufb_Vx_Hx_Wx);
     29/*  Opcode VEX.0F38 0x01 - invalid. */
     30/** Opcode VEX.66.0F38 0x01. */
     31FNIEMOP_STUB(iemOp_vphaddw_Vx_Hx_Wx);
     32/*  Opcode VEX.0F38 0x02 - invalid. */
     33/** Opcode VEX.66.0F38 0x02. */
     34FNIEMOP_STUB(iemOp_vphaddd_Vx_Hx_Wx);
     35/*  Opcode VEX.0F38 0x03 - invalid. */
     36/** Opcode VEX.66.0F38 0x03. */
     37FNIEMOP_STUB(iemOp_vphaddsw_Vx_Hx_Wx);
     38/*  Opcode VEX.0F38 0x04 - invalid. */
     39/** Opcode VEX.66.0F38 0x04. */
     40FNIEMOP_STUB(iemOp_vpmaddubsw_Vx_Hx_Wx);
     41/* Opcode VEX.0F38 0x05 - invalid. */
     42/** Opcode VEX.66.0F38 0x05. */
     43FNIEMOP_STUB(iemOp_vphsubw_Vx_Hx_Wx);
     44/*  Opcode VEX.0F38 0x06 - invalid. */
     45/** Opcode VEX.66.0F38 0x06. */
     46FNIEMOP_STUB(iemOp_vphsubdq_Vx_Hx_Wx);
     47/*  Opcode VEX.0F38 0x07 - invalid. */
     48/** Opcode VEX.66.0F38 0x07. */
     49FNIEMOP_STUB(iemOp_vphsubsw_Vx_Hx_Wx);
     50/*  Opcode VEX.0F38 0x08 - invalid. */
     51/** Opcode VEX.66.0F38 0x08. */
     52FNIEMOP_STUB(iemOp_vpsignb_Vx_Hx_Wx);
     53/*  Opcode VEX.0F38 0x09 - invalid. */
     54/** Opcode VEX.66.0F38 0x09. */
     55FNIEMOP_STUB(iemOp_vpsignw_Vx_Hx_Wx);
     56/*  Opcode VEX.0F38 0x0a - invalid. */
     57/** Opcode VEX.66.0F38 0x0a. */
     58FNIEMOP_STUB(iemOp_vpsignd_Vx_Hx_Wx);
     59/*  Opcode VEX.0F38 0x0b - invalid. */
     60/** Opcode VEX.66.0F38 0x0b. */
     61FNIEMOP_STUB(iemOp_vpmulhrsw_Vx_Hx_Wx);
     62/*  Opcode VEX.0F38 0x0c - invalid. */
     63/**  Opcode VEX.66.0F38 0x0c. */
     64FNIEMOP_STUB(iemOp_vpermilps_Vx_Hx_Wx);
     65/*  Opcode VEX.0F38 0x0d - invalid. */
     66/**  Opcode VEX.66.0F38 0x0d. */
     67FNIEMOP_STUB(iemOp_vpermilpd_Vx_Hx_Wx);
     68/*  Opcode VEX.0F38 0x0e - invalid. */
     69/**  Opcode VEX.66.0F38 0x0e. */
     70FNIEMOP_STUB(iemOp_vtestps_Vx_Wx);
     71/*  Opcode VEX.0F38 0x0f - invalid. */
     72/**  Opcode VEX.66.0F38 0x0f. */
     73FNIEMOP_STUB(iemOp_vtestpd_Vx_Wx);
     74
     75
     76/*  Opcode VEX.0F38 0x10 - invalid */
     77/*  Opcode VEX.66.0F38 0x10 - invalid (legacy only). */
     78/*  Opcode VEX.0F38 0x11 - invalid */
     79/*  Opcode VEX.66.0F38 0x11 - invalid */
     80/*  Opcode VEX.0F38 0x12 - invalid */
     81/*  Opcode VEX.66.0F38 0x12 - invalid */
     82/*  Opcode VEX.0F38 0x13 - invalid */
     83/*  Opcode VEX.66.0F38 0x13 - invalid (vex only). */
     84/*  Opcode VEX.0F38 0x14 - invalid */
     85/*  Opcode VEX.66.0F38 0x14 - invalid (legacy only). */
     86/*  Opcode VEX.0F38 0x15 - invalid */
     87/*  Opcode VEX.66.0F38 0x15 - invalid (legacy only). */
     88/*  Opcode VEX.0F38 0x16 - invalid */
     89/** Opcode VEX.66.0F38 0x16. */
     90FNIEMOP_STUB(iemOp_vpermps_Vqq_Hqq_Wqq);
     91/*  Opcode VEX.0F38 0x17 - invalid */
     92/** Opcode VEX.66.0F38 0x17 - invalid */
     93FNIEMOP_STUB(iemOp_vptest_Vx_Wx);
     94/*  Opcode VEX.0F38 0x18 - invalid */
     95/** Opcode VEX.66.0F38 0x18. */
     96FNIEMOP_STUB(iemOp_vbroadcastss_Vx_Wd);
     97/*  Opcode VEX.0F38 0x19 - invalid */
     98/** Opcode VEX.66.0F38 0x19. */
     99FNIEMOP_STUB(iemOp_vbroadcastsd_Vqq_Wq);
     100/*  Opcode VEX.0F38 0x1a - invalid */
     101/** Opcode VEX.66.0F38 0x1a. */
     102FNIEMOP_STUB(iemOp_vbroadcastf128_Vqq_Mdq);
     103/*  Opcode VEX.0F38 0x1b - invalid */
     104/*  Opcode VEX.66.0F38 0x1b - invalid */
     105/*  Opcode VEX.0F38 0x1c - invalid. */
     106/** Opcode VEX.66.0F38 0x1c. */
     107FNIEMOP_STUB(iemOp_vpabsb_Vx_Wx);
     108/*  Opcode VEX.0F38 0x1d - invalid. */
     109/** Opcode VEX.66.0F38 0x1d. */
     110FNIEMOP_STUB(iemOp_vpabsw_Vx_Wx);
     111/*  Opcode VEX.0F38 0x1e - invalid. */
     112/** Opcode VEX.66.0F38 0x1e. */
     113FNIEMOP_STUB(iemOp_vpabsd_Vx_Wx);
     114/*  Opcode VEX.0F38 0x1f - invalid */
     115/*  Opcode VEX.66.0F38 0x1f - invalid */
     116
     117
     118/** Opcode VEX.66.0F38 0x20. */
     119FNIEMOP_STUB(iemOp_vpmovsxbw_Vx_UxMq);
     120/** Opcode VEX.66.0F38 0x21. */
     121FNIEMOP_STUB(iemOp_vpmovsxbd_Vx_UxMd);
     122/** Opcode VEX.66.0F38 0x22. */
     123FNIEMOP_STUB(iemOp_vpmovsxbq_Vx_UxMw);
     124/** Opcode VEX.66.0F38 0x23. */
     125FNIEMOP_STUB(iemOp_vpmovsxwd_Vx_UxMq);
     126/** Opcode VEX.66.0F38 0x24. */
     127FNIEMOP_STUB(iemOp_vpmovsxwq_Vx_UxMd);
     128/** Opcode VEX.66.0F38 0x25. */
     129FNIEMOP_STUB(iemOp_vpmovsxdq_Vx_UxMq);
     130/*  Opcode VEX.66.0F38 0x26 - invalid */
     131/*  Opcode VEX.66.0F38 0x27 - invalid */
     132/** Opcode VEX.66.0F38 0x28. */
     133FNIEMOP_STUB(iemOp_vpmuldq_Vx_Hx_Wx);
     134/** Opcode VEX.66.0F38 0x29. */
     135FNIEMOP_STUB(iemOp_vpcmpeqq_Vx_Hx_Wx);
     136/** Opcode VEX.66.0F38 0x2a. */
     137FNIEMOP_STUB(iemOp_vmovntdqa_Vx_Hx_Mx);
     138/** Opcode VEX.66.0F38 0x2b. */
     139FNIEMOP_STUB(iemOp_vpackusdw_Vx_Hx_Wx);
     140/** Opcode VEX.66.0F38 0x2c. */
     141FNIEMOP_STUB(iemOp_vmaskmovps_Vx_Hx_Mx);
     142/** Opcode VEX.66.0F38 0x2d. */
     143FNIEMOP_STUB(iemOp_vmaskmovpd_Vx_Hx_Mx);
     144/** Opcode VEX.66.0F38 0x2e. */
     145FNIEMOP_STUB(iemOp_vmaskmovps_Mx_Hx_Vx);
     146/** Opcode VEX.66.0F38 0x2f. */
     147FNIEMOP_STUB(iemOp_vmaskmovpd_Mx_Hx_Vx);
     148
     149/** Opcode VEX.66.0F38 0x30. */
     150FNIEMOP_STUB(iemOp_vpmovzxbw_Vx_UxMq);
     151/** Opcode VEX.66.0F38 0x31. */
     152FNIEMOP_STUB(iemOp_vpmovzxbd_Vx_UxMd);
     153/** Opcode VEX.66.0F38 0x32. */
     154FNIEMOP_STUB(iemOp_vpmovzxbq_Vx_UxMw);
     155/** Opcode VEX.66.0F38 0x33. */
     156FNIEMOP_STUB(iemOp_vpmovzxwd_Vx_UxMq);
     157/** Opcode VEX.66.0F38 0x34. */
     158FNIEMOP_STUB(iemOp_vpmovzxwq_Vx_UxMd);
     159/** Opcode VEX.66.0F38 0x35. */
     160FNIEMOP_STUB(iemOp_vpmovzxdq_Vx_UxMq);
     161/*  Opcode VEX.66.0F38 0x36. */
     162FNIEMOP_STUB(iemOp_vpermd_Vqq_Hqq_Wqq);
     163/** Opcode VEX.66.0F38 0x37. */
     164FNIEMOP_STUB(iemOp_vpcmpgtq_Vx_Hx_Wx);
     165/** Opcode VEX.66.0F38 0x38. */
     166FNIEMOP_STUB(iemOp_vpminsb_Vx_Hx_Wx);
     167/** Opcode VEX.66.0F38 0x39. */
     168FNIEMOP_STUB(iemOp_vpminsd_Vx_Hx_Wx);
     169/** Opcode VEX.66.0F38 0x3a. */
     170FNIEMOP_STUB(iemOp_vpminuw_Vx_Hx_Wx);
     171/** Opcode VEX.66.0F38 0x3b. */
     172FNIEMOP_STUB(iemOp_vpminud_Vx_Hx_Wx);
     173/** Opcode VEX.66.0F38 0x3c. */
     174FNIEMOP_STUB(iemOp_vpmaxsb_Vx_Hx_Wx);
     175/** Opcode VEX.66.0F38 0x3d. */
     176FNIEMOP_STUB(iemOp_vpmaxsd_Vx_Hx_Wx);
     177/** Opcode VEX.66.0F38 0x3e. */
     178FNIEMOP_STUB(iemOp_vpmaxuw_Vx_Hx_Wx);
     179/** Opcode VEX.66.0F38 0x3f. */
     180FNIEMOP_STUB(iemOp_vpmaxud_Vx_Hx_Wx);
     181
     182
     183/** Opcode VEX.66.0F38 0x40. */
     184FNIEMOP_STUB(iemOp_vpmulld_Vx_Hx_Wx);
     185/** Opcode VEX.66.0F38 0x41. */
     186FNIEMOP_STUB(iemOp_vphminposuw_Vdq_Wdq);
     187/*  Opcode VEX.66.0F38 0x42 - invalid. */
     188/*  Opcode VEX.66.0F38 0x43 - invalid. */
     189/*  Opcode VEX.66.0F38 0x44 - invalid. */
     190/** Opcode VEX.66.0F38 0x45. */
     191FNIEMOP_STUB(iemOp_vpsrlvd_q_Vx_Hx_Wx);
     192/** Opcode VEX.66.0F38 0x46. */
     193FNIEMOP_STUB(iemOp_vsravd_Vx_Hx_Wx);
     194/** Opcode VEX.66.0F38 0x47. */
     195FNIEMOP_STUB(iemOp_vpsllvd_q_Vx_Hx_Wx);
     196/*  Opcode VEX.66.0F38 0x48 - invalid. */
     197/*  Opcode VEX.66.0F38 0x49 - invalid. */
     198/*  Opcode VEX.66.0F38 0x4a - invalid. */
     199/*  Opcode VEX.66.0F38 0x4b - invalid. */
     200/*  Opcode VEX.66.0F38 0x4c - invalid. */
     201/*  Opcode VEX.66.0F38 0x4d - invalid. */
     202/*  Opcode VEX.66.0F38 0x4e - invalid. */
     203/*  Opcode VEX.66.0F38 0x4f - invalid. */
     204
     205/*  Opcode VEX.66.0F38 0x50 - invalid. */
     206/*  Opcode VEX.66.0F38 0x51 - invalid. */
     207/*  Opcode VEX.66.0F38 0x52 - invalid. */
     208/*  Opcode VEX.66.0F38 0x53 - invalid. */
     209/*  Opcode VEX.66.0F38 0x54 - invalid. */
     210/*  Opcode VEX.66.0F38 0x55 - invalid. */
     211/*  Opcode VEX.66.0F38 0x56 - invalid. */
     212/*  Opcode VEX.66.0F38 0x57 - invalid. */
     213/** Opcode VEX.66.0F38 0x58. */
     214FNIEMOP_STUB(iemOp_vpbroadcastd_Vx_Wx);
     215/** Opcode VEX.66.0F38 0x59. */
     216FNIEMOP_STUB(iemOp_vpbroadcastq_Vx_Wx);
     217/** Opcode VEX.66.0F38 0x5a. */
     218FNIEMOP_STUB(iemOp_vbroadcasti128_Vqq_Mdq);
     219/*  Opcode VEX.66.0F38 0x5b - invalid. */
     220/*  Opcode VEX.66.0F38 0x5c - invalid. */
     221/*  Opcode VEX.66.0F38 0x5d - invalid. */
     222/*  Opcode VEX.66.0F38 0x5e - invalid. */
     223/*  Opcode VEX.66.0F38 0x5f - invalid. */
     224
     225/*  Opcode VEX.66.0F38 0x60 - invalid. */
     226/*  Opcode VEX.66.0F38 0x61 - invalid. */
     227/*  Opcode VEX.66.0F38 0x62 - invalid. */
     228/*  Opcode VEX.66.0F38 0x63 - invalid. */
     229/*  Opcode VEX.66.0F38 0x64 - invalid. */
     230/*  Opcode VEX.66.0F38 0x65 - invalid. */
     231/*  Opcode VEX.66.0F38 0x66 - invalid. */
     232/*  Opcode VEX.66.0F38 0x67 - invalid. */
     233/*  Opcode VEX.66.0F38 0x68 - invalid. */
     234/*  Opcode VEX.66.0F38 0x69 - invalid. */
     235/*  Opcode VEX.66.0F38 0x6a - invalid. */
     236/*  Opcode VEX.66.0F38 0x6b - invalid. */
     237/*  Opcode VEX.66.0F38 0x6c - invalid. */
     238/*  Opcode VEX.66.0F38 0x6d - invalid. */
     239/*  Opcode VEX.66.0F38 0x6e - invalid. */
     240/*  Opcode VEX.66.0F38 0x6f - invalid. */
     241
     242/*  Opcode VEX.66.0F38 0x70 - invalid. */
     243/*  Opcode VEX.66.0F38 0x71 - invalid. */
     244/*  Opcode VEX.66.0F38 0x72 - invalid. */
     245/*  Opcode VEX.66.0F38 0x73 - invalid. */
     246/*  Opcode VEX.66.0F38 0x74 - invalid. */
     247/*  Opcode VEX.66.0F38 0x75 - invalid. */
     248/*  Opcode VEX.66.0F38 0x76 - invalid. */
     249/*  Opcode VEX.66.0F38 0x77 - invalid. */
     250/** Opcode VEX.66.0F38 0x78. */
     251FNIEMOP_STUB(iemOp_vpboardcastb_Vx_Wx);
     252/** Opcode VEX.66.0F38 0x79. */
     253FNIEMOP_STUB(iemOp_vpboardcastw_Vx_Wx);
     254/*  Opcode VEX.66.0F38 0x7a - invalid. */
     255/*  Opcode VEX.66.0F38 0x7b - invalid. */
     256/*  Opcode VEX.66.0F38 0x7c - invalid. */
     257/*  Opcode VEX.66.0F38 0x7d - invalid. */
     258/*  Opcode VEX.66.0F38 0x7e - invalid. */
     259/*  Opcode VEX.66.0F38 0x7f - invalid. */
     260
     261/*  Opcode VEX.66.0F38 0x80 - invalid (legacy only). */
     262/*  Opcode VEX.66.0F38 0x81 - invalid (legacy only). */
     263/*  Opcode VEX.66.0F38 0x82 - invalid (legacy only). */
     264/*  Opcode VEX.66.0F38 0x83 - invalid. */
     265/*  Opcode VEX.66.0F38 0x84 - invalid. */
     266/*  Opcode VEX.66.0F38 0x85 - invalid. */
     267/*  Opcode VEX.66.0F38 0x86 - invalid. */
     268/*  Opcode VEX.66.0F38 0x87 - invalid. */
     269/*  Opcode VEX.66.0F38 0x88 - invalid. */
     270/*  Opcode VEX.66.0F38 0x89 - invalid. */
     271/*  Opcode VEX.66.0F38 0x8a - invalid. */
     272/*  Opcode VEX.66.0F38 0x8b - invalid. */
     273/** Opcode VEX.66.0F38 0x8c. */
     274FNIEMOP_STUB(iemOp_vpmaskmovd_q_Vx_Hx_Mx);
     275/*  Opcode VEX.66.0F38 0x8d - invalid. */
     276/** Opcode VEX.66.0F38 0x8e. */
     277FNIEMOP_STUB(iemOp_vpmaskmovd_q_Mx_Vx_Hx);
     278/*  Opcode VEX.66.0F38 0x8f - invalid. */
     279
     280/** Opcode VEX.66.0F38 0x90 (vex only). */
     281FNIEMOP_STUB(iemOp_vgatherdd_q_Vx_Hx_Wx);
     282/** Opcode VEX.66.0F38 0x91 (vex only). */
     283FNIEMOP_STUB(iemOp_vgatherqd_q_Vx_Hx_Wx);
     284/** Opcode VEX.66.0F38 0x92 (vex only). */
     285FNIEMOP_STUB(iemOp_vgatherdps_d_Vx_Hx_Wx);
     286/** Opcode VEX.66.0F38 0x93 (vex only). */
     287FNIEMOP_STUB(iemOp_vgatherqps_d_Vx_Hx_Wx);
     288/*  Opcode VEX.66.0F38 0x94 - invalid. */
     289/*  Opcode VEX.66.0F38 0x95 - invalid. */
     290/** Opcode VEX.66.0F38 0x96 (vex only). */
     291FNIEMOP_STUB(iemOp_vfmaddsub132ps_q_Vx_Hx_Wx);
     292/** Opcode VEX.66.0F38 0x97 (vex only). */
     293FNIEMOP_STUB(iemOp_vfmsubadd132ps_d_Vx_Hx_Wx);
     294/** Opcode VEX.66.0F38 0x98 (vex only). */
     295FNIEMOP_STUB(iemOp_vfmadd132ps_d_Vx_Hx_Wx);
     296/** Opcode VEX.66.0F38 0x99 (vex only). */
     297FNIEMOP_STUB(iemOp_vfmadd132ss_d_Vx_Hx_Wx);
     298/** Opcode VEX.66.0F38 0x9a (vex only). */
     299FNIEMOP_STUB(iemOp_vfmsub132ps_d_Vx_Hx_Wx);
     300/** Opcode VEX.66.0F38 0x9b (vex only). */
     301FNIEMOP_STUB(iemOp_vfmsub132ss_d_Vx_Hx_Wx);
     302/** Opcode VEX.66.0F38 0x9c (vex only). */
     303FNIEMOP_STUB(iemOp_vfnmadd132ps_d_Vx_Hx_Wx);
     304/** Opcode VEX.66.0F38 0x9d (vex only). */
     305FNIEMOP_STUB(iemOp_vfnmadd132ss_d_Vx_Hx_Wx);
     306/** Opcode VEX.66.0F38 0x9e (vex only). */
     307FNIEMOP_STUB(iemOp_vfnmsub132ps_d_Vx_Hx_Wx);
     308/** Opcode VEX.66.0F38 0x9f (vex only). */
     309FNIEMOP_STUB(iemOp_vfnmsub132ss_d_Vx_Hx_Wx);
     310
     311/*  Opcode VEX.66.0F38 0xa0 - invalid. */
     312/*  Opcode VEX.66.0F38 0xa1 - invalid. */
     313/*  Opcode VEX.66.0F38 0xa2 - invalid. */
     314/*  Opcode VEX.66.0F38 0xa3 - invalid. */
     315/*  Opcode VEX.66.0F38 0xa4 - invalid. */
     316/*  Opcode VEX.66.0F38 0xa5 - invalid. */
     317/** Opcode VEX.66.0F38 0xa6 (vex only). */
     318FNIEMOP_STUB(iemOp_vfmaddsub213ps_d_Vx_Hx_Wx);
     319/** Opcode VEX.66.0F38 0xa7 (vex only). */
     320FNIEMOP_STUB(iemOp_vfmsubadd213ps_d_Vx_Hx_Wx);
     321/** Opcode VEX.66.0F38 0xa8 (vex only). */
     322FNIEMOP_STUB(iemOp_vfmadd213ps_d_Vx_Hx_Wx);
     323/** Opcode VEX.66.0F38 0xa9 (vex only). */
     324FNIEMOP_STUB(iemOp_vfmadd213ss_d_Vx_Hx_Wx);
     325/** Opcode VEX.66.0F38 0xaa (vex only). */
     326FNIEMOP_STUB(iemOp_vfmsub213ps_d_Vx_Hx_Wx);
     327/** Opcode VEX.66.0F38 0xab (vex only). */
     328FNIEMOP_STUB(iemOp_vfmsub213ss_d_Vx_Hx_Wx);
     329/** Opcode VEX.66.0F38 0xac (vex only). */
     330FNIEMOP_STUB(iemOp_vfnmadd213ps_d_Vx_Hx_Wx);
     331/** Opcode VEX.66.0F38 0xad (vex only). */
     332FNIEMOP_STUB(iemOp_vfnmadd213ss_d_Vx_Hx_Wx);
     333/** Opcode VEX.66.0F38 0xae (vex only). */
     334FNIEMOP_STUB(iemOp_vfnmsub213ps_d_Vx_Hx_Wx);
     335/** Opcode VEX.66.0F38 0xaf (vex only). */
     336FNIEMOP_STUB(iemOp_vfnmsub213ss_d_Vx_Hx_Wx);
     337
     338/*  Opcode VEX.66.0F38 0xb0 - invalid. */
     339/*  Opcode VEX.66.0F38 0xb1 - invalid. */
     340/*  Opcode VEX.66.0F38 0xb2 - invalid. */
     341/*  Opcode VEX.66.0F38 0xb3 - invalid. */
     342/*  Opcode VEX.66.0F38 0xb4 - invalid. */
     343/*  Opcode VEX.66.0F38 0xb5 - invalid. */
     344/** Opcode VEX.66.0F38 0xb6 (vex only). */
     345FNIEMOP_STUB(iemOp_vfmaddsub231ps_d_Vx_Hx_Wx);
     346/** Opcode VEX.66.0F38 0xb7 (vex only). */
     347FNIEMOP_STUB(iemOp_vfmsubadd231ps_d_Vx_Hx_Wx);
     348/** Opcode VEX.66.0F38 0xb8 (vex only). */
     349FNIEMOP_STUB(iemOp_vfmadd231ps_d_Vx_Hx_Wx);
     350/** Opcode VEX.66.0F38 0xb9 (vex only). */
     351FNIEMOP_STUB(iemOp_vfmadd231ss_d_Vx_Hx_Wx);
     352/** Opcode VEX.66.0F38 0xba (vex only). */
     353FNIEMOP_STUB(iemOp_vfmsub231ps_d_Vx_Hx_Wx);
     354/** Opcode VEX.66.0F38 0xbb (vex only). */
     355FNIEMOP_STUB(iemOp_vfmsub231ss_d_Vx_Hx_Wx);
     356/** Opcode VEX.66.0F38 0xbc (vex only). */
     357FNIEMOP_STUB(iemOp_vfnmadd231ps_d_Vx_Hx_Wx);
     358/** Opcode VEX.66.0F38 0xbd (vex only). */
     359FNIEMOP_STUB(iemOp_vfnmadd231ss_d_Vx_Hx_Wx);
     360/** Opcode VEX.66.0F38 0xbe (vex only). */
     361FNIEMOP_STUB(iemOp_vfnmsub231ps_d_Vx_Hx_Wx);
     362/** Opcode VEX.66.0F38 0xbf (vex only). */
     363FNIEMOP_STUB(iemOp_vfnmsub231ss_d_Vx_Hx_Wx);
     364
     365/*  Opcode VEX.0F38 0xc0 - invalid. */
     366/*  Opcode VEX.66.0F38 0xc0 - invalid. */
     367/*  Opcode VEX.0F38 0xc1 - invalid. */
     368/*  Opcode VEX.66.0F38 0xc1 - invalid. */
     369/*  Opcode VEX.0F38 0xc2 - invalid. */
     370/*  Opcode VEX.66.0F38 0xc2 - invalid. */
     371/*  Opcode VEX.0F38 0xc3 - invalid. */
     372/*  Opcode VEX.66.0F38 0xc3 - invalid. */
     373/*  Opcode VEX.0F38 0xc4 - invalid. */
     374/*  Opcode VEX.66.0F38 0xc4 - invalid. */
     375/*  Opcode VEX.0F38 0xc5 - invalid. */
     376/*  Opcode VEX.66.0F38 0xc5 - invalid. */
     377/*  Opcode VEX.0F38 0xc6 - invalid. */
     378/*  Opcode VEX.66.0F38 0xc6 - invalid. */
     379/*  Opcode VEX.0F38 0xc7 - invalid. */
     380/*  Opcode VEX.66.0F38 0xc7 - invalid. */
     381/** Opcode VEX.0F38 0xc8. */
     382FNIEMOP_STUB(iemOp_vsha1nexte_Vdq_Wdq);
     383/*  Opcode VEX.66.0F38 0xc8 - invalid. */
     384/** Opcode VEX.0F38 0xc9. */
     385FNIEMOP_STUB(iemOp_vsha1msg1_Vdq_Wdq);
     386/*  Opcode VEX.66.0F38 0xc9 - invalid. */
     387/** Opcode VEX.0F38 0xca. */
     388FNIEMOP_STUB(iemOp_vsha1msg2_Vdq_Wdq);
     389/*  Opcode VEX.66.0F38 0xca - invalid. */
     390/** Opcode VEX.0F38 0xcb. */
     391FNIEMOP_STUB(iemOp_vsha256rnds2_Vdq_Wdq);
     392/*  Opcode VEX.66.0F38 0xcb - invalid. */
     393/** Opcode VEX.0F38 0xcc. */
     394FNIEMOP_STUB(iemOp_vsha256msg1_Vdq_Wdq);
     395/*  Opcode VEX.66.0F38 0xcc - invalid. */
     396/** Opcode VEX.0F38 0xcd. */
     397FNIEMOP_STUB(iemOp_vsha256msg2_Vdq_Wdq);
     398/*  Opcode VEX.66.0F38 0xcd - invalid. */
     399/*  Opcode VEX.0F38 0xce - invalid. */
     400/*  Opcode VEX.66.0F38 0xce - invalid. */
     401/*  Opcode VEX.0F38 0xcf - invalid. */
     402/*  Opcode VEX.66.0F38 0xcf - invalid. */
     403
     404/*  Opcode VEX.66.0F38 0xd0 - invalid. */
     405/*  Opcode VEX.66.0F38 0xd1 - invalid. */
     406/*  Opcode VEX.66.0F38 0xd2 - invalid. */
     407/*  Opcode VEX.66.0F38 0xd3 - invalid. */
     408/*  Opcode VEX.66.0F38 0xd4 - invalid. */
     409/*  Opcode VEX.66.0F38 0xd5 - invalid. */
     410/*  Opcode VEX.66.0F38 0xd6 - invalid. */
     411/*  Opcode VEX.66.0F38 0xd7 - invalid. */
     412/*  Opcode VEX.66.0F38 0xd8 - invalid. */
     413/*  Opcode VEX.66.0F38 0xd9 - invalid. */
     414/*  Opcode VEX.66.0F38 0xda - invalid. */
     415/** Opcode VEX.66.0F38 0xdb. */
     416FNIEMOP_STUB(iemOp_vaesimc_Vdq_Wdq);
     417/** Opcode VEX.66.0F38 0xdc. */
     418FNIEMOP_STUB(iemOp_vaesenc_Vdq_Wdq);
     419/** Opcode VEX.66.0F38 0xdd. */
     420FNIEMOP_STUB(iemOp_vaesenclast_Vdq_Wdq);
     421/** Opcode VEX.66.0F38 0xde. */
     422FNIEMOP_STUB(iemOp_vaesdec_Vdq_Wdq);
     423/** Opcode VEX.66.0F38 0xdf. */
     424FNIEMOP_STUB(iemOp_vaesdeclast_Vdq_Wdq);
     425
     426/*  Opcode VEX.66.0F38 0xe0 - invalid. */
     427/*  Opcode VEX.66.0F38 0xe1 - invalid. */
     428/*  Opcode VEX.66.0F38 0xe2 - invalid. */
     429/*  Opcode VEX.66.0F38 0xe3 - invalid. */
     430/*  Opcode VEX.66.0F38 0xe4 - invalid. */
     431/*  Opcode VEX.66.0F38 0xe5 - invalid. */
     432/*  Opcode VEX.66.0F38 0xe6 - invalid. */
     433/*  Opcode VEX.66.0F38 0xe7 - invalid. */
     434/*  Opcode VEX.66.0F38 0xe8 - invalid. */
     435/*  Opcode VEX.66.0F38 0xe9 - invalid. */
     436/*  Opcode VEX.66.0F38 0xea - invalid. */
     437/*  Opcode VEX.66.0F38 0xeb - invalid. */
     438/*  Opcode VEX.66.0F38 0xec - invalid. */
     439/*  Opcode VEX.66.0F38 0xed - invalid. */
     440/*  Opcode VEX.66.0F38 0xee - invalid. */
     441/*  Opcode VEX.66.0F38 0xef - invalid. */
     442
     443
     444/*  Opcode VEX.0F38 0xf0 - invalid (legacy only). */
     445/*  Opcode VEX.66.0F38 0xf0 - invalid (legacy only). */
     446/*  Opcode VEX.F3.0F38 0xf0 - invalid. */
     447/*  Opcode VEX.F2.0F38 0xf0 - invalid (legacy only). */
     448
     449/*  Opcode VEX.0F38 0xf1 - invalid (legacy only). */
     450/*  Opcode VEX.66.0F38 0xf1 - invalid (legacy only). */
     451/*  Opcode VEX.F3.0F38 0xf1 - invalid. */
     452/*  Opcode VEX.F2.0F38 0xf1 - invalid (legacy only). */
     453
     454/*  Opcode VEX.0F38 0xf2 - invalid (vex only). */
     455FNIEMOP_STUB(iemOp_andn_Gy_By_Ey);
     456/*  Opcode VEX.66.0F38 0xf2 - invalid. */
     457/*  Opcode VEX.F3.0F38 0xf2 - invalid. */
     458/*  Opcode VEX.F2.0F38 0xf2 - invalid. */
     459
     460
     461/*  Opcode VEX.0F38 0xf3 - invalid. */
     462/*  Opcode VEX.66.0F38 0xf3 - invalid. */
     463
     464/*  Opcode VEX.F3.0F38 0xf3 /0 - invalid). */
     465/*  Opcode VEX.F3.0F38 0xf3 /1). */
     466FNIEMOP_STUB_1(iemOp_VGrp17_blsr_By_Ey, uint8_t, bRm);
     467/*  Opcode VEX.F3.0F38 0xf3 /2). */
     468FNIEMOP_STUB_1(iemOp_VGrp17_blsmsk_By_Ey, uint8_t, bRm);
     469/*  Opcode VEX.F3.0F38 0xf3 /3). */
     470FNIEMOP_STUB_1(iemOp_VGrp17_blsi_By_Ey, uint8_t, bRm);
     471/*  Opcode VEX.F3.0F38 0xf3 /4 - invalid). */
     472/*  Opcode VEX.F3.0F38 0xf3 /5 - invalid). */
     473/*  Opcode VEX.F3.0F38 0xf3 /6 - invalid). */
     474/*  Opcode VEX.F3.0F38 0xf3 /7 - invalid). */
    496475
    497476/**
    498  * Three byte opcode map, first two bytes are 0x0f 0x38.
    499  * @sa      g_apfnVexMap2
     477 * Group 17 jump table for the VEX.F3 variant..
    500478 */
    501 IEM_STATIC const PFNIEMOP g_apfnThreeByte0f38[] =
     479IEM_STATIC const PFNIEMOPRM g_apfnVexGroup17_f3[] =
     480{
     481    /* /0 */ iemOp_InvalidWithRM,
     482    /* /1 */ iemOp_VGrp17_blsr_By_Ey,
     483    /* /2 */ iemOp_VGrp17_blsmsk_By_Ey,
     484    /* /3 */ iemOp_VGrp17_blsi_By_Ey,
     485    /* /4 */ iemOp_InvalidWithRM,
     486    /* /5 */ iemOp_InvalidWithRM,
     487    /* /6 */ iemOp_InvalidWithRM,
     488    /* /7 */ iemOp_InvalidWithRM
     489};
     490AssertCompile(RT_ELEMENTS(g_apfnVexGroup17_f3) == 8);
     491
     492/**  Opcode VEX.F3.0F38 0xf3 - invalid (vex only - group 17). */
     493FNIEMOP_DEF(iemOp_VGrp17_f3)
     494{
     495    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     496    return FNIEMOP_CALL_1(g_apfnVexGroup17_f3[((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK)], bRm);
     497
     498}
     499
     500/*  Opcode VEX.F2.0F38 0xf3 - invalid (vex only - group 17). */
     501
     502
     503/*  Opcode VEX.0F38 0xf4 - invalid. */
     504/*  Opcode VEX.66.0F38 0xf4 - invalid. */
     505/*  Opcode VEX.F3.0F38 0xf4 - invalid. */
     506/*  Opcode VEX.F2.0F38 0xf4 - invalid. */
     507
     508/** Opcode VEX.0F38 0xf5 (vex only). */
     509FNIEMOP_STUB(iemOp_bzhi_Gy_Ey_By);
     510/*  Opcode VEX.66.0F38 0xf5 - invalid. */
     511/** Opcode VEX.F3.0F38 0xf5 (vex only). */
     512FNIEMOP_STUB(iemOp_pext_Gy_By_Ey);
     513/** Opcode VEX.F2.0F38 0xf5 (vex only). */
     514FNIEMOP_STUB(iemOp_pdep_Gy_By_Ey);
     515
     516/*  Opcode VEX.0F38 0xf6 - invalid. */
     517/*  Opcode VEX.66.0F38 0xf6 - invalid (legacy only). */
     518/*  Opcode VEX.F3.0F38 0xf6 - invalid (legacy only). */
     519/*  Opcode VEX.F2.0F38 0xf6 - invalid (vex only). */
     520FNIEMOP_STUB(iemOp_mulx_By_Gy_rDX_Ey);
     521
     522/** Opcode VEX.0F38 0xf7 (vex only). */
     523FNIEMOP_STUB(iemOp_bextr_Gy_Ey_By);
     524/** Opcode VEX.66.0F38 0xf7 (vex only). */
     525FNIEMOP_STUB(iemOp_shlx_Gy_Ey_By);
     526/** Opcode VEX.F3.0F38 0xf7 (vex only). */
     527FNIEMOP_STUB(iemOp_sarx_Gy_Ey_By);
     528/** Opcode VEX.F2.0F38 0xf7 (vex only). */
     529FNIEMOP_STUB(iemOp_shrx_Gy_Ey_By);
     530
     531/*  Opcode VEX.0F38 0xf8 - invalid. */
     532/*  Opcode VEX.66.0F38 0xf8 - invalid. */
     533/*  Opcode VEX.F3.0F38 0xf8 - invalid. */
     534/*  Opcode VEX.F2.0F38 0xf8 - invalid. */
     535
     536/*  Opcode VEX.0F38 0xf9 - invalid. */
     537/*  Opcode VEX.66.0F38 0xf9 - invalid. */
     538/*  Opcode VEX.F3.0F38 0xf9 - invalid. */
     539/*  Opcode VEX.F2.0F38 0xf9 - invalid. */
     540
     541/*  Opcode VEX.0F38 0xfa - invalid. */
     542/*  Opcode VEX.66.0F38 0xfa - invalid. */
     543/*  Opcode VEX.F3.0F38 0xfa - invalid. */
     544/*  Opcode VEX.F2.0F38 0xfa - invalid. */
     545
     546/*  Opcode VEX.0F38 0xfb - invalid. */
     547/*  Opcode VEX.66.0F38 0xfb - invalid. */
     548/*  Opcode VEX.F3.0F38 0xfb - invalid. */
     549/*  Opcode VEX.F2.0F38 0xfb - invalid. */
     550
     551/*  Opcode VEX.0F38 0xfc - invalid. */
     552/*  Opcode VEX.66.0F38 0xfc - invalid. */
     553/*  Opcode VEX.F3.0F38 0xfc - invalid. */
     554/*  Opcode VEX.F2.0F38 0xfc - invalid. */
     555
     556/*  Opcode VEX.0F38 0xfd - invalid. */
     557/*  Opcode VEX.66.0F38 0xfd - invalid. */
     558/*  Opcode VEX.F3.0F38 0xfd - invalid. */
     559/*  Opcode VEX.F2.0F38 0xfd - invalid. */
     560
     561/*  Opcode VEX.0F38 0xfe - invalid. */
     562/*  Opcode VEX.66.0F38 0xfe - invalid. */
     563/*  Opcode VEX.F3.0F38 0xfe - invalid. */
     564/*  Opcode VEX.F2.0F38 0xfe - invalid. */
     565
     566/*  Opcode VEX.0F38 0xff - invalid. */
     567/*  Opcode VEX.66.0F38 0xff - invalid. */
     568/*  Opcode VEX.F3.0F38 0xff - invalid. */
     569/*  Opcode VEX.F2.0F38 0xff - invalid. */
     570
     571
     572/**
     573 * VEX opcode map \#2.
     574 *
     575 * @sa      g_apfnThreeByte0f38
     576 */
     577IEM_STATIC const PFNIEMOP g_apfnVexMap2[] =
    502578{
    503579    /*          no prefix,                  066h prefix                 f3h prefix,                 f2h prefix */
    504     /* 0x00 */  iemOp_pshufb_Pq_Qq,         iemOp_pshufb_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    505     /* 0x01 */  iemOp_phaddw_Pq_Qq,         iemOp_phaddw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    506     /* 0x02 */  iemOp_phaddd_Pq_Qq,         iemOp_phaddd_vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    507     /* 0x03 */  iemOp_phaddsw_Pq_Qq,        iemOp_phaddsw_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    508     /* 0x04 */  iemOp_pmaddubsw_Pq_Qq,      iemOp_pmaddubsw_Vx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    509     /* 0x05 */  iemOp_phsubw_Pq_Qq,         iemOp_phsubw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    510     /* 0x06 */  iemOp_phsubd_Pq_Qq,         iemOp_phsubdq_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    511     /* 0x07 */  iemOp_phsubsw_Pq_Qq,        iemOp_phsubsw_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    512     /* 0x08 */  iemOp_psignb_Pq_Qq,         iemOp_psignb_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    513     /* 0x09 */  iemOp_psignw_Pq_Qq,         iemOp_psignw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    514     /* 0x0a */  iemOp_psignd_Pq_Qq,         iemOp_psignd_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    515     /* 0x0b */  iemOp_pmulhrsw_Pq_Qq,       iemOp_pmulhrsw_Vx_Wx,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    516     /* 0x0c */  IEMOP_X4(iemOp_InvalidNeedRM),
    517     /* 0x0d */  IEMOP_X4(iemOp_InvalidNeedRM),
    518     /* 0x0e */  IEMOP_X4(iemOp_InvalidNeedRM),
    519     /* 0x0f */  IEMOP_X4(iemOp_InvalidNeedRM),
    520 
    521     /* 0x10 */  iemOp_InvalidNeedRM,        iemOp_pblendvb_Vdq_Wdq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     580    /* 0x00 */  iemOp_InvalidNeedRM,        iemOp_vpshufb_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     581    /* 0x01 */  iemOp_InvalidNeedRM,        iemOp_vphaddw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     582    /* 0x02 */  iemOp_InvalidNeedRM,        iemOp_vphaddd_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     583    /* 0x03 */  iemOp_InvalidNeedRM,        iemOp_vphaddsw_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     584    /* 0x04 */  iemOp_InvalidNeedRM,        iemOp_vpmaddubsw_Vx_Hx_Wx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     585    /* 0x05 */  iemOp_InvalidNeedRM,        iemOp_vphsubw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     586    /* 0x06 */  iemOp_InvalidNeedRM,        iemOp_vphsubdq_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     587    /* 0x07 */  iemOp_InvalidNeedRM,        iemOp_vphsubsw_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     588    /* 0x08 */  iemOp_InvalidNeedRM,        iemOp_vpsignb_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     589    /* 0x09 */  iemOp_InvalidNeedRM,        iemOp_vpsignw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     590    /* 0x0a */  iemOp_InvalidNeedRM,        iemOp_vpsignd_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     591    /* 0x0b */  iemOp_InvalidNeedRM,        iemOp_vpmulhrsw_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     592    /* 0x0c */  iemOp_InvalidNeedRM,        iemOp_vpermilps_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     593    /* 0x0d */  iemOp_InvalidNeedRM,        iemOp_vpermilpd_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     594    /* 0x0e */  iemOp_InvalidNeedRM,        iemOp_vtestps_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     595    /* 0x0f */  iemOp_InvalidNeedRM,        iemOp_vtestpd_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     596
     597    /* 0x10 */  IEMOP_X4(iemOp_InvalidNeedRM),
    522598    /* 0x11 */  IEMOP_X4(iemOp_InvalidNeedRM),
    523599    /* 0x12 */  IEMOP_X4(iemOp_InvalidNeedRM),
    524600    /* 0x13 */  IEMOP_X4(iemOp_InvalidNeedRM),
    525     /* 0x14 */  iemOp_InvalidNeedRM,        iemOp_blendvps_Vdq_Wdq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    526     /* 0x15 */  iemOp_InvalidNeedRM,        iemOp_blendvpd_Vdq_Wdq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    527     /* 0x16 */  IEMOP_X4(iemOp_InvalidNeedRM),
     601    /* 0x14 */  IEMOP_X4(iemOp_InvalidNeedRM),
     602    /* 0x15 */  IEMOP_X4(iemOp_InvalidNeedRM),
     603    /* 0x16 */  iemOp_InvalidNeedRM,        iemOp_vpermps_Vqq_Hqq_Wqq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    528604    /* 0x17 */  iemOp_InvalidNeedRM,        iemOp_ptest_Vx_Wx,          iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    529     /* 0x18 */  IEMOP_X4(iemOp_InvalidNeedRM),
    530     /* 0x19 */  IEMOP_X4(iemOp_InvalidNeedRM),
    531     /* 0x1a */  IEMOP_X4(iemOp_InvalidNeedRM),
     605    /* 0x18 */  iemOp_InvalidNeedRM,        iemOp_vbroadcastss_Vx_Wd,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     606    /* 0x19 */  iemOp_InvalidNeedRM,        iemOp_vbroadcastsd_Vqq_Wq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     607    /* 0x1a */  iemOp_InvalidNeedRM,        iemOp_vbroadcastf128_Vqq_Mdq, iemOp_InvalidNeedRM,      iemOp_InvalidNeedRM,
    532608    /* 0x1b */  IEMOP_X4(iemOp_InvalidNeedRM),
    533     /* 0x1c */  iemOp_pabsb_Pq_Qq,          iemOp_pabsb_Vx_Wx,          iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    534     /* 0x1d */  iemOp_pabsw_Pq_Qq,          iemOp_pabsw_Vx_Wx,          iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    535     /* 0x1e */  iemOp_pabsd_Pq_Qq,          iemOp_pabsd_Vx_Wx,          iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     609    /* 0x1c */  iemOp_InvalidNeedRM,        iemOp_vpabsb_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     610    /* 0x1d */  iemOp_InvalidNeedRM,        iemOp_vpabsw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     611    /* 0x1e */  iemOp_InvalidNeedRM,        iemOp_vpabsd_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    536612    /* 0x1f */  IEMOP_X4(iemOp_InvalidNeedRM),
    537613
    538     /* 0x20 */  iemOp_InvalidNeedRM,        iemOp_pmovsxbw_Vx_UxMq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    539     /* 0x21 */  iemOp_InvalidNeedRM,        iemOp_pmovsxbd_Vx_UxMd,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    540     /* 0x22 */  iemOp_InvalidNeedRM,        iemOp_pmovsxbq_Vx_UxMw,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    541     /* 0x23 */  iemOp_InvalidNeedRM,        iemOp_pmovsxwd_Vx_UxMq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    542     /* 0x24 */  iemOp_InvalidNeedRM,        iemOp_pmovsxwq_Vx_UxMd,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    543     /* 0x25 */  iemOp_InvalidNeedRM,        iemOp_pmovsxdq_Vx_UxMq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     614    /* 0x20 */  iemOp_InvalidNeedRM,        iemOp_vpmovsxbw_Vx_UxMq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     615    /* 0x21 */  iemOp_InvalidNeedRM,        iemOp_vpmovsxbd_Vx_UxMd,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     616    /* 0x22 */  iemOp_InvalidNeedRM,        iemOp_vpmovsxbq_Vx_UxMw,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     617    /* 0x23 */  iemOp_InvalidNeedRM,        iemOp_vpmovsxwd_Vx_UxMq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     618    /* 0x24 */  iemOp_InvalidNeedRM,        iemOp_vpmovsxwq_Vx_UxMd,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     619    /* 0x25 */  iemOp_InvalidNeedRM,        iemOp_vpmovsxdq_Vx_UxMq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    544620    /* 0x26 */  IEMOP_X4(iemOp_InvalidNeedRM),
    545621    /* 0x27 */  IEMOP_X4(iemOp_InvalidNeedRM),
    546     /* 0x28 */  iemOp_InvalidNeedRM,        iemOp_pmuldq_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    547     /* 0x29 */  iemOp_InvalidNeedRM,        iemOp_pcmpeqq_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    548     /* 0x2a */  iemOp_InvalidNeedRM,        iemOp_movntdqa_Vx_Mx,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    549     /* 0x2b */  iemOp_InvalidNeedRM,        iemOp_packusdw_Vx_Wx,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    550     /* 0x2c */  IEMOP_X4(iemOp_InvalidNeedRM),
    551     /* 0x2d */  IEMOP_X4(iemOp_InvalidNeedRM),
    552     /* 0x2e */  IEMOP_X4(iemOp_InvalidNeedRM),
    553     /* 0x2f */  IEMOP_X4(iemOp_InvalidNeedRM),
    554 
    555     /* 0x30 */  iemOp_InvalidNeedRM,        iemOp_pmovzxbw_Vx_UxMq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    556     /* 0x31 */  iemOp_InvalidNeedRM,        iemOp_pmovzxbd_Vx_UxMd,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    557     /* 0x32 */  iemOp_InvalidNeedRM,        iemOp_pmovzxbq_Vx_UxMw,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    558     /* 0x33 */  iemOp_InvalidNeedRM,        iemOp_pmovzxwd_Vx_UxMq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    559     /* 0x34 */  iemOp_InvalidNeedRM,        iemOp_pmovzxwq_Vx_UxMd,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    560     /* 0x35 */  iemOp_InvalidNeedRM,        iemOp_pmovzxdq_Vx_UxMq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    561     /* 0x36 */  IEMOP_X4(iemOp_InvalidNeedRM),
    562     /* 0x37 */  iemOp_InvalidNeedRM,        iemOp_pcmpgtq_Vx_Wx,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    563     /* 0x38 */  iemOp_InvalidNeedRM,        iemOp_pminsb_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    564     /* 0x39 */  iemOp_InvalidNeedRM,        iemOp_pminsd_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    565     /* 0x3a */  iemOp_InvalidNeedRM,        iemOp_pminuw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    566     /* 0x3b */  iemOp_InvalidNeedRM,        iemOp_pminud_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    567     /* 0x3c */  iemOp_InvalidNeedRM,        iemOp_pmaxsb_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    568     /* 0x3d */  iemOp_InvalidNeedRM,        iemOp_pmaxsd_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    569     /* 0x3e */  iemOp_InvalidNeedRM,        iemOp_pmaxuw_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    570     /* 0x3f */  iemOp_InvalidNeedRM,        iemOp_pmaxud_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    571 
    572     /* 0x40 */  iemOp_InvalidNeedRM,        iemOp_pmulld_Vx_Wx,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    573     /* 0x41 */  iemOp_InvalidNeedRM,        iemOp_phminposuw_Vdq_Wdq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     622    /* 0x28 */  iemOp_InvalidNeedRM,        iemOp_vpmuldq_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     623    /* 0x29 */  iemOp_InvalidNeedRM,        iemOp_vpcmpeqq_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     624    /* 0x2a */  iemOp_InvalidNeedRM,        iemOp_vmovntdqa_Vx_Hx_Mx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     625    /* 0x2b */  iemOp_InvalidNeedRM,        iemOp_vpackusdw_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     626    /* 0x2c */  iemOp_InvalidNeedRM,        iemOp_vmaskmovps_Vx_Hx_Mx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     627    /* 0x2d */  iemOp_InvalidNeedRM,        iemOp_vmaskmovpd_Vx_Hx_Mx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     628    /* 0x2e */  iemOp_InvalidNeedRM,        iemOp_vmaskmovps_Mx_Hx_Vx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     629    /* 0x2f */  iemOp_InvalidNeedRM,        iemOp_vmaskmovpd_Mx_Hx_Vx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     630
     631    /* 0x30 */  iemOp_InvalidNeedRM,        iemOp_vpmovzxbw_Vx_UxMq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     632    /* 0x31 */  iemOp_InvalidNeedRM,        iemOp_vpmovzxbd_Vx_UxMd,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     633    /* 0x32 */  iemOp_InvalidNeedRM,        iemOp_vpmovzxbq_Vx_UxMw,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     634    /* 0x33 */  iemOp_InvalidNeedRM,        iemOp_vpmovzxwd_Vx_UxMq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     635    /* 0x34 */  iemOp_InvalidNeedRM,        iemOp_vpmovzxwq_Vx_UxMd,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     636    /* 0x35 */  iemOp_InvalidNeedRM,        iemOp_vpmovzxdq_Vx_UxMq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     637    /* 0x36 */  iemOp_InvalidNeedRM,        iemOp_vpermd_Vqq_Hqq_Wqq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     638    /* 0x37 */  iemOp_InvalidNeedRM,        iemOp_vpcmpgtq_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     639    /* 0x38 */  iemOp_InvalidNeedRM,        iemOp_vpminsb_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     640    /* 0x39 */  iemOp_InvalidNeedRM,        iemOp_vpminsd_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     641    /* 0x3a */  iemOp_InvalidNeedRM,        iemOp_vpminuw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     642    /* 0x3b */  iemOp_InvalidNeedRM,        iemOp_vpminud_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     643    /* 0x3c */  iemOp_InvalidNeedRM,        iemOp_vpmaxsb_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     644    /* 0x3d */  iemOp_InvalidNeedRM,        iemOp_vpmaxsd_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     645    /* 0x3e */  iemOp_InvalidNeedRM,        iemOp_vpmaxuw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     646    /* 0x3f */  iemOp_InvalidNeedRM,        iemOp_vpmaxud_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     647
     648    /* 0x40 */  iemOp_InvalidNeedRM,        iemOp_vpmulld_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     649    /* 0x41 */  iemOp_InvalidNeedRM,        iemOp_vphminposuw_Vdq_Wdq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    574650    /* 0x42 */  IEMOP_X4(iemOp_InvalidNeedRM),
    575651    /* 0x43 */  IEMOP_X4(iemOp_InvalidNeedRM),
    576652    /* 0x44 */  IEMOP_X4(iemOp_InvalidNeedRM),
    577     /* 0x45 */  IEMOP_X4(iemOp_InvalidNeedRM),
    578     /* 0x46 */  IEMOP_X4(iemOp_InvalidNeedRM),
    579     /* 0x47 */  IEMOP_X4(iemOp_InvalidNeedRM),
     653    /* 0x45 */  iemOp_InvalidNeedRM,        iemOp_vpsrlvd_q_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     654    /* 0x46 */  iemOp_InvalidNeedRM,        iemOp_vsravd_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     655    /* 0x47 */  iemOp_InvalidNeedRM,        iemOp_vpsllvd_q_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    580656    /* 0x48 */  IEMOP_X4(iemOp_InvalidNeedRM),
    581657    /* 0x49 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    595671    /* 0x56 */  IEMOP_X4(iemOp_InvalidNeedRM),
    596672    /* 0x57 */  IEMOP_X4(iemOp_InvalidNeedRM),
    597     /* 0x58 */  IEMOP_X4(iemOp_InvalidNeedRM),
    598     /* 0x59 */  IEMOP_X4(iemOp_InvalidNeedRM),
    599     /* 0x5a */  IEMOP_X4(iemOp_InvalidNeedRM),
     673    /* 0x58 */  iemOp_InvalidNeedRM,        iemOp_vpbroadcastd_Vx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     674    /* 0x59 */  iemOp_InvalidNeedRM,        iemOp_vpbroadcastq_Vx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     675    /* 0x5a */  iemOp_InvalidNeedRM,        iemOp_vbroadcasti128_Vqq_Mdq, iemOp_InvalidNeedRM,      iemOp_InvalidNeedRM,
    600676    /* 0x5b */  IEMOP_X4(iemOp_InvalidNeedRM),
    601677    /* 0x5c */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    629705    /* 0x76 */  IEMOP_X4(iemOp_InvalidNeedRM),
    630706    /* 0x77 */  IEMOP_X4(iemOp_InvalidNeedRM),
    631     /* 0x78 */  IEMOP_X4(iemOp_InvalidNeedRM),
    632     /* 0x79 */  IEMOP_X4(iemOp_InvalidNeedRM),
     707    /* 0x78 */  iemOp_InvalidNeedRM,        iemOp_vpboardcastb_Vx_Wx,   iemOp_InvalidNeedRM,      iemOp_InvalidNeedRM,
     708    /* 0x79 */  iemOp_InvalidNeedRM,        iemOp_vpboardcastw_Vx_Wx,   iemOp_InvalidNeedRM,      iemOp_InvalidNeedRM,
    633709    /* 0x7a */  IEMOP_X4(iemOp_InvalidNeedRM),
    634710    /* 0x7b */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    638714    /* 0x7f */  IEMOP_X4(iemOp_InvalidNeedRM),
    639715
    640     /* 0x80 */  iemOp_InvalidNeedRM,        iemOp_invept_Gy_Mdq,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    641     /* 0x81 */  iemOp_InvalidNeedRM,        iemOp_invvpid_Gy_Mdq,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    642     /* 0x82 */  iemOp_InvalidNeedRM,        iemOp_invpcid_Gy_Mdq,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     716    /* 0x80 */  IEMOP_X4(iemOp_InvalidNeedRM),
     717    /* 0x81 */  IEMOP_X4(iemOp_InvalidNeedRM),
     718    /* 0x82 */  IEMOP_X4(iemOp_InvalidNeedRM),
    643719    /* 0x83 */  IEMOP_X4(iemOp_InvalidNeedRM),
    644720    /* 0x84 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    650726    /* 0x8a */  IEMOP_X4(iemOp_InvalidNeedRM),
    651727    /* 0x8b */  IEMOP_X4(iemOp_InvalidNeedRM),
    652     /* 0x8c */  IEMOP_X4(iemOp_InvalidNeedRM),
     728    /* 0x8c */  iemOp_InvalidNeedRM,        iemOp_vpmaskmovd_q_Vx_Hx_Mx, iemOp_InvalidNeedRM,     iemOp_InvalidNeedRM,
    653729    /* 0x8d */  IEMOP_X4(iemOp_InvalidNeedRM),
    654     /* 0x8e */  IEMOP_X4(iemOp_InvalidNeedRM),
     730    /* 0x8e */  iemOp_InvalidNeedRM,        iemOp_vpmaskmovd_q_Mx_Vx_Hx, iemOp_InvalidNeedRM,     iemOp_InvalidNeedRM,
    655731    /* 0x8f */  IEMOP_X4(iemOp_InvalidNeedRM),
    656732
    657     /* 0x90 */  IEMOP_X4(iemOp_InvalidNeedRM),
    658     /* 0x91 */  IEMOP_X4(iemOp_InvalidNeedRM),
    659     /* 0x92 */  IEMOP_X4(iemOp_InvalidNeedRM),
    660     /* 0x93 */  IEMOP_X4(iemOp_InvalidNeedRM),
     733    /* 0x90 */  iemOp_InvalidNeedRM,        iemOp_vgatherdd_q_Vx_Hx_Wx, iemOp_InvalidNeedRM,      iemOp_InvalidNeedRM,
     734    /* 0x91 */  iemOp_InvalidNeedRM,        iemOp_vgatherqd_q_Vx_Hx_Wx, iemOp_InvalidNeedRM,      iemOp_InvalidNeedRM,
     735    /* 0x92 */  iemOp_InvalidNeedRM,        iemOp_vgatherdps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM,     iemOp_InvalidNeedRM,
     736    /* 0x93 */  iemOp_InvalidNeedRM,        iemOp_vgatherqps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM,     iemOp_InvalidNeedRM,
    661737    /* 0x94 */  IEMOP_X4(iemOp_InvalidNeedRM),
    662738    /* 0x95 */  IEMOP_X4(iemOp_InvalidNeedRM),
    663     /* 0x96 */  IEMOP_X4(iemOp_InvalidNeedRM),
    664     /* 0x97 */  IEMOP_X4(iemOp_InvalidNeedRM),
    665     /* 0x98 */  IEMOP_X4(iemOp_InvalidNeedRM),
    666     /* 0x99 */  IEMOP_X4(iemOp_InvalidNeedRM),
    667     /* 0x9a */  IEMOP_X4(iemOp_InvalidNeedRM),
    668     /* 0x9b */  IEMOP_X4(iemOp_InvalidNeedRM),
    669     /* 0x9c */  IEMOP_X4(iemOp_InvalidNeedRM),
    670     /* 0x9d */  IEMOP_X4(iemOp_InvalidNeedRM),
    671     /* 0x9e */  IEMOP_X4(iemOp_InvalidNeedRM),
    672     /* 0x9f */  IEMOP_X4(iemOp_InvalidNeedRM),
     739    /* 0x96 */  iemOp_InvalidNeedRM,        iemOp_vfmaddsub132ps_q_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     740    /* 0x97 */  iemOp_InvalidNeedRM,        iemOp_vfmsubadd132ps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     741    /* 0x98 */  iemOp_InvalidNeedRM,        iemOp_vfmadd132ps_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     742    /* 0x99 */  iemOp_InvalidNeedRM,        iemOp_vfmadd132ss_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     743    /* 0x9a */  iemOp_InvalidNeedRM,        iemOp_vfmsub132ps_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     744    /* 0x9b */  iemOp_InvalidNeedRM,        iemOp_vfmsub132ss_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     745    /* 0x9c */  iemOp_InvalidNeedRM,        iemOp_vfnmadd132ps_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     746    /* 0x9d */  iemOp_InvalidNeedRM,        iemOp_vfnmadd132ss_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     747    /* 0x9e */  iemOp_InvalidNeedRM,        iemOp_vfnmsub132ps_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     748    /* 0x9f */  iemOp_InvalidNeedRM,        iemOp_vfnmsub132ss_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
    673749
    674750    /* 0xa0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    678754    /* 0xa4 */  IEMOP_X4(iemOp_InvalidNeedRM),
    679755    /* 0xa5 */  IEMOP_X4(iemOp_InvalidNeedRM),
    680     /* 0xa6 */  IEMOP_X4(iemOp_InvalidNeedRM),
    681     /* 0xa7 */  IEMOP_X4(iemOp_InvalidNeedRM),
    682     /* 0xa8 */  IEMOP_X4(iemOp_InvalidNeedRM),
    683     /* 0xa9 */  IEMOP_X4(iemOp_InvalidNeedRM),
    684     /* 0xaa */  IEMOP_X4(iemOp_InvalidNeedRM),
    685     /* 0xab */  IEMOP_X4(iemOp_InvalidNeedRM),
    686     /* 0xac */  IEMOP_X4(iemOp_InvalidNeedRM),
    687     /* 0xad */  IEMOP_X4(iemOp_InvalidNeedRM),
    688     /* 0xae */  IEMOP_X4(iemOp_InvalidNeedRM),
    689     /* 0xaf */  IEMOP_X4(iemOp_InvalidNeedRM),
     756    /* 0xa6 */  iemOp_InvalidNeedRM,        iemOp_vfmaddsub213ps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     757    /* 0xa7 */  iemOp_InvalidNeedRM,        iemOp_vfmsubadd213ps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     758    /* 0xa8 */  iemOp_InvalidNeedRM,        iemOp_vfmadd213ps_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     759    /* 0xa9 */  iemOp_InvalidNeedRM,        iemOp_vfmadd213ss_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     760    /* 0xaa */  iemOp_InvalidNeedRM,        iemOp_vfmsub213ps_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     761    /* 0xab */  iemOp_InvalidNeedRM,        iemOp_vfmsub213ss_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     762    /* 0xac */  iemOp_InvalidNeedRM,        iemOp_vfnmadd213ps_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     763    /* 0xad */  iemOp_InvalidNeedRM,        iemOp_vfnmadd213ss_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     764    /* 0xae */  iemOp_InvalidNeedRM,        iemOp_vfnmsub213ps_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     765    /* 0xaf */  iemOp_InvalidNeedRM,        iemOp_vfnmsub213ss_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
    690766
    691767    /* 0xb0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    695771    /* 0xb4 */  IEMOP_X4(iemOp_InvalidNeedRM),
    696772    /* 0xb5 */  IEMOP_X4(iemOp_InvalidNeedRM),
    697     /* 0xb6 */  IEMOP_X4(iemOp_InvalidNeedRM),
    698     /* 0xb7 */  IEMOP_X4(iemOp_InvalidNeedRM),
    699     /* 0xb8 */  IEMOP_X4(iemOp_InvalidNeedRM),
    700     /* 0xb9 */  IEMOP_X4(iemOp_InvalidNeedRM),
    701     /* 0xba */  IEMOP_X4(iemOp_InvalidNeedRM),
    702     /* 0xbb */  IEMOP_X4(iemOp_InvalidNeedRM),
    703     /* 0xbc */  IEMOP_X4(iemOp_InvalidNeedRM),
    704     /* 0xbd */  IEMOP_X4(iemOp_InvalidNeedRM),
    705     /* 0xbe */  IEMOP_X4(iemOp_InvalidNeedRM),
    706     /* 0xbf */  IEMOP_X4(iemOp_InvalidNeedRM),
     773    /* 0xb6 */  iemOp_InvalidNeedRM,        iemOp_vfmaddsub231ps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     774    /* 0xb7 */  iemOp_InvalidNeedRM,        iemOp_vfmsubadd231ps_d_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     775    /* 0xb8 */  iemOp_InvalidNeedRM,        iemOp_vfmadd231ps_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     776    /* 0xb9 */  iemOp_InvalidNeedRM,        iemOp_vfmadd231ss_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     777    /* 0xba */  iemOp_InvalidNeedRM,        iemOp_vfmsub231ps_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     778    /* 0xbb */  iemOp_InvalidNeedRM,        iemOp_vfmsub231ss_d_Vx_Hx_Wx,    iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     779    /* 0xbc */  iemOp_InvalidNeedRM,        iemOp_vfnmadd231ps_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     780    /* 0xbd */  iemOp_InvalidNeedRM,        iemOp_vfnmadd231ss_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     781    /* 0xbe */  iemOp_InvalidNeedRM,        iemOp_vfnmsub231ps_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     782    /* 0xbf */  iemOp_InvalidNeedRM,        iemOp_vfnmsub231ss_d_Vx_Hx_Wx,   iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
    707783
    708784    /* 0xc0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    714790    /* 0xc6 */  IEMOP_X4(iemOp_InvalidNeedRM),
    715791    /* 0xc7 */  IEMOP_X4(iemOp_InvalidNeedRM),
    716     /* 0xc8 */  iemOp_sha1nexte_Vdq_Wdq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    717     /* 0xc9 */  iemOp_sha1msg1_Vdq_Wdq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    718     /* 0xca */  iemOp_sha1msg2_Vdq_Wdq,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    719     /* 0xcb */  iemOp_sha256rnds2_Vdq_Wdq, iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    720     /* 0xcc */  iemOp_sha256msg1_Vdq_Wdq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    721     /* 0xcd */  iemOp_sha256msg2_Vdq_Wdq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     792    /* 0xc8 */  iemOp_vsha1nexte_Vdq_Wdq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     793    /* 0xc9 */  iemOp_vsha1msg1_Vdq_Wdq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     794    /* 0xca */  iemOp_vsha1msg2_Vdq_Wdq,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     795    /* 0xcb */  iemOp_vsha256rnds2_Vdq_Wdq, iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     796    /* 0xcc */  iemOp_vsha256msg1_Vdq_Wdq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     797    /* 0xcd */  iemOp_vsha256msg2_Vdq_Wdq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    722798    /* 0xce */  IEMOP_X4(iemOp_InvalidNeedRM),
    723799    /* 0xcf */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    734810    /* 0xd9 */  IEMOP_X4(iemOp_InvalidNeedRM),
    735811    /* 0xda */  IEMOP_X4(iemOp_InvalidNeedRM),
    736     /* 0xdb */  iemOp_InvalidNeedRM,        iemOp_aesimc_Vdq_Wdq,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    737     /* 0xdc */  iemOp_InvalidNeedRM,        iemOp_aesenc_Vdq_Wdq,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    738     /* 0xdd */  iemOp_InvalidNeedRM,        iemOp_aesenclast_Vdq_Wdq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    739     /* 0xde */  iemOp_InvalidNeedRM,        iemOp_aesdec_Vdq_Wdq,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    740     /* 0xdf */  iemOp_InvalidNeedRM,        iemOp_aesdeclast_Vdq_Wdq,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     812    /* 0xdb */  iemOp_InvalidNeedRM,        iemOp_vaesimc_Vdq_Wdq,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     813    /* 0xdc */  iemOp_InvalidNeedRM,        iemOp_vaesenc_Vdq_Wdq,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     814    /* 0xdd */  iemOp_InvalidNeedRM,        iemOp_vaesenclast_Vdq_Wdq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     815    /* 0xde */  iemOp_InvalidNeedRM,        iemOp_vaesdec_Vdq_Wdq,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     816    /* 0xdf */  iemOp_InvalidNeedRM,        iemOp_vaesdeclast_Vdq_Wdq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    741817
    742818    /* 0xe0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    757833    /* 0xef */  IEMOP_X4(iemOp_InvalidNeedRM),
    758834
    759     /* 0xf0 */  iemOp_movbe_Gy_My,          iemOp_movbe_Gw_Mw,          iemOp_InvalidNeedRM,        iemOp_crc32_Gb_Eb,
    760     /* 0xf1 */  iemOp_movbe_My_Gy,          iemOp_movbe_Mw_Gw,          iemOp_InvalidNeedRM,        iemOp_crc32_Gv_Ev,
    761     /* 0xf2 */  IEMOP_X4(iemOp_InvalidNeedRM),
    762     /* 0xf3 */  IEMOP_X4(iemOp_InvalidNeedRM),
     835    /* 0xf0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     836    /* 0xf1 */  IEMOP_X4(iemOp_InvalidNeedRM),
     837    /* 0xf2 */  iemOp_andn_Gy_By_Ey,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     838    /* 0xf3 */  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_VGrp17_f3,            iemOp_InvalidNeedRM,
    763839    /* 0xf4 */  IEMOP_X4(iemOp_InvalidNeedRM),
    764     /* 0xf5 */  IEMOP_X4(iemOp_InvalidNeedRM),
    765     /* 0xf6 */  iemOp_InvalidNeedRM,        iemOp_adcx_Gy_Ey,           iemOp_adox_Gy_Ey,           iemOp_InvalidNeedRM,
    766     /* 0xf7 */  IEMOP_X4(iemOp_InvalidNeedRM),
     840    /* 0xf5 */  iemOp_bzhi_Gy_Ey_By,        iemOp_InvalidNeedRM,        iemOp_pext_Gy_By_Ey,        iemOp_pdep_Gy_By_Ey,
     841    /* 0xf6 */  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_mulx_By_Gy_rDX_Ey,
     842    /* 0xf7 */  iemOp_bextr_Gy_Ey_By,       iemOp_shlx_Gy_Ey_By,        iemOp_sarx_Gy_Ey_By,        iemOp_shrx_Gy_Ey_By,
    767843    /* 0xf8 */  IEMOP_X4(iemOp_InvalidNeedRM),
    768844    /* 0xf9 */  IEMOP_X4(iemOp_InvalidNeedRM),
     
    774850    /* 0xff */  IEMOP_X4(iemOp_InvalidNeedRM),
    775851};
    776 AssertCompile(RT_ELEMENTS(g_apfnThreeByte0f38) == 1024);
     852AssertCompile(RT_ELEMENTS(g_apfnVexMap2) == 1024);
    777853
    778854/** @} */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsVexMap3.cpp.h

    r66474 r66479  
    33 * IEM - Instruction Decoding and Emulation, 0x0f 0x3a map.
    44 *
    5  * @remarks IEMAllInstructionsVexMap3.cpp.h is a VEX mirror of this file.
     5 * @remarks IEMAllInstructionsThree0f3a.cpp.h is a VEX mirror of this file.
    66 *          Any update here is likely needed in that file too.
    77 */
     
    2020
    2121
    22 /** @name Three byte opcodes with first two bytes 0x0f 0x3a
     22/** @name VEX Opcode Map 3
    2323 * @{
    2424 */
    2525
    26 /** Opcode 0x66 0x0f 0x00. */
    27 FNIEMOP_STUB(iemOp_permq_Vqq_Wqq_Ib);
    28 /** Opcode 0x66 0x0f 0x01. */
    29 FNIEMOP_STUB(iemOp_permqd_Vqq_Wqq_Ib);
    30 /** Opcode 0x66 0x0f 0x02. */
    31 FNIEMOP_STUB(iemOp_pblendd_Vx_Wx_Ib);
    32 /*  Opcode 0x66 0x0f 0x03 - invalid */
    33 /** Opcode 0x66 0x0f 0x04. */
    34 FNIEMOP_STUB(iemOp_permilps_Vx_Wx_Ib);
    35 /** Opcode 0x66 0x0f 0x05. */
    36 FNIEMOP_STUB(iemOp_permilpd_Vx_Wx_Ib);
    37 /*  Opcode 0x66 0x0f 0x06 - invalid (vex only) */
    38 /*  Opcode 0x66 0x0f 0x07 - invalid */
    39 /** Opcode 0x66 0x0f 0x08. */
    40 FNIEMOP_STUB(iemOp_roundps_Vx_Wx_Ib);
    41 /** Opcode 0x66 0x0f 0x09. */
    42 FNIEMOP_STUB(iemOp_roundpd_Vx_Wx_Ib);
    43 /** Opcode 0x66 0x0f 0x0a. */
    44 FNIEMOP_STUB(iemOp_roundss_Vss_Wss_Ib);
    45 /** Opcode 0x66 0x0f 0x0b. */
    46 FNIEMOP_STUB(iemOp_roundsd_Vsd_Wsd_Ib);
    47 /** Opcode 0x66 0x0f 0x0c. */
    48 FNIEMOP_STUB(iemOp_blendps_Vx_Wx_Ib);
    49 /** Opcode 0x66 0x0f 0x0d. */
    50 FNIEMOP_STUB(iemOp_blendpd_Vx_Wx_Ib);
    51 /** Opcode 0x66 0x0f 0x0e. */
    52 FNIEMOP_STUB(iemOp_blendw_Vx_Wx_Ib);
    53 /** Opcode      0x0f 0x0f. */
    54 FNIEMOP_STUB(iemOp_palignr_Pq_Qq_Ib);
    55 /** Opcode 0x66 0x0f 0x0f. */
    56 FNIEMOP_STUB(iemOp_palignr_Vx_Wx_Ib);
    57 
    58 
    59 /*  Opcode 0x66 0x0f 0x10 - invalid */
    60 /*  Opcode 0x66 0x0f 0x11 - invalid */
    61 /*  Opcode 0x66 0x0f 0x12 - invalid */
    62 /*  Opcode 0x66 0x0f 0x13 - invalid */
    63 /** Opcode 0x66 0x0f 0x14. */
    64 FNIEMOP_STUB(iemOp_pextrb_RdMb_Vdq_Ib);
    65 /** Opcode 0x66 0x0f 0x15. */
    66 FNIEMOP_STUB(iemOp_pextrw_RdMw_Vdq_Ib);
    67 /** Opcode 0x66 0x0f 0x16. */
    68 FNIEMOP_STUB(iemOp_pextrd_q_RdMw_Vdq_Ib);
    69 /** Opcode 0x66 0x0f 0x17. */
    70 FNIEMOP_STUB(iemOp_extractps_Ed_Vdq_Ib);
    71 /*  Opcode 0x66 0x0f 0x18 - invalid (vex only). */
    72 /*  Opcode 0x66 0x0f 0x19 - invalid (vex only). */
    73 /*  Opcode 0x66 0x0f 0x1a - invalid */
    74 /*  Opcode 0x66 0x0f 0x1b - invalid */
    75 /*  Opcode 0x66 0x0f 0x1c - invalid */
    76 /*  Opcode 0x66 0x0f 0x1d - invalid (vex only). */
    77 /*  Opcode 0x66 0x0f 0x1e - invalid */
    78 /*  Opcode 0x66 0x0f 0x1f - invalid */
    79 
    80 
    81 /** Opcode 0x66 0x0f 0x20. */
    82 FNIEMOP_STUB(iemOp_pinsrb_Vdq_RyMb_Ib);
    83 /** Opcode 0x66 0x0f 0x21, */
    84 FNIEMOP_STUB(iemOp_insertps_Vdq_UdqMd_Ib);
    85 /** Opcode 0x66 0x0f 0x22. */
    86 FNIEMOP_STUB(iemOp_pinsrd_q_Vdq_Ey_Ib);
    87 /*  Opcode 0x66 0x0f 0x23 - invalid */
    88 /*  Opcode 0x66 0x0f 0x24 - invalid */
    89 /*  Opcode 0x66 0x0f 0x25 - invalid */
    90 /*  Opcode 0x66 0x0f 0x26 - invalid */
    91 /*  Opcode 0x66 0x0f 0x27 - invalid */
    92 /*  Opcode 0x66 0x0f 0x28 - invalid */
    93 /*  Opcode 0x66 0x0f 0x29 - invalid */
    94 /*  Opcode 0x66 0x0f 0x2a - invalid */
    95 /*  Opcode 0x66 0x0f 0x2b - invalid */
    96 /*  Opcode 0x66 0x0f 0x2c - invalid */
    97 /*  Opcode 0x66 0x0f 0x2d - invalid */
    98 /*  Opcode 0x66 0x0f 0x2e - invalid */
    99 /*  Opcode 0x66 0x0f 0x2f - invalid */
    100 
    101 
    102 /*  Opcode 0x66 0x0f 0x30 - invalid */
    103 /*  Opcode 0x66 0x0f 0x31 - invalid */
    104 /*  Opcode 0x66 0x0f 0x32 - invalid */
    105 /*  Opcode 0x66 0x0f 0x33 - invalid */
    106 /*  Opcode 0x66 0x0f 0x34 - invalid */
    107 /*  Opcode 0x66 0x0f 0x35 - invalid */
    108 /*  Opcode 0x66 0x0f 0x36 - invalid */
    109 /*  Opcode 0x66 0x0f 0x37 - invalid */
    110 /*  Opcode 0x66 0x0f 0x38 - invalid (vex only). */
    111 /*  Opcode 0x66 0x0f 0x39 - invalid (vex only). */
    112 /*  Opcode 0x66 0x0f 0x3a - invalid */
    113 /*  Opcode 0x66 0x0f 0x3b - invalid */
    114 /*  Opcode 0x66 0x0f 0x3c - invalid */
    115 /*  Opcode 0x66 0x0f 0x3d - invalid */
    116 /*  Opcode 0x66 0x0f 0x3e - invalid */
    117 /*  Opcode 0x66 0x0f 0x3f - invalid */
    118 
    119 
    120 /** Opcode 0x66 0x0f 0x40. */
    121 FNIEMOP_STUB(iemOp_dpps_Vx_Wx_Ib);
    122 /** Opcode 0x66 0x0f 0x41, */
    123 FNIEMOP_STUB(iemOp_dppd_Vdq_Wdq_Ib);
    124 /** Opcode 0x66 0x0f 0x42. */
    125 FNIEMOP_STUB(iemOp_mpsadbw_Vx_Wx_Ib);
    126 /*  Opcode 0x66 0x0f 0x43 - invalid */
    127 /** Opcode 0x66 0x0f 0x44. */
    128 FNIEMOP_STUB(iemOp_pclmulqdq_Vdq_Wdq_Ib);
    129 /*  Opcode 0x66 0x0f 0x45 - invalid */
    130 /*  Opcode 0x66 0x0f 0x46 - invalid (vex only)  */
    131 /*  Opcode 0x66 0x0f 0x47 - invalid */
    132 /*  Opcode 0x66 0x0f 0x48 - invalid */
    133 /*  Opcode 0x66 0x0f 0x49 - invalid */
    134 /*  Opcode 0x66 0x0f 0x4a - invalid (vex only). */
    135 /*  Opcode 0x66 0x0f 0x4b - invalid (vex only). */
    136 /*  Opcode 0x66 0x0f 0x4c - invalid (vex only). */
    137 /*  Opcode 0x66 0x0f 0x4d - invalid */
    138 /*  Opcode 0x66 0x0f 0x4e - invalid */
    139 /*  Opcode 0x66 0x0f 0x4f - invalid */
    140 
    141 
    142 /*  Opcode 0x66 0x0f 0x50 - invalid */
    143 /*  Opcode 0x66 0x0f 0x51 - invalid */
    144 /*  Opcode 0x66 0x0f 0x52 - invalid */
    145 /*  Opcode 0x66 0x0f 0x53 - invalid */
    146 /*  Opcode 0x66 0x0f 0x54 - invalid */
    147 /*  Opcode 0x66 0x0f 0x55 - invalid */
    148 /*  Opcode 0x66 0x0f 0x56 - invalid */
    149 /*  Opcode 0x66 0x0f 0x57 - invalid */
    150 /*  Opcode 0x66 0x0f 0x58 - invalid */
    151 /*  Opcode 0x66 0x0f 0x59 - invalid */
    152 /*  Opcode 0x66 0x0f 0x5a - invalid */
    153 /*  Opcode 0x66 0x0f 0x5b - invalid */
    154 /*  Opcode 0x66 0x0f 0x5c - invalid */
    155 /*  Opcode 0x66 0x0f 0x5d - invalid */
    156 /*  Opcode 0x66 0x0f 0x5e - invalid */
    157 /*  Opcode 0x66 0x0f 0x5f - invalid */
    158 
    159 
    160 /** Opcode 0x66 0x0f 0x60. */
    161 FNIEMOP_STUB(iemOp_pcmpestrm_Vdq_Wdq_Ib);
    162 /** Opcode 0x66 0x0f 0x61, */
    163 FNIEMOP_STUB(iemOp_pcmpestri_Vdq_Wdq_Ib);
    164 /** Opcode 0x66 0x0f 0x62. */
    165 FNIEMOP_STUB(iemOp_pcmpistrm_Vdq_Wdq_Ib);
    166 /** Opcode 0x66 0x0f 0x63*/
    167 FNIEMOP_STUB(iemOp_pcmpistri_Vdq_Wdq_Ib);
    168 /*  Opcode 0x66 0x0f 0x64 - invalid */
    169 /*  Opcode 0x66 0x0f 0x65 - invalid */
    170 /*  Opcode 0x66 0x0f 0x66 - invalid */
    171 /*  Opcode 0x66 0x0f 0x67 - invalid */
    172 /*  Opcode 0x66 0x0f 0x68 - invalid */
    173 /*  Opcode 0x66 0x0f 0x69 - invalid */
    174 /*  Opcode 0x66 0x0f 0x6a - invalid */
    175 /*  Opcode 0x66 0x0f 0x6b - invalid */
    176 /*  Opcode 0x66 0x0f 0x6c - invalid */
    177 /*  Opcode 0x66 0x0f 0x6d - invalid */
    178 /*  Opcode 0x66 0x0f 0x6e - invalid */
    179 /*  Opcode 0x66 0x0f 0x6f - invalid */
    180 
    181 /*  Opcodes 0x0f 0x70 thru 0x0f 0xb0 are unused.  */
     26/** Opcode VEX.66.0F3A 0x00. */
     27FNIEMOP_STUB(iemOp_vpermq_Vqq_Wqq_Ib);
     28/** Opcode VEX.66.0F3A 0x01. */
     29FNIEMOP_STUB(iemOp_vpermqd_Vqq_Wqq_Ib);
     30/** Opcode VEX.66.0F3A 0x02. */
     31FNIEMOP_STUB(iemOp_vpblendd_Vx_Wx_Ib);
     32/*  Opcode VEX.66.0F3A 0x03 - invalid */
     33/** Opcode VEX.66.0F3A 0x04. */
     34FNIEMOP_STUB(iemOp_vpermilps_Vx_Wx_Ib);
     35/** Opcode VEX.66.0F3A 0x05. */
     36FNIEMOP_STUB(iemOp_vpermilpd_Vx_Wx_Ib);
     37/** Opcode VEX.66.0F3A 0x06 (vex only) */
     38FNIEMOP_STUB(iemOp_vperm2f128_Vqq_Hqq_Wqq_Ib);
     39/*  Opcode VEX.66.0F3A 0x07 - invalid */
     40/** Opcode VEX.66.0F3A 0x08. */
     41FNIEMOP_STUB(iemOp_vroundps_Vx_Wx_Ib);
     42/** Opcode VEX.66.0F3A 0x09. */
     43FNIEMOP_STUB(iemOp_vroundpd_Vx_Wx_Ib);
     44/** Opcode VEX.66.0F3A 0x0a. */
     45FNIEMOP_STUB(iemOp_vroundss_Vss_Wss_Ib);
     46/** Opcode VEX.66.0F3A 0x0b. */
     47FNIEMOP_STUB(iemOp_vroundsd_Vsd_Wsd_Ib);
     48/** Opcode VEX.66.0F3A 0x0c. */
     49FNIEMOP_STUB(iemOp_vblendps_Vx_Hx_Wx_Ib);
     50/** Opcode VEX.66.0F3A 0x0d. */
     51FNIEMOP_STUB(iemOp_vblendpd_Vx_Hx_Wx_Ib);
     52/** Opcode VEX.66.0F3A 0x0e. */
     53FNIEMOP_STUB(iemOp_vblendw_Vx_Hx_Wx_Ib);
     54/** Opcode VEX.0F3A 0x0f - invalid. */
     55/** Opcode VEX.66.0F3A 0x0f. */
     56FNIEMOP_STUB(iemOp_vpalignr_Vx_Hx_Wx_Ib);
     57
     58
     59/*  Opcode VEX.66.0F3A 0x10 - invalid */
     60/*  Opcode VEX.66.0F3A 0x11 - invalid */
     61/*  Opcode VEX.66.0F3A 0x12 - invalid */
     62/*  Opcode VEX.66.0F3A 0x13 - invalid */
     63/** Opcode VEX.66.0F3A 0x14. */
     64FNIEMOP_STUB(iemOp_vpextrb_RdMb_Vdq_Ib);
     65/** Opcode VEX.66.0F3A 0x15. */
     66FNIEMOP_STUB(iemOp_vpextrw_RdMw_Vdq_Ib);
     67/** Opcode VEX.66.0F3A 0x16. */
     68FNIEMOP_STUB(iemOp_vpextrd_q_RdMw_Vdq_Ib);
     69/** Opcode VEX.66.0F3A 0x17. */
     70FNIEMOP_STUB(iemOp_vextractps_Ed_Vdq_Ib);
     71/** Opcode VEX.66.0F3A 0x18 (vex only). */
     72FNIEMOP_STUB(iemOp_vinsertf128_Vqq_Hqq_Wqq_Ib);
     73/** Opcode VEX.66.0F3A 0x19 (vex only). */
     74FNIEMOP_STUB(iemOp_vextractf128_Wdq_Vqq_Ib);
     75/*  Opcode VEX.66.0F3A 0x1a - invalid */
     76/*  Opcode VEX.66.0F3A 0x1b - invalid */
     77/*  Opcode VEX.66.0F3A 0x1c - invalid */
     78/** Opcode VEX.66.0F3A 0x1d (vex only). */
     79FNIEMOP_STUB(iemOp_vcvtps2ph_Wx_Vx_Ib);
     80/*  Opcode VEX.66.0F3A 0x1e - invalid */
     81/*  Opcode VEX.66.0F3A 0x1f - invalid */
     82
     83
     84/** Opcode VEX.66.0F3A 0x20. */
     85FNIEMOP_STUB(iemOp_vpinsrb_Vdq_Hdq_RyMb_Ib);
     86/** Opcode VEX.66.0F3A 0x21, */
     87FNIEMOP_STUB(iemOp_vinsertps_Vdq_Hdq_UdqMd_Ib);
     88/** Opcode VEX.66.0F3A 0x22. */
     89FNIEMOP_STUB(iemOp_vpinsrd_q_Vdq_Hdq_Ey_Ib);
     90/*  Opcode VEX.66.0F3A 0x23 - invalid */
     91/*  Opcode VEX.66.0F3A 0x24 - invalid */
     92/*  Opcode VEX.66.0F3A 0x25 - invalid */
     93/*  Opcode VEX.66.0F3A 0x26 - invalid */
     94/*  Opcode VEX.66.0F3A 0x27 - invalid */
     95/*  Opcode VEX.66.0F3A 0x28 - invalid */
     96/*  Opcode VEX.66.0F3A 0x29 - invalid */
     97/*  Opcode VEX.66.0F3A 0x2a - invalid */
     98/*  Opcode VEX.66.0F3A 0x2b - invalid */
     99/*  Opcode VEX.66.0F3A 0x2c - invalid */
     100/*  Opcode VEX.66.0F3A 0x2d - invalid */
     101/*  Opcode VEX.66.0F3A 0x2e - invalid */
     102/*  Opcode VEX.66.0F3A 0x2f - invalid */
     103
     104
     105/*  Opcode VEX.66.0F3A 0x30 - invalid */
     106/*  Opcode VEX.66.0F3A 0x31 - invalid */
     107/*  Opcode VEX.66.0F3A 0x32 - invalid */
     108/*  Opcode VEX.66.0F3A 0x33 - invalid */
     109/*  Opcode VEX.66.0F3A 0x34 - invalid */
     110/*  Opcode VEX.66.0F3A 0x35 - invalid */
     111/*  Opcode VEX.66.0F3A 0x36 - invalid */
     112/*  Opcode VEX.66.0F3A 0x37 - invalid */
     113/** Opcode VEX.66.0F3A 0x38 (vex only). */
     114FNIEMOP_STUB(iemOp_vinserti128_Vqq_Hqq_Wqq_Ib);
     115/** Opcode VEX.66.0F3A 0x39 (vex only). */
     116FNIEMOP_STUB(iemOp_vextracti128_Wdq_Vqq_Ib);
     117/*  Opcode VEX.66.0F3A 0x3a - invalid */
     118/*  Opcode VEX.66.0F3A 0x3b - invalid */
     119/*  Opcode VEX.66.0F3A 0x3c - invalid */
     120/*  Opcode VEX.66.0F3A 0x3d - invalid */
     121/*  Opcode VEX.66.0F3A 0x3e - invalid */
     122/*  Opcode VEX.66.0F3A 0x3f - invalid */
     123
     124
     125/** Opcode VEX.66.0F3A 0x40. */
     126FNIEMOP_STUB(iemOp_vdpps_Vx_Hx_Wx_Ib);
     127/** Opcode VEX.66.0F3A 0x41, */
     128FNIEMOP_STUB(iemOp_vdppd_Vdq_Hdq_Wdq_Ib);
     129/** Opcode VEX.66.0F3A 0x42. */
     130FNIEMOP_STUB(iemOp_vmpsadbw_Vx_Hx_Wx_Ib);
     131/*  Opcode VEX.66.0F3A 0x43 - invalid */
     132/** Opcode VEX.66.0F3A 0x44. */
     133FNIEMOP_STUB(iemOp_vpclmulqdq_Vdq_Hdq_Wdq_Ib);
     134/*  Opcode VEX.66.0F3A 0x45 - invalid */
     135/** Opcode VEX.66.0F3A 0x46 (vex only)  */
     136FNIEMOP_STUB(iemOp_vperm2i128_Vqq_Hqq_Wqq_Ib);
     137/*  Opcode VEX.66.0F3A 0x47 - invalid */
     138/** Opcode VEX.66.0F3A 0x48 (AMD tables only). */
     139FNIEMOP_STUB(iemOp_vperlmilzz2ps_Vx_Hx_Wp_Lx);
     140/** Opcode VEX.66.0F3A 0x49 (AMD tables only). */
     141FNIEMOP_STUB(iemOp_vperlmilzz2pd_Vx_Hx_Wp_Lx);
     142/** Opcode VEX.66.0F3A 0x4a (vex only). */
     143FNIEMOP_STUB(iemOp_vblendvps_Vx_Hx_Wx_Lx);
     144/** Opcode VEX.66.0F3A 0x4b (vex only). */
     145FNIEMOP_STUB(iemOp_vblendvpd_Vx_Hx_Wx_Lx);
     146/** Opcode VEX.66.0F3A 0x4c (vex only). */
     147FNIEMOP_STUB(iemOp_vpblendvb_Vx_Hx_Wx_Lx);
     148/*  Opcode VEX.66.0F3A 0x4d - invalid */
     149/*  Opcode VEX.66.0F3A 0x4e - invalid */
     150/*  Opcode VEX.66.0F3A 0x4f - invalid */
     151
     152
     153/*  Opcode VEX.66.0F3A 0x50 - invalid */
     154/*  Opcode VEX.66.0F3A 0x51 - invalid */
     155/*  Opcode VEX.66.0F3A 0x52 - invalid */
     156/*  Opcode VEX.66.0F3A 0x53 - invalid */
     157/*  Opcode VEX.66.0F3A 0x54 - invalid */
     158/*  Opcode VEX.66.0F3A 0x55 - invalid */
     159/*  Opcode VEX.66.0F3A 0x56 - invalid */
     160/*  Opcode VEX.66.0F3A 0x57 - invalid */
     161/*  Opcode VEX.66.0F3A 0x58 - invalid */
     162/*  Opcode VEX.66.0F3A 0x59 - invalid */
     163/*  Opcode VEX.66.0F3A 0x5a - invalid */
     164/*  Opcode VEX.66.0F3A 0x5b - invalid */
     165/** Opcode VEX.66.0F3A 0x5c (AMD tables only). */
     166FNIEMOP_STUB(iemOp_vfmaddsubps_Vx_Lx_Wx_Hx);
     167/** Opcode VEX.66.0F3A 0x5d (AMD tables only). */
     168FNIEMOP_STUB(iemOp_vfmaddsubpd_Vx_Lx_Wx_Hx);
     169/** Opcode VEX.66.0F3A 0x5e (AMD tables only). */
     170FNIEMOP_STUB(iemOp_vfmsubaddps_Vx_Lx_Wx_Hx);
     171/** Opcode VEX.66.0F3A 0x5f (AMD tables only). */
     172FNIEMOP_STUB(iemOp_vfmsubaddpd_Vx_Lx_Wx_Hx);
     173
     174
     175/** Opcode VEX.66.0F3A 0x60. */
     176FNIEMOP_STUB(iemOp_vpcmpestrm_Vdq_Wdq_Ib);
     177/** Opcode VEX.66.0F3A 0x61, */
     178FNIEMOP_STUB(iemOp_vpcmpestri_Vdq_Wdq_Ib);
     179/** Opcode VEX.66.0F3A 0x62. */
     180FNIEMOP_STUB(iemOp_vpcmpistrm_Vdq_Wdq_Ib);
     181/** Opcode VEX.66.0F3A 0x63*/
     182FNIEMOP_STUB(iemOp_vpcmpistri_Vdq_Wdq_Ib);
     183/*  Opcode VEX.66.0F3A 0x64 - invalid */
     184/*  Opcode VEX.66.0F3A 0x65 - invalid */
     185/*  Opcode VEX.66.0F3A 0x66 - invalid */
     186/*  Opcode VEX.66.0F3A 0x67 - invalid */
     187/** Opcode VEX.66.0F3A 0x68 (AMD tables only). */
     188FNIEMOP_STUB(iemOp_vfmaddps_Vx_Lx_Wx_Hx);
     189/** Opcode VEX.66.0F3A 0x69 (AMD tables only). */
     190FNIEMOP_STUB(iemOp_vfmaddpd_Vx_Lx_Wx_Hx);
     191/** Opcode VEX.66.0F3A 0x6a (AMD tables only). */
     192FNIEMOP_STUB(iemOp_vfmaddss_Vx_Lx_Wx_Hx);
     193/** Opcode VEX.66.0F3A 0x6b (AMD tables only). */
     194FNIEMOP_STUB(iemOp_vfmaddsd_Vx_Lx_Wx_Hx);
     195/** Opcode VEX.66.0F3A 0x6c (AMD tables only). */
     196FNIEMOP_STUB(iemOp_vfmsubps_Vx_Lx_Wx_Hx);
     197/** Opcode VEX.66.0F3A 0x6d (AMD tables only). */
     198FNIEMOP_STUB(iemOp_vfmsubpd_Vx_Lx_Wx_Hx);
     199/** Opcode VEX.66.0F3A 0x6e (AMD tables only). */
     200FNIEMOP_STUB(iemOp_vfmsubss_Vx_Lx_Wx_Hx);
     201/** Opcode VEX.66.0F3A 0x6f (AMD tables only). */
     202FNIEMOP_STUB(iemOp_vfmsubsd_Vx_Lx_Wx_Hx);
     203
     204/*  Opcode VEX.66.0F3A 0x70 - invalid */
     205/*  Opcode VEX.66.0F3A 0x71 - invalid */
     206/*  Opcode VEX.66.0F3A 0x72 - invalid */
     207/*  Opcode VEX.66.0F3A 0x73 - invalid */
     208/*  Opcode VEX.66.0F3A 0x74 - invalid */
     209/*  Opcode VEX.66.0F3A 0x75 - invalid */
     210/*  Opcode VEX.66.0F3A 0x76 - invalid */
     211/*  Opcode VEX.66.0F3A 0x77 - invalid */
     212/** Opcode VEX.66.0F3A 0x78 (AMD tables only). */
     213FNIEMOP_STUB(iemOp_vfnmaddps_Vx_Lx_Wx_Hx);
     214/** Opcode VEX.66.0F3A 0x79 (AMD tables only). */
     215FNIEMOP_STUB(iemOp_vfnmaddpd_Vx_Lx_Wx_Hx);
     216/** Opcode VEX.66.0F3A 0x7a (AMD tables only). */
     217FNIEMOP_STUB(iemOp_vfnmaddss_Vx_Lx_Wx_Hx);
     218/** Opcode VEX.66.0F3A 0x7b (AMD tables only). */
     219FNIEMOP_STUB(iemOp_vfnmaddsd_Vx_Lx_Wx_Hx);
     220/** Opcode VEX.66.0F3A 0x7c (AMD tables only). */
     221FNIEMOP_STUB(iemOp_vfnmsubps_Vx_Lx_Wx_Hx);
     222/** Opcode VEX.66.0F3A 0x7d (AMD tables only). */
     223FNIEMOP_STUB(iemOp_vfnmsubpd_Vx_Lx_Wx_Hx);
     224/** Opcode VEX.66.0F3A 0x7e (AMD tables only). */
     225FNIEMOP_STUB(iemOp_vfnmsubss_Vx_Lx_Wx_Hx);
     226/** Opcode VEX.66.0F3A 0x7f (AMD tables only). */
     227FNIEMOP_STUB(iemOp_vfnmsubsd_Vx_Lx_Wx_Hx);
     228
     229/*  Opcodes 0x0f 0x80 thru 0x0f 0xb0 are unused.  */
    182230
    183231
     
    195243/*  Opcode      0x0f 0xcb - invalid */
    196244/*  Opcode      0x0f 0xcc */
    197 FNIEMOP_STUB(iemOp_sha1rnds4_Vdq_Wdq_Ib);
     245FNIEMOP_STUB(iemOp_vsha1rnds4_Vdq_Wdq_Ib);
    198246/*  Opcode      0x0f 0xcd - invalid */
    199247/*  Opcode      0x0f 0xce - invalid */
     
    201249
    202250
    203 /*  Opcode 0x66 0x0f 0xd0 - invalid */
    204 /*  Opcode 0x66 0x0f 0xd1 - invalid */
    205 /*  Opcode 0x66 0x0f 0xd2 - invalid */
    206 /*  Opcode 0x66 0x0f 0xd3 - invalid */
    207 /*  Opcode 0x66 0x0f 0xd4 - invalid */
    208 /*  Opcode 0x66 0x0f 0xd5 - invalid */
    209 /*  Opcode 0x66 0x0f 0xd6 - invalid */
    210 /*  Opcode 0x66 0x0f 0xd7 - invalid */
    211 /*  Opcode 0x66 0x0f 0xd8 - invalid */
    212 /*  Opcode 0x66 0x0f 0xd9 - invalid */
    213 /*  Opcode 0x66 0x0f 0xda - invalid */
    214 /*  Opcode 0x66 0x0f 0xdb - invalid */
    215 /*  Opcode 0x66 0x0f 0xdc - invalid */
    216 /*  Opcode 0x66 0x0f 0xdd - invalid */
    217 /*  Opcode 0x66 0x0f 0xde - invalid */
    218 /*  Opcode 0x66 0x0f 0xdf - (aeskeygenassist). */
    219 FNIEMOP_STUB(iemOp_aeskeygen_Vdq_Wdq_Ib);
    220 
    221 
    222 /*  Opcode 0xf2 0x0f 0xf0 - invalid (vex only) */
     251/*  Opcode VEX.66.0F3A 0xd0 - invalid */
     252/*  Opcode VEX.66.0F3A 0xd1 - invalid */
     253/*  Opcode VEX.66.0F3A 0xd2 - invalid */
     254/*  Opcode VEX.66.0F3A 0xd3 - invalid */
     255/*  Opcode VEX.66.0F3A 0xd4 - invalid */
     256/*  Opcode VEX.66.0F3A 0xd5 - invalid */
     257/*  Opcode VEX.66.0F3A 0xd6 - invalid */
     258/*  Opcode VEX.66.0F3A 0xd7 - invalid */
     259/*  Opcode VEX.66.0F3A 0xd8 - invalid */
     260/*  Opcode VEX.66.0F3A 0xd9 - invalid */
     261/*  Opcode VEX.66.0F3A 0xda - invalid */
     262/*  Opcode VEX.66.0F3A 0xdb - invalid */
     263/*  Opcode VEX.66.0F3A 0xdc - invalid */
     264/*  Opcode VEX.66.0F3A 0xdd - invalid */
     265/*  Opcode VEX.66.0F3A 0xde - invalid */
     266/*  Opcode VEX.66.0F3A 0xdf - (aeskeygenassist). */
     267FNIEMOP_STUB(iemOp_vaeskeygen_Vdq_Wdq_Ib);
     268
     269
     270/*  Opcode VEX.F2.0F3A (vex only) */
     271FNIEMOP_STUB(iemOp_rorx_Gy_Ey_Ib);
    223272
    224273
    225274/**
    226  * Three byte opcode map, first two bytes are 0x0f 0x3a.
    227  * @sa      g_apfnVexMap2
     275 * VEX opcode map \#3.
     276 *
     277 * @sa      g_apfnThreeByte0f3a
    228278 */
    229 IEM_STATIC const PFNIEMOP g_apfnThreeByte0f3a[] =
     279IEM_STATIC const PFNIEMOP g_apfnVexMap3[] =
    230280{
    231281    /*          no prefix,                  066h prefix                 f3h prefix,                 f2h prefix */
    232     /* 0x00 */  iemOp_InvalidNeedRMImm8,    iemOp_permq_Vqq_Wqq_Ib,     iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    233     /* 0x01 */  iemOp_InvalidNeedRMImm8,    iemOp_permqd_Vqq_Wqq_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    234     /* 0x02 */  iemOp_InvalidNeedRMImm8,    iemOp_pblendd_Vx_Wx_Ib,     iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     282    /* 0x00 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermq_Vqq_Wqq_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     283    /* 0x01 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermqd_Vqq_Wqq_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     284    /* 0x02 */  iemOp_InvalidNeedRMImm8,    iemOp_vpblendd_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    235285    /* 0x03 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    236     /* 0x04 */  iemOp_InvalidNeedRMImm8,    iemOp_permilps_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    237     /* 0x05 */  iemOp_InvalidNeedRMImm8,    iemOp_permilpd_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    238     /* 0x06 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     286    /* 0x04 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermilps_Vx_Wx_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     287    /* 0x05 */  iemOp_InvalidNeedRMImm8,    iemOp_vpermilpd_Vx_Wx_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     288    /* 0x06 */  iemOp_InvalidNeedRMImm8,    iemOp_vperm2f128_Vqq_Hqq_Wqq_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    239289    /* 0x07 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    240     /* 0x08 */  iemOp_InvalidNeedRMImm8,    iemOp_roundps_Vx_Wx_Ib,     iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    241     /* 0x09 */  iemOp_InvalidNeedRMImm8,    iemOp_roundpd_Vx_Wx_Ib,     iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    242     /* 0x0a */  iemOp_InvalidNeedRMImm8,    iemOp_roundss_Vss_Wss_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    243     /* 0x0b */  iemOp_InvalidNeedRMImm8,    iemOp_roundsd_Vsd_Wsd_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    244     /* 0x0c */  iemOp_InvalidNeedRMImm8,    iemOp_blendps_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    245     /* 0x0d */  iemOp_InvalidNeedRMImm8,    iemOp_blendpd_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    246     /* 0x0e */  iemOp_InvalidNeedRMImm8,    iemOp_blendw_Vx_Wx_Ib,      iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    247     /* 0x0f */  iemOp_palignr_Pq_Qq_Ib,     iemOp_palignr_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     290    /* 0x08 */  iemOp_InvalidNeedRMImm8,    iemOp_vroundps_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     291    /* 0x09 */  iemOp_InvalidNeedRMImm8,    iemOp_vroundpd_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     292    /* 0x0a */  iemOp_InvalidNeedRMImm8,    iemOp_vroundss_Vss_Wss_Ib,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     293    /* 0x0b */  iemOp_InvalidNeedRMImm8,    iemOp_vroundsd_Vsd_Wsd_Ib,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     294    /* 0x0c */  iemOp_InvalidNeedRMImm8,    iemOp_vblendps_Vx_Hx_Wx_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     295    /* 0x0d */  iemOp_InvalidNeedRMImm8,    iemOp_vblendpd_Vx_Hx_Wx_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     296    /* 0x0e */  iemOp_InvalidNeedRMImm8,    iemOp_vblendw_Vx_Hx_Wx_Ib,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     297    /* 0x0f */  iemOp_InvalidNeedRMImm8,    iemOp_vpalignr_Vx_Hx_Wx_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    248298
    249299    /* 0x10 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    251301    /* 0x12 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    252302    /* 0x13 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    253     /* 0x14 */  iemOp_InvalidNeedRMImm8,    iemOp_pextrb_RdMb_Vdq_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    254     /* 0x15 */  iemOp_InvalidNeedRMImm8,    iemOp_pextrw_RdMw_Vdq_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    255     /* 0x16 */  iemOp_InvalidNeedRMImm8,    iemOp_pextrd_q_RdMw_Vdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    256     /* 0x17 */  iemOp_InvalidNeedRMImm8,    iemOp_extractps_Ed_Vdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    257     /* 0x18 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    258     /* 0x19 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     303    /* 0x14 */  iemOp_InvalidNeedRMImm8,    iemOp_vpextrb_RdMb_Vdq_Ib,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     304    /* 0x15 */  iemOp_InvalidNeedRMImm8,    iemOp_vpextrw_RdMw_Vdq_Ib,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     305    /* 0x16 */  iemOp_InvalidNeedRMImm8,    iemOp_vpextrd_q_RdMw_Vdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     306    /* 0x17 */  iemOp_InvalidNeedRMImm8,    iemOp_vextractps_Ed_Vdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     307    /* 0x18 */  iemOp_InvalidNeedRMImm8,    iemOp_vinsertf128_Vqq_Hqq_Wqq_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     308    /* 0x19 */  iemOp_InvalidNeedRMImm8,    iemOp_vextractf128_Wdq_Vqq_Ib, iemOp_InvalidNeedRMImm8,  iemOp_InvalidNeedRMImm8,
    259309    /* 0x1a */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    260310    /* 0x1b */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    261311    /* 0x1c */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    262     /* 0x1d */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     312    /* 0x1d */  iemOp_InvalidNeedRMImm8,    iemOp_vcvtps2ph_Wx_Vx_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    263313    /* 0x1e */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    264314    /* 0x1f */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    265315
    266     /* 0x20 */  iemOp_InvalidNeedRMImm8,    iemOp_pinsrb_Vdq_RyMb_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    267     /* 0x21 */  iemOp_InvalidNeedRMImm8,    iemOp_insertps_Vdq_UdqMd_Ib,iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    268     /* 0x22 */  iemOp_InvalidNeedRMImm8,    iemOp_pinsrd_q_Vdq_Ey_Ib,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     316    /* 0x20 */  iemOp_InvalidNeedRMImm8,    iemOp_vpinsrb_Vdq_Hdq_RyMb_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     317    /* 0x21 */  iemOp_InvalidNeedRMImm8,    iemOp_vinsertps_Vdq_Hdq_UdqMd_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     318    /* 0x22 */  iemOp_InvalidNeedRMImm8,    iemOp_vpinsrd_q_Vdq_Hdq_Ey_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    269319    /* 0x23 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    270320    /* 0x24 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    289339    /* 0x36 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    290340    /* 0x37 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    291     /* 0x38 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    292     /* 0x39 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     341    /* 0x38 */  iemOp_InvalidNeedRMImm8,    iemOp_vinserti128_Vqq_Hqq_Wqq_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     342    /* 0x39 */  iemOp_InvalidNeedRMImm8,    iemOp_vextracti128_Wdq_Vqq_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    293343    /* 0x3a */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    294344    /* 0x3b */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    298348    /* 0x3f */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    299349
    300     /* 0x40 */  iemOp_InvalidNeedRMImm8,    iemOp_dpps_Vx_Wx_Ib,        iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    301     /* 0x41 */  iemOp_InvalidNeedRMImm8,    iemOp_dppd_Vdq_Wdq_Ib,      iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    302     /* 0x42 */  iemOp_InvalidNeedRMImm8,    iemOp_mpsadbw_Vx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     350    /* 0x40 */  iemOp_InvalidNeedRMImm8,    iemOp_vdpps_Vx_Hx_Wx_Ib,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     351    /* 0x41 */  iemOp_InvalidNeedRMImm8,    iemOp_vdppd_Vdq_Hdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     352    /* 0x42 */  iemOp_InvalidNeedRMImm8,    iemOp_vmpsadbw_Vx_Hx_Wx_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    303353    /* 0x43 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    304     /* 0x44 */  iemOp_InvalidNeedRMImm8,    iemOp_pclmulqdq_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     354    /* 0x44 */  iemOp_InvalidNeedRMImm8,    iemOp_vpclmulqdq_Vdq_Hdq_Wdq_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    305355    /* 0x45 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    306     /* 0x46 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     356    /* 0x46 */  iemOp_InvalidNeedRMImm8,    iemOp_vperm2i128_Vqq_Hqq_Wqq_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    307357    /* 0x47 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    308     /* 0x48 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    309     /* 0x49 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    310     /* 0x4a */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    311     /* 0x4b */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    312     /* 0x4c */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     358    /* 0x48 */  iemOp_InvalidNeedRMImm8,    iemOp_vperlmilzz2ps_Vx_Hx_Wp_Lx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     359    /* 0x49 */  iemOp_InvalidNeedRMImm8,    iemOp_vperlmilzz2pd_Vx_Hx_Wp_Lx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     360    /* 0x4a */  iemOp_InvalidNeedRMImm8,    iemOp_vblendvps_Vx_Hx_Wx_Lx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     361    /* 0x4b */  iemOp_InvalidNeedRMImm8,    iemOp_vblendvpd_Vx_Hx_Wx_Lx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     362    /* 0x4c */  iemOp_InvalidNeedRMImm8,    iemOp_vpblendvb_Vx_Hx_Wx_Lx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
    313363    /* 0x4d */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    314364    /* 0x4e */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    327377    /* 0x5a */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    328378    /* 0x5b */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    329     /* 0x5c */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    330     /* 0x5d */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    331     /* 0x5e */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    332     /* 0x5f */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    333 
    334     /* 0x60 */  iemOp_InvalidNeedRMImm8,    iemOp_pcmpestrm_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    335     /* 0x61 */  iemOp_InvalidNeedRMImm8,    iemOp_pcmpestri_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    336     /* 0x62 */  iemOp_InvalidNeedRMImm8,    iemOp_pcmpistrm_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    337     /* 0x63 */  iemOp_InvalidNeedRMImm8,    iemOp_pcmpistri_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     379    /* 0x5c */  iemOp_InvalidNeedRMImm8,    iemOp_vfmaddsubps_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     380    /* 0x5d */  iemOp_InvalidNeedRMImm8,    iemOp_vfmaddsubpd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     381    /* 0x5e */  iemOp_InvalidNeedRMImm8,    iemOp_vfmsubaddps_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     382    /* 0x5f */  iemOp_InvalidNeedRMImm8,    iemOp_vfmsubaddpd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     383
     384    /* 0x60 */  iemOp_InvalidNeedRMImm8,    iemOp_vpcmpestrm_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     385    /* 0x61 */  iemOp_InvalidNeedRMImm8,    iemOp_vpcmpestri_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     386    /* 0x62 */  iemOp_InvalidNeedRMImm8,    iemOp_vpcmpistrm_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
     387    /* 0x63 */  iemOp_InvalidNeedRMImm8,    iemOp_vpcmpistri_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,
    338388    /* 0x64 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    339389    /* 0x65 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    340390    /* 0x66 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    341391    /* 0x67 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    342     /* 0x68 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    343     /* 0x69 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    344     /* 0x6a */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    345     /* 0x6b */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    346     /* 0x6c */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    347     /* 0x6d */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    348     /* 0x6e */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    349     /* 0x6f */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     392    /* 0x68 */  iemOp_InvalidNeedRMImm8,    iemOp_vfmaddps_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     393    /* 0x69 */  iemOp_InvalidNeedRMImm8,    iemOp_vfmaddpd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     394    /* 0x6a */  iemOp_InvalidNeedRMImm8,    iemOp_vfmaddss_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     395    /* 0x6b */  iemOp_InvalidNeedRMImm8,    iemOp_vfmaddsd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     396    /* 0x6c */  iemOp_InvalidNeedRMImm8,    iemOp_vfmsubps_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     397    /* 0x6d */  iemOp_InvalidNeedRMImm8,    iemOp_vfmsubpd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     398    /* 0x6e */  iemOp_InvalidNeedRMImm8,    iemOp_vfmsubss_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     399    /* 0x6f */  iemOp_InvalidNeedRMImm8,    iemOp_vfmsubsd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    350400
    351401    /* 0x70 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    357407    /* 0x76 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    358408    /* 0x77 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    359     /* 0x78 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    360     /* 0x79 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    361     /* 0x7a */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    362     /* 0x7b */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    363     /* 0x7c */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    364     /* 0x7d */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    365     /* 0x7e */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    366     /* 0x7f */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     409    /* 0x78 */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmaddps_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     410    /* 0x79 */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmaddpd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     411    /* 0x7a */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmaddss_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     412    /* 0x7b */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmaddsd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     413    /* 0x7c */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmsubps_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     414    /* 0x7d */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmsubpd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     415    /* 0x7e */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmsubss_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     416    /* 0x7f */  iemOp_InvalidNeedRMImm8,    iemOp_vfnmsubsd_Vx_Lx_Wx_Hx, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
    367417
    368418    /* 0x80 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    446496    /* 0xca */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    447497    /* 0xcb */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    448     /* 0xcc */  iemOp_sha1rnds4_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     498    /* 0xcc */  iemOp_vsha1rnds4_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    449499    /* 0xcd */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    450500    /* 0xce */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    466516    /* 0xdd */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    467517    /* 0xde */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    468     /* 0xdf */  iemOp_aeskeygen_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,   iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     518    /* 0xdf */  iemOp_vaeskeygen_Vdq_Wdq_Ib, iemOp_InvalidNeedRMImm8,  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
    469519
    470520    /* 0xe0 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    485535    /* 0xef */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    486536
    487     /* 0xf0 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     537    /* 0xf0 */  iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,    iemOp_rorx_Gy_Ey_Ib,
    488538    /* 0xf1 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    489539    /* 0xf2 */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
     
    502552    /* 0xff */  IEMOP_X4(iemOp_InvalidNeedRMImm8),
    503553};
    504 AssertCompile(RT_ELEMENTS(g_apfnThreeByte0f3a) == 1024);
     554AssertCompile(RT_ELEMENTS(g_apfnVexMap3) == 1024);
    505555
    506556/** @} */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette