VirtualBox

Changeset 103663 in vbox


Ignore:
Timestamp:
Mar 4, 2024 12:08:32 PM (13 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162023
Message:

VMM/IEM: Native translation of IEM_MC_REF_XREG_U128()/IEM_MC_REF_XREG_U128_CONST()/IEM_MC_REF_XREG_XMM_CONST() bodies, bugref:10371

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py

    r103660 r103663  
    32293229    'IEM_MC_REF_XREG_R32_CONST':                                 (McBlock.parseMcGeneric,           False, False, False, ),
    32303230    'IEM_MC_REF_XREG_R64_CONST':                                 (McBlock.parseMcGeneric,           False, False, False, ),
    3231     'IEM_MC_REF_XREG_U128':                                      (McBlock.parseMcGeneric,           False, False, False, ),
    3232     'IEM_MC_REF_XREG_U128_CONST':                                (McBlock.parseMcGeneric,           False, False, False, ),
     3231    'IEM_MC_REF_XREG_U128':                                      (McBlock.parseMcGeneric,           False, False, True, ),
     3232    'IEM_MC_REF_XREG_U128_CONST':                                (McBlock.parseMcGeneric,           False, False, True, ),
    32333233    'IEM_MC_REF_XREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False, False, False, ),
    32343234    'IEM_MC_REF_XREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False, False, False, ),
    3235     'IEM_MC_REF_XREG_XMM_CONST':                                 (McBlock.parseMcGeneric,           False, False, False, ),
     3235    'IEM_MC_REF_XREG_XMM_CONST':                                 (McBlock.parseMcGeneric,           False, False, True, ),
    32363236    'IEM_MC_REF_YREG_U128':                                      (McBlock.parseMcGeneric,           False, False, False, ),
    32373237    'IEM_MC_REF_YREG_U128_CONST':                                (McBlock.parseMcGeneric,           False, False, False, ),
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r103661 r103663  
    1078410784 * we assume the threaded recompiler catches any incorrect EFLAGS delcarations. */
    1078510785#define IEM_MC_ASSERT_EFLAGS(a_fEflInput, a_fEflOutput) ((void)0)
     10786
     10787
     10788#define IEM_MC_REF_XREG_U128(a_pu128Dst, a_iXReg) \
     10789    off = iemNativeEmitRefXregXxx(pReNative, off, a_pu128Dst, a_iXReg, false /*fConst*/)
     10790
     10791#define IEM_MC_REF_XREG_U128_CONST(a_pu128Dst, a_iXReg) \
     10792    off = iemNativeEmitRefXregXxx(pReNative, off, a_pu128Dst, a_iXReg, true /*fConst*/)
     10793
     10794#define IEM_MC_REF_XREG_XMM_CONST(a_pXmmDst, a_iXReg) \
     10795    off = iemNativeEmitRefXregXxx(pReNative, off, a_pXmmDst, a_iXReg, true /*fConst*/)
     10796
     10797/** Handles IEM_MC_REF_XREG_xxx[_CONST]. */
     10798DECL_INLINE_THROW(uint32_t)
     10799iemNativeEmitRefXregXxx(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxVarRef, uint8_t iXReg, bool fConst)
     10800{
     10801    IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxVarRef);
     10802    Assert(pReNative->Core.aVars[idxVarRef].cbVar == sizeof(void *));
     10803    Assert(iXReg < 16);
     10804
     10805    iemNativeVarSetKindToGstRegRef(pReNative, idxVarRef, kIemNativeGstRegRef_XReg, iXReg);
     10806
     10807    /* If we've delayed writing back the register value, flush it now. */
     10808    off = iemNativeRegFlushPendingSpecificWrite(pReNative, off, kIemNativeGstRegRef_XReg, iXReg);
     10809
     10810    /** @todo r=aeichner This needs to be done as soon as we shadow SSE registers in host registers, needs
     10811     *                   figuring out the semantics on how this is tracked.
     10812     *                   For now this is safe though as the reference will directly operate on the CPUMCTX
     10813     *                   structure so the value can't get out of sync.
     10814     */
     10815#if 0
     10816    /* If it's not a const reference we need to flush the shadow copy of the register now. */
     10817    if (!fConst)
     10818        iemNativeRegFlushGuestShadows(pReNative, RT_BIT_64(IEMNATIVEGSTREG_XREG(iXReg)));
     10819#else
     10820    RT_NOREF(fConst);
     10821#endif
     10822
     10823    return off;
     10824}
    1078610825
    1078710826
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