Changeset 103825 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Mar 13, 2024 12:24:49 PM (9 months ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r103824 r103825 3199 3199 'IEM_MC_MERGE_YREG_U64HI_U64HI_ZX_VLMAX': (McBlock.parseMcGeneric, True, True, False, ), 3200 3200 'IEM_MC_MERGE_YREG_U64LO_U64LO_ZX_VLMAX': (McBlock.parseMcGeneric, True, True, False, ), 3201 'IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX': (McBlock.parseMcGeneric, True, True, False,),3201 'IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX': (McBlock.parseMcGeneric, True, True, g_fNativeSimd), 3202 3202 'IEM_MC_MERGE_YREG_U64LOCAL_U64HI_ZX_VLMAX': (McBlock.parseMcGeneric, True, True, g_fNativeSimd), 3203 3203 'IEM_MC_MODIFIED_MREG': (McBlock.parseMcGeneric, True, True, False, ), -
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompFuncs.h
r103824 r103825 6973 6973 off = iemNativeEmitSimdStoreYregU64ZxVlmax(pReNative, off, a_iYRegDst, a_u64Src) 6974 6974 6975 /** Emits code for IEM_MC_STORE_YREG_U 32_ZX_VLMAX. */6975 /** Emits code for IEM_MC_STORE_YREG_U64_ZX_VLMAX. */ 6976 6976 DECL_INLINE_THROW(uint32_t) 6977 6977 iemNativeEmitSimdStoreYregU64ZxVlmax(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iYReg, uint8_t idxSrcVar) … … 7001 7001 off = iemNativeEmitSimdMergeYregU64LocalU64HiZxVlmax(pReNative, off, a_iYRegDst, a_u64Local, a_iYRegSrcHx) 7002 7002 7003 /** Emits code for IEM_MC_ STORE_YREG_U32_ZX_VLMAX. */7003 /** Emits code for IEM_MC_MERGE_YREG_U64LOCAL_U64HI_ZX_VLMAX. */ 7004 7004 DECL_INLINE_THROW(uint32_t) 7005 7005 iemNativeEmitSimdMergeYregU64LocalU64HiZxVlmax(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iYRegDst, uint8_t idxSrcVar, uint8_t iYRegSrcHx) … … 7028 7028 } 7029 7029 7030 7031 #define IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX(a_iYRegDst, a_iYRegSrcHx, a_u64Local) \ 7032 off = iemNativeEmitSimdMergeYregU64LoU64LocalZxVlmax(pReNative, off, a_iYRegDst, a_iYRegSrcHx, a_u64Local) 7033 7034 /** Emits code for IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX. */ 7035 DECL_INLINE_THROW(uint32_t) 7036 iemNativeEmitSimdMergeYregU64LoU64LocalZxVlmax(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t iYRegDst, uint8_t iYRegSrcHx, uint8_t idxSrcVar) 7037 { 7038 IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxSrcVar); 7039 IEMNATIVE_ASSERT_VAR_SIZE(pReNative, idxSrcVar, sizeof(uint64_t)); 7040 7041 uint8_t const idxSimdRegDst = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iYRegDst), 7042 kIemNativeGstSimdRegLdStSz_256, kIemNativeGstRegUse_ForFullWrite); 7043 uint8_t const idxSimdRegSrcHx = iemNativeSimdRegAllocTmpForGuestSimdReg(pReNative, &off, IEMNATIVEGSTSIMDREG_SIMD(iYRegSrcHx), 7044 kIemNativeGstSimdRegLdStSz_Low128, kIemNativeGstRegUse_ReadOnly); 7045 uint8_t const idxVarReg = iemNativeVarRegisterAcquire(pReNative, idxSrcVar, &off); 7046 7047 off = iemNativeEmitSimdLoadVecRegFromVecRegU128(pReNative, off, idxSimdRegDst, idxSimdRegSrcHx); 7048 off = iemNativeEmitSimdStoreGprToVecRegU64(pReNative, off, idxSimdRegDst, idxVarReg, 1 /*iQWord*/); 7049 off = iemNativeEmitSimdZeroVecRegHighU128(pReNative, off, idxSimdRegDst); 7050 IEMNATIVE_SIMD_REG_STATE_SET_DIRTY_LO_U128(pReNative, iYRegDst); 7051 IEMNATIVE_SIMD_REG_STATE_SET_DIRTY_HI_U128(pReNative, iYRegDst); 7052 7053 /* Free but don't flush the source and destination registers. */ 7054 iemNativeSimdRegFreeTmp(pReNative, idxSimdRegSrcHx); 7055 iemNativeSimdRegFreeTmp(pReNative, idxSimdRegDst); 7056 iemNativeVarRegisterRelease(pReNative, idxSrcVar); 7057 7058 return off; 7059 } 7060 7030 7061 #endif /* IEMNATIVE_WITH_SIMD_REG_ALLOCATOR */ 7031 7062
Note:
See TracChangeset
for help on using the changeset viewer.