VirtualBox

Changeset 96349 in vbox


Ignore:
Timestamp:
Aug 19, 2022 5:05:23 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153165
Message:

VMM/IEM: Implement divss/divsd instructions, bugref:9898

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

Legend:

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

    r96347 r96349  
    46454645IEMIMPL_FP_F2_R32 subss
    46464646IEMIMPL_FP_F2_R32 minss
     4647IEMIMPL_FP_F2_R32 divss
    46474648
    46484649
     
    46934694IEMIMPL_FP_F2_R64 subsd
    46944695IEMIMPL_FP_F2_R64 minsd
     4696IEMIMPL_FP_F2_R64 divsd
  • trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r96347 r96349  
    1455114551
    1455214552/**
     14553 * DIVSS
     14554 */
     14555#ifdef IEM_WITHOUT_ASSEMBLY
     14556IEM_DECL_IMPL_DEF(void, iemAImpl_divss_u128_r32,(PX86FXSTATE pFpuState, PIEMSSERESULT pResult, PCX86XMMREG puSrc1, PCRTFLOAT32U pr32Src2))
     14557{
     14558    pResult->MXCSR = iemAImpl_divps_u128_worker(&pResult->uResult.ar32[0], pFpuState->MXCSR, &puSrc1->ar32[0], pr32Src2);
     14559    pResult->uResult.ar32[1] = puSrc1->ar32[1];
     14560    pResult->uResult.ar32[2] = puSrc1->ar32[2];
     14561    pResult->uResult.ar32[3] = puSrc1->ar32[3];
     14562}
     14563#endif
     14564
     14565
     14566/**
    1455314567 * DIVPD
    1455414568 */
     
    1459814612
    1459914613/**
     14614 * DIVSD
     14615 */
     14616#ifdef IEM_WITHOUT_ASSEMBLY
     14617IEM_DECL_IMPL_DEF(void, iemAImpl_divsd_u128_r64,(PX86FXSTATE pFpuState, PIEMSSERESULT pResult, PCX86XMMREG puSrc1, PCRTFLOAT64U pr64Src2))
     14618{
     14619    pResult->MXCSR = iemAImpl_divpd_u128_worker(&pResult->uResult.ar64[0], pFpuState->MXCSR, &puSrc1->ar64[0], pr64Src2);
     14620    pResult->uResult.ar64[1] = puSrc1->ar64[1];
     14621}
     14622#endif
     14623
     14624
     14625/**
    1460014626 * MAXPS
    1460114627 */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r96347 r96349  
    42164216
    42174217/** Opcode 0xf3 0x0f 0x5e - divss Vss, Wss */
    4218 FNIEMOP_STUB(iemOp_divss_Vss_Wss);
     4218FNIEMOP_DEF(iemOp_divss_Vss_Wss)
     4219{
     4220    IEMOP_MNEMONIC2(RM, DIVSS, divss, Vss, Wss, DISOPTYPE_HARMLESS, 0);
     4221    return FNIEMOP_CALL_1(iemOpCommonSseFp_FullR32_To_Full, iemAImpl_divss_u128_r32);
     4222}
     4223
     4224
    42194225/** Opcode 0xf2 0x0f 0x5e - divsd Vsd, Wsd */
    4220 FNIEMOP_STUB(iemOp_divsd_Vsd_Wsd);
     4226FNIEMOP_DEF(iemOp_divsd_Vsd_Wsd)
     4227{
     4228    IEMOP_MNEMONIC2(RM, DIVSD, divsd, Vsd, Wsd, DISOPTYPE_HARMLESS, 0);
     4229    return FNIEMOP_CALL_1(iemOpCommonSse2Fp_FullR64_To_Full, iemAImpl_divsd_u128_r64);
     4230}
    42214231
    42224232
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r96347 r96349  
    24472447FNIEMAIMPLFPSSEF2U128R32 iemAImpl_minss_u128_r32;
    24482448FNIEMAIMPLFPSSEF2U128R64 iemAImpl_minsd_u128_r64;
     2449FNIEMAIMPLFPSSEF2U128R32 iemAImpl_divss_u128_r32;
     2450FNIEMAIMPLFPSSEF2U128R64 iemAImpl_divsd_u128_r64;
    24492451
    24502452FNIEMAIMPLFPAVXF3U128 iemAImpl_vaddps_u128, iemAImpl_vaddps_u128_fallback;
     
    24692471FNIEMAIMPLFPAVXF3U128R32 iemAImpl_vminss_u128_r32, iemAImpl_vminss_u128_r32_fallback;
    24702472FNIEMAIMPLFPAVXF3U128R64 iemAImpl_vminsd_u128_r64, iemAImpl_vminsd_u128_r64_fallback;
     2473FNIEMAIMPLFPAVXF3U128R32 iemAImpl_vdivss_u128_r32, iemAImpl_vdivss_u128_r32_fallback;
     2474FNIEMAIMPLFPAVXF3U128R64 iemAImpl_vdivsd_u128_r64, iemAImpl_vdivsd_u128_r64_fallback;
    24712475
    24722476FNIEMAIMPLFPAVXF3U256 iemAImpl_vaddps_u256, iemAImpl_vaddps_u256_fallback;
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r96347 r96349  
    483483#define iemAImpl_minss_u128_r32         NULL
    484484#define iemAImpl_minsd_u128_r64         NULL
     485#define iemAImpl_divss_u128_r32         NULL
     486#define iemAImpl_divsd_u128_r64         NULL
     487
    485488/** @}  */
    486489
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