VirtualBox

Changeset 104208 in vbox


Ignore:
Timestamp:
Apr 5, 2024 9:17:41 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) - fourth chunk: ARPL, ADCX, ADOX. bugref:10376

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

Legend:

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

    r104207 r104208  
    68396839; 32-bit forms of ADCX and ADOX
    68406840;
    6841 ; @param    A0      Pointer to the destination operand (input/output).
    6842 ; @param    A1      32-bit source operand 1 (input).
    6843 ; @param    A2      Pointer to the EFLAGS value (input/output).
     6841; @returns  Updated EFLAGS.
     6842; @param    A0      Incoming EFLAGS value (input).
     6843; @param    A1      Pointer to the destination operand (input/output).
     6844; @param    A2      32-bit source operand 1 (input).
    68446845;
    68456846%macro IEMIMPL_ADX_32 2
     
    68476848        PROLOGUE_4_ARGS
    68486849
    6849         IEM_LOAD_FLAGS_OLD A2, %2, 0
    6850         %1      A1_32, [A0]
    6851         mov     [A0], A1_32
    6852         IEM_SAVE_FLAGS_OLD A2, %2, 0, 0
     6850        IEM_LOAD_FLAGS          A0_32, %2, 0
     6851        %1      A2_32, [A1]
     6852        mov     [A1], A2_32
     6853        IEM_SAVE_FLAGS_RETVAL   A0_32, %2, 0, 0
    68536854
    68546855        EPILOGUE_4_ARGS
     
    68596860; 64-bit forms of ADCX and ADOX
    68606861;
    6861 ; @param    A0      Pointer to the destination operand (input/output).
    6862 ; @param    A1      64-bit source operand 1 (input).
    6863 ; @param    A2      Pointer to the EFLAGS value (input/output).
     6862; @returns  Updated EFLAGS.
     6863; @param    A0      Incoming EFLAGS value (input).
     6864; @param    A1      Pointer to the destination operand (input/output).
     6865; @param    A2      64-bit source operand 1 (input).
    68646866;
    68656867%macro IEMIMPL_ADX_64 2
     
    68676869        PROLOGUE_4_ARGS
    68686870
    6869         IEM_LOAD_FLAGS_OLD A2, %2, 0
    6870         %1      A1, [A0]
    6871         mov     [A0], A1
    6872         IEM_SAVE_FLAGS_OLD A2, %2, 0, 0
     6871        IEM_LOAD_FLAGS          A0_32, %2, 0
     6872        %1      A2, [A1]
     6873        mov     [A1], A2
     6874        IEM_SAVE_FLAGS_RETVAL   A0_32, %2, 0, 0
    68736875
    68746876        EPILOGUE_4_ARGS
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r104207 r104208  
    39333933
    39343934
    3935 IEM_DECL_IMPL_DEF(void, iemAImpl_arpl,(uint16_t *pu16Dst, uint16_t u16Src, uint32_t *pfEFlags))
    3936 {
    3937     if ((*pu16Dst & X86_SEL_RPL) < (u16Src & X86_SEL_RPL))
    3938     {
    3939         *pu16Dst &= X86_SEL_MASK_OFF_RPL;
    3940         *pu16Dst |= u16Src & X86_SEL_RPL;
    3941 
    3942         *pfEFlags |= X86_EFL_ZF;
     3935IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_arpl,(uint32_t fEFlags, uint16_t *pu16Dst, uint16_t u16Src))
     3936{
     3937    uint16_t u16Dst = *pu16Dst;
     3938    if ((u16Dst & X86_SEL_RPL) < (u16Src & X86_SEL_RPL))
     3939    {
     3940        u16Dst   &= X86_SEL_MASK_OFF_RPL;
     3941        u16Dst   |= u16Src & X86_SEL_RPL;
     3942        *pu16Dst = u16Dst;
     3943
     3944        fEFlags  |= X86_EFL_ZF;
    39433945    }
    39443946    else
    3945         *pfEFlags &= ~X86_EFL_ZF;
     3947        fEFlags  &= ~X86_EFL_ZF;
     3948    return fEFlags;
    39463949}
    39473950
     
    1926419267    do \
    1926519268    { \
    19266         bool f = RT_BOOL(*pfEFlags & (a_Flag)); \
     19269        bool f = RT_BOOL(fEFlags & (a_Flag)); \
    1926719270        a_Type uTmp = *puDst + uSrc; \
    1926819271        if (uTmp < uSrc) \
    19269             *pfEFlags |= (a_Flag); \
     19272            fEFlags |= (a_Flag); \
    1927019273        else \
    19271             *pfEFlags &= ~(a_Flag); \
     19274            fEFlags &= ~(a_Flag); \
    1927219275        if (   uTmp == a_Max \
    1927319276            && f) \
    19274             *pfEFlags |= (a_Flag); \
     19277            fEFlags |= (a_Flag); \
    1927519278        if (f) \
    1927619279            uTmp++; \
     
    1927919282    while (0)
    1928019283
    19281 IEM_DECL_IMPL_DEF(void, iemAImpl_adcx_u32_fallback,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     19284IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adcx_u32_fallback,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    1928219285{
    1928319286    ADX_EMIT(X86_EFL_CF, uint32_t, UINT32_MAX);
    19284 }
    19285 
    19286 IEM_DECL_IMPL_DEF(void, iemAImpl_adcx_u64_fallback,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     19287    return fEFlags;
     19288}
     19289
     19290IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adcx_u64_fallback,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    1928719291{
    1928819292    ADX_EMIT(X86_EFL_CF, uint64_t, UINT64_MAX);
     19293    return fEFlags;
    1928919294}
    1929019295
    1929119296# if defined(IEM_WITHOUT_ASSEMBLY)
    1929219297
    19293 IEM_DECL_IMPL_DEF(void, iemAImpl_adcx_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     19298IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adcx_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    1929419299{
    1929519300    ADX_EMIT(X86_EFL_CF, uint32_t, UINT32_MAX);
    19296 }
    19297 
    19298 IEM_DECL_IMPL_DEF(void, iemAImpl_adcx_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     19301    return fEFlags;
     19302}
     19303
     19304IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adcx_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    1929919305{
    1930019306    ADX_EMIT(X86_EFL_CF, uint64_t, UINT64_MAX);
     19307    return fEFlags;
    1930119308}
    1930219309
     
    1930719314 * ADOX
    1930819315 */
    19309 IEM_DECL_IMPL_DEF(void, iemAImpl_adox_u32_fallback,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     19316IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adox_u32_fallback,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    1931019317{
    1931119318    ADX_EMIT(X86_EFL_OF, uint32_t, UINT32_MAX);
    19312 }
    19313 
    19314 IEM_DECL_IMPL_DEF(void, iemAImpl_adox_u64_fallback,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     19319    return fEFlags;
     19320}
     19321
     19322IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adox_u64_fallback,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    1931519323{
    1931619324    ADX_EMIT(X86_EFL_OF, uint64_t, UINT64_MAX);
     19325    return fEFlags;
    1931719326}
    1931819327
    1931919328# if defined(IEM_WITHOUT_ASSEMBLY)
    1932019329
    19321 IEM_DECL_IMPL_DEF(void, iemAImpl_adox_u32,(uint32_t *puDst, uint32_t uSrc, uint32_t *pfEFlags))
     19330IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adox_u32,(uint32_t fEFlags, uint32_t *puDst, uint32_t uSrc))
    1932219331{
    1932319332    ADX_EMIT(X86_EFL_OF, uint32_t, UINT32_MAX);
    19324 }
    19325 
    19326 IEM_DECL_IMPL_DEF(void, iemAImpl_adox_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
     19333    return fEFlags;
     19334}
     19335
     19336IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_adox_u64,(uint32_t fEFlags, uint64_t *puDst, uint64_t uSrc))
    1932719337{
    1932819338    ADX_EMIT(X86_EFL_OF, uint64_t, UINT64_MAX);
     19339    return fEFlags;
    1932919340}
    1933019341
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h

    r104206 r104208  
    31503150        IEM_MC_BEGIN(IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT, 0);
    31513151        IEMOP_HLP_DECODED_NL_2(OP_ARPL, IEMOPFORM_MR_REG, OP_PARM_Ew, OP_PARM_Gw, DISOPTYPE_HARMLESS);
    3152         IEM_MC_ARG(uint16_t *,      pu16Dst,    0);
    3153         IEM_MC_ARG(uint16_t,        u16Src,     1);
    3154         IEM_MC_ARG(uint32_t *,      pEFlags,    2);
    3155 
     3152        IEM_MC_ARG(uint16_t,        u16Src,     2);
    31563153        IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG_8(bRm));
     3154        IEM_MC_ARG(uint16_t *,      pu16Dst,    1);
    31573155        IEM_MC_REF_GREG_U16(pu16Dst,  IEM_GET_MODRM_RM_8(bRm));
    3158         IEM_MC_REF_EFLAGS(pEFlags);
    3159         IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_arpl, pu16Dst, u16Src, pEFlags);
     3156        IEM_MC_ARG_EFLAGS(          fEFlagsIn,  0);
     3157        IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, iemAImpl_arpl, fEFlagsIn, pu16Dst, u16Src);
     3158        IEM_MC_COMMIT_EFLAGS(fEFlagsRet);
    31603159
    31613160        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    31663165        /* Memory */
    31673166        IEM_MC_BEGIN(IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT, 0);
    3168         IEM_MC_ARG(uint16_t *, pu16Dst,          0);
    3169         IEM_MC_ARG(uint16_t,   u16Src,           1);
    31703167        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    3171         IEM_MC_LOCAL(uint8_t, bUnmapInfo);
    3172 
    31733168        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    31743169        IEMOP_HLP_DECODED_NL_2(OP_ARPL, IEMOPFORM_MR_REG, OP_PARM_Ew, OP_PARM_Gw, DISOPTYPE_HARMLESS);
     3170
     3171        IEM_MC_LOCAL(uint8_t,   bUnmapInfo);
     3172        IEM_MC_ARG(uint16_t *,  pu16Dst,    1);
    31753173        IEM_MC_MEM_MAP_U16_RW(pu16Dst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
     3174        IEM_MC_ARG(uint16_t,   u16Src,      2);
    31763175        IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_REG_8(bRm));
    3177         IEM_MC_ARG_LOCAL_EFLAGS(pEFlags, EFlags, 2);
    3178         IEM_MC_CALL_VOID_AIMPL_3(iemAImpl_arpl, pu16Dst, u16Src, pEFlags);
     3176        IEM_MC_ARG_EFLAGS(      fEFlagsIn,  0);
     3177        IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, iemAImpl_arpl, fEFlagsIn, pu16Dst, u16Src);
    31793178
    31803179        IEM_MC_MEM_COMMIT_AND_UNMAP_RW(bUnmapInfo);
    3181         IEM_MC_COMMIT_EFLAGS(EFlags);
     3180        IEM_MC_COMMIT_EFLAGS(fEFlagsRet);
    31823181        IEM_MC_ADVANCE_RIP_AND_FINISH();
    31833182        IEM_MC_END();
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f38.cpp.h

    r104103 r104208  
    20312031                IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \
    20322032                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    2033                 IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
    2034                 IEM_MC_ARG(uint64_t,        u64Src,                 1); \
    2035                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
     2033                IEM_MC_ARG(uint64_t,    u64Src,     2); \
    20362034                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     2035                IEM_MC_ARG(uint64_t *,  pu64Dst,    1); \
    20372036                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    2038                 IEM_MC_REF_EFLAGS(pEFlags); \
    2039                 IEM_MC_CALL_VOID_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u64, iemAImpl_## a_Variant ##_u64_fallback), \
    2040                                          pu64Dst, u64Src, pEFlags); \
     2037                IEM_MC_ARG_EFLAGS(      fEFlagsIn,  0); \
     2038                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, \
     2039                                    IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u64, iemAImpl_## a_Variant ##_u64_fallback), \
     2040                                    fEFlagsIn, pu64Dst, u64Src); \
     2041                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    20412042                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    20422043                IEM_MC_END(); \
     
    20452046            { \
    20462047                IEM_MC_BEGIN(IEM_MC_F_64BIT, 0); \
    2047                 IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
    2048                 IEM_MC_ARG(uint64_t,        u64Src,                 1); \
    2049                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
    20502048                IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc); \
    20512049                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); \
    20522050                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     2051                \
     2052                IEM_MC_ARG(uint64_t,    u64Src,     2); \
    20532053                IEM_MC_FETCH_MEM_U64(u64Src, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); \
     2054                IEM_MC_ARG(uint64_t *,  pu64Dst,    1); \
    20542055                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    2055                 IEM_MC_REF_EFLAGS(pEFlags); \
    2056                 IEM_MC_CALL_VOID_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u64, iemAImpl_## a_Variant ##_u64_fallback), \
    2057                                          pu64Dst, u64Src, pEFlags); \
     2056                IEM_MC_ARG_EFLAGS(      fEFlagsIn,  0); \
     2057                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, \
     2058                                    IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u64, iemAImpl_## a_Variant ##_u64_fallback), \
     2059                                    fEFlagsIn, pu64Dst, u64Src); \
     2060                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    20582061                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    20592062                IEM_MC_END(); \
     
    20662069                IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); \
    20672070                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    2068                 IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
    2069                 IEM_MC_ARG(uint32_t,        u32Src,                 1); \
    2070                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
     2071                IEM_MC_ARG(uint32_t,    u32Src,     2); \
    20712072                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     2073                IEM_MC_ARG(uint32_t *,  pu32Dst,    1); \
    20722074                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    2073                 IEM_MC_REF_EFLAGS(pEFlags); \
    2074                 IEM_MC_CALL_VOID_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u32, iemAImpl_## a_Variant ##_u32_fallback), \
    2075                                          pu32Dst, u32Src, pEFlags); \
     2075                IEM_MC_ARG_EFLAGS(      fEFlagsIn,  0); \
     2076                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, \
     2077                                    IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u32, iemAImpl_## a_Variant ##_u32_fallback), \
     2078                                    fEFlagsIn, pu32Dst, u32Src); \
     2079                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    20762080                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    20772081                IEM_MC_END(); \
     
    20802084            { \
    20812085                IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); \
    2082                 IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
    2083                 IEM_MC_ARG(uint32_t,        u32Src,                 1); \
    2084                 IEM_MC_ARG(uint32_t *,      pEFlags,                2); \
    20852086                IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc); \
    20862087                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); \
    20872088                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     2089                \
     2090                IEM_MC_ARG(uint32_t,    u32Src,     2); \
    20882091                IEM_MC_FETCH_MEM_U32(u32Src, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); \
     2092                IEM_MC_ARG(uint32_t *,  pu32Dst,    1); \
    20892093                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
    2090                 IEM_MC_REF_EFLAGS(pEFlags); \
    2091                 IEM_MC_CALL_VOID_AIMPL_3(IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u32, iemAImpl_## a_Variant ##_u32_fallback), \
    2092                                          pu32Dst, u32Src, pEFlags); \
     2094                IEM_MC_ARG_EFLAGS(      fEFlagsIn,  0); \
     2095                IEM_MC_CALL_AIMPL_3(uint32_t, fEFlagsRet, \
     2096                                    IEM_SELECT_HOST_OR_FALLBACK(fAdx, iemAImpl_## a_Variant ##_u32, iemAImpl_## a_Variant ##_u32_fallback), \
     2097                                    fEFlagsIn, pu32Dst, u32Src); \
     2098                IEM_MC_COMMIT_EFLAGS(fEFlagsRet); \
    20932099                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
    20942100                IEM_MC_END(); \
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r104207 r104208  
    29972997/** @name Misc.
    29982998 * @{ */
    2999 FNIEMAIMPLBINTODOU16 iemAImpl_arpl;
     2999FNIEMAIMPLBINU16 iemAImpl_arpl;
    30003000/** @} */
    30013001
     
    30193019/** @name ADOX and ADCX
    30203020 * @{ */
    3021 FNIEMAIMPLBINTODOU32 iemAImpl_adcx_u32, iemAImpl_adcx_u32_fallback;
    3022 FNIEMAIMPLBINTODOU64 iemAImpl_adcx_u64, iemAImpl_adcx_u64_fallback;
    3023 FNIEMAIMPLBINTODOU32 iemAImpl_adox_u32, iemAImpl_adox_u32_fallback;
    3024 FNIEMAIMPLBINTODOU64 iemAImpl_adox_u64, iemAImpl_adox_u64_fallback;
     3021FNIEMAIMPLBINU32 iemAImpl_adcx_u32, iemAImpl_adcx_u32_fallback;
     3022FNIEMAIMPLBINU64 iemAImpl_adcx_u64, iemAImpl_adcx_u64_fallback;
     3023FNIEMAIMPLBINU32 iemAImpl_adox_u32, iemAImpl_adox_u32_fallback;
     3024FNIEMAIMPLBINU64 iemAImpl_adox_u64, iemAImpl_adox_u64_fallback;
    30253025/** @} */
    30263026
  • trunk/src/VBox/VMM/testcase/tstIEMAImpl.cpp

    r104207 r104208  
    19511951    ENTRY_BIN_AMD(  imul_two_u16, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF),
    19521952    ENTRY_BIN_INTEL(imul_two_u16, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF),
    1953 #if 0 /** @todo convert to new eflags format  */
    19541953    ENTRY_BIN(arpl),
    1955 #endif
    19561954};
    19571955TEST_BINARY_OPS(16, uint16_t, "%#06x", BINU16_TEST_T, g_aBinU16)
     
    19991997    ENTRY_BIN_AMD(  imul_two_u32, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF),
    20001998    ENTRY_BIN_INTEL(imul_two_u32, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF),
    2001 #if 0 /** @todo convert to new eflags format  */
    20021999    ENTRY_BIN(adcx_u32),
    20032000    ENTRY_BIN(adox_u32),
    2004 #endif
    20052001};
    20062002TEST_BINARY_OPS(32, uint32_t, "%#010RX32", BINU32_TEST_T, g_aBinU32)
     
    20482044    ENTRY_BIN_AMD(  imul_two_u64, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF),
    20492045    ENTRY_BIN_INTEL(imul_two_u64, X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF),
    2050 #if 0 /** @todo convert to new eflags format  */
    20512046    ENTRY_BIN(adcx_u64),
    20522047    ENTRY_BIN(adox_u64),
    2053 #endif
    20542048/** @todo popcnt */
    20552049/** @todo tzcnt */
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