VirtualBox

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


Ignore:
Timestamp:
Jan 19, 2023 11:46:27 AM (2 years ago)
Author:
vboxsync
Message:

VMM/IEM: Implementation of roundxx SSE instructions. [clang build fixes] bugref:9898

File:
1 edited

Legend:

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

    r98132 r98134  
    1446014460    }
    1446114461
     14462#ifdef IEM_WITHOUT_ASSEMBLY
    1446214463
    1446314464/**
     
    1458314584}
    1458414585
     14586#endif /* IEM_WITHOUT_ASSEMBLY */
     14587
    1458514588
    1458614589/**
     
    1464514648}
    1464614649
     14650#ifdef IEM_WITHOUT_ASSEMBLY
    1464714651
    1464814652/**
     
    1465814662DECLINLINE(bool) iemSseBinaryValIsNaNR32(PRTFLOAT32U pr32Res, PCRTFLOAT32U pr32Val1, PCRTFLOAT32U pr32Val2, uint32_t *pfMxcsr)
    1465914663{
    14660     uint8_t cQNan = RTFLOAT32U_IS_QUIET_NAN(pr32Val1) + RTFLOAT32U_IS_QUIET_NAN(pr32Val2);
    14661     uint8_t cSNan = RTFLOAT32U_IS_SIGNALLING_NAN(pr32Val1) + RTFLOAT32U_IS_SIGNALLING_NAN(pr32Val2);
     14664    uint8_t const cQNan = RTFLOAT32U_IS_QUIET_NAN(pr32Val1)      + RTFLOAT32U_IS_QUIET_NAN(pr32Val2);
     14665    uint8_t const cSNan = RTFLOAT32U_IS_SIGNALLING_NAN(pr32Val1) + RTFLOAT32U_IS_SIGNALLING_NAN(pr32Val2);
    1466214666    if (cSNan + cQNan == 2)
    1466314667    {
     
    1466814672        return true;
    1466914673    }
    14670     else if (cSNan)
     14674    if (cSNan)
    1467114675    {
    1467214676        /* One operand is an SNan and placed into the result, converting it to a QNan. */
     
    1467614680        return true;
    1467714681    }
    14678     else if (cQNan)
     14682    if (cQNan)
    1467914683    {
    1468014684        /* The QNan operand is placed into the result. */
     
    1470014704DECLINLINE(bool) iemSseBinaryValIsNaNR64(PRTFLOAT64U pr64Res, PCRTFLOAT64U pr64Val1, PCRTFLOAT64U pr64Val2, uint32_t *pfMxcsr)
    1470114705{
    14702     uint8_t cQNan = RTFLOAT64U_IS_QUIET_NAN(pr64Val1) + RTFLOAT64U_IS_QUIET_NAN(pr64Val2);
    14703     uint8_t cSNan = RTFLOAT64U_IS_SIGNALLING_NAN(pr64Val1) + RTFLOAT64U_IS_SIGNALLING_NAN(pr64Val2);
     14706    uint8_t const cQNan = RTFLOAT64U_IS_QUIET_NAN(pr64Val1)      + RTFLOAT64U_IS_QUIET_NAN(pr64Val2);
     14707    uint8_t const cSNan = RTFLOAT64U_IS_SIGNALLING_NAN(pr64Val1) + RTFLOAT64U_IS_SIGNALLING_NAN(pr64Val2);
    1470414708    if (cSNan + cQNan == 2)
    1470514709    {
     
    1471014714        return true;
    1471114715    }
    14712     else if (cSNan)
     14716    if (cSNan)
    1471314717    {
    1471414718        /* One operand is an SNan and placed into the result, converting it to a QNan. */
     
    1471814722        return true;
    1471914723    }
    14720     else if (cQNan)
     14724    if (cQNan)
    1472114725    {
    1472214726        /* The QNan operand is placed into the result. */
     
    1474914753        return true;
    1475014754    }
    14751     else if (RTFLOAT32U_IS_QUIET_NAN(pr32Val))
     14755    if (RTFLOAT32U_IS_QUIET_NAN(pr32Val))
    1475214756    {
    1475314757        /* The QNan operand is placed into the result. */
     
    1477914783        return true;
    1478014784    }
    14781     else if (RTFLOAT64U_IS_QUIET_NAN(pr64Val))
     14785    if (RTFLOAT64U_IS_QUIET_NAN(pr64Val))
    1478214786    {
    1478314787        /* The QNan operand is placed into the result. */
     
    1478914793}
    1479014794
     14795#endif /* IEM_WITHOUT_ASSEMBLY */
    1479114796
    1479214797/**
     
    1705717062
    1705817063        RTFLOAT64U r64Src1, r64Src2;
    17059         uint32_t fDe  = iemSsePrepareValueR64(&r64Src1, *pfMxcsr, pr64Src1);
    17060                  fDe |= iemSsePrepareValueR64(&r64Src2, *pfMxcsr, pr64Src2);
     17064        uint32_t fDe  = iemSsePrepareValueR64(&r64Src1, *pfMxcsr, pr64Src1)
     17065                      | iemSsePrepareValueR64(&r64Src2, *pfMxcsr, pr64Src2);
    1706117066
    1706217067        *pfMxcsr |= fDe;
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