VirtualBox

Changeset 103186 in vbox


Ignore:
Timestamp:
Feb 4, 2024 3:43:38 PM (12 months ago)
Author:
vboxsync
Message:

VMM/IEM: Some IEMAllAImplC.cpp adjustments. bugref:10372

File:
1 edited

Legend:

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

    r103184 r103186  
    135135 *
    136136 * CF and OF are defined to be 0 by logical operations.  AF on the other hand is
    137  * undefined.  We do not set AF, as that seems to make the most sense (which
    138  * probably makes it the most wrong in real life).
     137 * undefined.  We clear AF, as that seems to make the most sense and also seems
     138 * to be the correct behavior on current CPUs.
    139139 *
    140140 * @returns Status bits.
     
    144144 * @param   a_fExtra        Additional bits to set.
    145145 */
    146 #define IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(a_pfEFlags, a_uResult, a_cBitsWidth, a_fExtra) \
     146#define IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(a_pfEFlags, a_uResult, a_cBitsWidth, a_fExtra) \
    147147    do { \
    148148        uint32_t fEflTmp = *(a_pfEFlags); \
     
    869869    uint64_t uResult = *puDst | uSrc;
    870870    *puDst = uResult;
    871     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 64, 0);
     871    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 64, 0);
    872872}
    873873
     
    878878    uint32_t uResult = *puDst | uSrc;
    879879    *puDst = uResult;
    880     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 32, 0);
     880    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 32, 0);
    881881}
    882882
     
    886886    uint16_t uResult = *puDst | uSrc;
    887887    *puDst = uResult;
    888     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 16, 0);
     888    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 16, 0);
    889889}
    890890
     
    894894    uint8_t uResult = *puDst | uSrc;
    895895    *puDst = uResult;
    896     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 8, 0);
     896    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 8, 0);
    897897}
    898898
     
    907907    uint64_t uResult = *puDst ^ uSrc;
    908908    *puDst = uResult;
    909     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 64, 0);
     909    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 64, 0);
    910910}
    911911
     
    916916    uint32_t uResult = *puDst ^ uSrc;
    917917    *puDst = uResult;
    918     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 32, 0);
     918    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 32, 0);
    919919}
    920920
     
    924924    uint16_t uResult = *puDst ^ uSrc;
    925925    *puDst = uResult;
    926     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 16, 0);
     926    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 16, 0);
    927927}
    928928
     
    932932    uint8_t uResult = *puDst ^ uSrc;
    933933    *puDst = uResult;
    934     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 8, 0);
     934    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 8, 0);
    935935}
    936936
     
    945945    uint64_t const uResult = *puDst & uSrc;
    946946    *puDst = uResult;
    947     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 64, 0);
     947    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 64, 0);
    948948}
    949949
     
    954954    uint32_t const uResult = *puDst & uSrc;
    955955    *puDst = uResult;
    956     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 32, 0);
     956    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 32, 0);
    957957}
    958958
     
    962962    uint16_t const uResult = *puDst & uSrc;
    963963    *puDst = uResult;
    964     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 16, 0);
     964    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 16, 0);
    965965}
    966966
     
    970970    uint8_t const uResult = *puDst & uSrc;
    971971    *puDst = uResult;
    972     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 8, 0);
     972    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 8, 0);
    973973}
    974974
     
    984984    uint64_t const uResult = ~uSrc1 & uSrc2;
    985985    *puDst = uResult;
    986     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 64, 0);
     986    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 64, 0);
    987987}
    988988
     
    992992    uint32_t const uResult = ~uSrc1 & uSrc2;
    993993    *puDst = uResult;
    994     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 32, 0);
     994    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 32, 0);
    995995}
    996996
     
    10541054{
    10551055    uint64_t uResult = *puDst & uSrc;
    1056     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 64, 0);
     1056    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 64, 0);
    10571057}
    10581058
     
    10621062{
    10631063    uint32_t uResult = *puDst & uSrc;
    1064     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 32, 0);
     1064    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 32, 0);
    10651065}
    10661066
     
    10691069{
    10701070    uint16_t uResult = *puDst & uSrc;
    1071     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 16, 0);
     1071    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 16, 0);
    10721072}
    10731073
     
    10761076{
    10771077    uint8_t uResult = *puDst & uSrc;
    1078     IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGIC(pfEFlags, uResult, 8, 0);
     1078    IEM_EFL_UPDATE_STATUS_BITS_FOR_LOGICAL(pfEFlags, uResult, 8, 0);
    10791079}
    10801080
     
    1796117961
    1796217962        RTFLOAT64U r64Src1, r64Src2;
    17963         uint32_t fDe  = iemSsePrepareValueR64(&r64Src1, *pfMxcsr, &puSrc1->ar64[0]);
    17964                  fDe |= iemSsePrepareValueR64(&r64Src2, *pfMxcsr, &puSrc2->ar64[0]);
     17963        uint32_t fDe = iemSsePrepareValueR64(&r64Src1, *pfMxcsr, &puSrc1->ar64[0])
     17964                     | iemSsePrepareValueR64(&r64Src2, *pfMxcsr, &puSrc2->ar64[0]);
    1796517965
    1796617966        float64_t f64Src1 = iemFpSoftF64FromIprt(&r64Src1);
     
    1800418004
    1800518005        RTFLOAT32U r32Src1, r32Src2;
    18006         uint32_t fDe  = iemSsePrepareValueR32(&r32Src1, *pfMxcsr, &puSrc1->ar32[0]);
    18007                  fDe |= iemSsePrepareValueR32(&r32Src2, *pfMxcsr, &puSrc2->ar32[0]);
     18006        uint32_t fDe = iemSsePrepareValueR32(&r32Src1, *pfMxcsr, &puSrc1->ar32[0])
     18007                     | iemSsePrepareValueR32(&r32Src2, *pfMxcsr, &puSrc2->ar32[0]);
    1800818008
    1800918009        float32_t f32Src1 = iemFpSoftF32FromIprt(&r32Src1);
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