VirtualBox

Changeset 104207 in vbox for trunk/src


Ignore:
Timestamp:
Apr 5, 2024 8:57:55 PM (10 months ago)
Author:
vboxsync
Message:

VMM/IEM: Refactoring assembly helpers to not pass eflags by reference but instead by value and return the updated value (via eax/w0) - third chunk: BT,BTC,BTR,BTC. bugref:10376

Location:
trunk/src/VBox/VMM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r104206 r104207  
    13171317; coding.
    13181318;
    1319 ; All the functions takes a pointer to the destination memory operand in A0,
    1320 ; the source register operand in A1 and a pointer to eflags in A2.
     1319; All the functions takes a pointer to the destination memory operand in A1,
     1320; the source register operand in A2 and incoming eflags in A0.
    13211321;
    13221322; @param        1       The instruction mnemonic.
     
    13291329BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u16, 12
    13301330        PROLOGUE_3_ARGS
    1331         IEM_MAYBE_LOAD_FLAGS_OLD           A2, %3, %4, 0
    1332         %1      word [A0], A1_16
    1333         IEM_SAVE_FLAGS_OLD                 A2, %3, %4, 0
     1331        IEM_MAYBE_LOAD_FLAGS               A0_32, %3, %4, 0
     1332        %1      word [A1], A2_16
     1333        IEM_SAVE_FLAGS_RETVAL              A0_32, %3, %4, 0
    13341334        EPILOGUE_3_ARGS
    13351335ENDPROC iemAImpl_ %+ %1 %+ _u16
     
    13371337BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u32, 12
    13381338        PROLOGUE_3_ARGS
    1339         IEM_MAYBE_LOAD_FLAGS_OLD           A2, %3, %4, 0
    1340         %1      dword [A0], A1_32
    1341         IEM_SAVE_FLAGS_OLD                 A2, %3, %4, 0
     1339        IEM_MAYBE_LOAD_FLAGS               A0_32, %3, %4, 0
     1340        %1      dword [A1], A2_32
     1341        IEM_SAVE_FLAGS_RETVAL              A0_32, %3, %4, 0
    13421342        EPILOGUE_3_ARGS
    13431343ENDPROC iemAImpl_ %+ %1 %+ _u32
     
    13461346BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64, 16
    13471347        PROLOGUE_3_ARGS
    1348         IEM_MAYBE_LOAD_FLAGS_OLD           A2, %3, %4, 0
    1349         %1      qword [A0], A1
    1350         IEM_SAVE_FLAGS_OLD                 A2, %3, %4, 0
     1348        IEM_MAYBE_LOAD_FLAGS               A0_32, %3, %4, 0
     1349        %1      qword [A1], A2
     1350        IEM_SAVE_FLAGS_RETVAL              A0_32, %3, %4, 0
    13511351        EPILOGUE_3_ARGS_EX 8
    13521352ENDPROC iemAImpl_ %+ %1 %+ _u64
     
    13571357BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u16_locked, 12
    13581358        PROLOGUE_3_ARGS
    1359         IEM_MAYBE_LOAD_FLAGS_OLD           A2, %3, %4, 0
    1360         lock %1 word [A0], A1_16
    1361         IEM_SAVE_FLAGS_OLD                 A2, %3, %4, 0
     1359        IEM_MAYBE_LOAD_FLAGS               A0_32, %3, %4, 0
     1360        lock %1 word [A1], A2_16
     1361        IEM_SAVE_FLAGS_RETVAL              A0_32, %3, %4, 0
    13621362        EPILOGUE_3_ARGS
    13631363ENDPROC iemAImpl_ %+ %1 %+ _u16_locked
     
    13651365BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u32_locked, 12
    13661366        PROLOGUE_3_ARGS
    1367         IEM_MAYBE_LOAD_FLAGS_OLD           A2, %3, %4, 0
    1368         lock %1 dword [A0], A1_32
    1369         IEM_SAVE_FLAGS_OLD                 A2, %3, %4, 0
     1367        IEM_MAYBE_LOAD_FLAGS               A0_32, %3, %4, 0
     1368        lock %1 dword [A1], A2_32
     1369        IEM_SAVE_FLAGS_RETVAL              A0_32, %3, %4, 0
    13701370        EPILOGUE_3_ARGS
    13711371ENDPROC iemAImpl_ %+ %1 %+ _u32_locked
     
    13741374BEGINPROC_FASTCALL iemAImpl_ %+ %1 %+ _u64_locked, 16
    13751375        PROLOGUE_3_ARGS
    1376         IEM_MAYBE_LOAD_FLAGS_OLD           A2, %3, %4, 0
    1377         lock %1 qword [A0], A1
    1378         IEM_SAVE_FLAGS_OLD                 A2, %3, %4, 0
     1376        IEM_MAYBE_LOAD_FLAGS               A0_32, %3, %4, 0
     1377        lock %1 qword [A1], A2
     1378        IEM_SAVE_FLAGS_RETVAL              A0_32, %3, %4, 0
    13791379        EPILOGUE_3_ARGS_EX 8
    13801380ENDPROC iemAImpl_ %+ %1 %+ _u64_locked
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r104206 r104207  
    12051205 */
    12061206
    1207 IEM_DECL_IMPL_DEF(void, iemAImpl_bt_u64,(uint64_t const *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     1207IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bt_u64,(uint32_t fEFlags, uint64_t const *puDst, uint64_t uSrc))
    12081208{
    12091209    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  However, it seems they're
     
    12121212    uint64_t uDst = *puDst;
    12131213    if (uDst & RT_BIT_64(uSrc))
    1214         *pfEFlags |= X86_EFL_CF;
     1214        fEFlags |= X86_EFL_CF;
    12151215    else
    1216         *pfEFlags &= ~X86_EFL_CF;
     1216        fEFlags &= ~X86_EFL_CF;
     1217    return fEFlags;
    12171218}
    12181219
    12191220# if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY)
    12201221
    1221 IEM_DECL_IMPL_DEF(void, iemAImpl_bt_u32,(uint32_t const *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     1222IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bt_u32,(uint32_t fEFlags, uint32_t const *puDst, uint32_t uSrc))
    12221223{
    12231224    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  However, it seems they're
     
    12261227    uint32_t uDst = *puDst;
    12271228    if (uDst & RT_BIT_32(uSrc))
    1228         *pfEFlags |= X86_EFL_CF;
     1229        fEFlags |= X86_EFL_CF;
    12291230    else
    1230         *pfEFlags &= ~X86_EFL_CF;
    1231 }
    1232 
    1233 IEM_DECL_IMPL_DEF(void, iemAImpl_bt_u16,(uint16_t const *puDst, uint16_t uSrc, uint32_t *pfEFlags))
     1231        fEFlags &= ~X86_EFL_CF;
     1232    return fEFlags;
     1233}
     1234
     1235IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bt_u16,(uint32_t fEFlags, uint16_t const *puDst, uint16_t uSrc))
    12341236{
    12351237    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  However, it seems they're
     
    12381240    uint16_t uDst = *puDst;
    12391241    if (uDst & RT_BIT_32(uSrc))
    1240         *pfEFlags |= X86_EFL_CF;
     1242        fEFlags |= X86_EFL_CF;
    12411243    else
    1242         *pfEFlags &= ~X86_EFL_CF;
     1244        fEFlags &= ~X86_EFL_CF;
     1245    return fEFlags;
    12431246}
    12441247
     
    12491252 */
    12501253
    1251 IEM_DECL_IMPL_DEF(void, iemAImpl_btc_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     1254IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btc_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    12521255{
    12531256    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  However, it seems they're
     
    12601263        uDst &= ~fMask;
    12611264        *puDst = uDst;
    1262         *pfEFlags |= X86_EFL_CF;
     1265        fEFlags |= X86_EFL_CF;
    12631266    }
    12641267    else
     
    12661269        uDst |= fMask;
    12671270        *puDst = uDst;
    1268         *pfEFlags &= ~X86_EFL_CF;
    1269     }
     1271        fEFlags &= ~X86_EFL_CF;
     1272    }
     1273    return fEFlags;
    12701274}
    12711275
    12721276# if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY)
    12731277
    1274 IEM_DECL_IMPL_DEF(void, iemAImpl_btc_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     1278IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btc_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    12751279{
    12761280    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  However, it seems they're
     
    12831287        uDst &= ~fMask;
    12841288        *puDst = uDst;
    1285         *pfEFlags |= X86_EFL_CF;
     1289        fEFlags |= X86_EFL_CF;
    12861290    }
    12871291    else
     
    12891293        uDst |= fMask;
    12901294        *puDst = uDst;
    1291         *pfEFlags &= ~X86_EFL_CF;
    1292     }
    1293 }
    1294 
    1295 
    1296 IEM_DECL_IMPL_DEF(void, iemAImpl_btc_u16,(uint16_t *puDst, uint16_t uSrc, uint32_t *pfEFlags))
     1295        fEFlags &= ~X86_EFL_CF;
     1296    }
     1297    return fEFlags;
     1298}
     1299
     1300
     1301IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btc_u16,(uint32_t fEFlags, uint16_t *puDst, uint16_t uSrc))
    12971302{
    12981303    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  However, it seems they're
     
    13051310        uDst &= ~fMask;
    13061311        *puDst = uDst;
    1307         *pfEFlags |= X86_EFL_CF;
     1312        fEFlags |= X86_EFL_CF;
    13081313    }
    13091314    else
     
    13111316        uDst |= fMask;
    13121317        *puDst = uDst;
    1313         *pfEFlags &= ~X86_EFL_CF;
    1314     }
     1318        fEFlags &= ~X86_EFL_CF;
     1319    }
     1320    return fEFlags;
    13151321}
    13161322
     
    13211327 */
    13221328
    1323 IEM_DECL_IMPL_DEF(void, iemAImpl_btr_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     1329IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btr_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    13241330{
    13251331    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  We set them as after an
     
    13321338        uDst &= ~fMask;
    13331339        *puDst = uDst;
    1334         *pfEFlags |= X86_EFL_CF;
     1340        fEFlags |= X86_EFL_CF;
    13351341    }
    13361342    else
    1337         *pfEFlags &= ~X86_EFL_CF;
     1343        fEFlags &= ~X86_EFL_CF;
     1344    return fEFlags;
    13381345}
    13391346
    13401347# if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY)
    13411348
    1342 IEM_DECL_IMPL_DEF(void, iemAImpl_btr_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     1349IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btr_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    13431350{
    13441351    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  We set them as after an
     
    13511358        uDst &= ~fMask;
    13521359        *puDst = uDst;
    1353         *pfEFlags |= X86_EFL_CF;
     1360        fEFlags |= X86_EFL_CF;
    13541361    }
    13551362    else
    1356         *pfEFlags &= ~X86_EFL_CF;
    1357 }
    1358 
    1359 
    1360 IEM_DECL_IMPL_DEF(void, iemAImpl_btr_u16,(uint16_t *puDst, uint16_t uSrc, uint32_t *pfEFlags))
     1363        fEFlags &= ~X86_EFL_CF;
     1364    return fEFlags;
     1365}
     1366
     1367
     1368IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_btr_u16,(uint32_t fEFlags, uint16_t *puDst, uint16_t uSrc))
    13611369{
    13621370    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  We set them as after an
     
    13691377        uDst &= ~fMask;
    13701378        *puDst = uDst;
    1371         *pfEFlags |= X86_EFL_CF;
     1379        fEFlags |= X86_EFL_CF;
    13721380    }
    13731381    else
    1374         *pfEFlags &= ~X86_EFL_CF;
     1382        fEFlags &= ~X86_EFL_CF;
     1383    return fEFlags;
    13751384}
    13761385
     
    13811390 */
    13821391
    1383 IEM_DECL_IMPL_DEF(void, iemAImpl_bts_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     1392IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bts_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    13841393{
    13851394    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  We set them as after an
     
    13891398    uint64_t uDst = *puDst;
    13901399    if (uDst & fMask)
    1391         *pfEFlags |= X86_EFL_CF;
     1400        fEFlags |= X86_EFL_CF;
    13921401    else
    13931402    {
    13941403        uDst |= fMask;
    13951404        *puDst = uDst;
    1396         *pfEFlags &= ~X86_EFL_CF;
    1397     }
     1405        fEFlags &= ~X86_EFL_CF;
     1406    }
     1407    return fEFlags;
    13981408}
    13991409
    14001410# if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY)
    14011411
    1402 IEM_DECL_IMPL_DEF(void, iemAImpl_bts_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     1412IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bts_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    14031413{
    14041414    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  We set them as after an
     
    14081418    uint32_t uDst = *puDst;
    14091419    if (uDst & fMask)
    1410         *pfEFlags |= X86_EFL_CF;
     1420        fEFlags |= X86_EFL_CF;
    14111421    else
    14121422    {
    14131423        uDst |= fMask;
    14141424        *puDst = uDst;
    1415         *pfEFlags &= ~X86_EFL_CF;
    1416     }
    1417 }
    1418 
    1419 
    1420 IEM_DECL_IMPL_DEF(void, iemAImpl_bts_u16,(uint16_t *puDst, uint16_t uSrc, uint32_t *pfEFlags))
     1425        fEFlags &= ~X86_EFL_CF;
     1426    }
     1427    return fEFlags;
     1428}
     1429
     1430
     1431IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_bts_u16,(uint32_t fEFlags, uint16_t *puDst, uint16_t uSrc))
    14211432{
    14221433    /* Note! "undefined" flags: OF, SF, ZF, AF, PF.  We set them as after an
     
    14261437    uint32_t uDst = *puDst;
    14271438    if (uDst & fMask)
    1428         *pfEFlags |= X86_EFL_CF;
     1439        fEFlags |= X86_EFL_CF;
    14291440    else
    14301441    {
    14311442        uDst |= fMask;
    14321443        *puDst = uDst;
    1433         *pfEFlags &= ~X86_EFL_CF;
    1434     }
     1444        fEFlags &= ~X86_EFL_CF;
     1445    }
     1446    return fEFlags;
    14351447}
    14361448
    14371449# endif /* !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) */
    14381450
    1439 
    1440 /** 64-bit locked binary operand operation. */
    1441 # define DO_LOCKED_BIN_TODO_OP(a_Mnemonic, a_cBitsWidth) \
    1442     do { \
    1443         uint ## a_cBitsWidth ## _t uOld = ASMAtomicUoReadU ## a_cBitsWidth(puDst); \
    1444         uint ## a_cBitsWidth ## _t uTmp; \
    1445         uint32_t fEflTmp; \
    1446         do \
    1447         { \
    1448             uTmp = uOld; \
    1449             fEflTmp = *pfEFlags; \
    1450             iemAImpl_ ## a_Mnemonic ## _u ## a_cBitsWidth(&uTmp, uSrc, &fEflTmp); \
    1451         } while (!ASMAtomicCmpXchgExU ## a_cBitsWidth(puDst, uTmp, uOld, &uOld)); \
    1452         *pfEFlags = fEflTmp; \
    1453     } while (0)
    1454 
    1455 
    1456 #define EMIT_LOCKED_BIN_TODO_OP(a_Mnemonic, a_cBitsWidth) \
    1457     IEM_DECL_IMPL_DEF(void, iemAImpl_ ## a_Mnemonic ## _u ## a_cBitsWidth ##  _locked,(uint ## a_cBitsWidth ## _t *puDst, \
    1458                                                                                        uint ## a_cBitsWidth ## _t uSrc, \
    1459                                                                                        uint32_t *pfEFlags)) \
    1460     { \
    1461         DO_LOCKED_BIN_TODO_OP(a_Mnemonic, a_cBitsWidth); \
    1462     }
    1463 
    1464 
    1465 EMIT_LOCKED_BIN_TODO_OP(btc, 64)
    1466 EMIT_LOCKED_BIN_TODO_OP(btr, 64)
    1467 EMIT_LOCKED_BIN_TODO_OP(bts, 64)
     1451EMIT_LOCKED_BIN_OP(btc, 64)
     1452EMIT_LOCKED_BIN_OP(btr, 64)
     1453EMIT_LOCKED_BIN_OP(bts, 64)
    14681454# if !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY)
    1469 EMIT_LOCKED_BIN_TODO_OP(btc, 32)
    1470 EMIT_LOCKED_BIN_TODO_OP(btr, 32)
    1471 EMIT_LOCKED_BIN_TODO_OP(bts, 32)
    1472 
    1473 EMIT_LOCKED_BIN_TODO_OP(btc, 16)
    1474 EMIT_LOCKED_BIN_TODO_OP(btr, 16)
    1475 EMIT_LOCKED_BIN_TODO_OP(bts, 16)
     1455EMIT_LOCKED_BIN_OP(btc, 32)
     1456EMIT_LOCKED_BIN_OP(btr, 32)
     1457EMIT_LOCKED_BIN_OP(bts, 32)
     1458
     1459EMIT_LOCKED_BIN_OP(btc, 16)
     1460EMIT_LOCKED_BIN_OP(btr, 16)
     1461EMIT_LOCKED_BIN_OP(bts, 16)
    14761462# endif /* !defined(RT_ARCH_X86) || defined(IEM_WITHOUT_ASSEMBLY) */
    14771463
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r104206 r104207  
    87408740                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    87418741                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    8742                 IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
    8743                 IEM_MC_ARG(uint16_t,        u16Src,                 1); \
    8744                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
    87458742                \
     8743                IEM_MC_ARG(uint16_t,        u16Src,                 2); \
    87468744                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    87478745                IEM_MC_AND_LOCAL_U16(u16Src, 0xf); \
     8746                IEM_MC_ARG(uint16_t *,      pu16Dst,                1); \
    87488747                IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    8749                 IEM_MC_REF_EFLAGS(pEFlags); \
    8750                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     8748                IEM_MC_ARG_EFLAGS(          fEFlagsIn,              0); \
     8749                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
     8750                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    87518751                \
    87528752                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    87578757                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    87588758                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    8759                 IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
    8760                 IEM_MC_ARG(uint32_t,        u32Src,                 1); \
    8761                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
    87628759                \
     8760                IEM_MC_ARG(uint32_t,        u32Src,                 2); \
    87638761                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    87648762                IEM_MC_AND_LOCAL_U32(u32Src, 0x1f); \
     8763                IEM_MC_ARG(uint32_t *,      pu32Dst,                1); \
    87658764                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    8766                 IEM_MC_REF_EFLAGS(pEFlags); \
    8767                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     8765                IEM_MC_ARG_EFLAGS(          fEFlagsIn,              0); \
     8766                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
     8767                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    87688768                \
    87698769                IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm)); \
     
    87758775                IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \
    87768776                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    8777                 IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
    8778                 IEM_MC_ARG(uint64_t,        u64Src,                 1); \
    8779                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
    87808777                \
     8778                IEM_MC_ARG(uint64_t,        u64Src,                 2); \
    87818779                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    87828780                IEM_MC_AND_LOCAL_U64(u64Src, 0x3f); \
     8781                IEM_MC_ARG(uint64_t *,      pu64Dst,                1); \
    87838782                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    8784                 IEM_MC_REF_EFLAGS(pEFlags); \
    8785                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     8783                IEM_MC_ARG_EFLAGS(          fEFlagsIn,              0); \
     8784                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
     8785                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    87868786                \
    87878787                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    88068806                    IEMOP_HLP_DONE_DECODING(); \
    88078807                    \
    8808                     IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     8808                    IEM_MC_ARG(uint16_t,                u16Src,                 2); \
    88098809                    IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    88108810                    IEM_MC_LOCAL_ASSIGN(int16_t,        i16AddrAdj, /*=*/ u16Src); \
     
    88158815                    \
    88168816                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    8817                     IEM_MC_ARG(uint16_t *,              pu16Dst,                0); \
     8817                    IEM_MC_ARG(uint16_t *,              pu16Dst,                1); \
    88188818                    IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    88198819                    \
    8820                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    8821                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     8820                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     8821                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
    88228822                    \
    88238823                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
    8824                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     8824                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    88258825                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    88268826                    IEM_MC_END(); \
     
    88338833                    IEMOP_HLP_DONE_DECODING(); \
    88348834                    \
    8835                     IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     8835                    IEM_MC_ARG(uint32_t,                u32Src,                 2); \
    88368836                    IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    88378837                    IEM_MC_LOCAL_ASSIGN(int32_t,        i32AddrAdj, /*=*/ u32Src); \
     
    88428842                    \
    88438843                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    8844                     IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
     8844                    IEM_MC_ARG(uint32_t *,              pu32Dst,                1); \
    88458845                    IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    88468846                    \
    8847                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    8848                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     8847                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     8848                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
    88498849                    \
    88508850                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
    8851                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     8851                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    88528852                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    88538853                    IEM_MC_END(); \
     
    88608860                    IEMOP_HLP_DONE_DECODING(); \
    88618861                    \
    8862                     IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     8862                    IEM_MC_ARG(uint64_t,                u64Src,                 2); \
    88638863                    IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    88648864                    IEM_MC_LOCAL_ASSIGN(int64_t,        i64AddrAdj, /*=*/ u64Src); \
     
    88698869                    \
    88708870                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    8871                     IEM_MC_ARG(uint64_t *,              pu64Dst,                0); \
     8871                    IEM_MC_ARG(uint64_t *,              pu64Dst,                1); \
    88728872                    IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    88738873                    \
    8874                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    8875                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     8874                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     8875                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
    88768876                    \
    88778877                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
    8878                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     8878                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    88798879                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    88808880                    IEM_MC_END(); \
     
    88978897                    IEMOP_HLP_DONE_DECODING(); \
    88988898                    \
    8899                     IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     8899                    IEM_MC_ARG(uint16_t,                u16Src,                 2); \
    89008900                    IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    89018901                    IEM_MC_LOCAL_ASSIGN(int16_t,        i16AddrAdj, /*=*/ u16Src); \
     
    89068906                    \
    89078907                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    8908                     IEM_MC_ARG(uint16_t *,              pu16Dst,                0); \
     8908                    IEM_MC_ARG(uint16_t *,              pu16Dst,                1); \
    89098909                    IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    89108910                    \
    8911                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    8912                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
     8911                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     8912                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU16, fEFlagsIn, pu16Dst, u16Src); \
    89138913                    \
    89148914                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
    8915                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     8915                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    89168916                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    89178917                    IEM_MC_END(); \
     
    89248924                    IEMOP_HLP_DONE_DECODING(); \
    89258925                    \
    8926                     IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     8926                    IEM_MC_ARG(uint32_t,                u32Src,                 2); \
    89278927                    IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    89288928                    IEM_MC_LOCAL_ASSIGN(int32_t,        i32AddrAdj, /*=*/ u32Src); \
     
    89338933                    \
    89348934                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    8935                     IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
     8935                    IEM_MC_ARG(uint32_t *,              pu32Dst,                1); \
    89368936                    IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    89378937                    \
    8938                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    8939                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
     8938                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     8939                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU32, fEFlagsIn, pu32Dst, u32Src); \
    89408940                    \
    89418941                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
    8942                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     8942                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    89438943                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    89448944                    IEM_MC_END(); \
     
    89518951                    IEMOP_HLP_DONE_DECODING(); \
    89528952                    \
    8953                     IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     8953                    IEM_MC_ARG(uint64_t,                u64Src,                 2); \
    89548954                    IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    89558955                    IEM_MC_LOCAL_ASSIGN(int64_t,        i64AddrAdj, /*=*/ u64Src); \
     
    89608960                    \
    89618961                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    8962                     IEM_MC_ARG(uint64_t *,              pu64Dst,                0); \
     8962                    IEM_MC_ARG(uint64_t *,              pu64Dst,                1); \
    89638963                    IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    89648964                    \
    8965                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    8966                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
     8965                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     8966                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU64, fEFlagsIn, pu64Dst, u64Src); \
    89678967                    \
    89688968                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
    8969                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     8969                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    89708970                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    89718971                    IEM_MC_END(); \
     
    89918991                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    89928992                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    8993                 IEM_MC_ARG(uint16_t const *, pu16Dst,               0); \
    8994                 IEM_MC_ARG(uint16_t,         u16Src,                1); \
    8995                 IEM_MC_ARG(uint32_t *,       pEFlags,               2); \
    89968993                \
     8994                IEM_MC_ARG(uint16_t,            u16Src,     2); \
    89978995                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    89988996                IEM_MC_AND_LOCAL_U16(u16Src, 0xf); \
     8997                IEM_MC_ARG(uint16_t const *,    pu16Dst,    1); \
    89998998                IEM_MC_REF_GREG_U16_CONST(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    9000                 IEM_MC_REF_EFLAGS(pEFlags); \
    9001                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     8999                IEM_MC_ARG_EFLAGS(              fEFlagsIn,  0); \
     9000                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
     9001                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    90029002                \
    90039003                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    90089008                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    90099009                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    9010                 IEM_MC_ARG(uint32_t const *, pu32Dst,               0); \
    9011                 IEM_MC_ARG(uint32_t,         u32Src,                1); \
    9012                 IEM_MC_ARG(uint32_t *,       pEFlags,               2); \
    90139010                \
     9011                IEM_MC_ARG(uint32_t,            u32Src,     2); \
    90149012                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    90159013                IEM_MC_AND_LOCAL_U32(u32Src, 0x1f); \
     9014                IEM_MC_ARG(uint32_t const *,    pu32Dst,    1); \
    90169015                IEM_MC_REF_GREG_U32_CONST(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    9017                 IEM_MC_REF_EFLAGS(pEFlags); \
    9018                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     9016                IEM_MC_ARG_EFLAGS(              fEFlagsIn,  0); \
     9017                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
     9018                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    90199019                \
    90209020                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    90259025                IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \
    90269026                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    9027                 IEM_MC_ARG(uint64_t const *, pu64Dst,               0); \
    9028                 IEM_MC_ARG(uint64_t,         u64Src,                1); \
    9029                 IEM_MC_ARG(uint32_t *,       pEFlags,               2); \
    90309027                \
     9028                IEM_MC_ARG(uint64_t,            u64Src,     2); \
    90319029                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    90329030                IEM_MC_AND_LOCAL_U64(u64Src, 0x3f); \
     9031                IEM_MC_ARG(uint64_t const *,    pu64Dst,    1); \
    90339032                IEM_MC_REF_GREG_U64_CONST(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    9034                 IEM_MC_REF_EFLAGS(pEFlags); \
    9035                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     9033                IEM_MC_ARG_EFLAGS(              fEFlagsIn,  0); \
     9034                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
     9035                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    90369036                \
    90379037                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    90569056                    IEMOP_HLP_DONE_DECODING(); \
    90579057                    \
    9058                     IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     9058                    IEM_MC_ARG(uint16_t,                u16Src,                 2); \
    90599059                    IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    90609060                    IEM_MC_LOCAL_ASSIGN(int16_t,        i16AddrAdj, /*=*/ u16Src); \
     
    90659065                    \
    90669066                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    9067                     IEM_MC_ARG(uint16_t const *,        pu16Dst,                0); \
     9067                    IEM_MC_ARG(uint16_t const *,        pu16Dst,                1); \
    90689068                    IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    90699069                    \
    9070                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9071                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     9070                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     9071                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
    90729072                    \
    90739073                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
    9074                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     9074                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    90759075                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    90769076                    IEM_MC_END(); \
     
    90839083                    IEMOP_HLP_DONE_DECODING(); \
    90849084                    \
    9085                     IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     9085                    IEM_MC_ARG(uint32_t,                u32Src,                 2); \
    90869086                    IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    90879087                    IEM_MC_LOCAL_ASSIGN(int32_t,        i32AddrAdj, /*=*/ u32Src); \
     
    90919091                    IEM_MC_ADD_LOCAL_S32_TO_EFF_ADDR(GCPtrEffDst, i32AddrAdj); \
    90929092                    \
    9093                     IEM_MC_ARG(uint32_t const *,        pu32Dst,                0); \
     9093                    IEM_MC_ARG(uint32_t const *,        pu32Dst,                1); \
    90949094                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    90959095                    IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    90969096                    \
    9097                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9098                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     9097                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     9098                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
    90999099                    \
    91009100                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
    9101                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     9101                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    91029102                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    91039103                    IEM_MC_END(); \
     
    91109110                    IEMOP_HLP_DONE_DECODING(); \
    91119111                    \
    9112                     IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     9112                    IEM_MC_ARG(uint64_t,                u64Src,                 2); \
    91139113                    IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    91149114                    IEM_MC_LOCAL_ASSIGN(int64_t,        i64AddrAdj, /*=*/ u64Src); \
     
    91199119                    \
    91209120                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    9121                     IEM_MC_ARG(uint64_t const *,        pu64Dst,                0); \
     9121                    IEM_MC_ARG(uint64_t const *,        pu64Dst,                1); \
    91229122                    IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    91239123                    \
    9124                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9125                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     9124                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,              0); \
     9125                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
    91269126                    \
    91279127                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
    9128                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     9128                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    91299129                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    91309130                    IEM_MC_END(); \
     
    1054610546                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    1054710547                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10548                 IEM_MC_ARG(uint16_t *,      pu16Dst,                    0); \
    10549                 IEM_MC_ARG_CONST(uint16_t,  u16Src, /*=*/ bImm & 0x0f,  1); \
    10550                 IEM_MC_ARG(uint32_t *,      pEFlags,                    2); \
    10551                 \
     10548                IEM_MC_ARG(uint16_t *,      pu16Dst,                    1); \
    1055210549                IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10553                 IEM_MC_REF_EFLAGS(pEFlags); \
    10554                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     10550                IEM_MC_ARG_EFLAGS(          fEFlagsIn,                  0); \
     10551                IEM_MC_ARG_CONST(uint16_t,  u16Src, /*=*/ bImm & 0x0f,  2); \
     10552                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
     10553                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1055510554                \
    1055610555                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    1056110560                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    1056210561                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10563                 IEM_MC_ARG(uint32_t *,      pu32Dst,                    0); \
    10564                 IEM_MC_ARG_CONST(uint32_t,  u32Src, /*=*/ bImm & 0x1f,  1); \
    10565                 IEM_MC_ARG(uint32_t *,      pEFlags,                    2); \
    10566                 \
     10562                IEM_MC_ARG(uint32_t *,      pu32Dst,                    1); \
    1056710563                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10568                 IEM_MC_REF_EFLAGS(pEFlags); \
    10569                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     10564                IEM_MC_ARG_EFLAGS(          fEFlagsIn,                  0); \
     10565                IEM_MC_ARG_CONST(uint32_t,  u32Src, /*=*/ bImm & 0x1f,  2); \
     10566                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
     10567                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1057010568                \
    1057110569                IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm)); \
     
    1057710575                IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \
    1057810576                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10579                 IEM_MC_ARG(uint64_t *,      pu64Dst,                    0); \
    10580                 IEM_MC_ARG_CONST(uint64_t,  u64Src, /*=*/ bImm & 0x3f,  1); \
    10581                 IEM_MC_ARG(uint32_t *,      pEFlags,                    2); \
    10582                 \
     10577                IEM_MC_ARG(uint64_t *,      pu64Dst,                    1); \
    1058310578                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10584                 IEM_MC_REF_EFLAGS(pEFlags); \
    10585                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     10579                IEM_MC_ARG_EFLAGS(          fEFlagsIn,                  0); \
     10580                IEM_MC_ARG_CONST(uint64_t,  u64Src, /*=*/ bImm & 0x3f,  2); \
     10581                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
     10582                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1058610583                \
    1058710584                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    1060910606                    \
    1061010607                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10611                     IEM_MC_ARG(uint16_t *,              pu16Dst,                    0); \
     10608                    IEM_MC_ARG(uint16_t *,              pu16Dst,                    1); \
    1061210609                    IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1061310610                    \
    10614                     IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    10615                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10616                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     10611                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10612                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  2); \
     10613                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
    1061710614                    \
    1061810615                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
    10619                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10616                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1062010617                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1062110618                    IEM_MC_END(); \
     
    1063110628                    \
    1063210629                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10633                     IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
     10630                    IEM_MC_ARG(uint32_t *,              pu32Dst,                    1); \
    1063410631                    IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1063510632                    \
    10636                     IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    10637                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10638                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     10633                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10634                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  2); \
     10635                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
    1063910636                    \
    1064010637                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
    10641                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10638                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1064210639                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1064310640                    IEM_MC_END(); \
     
    1065310650                    \
    1065410651                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10655                     IEM_MC_ARG(uint64_t *,              pu64Dst,                    0); \
     10652                    IEM_MC_ARG(uint64_t *,              pu64Dst,                    1); \
    1065610653                    IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1065710654                    \
    10658                     IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    10659                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10660                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     10655                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10656                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  2); \
     10657                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
    1066110658                    \
    1066210659                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
    10663                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10660                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1066410661                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1066510662                    IEM_MC_END(); \
     
    1068410681                    IEMOP_HLP_DONE_DECODING(); \
    1068510682                    \
    10686                     IEM_MC_ARG(uint16_t *,              pu16Dst,                    0); \
     10683                    IEM_MC_ARG(uint16_t *,              pu16Dst,                    1); \
    1068710684                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    1068810685                    IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1068910686                    \
    10690                     IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    10691                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10692                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
     10687                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10688                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  2); \
     10689                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU16, fEFlagsIn, pu16Dst, u16Src); \
    1069310690                    \
    1069410691                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
    10695                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10692                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1069610693                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1069710694                    IEM_MC_END(); \
     
    1070710704                    \
    1070810705                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10709                     IEM_MC_ARG(uint32_t *,              pu32Dst,                    0); \
     10706                    IEM_MC_ARG(uint32_t *,              pu32Dst,                    1); \
    1071010707                    IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1071110708                    \
    10712                     IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    10713                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10714                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
     10709                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10710                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  2); \
     10711                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU32, fEFlagsIn, pu32Dst, u32Src); \
    1071510712                    \
    1071610713                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
    10717                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10714                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1071810715                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1071910716                    IEM_MC_END(); \
     
    1072910726                    \
    1073010727                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10731                     IEM_MC_ARG(uint64_t *,              pu64Dst,                    0); \
     10728                    IEM_MC_ARG(uint64_t *,              pu64Dst,                    1); \
    1073210729                    IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1073310730                    \
    10734                     IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    10735                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10736                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
     10731                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10732                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  2); \
     10733                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnLockedU64, fEFlagsIn, pu64Dst, u64Src); \
    1073710734                    \
    1073810735                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
    10739                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10736                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1074010737                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1074110738                    IEM_MC_END(); \
     
    1076210759                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    1076310760                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10764                 IEM_MC_ARG(uint16_t const *, pu16Dst,                   0); \
    10765                 IEM_MC_ARG_CONST(uint16_t,   u16Src, /*=*/ bImm & 0x0f, 1); \
    10766                 IEM_MC_ARG(uint32_t *,       pEFlags,                   2); \
    10767                 \
     10761                IEM_MC_ARG(uint16_t const *,    pu16Dst,                    1); \
    1076810762                IEM_MC_REF_GREG_U16_CONST(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10769                 IEM_MC_REF_EFLAGS(pEFlags); \
    10770                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     10763                IEM_MC_ARG_EFLAGS(              fEFlagsIn,                  0); \
     10764                IEM_MC_ARG_CONST(uint16_t,      u16Src, /*=*/ bImm & 0x0f,  2); \
     10765                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
     10766                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1077110767                \
    1077210768                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    1077710773                IEM_MC_BEGIN(IEM_MC_F_MIN_386, 0); \
    1077810774                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10779                 IEM_MC_ARG(uint32_t const *, pu32Dst,                   0); \
    10780                 IEM_MC_ARG_CONST(uint32_t,   u32Src, /*=*/ bImm & 0x1f, 1); \
    10781                 IEM_MC_ARG(uint32_t *,       pEFlags,                   2); \
    10782                 \
     10775                IEM_MC_ARG(uint32_t const *,    pu32Dst,                    1); \
    1078310776                IEM_MC_REF_GREG_U32_CONST(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10784                 IEM_MC_REF_EFLAGS(pEFlags); \
    10785                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     10777                IEM_MC_ARG_EFLAGS(              fEFlagsIn,                  0); \
     10778                IEM_MC_ARG_CONST(uint32_t,      u32Src, /*=*/ bImm & 0x1f,  2); \
     10779                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
     10780                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1078610781                \
    1078710782                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    1079210787                IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \
    1079310788                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    10794                 IEM_MC_ARG(uint64_t const *, pu64Dst,                   0); \
    10795                 IEM_MC_ARG_CONST(uint64_t,   u64Src, /*=*/ bImm & 0x3f, 1); \
    10796                 IEM_MC_ARG(uint32_t *,       pEFlags,                   2); \
    10797                 \
     10789                IEM_MC_ARG(uint64_t const *,    pu64Dst,                    1); \
    1079810790                IEM_MC_REF_GREG_U64_CONST(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    10799                 IEM_MC_REF_EFLAGS(pEFlags); \
    10800                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     10791                IEM_MC_ARG_EFLAGS(              fEFlagsIn,                  0); \
     10792                IEM_MC_ARG_CONST(uint64_t,      u64Src, /*=*/ bImm & 0x3f,  2); \
     10793                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
     10794                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1080110795                \
    1080210796                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    1082410818                    \
    1082510819                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10826                     IEM_MC_ARG(uint16_t const *,        pu16Dst,                    0); \
     10820                    IEM_MC_ARG(uint16_t const *,        pu16Dst,                    1); \
    1082710821                    IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1082810822                    \
    10829                     IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    10830                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10831                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     10823                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10824                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  2); \
     10825                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU16, fEFlagsIn, pu16Dst, u16Src); \
    1083210826                    \
    1083310827                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
    10834                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10828                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1083510829                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1083610830                    IEM_MC_END(); \
     
    1084610840                    \
    1084710841                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10848                     IEM_MC_ARG(uint32_t const *,        pu32Dst,                    0); \
     10842                    IEM_MC_ARG(uint32_t const *,        pu32Dst,                    1); \
    1084910843                    IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1085010844                    \
    10851                     IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    10852                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10853                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     10845                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10846                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  2); \
     10847                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU32, fEFlagsIn, pu32Dst, u32Src); \
    1085410848                    \
    1085510849                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
    10856                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10850                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1085710851                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1085810852                    IEM_MC_END(); \
     
    1086810862                    \
    1086910863                    IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
    10870                     IEM_MC_ARG(uint64_t const *,        pu64Dst,                    0); \
     10864                    IEM_MC_ARG(uint64_t const *,        pu64Dst,                    1); \
    1087110865                    IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    1087210866                    \
    10873                     IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    10874                     IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    10875                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     10867                    IEM_MC_ARG_EFLAGS(                  fEFlagsIn,                  0); \
     10868                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  2); \
     10869                    IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, a_fnNormalU64, fEFlagsIn, pu64Dst, u64Src); \
    1087610870                    \
    1087710871                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
    10878                     IEM_MC_COMMIT_EFLAGS(EFlags); \
     10872                    IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    1087910873                    IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    1088010874                    IEM_MC_END(); \
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r104206 r104207  
    26862686/** @}  */
    26872687
    2688 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLBINTODOROU16,(uint16_t const *pu16Dst, uint16_t u16Src, uint32_t *pEFlags));
    2689 typedef FNIEMAIMPLBINTODOROU16 *PFNIEMAIMPLBINTODOROU16;
    2690 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLBINTODOROU32,(uint32_t const *pu32Dst, uint32_t u32Src, uint32_t *pEFlags));
    2691 typedef FNIEMAIMPLBINTODOROU32 *PFNIEMAIMPLBINTODOROU32;
    2692 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLBINTODOROU64,(uint64_t const *pu64Dst, uint64_t u64Src, uint32_t *pEFlags));
    2693 typedef FNIEMAIMPLBINTODOROU64 *PFNIEMAIMPLBINTODOROU64;
    2694 
    26952688/** @name Bit operations operations (thrown in with the binary ops).
    26962689 * @{ */
    2697 FNIEMAIMPLBINTODOROU16 iemAImpl_bt_u16;
    2698 FNIEMAIMPLBINTODOROU32 iemAImpl_bt_u32;
    2699 FNIEMAIMPLBINTODOROU64 iemAImpl_bt_u64;
    2700 FNIEMAIMPLBINTODOU16 iemAImpl_btc_u16, iemAImpl_btc_u16_locked;
    2701 FNIEMAIMPLBINTODOU32 iemAImpl_btc_u32, iemAImpl_btc_u32_locked;
    2702 FNIEMAIMPLBINTODOU64 iemAImpl_btc_u64, iemAImpl_btc_u64_locked;
    2703 FNIEMAIMPLBINTODOU16 iemAImpl_btr_u16, iemAImpl_btr_u16_locked;
    2704 FNIEMAIMPLBINTODOU32 iemAImpl_btr_u32, iemAImpl_btr_u32_locked;
    2705 FNIEMAIMPLBINTODOU64 iemAImpl_btr_u64, iemAImpl_btr_u64_locked;
    2706 FNIEMAIMPLBINTODOU16 iemAImpl_bts_u16, iemAImpl_bts_u16_locked;
    2707 FNIEMAIMPLBINTODOU32 iemAImpl_bts_u32, iemAImpl_bts_u32_locked;
    2708 FNIEMAIMPLBINTODOU64 iemAImpl_bts_u64, iemAImpl_bts_u64_locked;
     2690FNIEMAIMPLBINROU16 iemAImpl_bt_u16;
     2691FNIEMAIMPLBINROU32 iemAImpl_bt_u32;
     2692FNIEMAIMPLBINROU64 iemAImpl_bt_u64;
     2693FNIEMAIMPLBINU16 iemAImpl_btc_u16, iemAImpl_btc_u16_locked;
     2694FNIEMAIMPLBINU32 iemAImpl_btc_u32, iemAImpl_btc_u32_locked;
     2695FNIEMAIMPLBINU64 iemAImpl_btc_u64, iemAImpl_btc_u64_locked;
     2696FNIEMAIMPLBINU16 iemAImpl_btr_u16, iemAImpl_btr_u16_locked;
     2697FNIEMAIMPLBINU32 iemAImpl_btr_u32, iemAImpl_btr_u32_locked;
     2698FNIEMAIMPLBINU64 iemAImpl_btr_u64, iemAImpl_btr_u64_locked;
     2699FNIEMAIMPLBINU16 iemAImpl_bts_u16, iemAImpl_bts_u16_locked;
     2700FNIEMAIMPLBINU32 iemAImpl_bts_u32, iemAImpl_bts_u32_locked;
     2701FNIEMAIMPLBINU64 iemAImpl_bts_u64, iemAImpl_bts_u64_locked;
    27092702/** @}  */
    27102703
  • trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp

    r104206 r104207  
    19381938    ENTRY_BIN_PFN_CAST(cmp_u16,   PFNIEMAIMPLBINU16),
    19391939    ENTRY_BIN_PFN_CAST(test_u16,  PFNIEMAIMPLBINU16),
    1940 #if 0 /** @todo convert to new eflags format  */
    19411940    ENTRY_BIN_PFN_CAST_EX(bt_u16, PFNIEMAIMPLBINU16, 1),
    19421941    ENTRY_BIN_EX(btc_u16, 1),
     
    19461945    ENTRY_BIN_EX(bts_u16, 1),
    19471946    ENTRY_BIN_EX(bts_u16_locked, 1),
    1948 #endif
    19491947    ENTRY_BIN_AMD(  bsf_u16, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
    19501948    ENTRY_BIN_INTEL(bsf_u16, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
     
    19881986    ENTRY_BIN_PFN_CAST(cmp_u32,   PFNIEMAIMPLBINU32),
    19891987    ENTRY_BIN_PFN_CAST(test_u32,  PFNIEMAIMPLBINU32),
    1990 #if 0 /** @todo convert to new eflags format  */
    19911988    ENTRY_BIN_PFN_CAST_EX(bt_u32, PFNIEMAIMPLBINU32, 1),
    19921989    ENTRY_BIN_EX(btc_u32, 1),
     
    19961993    ENTRY_BIN_EX(bts_u32, 1),
    19971994    ENTRY_BIN_EX(bts_u32_locked, 1),
    1998 #endif
    19991995    ENTRY_BIN_AMD(  bsf_u32, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
    20001996    ENTRY_BIN_INTEL(bsf_u32, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
     
    20392035    ENTRY_BIN_PFN_CAST(cmp_u64,   PFNIEMAIMPLBINU64),
    20402036    ENTRY_BIN_PFN_CAST(test_u64,  PFNIEMAIMPLBINU64),
    2041 #if 0 /** @todo convert to new eflags format  */
    20422037    ENTRY_BIN_PFN_CAST_EX(bt_u64, PFNIEMAIMPLBINU64, 1),
    20432038    ENTRY_BIN_EX(btc_u64, 1),
     
    20472042    ENTRY_BIN_EX(bts_u64, 1),
    20482043    ENTRY_BIN_EX(bts_u64_locked, 1),
    2049 #endif
    20502044    ENTRY_BIN_AMD(  bsf_u64, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
    20512045    ENTRY_BIN_INTEL(bsf_u64, X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_SF | X86_EFL_OF),
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