Changeset 104263 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- Apr 10, 2024 7:01:46 AM (10 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMInternal.h
r104238 r104263 3849 3849 3850 3850 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLF2EFL128,(PCRTUINT128U puSrc1, PCRTUINT128U puSrc2, uint32_t *pEFlags)); 3851 typedef FNIEMAIMPLF2EFL128 *PFNIEMAIMPLF2EFL128; 3851 3852 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLF2EFL256,(PCRTUINT256U puSrc1, PCRTUINT256U puSrc2, uint32_t *pEFlags)); 3853 typedef FNIEMAIMPLF2EFL256 *PFNIEMAIMPLF2EFL256; 3852 3854 FNIEMAIMPLF2EFL128 iemAImpl_ptest_u128; 3853 3855 FNIEMAIMPLF2EFL256 iemAImpl_vptest_u256, iemAImpl_vptest_u256_fallback; 3856 FNIEMAIMPLF2EFL128 iemAImpl_vtestps_u128, iemAImpl_vtestps_u128_fallback; 3857 FNIEMAIMPLF2EFL256 iemAImpl_vtestps_u256, iemAImpl_vtestps_u256_fallback; 3858 FNIEMAIMPLF2EFL128 iemAImpl_vtestpd_u128, iemAImpl_vtestpd_u128_fallback; 3859 FNIEMAIMPLF2EFL256 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 */ 3865 typedef 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). */ 3871 typedef 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)) 3854 3895 3855 3896 typedef 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.