VirtualBox

Ignore:
Timestamp:
Mar 28, 2024 10:54:21 AM (8 months ago)
Author:
vboxsync
Message:

VMM/IEM: Convert assembly helpers for MMX/SSE instructions who not require the FPU state to use the optimized form, bugref:10641

File:
1 edited

Legend:

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

    r104076 r104103  
    3939 * Common worker for MMX instructions on the form:
    4040 *      pxxx    mm1, mm2/mem64
    41  */
    42 FNIEMOP_DEF_1(iemOpCommonMmx_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U64, pfnU64)
     41 *
     42 * The @a pfnU64 worker function takes no FXSAVE state, just the operands.
     43 */
     44FNIEMOP_DEF_1(iemOpCommonMmxOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)
    4345{
    4446    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     
    6062        IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    6163        IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));
    62         IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);
     64        IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    6365        IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    6466
     
    8688
    8789        IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    88         IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);
    89         IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    90 
    91         IEM_MC_ADVANCE_RIP_AND_FINISH();
    92         IEM_MC_END();
    93     }
    94 }
    95 
    96 
    97 /**
    98  * Common worker for MMX instructions on the form:
    99  *      pxxx    mm1, mm2/mem64
    100  *
    101  * Unlike iemOpCommonMmx_FullFull_To_Full, the @a pfnU64 worker function takes
    102  * no FXSAVE state, just the operands.
    103  */
    104 FNIEMOP_DEF_1(iemOpCommonMmxOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)
    105 {
    106     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    107     if (IEM_IS_MODRM_REG_MODE(bRm))
    108     {
    109         /*
    110          * MMX, MMX.
    111          */
    112         /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    113         /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    114         IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);
    115         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    116         IEM_MC_ARG(uint64_t *,          pDst, 0);
    117         IEM_MC_ARG(uint64_t const *,    pSrc, 1);
    118         IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    119         IEM_MC_PREPARE_FPU_USAGE();
    120         IEM_MC_FPU_TO_MMX_MODE();
    121 
    122         IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    123         IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));
    124         IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    125         IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    126 
    127         IEM_MC_ADVANCE_RIP_AND_FINISH();
    128         IEM_MC_END();
    129     }
    130     else
    131     {
    132         /*
    133          * MMX, [mem64].
    134          */
    135         IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);
    136         IEM_MC_ARG(uint64_t *,                  pDst,       0);
    137         IEM_MC_LOCAL(uint64_t,                  uSrc);
    138         IEM_MC_ARG_LOCAL_REF(uint64_t const *,  pSrc, uSrc, 1);
    139         IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    140 
    141         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    142         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    143         IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    144         IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    145 
    146         IEM_MC_PREPARE_FPU_USAGE();
    147         IEM_MC_FPU_TO_MMX_MODE();
    148 
    149         IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    15090        IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    15191        IEM_MC_MODIFIED_MREG_BY_REF(pDst);
     
    161101 *      pxxx    mm1, mm2/mem64
    162102 * for instructions introduced with SSE.
    163  */
    164 FNIEMOP_DEF_1(iemOpCommonMmxSse_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U64, pfnU64)
     103 *
     104 * The @a pfnU64 worker function takes no FXSAVE state, just the operands.
     105 */
     106FNIEMOP_DEF_1(iemOpCommonMmxSseOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)
    165107{
    166108    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     
    182124        IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    183125        IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));
    184         IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);
     126        IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    185127        IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    186128
     
    208150
    209151        IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    210         IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);
    211         IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    212 
    213         IEM_MC_ADVANCE_RIP_AND_FINISH();
    214         IEM_MC_END();
    215     }
    216 }
    217 
    218 
    219 /**
    220  * Common worker for MMX instructions on the form:
    221  *      pxxx    mm1, mm2/mem64
    222  * for instructions introduced with SSE.
    223  *
    224  * Unlike iemOpCommonMmxSse_FullFull_To_Full, the @a pfnU64 worker function takes
    225  * no FXSAVE state, just the operands.
    226  */
    227 FNIEMOP_DEF_1(iemOpCommonMmxSseOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)
    228 {
    229     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    230     if (IEM_IS_MODRM_REG_MODE(bRm))
    231     {
    232         /*
    233          * MMX, MMX.
    234          */
    235         /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    236         /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    237         IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);
    238         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
    239         IEM_MC_ARG(uint64_t *,          pDst, 0);
    240         IEM_MC_ARG(uint64_t const *,    pSrc, 1);
    241         IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    242         IEM_MC_PREPARE_FPU_USAGE();
    243         IEM_MC_FPU_TO_MMX_MODE();
    244 
    245         IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    246         IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));
    247         IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    248         IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    249 
    250         IEM_MC_ADVANCE_RIP_AND_FINISH();
    251         IEM_MC_END();
    252     }
    253     else
    254     {
    255         /*
    256          * MMX, [mem64].
    257          */
    258         IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);
    259         IEM_MC_ARG(uint64_t *,                  pDst,       0);
    260         IEM_MC_LOCAL(uint64_t,                  uSrc);
    261         IEM_MC_ARG_LOCAL_REF(uint64_t const *,  pSrc, uSrc, 1);
    262         IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    263 
    264         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    265         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
    266         IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT();
    267         IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    268 
    269         IEM_MC_PREPARE_FPU_USAGE();
    270         IEM_MC_FPU_TO_MMX_MODE();
    271 
    272         IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    273152        IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    274153        IEM_MC_MODIFIED_MREG_BY_REF(pDst);
     
    285164 * that was introduced with SSE2.
    286165 */
    287 FNIEMOP_DEF_1(iemOpCommonMmx_FullFull_To_Full_Sse2, PFNIEMAIMPLMEDIAF2U64, pfnU64)
     166FNIEMOP_DEF_1(iemOpCommonMmxOpt_FullFull_To_Full_Sse2, PFNIEMAIMPLMEDIAOPTF2U64, pfnU64)
    288167{
    289168    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     
    305184        IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    306185        IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm));
    307         IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);
     186        IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    308187        IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    309188
     
    331210
    332211        IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm));
    333         IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc);
     212        IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc);
    334213        IEM_MC_MODIFIED_MREG_BY_REF(pDst);
    335214
     
    347226 * SSE cpuid checks. No SIMD FP exceptions.
    348227 *
     228 * The @a pfnU128 worker function takes no FXSAVE state, just the operands.
     229 *
    349230 * @sa iemOpCommonSse2_FullFull_To_Full
    350231 */
    351 FNIEMOP_DEF_1(iemOpCommonSse_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U128, pfnU128)
     232FNIEMOP_DEF_1(iemOpCommonSseOpt_FullFull_To_Full, PFNIEMAIMPLMEDIAOPTF2U128, pfnU128)
    352233{
    353234    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     
    365246        IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm));
    366247        IEM_MC_REF_XREG_U128_CONST(pSrc, IEM_GET_MODRM_RM(pVCpu, bRm));
    367         IEM_MC_CALL_SSE_AIMPL_2(pfnU128, pDst, pSrc);
     248        IEM_MC_CALL_VOID_AIMPL_2(pfnU128, pDst, pSrc);
    368249        IEM_MC_ADVANCE_RIP_AND_FINISH();
    369250        IEM_MC_END();
     
    387268        IEM_MC_PREPARE_SSE_USAGE();
    388269        IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm));
    389         IEM_MC_CALL_SSE_AIMPL_2(pfnU128, pDst, pSrc);
     270        IEM_MC_CALL_VOID_AIMPL_2(pfnU128, pDst, pSrc);
    390271
    391272        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    402283 * Exceptions type 4. SSE2 cpuid checks.
    403284 *
    404  * @sa iemOpCommonSse41_FullFull_To_Full, iemOpCommonSse2_FullFull_To_Full
    405  */
    406 FNIEMOP_DEF_1(iemOpCommonSse2_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U128, pfnU128)
    407 {
    408     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    409     if (IEM_IS_MODRM_REG_MODE(bRm))
    410     {
    411         /*
    412          * XMM, XMM.
    413          */
    414         IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);
    415         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    416         IEM_MC_ARG(PRTUINT128U,          pDst, 0);
    417         IEM_MC_ARG(PCRTUINT128U,         pSrc, 1);
    418         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    419         IEM_MC_PREPARE_SSE_USAGE();
    420         IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm));
    421         IEM_MC_REF_XREG_U128_CONST(pSrc, IEM_GET_MODRM_RM(pVCpu, bRm));
    422         IEM_MC_CALL_SSE_AIMPL_2(pfnU128, pDst, pSrc);
    423         IEM_MC_ADVANCE_RIP_AND_FINISH();
    424         IEM_MC_END();
    425     }
    426     else
    427     {
    428         /*
    429          * XMM, [mem128].
    430          */
    431         IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0);
    432         IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    433         IEM_MC_LOCAL(RTUINT128U,                uSrc);
    434         IEM_MC_ARG_LOCAL_REF(PCRTUINT128U,      pSrc, uSrc, 1);
    435         IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    436 
    437         IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
    438         IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    439         IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
    440         IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);
    441 
    442         IEM_MC_PREPARE_SSE_USAGE();
    443         IEM_MC_REF_XREG_U128(pDst, IEM_GET_MODRM_REG(pVCpu, bRm));
    444         IEM_MC_CALL_SSE_AIMPL_2(pfnU128, pDst, pSrc);
    445 
    446         IEM_MC_ADVANCE_RIP_AND_FINISH();
    447         IEM_MC_END();
    448     }
    449 }
    450 
    451 
    452 /**
    453  * Common worker for SSE2 instructions on the forms:
    454  *      pxxx    xmm1, xmm2/mem128
    455  *
    456  * Proper alignment of the 128-bit operand is enforced.
    457  * Exceptions type 4. SSE2 cpuid checks.
    458  *
    459  * Unlike iemOpCommonSse2_FullFull_To_Full, the @a pfnU128 worker function takes
    460  * no FXSAVE state, just the operands.
     285 * The @a pfnU128 worker function takes no FXSAVE state, just the operands.
    461286 *
    462287 * @sa iemOpCommonSse41_FullFull_To_Full, iemOpCommonSse2_FullFull_To_Full
     
    57095534{
    57105535    IEMOP_MNEMONIC2(RM, ANDPS, andps, Vps, Wps, DISOPTYPE_HARMLESS, 0);
    5711     return FNIEMOP_CALL_1(iemOpCommonSse_FullFull_To_Full, iemAImpl_pand_u128);
     5536    return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_pand_u128);
    57125537}
    57135538
     
    57175542{
    57185543    IEMOP_MNEMONIC2(RM, ANDPD, andpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0);
    5719     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pand_u128);
     5544    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pand_u128);
    57205545}
    57215546
     
    57295554{
    57305555    IEMOP_MNEMONIC2(RM, ANDNPS, andnps, Vps, Wps, DISOPTYPE_HARMLESS, 0);
    5731     return FNIEMOP_CALL_1(iemOpCommonSse_FullFull_To_Full, iemAImpl_pandn_u128);
     5556    return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_pandn_u128);
    57325557}
    57335558
     
    57375562{
    57385563    IEMOP_MNEMONIC2(RM, ANDNPD, andnpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0);
    5739     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pandn_u128);
     5564    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pandn_u128);
    57405565}
    57415566
     
    57495574{
    57505575    IEMOP_MNEMONIC2(RM, ORPS, orps, Vps, Wps, DISOPTYPE_HARMLESS, 0);
    5751     return FNIEMOP_CALL_1(iemOpCommonSse_FullFull_To_Full, iemAImpl_por_u128);
     5576    return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_por_u128);
    57525577}
    57535578
     
    57575582{
    57585583    IEMOP_MNEMONIC2(RM, ORPD, orpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0);
    5759     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_por_u128);
     5584    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_por_u128);
    57605585}
    57615586
     
    57695594{
    57705595    IEMOP_MNEMONIC2(RM, XORPS, xorps, Vps, Wps, DISOPTYPE_HARMLESS, 0);
    5771     return FNIEMOP_CALL_1(iemOpCommonSse_FullFull_To_Full, iemAImpl_pxor_u128);
     5596    return FNIEMOP_CALL_1(iemOpCommonSseOpt_FullFull_To_Full, iemAImpl_pxor_u128);
    57725597}
    57735598
     
    57775602{
    57785603    IEMOP_MNEMONIC2(RM, XORPD, xorpd, Vpd, Wpd, DISOPTYPE_HARMLESS, 0);
    5779     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pxor_u128);
     5604    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pxor_u128);
    57805605}
    57815606
     
    61175942{
    61185943    IEMOP_MNEMONIC2(RM, PCMPGTB, pcmpgtb, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    6119     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pcmpgtb_u64);
     5944    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpgtb_u64);
    61205945}
    61215946
     
    61255950{
    61265951    IEMOP_MNEMONIC2(RM, PCMPGTB, pcmpgtb, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    6127     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pcmpgtb_u128);
     5952    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpgtb_u128);
    61285953}
    61295954
     
    61365961{
    61375962    IEMOP_MNEMONIC2(RM, PCMPGTW, pcmpgtw, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    6138     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pcmpgtw_u64);
     5963    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpgtw_u64);
    61395964}
    61405965
     
    61445969{
    61455970    IEMOP_MNEMONIC2(RM, PCMPGTW, pcmpgtw, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    6146     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pcmpgtw_u128);
     5971    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpgtw_u128);
    61475972}
    61485973
     
    61555980{
    61565981    IEMOP_MNEMONIC2(RM, PCMPGTD, pcmpgtd, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    6157     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pcmpgtd_u64);
     5982    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpgtd_u64);
    61585983}
    61595984
     
    61635988{
    61645989    IEMOP_MNEMONIC2(RM, PCMPGTD, pcmpgtd, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    6165     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pcmpgtd_u128);
     5990    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpgtd_u128);
    61665991}
    61675992
     
    71356960{
    71366961    IEMOP_MNEMONIC2(RM, PCMPEQB, pcmpeqb, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    7137     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pcmpeqb_u64);
     6962    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpeqb_u64);
    71386963}
    71396964
     
    71436968{
    71446969    IEMOP_MNEMONIC2(RM, PCMPEQB, pcmpeqb, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    7145     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pcmpeqb_u128);
     6970    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpeqb_u128);
    71466971}
    71476972
     
    71556980{
    71566981    IEMOP_MNEMONIC2(RM, PCMPEQW, pcmpeqw, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    7157     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pcmpeqw_u64);
     6982    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpeqw_u64);
    71586983}
    71596984
     
    71636988{
    71646989    IEMOP_MNEMONIC2(RM, PCMPEQW, pcmpeqw, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    7165     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pcmpeqw_u128);
     6990    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpeqw_u128);
    71666991}
    71676992
     
    71757000{
    71767001    IEMOP_MNEMONIC2(RM, PCMPEQD, pcmpeqd, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    7177     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pcmpeqd_u64);
     7002    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pcmpeqd_u64);
    71787003}
    71797004
     
    71837008{
    71847009    IEMOP_MNEMONIC2(RM, PCMPEQD, pcmpeqd, Vx, Wx, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    7185     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pcmpeqd_u128);
     7010    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pcmpeqd_u128);
    71867011}
    71877012
     
    1321913044{
    1322013045    IEMOP_MNEMONIC2(RM, PADDQ, paddq, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13221     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full_Sse2, iemAImpl_paddq_u64);
     13046    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full_Sse2, iemAImpl_paddq_u64);
    1322213047}
    1322313048
     
    1322713052{
    1322813053    IEMOP_MNEMONIC2(RM, PADDQ, paddq, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13229     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddq_u128);
     13054    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddq_u128);
    1323013055}
    1323113056
     
    1323813063{
    1323913064    IEMOP_MNEMONIC2(RM, PMULLW, pmullw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13240     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pmullw_u64);
     13065    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmullw_u64);
    1324113066}
    1324213067
     
    1324513070{
    1324613071    IEMOP_MNEMONIC2(RM, PMULLW, pmullw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13247     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pmullw_u128);
     13072    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmullw_u128);
    1324813073}
    1324913074
     
    1347113296{
    1347213297    IEMOP_MNEMONIC2(RM, PSUBUSB, psubusb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13473     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubusb_u64);
     13298    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubusb_u64);
    1347413299}
    1347513300
     
    1347913304{
    1348013305    IEMOP_MNEMONIC2(RM, PSUBUSB, psubusb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13481     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubusb_u128);
     13306    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubusb_u128);
    1348213307}
    1348313308
     
    1349013315{
    1349113316    IEMOP_MNEMONIC2(RM, PSUBUSW, psubusw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13492     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubusw_u64);
     13317    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubusw_u64);
    1349313318}
    1349413319
     
    1349813323{
    1349913324    IEMOP_MNEMONIC2(RM, PSUBUSW, psubusw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13500     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubusw_u128);
     13325    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubusw_u128);
    1350113326}
    1350213327
     
    1350913334{
    1351013335    IEMOP_MNEMONIC2(RM, PMINUB, pminub, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13511     return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pminub_u64);
     13336    return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pminub_u64);
    1351213337}
    1351313338
     
    1351713342{
    1351813343    IEMOP_MNEMONIC2(RM, PMINUB, pminub, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13519     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pminub_u128);
     13344    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pminub_u128);
    1352013345}
    1352113346
     
    1352713352{
    1352813353    IEMOP_MNEMONIC2(RM, PAND, pand, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13529     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pand_u64);
     13354    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pand_u64);
    1353013355}
    1353113356
     
    1353513360{
    1353613361    IEMOP_MNEMONIC2(RM, PAND, pand, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13537     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pand_u128);
     13362    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pand_u128);
    1353813363}
    1353913364
     
    1354613371{
    1354713372    IEMOP_MNEMONIC2(RM, PADDUSB, paddusb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13548     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddusb_u64);
     13373    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddusb_u64);
    1354913374}
    1355013375
     
    1355413379{
    1355513380    IEMOP_MNEMONIC2(RM, PADDUSB, paddusb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13556     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddusb_u128);
     13381    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddusb_u128);
    1355713382}
    1355813383
     
    1356513390{
    1356613391    IEMOP_MNEMONIC2(RM, PADDUSW, paddusw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13567     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddusw_u64);
     13392    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddusw_u64);
    1356813393}
    1356913394
     
    1357313398{
    1357413399    IEMOP_MNEMONIC2(RM, PADDUSW, paddusw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13575     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddusw_u128);
     13400    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddusw_u128);
    1357613401}
    1357713402
     
    1358413409{
    1358513410    IEMOP_MNEMONIC2(RM, PMAXUB, pmaxub, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13586     return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pmaxub_u64);
     13411    return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pmaxub_u64);
    1358713412}
    1358813413
     
    1359213417{
    1359313418    IEMOP_MNEMONIC2(RM, PMAXUB, pmaxub, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13594     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pmaxub_u128);
     13419    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmaxub_u128);
    1359513420}
    1359613421
     
    1360313428{
    1360413429    IEMOP_MNEMONIC2(RM, PANDN, pandn, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13605     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pandn_u64);
     13430    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pandn_u64);
    1360613431}
    1360713432
     
    1361113436{
    1361213437    IEMOP_MNEMONIC2(RM, PANDN, pandn, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13613     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pandn_u128);
     13438    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pandn_u128);
    1361413439}
    1361513440
     
    1371713542{
    1371813543    IEMOP_MNEMONIC2(RM, PMULHW, pmulhw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13719     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pmulhw_u64);
     13544    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmulhw_u64);
    1372013545}
    1372113546
     
    1372513550{
    1372613551    IEMOP_MNEMONIC2(RM, PMULHW, pmulhw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13727     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pmulhw_u128);
     13552    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmulhw_u128);
    1372813553}
    1372913554
     
    1386013685{
    1386113686    IEMOP_MNEMONIC2(RM, PSUBSB, psubsb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13862     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubsb_u64);
     13687    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubsb_u64);
    1386313688}
    1386413689
     
    1386813693{
    1386913694    IEMOP_MNEMONIC2(RM, PSUBSB, psubsb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13870     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubsb_u128);
     13695    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubsb_u128);
    1387113696}
    1387213697
     
    1387913704{
    1388013705    IEMOP_MNEMONIC2(RM, PSUBSW, psubsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13881     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubsw_u64);
     13706    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubsw_u64);
    1388213707}
    1388313708
     
    1388713712{
    1388813713    IEMOP_MNEMONIC2(RM, PSUBSW, psubsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13889     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubsw_u128);
     13714    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubsw_u128);
    1389013715}
    1389113716
     
    1389913724{
    1390013725    IEMOP_MNEMONIC2(RM, PMINSW, pminsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13901     return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pminsw_u64);
     13726    return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pminsw_u64);
    1390213727}
    1390313728
     
    1390713732{
    1390813733    IEMOP_MNEMONIC2(RM, PMINSW, pminsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13909     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pminsw_u128);
     13734    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pminsw_u128);
    1391013735}
    1391113736
     
    1391913744{
    1392013745    IEMOP_MNEMONIC2(RM, POR, por, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13921     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_por_u64);
     13746    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_por_u64);
    1392213747}
    1392313748
     
    1392713752{
    1392813753    IEMOP_MNEMONIC2(RM, POR, por, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13929     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_por_u128);
     13754    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_por_u128);
    1393013755}
    1393113756
     
    1393813763{
    1393913764    IEMOP_MNEMONIC2(RM, PADDSB, paddsb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13940     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddsb_u64);
     13765    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddsb_u64);
    1394113766}
    1394213767
     
    1394613771{
    1394713772    IEMOP_MNEMONIC2(RM, PADDSB, paddsb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13948     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddsb_u128);
     13773    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddsb_u128);
    1394913774}
    1395013775
     
    1395713782{
    1395813783    IEMOP_MNEMONIC2(RM, PADDSW, paddsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13959     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddsw_u64);
     13784    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddsw_u64);
    1396013785}
    1396113786
     
    1396513790{
    1396613791    IEMOP_MNEMONIC2(RM, PADDSW, paddsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13967     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddsw_u128);
     13792    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddsw_u128);
    1396813793}
    1396913794
     
    1397713802{
    1397813803    IEMOP_MNEMONIC2(RM, PMAXSW, pmaxsw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13979     return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pmaxsw_u64);
     13804    return FNIEMOP_CALL_1(iemOpCommonMmxSseOpt_FullFull_To_Full, iemAImpl_pmaxsw_u64);
    1398013805}
    1398113806
     
    1398513810{
    1398613811    IEMOP_MNEMONIC2(RM, PMAXSW, pmaxsw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    13987     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pmaxsw_u128);
     13812    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmaxsw_u128);
    1398813813}
    1398913814
     
    1399713822{
    1399813823    IEMOP_MNEMONIC2(RM, PXOR, pxor, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    13999     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pxor_u64);
     13824    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pxor_u64);
    1400013825}
    1400113826
     
    1400513830{
    1400613831    IEMOP_MNEMONIC2(RM, PXOR, pxor, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14007     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pxor_u128);
     13832    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pxor_u128);
    1400813833}
    1400913834
     
    1410713932{
    1410813933    IEMOP_MNEMONIC2(RM, PMULUDQ, pmuludq, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, 0);
    14109     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pmuludq_u64);
     13934    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmuludq_u64);
    1411013935}
    1411113936
     
    1411513940{
    1411613941    IEMOP_MNEMONIC2(RM, PMULUDQ, pmuludq, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, 0);
    14117     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pmuludq_u128);
     13942    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmuludq_u128);
    1411813943}
    1411913944
     
    1412513950{
    1412613951    IEMOP_MNEMONIC2(RM, PMADDWD, pmaddwd, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, 0);
    14127     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_pmaddwd_u64);
     13952    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_pmaddwd_u64);
    1412813953}
    1412913954
     
    1413313958{
    1413413959    IEMOP_MNEMONIC2(RM, PMADDWD, pmaddwd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, 0);
    14135     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_pmaddwd_u128);
     13960    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_pmaddwd_u128);
    1413613961}
    1413713962
     
    1416713992{
    1416813993    IEMOP_MNEMONIC2(RM, PSUBB, psubb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14169     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubb_u64);
     13994    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubb_u64);
    1417013995}
    1417113996
     
    1417514000{
    1417614001    IEMOP_MNEMONIC2(RM, PSUBB, psubb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14177     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubb_u128);
     14002    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubb_u128);
    1417814003}
    1417914004
     
    1418614011{
    1418714012    IEMOP_MNEMONIC2(RM, PSUBW, psubw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14188     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubw_u64);
     14013    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubw_u64);
    1418914014}
    1419014015
     
    1419414019{
    1419514020    IEMOP_MNEMONIC2(RM, PSUBW, psubw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14196     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubw_u128);
     14021    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubw_u128);
    1419714022}
    1419814023
     
    1420514030{
    1420614031    IEMOP_MNEMONIC2(RM, PSUBD, psubd, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14207     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_psubd_u64);
     14032    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_psubd_u64);
    1420814033}
    1420914034
     
    1421314038{
    1421414039    IEMOP_MNEMONIC2(RM, PSUBD, psubd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14215     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubd_u128);
     14040    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubd_u128);
    1421614041}
    1421714042
     
    1422414049{
    1422514050    IEMOP_MNEMONIC2(RM, PSUBQ, psubq, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14226     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full_Sse2, iemAImpl_psubq_u64);
     14051    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full_Sse2, iemAImpl_psubq_u64);
    1422714052}
    1422814053
     
    1423214057{
    1423314058    IEMOP_MNEMONIC2(RM, PSUBQ, psubq, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14234     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_psubq_u128);
     14059    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_psubq_u128);
    1423514060}
    1423614061
     
    1424314068{
    1424414069    IEMOP_MNEMONIC2(RM, PADDB, paddb, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14245     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddb_u64);
     14070    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddb_u64);
    1424614071}
    1424714072
     
    1425114076{
    1425214077    IEMOP_MNEMONIC2(RM, PADDB, paddb, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14253     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddb_u128);
     14078    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddb_u128);
    1425414079}
    1425514080
     
    1426214087{
    1426314088    IEMOP_MNEMONIC2(RM, PADDW, paddw, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14264     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddw_u64);
     14089    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddw_u64);
    1426514090}
    1426614091
     
    1427014095{
    1427114096    IEMOP_MNEMONIC2(RM, PADDW, paddw, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14272     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddw_u128);
     14097    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddw_u128);
    1427314098}
    1427414099
     
    1428114106{
    1428214107    IEMOP_MNEMONIC2(RM, PADDD, paddd, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_MMX, IEMOPHINT_IGNORES_OP_SIZES);
    14283     return FNIEMOP_CALL_1(iemOpCommonMmx_FullFull_To_Full, iemAImpl_paddd_u64);
     14108    return FNIEMOP_CALL_1(iemOpCommonMmxOpt_FullFull_To_Full, iemAImpl_paddd_u64);
    1428414109}
    1428514110
     
    1428914114{
    1429014115    IEMOP_MNEMONIC2(RM, PADDD, paddd, Vx, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    14291     return FNIEMOP_CALL_1(iemOpCommonSse2_FullFull_To_Full, iemAImpl_paddd_u128);
     14116    return FNIEMOP_CALL_1(iemOpCommonSse2Opt_FullFull_To_Full, iemAImpl_paddd_u128);
    1429214117}
    1429314118
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