Changeset 106205 in vbox
- Timestamp:
- Oct 2, 2024 9:53:26 AM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106189 r106205 85 85 /** The min fraction value for a single-precision floating-point denormal. */ 86 86 #define FP32_FRAC_DENORM_MIN 1 87 /** The max fraction value for a single-precision floating-point signalling NAN. */ 88 #define FP32_FRAC_SNAN_MAX 0x3fffff 89 /** The min fraction value for a single-precision floating-point signalling NAN. */ 90 #define FP32_FRAC_SNAN_MIN 1 91 /** The max fraction value for a single-precision floating-point quiet NAN. */ 92 #define FP32_FRAC_QNAN_MAX 0x7fffff 93 /** The min fraction value for a single-precision floating-point quiet NAN. */ 94 #define FP32_FRAC_QNAN_MIN 0x400000 87 95 88 96 #define FP32_NORM_MAX(a_Sign) RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_NORM_MAX, FP32_EXP_NORM_MAX) … … 179 187 #define FP32_DENORM_V2(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x6fefbb, 0) 180 188 #define FP32_DENORM_V3(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x5b5b2e, 0) 181 #define FP32_DENORM_V4(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x 000001, 0)189 #define FP32_DENORM_V4(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x10c01a, 0) 182 190 #define FP32_DENORM_V5(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x000fff, 0) 183 191 #define FP32_DENORM_V6(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x700b02, 0) 184 #define FP32_DENORM_V7(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x10c01a, 0) 192 #define FP32_DENORM_V7(a_Sign) RTFLOAT32U_INIT_C(a_Sign, 0x000001, 0) 193 194 /* 195 * Single-precision floating-point invalids. 196 * (1 to 0x3fffff fractional part for SNANs and 0x400000 to 0x7fffff for QNAN). 197 */ 198 #define FP32_FRAC_INV_V0 0x3fffff 199 #define FP32_FRAC_INV_V1 0x21301c 200 #define FP32_FRAC_INV_V2 0x3c0de0 201 #define FP32_FRAC_INV_V3 0x110110 202 #define FP32_FRAC_INV_V4 0x0f0f0f 203 #define FP32_FRAC_INV_V5 0x10f0f0 204 #define FP32_FRAC_INV_V6 0x3ebebe 205 #define FP32_FRAC_INV_V7 0x000001 206 /* Single-precision floating-point signalling NANs (SNAN). */ 207 #define FP32_SNAN_V0(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V0) 208 #define FP32_SNAN_V1(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V1) 209 #define FP32_SNAN_V2(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V2) 210 #define FP32_SNAN_V3(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V3) 211 #define FP32_SNAN_V4(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V4) 212 #define FP32_SNAN_V5(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V5) 213 #define FP32_SNAN_V6(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V6) 214 #define FP32_SNAN_V7(a_Sign) RTFLOAT32U_INIT_SNAN_EX(a_Sign, FP32_FRAC_INV_V7) 215 /* Single-precision floating-point quiet NANs (QNAN). */ 216 #define FP32_QNAN_V0(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V0) 217 #define FP32_QNAN_V1(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V1) 218 #define FP32_QNAN_V2(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V2) 219 #define FP32_QNAN_V3(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V3) 220 #define FP32_QNAN_V4(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V4) 221 #define FP32_QNAN_V5(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V5) 222 #define FP32_QNAN_V6(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V6) 223 #define FP32_QNAN_V7(a_Sign) RTFLOAT32U_INIT_QNAN_EX(a_Sign, FP32_FRAC_INV_V7) 185 224 186 225 /* … … 14117 14156 /*xcpt? */ false, false }, 14118 14157 /** @todo More Denormals. */ 14119 /** @todo Invalids. */ 14158 /* 14159 * Invalids. 14160 */ 14161 /*23*/{ { /*src1 */ { FP32_SNAN(0), FP32_SNAN(1), FP32_QNAN(0), FP32_QNAN(1), FP32_SNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_SNAN(1) } }, 14162 { /*unused */ { FP32_ROW_UNUSED } }, 14163 { /* => */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(1, 1), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN_V(1, 1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN_V(1, 1) } }, 14164 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 14165 /*128:out */ X86_MXCSR_XCPT_MASK, 14166 /*256:out */ X86_MXCSR_XCPT_MASK, 14167 /*xcpt? */ false, false }, 14168 { { /*src1 */ { FP32_SNAN(0), FP32_SNAN(1), FP32_QNAN(0), FP32_QNAN(1), FP32_SNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_SNAN(1) } }, 14169 { /*unused */ { FP32_ROW_UNUSED } }, 14170 { /* => */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(1, 1), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN_V(1, 1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN_V(1, 1) } }, 14171 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 14172 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 14173 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 14174 /*xcpt? */ false, false }, 14175 { { /*src1 */ { FP32_SNAN(0), FP32_SNAN(1), FP32_QNAN(0), FP32_QNAN(1), FP32_SNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_SNAN(1) } }, 14176 { /*unused */ { FP32_ROW_UNUSED } }, 14177 { /* => */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(1, 1), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN_V(1, 1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN_V(1, 1) } }, 14178 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP, 14179 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP, 14180 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP, 14181 /*xcpt? */ false, false }, 14182 { { /*src1 */ { FP32_SNAN(0), FP32_SNAN(1), FP32_QNAN(0), FP32_QNAN(1), FP32_SNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_SNAN(1) } }, 14183 { /*unused */ { FP32_ROW_UNUSED } }, 14184 { /* => */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(1, 1), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN_V(1, 1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN_V(1, 1) } }, 14185 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 14186 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 14187 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 14188 /*xcpt? */ false, false }, 14189 { { /*src1 */ { FP32_SNAN_V0(0), FP32_SNAN_V1(1), FP32_SNAN_V2(0), FP32_SNAN_V3(1), FP32_SNAN_V4(1), FP32_SNAN_V5(1), FP32_SNAN_V6(1), FP32_SNAN_V7(1) } }, 14190 { /*unused */ { FP32_ROW_UNUSED } }, 14191 { /* => */ { FP32_QNAN_V0(0), FP32_QNAN_V1(1), FP32_QNAN_V2(0), FP32_QNAN_V3(1), FP32_QNAN_V4(1), FP32_QNAN_V5(1), FP32_QNAN_V6(1), FP32_QNAN_V7(1) } }, 14192 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 14193 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 14194 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO, 14195 /*xcpt? */ false, false }, 14196 { { /*src1 */ { FP32_QNAN_V0(0), FP32_QNAN_V0(1), FP32_QNAN_V0(0), FP32_QNAN_V0(1), FP32_QNAN_V0(1), FP32_QNAN_V0(0), FP32_QNAN_V0(1), FP32_QNAN_V0(1) } }, 14197 { /*unused */ { FP32_ROW_UNUSED } }, 14198 { /* => */ { FP32_QNAN_V0(0), FP32_QNAN_V0(1), FP32_QNAN_V0(0), FP32_QNAN_V0(1), FP32_QNAN_V0(1), FP32_QNAN_V0(0), FP32_QNAN_V0(1), FP32_QNAN_V0(1) } }, 14199 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 14200 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 14201 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 14202 /*xcpt? */ false, false }, 14203 { { /*src1 */ { FP32_QNAN_V0(1), FP32_SNAN_V0(1), FP32_QNAN_V1(1), FP32_SNAN_V0(1), FP32_QNAN_V7(1), FP32_SNAN_V7(1), FP32_QNAN_V3(1), FP32_SNAN_V0(1) } }, 14204 { /*unused */ { FP32_ROW_UNUSED } }, 14205 { /* => */ { FP32_QNAN_V0(1), FP32_QNAN_V0(1), FP32_QNAN_V1(1), FP32_QNAN_V0(1), FP32_QNAN_V7(1), FP32_QNAN_V7(1), FP32_QNAN_V3(1), FP32_QNAN_V0(1) } }, 14206 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 14207 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 14208 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP, 14209 /*xcpt? */ false, false }, 14210 { { /*src1 */ { FP32_QNAN_V0(1), FP32_SNAN_V0(1), FP32_QNAN_V1(1), FP32_SNAN_V3(1), FP32_QNAN_V4(1), FP32_SNAN_V5(1), FP32_QNAN_V6(1), FP32_SNAN_V7(1) } }, 14211 { /*unused */ { FP32_ROW_UNUSED } }, 14212 { /* => */ { FP32_QNAN_V0(1), FP32_QNAN_V0(1), FP32_QNAN_V1(1), FP32_QNAN_V3(1), FP32_QNAN_V4(1), FP32_QNAN_V5(1), FP32_QNAN_V6(1), FP32_QNAN_V7(1) } }, 14213 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 14214 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 14215 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ, 14216 /*xcpt? */ false, false }, 14120 14217 }; 14121 14218
Note:
See TracChangeset
for help on using the changeset viewer.