VirtualBox

Changeset 103772 in vbox


Ignore:
Timestamp:
Mar 11, 2024 3:27:51 PM (13 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162141
Message:

VMM/IEM: IEMOP_BODY_BINARY_Ev_Ib_RW/RO refactoring. No change. bugref:10376

File:
1 edited

Legend:

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

    r103764 r103772  
    50785078 * iemOp_Grp1_Ev_Ib.
    50795079 */
    5080 #define IEMOP_BODY_BINARY_Ev_Ib_RW(a_fnNormalU16, a_fnNormalU32, a_fnNormalU64) \
     5080#define IEMOP_BODY_BINARY_Ev_Ib_RW(a_InsNm, a_fRegNativeArchs, a_fMemNativeArchs) \
    50815081    if (IEM_IS_MODRM_REG_MODE(bRm)) \
    50825082    { \
     
    50965096                IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    50975097                IEM_MC_REF_EFLAGS(pEFlags); \
    5098                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     5098                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    50995099                \
    51005100                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    51115111                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    51125112                IEM_MC_REF_EFLAGS(pEFlags); \
    5113                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     5113                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    51145114                IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm)); \
    51155115                \
     
    51275127                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    51285128                IEM_MC_REF_EFLAGS(pEFlags); \
    5129                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     5129                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    51305130                \
    51315131                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    51605160                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    51615161                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5162                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     5162                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    51635163                    \
    51645164                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
     
    51835183                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    51845184                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5185                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     5185                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    51865186                    \
    51875187                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
     
    52065206                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    52075207                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5208                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     5208                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    52095209                    \
    52105210                    IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo); \
     
    52195219        else \
    52205220        { \
    5221             (void)0
    5222 /* Separate macro to work around parsing issue in IEMAllInstPython.py */
    5223 #define IEMOP_BODY_BINARY_Ev_Ib_LOCKED(a_fnLockedU16, a_fnLockedU32, a_fnLockedU64) \
    52245221            switch (pVCpu->iem.s.enmEffOpSize) \
    52255222            { \
     
    52395236                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    52405237                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5241                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
     5238                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \
    52425239                    \
    52435240                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
     
    52625259                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    52635260                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5264                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
     5261                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \
    52655262                    \
    52665263                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
     
    52855282                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    52865283                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5287                     IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
     5284                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \
    52885285                    \
    52895286                    IEM_MC_MEM_COMMIT_AND_UNMAP_ATOMIC(bUnmapInfo); \
     
    53005297
    53015298/* read-only variant */
    5302 #define IEMOP_BODY_BINARY_Ev_Ib_RO(a_fnNormalU16, a_fnNormalU32, a_fnNormalU64) \
     5299#define IEMOP_BODY_BINARY_Ev_Ib_RO(a_InsNm, a_fNativeArchs) \
    53035300    if (IEM_IS_MODRM_REG_MODE(bRm)) \
    53045301    { \
     
    53125309                IEM_MC_BEGIN(3, 0, 0, 0); \
    53135310                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    5314                 IEM_MC_ARG(uint16_t *,      pu16Dst,                                        0); \
    5315                 IEM_MC_ARG_CONST(uint16_t,  u16Src, /*=*/ (uint16_t)(int16_t)(int8_t)u8Imm, 1); \
    5316                 IEM_MC_ARG(uint32_t *,      pEFlags,                                        2); \
     5311                IEM_MC_ARG(uint16_t const *,    pu16Dst,                                        0); \
     5312                IEM_MC_ARG_CONST(uint16_t,      u16Src, /*=*/ (uint16_t)(int16_t)(int8_t)u8Imm, 1); \
     5313                IEM_MC_ARG(uint32_t *,          pEFlags,                                        2); \
    53175314                \
    5318                 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     5315                IEM_MC_REF_GREG_U16_CONST(pu16Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    53195316                IEM_MC_REF_EFLAGS(pEFlags); \
    5320                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     5317                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    53215318                \
    53225319                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    53275324                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    53285325                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    5329                 IEM_MC_ARG(uint32_t *,      pu32Dst,                                        0); \
    5330                 IEM_MC_ARG_CONST(uint32_t,  u32Src, /*=*/ (uint32_t)(int32_t)(int8_t)u8Imm, 1); \
    5331                 IEM_MC_ARG(uint32_t *,      pEFlags,                                        2); \
     5326                IEM_MC_ARG(uint32_t const *,    pu32Dst,                                        0); \
     5327                IEM_MC_ARG_CONST(uint32_t,      u32Src, /*=*/ (uint32_t)(int32_t)(int8_t)u8Imm, 1); \
     5328                IEM_MC_ARG(uint32_t *,          pEFlags,                                        2); \
    53325329                \
    5333                 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     5330                IEM_MC_REF_GREG_U32_CONST(pu32Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    53345331                IEM_MC_REF_EFLAGS(pEFlags); \
    5335                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     5332                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    53365333                \
    53375334                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    53425339                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    53435340                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    5344                 IEM_MC_ARG(uint64_t *,      pu64Dst,                                        0); \
    5345                 IEM_MC_ARG_CONST(uint64_t,  u64Src, /*=*/ (uint64_t)(int64_t)(int8_t)u8Imm, 1); \
    5346                 IEM_MC_ARG(uint32_t *,      pEFlags,                                        2); \
     5341                IEM_MC_ARG(uint64_t const *,    pu64Dst,                                        0); \
     5342                IEM_MC_ARG_CONST(uint64_t,      u64Src, /*=*/ (uint64_t)(int64_t)(int8_t)u8Imm, 1); \
     5343                IEM_MC_ARG(uint32_t *,          pEFlags,                                        2); \
    53475344                \
    5348                 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     5345                IEM_MC_REF_GREG_U64_CONST(pu64Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    53495346                IEM_MC_REF_EFLAGS(pEFlags); \
    5350                 IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     5347                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    53515348                \
    53525349                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    53815378                    IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,                           2); \
    53825379                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5383                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     5380                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    53845381                    \
    53855382                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    54045401                    IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,                           2); \
    54055402                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5406                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     5403                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    54075404                    \
    54085405                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    54275424                    IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,                           2); \
    54285425                    IEM_MC_FETCH_EFLAGS(EFlags); \
    5429                     IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     5426                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    54305427                    \
    54315428                    IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    54545451{
    54555452    IEMOP_MNEMONIC(add_Ev_Ib, "add Ev,Ib");
    5456     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_add_u16,        iemAImpl_add_u32,        iemAImpl_add_u64);
    5457     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_add_u16_locked, iemAImpl_add_u32_locked, iemAImpl_add_u64_locked);
     5453    IEMOP_BODY_BINARY_Ev_Ib_RW(add, 0, 0);
    54585454}
    54595455
     
    54675463{
    54685464    IEMOP_MNEMONIC(or_Ev_Ib, "or Ev,Ib");
    5469     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_or_u16,        iemAImpl_or_u32,        iemAImpl_or_u64);
    5470     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_or_u16_locked, iemAImpl_or_u32_locked, iemAImpl_or_u64_locked);
     5465    IEMOP_BODY_BINARY_Ev_Ib_RW(or, 0, 0);
    54715466}
    54725467
     
    54805475{
    54815476    IEMOP_MNEMONIC(adc_Ev_Ib, "adc Ev,Ib");
    5482     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_adc_u16,        iemAImpl_adc_u32,        iemAImpl_adc_u64);
    5483     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_adc_u16_locked, iemAImpl_adc_u32_locked, iemAImpl_adc_u64_locked);
     5477    IEMOP_BODY_BINARY_Ev_Ib_RW(adc, 0, 0);
    54845478}
    54855479
     
    54935487{
    54945488    IEMOP_MNEMONIC(sbb_Ev_Ib, "sbb Ev,Ib");
    5495     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_sbb_u16,        iemAImpl_sbb_u32,        iemAImpl_sbb_u64);
    5496     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_sbb_u16_locked, iemAImpl_sbb_u32_locked, iemAImpl_sbb_u64_locked);
     5489    IEMOP_BODY_BINARY_Ev_Ib_RW(sbb, 0, 0);
    54975490}
    54985491
     
    55065499{
    55075500    IEMOP_MNEMONIC(and_Ev_Ib, "and Ev,Ib");
    5508     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_and_u16,        iemAImpl_and_u32,        iemAImpl_and_u64);
    5509     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_and_u16_locked, iemAImpl_and_u32_locked, iemAImpl_and_u64_locked);
     5501    IEMOP_BODY_BINARY_Ev_Ib_RW(and, 0, 0);
    55105502}
    55115503
     
    55195511{
    55205512    IEMOP_MNEMONIC(sub_Ev_Ib, "sub Ev,Ib");
    5521     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_sub_u16,        iemAImpl_sub_u32,        iemAImpl_sub_u64);
    5522     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_sub_u16_locked, iemAImpl_sub_u32_locked, iemAImpl_sub_u64_locked);
     5513    IEMOP_BODY_BINARY_Ev_Ib_RW(sub, 0, 0);
    55235514}
    55245515
     
    55325523{
    55335524    IEMOP_MNEMONIC(xor_Ev_Ib, "xor Ev,Ib");
    5534     IEMOP_BODY_BINARY_Ev_Ib_RW(    iemAImpl_xor_u16,        iemAImpl_xor_u32,        iemAImpl_xor_u64);
    5535     IEMOP_BODY_BINARY_Ev_Ib_LOCKED(iemAImpl_xor_u16_locked, iemAImpl_xor_u32_locked, iemAImpl_xor_u64_locked);
     5525    IEMOP_BODY_BINARY_Ev_Ib_RW(xor, 0, 0);
    55365526}
    55375527
     
    55455535{
    55465536    IEMOP_MNEMONIC(cmp_Ev_Ib, "cmp Ev,Ib");
    5547     IEMOP_BODY_BINARY_Ev_Ib_RO(iemAImpl_cmp_u16, iemAImpl_cmp_u32, iemAImpl_cmp_u64);
     5537    IEMOP_BODY_BINARY_Ev_Ib_RO(cmp, 0);
    55485538}
    55495539
Note: See TracChangeset for help on using the changeset viewer.

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