VirtualBox

Changeset 96347 in vbox


Ignore:
Timestamp:
Aug 19, 2022 5:00:29 PM (2 years ago)
Author:
vboxsync
Message:

VMM/IEM: Implement minss/minsd instructions, bugref:9898

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm

    r96343 r96347  
    46444644IEMIMPL_FP_F2_R32 mulss
    46454645IEMIMPL_FP_F2_R32 subss
     4646IEMIMPL_FP_F2_R32 minss
    46464647
    46474648
     
    46914692IEMIMPL_FP_F2_R64 mulsd
    46924693IEMIMPL_FP_F2_R64 subsd
     4694IEMIMPL_FP_F2_R64 minsd
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r96343 r96347  
    1443714437
    1443814438/**
     14439 * MINSS
     14440 */
     14441#ifdef IEM_WITHOUT_ASSEMBLY
     14442IEM_DECL_IMPL_DEF(void, iemAImpl_minss_u128_r32,(PX86FXSTATE pFpuState, PIEMSSERESULT pResult, PCX86XMMREG puSrc1, PCRTFLOAT32U pr32Src2))
     14443{
     14444    pResult->MXCSR = iemAImpl_minps_u128_worker(&pResult->uResult.ar32[0], pFpuState->MXCSR, &puSrc1->ar32[0], pr32Src2);
     14445    pResult->uResult.ar32[1] = puSrc1->ar32[1];
     14446    pResult->uResult.ar32[2] = puSrc1->ar32[2];
     14447    pResult->uResult.ar32[3] = puSrc1->ar32[3];
     14448}
     14449#endif
     14450
     14451
     14452/**
    1443914453 * MINPD
    1444014454 */
     
    1447114485    pResult->MXCSR  = iemAImpl_minpd_u128_worker(&pResult->uResult.ar64[0], pFpuState->MXCSR, &puSrc1->ar64[0], &puSrc2->ar64[0]);
    1447214486    pResult->MXCSR |= iemAImpl_minpd_u128_worker(&pResult->uResult.ar64[1], pFpuState->MXCSR, &puSrc1->ar64[1], &puSrc2->ar64[1]);
     14487}
     14488#endif
     14489
     14490
     14491/**
     14492 * MINSD
     14493 */
     14494#ifdef IEM_WITHOUT_ASSEMBLY
     14495IEM_DECL_IMPL_DEF(void, iemAImpl_minsd_u128_r64,(PX86FXSTATE pFpuState, PIEMSSERESULT pResult, PCX86XMMREG puSrc1, PCRTFLOAT64U pr64Src2))
     14496{
     14497    pResult->MXCSR = iemAImpl_minpd_u128_worker(&pResult->uResult.ar64[0], pFpuState->MXCSR, &puSrc1->ar64[0], pr64Src2);
     14498    pResult->uResult.ar64[1] = puSrc1->ar64[1];
    1447314499}
    1447414500#endif
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r96343 r96347  
    41844184
    41854185/** Opcode 0xf3 0x0f 0x5d - minss Vss, Wss */
    4186 FNIEMOP_STUB(iemOp_minss_Vss_Wss);
     4186FNIEMOP_DEF(iemOp_minss_Vss_Wss)
     4187{
     4188    IEMOP_MNEMONIC2(RM, MINSS, minss, Vss, Wss, DISOPTYPE_HARMLESS, 0);
     4189    return FNIEMOP_CALL_1(iemOpCommonSseFp_FullR32_To_Full, iemAImpl_minss_u128_r32);
     4190}
     4191
     4192
    41874193/** Opcode 0xf2 0x0f 0x5d - minsd Vsd, Wsd */
    4188 FNIEMOP_STUB(iemOp_minsd_Vsd_Wsd);
     4194FNIEMOP_DEF(iemOp_minsd_Vsd_Wsd)
     4195{
     4196    IEMOP_MNEMONIC2(RM, MINSD, minsd, Vsd, Wsd, DISOPTYPE_HARMLESS, 0);
     4197    return FNIEMOP_CALL_1(iemOpCommonSse2Fp_FullR64_To_Full, iemAImpl_minsd_u128_r64);
     4198}
    41894199
    41904200
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r96343 r96347  
    24452445FNIEMAIMPLFPSSEF2U128R32 iemAImpl_subss_u128_r32;
    24462446FNIEMAIMPLFPSSEF2U128R64 iemAImpl_subsd_u128_r64;
     2447FNIEMAIMPLFPSSEF2U128R32 iemAImpl_minss_u128_r32;
     2448FNIEMAIMPLFPSSEF2U128R64 iemAImpl_minsd_u128_r64;
    24472449
    24482450FNIEMAIMPLFPAVXF3U128 iemAImpl_vaddps_u128, iemAImpl_vaddps_u128_fallback;
     
    24652467FNIEMAIMPLFPAVXF3U128R32 iemAImpl_vsubss_u128_r32, iemAImpl_vsubss_u128_r32_fallback;
    24662468FNIEMAIMPLFPAVXF3U128R64 iemAImpl_vsubsd_u128_r64, iemAImpl_vsubsd_u128_r64_fallback;
     2469FNIEMAIMPLFPAVXF3U128R32 iemAImpl_vminss_u128_r32, iemAImpl_vminss_u128_r32_fallback;
     2470FNIEMAIMPLFPAVXF3U128R64 iemAImpl_vminsd_u128_r64, iemAImpl_vminsd_u128_r64_fallback;
    24672471
    24682472FNIEMAIMPLFPAVXF3U256 iemAImpl_vaddps_u256, iemAImpl_vaddps_u256_fallback;
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r96343 r96347  
    481481#define iemAImpl_subss_u128_r32         NULL
    482482#define iemAImpl_subsd_u128_r64         NULL
     483#define iemAImpl_minss_u128_r32         NULL
     484#define iemAImpl_minsd_u128_r64         NULL
    483485/** @}  */
    484486
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