VirtualBox

Changeset 105350 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Jul 16, 2024 11:12:54 AM (8 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164003
Message:

VMM/IEM: Implement vcvtps2dq instruction emulation, bugref:9898

Location:
trunk/src/VBox/VMM/VMMAll
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp

    r105349 r105350  
    1751517515
    1751617516/**
    17517  * CVTPS2DQ
    17518  */
    17519 #ifdef IEM_WITHOUT_ASSEMBLY
     17517 * [V]CVTPS2DQ
     17518 */
    1752017519static uint32_t iemAImpl_cvtps2dq_u128_worker(int32_t *pi32Res, uint32_t fMxcsr, PCRTFLOAT32U pr32Src)
    1752117520{
     
    1752917528
    1753017529
     17530#ifdef IEM_WITHOUT_ASSEMBLY
    1753117531IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_cvtps2dq_u128,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2))
    1753217532{
     
    1753917539}
    1754017540#endif
     17541
     17542
     17543IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vcvtps2dq_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCX86XMMREG puSrc))
     17544{
     17545    return   iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[0], uMxCsrIn, &puSrc->ar32[0])
     17546           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[1], uMxCsrIn, &puSrc->ar32[1])
     17547           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[2], uMxCsrIn, &puSrc->ar32[2])
     17548           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[3], uMxCsrIn, &puSrc->ar32[3]);
     17549}
     17550
     17551
     17552IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vcvtps2dq_u256_fallback,(uint32_t uMxCsrIn, PX86YMMREG puDst, PCX86YMMREG puSrc))
     17553{
     17554    return   iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[0], uMxCsrIn, &puSrc->ar32[0])
     17555           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[1], uMxCsrIn, &puSrc->ar32[1])
     17556           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[2], uMxCsrIn, &puSrc->ar32[2])
     17557           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[3], uMxCsrIn, &puSrc->ar32[3])
     17558           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[4], uMxCsrIn, &puSrc->ar32[4])
     17559           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[5], uMxCsrIn, &puSrc->ar32[5])
     17560           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[6], uMxCsrIn, &puSrc->ar32[6])
     17561           | iemAImpl_cvtps2dq_u128_worker(&puDst->ai32[7], uMxCsrIn, &puSrc->ar32[7]);
     17562}
    1754117563
    1754217564
  • TabularUnified trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h

    r105349 r105350  
    38753875
    38763876/** Opcode VEX.66.0F 0x5b - vcvtps2dq Vdq, Wps */
    3877 FNIEMOP_STUB(iemOp_vcvtps2dq_Vdq_Wps);
     3877FNIEMOP_DEF(iemOp_vcvtps2dq_Vdq_Wps)
     3878{
     3879    IEMOP_MNEMONIC2(VEX_RM, VCVTPS2DQ, vcvtps2dq, Vps, Wx, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0);
     3880    IEMOPMEDIAF2_INIT_VARS(            vcvtps2dq);
     3881    return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback));
     3882}
     3883
     3884
    38783885/** Opcode VEX.F3.0F 0x5b - vcvttps2dq Vdq, Wps */
    38793886FNIEMOP_STUB(iemOp_vcvttps2dq_Vdq_Wps);
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