VirtualBox

Changeset 65766 in vbox


Ignore:
Timestamp:
Feb 13, 2017 1:49:15 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
113486
Message:

IEM: VEX decoding updates.

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsOneByte.cpp.h

    r65764 r65766  
    35653565            pVCpu->iem.s.idxPrefix  = bXop2 & 0x3;
    35663566
    3567             /** @todo VEX: Just use new tables and decoders. */
     3567            /** @todo XOP: Just use new tables and decoders. */
    35683568            switch (bRm & 0x1f)
    35693569            {
     
    53265326                pVCpu->iem.s.idxPrefix  = bRm & 0x3;
    53275327
    5328                 /** @todo VEX: Just use new tables and decoders. */
    5329                 IEMOP_BITCH_ABOUT_STUB();
    5330                 return VERR_IEM_INSTR_NOT_IMPLEMENTED;
     5328                return FNIEMOP_CALL(g_apfnVexMap1[(uintptr_t)bOpcode * 4 + pVCpu->iem.s.idxPrefix]);
    53315329            }
     5330
    53325331            Log(("VEX2: Invalid prefix mix!\n"));
    53335332        }
     
    53835382            pVCpu->iem.s.idxPrefix  = bVex2 & 0x3;
    53845383
    5385             /** @todo VEX: Just use new tables and decoders. */
    53865384            switch (bRm & 0x1f)
    53875385            {
    53885386                case 1: /* 0x0f lead opcode byte. */
     5387                    return FNIEMOP_CALL(g_apfnVexMap1[(uintptr_t)bOpcode * 4 + pVCpu->iem.s.idxPrefix]);
     5388
     5389                case 2: /* 0x0f 0x38 lead opcode bytes. */
     5390                    /** @todo VEX: Just use new tables and decoders. */
    53895391                    IEMOP_BITCH_ABOUT_STUB();
    53905392                    return VERR_IEM_INSTR_NOT_IMPLEMENTED;
    53915393
    5392                 case 2: /* 0x0f 0x38 lead opcode bytes. */
    5393                     IEMOP_BITCH_ABOUT_STUB();
    5394                     return VERR_IEM_INSTR_NOT_IMPLEMENTED;
    5395 
    53965394                case 3: /* 0x0f 0x3a lead opcode bytes. */
     5395                    /** @todo VEX: Just use new tables and decoders. */
    53975396                    IEMOP_BITCH_ABOUT_STUB();
    53985397                    return VERR_IEM_INSTR_NOT_IMPLEMENTED;
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r65758 r65766  
    14631463
    14641464/** Opcode 0x0f 0x29. */
    1465 FNIEMOP_DEF(iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd)
     1465FNIEMOP_DEF(iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd) /** @todo split me */
    14661466{
    14671467    if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_OP))
     
    15251525
    15261526/** Opcode 0x0f 0x2b. */
    1527 FNIEMOP_DEF(iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd)
     1527FNIEMOP_DEF(iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd) /** @todo split me */
    15281528{
    15291529    if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_OP))
     
    75757575#define IEMOP_X4(a_fn) a_fn, a_fn, a_fn, a_fn
    75767576
     7577/**
     7578 * Two byte opcode map, first byte 0x0f.
     7579 *
     7580 * @remarks The g_apfnVexMap1 table is currently a subset of this one, so please
     7581 *          check if it needs updating as well when making changes.
     7582 */
    75777583IEM_STATIC const PFNIEMOP g_apfnTwoByteMap[] =
    75787584{
     
    76217627    /* 0x27 */  iemOp_Invalid,              iemOp_Invalid,              iemOp_Invalid,              iemOp_Invalid,
    76227628    /* 0x28 */  iemOp_vmovaps_Vps_Wps,      iemOp_vmovapd_Vpd_Wpd,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
    7623     /* 0x29 */  iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd, iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd, iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd, iemOp_InvalidNeedRM,
     7629    /* 0x29 */  iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd, iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,  /** @todo split me */
    76247630    /* 0x2a */  iemOp_cvtpi2ps_Vps_Qpi,     iemOp_cvtpi2pd_Vpd_Qpi,     iemOp_vcvtsi2ss_Vss_Hss_Ey, iemOp_vcvtsi2sd_Vsd_Hsd_Ey,
    7625     /* 0x2b */  iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd, iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd,     iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,
     7631    /* 0x2b */  iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd, iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd,     iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, /** @todo split me */
    76267632    /* 0x2c */  iemOp_cvttps2pi_Ppi_Wps,    iemOp_cvttpd2pi_Ppi_Wpd,    iemOp_vcvttss2si_Gy_Wss,    iemOp_vcvttsd2si_Gy_Wsd,
    76277633    /* 0x2d */  iemOp_cvtps2pi_Ppi_Wps,     iemOp_cvtpd2pi_Qpi_Wpd,     iemOp_vcvtss2si_Gy_Wss,     iemOp_vcvtsd2si_Gy_Wsd,
     
    78527858};
    78537859AssertCompile(RT_ELEMENTS(g_apfnTwoByteMap) == 1024);
     7860
     7861
     7862/**
     7863 * VEX opcode map \#1.
     7864 *
     7865 * @remarks This is (currently) a subset of g_apfnTwoByteMap, so please check if
     7866 *          it it needs updating too when making changes.
     7867 */
     7868IEM_STATIC const PFNIEMOP g_apfnVexMap1[] =
     7869{
     7870    /*          no prefix,                  066h prefix                 f3h prefix,                 f2h prefix */
     7871    /* 0x00 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7872    /* 0x01 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7873    /* 0x02 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7874    /* 0x03 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7875    /* 0x04 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7876    /* 0x05 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7877    /* 0x06 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7878    /* 0x07 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7879    /* 0x08 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7880    /* 0x09 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7881    /* 0x0a */  IEMOP_X4(iemOp_InvalidNeedRM),
     7882    /* 0x0b */  IEMOP_X4(iemOp_InvalidNeedRM),
     7883    /* 0x0c */  IEMOP_X4(iemOp_InvalidNeedRM),
     7884    /* 0x0d */  IEMOP_X4(iemOp_InvalidNeedRM),
     7885    /* 0x0e */  IEMOP_X4(iemOp_InvalidNeedRM),
     7886    /* 0x0f */  IEMOP_X4(iemOp_InvalidNeedRM),
     7887
     7888    /* 0x10 */  iemOp_vmovups_Vps_Wps,      iemOp_vmovupd_Vpd_Wpd,      iemOp_vmovss_Vx_Hx_Wss,     iemOp_vmovsd_Vx_Hx_Wsd,
     7889    /* 0x11 */  iemOp_vmovups_Wps_Vps,      iemOp_vmovupd_Wpd_Vpd,      iemOp_vmovss_Wss_Hx_Vss,    iemOp_vmovsd_Wsd_Hx_Vsd,
     7890    /* 0x12 */  iemOp_vmovlps_Vq_Hq_Mq__vmovhlps, iemOp_vmovlpd_Vq_Hq_Mq, iemOp_vmovsldup_Vx_Wx,    iemOp_vmovddup_Vx_Wx,
     7891    /* 0x13 */  iemOp_vmovlps_Mq_Vq,        iemOp_vmovlpd_Mq_Vq,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7892    /* 0x14 */  iemOp_vunpcklps_Vx_Hx_Wx,   iemOp_vunpcklpd_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7893    /* 0x15 */  iemOp_vunpckhps_Vx_Hx_Wx,   iemOp_vunpckhpd_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7894    /* 0x16 */  iemOp_vmovhpsv1_Vdq_Hq_Mq__vmovlhps_Vdq_Hq_Uq, iemOp_vmovhpdv1_Vdq_Hq_Mq, iemOp_vmovshdup_Vx_Wx, iemOp_InvalidNeedRM,
     7895    /* 0x17 */  iemOp_vmovhpsv1_Mq_Vq,      iemOp_vmovhpdv1_Mq_Vq,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7896    /* 0x18 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7897    /* 0x19 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7898    /* 0x1a */  IEMOP_X4(iemOp_InvalidNeedRM),
     7899    /* 0x1b */  IEMOP_X4(iemOp_InvalidNeedRM),
     7900    /* 0x1c */  IEMOP_X4(iemOp_InvalidNeedRM),
     7901    /* 0x1d */  IEMOP_X4(iemOp_InvalidNeedRM),
     7902    /* 0x1e */  IEMOP_X4(iemOp_InvalidNeedRM),
     7903    /* 0x1f */  IEMOP_X4(iemOp_InvalidNeedRM),
     7904
     7905    /* 0x20 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7906    /* 0x21 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7907    /* 0x22 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7908    /* 0x23 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7909    /* 0x24 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7910    /* 0x25 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7911    /* 0x26 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7912    /* 0x27 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7913    /* 0x28 */  iemOp_vmovaps_Vps_Wps,      iemOp_vmovapd_Vpd_Wpd,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7914    /* 0x29 */  iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd, iemOp_movaps_Wps_Vps__movapd_Wpd_Vpd, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,  /** @todo split me */
     7915    /* 0x2a */  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_vcvtsi2ss_Vss_Hss_Ey, iemOp_vcvtsi2sd_Vsd_Hsd_Ey,
     7916    /* 0x2b */  iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd, iemOp_movntps_Mps_Vps__movntpd_Mpd_Vpd,     iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, /** @todo split me */
     7917    /* 0x2c */  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_vcvttss2si_Gy_Wss,    iemOp_vcvttsd2si_Gy_Wsd,
     7918    /* 0x2d */  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_vcvtss2si_Gy_Wss,     iemOp_vcvtsd2si_Gy_Wsd,
     7919    /* 0x2e */  iemOp_vucomiss_Vss_Wss,     iemOp_vucomisd_Vsd_Wsd,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7920    /* 0x2f */  iemOp_vcomiss_Vss_Wss,      iemOp_vcomisd_Vsd_Wsd,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7921
     7922    /* 0x30 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7923    /* 0x31 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7924    /* 0x32 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7925    /* 0x33 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7926    /* 0x34 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7927    /* 0x35 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7928    /* 0x36 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7929    /* 0x37 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7930    /* 0x38 */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7931    /* 0x39 */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7932    /* 0x3a */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7933    /* 0x3b */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7934    /* 0x3c */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7935    /* 0x3d */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7936    /* 0x3e */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7937    /* 0x3f */  IEMOP_X4(iemOp_InvalidNeedRM),  /** @todo check that there is no escape table stuff here */
     7938
     7939    /* 0x40 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7940    /* 0x41 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7941    /* 0x42 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7942    /* 0x43 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7943    /* 0x44 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7944    /* 0x45 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7945    /* 0x46 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7946    /* 0x47 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7947    /* 0x48 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7948    /* 0x49 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7949    /* 0x4a */  IEMOP_X4(iemOp_InvalidNeedRM),
     7950    /* 0x4b */  IEMOP_X4(iemOp_InvalidNeedRM),
     7951    /* 0x4c */  IEMOP_X4(iemOp_InvalidNeedRM),
     7952    /* 0x4d */  IEMOP_X4(iemOp_InvalidNeedRM),
     7953    /* 0x4e */  IEMOP_X4(iemOp_InvalidNeedRM),
     7954    /* 0x4f */  IEMOP_X4(iemOp_InvalidNeedRM),
     7955
     7956    /* 0x50 */  iemOp_vmovmskps_Gy_Ups,     iemOp_vmovmskpd_Gy_Upd,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7957    /* 0x51 */  iemOp_vsqrtps_Vps_Wps,      iemOp_vsqrtpd_Vpd_Wpd,      iemOp_vsqrtss_Vss_Hss_Wss,  iemOp_vsqrtsd_Vsd_Hsd_Wsd,
     7958    /* 0x52 */  iemOp_vrsqrtps_Vps_Wps,     iemOp_InvalidNeedRM,        iemOp_vrsqrtss_Vss_Hss_Wss, iemOp_InvalidNeedRM,
     7959    /* 0x53 */  iemOp_vrcpps_Vps_Wps,       iemOp_InvalidNeedRM,        iemOp_vrcpss_Vss_Hss_Wss,   iemOp_InvalidNeedRM,
     7960    /* 0x54 */  iemOp_vandps_Vps_Hps_Wps,   iemOp_vandpd_Vpd_Hpd_Wpd,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7961    /* 0x55 */  iemOp_vandnps_Vps_Hps_Wps,  iemOp_vandnpd_Vpd_Hpd_Wpd,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7962    /* 0x56 */  iemOp_vorps_Vps_Hps_Wps,    iemOp_vorpd_Vpd_Hpd_Wpd,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7963    /* 0x57 */  iemOp_vxorps_Vps_Hps_Wps,   iemOp_vxorpd_Vpd_Hpd_Wpd,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7964    /* 0x58 */  iemOp_vaddps_Vps_Hps_Wps,   iemOp_vaddpd_Vpd_Hpd_Wpd,   iemOp_vaddss_Vss_Hss_Wss,   iemOp_vaddsd_Vsd_Hsd_Wsd,
     7965    /* 0x59 */  iemOp_vmulps_Vps_Hps_Wps,   iemOp_vmulpd_Vpd_Hpd_Wpd,   iemOp_vmulss_Vss_Hss_Wss,   iemOp_vmulsd_Vsd_Hsd_Wsd,
     7966    /* 0x5a */  iemOp_vcvtps2pd_Vpd_Wps,    iemOp_vcvtpd2ps_Vps_Wpd,    iemOp_vcvtss2sd_Vsd_Hx_Wss, iemOp_vcvtsd2ss_Vss_Hx_Wsd,
     7967    /* 0x5b */  iemOp_vcvtdq2ps_Vps_Wdq,    iemOp_vcvtps2dq_Vdq_Wps,    iemOp_vcvttps2dq_Vdq_Wps,   iemOp_InvalidNeedRM,
     7968    /* 0x5c */  iemOp_vsubps_Vps_Hps_Wps,   iemOp_vsubpd_Vpd_Hpd_Wpd,   iemOp_vsubss_Vss_Hss_Wss,   iemOp_vsubsd_Vsd_Hsd_Wsd,
     7969    /* 0x5d */  iemOp_vminps_Vps_Hps_Wps,   iemOp_vminpd_Vpd_Hpd_Wpd,   iemOp_vminss_Vss_Hss_Wss,   iemOp_vminsd_Vsd_Hsd_Wsd,
     7970    /* 0x5e */  iemOp_vdivps_Vps_Hps_Wps,   iemOp_vdivpd_Vpd_Hpd_Wpd,   iemOp_vdivss_Vss_Hss_Wss,   iemOp_vdivsd_Vsd_Hsd_Wsd,
     7971    /* 0x5f */  iemOp_vmaxps_Vps_Hps_Wps,   iemOp_vmaxpd_Vpd_Hpd_Wpd,   iemOp_vmaxss_Vss_Hss_Wss,   iemOp_vmaxsd_Vsd_Hsd_Wsd,
     7972
     7973    /* 0x60 */  iemOp_InvalidNeedRM,        iemOp_vpunpcklbw_Vx_Hx_Wx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7974    /* 0x61 */  iemOp_InvalidNeedRM,        iemOp_vpunpcklwd_Vx_Hx_Wx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7975    /* 0x62 */  iemOp_InvalidNeedRM,        iemOp_vpunpckldq_Vx_Hx_Wx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7976    /* 0x63 */  iemOp_InvalidNeedRM,        iemOp_vpacksswb_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7977    /* 0x64 */  iemOp_InvalidNeedRM,        iemOp_vpcmpgtb_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7978    /* 0x65 */  iemOp_InvalidNeedRM,        iemOp_vpcmpgtw_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7979    /* 0x66 */  iemOp_InvalidNeedRM,        iemOp_vpcmpgtd_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7980    /* 0x67 */  iemOp_InvalidNeedRM,        iemOp_vpackuswb_Vx_Hx_W,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7981    /* 0x68 */  iemOp_InvalidNeedRM,        iemOp_vpunpckhbw_Vx_Hx_Wx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7982    /* 0x69 */  iemOp_InvalidNeedRM,        iemOp_vpunpckhwd_Vx_Hx_Wx,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7983    /* 0x6a */  iemOp_InvalidNeedRM,        iemOp_vpunpckhdq_Vx_Hx_W,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7984    /* 0x6b */  iemOp_InvalidNeedRM,        iemOp_vpackssdw_Vx_Hx_Wx,   iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7985    /* 0x6c */  iemOp_InvalidNeedRM,        iemOp_vpunpcklqdq_Vx_Hx_Wx, iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7986    /* 0x6d */  iemOp_InvalidNeedRM,        iemOp_vpunpckhqdq_Vx_Hx_W,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7987    /* 0x6e */  iemOp_InvalidNeedRM,        iemOp_vmovd_q_Vy_Ey,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7988    /* 0x6f */  iemOp_InvalidNeedRM,        iemOp_vmovdqa_Vx_Wx,        iemOp_vmovdqu_Vx_Wx,        iemOp_InvalidNeedRM,
     7989
     7990    /* 0x70 */  iemOp_InvalidNeedRM,        iemOp_vpshufd_Vx_Wx_Ib,     iemOp_vpshufhw_Vx_Wx_Ib,    iemOp_vpshuflw_Vx_Wx_Ib,
     7991    /* 0x71 */  iemOp_InvalidNeedRM,        iemOp_Grp12,                iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7992    /* 0x72 */  iemOp_InvalidNeedRM,        iemOp_Grp13,                iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7993    /* 0x73 */  iemOp_InvalidNeedRM,        iemOp_Grp14,                iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7994    /* 0x74 */  iemOp_pcmpeqb_Pq_Qq,        iemOp_vpcmpeqb_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7995    /* 0x75 */  iemOp_pcmpeqw_Pq_Qq,        iemOp_vpcmpeqw_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7996    /* 0x76 */  iemOp_pcmpeqd_Pq_Qq,        iemOp_vpcmpeqd_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     7997    /* 0x77 */  iemOp_emms__vzeroupperv__vzeroallv, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,       iemOp_InvalidNeedRM,
     7998    /* 0x78 */  IEMOP_X4(iemOp_InvalidNeedRM),
     7999    /* 0x79 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8000    /* 0x7a */  IEMOP_X4(iemOp_InvalidNeedRM),
     8001    /* 0x7b */  IEMOP_X4(iemOp_InvalidNeedRM),
     8002    /* 0x7c */  iemOp_InvalidNeedRM,        iemOp_vhaddpd_Vpd_Hpd_Wpd,  iemOp_InvalidNeedRM,        iemOp_vhaddps_Vps_Hps_Wps,
     8003    /* 0x7d */  iemOp_InvalidNeedRM,        iemOp_vhsubpd_Vpd_Hpd_Wpd,  iemOp_InvalidNeedRM,        iemOp_vhsubps_Vps_Hps_Wps,
     8004    /* 0x7e */  iemOp_InvalidNeedRM,        iemOp_vmovd_q_Ey_Vy,        iemOp_vmovq_Vq_Wq,          iemOp_InvalidNeedRM,
     8005    /* 0x7f */  iemOp_InvalidNeedRM,        iemOp_vmovdqa_Wx_Vx,        iemOp_vmovdqu_Wx_Vx,        iemOp_InvalidNeedRM,
     8006
     8007    /* 0x80 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8008    /* 0x81 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8009    /* 0x82 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8010    /* 0x83 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8011    /* 0x84 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8012    /* 0x85 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8013    /* 0x86 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8014    /* 0x87 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8015    /* 0x88 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8016    /* 0x89 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8017    /* 0x8a */  IEMOP_X4(iemOp_InvalidNeedRM),
     8018    /* 0x8b */  IEMOP_X4(iemOp_InvalidNeedRM),
     8019    /* 0x8c */  IEMOP_X4(iemOp_InvalidNeedRM),
     8020    /* 0x8d */  IEMOP_X4(iemOp_InvalidNeedRM),
     8021    /* 0x8e */  IEMOP_X4(iemOp_InvalidNeedRM),
     8022    /* 0x8f */  IEMOP_X4(iemOp_InvalidNeedRM),
     8023                IEMOP_X4(iemOp_InvalidNeedRM),
     8024    /* 0x90 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8025    /* 0x91 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8026    /* 0x92 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8027    /* 0x93 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8028    /* 0x94 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8029    /* 0x95 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8030    /* 0x96 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8031    /* 0x97 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8032    /* 0x98 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8033    /* 0x99 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8034    /* 0x9a */  IEMOP_X4(iemOp_InvalidNeedRM),
     8035    /* 0x9b */  IEMOP_X4(iemOp_InvalidNeedRM),
     8036    /* 0x9c */  IEMOP_X4(iemOp_InvalidNeedRM),
     8037    /* 0x9d */  IEMOP_X4(iemOp_InvalidNeedRM),
     8038    /* 0x9e */  IEMOP_X4(iemOp_InvalidNeedRM),
     8039    /* 0x9f */  IEMOP_X4(iemOp_InvalidNeedRM),
     8040
     8041    /* 0xa0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8042    /* 0xa1 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8043    /* 0xa2 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8044    /* 0xa3 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8045    /* 0xa4 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8046    /* 0xa5 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8047    /* 0xa6 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8048    /* 0xa7 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8049    /* 0xa8 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8050    /* 0xa9 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8051    /* 0xaa */  IEMOP_X4(iemOp_InvalidNeedRM),
     8052    /* 0xab */  IEMOP_X4(iemOp_InvalidNeedRM),
     8053    /* 0xac */  IEMOP_X4(iemOp_InvalidNeedRM),
     8054    /* 0xad */  IEMOP_X4(iemOp_InvalidNeedRM),
     8055    /* 0xae */  IEMOP_X4(iemOp_Grp15), /** @todo groups and vex */
     8056    /* 0xaf */  IEMOP_X4(iemOp_InvalidNeedRM),
     8057
     8058    /* 0xb0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8059    /* 0xb1 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8060    /* 0xb2 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8061    /* 0xb3 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8062    /* 0xb4 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8063    /* 0xb5 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8064    /* 0xb6 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8065    /* 0xb7 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8066    /* 0xb8 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8067    /* 0xb9 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8068    /* 0xba */  IEMOP_X4(iemOp_InvalidNeedRM),
     8069    /* 0xbb */  IEMOP_X4(iemOp_InvalidNeedRM),
     8070    /* 0xbc */  IEMOP_X4(iemOp_InvalidNeedRM),
     8071    /* 0xbd */  IEMOP_X4(iemOp_InvalidNeedRM),
     8072    /* 0xbe */  IEMOP_X4(iemOp_InvalidNeedRM),
     8073    /* 0xbf */  IEMOP_X4(iemOp_InvalidNeedRM),
     8074
     8075    /* 0xc0 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8076    /* 0xc1 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8077    /* 0xc2 */  iemOp_vcmpps_Vps_Hps_Wps_Ib, iemOp_vcmppd_Vpd_Hpd_Wpd_Ib, iemOp_vcmpss_Vss_Hss_Wss_Ib, iemOp_vcmpsd_Vsd_Hsd_Wsd_Ib,
     8078    /* 0xc3 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8079    /* 0xc4 */  iemOp_InvalidNeedRM,        iemOp_vpinsrw_Vdq_Hdq_RyMw_Ib, iemOp_InvalidNeedRMImm8, iemOp_InvalidNeedRMImm8,
     8080    /* 0xc5 */  iemOp_InvalidNeedRM,        iemOp_vpextrw_Gd_Udq_Ib,       iemOp_InvalidNeedRMImm8,    iemOp_InvalidNeedRMImm8,
     8081    /* 0xc6 */  iemOp_vshufps_Vps_Hps_Wps_Ib, iemOp_vshufpd_Vpd_Hpd_Wpd_Ib, iemOp_InvalidNeedRMImm8,iemOp_InvalidNeedRMImm8,
     8082    /* 0xc7 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8083    /* 0xc8 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8084    /* 0xc9 */  IEMOP_X4(iemOp_InvalidNeedRM),
     8085    /* 0xca */  IEMOP_X4(iemOp_InvalidNeedRM),
     8086    /* 0xcb */  IEMOP_X4(iemOp_InvalidNeedRM),
     8087    /* 0xcc */  IEMOP_X4(iemOp_InvalidNeedRM),
     8088    /* 0xcd */  IEMOP_X4(iemOp_InvalidNeedRM),
     8089    /* 0xce */  IEMOP_X4(iemOp_InvalidNeedRM),
     8090    /* 0xcf */  IEMOP_X4(iemOp_InvalidNeedRM),
     8091
     8092    /* 0xd0 */  iemOp_InvalidNeedRM,        iemOp_vaddsubpd_Vpd_Hpd_Wpd, iemOp_InvalidNeedRM,       iemOp_vaddsubps_Vps_Hps_Wps,
     8093    /* 0xd1 */  iemOp_InvalidNeedRM,        iemOp_vpsrlw_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8094    /* 0xd2 */  iemOp_InvalidNeedRM,        iemOp_vpsrld_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8095    /* 0xd3 */  iemOp_InvalidNeedRM,        iemOp_vpsrlq_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8096    /* 0xd4 */  iemOp_InvalidNeedRM,        iemOp_vpaddq_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8097    /* 0xd5 */  iemOp_InvalidNeedRM,        iemOp_vpmullw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8098    /* 0xd6 */  iemOp_InvalidNeedRM,        iemOp_vmovq_Wq_Vq,          iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8099    /* 0xd7 */  iemOp_InvalidNeedRM,        iemOp_vpmovmskb_Gd_Ux,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8100    /* 0xd8 */  iemOp_InvalidNeedRM,        iemOp_vpsubusb_Vx_Hx_W,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8101    /* 0xd9 */  iemOp_InvalidNeedRM,        iemOp_vpsubusw_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8102    /* 0xda */  iemOp_InvalidNeedRM,        iemOp_vpminub_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8103    /* 0xdb */  iemOp_InvalidNeedRM,        iemOp_vpand_Vx_Hx_W,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8104    /* 0xdc */  iemOp_InvalidNeedRM,        iemOp_vpaddusb_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8105    /* 0xdd */  iemOp_InvalidNeedRM,        iemOp_vpaddusw_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8106    /* 0xde */  iemOp_InvalidNeedRM,        iemOp_vpmaxub_Vx_Hx_W,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8107    /* 0xdf */  iemOp_InvalidNeedRM,        iemOp_vpandn_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8108
     8109    /* 0xe0 */  iemOp_InvalidNeedRM,        iemOp_vpavgb_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8110    /* 0xe1 */  iemOp_InvalidNeedRM,        iemOp_vpsraw_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8111    /* 0xe2 */  iemOp_InvalidNeedRM,        iemOp_vpsrad_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8112    /* 0xe3 */  iemOp_InvalidNeedRM,        iemOp_vpavgw_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8113    /* 0xe4 */  iemOp_InvalidNeedRM,        iemOp_vpmulhuw_Vx_Hx_W,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8114    /* 0xe5 */  iemOp_InvalidNeedRM,        iemOp_vpmulhw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8115    /* 0xe6 */  iemOp_InvalidNeedRM,        iemOp_vcvttpd2dq_Vx_Wpd,    iemOp_vcvtdq2pd_Vx_Wpd,     iemOp_vcvtpd2dq_Vx_Wpd,
     8116    /* 0xe7 */  iemOp_InvalidNeedRM,        iemOp_vmovntdq_Mx_Vx,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8117    /* 0xe8 */  iemOp_InvalidNeedRM,        iemOp_vpsubsb_Vx_Hx_W,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8118    /* 0xe9 */  iemOp_InvalidNeedRM,        iemOp_vpsubsw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8119    /* 0xea */  iemOp_InvalidNeedRM,        iemOp_vpminsw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8120    /* 0xeb */  iemOp_InvalidNeedRM,        iemOp_vpor_Vx_Hx_W,         iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8121    /* 0xec */  iemOp_InvalidNeedRM,        iemOp_vpaddsb_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8122    /* 0xed */  iemOp_InvalidNeedRM,        iemOp_vpaddsw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8123    /* 0xee */  iemOp_InvalidNeedRM,        iemOp_vpmaxsw_Vx_Hx_W,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8124    /* 0xef */  iemOp_InvalidNeedRM,        iemOp_vpxor_Vx_Hx_Wx,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8125
     8126    /* 0xf0 */  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,        iemOp_vlddqu_Vx_Mx,
     8127    /* 0xf1 */  iemOp_InvalidNeedRM,        iemOp_vpsllw_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8128    /* 0xf2 */  iemOp_InvalidNeedRM,        iemOp_vpslld_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8129    /* 0xf3 */  iemOp_InvalidNeedRM,        iemOp_vpsllq_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8130    /* 0xf4 */  iemOp_InvalidNeedRM,        iemOp_vpmuludq_Vx_Hx_W,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8131    /* 0xf5 */  iemOp_InvalidNeedRM,        iemOp_vpmaddwd_Vx_Hx_Wx,    iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8132    /* 0xf6 */  iemOp_InvalidNeedRM,        iemOp_vpsadbw_Vx_Hx_Wx,     iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8133    /* 0xf7 */  iemOp_InvalidNeedRM,        iemOp_vmaskmovdqu_Vdq_Udq,  iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8134    /* 0xf8 */  iemOp_InvalidNeedRM,        iemOp_vpsubb_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8135    /* 0xf9 */  iemOp_InvalidNeedRM,        iemOp_vpsubw_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8136    /* 0xfa */  iemOp_InvalidNeedRM,        iemOp_vpsubd_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8137    /* 0xfb */  iemOp_InvalidNeedRM,        iemOp_vpsubq_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8138    /* 0xfc */  iemOp_InvalidNeedRM,        iemOp_vpaddb_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8139    /* 0xfd */  iemOp_InvalidNeedRM,        iemOp_vpaddw_Vx_Hx_Wx,      iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8140    /* 0xfe */  iemOp_InvalidNeedRM,        iemOp_vpaddd_Vx_Hx_W,       iemOp_InvalidNeedRM,        iemOp_InvalidNeedRM,
     8141    /* 0xff */  IEMOP_X4(iemOp_ud0),
     8142};
     8143AssertCompile(RT_ELEMENTS(g_apfnTwoByteMap) == 1024);
    78548144/** @}  */
    78558145
Note: See TracChangeset for help on using the changeset viewer.

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