VirtualBox

Changeset 103953 in vbox


Ignore:
Timestamp:
Mar 20, 2024 12:29:21 PM (11 months ago)
Author:
vboxsync
Message:

VMM/IEM: Implement native emitters for IEM_MC_STORE_MEM_U256_ALIGN_AVX()/IEM_MC_STORE_MEM_FLAT_U256_ALIGN_AVX(), bugref:10614

Location:
trunk/src/VBox/VMM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py

    r103952 r103953  
    33443344    'IEM_MC_STORE_MEM_U256':                                     (McBlock.parseMcGeneric,           True,  True,  False, ),
    33453345    'IEM_MC_STORE_MEM_U256_NO_AC':                               (McBlock.parseMcGeneric,           True,  True,  g_fNativeSimd),
    3346     'IEM_MC_STORE_MEM_U256_ALIGN_AVX':                           (McBlock.parseMcGeneric,           True,  True,  False, ),
     3346    'IEM_MC_STORE_MEM_U256_ALIGN_AVX':                           (McBlock.parseMcGeneric,           True,  True,  g_fNativeSimd),
    33473347    'IEM_MC_STORE_MEM_U32':                                      (McBlock.parseMcGeneric,           True,  True,  True,  ),
    33483348    'IEM_MC_STORE_MEM_U32_CONST':                                (McBlock.parseMcGeneric,           True,  True,  True,  ),
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8vePython.py

    r103952 r103953  
    200200    'IEM_MC_STORE_MEM_FLAT_U256':                                        (None, True,  True,  False, ),
    201201    'IEM_MC_STORE_MEM_FLAT_U256_NO_AC':                                  (None, True,  True,  g_fNativeSimd),
    202     'IEM_MC_STORE_MEM_FLAT_U256_ALIGN_AVX':                              (None, True,  True,  False, ),
     202    'IEM_MC_STORE_MEM_FLAT_U256_ALIGN_AVX':                              (None, True,  True,  g_fNativeSimd),
    203203    'IEM_MC_STORE_MEM_FLAT_U32':                                         (None, True,  True,  True,  ),
    204204    'IEM_MC_STORE_MEM_FLAT_U32_CONST':                                   (None, True,  True,  True,  ),
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompFuncs.h

    r103952 r103953  
    47214721                               || pfnFunction == (uintptr_t)iemNativeHlpMemFlatFetchDataU256AlignedAvx))
    47224722                       || (   enmOp == kIemNativeEmitMemOp_Store
    4723                            && (pfnFunction == (uintptr_t)iemNativeHlpMemFlatStoreDataU256NoAc)));
     4723                           && (   pfnFunction == (uintptr_t)iemNativeHlpMemFlatStoreDataU256NoAc
     4724                               || pfnFunction == (uintptr_t)iemNativeHlpMemFlatStoreDataU256AlignedAvx)));
    47244725                break;
    47254726#endif
     
    47824783                               || pfnFunction == (uintptr_t)iemNativeHlpMemFetchDataU256AlignedAvx))
    47834784                       || (   enmOp == kIemNativeEmitMemOp_Store
    4784                            && (pfnFunction == (uintptr_t)iemNativeHlpMemStoreDataU256NoAc)));
     4785                           && (   pfnFunction == (uintptr_t)iemNativeHlpMemStoreDataU256NoAc
     4786                               || pfnFunction == (uintptr_t)iemNativeHlpMemStoreDataU256AlignedAvx)));
    47854787                break;
    47864788#endif
     
    55715573                                               (uintptr_t)iemNativeHlpMemStoreDataU256NoAc, pCallEntry->idxInstr)
    55725574
     5575# define IEM_MC_STORE_MEM_U256_ALIGN_AVX(a_iSeg, a_GCPtrMem, a_u256Value) \
     5576    off = iemNativeEmitMemFetchStoreDataCommon(pReNative, off, a_u256Value, a_iSeg, a_GCPtrMem, \
     5577                                               sizeof(RTUINT256U), sizeof(RTUINT256U) - 1, kIemNativeEmitMemOp_Store, \
     5578                                               (uintptr_t)iemNativeHlpMemStoreDataU256AlignedAvx, pCallEntry->idxInstr)
     5579
    55735580
    55745581# define IEM_MC_STORE_MEM_FLAT_U128_ALIGN_SSE(a_GCPtrMem, a_u128Value) \
     
    55875594                                               (uintptr_t)iemNativeHlpMemFlatStoreDataU256NoAc, pCallEntry->idxInstr)
    55885595
     5596# define IEM_MC_STORE_MEM_FLAT_U256_ALIGN_AVX(a_GCPtrMem, a_u256Value) \
     5597    off = iemNativeEmitMemFetchStoreDataCommon(pReNative, off, a_u256Value, UINT8_MAX, a_GCPtrMem, \
     5598                                               sizeof(RTUINT256U), sizeof(RTUINT256U) - 1, kIemNativeEmitMemOp_Store, \
     5599                                               (uintptr_t)iemNativeHlpMemFlatStoreDataU256AlignedAvx, pCallEntry->idxInstr)
    55895600#endif
    55905601
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r103952 r103953  
    20282028#endif
    20292029}
     2030
     2031
     2032/**
     2033 * Used by TB code to store unsigned 256-bit data w/ segmentation.
     2034 */
     2035IEM_DECL_NATIVE_HLP_DEF(void, iemNativeHlpMemStoreDataU256AlignedAvx,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint8_t iSegReg, PCRTUINT256U pu256Src))
     2036{
     2037#ifdef IEMNATIVE_WITH_TLB_LOOKUP_STORE
     2038    iemMemStoreDataU256AlignedAvxSafeJmp(pVCpu, iSegReg, GCPtrMem, pu256Src);
     2039#else
     2040    iemMemStoreDataU256AlignedAvxcJmp(pVCpu, iSegReg, GCPtrMem, pu256Src);
     2041#endif
     2042}
    20302043#endif
    20312044
     
    24292442#else
    24302443    iemMemFlatStoreDataU256NoAcJmp(pVCpu, GCPtrMem, pu256Src);
     2444#endif
     2445}
     2446
     2447
     2448/**
     2449 * Used by TB code to store unsigned 256-bit data w/ flat address.
     2450 */
     2451IEM_DECL_NATIVE_HLP_DEF(void, iemNativeHlpMemFlatStoreDataU256AlignedAvx,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, PCRTUINT256U pu256Src))
     2452{
     2453#ifdef IEMNATIVE_WITH_TLB_LOOKUP_STORE
     2454    iemMemStoreDataU256AlignedAvxSafeJmp(pVCpu, UINT8_MAX, GCPtrMem, pu256Src);
     2455#else
     2456    iemMemFlatStoreDataU256AlignedAvxJmp(pVCpu, GCPtrMem, pu256Src);
    24312457#endif
    24322458}
  • trunk/src/VBox/VMM/include/IEMN8veRecompiler.h

    r103952 r103953  
    16601660IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpMemStoreDataU128NoAc,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint8_t iSegReg, PCRTUINT128U pu128Src));
    16611661IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpMemStoreDataU256NoAc,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint8_t iSegReg, PCRTUINT256U pu256Src));
     1662IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpMemStoreDataU256AlignedAvx,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint8_t iSegReg, PCRTUINT256U pu256Src));
    16621663#endif
    16631664IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpStackStoreU16,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint16_t u16Value));
     
    16941695IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpMemFlatStoreDataU128NoAc,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, PCRTUINT128U pu128Src));
    16951696IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpMemFlatStoreDataU256NoAc,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, PCRTUINT256U pu256Src));
     1697IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpMemFlatStoreDataU256AlignedAvx,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, PCRTUINT256U pu256Src));
    16961698#endif
    16971699IEM_DECL_NATIVE_HLP_PROTO(void,     iemNativeHlpStackFlatStoreU16,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint16_t u16Value));
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