Changeset 104107 in vbox
- Timestamp:
- Mar 28, 2024 9:48:48 PM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162514
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompFuncs.h
r104099 r104107 7743 7743 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iXReg), 7744 7744 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ForFullWrite); 7745 7746 uint8_t const idxVarReg = iemNativeVarSimdRegisterAcquire(pReNative, idxSrcVar, &off); 7745 uint8_t const idxVarReg = iemNativeVarSimdRegisterAcquire(pReNative, idxSrcVar, &off, true /*fInitialized*/); 7747 7746 7748 7747 off = iemNativeEmitSimdLoadVecRegFromVecRegU128(pReNative, off, idxSimdRegDst, idxVarReg); … … 7776 7775 /** Emits code for IEM_MC_STORE_XREG_U64/IEM_MC_STORE_XREG_U32/IEM_MC_STORE_XREG_U16/IEM_MC_STORE_XREG_U8. */ 7777 7776 DECL_INLINE_THROW(uint32_t) 7778 iemNativeEmitSimdStoreXregUxx(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iXReg, uint8_t idxDstVar, uint8_t cbLocal, uint8_t iElem) 7777 iemNativeEmitSimdStoreXregUxx(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iXReg, uint8_t idxDstVar, 7778 uint8_t cbLocal, uint8_t iElem) 7779 7779 { 7780 7780 IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxDstVar); … … 7794 7794 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iXReg), 7795 7795 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ForUpdate); 7796 7797 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off); 7796 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off, true /*fInitialized*/); 7798 7797 7799 7798 switch (cbLocal) … … 7817 7816 off = iemNativeEmitSimdStoreXregU64ZxU128(pReNative, off, a_iXReg, a_u64Value) 7818 7817 7819 /** Emits code for IEM_MC_STORE_XREG_U 32. */7818 /** Emits code for IEM_MC_STORE_XREG_U64_ZX_U128. */ 7820 7819 DECL_INLINE_THROW(uint32_t) 7821 7820 iemNativeEmitSimdStoreXregU64ZxU128(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iXReg, uint8_t idxDstVar) … … 7826 7825 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iXReg), 7827 7826 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ForUpdate); 7828 7829 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off); 7827 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off, true /*fInitialized*/); 7830 7828 7831 7829 /* Zero the vector register first, then store the 64-bit value to the lower 64-bit. */ … … 7844 7842 off = iemNativeEmitSimdStoreXregU32ZxU128(pReNative, off, a_iXReg, a_u32Value) 7845 7843 7846 /** Emits code for IEM_MC_STORE_XREG_U32 . */7844 /** Emits code for IEM_MC_STORE_XREG_U32_ZX_U128. */ 7847 7845 DECL_INLINE_THROW(uint32_t) 7848 7846 iemNativeEmitSimdStoreXregU32ZxU128(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iXReg, uint8_t idxDstVar) … … 7853 7851 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iXReg), 7854 7852 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ForUpdate); 7855 7856 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off); 7853 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxDstVar, &off, true /*fInitialized*/); 7857 7854 7858 7855 /* Zero the vector register first, then store the 32-bit value to the lowest 32-bit element. */ … … 7873 7870 /** Emits code for IEM_MC_STORE_XREG_U32_U128. */ 7874 7871 DECL_INLINE_THROW(uint32_t) 7875 iemNativeEmitSimdStoreXregU32U128(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iXReg, uint8_t iDwDst, uint8_t idxSrcVar, uint8_t iDwSrc) 7872 iemNativeEmitSimdStoreXregU32U128(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iXReg, uint8_t iDwDst, 7873 uint8_t idxSrcVar, uint8_t iDwSrc) 7876 7874 { 7877 7875 IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxSrcVar); … … 7880 7878 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iXReg), 7881 7879 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ForUpdate); 7882 7883 uint8_t const idxVarReg = iemNativeVarSimdRegisterAcquire(pReNative, idxSrcVar, &off); 7880 uint8_t const idxVarReg = iemNativeVarSimdRegisterAcquire(pReNative, idxSrcVar, &off, true /*fInitialized*/); 7884 7881 7885 7882 off = iemNativeEmitSimdLoadGprFromVecRegU32(pReNative, off, IEMNATIVE_REG_FIXED_TMP0, idxVarReg, iDwSrc); … … 7910 7907 /* Allocate destination and source register. */ 7911 7908 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iYRegDst), 7912 kIemNativeGstSimdRegLdStSz_256, kIemNativeGstRegUse_ForFullWrite); 7909 kIemNativeGstSimdRegLdStSz_256, 7910 kIemNativeGstRegUse_ForFullWrite); 7913 7911 uint8_t const idxSimdRegSrc = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iYRegSrc), 7914 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ReadOnly); 7912 kIemNativeGstSimdRegLdStSz_Low128, 7913 kIemNativeGstRegUse_ReadOnly); 7915 7914 7916 7915 off = iemNativeEmitSimdLoadVecRegFromVecRegU128(pReNative, off, idxSimdRegDst, idxSimdRegSrc);
Note:
See TracChangeset
for help on using the changeset viewer.