VirtualBox

Changeset 103843 in vbox for trunk/src


Ignore:
Timestamp:
Mar 14, 2024 11:00:29 AM (14 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
162214
Message:

VMM/IEM: Implement native emitter for IEM_MC_FETCH_XREG_U16(), bugref:10614

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

Legend:

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

    r103839 r103843  
    30893089    'IEM_MC_FETCH_SREG_ZX_U64':                                  (McBlock.parseMcGeneric,           False, False, True,  ),
    30903090    'IEM_MC_FETCH_XREG_U128':                                    (McBlock.parseMcGeneric,           False, False, False, ),
    3091     'IEM_MC_FETCH_XREG_U16':                                     (McBlock.parseMcGeneric,           False, False, False, ),
     3091    'IEM_MC_FETCH_XREG_U16':                                     (McBlock.parseMcGeneric,           False, False, g_fNativeSimd),
    30923092    'IEM_MC_FETCH_XREG_U32':                                     (McBlock.parseMcGeneric,           False, False, g_fNativeSimd),
    30933093    'IEM_MC_FETCH_XREG_U64':                                     (McBlock.parseMcGeneric,           False, False, g_fNativeSimd),
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompFuncs.h

    r103839 r103843  
    68396839
    68406840
     6841#define IEM_MC_FETCH_XREG_U16(a_u64Value, a_iXReg, a_iWord) \
     6842    off = iemNativeEmitSimdFetchXregU16(pReNative, off, a_u64Value, a_iXReg, a_iWord)
     6843
     6844/** Emits code for IEM_MC_FETCH_XREG_U16. */
     6845DECL_INLINE_THROW(uint32_t)
     6846iemNativeEmitSimdFetchXregU16(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxDstVar, uint8_t iXReg, uint8_t iWord)
     6847{
     6848    IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxDstVar);
     6849    IEMNATIVE_ASSERT_VAR_SIZE(pReNative, idxDstVar, sizeof(uint16_t));
     6850
     6851    uint8_t const idxSimdRegSrc = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iXReg),
     6852                                                                          kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ReadOnly);
     6853
     6854    iemNativeVarSetKindToStack(pReNative, idxDstVar);
     6855    uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off);
     6856
     6857    off = iemNativeEmitSimdLoadGprFromVecRegU16(pReNative, off, idxVarReg, idxSimdRegSrc, iWord);
     6858
     6859    /* Free but don't flush the source register. */
     6860    iemNativeSimdRegFreeTmp(pReNative, idxSimdRegSrc);
     6861    iemNativeVarRegisterRelease(pReNative, idxDstVar);
     6862
     6863    return off;
     6864}
     6865
     6866
    68416867#define IEM_MC_STORE_XREG_U64(a_iXReg, a_iQWord, a_u64Value) \
    68426868    off = iemNativeEmitSimdStoreXregU64(pReNative, off, a_iXReg, a_u64Value, a_iQWord)
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