VirtualBox

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


Ignore:
Timestamp:
Apr 10, 2024 7:01:46 AM (10 months ago)
Author:
vboxsync
Message:

VMM: bugref:9898 Implemented vtestp[s|d] instructions and their testcases.

File:
1 edited

Legend:

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

    r104238 r104263  
    38493849
    38503850typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLF2EFL128,(PCRTUINT128U puSrc1, PCRTUINT128U puSrc2, uint32_t *pEFlags));
     3851typedef FNIEMAIMPLF2EFL128 *PFNIEMAIMPLF2EFL128;
    38513852typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLF2EFL256,(PCRTUINT256U puSrc1, PCRTUINT256U puSrc2, uint32_t *pEFlags));
     3853typedef FNIEMAIMPLF2EFL256 *PFNIEMAIMPLF2EFL256;
    38523854FNIEMAIMPLF2EFL128 iemAImpl_ptest_u128;
    38533855FNIEMAIMPLF2EFL256 iemAImpl_vptest_u256, iemAImpl_vptest_u256_fallback;
     3856FNIEMAIMPLF2EFL128 iemAImpl_vtestps_u128, iemAImpl_vtestps_u128_fallback;
     3857FNIEMAIMPLF2EFL256 iemAImpl_vtestps_u256, iemAImpl_vtestps_u256_fallback;
     3858FNIEMAIMPLF2EFL128 iemAImpl_vtestpd_u128, iemAImpl_vtestpd_u128_fallback;
     3859FNIEMAIMPLF2EFL256 iemAImpl_vtestpd_u256, iemAImpl_vtestpd_u256_fallback;
     3860
     3861/**
     3862 * Function table for media instruction taking two full sized media source
     3863 * registers, and updating EFLAGS but no additional state (AVX).
     3864 */
     3865typedef struct IEMOPMEDIAF2EFL
     3866{
     3867    PFNIEMAIMPLF2EFL128 pfnU128;
     3868    PFNIEMAIMPLF2EFL256 pfnU256;
     3869} IEMOPMEDIAF2EFL;
     3870/** Pointer to a media operation function table for 3 full sized ops (AVX). */
     3871typedef IEMOPMEDIAF2EFL const *PCIEMOPMEDIAF2EFL;
     3872
     3873/** @def IEMOPMEDIAF2EFL_INIT_VARS_EX
     3874 * Declares a s_Host (x86 & amd64 only) and a s_Fallback variable with the
     3875 * given functions as initializers.  For use in AVX functions where a pair of
     3876 * functions are only used once and the function table need not be public. */
     3877#ifndef TST_IEM_CHECK_MC
     3878# if (defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64)) && !defined(IEM_WITHOUT_ASSEMBLY)
     3879#  define IEMOPMEDIAF2EFL_INIT_VARS_EX(a_pfnHostU128, a_pfnHostU256, a_pfnFallbackU128, a_pfnFallbackU256) \
     3880    static IEMOPMEDIAF2EFL const s_Host     = { a_pfnHostU128,     a_pfnHostU256 }; \
     3881    static IEMOPMEDIAF2EFL const s_Fallback = { a_pfnFallbackU128, a_pfnFallbackU256 }
     3882# else
     3883#  define IEMOPMEDIAF2EFL_INIT_VARS_EX(a_pfnU128, a_pfnU256, a_pfnFallbackU128, a_pfnFallbackU256) \
     3884    static IEMOPMEDIAF2EFL const s_Fallback = { a_pfnFallbackU128, a_pfnFallbackU256 }
     3885# endif
     3886#else
     3887# define IEMOPMEDIAF2EFL_INIT_VARS_EX(a_pfnU128, a_pfnU256, a_pfnFallbackU128, a_pfnFallbackU256) (void)0
     3888#endif
     3889/** @def IEMOPMEDIAF2EFL_INIT_VARS
     3890 * Generate AVX function tables for the @a a_InstrNm instruction.
     3891 * @sa IEMOPMEDIAF2EFL_INIT_VARS_EX */
     3892#define IEMOPMEDIAF2EFL_INIT_VARS(a_InstrNm) \
     3893    IEMOPMEDIAF2EFL_INIT_VARS_EX(RT_CONCAT3(iemAImpl_,a_InstrNm,_u128),           RT_CONCAT3(iemAImpl_,a_InstrNm,_u256), \
     3894                                 RT_CONCAT3(iemAImpl_,a_InstrNm,_u128_fallback),  RT_CONCAT3(iemAImpl_,a_InstrNm,_u256_fallback))
    38543895
    38553896typedef IEM_DECL_IMPL_TYPE(uint32_t, FNIEMAIMPLSSEF2I32U64,(uint32_t uMxCsrIn, int32_t *pi32Dst, const uint64_t *pu64Src)); /* pu64Src is a double precision floating point. */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette