Changeset 105397 in vbox for trunk/src/VBox/ValidationKit
- Timestamp:
- Jul 18, 2024 9:35:43 AM (9 months ago)
- svn:sync-xref-src-repo-rev:
- 164050
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r105396 r105397 199 199 * Exponent - 11 bits, least significant bit MBZ. 200 200 */ 201 #define FP64_NORM_V0(a_Sign) RTFLOAT64U_INIT_C(a_Sign, 0xacc01adec0de5, 0x30c) 202 #define FP64_NORM_V1(a_Sign) RTFLOAT64U_INIT_C(a_Sign, 0xf10a7ab1ec01a, 0x4bc) 203 #define FP64_NORM_V2(a_Sign) RTFLOAT64U_INIT_C(a_Sign, 0xca5cadea1b1ed, 0x3ae) 204 #define FP64_NORM_V3(a_Sign) RTFLOAT64U_INIT_C(a_Sign, 0xb5b5b5b5b5b5b, 0x7fe) 201 #define FP64_FRAC_V0 0xacc01adec0de5 202 #define FP64_FRAC_V1 0xf10a7ab1ec01a 203 #define FP64_FRAC_V2 0xca5cadea1b1ed 204 #define FP64_FRAC_V3 0xb5b5b5b5b5b5b 205 #define FP64_EXP_V0 0x30c 206 #define FP64_EXP_V1 0x4bc 207 #define FP64_EXP_V2 0x3ae 208 #define FP64_EXP_V3 0x7fe 209 AssertCompile(!(FP64_EXP_V0 & RT_BIT(0))); 210 AssertCompile(!(FP64_EXP_V1 & RT_BIT(0))); 211 AssertCompile(!(FP64_EXP_V2 & RT_BIT(0))); 212 AssertCompile(!(FP64_EXP_V3 & RT_BIT(0))); 213 #define FP64_NORM_V0(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V0, FP64_EXP_V0) 214 #define FP64_NORM_V1(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V1, FP64_EXP_V1) 215 #define FP64_NORM_V2(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V2, FP64_EXP_V2) 216 #define FP64_NORM_V3(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V3, FP64_EXP_V3) 205 217 /* The maximum integer value (all 52 + 1 implied bit of the fraction part set) without losing precision. */ 206 218 #define FP64_NORM_SAFE_INT_MAX(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_NORM_MAX, FP64_EXP_SAFE_INT_MAX) … … 1987 1999 /*flags */ 0, 0 }, 1988 2000 /** @todo More denormals; Underflow, Precision; Rounding, FZ etc. */ 2001 /* 2002 * Invalids. 2003 */ 2004 /*27*/{ { /*src2 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0) } }, 2005 { /*src1 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX) } }, 2006 { /* => */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX) } }, 2007 /*mask */ X86_MXCSR_XCPT_MASK, 2008 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST, 2009 /*flags */ 0, 0 }, 2010 { { /*src2 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0), } }, 2011 { /*src1 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX) } }, 2012 { /* => */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, 1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX) } }, 2013 /*mask */ X86_MXCSR_XCPT_MASK, 2014 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST, 2015 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2016 { { /*src2 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V1) } }, 2017 { /*src1 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } }, 2018 { /* => */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } }, 2019 /*mask */ X86_MXCSR_XCPT_MASK, 2020 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST, 2021 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2022 { { /*src2 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } }, 2023 { /*src1 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V0) } }, 2024 { /* => */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V0) } }, 2025 /*mask */ X86_MXCSR_XCPT_MASK, 2026 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST, 2027 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2028 { { /*src2 */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1), FP64_QNAN_V(0, FP64_FRAC_V1) } }, 2029 { /*src1 */ { FP64_1(0), FP64_1(1), FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1) } }, 2030 { /* => */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V1) } }, 2031 /*mask */ X86_MXCSR_XCPT_MASK, 2032 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST, 2033 /*flags */ 0, 0 }, 2034 { { /*src2 */ { FP64_SNAN(1), FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1), FP64_SNAN_V(0, FP64_FRAC_V1) } }, 2035 { /*src1 */ { FP64_1(0), FP64_1(0), FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1) } }, 2036 { /* => */ { FP64_QNAN_V(1, 1), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V1) } }, 2037 /*mask */ X86_MXCSR_XCPT_MASK, 2038 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST, 2039 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2040 { { /*src2 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0) } }, 2041 { /*src1 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX) } }, 2042 { /* => */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX) } }, 2043 /*mask */ ~X86_MXCSR_XCPT_MASK, 2044 /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN, 2045 /*flags */ 0, 0 }, 2046 { { /*src2 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP32_FRAC_V1) } }, 2047 { /*src1 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP32_FRAC_V2) } }, 2048 { /* => */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, 1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP32_FRAC_V2) } }, 2049 /*mask */ ~X86_MXCSR_XCPT_MASK, 2050 /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO, 2051 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2052 { { /*src2 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V1) } }, 2053 { /*src1 */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } }, 2054 { /* => */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } }, 2055 /*mask */ ~X86_MXCSR_XCPT_MASK, 2056 /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO, 2057 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2058 { { /*src2 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } }, 2059 { /*src1 */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3) } }, 2060 { /* => */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V3) } }, 2061 /*mask */ ~X86_MXCSR_XCPT_MASK, 2062 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_UP, 2063 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 2064 { { /*src2 */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1), FP64_QNAN_V(0, FP64_FRAC_V1) } }, 2065 { /*src1 */ { FP64_1(0), FP64_1(1), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1) } }, 2066 { /* => */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V1) } }, 2067 /*mask */ ~X86_MXCSR_XCPT_MASK, 2068 /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_DOWN, 2069 /*flags */ 0, 0 }, 2070 { { /*src2 */ { FP64_SNAN(1), FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1), FP64_SNAN_V(0, FP64_FRAC_V2) } }, 2071 { /*src1 */ { FP64_1(0), FP64_1(0), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1) } }, 2072 { /* => */ { FP64_QNAN_V(1, 1), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } }, 2073 /*mask */ ~X86_MXCSR_XCPT_MASK, 2074 /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_ZERO, 2075 /*flags */ X86_MXCSR_IE, X86_MXCSR_IE }, 1989 2076 }; 1990 2077
Note:
See TracChangeset
for help on using the changeset viewer.