VirtualBox

Changeset 98480 in vbox


Ignore:
Timestamp:
Feb 6, 2023 6:01:43 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
155737
Message:

VMM/IEM: Corrected values of X86_SSE_ROUNDXX_* constants for roundxx SSE instructions, bugref:9898

File:
1 edited

Legend:

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

    r98311 r98480  
    1713217132 */
    1713317133
    17134 #define X86_SSE_ROUNDXX_IMM_RC_MASK    UINT32_C(0x0003)
    17135 #define X86_SSE_ROUNDXX_IMM_ROUND_SEL  UINT32_C(0x0004)
    17136 #define X86_SSE_ROUNDXX_IMM_PRECISION  UINT32_C(0x0008)
     17134#define X86_SSE_ROUNDXX_IMM_RC_MASK    UINT8_C(0x03)
     17135#define X86_SSE_ROUNDXX_IMM_ROUND_SEL  UINT8_C(0x04)
     17136#define X86_SSE_ROUNDXX_IMM_PRECISION  UINT8_C(0x08)
     17137
     17138#define X86_SSE_ROUNDXX_IMM_MASK       UINT8_C(0x0F)
    1713717139
    1713817140DECLINLINE(softfloat_state_t) iemSseRoundXXMxcsrAndImmToSoftState(uint32_t fMxcsr, uint8_t bImm)
     
    1717717179IEM_DECL_IMPL_DEF(void, iemAImpl_roundss_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    1717817180{
    17179     puDst->ar32[0] = iemAImpl_round_worker_r32(pfMxcsr, &pSrc->uSrc2.ar32[0], bImm & 0x7);
     17181    puDst->ar32[0] = iemAImpl_round_worker_r32(pfMxcsr, &pSrc->uSrc2.ar32[0], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    1718017182    puDst->au32[1] = pSrc->uSrc1.au32[1];
    1718117183    puDst->au64[1] = pSrc->uSrc1.au64[1];
     
    1718517187IEM_DECL_IMPL_DEF(void, iemAImpl_roundsd_u128,(uint32_t *pfMxcsr, PX86XMMREG puDst, PCIEMMEDIAF2XMMSRC pSrc, uint8_t bImm))
    1718617188{
    17187     puDst->ar64[0] = iemAImpl_round_worker_r64(pfMxcsr, &pSrc->uSrc2.ar64[0], bImm & 0x7);
     17189    puDst->ar64[0] = iemAImpl_round_worker_r64(pfMxcsr, &pSrc->uSrc2.ar64[0], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    1718817190    puDst->au64[1] = pSrc->uSrc1.au64[1];
    1718917191}
     
    1719417196    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->ar32); i++)
    1719517197    {
    17196         puDst->ar32[i] = iemAImpl_round_worker_r32(pfMxcsr, &pSrc->uSrc2.ar32[i], bImm & 0x7);
     17198        puDst->ar32[i] = iemAImpl_round_worker_r32(pfMxcsr, &pSrc->uSrc2.ar32[i], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    1719717199    }
    1719817200}
     
    1720317205    for (uint8_t i = 0; i < RT_ELEMENTS(puDst->ar64); i++)
    1720417206    {
    17205         puDst->ar64[i] = iemAImpl_round_worker_r64(pfMxcsr, &pSrc->uSrc2.ar64[i], bImm & 0x7);
     17207        puDst->ar64[i] = iemAImpl_round_worker_r64(pfMxcsr, &pSrc->uSrc2.ar64[i], bImm & X86_SSE_ROUNDXX_IMM_MASK);
    1720617208    }
    1720717209}
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