VirtualBox

Changeset 105664 in vbox for trunk/src/VBox/VMM/include


Ignore:
Timestamp:
Aug 14, 2024 8:47:13 AM (9 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164358
Message:

VMM/IEM: Implement vgather[dq]p[sd], vpgather[dq][dq] instruction decoding, dispatch & emulation, bugref:9898
VMM/IEM: Fix disassembly metadata for vpsllvq, vpsrlvq instructions
VMM/IEM: Adds MVx VSIB operand handling
VMM/IEM: Adds iemMemFetchDataU32NoAc(), iemMemFetchDataU64NoAc() unaligned memory fetchers

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r105616 r105664  
    61996199VBOXSTRICTRC    iemMemFetchDataU16(PVMCPUCC pVCpu, uint16_t *pu16Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
    62006200VBOXSTRICTRC    iemMemFetchDataU32(PVMCPUCC pVCpu, uint32_t *pu32Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
     6201VBOXSTRICTRC    iemMemFetchDataU32NoAc(PVMCPUCC pVCpu, uint32_t *pu32Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
    62016202VBOXSTRICTRC    iemMemFetchDataU32_ZX_U64(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
    62026203VBOXSTRICTRC    iemMemFetchDataU64(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
     6204VBOXSTRICTRC    iemMemFetchDataU64NoAc(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
    62036205VBOXSTRICTRC    iemMemFetchDataU64AlignedU128(PVMCPUCC pVCpu, uint64_t *pu64Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
    62046206VBOXSTRICTRC    iemMemFetchDataR80(PVMCPUCC pVCpu, PRTFLOAT80U pr80Dst, uint8_t iSegReg, RTGCPTR GCPtrMem) RT_NOEXCEPT;
     
    65096511IEM_CIMPL_PROTO_4(iemCImpl_vpmaskmovq_store_u128, uint8_t, iEffSeg, RTGCPTR, GCPtrEffDst, uint8_t, iXRegMsk, uint8_t, iXRegSrc);
    65106512IEM_CIMPL_PROTO_4(iemCImpl_vpmaskmovq_store_u256, uint8_t, iEffSeg, RTGCPTR, GCPtrEffDst, uint8_t, iYRegMsk, uint8_t, iYRegSrc);
     6513IEM_CIMPL_PROTO_2(iemCImpl_vpgather_worker_xx, uint32_t, u32PackedArgs, uint32_t, u32Disp);
    65116514
    65126515/** @} */
     
    68226825DECLHIDDEN(struct IEMNATIVEPERCHUNKCTX const *) iemNativeRecompileAttachExecMemChunkCtx(PVMCPU pVCpu, uint32_t idxChunk);
    68236826
     6827/** Packed 32-bit argument for iemCImpl_vpgather_worker_xx. */
     6828typedef union IEMGATHERARGS
     6829{
     6830    /** Integer view. */
     6831    uint32_t u;
     6832    /** Bitfield view. */
     6833    struct
     6834    {
     6835        uint32_t iYRegDst       : 4; /**<  0 - XMM or YMM register number (destination) */
     6836        uint32_t iYRegIdc       : 4; /**<  4 - XMM or YMM register number (indices)     */
     6837        uint32_t iYRegMsk       : 4; /**<  8 - XMM or YMM register number (mask)        */
     6838        uint32_t iGRegBase      : 4; /**< 12 - general register number    (base ptr)    */
     6839        uint32_t iScale         : 2; /**< 16 - scale factor               (1/2/4/8)     */
     6840        uint32_t enmEffOpSize   : 2; /**< 18 - operand size               (16/32/64/--) */
     6841        uint32_t enmEffAddrMode : 2; /**< 20 - addressing  mode           (16/32/64/--) */
     6842        uint32_t iEffSeg        : 3; /**< 22 - effective segment (ES/CS/SS/DS/FS/GS)    */
     6843        uint32_t fVex256        : 1; /**< 25 - overall instruction width (128/256 bits) */
     6844        uint32_t fIdxQword      : 1; /**< 26 - individual index width     (4/8 bytes)   */
     6845        uint32_t fValQword      : 1; /**< 27 - individual value width     (4/8 bytes)   */
     6846    } s;
     6847} IEMGATHERARGS;
     6848AssertCompileSize(IEMGATHERARGS, sizeof(uint32_t));
     6849
    68246850#endif /* !RT_IN_ASSEMBLER - ASM-NOINC-END */
    68256851
  • trunk/src/VBox/VMM/include/IEMMc.h

    r105652 r105664  
    28392839/**
    28402840 * Defers the rest of the instruction emulation to a C implementation routine
    2841  * and returns, taking two arguments in addition to the standard ones.
     2841 * and returns, taking five arguments in addition to the standard ones.
    28422842 *
    28432843 * @param   a_fFlags        IEM_CIMPL_F_XXX.
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