Changeset 103186 in vbox
- Timestamp:
- Feb 4, 2024 3:43:38 PM (12 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r103184 r103186 135 135 * 136 136 * 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 (which138 * 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. 139 139 * 140 140 * @returns Status bits. … … 144 144 * @param a_fExtra Additional bits to set. 145 145 */ 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) \ 147 147 do { \ 148 148 uint32_t fEflTmp = *(a_pfEFlags); \ … … 869 869 uint64_t uResult = *puDst | uSrc; 870 870 *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); 872 872 } 873 873 … … 878 878 uint32_t uResult = *puDst | uSrc; 879 879 *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); 881 881 } 882 882 … … 886 886 uint16_t uResult = *puDst | uSrc; 887 887 *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); 889 889 } 890 890 … … 894 894 uint8_t uResult = *puDst | uSrc; 895 895 *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); 897 897 } 898 898 … … 907 907 uint64_t uResult = *puDst ^ uSrc; 908 908 *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); 910 910 } 911 911 … … 916 916 uint32_t uResult = *puDst ^ uSrc; 917 917 *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); 919 919 } 920 920 … … 924 924 uint16_t uResult = *puDst ^ uSrc; 925 925 *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); 927 927 } 928 928 … … 932 932 uint8_t uResult = *puDst ^ uSrc; 933 933 *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); 935 935 } 936 936 … … 945 945 uint64_t const uResult = *puDst & uSrc; 946 946 *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); 948 948 } 949 949 … … 954 954 uint32_t const uResult = *puDst & uSrc; 955 955 *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); 957 957 } 958 958 … … 962 962 uint16_t const uResult = *puDst & uSrc; 963 963 *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); 965 965 } 966 966 … … 970 970 uint8_t const uResult = *puDst & uSrc; 971 971 *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); 973 973 } 974 974 … … 984 984 uint64_t const uResult = ~uSrc1 & uSrc2; 985 985 *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); 987 987 } 988 988 … … 992 992 uint32_t const uResult = ~uSrc1 & uSrc2; 993 993 *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); 995 995 } 996 996 … … 1054 1054 { 1055 1055 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); 1057 1057 } 1058 1058 … … 1062 1062 { 1063 1063 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); 1065 1065 } 1066 1066 … … 1069 1069 { 1070 1070 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); 1072 1072 } 1073 1073 … … 1076 1076 { 1077 1077 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); 1079 1079 } 1080 1080 … … 17961 17961 17962 17962 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]); 17965 17965 17966 17966 float64_t f64Src1 = iemFpSoftF64FromIprt(&r64Src1); … … 18004 18004 18005 18005 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]); 18008 18008 18009 18009 float32_t f32Src1 = iemFpSoftF32FromIprt(&r32Src1);
Note:
See TracChangeset
for help on using the changeset viewer.