VirtualBox

Changeset 104017 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Mar 23, 2024 11:24:52 PM (11 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162405
Message:

VMM/IEM: Modified the IEM_MC_ARG_LOCAL_EFLAGS behaviour to also include IEM_MC_FETCH_EFLAGS. bugref:10369

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

Legend:

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

    r104016 r104017  
    122122            IEM_MC_ARG(uint8_t *,  pu8Dst,           0); \
    123123            IEM_MC_ARG(uint8_t,    u8Src,            1); \
    124             IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    125124            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    126125            IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    130129            IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    131130            IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    132             IEM_MC_FETCH_EFLAGS(EFlags); \
     131            IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    133132            IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8), pu8Dst, u8Src, pEFlags); \
    134133            \
     
    143142            IEM_MC_ARG(uint8_t *,  pu8Dst,           0); \
    144143            IEM_MC_ARG(uint8_t,    u8Src,            1); \
    145             IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    146144            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    147145            IEM_MC_LOCAL(uint8_t, bMapInfoDst); \
     
    151149            IEM_MC_MEM_MAP_U8_ATOMIC(pu8Dst, bMapInfoDst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    152150            IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    153             IEM_MC_FETCH_EFLAGS(EFlags); \
     151            IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    154152            IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8_locked), pu8Dst, u8Src, pEFlags); \
    155153            \
     
    220218                IEM_MC_FETCH_GREG_U8(u8Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    221219                IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 2); \
    222                 IEM_MC_FETCH_EFLAGS(EFlags); \
    223220                IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU8, pu8Dst, u8Src, pEFlags); \
    224221                IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    457454                    IEM_MC_ARG(uint16_t *, pu16Dst,          0); \
    458455                    IEM_MC_ARG(uint16_t,   u16Src,           1); \
    459                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    460456                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    461457                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    465461                    IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    466462                    IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    467                     IEM_MC_FETCH_EFLAGS(EFlags); \
     463                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    468464                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    469465                    \
     
    478474                    IEM_MC_ARG(uint32_t *, pu32Dst,          0); \
    479475                    IEM_MC_ARG(uint32_t,   u32Src,           1); \
    480                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    481476                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    482477                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    486481                    IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    487482                    IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    488                     IEM_MC_FETCH_EFLAGS(EFlags); \
     483                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    489484                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    490485                    \
     
    499494                    IEM_MC_ARG(uint64_t *, pu64Dst,          0); \
    500495                    IEM_MC_ARG(uint64_t,   u64Src,           1); \
    501                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    502496                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    503497                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    507501                    IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    508502                    IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    509                     IEM_MC_FETCH_EFLAGS(EFlags); \
     503                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    510504                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    511505                    \
     
    530524                    IEM_MC_ARG(uint16_t *, pu16Dst,          0); \
    531525                    IEM_MC_ARG(uint16_t,   u16Src,           1); \
    532                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    533526                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    534527                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    538531                    IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    539532                    IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    540                     IEM_MC_FETCH_EFLAGS(EFlags); \
     533                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    541534                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \
    542535                    \
     
    551544                    IEM_MC_ARG(uint32_t *, pu32Dst,          0); \
    552545                    IEM_MC_ARG(uint32_t,   u32Src,           1); \
    553                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    554546                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    555547                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    559551                    IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    560552                    IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    561                     IEM_MC_FETCH_EFLAGS(EFlags); \
     553                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    562554                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \
    563555                    \
     
    572564                    IEM_MC_ARG(uint64_t *, pu64Dst,          0); \
    573565                    IEM_MC_ARG(uint64_t,   u64Src,           1); \
    574                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    575566                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    576567                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    580571                    IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    581572                    IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    582                     IEM_MC_FETCH_EFLAGS(EFlags); \
     573                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    583574                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \
    584575                    \
     
    707698                        IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    708699                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags, 2); \
    709                         IEM_MC_FETCH_EFLAGS(EFlags); \
    710700                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    711701                        IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    736726                        IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    737727                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags, 2); \
    738                         IEM_MC_FETCH_EFLAGS(EFlags); \
    739728                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    740729                        IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    765754                        IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    766755                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags, 2); \
    767                         IEM_MC_FETCH_EFLAGS(EFlags); \
    768756                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    769757                        IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \
     
    29662954        IEM_MC_ARG(uint16_t *, pu16Dst,          0);
    29672955        IEM_MC_ARG(uint16_t,   u16Src,           1);
    2968         IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);
    29692956        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    29702957        IEM_MC_LOCAL(uint8_t, bUnmapInfo);
     
    29742961        IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
    29752962        IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG_8(bRm));
    2976         IEM_MC_FETCH_EFLAGS(EFlags);
     2963        IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);
    29772964        IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_arpl, pu16Dst, u16Src, pEFlags);
    29782965
     
    42074194            IEM_MC_LOCAL(uint8_t,       u8Dst); \
    42084195            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    4209             IEM_MC_LOCAL(uint32_t,      uEFlags); \
    4210             IEM_MC_FETCH_EFLAGS(uEFlags); \
     4196            IEM_MC_LOCAL_EFLAGS(        uEFlags); \
    42114197            IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    42124198            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Dst); \
     
    42294215        { \
    42304216            IEM_MC_BEGIN(3, 3, 0, 0); \
    4231             IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
    4232             IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    42334217            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    4234             IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     4218            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \
    42354219            \
    4236             IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); \
    42374220            uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \
    42384221            IEM_MC_ARG_CONST(uint8_t,   u8Src, /*=*/ u8Imm,     1); \
    42394222            IEMOP_HLP_DONE_DECODING(); \
    42404223            \
     4224            IEM_MC_LOCAL(uint8_t,       bUnmapInfo); \
     4225            IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
    42414226            IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    4242             IEM_MC_FETCH_EFLAGS(EFlags); \
     4227            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    42434228            IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8), pu8Dst, u8Src, pEFlags); \
    42444229            \
     
    42524237            IEM_MC_BEGIN(3, 3, 0, 0); \
    42534238            IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
    4254             IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    42554239            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    42564240            IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    42624246            \
    42634247            IEM_MC_MEM_MAP_U8_ATOMIC(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    4264             IEM_MC_FETCH_EFLAGS(EFlags); \
     4248            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    42654249            IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8_locked), pu8Dst, u8Src, pEFlags); \
    42664250            \
     
    42834267            IEM_MC_LOCAL(uint8_t,       u8Dst); \
    42844268            IEM_MC_FETCH_GREG_U8(u8Dst, IEM_GET_MODRM_RM(pVCpu, bRm)); \
    4285             IEM_MC_LOCAL(uint32_t,      uEFlags); \
    4286             IEM_MC_FETCH_EFLAGS(uEFlags); \
     4269            IEM_MC_LOCAL_EFLAGS(uEFlags); \
    42874270            IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    42884271            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    43114294                IEM_MC_LOCAL(uint8_t,       u8Dst); \
    43124295                IEM_MC_FETCH_MEM_U8(u8Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    4313                 IEM_MC_LOCAL(uint32_t,      uEFlags); \
    4314                 IEM_MC_FETCH_EFLAGS(uEFlags); \
     4296                IEM_MC_LOCAL_EFLAGS(uEFlags); \
    43154297                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    43164298                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    43204302                IEM_MC_MEM_MAP_U8_RO(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    43214303                IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    4322                 IEM_MC_FETCH_EFLAGS(EFlags); \
    43234304                IEM_MC_ARG_CONST(uint8_t,   u8Src, /*=*/ u8Imm,     1); \
    43244305                IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u8), pu8Dst, u8Src, pEFlags); \
     
    45694550                    IEM_MC_ARG_CONST(uint16_t,  u16Src,  u16Imm,        1); \
    45704551                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    4571                     IEM_MC_FETCH_EFLAGS(EFlags); \
    45724552                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    45734553                    \
     
    45944574                    IEM_MC_ARG_CONST(uint32_t,  u32Src,     u32Imm,     1); \
    45954575                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags,    EFlags,     2); \
    4596                     IEM_MC_FETCH_EFLAGS(EFlags); \
    45974576                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    45984577                    \
     
    46204599                    IEM_MC_ARG_CONST(uint64_t,  u64Src,  u64Imm,        1); \
    46214600                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    4622                     IEM_MC_FETCH_EFLAGS(EFlags); \
    46234601                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    46244602                    \
     
    46524630                    IEM_MC_ARG_CONST(uint16_t,  u16Src,  u16Imm,        1); \
    46534631                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    4654                     IEM_MC_FETCH_EFLAGS(EFlags); \
    46554632                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \
    46564633                    \
     
    46774654                    IEM_MC_ARG_CONST(uint32_t,  u32Src,  u32Imm,        1); \
    46784655                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    4679                     IEM_MC_FETCH_EFLAGS(EFlags); \
    46804656                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \
    46814657                    \
     
    47024678                    IEM_MC_ARG_CONST(uint64_t,  u64Src,  u64Imm,        1); \
    47034679                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
    4704                     IEM_MC_FETCH_EFLAGS(EFlags); \
    47054680                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \
    47064681                    \
     
    48204795                        IEM_MC_LOCAL(uint16_t,      u16Dst); \
    48214796                        IEM_MC_FETCH_MEM_U16(u16Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    4822                         IEM_MC_LOCAL(uint32_t,      uEFlags); \
    4823                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     4797                        IEM_MC_LOCAL_EFLAGS(uEFlags); \
    48244798                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \
    48254799                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    48294803                        IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    48304804                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,       2); \
    4831                         IEM_MC_FETCH_EFLAGS(EFlags); \
    48324805                        IEM_MC_ARG_CONST(uint16_t,   u16Src,  u16Imm,       1); \
    48334806                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
     
    48504823                        IEM_MC_LOCAL(uint32_t,      u32Dst); \
    48514824                        IEM_MC_FETCH_MEM_U32(u32Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    4852                         IEM_MC_LOCAL(uint32_t,      uEFlags); \
    4853                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     4825                        IEM_MC_LOCAL_EFLAGS(uEFlags); \
    48544826                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \
    48554827                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    48594831                        IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    48604832                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,       2); \
    4861                         IEM_MC_FETCH_EFLAGS(EFlags); \
    48624833                        IEM_MC_ARG_CONST(uint32_t,   u32Src,  u32Imm,       1); \
    48634834                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
     
    48804851                        IEM_MC_LOCAL(uint64_t,      u64Dst); \
    48814852                        IEM_MC_FETCH_MEM_U64(u64Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    4882                         IEM_MC_LOCAL(uint32_t,      uEFlags); \
    4883                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     4853                        IEM_MC_LOCAL_EFLAGS(        uEFlags); \
    48844854                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \
    48854855                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    48894859                        IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    48904860                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,       2); \
    4891                         IEM_MC_FETCH_EFLAGS(EFlags); \
    48924861                        IEM_MC_ARG_CONST(uint64_t,   u64Src,  u64Imm,       1); \
    48934862                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
     
    51505119                    IEM_MC_ARG_CONST(uint16_t,  u16Src,  (uint16_t)(int16_t)(int8_t)u8Imm,  1); \
    51515120                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    5152                     IEM_MC_FETCH_EFLAGS(EFlags); \
    51535121                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
    51545122                    \
     
    51735141                    IEM_MC_ARG_CONST(uint32_t,  u32Src,  (uint32_t)(int32_t)(int8_t)u8Imm,  1); \
    51745142                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    5175                     IEM_MC_FETCH_EFLAGS(EFlags); \
    51765143                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
    51775144                    \
     
    51965163                    IEM_MC_ARG_CONST(uint64_t,  u64Src,  (uint64_t)(int64_t)(int8_t)u8Imm,  1); \
    51975164                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    5198                     IEM_MC_FETCH_EFLAGS(EFlags); \
    51995165                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
    52005166                    \
     
    52265192                    IEM_MC_ARG_CONST(uint16_t,  u16Src,  (uint16_t)(int16_t)(int8_t)u8Imm,  1); \
    52275193                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    5228                     IEM_MC_FETCH_EFLAGS(EFlags); \
    52295194                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16_locked), pu16Dst, u16Src, pEFlags); \
    52305195                    \
     
    52495214                    IEM_MC_ARG_CONST(uint32_t,  u32Src,  (uint32_t)(int32_t)(int8_t)u8Imm,  1); \
    52505215                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    5251                     IEM_MC_FETCH_EFLAGS(EFlags); \
    52525216                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32_locked), pu32Dst, u32Src, pEFlags); \
    52535217                    \
     
    52725236                    IEM_MC_ARG_CONST(uint64_t,  u64Src, (uint64_t)(int64_t)(int8_t)u8Imm,   1); \
    52735237                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,                            2); \
    5274                     IEM_MC_FETCH_EFLAGS(EFlags); \
    52755238                    IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64_locked), pu64Dst, u64Src, pEFlags); \
    52765239                    \
     
    53845347                        IEM_MC_LOCAL(uint16_t,      u16Dst); \
    53855348                        IEM_MC_FETCH_MEM_U16(u16Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    5386                         IEM_MC_LOCAL(uint32_t,      uEFlags); \
    5387                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     5349                        IEM_MC_LOCAL_EFLAGS(        uEFlags); \
    53885350                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, (uint16_t)(int16_t)(int8_t)u8Imm, uEFlags, 16, 8); \
    53895351                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    53935355                        IEM_MC_MEM_MAP_U16_RO(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    53945356                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,                           2); \
    5395                         IEM_MC_FETCH_EFLAGS(EFlags); \
    53965357                        IEM_MC_ARG_CONST(uint16_t,   u16Src, (uint16_t)(int16_t)(int8_t)u8Imm,  1); \
    53975358                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \
     
    54125373                        IEM_MC_LOCAL(uint32_t,      u32Dst); \
    54135374                        IEM_MC_FETCH_MEM_U32(u32Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    5414                         IEM_MC_LOCAL(uint32_t,      uEFlags); \
    5415                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     5375                        IEM_MC_LOCAL_EFLAGS(        uEFlags); \
    54165376                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, (uint32_t)(int32_t)(int8_t)u8Imm, uEFlags, 32, 8); \
    54175377                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    54215381                        IEM_MC_MEM_MAP_U32_RO(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    54225382                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,                           2); \
    5423                         IEM_MC_FETCH_EFLAGS(EFlags); \
    54245383                        IEM_MC_ARG_CONST(uint32_t,   u32Src, (uint32_t)(int32_t)(int8_t)u8Imm,  1); \
    54255384                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \
     
    54405399                        IEM_MC_LOCAL(uint64_t,      u64Dst); \
    54415400                        IEM_MC_FETCH_MEM_U64(u64Dst, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    5442                         IEM_MC_LOCAL(uint32_t,      uEFlags); \
    5443                         IEM_MC_FETCH_EFLAGS(uEFlags); \
     5401                        IEM_MC_LOCAL_EFLAGS(        uEFlags); \
    54445402                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, (uint64_t)(int64_t)(int8_t)u8Imm, uEFlags, 64, 8); \
    54455403                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
     
    54495407                        IEM_MC_MEM_MAP_U64_RO(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    54505408                        IEM_MC_ARG_LOCAL_EFLAGS(     pEFlags, EFlags,                           2); \
    5451                         IEM_MC_FETCH_EFLAGS(EFlags); \
    54525409                        IEM_MC_ARG_CONST(uint64_t,  u64Src, (uint64_t)(int64_t)(int8_t)u8Imm,   1); \
    54535410                        IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \
     
    86738630            IEM_MC_ARG_CONST(uint8_t,   cShiftArg, cShift, 1); \
    86748631            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags,   EFlags, 2); \
    8675             IEM_MC_FETCH_EFLAGS(EFlags); \
    86768632            IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); \
    86778633            \
     
    88568812                    IEM_MC_ARG_CONST(uint8_t,   cShiftArg,  cShift, 1); \
    88578813                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags,    EFlags, 2); \
    8858                     IEM_MC_FETCH_EFLAGS(EFlags); \
    88598814                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \
    88608815                    \
     
    88798834                    IEM_MC_ARG_CONST(uint8_t,   cShiftArg,  cShift, 1); \
    88808835                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags,    EFlags, 2); \
    8881                     IEM_MC_FETCH_EFLAGS(EFlags); \
    88828836                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); \
    88838837                    \
     
    89028856                    IEM_MC_ARG_CONST(uint8_t,   cShiftArg,  cShift, 1); \
    89038857                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags,    EFlags, 2); \
    8904                     IEM_MC_FETCH_EFLAGS(EFlags); \
    89058858                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); \
    89068859                    \
     
    95459498            IEM_MC_ARG(uint8_t *,       pu8Dst,             0); \
    95469499            IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=*/1,   1); \
    9547             IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    95489500            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    95499501            IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    95529504            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    95539505            IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    9554             IEM_MC_FETCH_EFLAGS(EFlags); \
     9506            IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    95559507            IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); \
    95569508            \
     
    97169668                    IEM_MC_ARG(uint16_t *,      pu16Dst,            0); \
    97179669                    IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=1*/1,  1); \
    9718                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    97199670                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    97209671                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    97239674                    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    97249675                    IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    9725                     IEM_MC_FETCH_EFLAGS(EFlags); \
     9676                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    97269677                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \
    97279678                    \
     
    97369687                    IEM_MC_ARG(uint32_t *,      pu32Dst,            0); \
    97379688                    IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=1*/1,  1); \
    9738                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    97399689                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    97409690                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    97439693                    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    97449694                    IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    9745                     IEM_MC_FETCH_EFLAGS(EFlags); \
     9695                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    97469696                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); \
    97479697                    \
     
    97569706                    IEM_MC_ARG(uint64_t *,      pu64Dst,            0); \
    97579707                    IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=1*/1,  1); \
    9758                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    97599708                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    97609709                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    97639712                    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    97649713                    IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    9765                     IEM_MC_FETCH_EFLAGS(EFlags); \
     9714                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags,        2); \
    97669715                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); \
    97679716                    \
     
    99149863            IEM_MC_ARG(uint8_t *,   pu8Dst,          0); \
    99159864            IEM_MC_ARG(uint8_t,     cShiftArg,       1); \
    9916             IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    99179865            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    99189866            IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    99229870            IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    99239871            IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    9924             IEM_MC_FETCH_EFLAGS(EFlags); \
     9872            IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    99259873            IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU8, pu8Dst, cShiftArg, pEFlags); \
    99269874            \
     
    1009410042                    IEM_MC_ARG(uint16_t *,  pu16Dst,    0); \
    1009510043                    IEM_MC_ARG(uint8_t,     cShiftArg,  1); \
    10096                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    1009710044                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1009810045                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1010210049                    IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    1010310050                    IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    10104                     IEM_MC_FETCH_EFLAGS(EFlags); \
     10051                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    1010510052                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, cShiftArg, pEFlags); \
    1010610053                    \
     
    1011510062                    IEM_MC_ARG(uint32_t *,  pu32Dst,    0); \
    1011610063                    IEM_MC_ARG(uint8_t,     cShiftArg,  1); \
    10117                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    1011810064                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1011910065                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1012310069                    IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    1012410070                    IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    10125                     IEM_MC_FETCH_EFLAGS(EFlags); \
     10071                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    1012610072                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, cShiftArg, pEFlags); \
    1012710073                    \
     
    1013610082                    IEM_MC_ARG(uint64_t *,  pu64Dst,    0); \
    1013710083                    IEM_MC_ARG(uint8_t,     cShiftArg,  1); \
    10138                     IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    1013910084                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1014010085                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1014410089                    IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    1014510090                    IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    10146                     IEM_MC_FETCH_EFLAGS(EFlags); \
     10091                    IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2); \
    1014710092                    IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, cShiftArg, pEFlags); \
    1014810093                    \
     
    1413914084            IEM_MC_BEGIN(2, 2, 0, 0); \
    1414014085            IEM_MC_ARG(uint8_t *,       pu8Dst,          0); \
    14141             IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1414214086            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1414314087            IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1414614090            IEMOP_HLP_DONE_DECODING(); \
    1414714091            IEM_MC_MEM_MAP_U8_RW(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14148             IEM_MC_FETCH_EFLAGS(EFlags); \
     14092            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1414914093            IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU8, pu8Dst, pEFlags); \
    1415014094            \
     
    1415814102            IEM_MC_BEGIN(2, 2, 0, 0); \
    1415914103            IEM_MC_ARG(uint8_t *,       pu8Dst,          0); \
    14160             IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1416114104            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1416214105            IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1416514108            IEMOP_HLP_DONE_DECODING(); \
    1416614109            IEM_MC_MEM_MAP_U8_ATOMIC(pu8Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14167             IEM_MC_FETCH_EFLAGS(EFlags); \
     14110            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1416814111            IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU8, pu8Dst, pEFlags); \
    1416914112            \
     
    1424014183                    IEM_MC_BEGIN(2, 3, 0, 0); \
    1424114184                    IEM_MC_ARG(uint16_t *,      pu16Dst,         0); \
    14242                     IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1424314185                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1424414186                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1424714189                    IEMOP_HLP_DONE_DECODING(); \
    1424814190                    IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14249                     IEM_MC_FETCH_EFLAGS(EFlags); \
     14191                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1425014192                    IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU16, pu16Dst, pEFlags); \
    1425114193                    \
     
    1425914201                    IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \
    1426014202                    IEM_MC_ARG(uint32_t *,      pu32Dst,         0); \
    14261                     IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1426214203                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1426314204                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1426614207                    IEMOP_HLP_DONE_DECODING(); \
    1426714208                    IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14268                     IEM_MC_FETCH_EFLAGS(EFlags); \
     14209                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1426914210                    IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU32, pu32Dst, pEFlags); \
    1427014211                    \
     
    1427814219                    IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \
    1427914220                    IEM_MC_ARG(uint64_t *,      pu64Dst,         0); \
    14280                     IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1428114221                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1428214222                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1428514225                    IEMOP_HLP_DONE_DECODING(); \
    1428614226                    IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14287                     IEM_MC_FETCH_EFLAGS(EFlags); \
     14227                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1428814228                    IEM_MC_CALL_VOID_AIMPL_2(a_fnNormalU64, pu64Dst, pEFlags); \
    1428914229                    \
     
    1430714247                    IEM_MC_BEGIN(2, 3, 0, 0); \
    1430814248                    IEM_MC_ARG(uint16_t *,      pu16Dst,         0); \
    14309                     IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1431014249                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1431114250                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1431414253                    IEMOP_HLP_DONE_DECODING(); \
    1431514254                    IEM_MC_MEM_MAP_U16_ATOMIC(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14316                     IEM_MC_FETCH_EFLAGS(EFlags); \
     14255                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1431714256                    IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU16, pu16Dst, pEFlags); \
    1431814257                    \
     
    1432614265                    IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \
    1432714266                    IEM_MC_ARG(uint32_t *,      pu32Dst,         0); \
    14328                     IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1432914267                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1433014268                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1433314271                    IEMOP_HLP_DONE_DECODING(); \
    1433414272                    IEM_MC_MEM_MAP_U32_ATOMIC(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14335                     IEM_MC_FETCH_EFLAGS(EFlags); \
     14273                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1433614274                    IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU32, pu32Dst, pEFlags); \
    1433714275                    \
     
    1434514283                    IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \
    1434614284                    IEM_MC_ARG(uint64_t *,      pu64Dst,         0); \
    14347                     IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1434814285                    IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); \
    1434914286                    IEM_MC_LOCAL(uint8_t, bUnmapInfo); \
     
    1435214289                    IEMOP_HLP_DONE_DECODING(); \
    1435314290                    IEM_MC_MEM_MAP_U64_ATOMIC(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    14354                     IEM_MC_FETCH_EFLAGS(EFlags); \
     14291                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
    1435514292                    IEM_MC_CALL_VOID_AIMPL_2(a_fnLockedU64, pu64Dst, pEFlags); \
    1435614293                    \
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py

    r104016 r104017  
    22732273        """ IEM_MC_ARG_LOCAL_EFLAGS """
    22742274        oSelf.checkStmtParamCount(sName, asParams, 3);
    2275         # Note! We split this one up into IEM_MC_LOCAL_VAR and IEM_MC_ARG_LOCAL_REF.
     2275        # Note! We split this one up into IEM_MC_LOCAL_VAR, IEM_MC_ARG_LOCAL_REF and IEM_MC_FETCH_EFLAGS.
    22762276        oStmtLocal = McStmtVar('IEM_MC_LOCAL', ['uint32_t', asParams[1],], 'uint32_t', asParams[1]);
    22772277        oSelf.aoLocals.append(oStmtLocal);
     
    22792279                               'uint32_t *', asParams[0], int(asParams[2]), sRef = asParams[1], sRefType = 'local');
    22802280        oSelf.aoArgs.append(oStmtArg);
    2281         return (oStmtLocal, oStmtArg,);
     2281        oStmtFetch = McStmt('IEM_MC_FETCH_EFLAGS', [asParams[1]]);
     2282        return (oStmtLocal, oStmtArg, oStmtFetch,);
    22822283
    22832284    @staticmethod
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r103909 r104017  
    92449244                    \
    92459245                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9246                     IEM_MC_FETCH_EFLAGS(EFlags); \
    92479246                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    92489247                    \
     
    92729271                    \
    92739272                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9274                     IEM_MC_FETCH_EFLAGS(EFlags); \
    92759273                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    92769274                    \
     
    93009298                    \
    93019299                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9302                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93039300                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    93049301                    \
     
    93389335                    \
    93399336                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9340                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93419337                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
    93429338                    \
     
    93669362                    \
    93679363                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9368                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93699364                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
    93709365                    \
     
    93949389                    \
    93959390                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9396                     IEM_MC_FETCH_EFLAGS(EFlags); \
    93979391                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
    93989392                    \
     
    95009494                    \
    95019495                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9502                     IEM_MC_FETCH_EFLAGS(EFlags); \
    95039496                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    95049497                    \
     
    95289521                    \
    95299522                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9530                     IEM_MC_FETCH_EFLAGS(EFlags); \
    95319523                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    95329524                    \
     
    95569548                    \
    95579549                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    9558                     IEM_MC_FETCH_EFLAGS(EFlags); \
    95599550                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    95609551                    \
     
    96809671                IEM_MC_ARG_CONST(uint8_t,           cShiftArg,/*=*/ cShift, 2); \
    96819672                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    9682                 IEM_MC_FETCH_EFLAGS(EFlags); \
    96839673                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU16, pu16Dst, u16Src, cShiftArg, pEFlags); \
    96849674                \
     
    97059695                IEM_MC_ARG_CONST(uint8_t,           cShiftArg,/*=*/ cShift, 2); \
    97069696                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    9707                 IEM_MC_FETCH_EFLAGS(EFlags); \
    97089697                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU32, pu32Dst, u32Src, cShiftArg, pEFlags); \
    97099698                \
     
    97309719                IEM_MC_ARG_CONST(uint8_t,           cShiftArg,/*=*/ cShift, 2); \
    97319720                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    9732                 IEM_MC_FETCH_EFLAGS(EFlags); \
    97339721                \
    97349722                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU64, pu64Dst, u64Src, cShiftArg, pEFlags); \
     
    98259813                IEM_MC_ARG(uint16_t,                u16Src,                 1); \
    98269814                IEM_MC_ARG(uint8_t,                 cShiftArg,              2); \
    9827                 IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98289815                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst); \
    98299816                IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
     
    98339820                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    98349821                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    9835                 IEM_MC_FETCH_EFLAGS(EFlags); \
     9822                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98369823                IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    98379824                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU16, pu16Dst, u16Src, cShiftArg, pEFlags); \
     
    98489835                IEM_MC_ARG(uint32_t,                u32Src,                 1); \
    98499836                IEM_MC_ARG(uint8_t,                 cShiftArg,              2); \
    9850                 IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98519837                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst); \
    98529838                IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
     
    98569842                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    98579843                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    9858                 IEM_MC_FETCH_EFLAGS(EFlags); \
     9844                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98599845                IEM_MC_MEM_MAP_U32_RW(pu32Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    98609846                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU32, pu32Dst, u32Src, cShiftArg, pEFlags); \
     
    98719857                IEM_MC_ARG(uint64_t,                u64Src,                 1); \
    98729858                IEM_MC_ARG(uint8_t,                 cShiftArg,              2); \
    9873                 IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98749859                IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst); \
    98759860                IEM_MC_LOCAL(uint8_t,               bUnmapInfo); \
     
    98799864                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    98809865                IEM_MC_FETCH_GREG_U8(cShiftArg, X86_GREG_xCX); \
    9881                 IEM_MC_FETCH_EFLAGS(EFlags); \
     9866                IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    98829867                IEM_MC_MEM_MAP_U64_RW(pu64Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
    98839868                IEM_MC_CALL_VOID_AIMPL_4(pImpl->pfnNormalU64, pu64Dst, u64Src, cShiftArg, pEFlags); \
     
    1049810483            \
    1049910484            IEM_MC_ARG_LOCAL_EFLAGS(        pEFlags, EFlags,        3); \
    10500             IEM_MC_FETCH_EFLAGS(EFlags); \
    1050110485            IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker, pu8Dst, pu8Al, u8Src, pEFlags); \
    1050210486            \
     
    1062010604                    \
    1062110605                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    10622                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1062310606                    IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker16, pu16Dst, pu16Ax, u16Src, pEFlags); \
    1062410607                    \
     
    1064810631                    \
    1064910632                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    10650                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1065110633                    IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker32, pu32Dst, pu32Eax, u32Src, pEFlags); \
    1065210634                    \
     
    1068010662                    \
    1068110663                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        3); \
    10682                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1068310664                    \
    1068410665                    IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker64, pu64Dst, pu64Rax, u64Src, pEFlags); \
     
    1105811039                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    1105911040                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11060                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1106111041                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    1106211042                    \
     
    1108111061                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    1108211062                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11083                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1108411063                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    1108511064                    \
     
    1110411083                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    1110511084                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11106                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1110711085                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    1110811086                    \
     
    1113711115                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    1113811116                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11139                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1114011117                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU16, pu16Dst, u16Src, pEFlags); \
    1114111118                    \
     
    1116011137                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    1116111138                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11162                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1116311139                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU32, pu32Dst, u32Src, pEFlags); \
    1116411140                    \
     
    1118311159                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    1118411160                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11185                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1118611161                    IEM_MC_CALL_VOID_AIMPL_3(a_fnLockedU64, pu64Dst, u64Src, pEFlags); \
    1118711162                    \
     
    1127911254                    IEM_MC_ARG_CONST(uint16_t,          u16Src, /*=*/ bImm & 0x0f,  1); \
    1128011255                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11281                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1128211256                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
    1128311257                    \
     
    1130211276                    IEM_MC_ARG_CONST(uint32_t,          u32Src, /*=*/ bImm & 0x1f,  1); \
    1130311277                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11304                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1130511278                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    1130611279                    \
     
    1132511298                    IEM_MC_ARG_CONST(uint64_t,          u64Src, /*=*/ bImm & 0x3f,  1); \
    1132611299                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,            2); \
    11327                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1132811300                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
    1132911301                    \
     
    1190411876            \
    1190511877            IEM_MC_ARG_LOCAL_EFLAGS(        pEFlags,    EFlags,     2); \
    11906             IEM_MC_FETCH_EFLAGS(EFlags); \
    1190711878            IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker, pu8Dst, pu8Reg, pEFlags); \
    1190811879            \
     
    1201811989                    \
    1201911990                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    12020                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1202111991                    IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker16, pu16Dst, pu16Reg, pEFlags); \
    1202211992                    \
     
    1204312013                    \
    1204412014                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    12045                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1204612015                    IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker32, pu32Dst, pu32Reg, pEFlags); \
    1204712016                    \
     
    1206812037                    \
    1206912038                    IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags, EFlags,        2); \
    12070                     IEM_MC_FETCH_EFLAGS(EFlags); \
    1207112039                    IEM_MC_CALL_VOID_AIMPL_3(a_fnWorker64, pu64Dst, pu64Reg, pEFlags); \
    1207212040                    \
     
    1273412702        \
    1273512703        IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags,    EFlags,     3); \
    12736         IEM_MC_FETCH_EFLAGS(EFlags); \
    1273712704        IEM_MC_CALL_VOID_AIMPL_4(a_fnWorker, pu64MemDst, pu64EaxEdx, pu64EbxEcx, pEFlags); \
    1273812705        \
     
    1279212759            IEM_MC_ARG_LOCAL_REF(PRTUINT128U,   pu128RbxRcx, u128RbxRcx,    2); \
    1279312760            \
    12794             IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags,     EFlags,        3); \
    12795             IEM_MC_FETCH_EFLAGS(EFlags)
     12761            IEM_MC_ARG_LOCAL_EFLAGS(            pEFlags,     EFlags,        3)
    1279612762
    1279712763#define BODY_CMPXCHG16B_TAIL(a_Type) \
  • trunk/src/VBox/VMM/include/IEMMc.h

    r104016 r104017  
    205205/** @note IEMAllInstPython.py duplicates the expansion. */
    206206#define IEM_MC_ARG_LOCAL_EFLAGS(a_pName, a_Name, a_iArg) \
    207     uint32_t a_Name; \
     207    uint32_t  a_Name  = pVCpu->cpum.GstCtx.eflags.u; \
    208208    uint32_t *a_pName = &a_Name
    209209/** @note IEMAllInstPython.py duplicates the expansion. */
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r104016 r104017  
    665665    int RT_CONCAT(iVarCheck_,a_Name) = 0; \
    666666    int RT_CONCAT(iVarCheck_,a_pName) = 0; \
    667     uint32_t a_Name; \
     667    uint32_t  a_Name  = 0; \
    668668    uint32_t *a_pName = &a_Name; \
    669669    NOREF(a_pName)
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