Changeset 106053 in vbox for trunk/src/VBox
- Timestamp:
- Sep 13, 2024 7:00:27 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32
r106052 r106053 97 97 #define FP32_SNAN(a_Sign) RTFLOAT32U_INIT_SNAN(a_Sign) 98 98 #define FP32_SNAN_V(a_Sign, a_Val) RTFLOAT32U_INIT_SNAN_EX(a_Sign, a_Val) 99 /** @todo Move this to iprt/types.h after renaming it to RTFLOAT32U_MAKE? */ 100 #ifdef RT_BIG_ENDIAN 101 # define FP32_MAKE(a_Sign, a_Frac, a_Exp) (((a_Exp) << 1) | ((a_Frac) << 9) | (a_Sign)) 102 #else 103 # define FP32_MAKE(a_Sign, a_Frac, a_Exp) (((a_Sign) << 31) | ((a_Exp) << 23) | (a_Frac)) 104 #endif 99 105 100 106 /* 101 * Single-precision floating normals .107 * Single-precision floating normals (non-zero, non-maximum) 102 108 * Fraction - 23 bits, all usable. 103 * Exponent - 8 bits , least significant bit MBZ.109 * Exponent - 8 bits (greater than 0 and less than 254) 104 110 */ 105 111 #define FP32_FRAC_V0 0x401ac0 … … 110 116 #define FP32_FRAC_V5 0x012345 111 117 #define FP32_FRAC_V6 0x330b3b 112 #define FP32_FRAC_V7 0x4ebeb4 113 #define FP32_EXP_V0 0x78 114 #define FP32_EXP_V1 0xbc 115 #define FP32_EXP_V2 0x7e 116 #define FP32_EXP_V3 0x9a 117 #define FP32_EXP_V4 0x32 118 #define FP32_EXP_V5 0x56 119 #define FP32_EXP_V6 0x90 120 #define FP32_EXP_V7 0x30 121 AssertCompile(!(FP32_EXP_V0 & RT_BIT(0))); 122 AssertCompile(!(FP32_EXP_V1 & RT_BIT(0))); 123 AssertCompile(!(FP32_EXP_V2 & RT_BIT(0))); 124 AssertCompile(!(FP32_EXP_V3 & RT_BIT(0))); 125 AssertCompile(!(FP32_EXP_V4 & RT_BIT(0))); 126 AssertCompile(!(FP32_EXP_V5 & RT_BIT(0))); 127 AssertCompile(!(FP32_EXP_V6 & RT_BIT(0))); 128 AssertCompile(!(FP32_EXP_V7 & RT_BIT(0))); 118 #define FP32_FRAC_V7 0x7fffff 119 #define FP32_EXP_V0 0x01 120 #define FP32_EXP_V1 0xaf 121 #define FP32_EXP_V2 0x7d 122 #define FP32_EXP_V3 0xfd 123 #define FP32_EXP_V4 0xbc 124 #define FP32_EXP_V5 0xd1 125 #define FP32_EXP_V6 0x3c 126 #define FP32_EXP_V7 0x51 127 AssertCompile(FP32_EXP_V0 > 0 && FP32_EXP_V0 < FP32_EXP_NORM_MAX); 128 AssertCompile(FP32_EXP_V1 > 0 && FP32_EXP_V1 < FP32_EXP_NORM_MAX); 129 AssertCompile(FP32_EXP_V2 > 0 && FP32_EXP_V2 < FP32_EXP_NORM_MAX); 130 AssertCompile(FP32_EXP_V3 > 0 && FP32_EXP_V3 < FP32_EXP_NORM_MAX); 131 AssertCompile(FP32_EXP_V4 > 0 && FP32_EXP_V4 < FP32_EXP_NORM_MAX); 132 AssertCompile(FP32_EXP_V5 > 0 && FP32_EXP_V5 < FP32_EXP_NORM_MAX); 133 AssertCompile(FP32_EXP_V6 > 0 && FP32_EXP_V6 < FP32_EXP_NORM_MAX); 134 AssertCompile(FP32_EXP_V7 > 0 && FP32_EXP_V7 < FP32_EXP_NORM_MAX); 135 AssertCompile(FP32_FRAC_V0 <= FP32_FRAC_NORM_MAX); 136 AssertCompile(FP32_FRAC_V1 <= FP32_FRAC_NORM_MAX); 137 AssertCompile(FP32_FRAC_V2 <= FP32_FRAC_NORM_MAX); 138 AssertCompile(FP32_FRAC_V3 <= FP32_FRAC_NORM_MAX); 139 AssertCompile(FP32_FRAC_V4 <= FP32_FRAC_NORM_MAX); 140 AssertCompile(FP32_FRAC_V5 <= FP32_FRAC_NORM_MAX); 141 AssertCompile(FP32_FRAC_V6 <= FP32_FRAC_NORM_MAX); 142 AssertCompile(FP32_FRAC_V7 <= FP32_FRAC_NORM_MAX); 129 143 #define FP32_NORM_V0(a_Sign) RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V0, FP32_EXP_V0) 130 144 #define FP32_NORM_V1(a_Sign) RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V1, FP32_EXP_V1) … … 135 149 #define FP32_NORM_V6(a_Sign) RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V6, FP32_EXP_V6) 136 150 #define FP32_NORM_V7(a_Sign) RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V7, FP32_EXP_V7) 151 AssertCompile(FP32_MAKE(0, FP32_FRAC_V0, FP32_EXP_V0) != FP32_MAKE(0, 0, 0)); 152 AssertCompile(FP32_MAKE(0, FP32_FRAC_V1, FP32_EXP_V1) != FP32_MAKE(0, 0, 0)); 153 AssertCompile(FP32_MAKE(0, FP32_FRAC_V2, FP32_EXP_V2) != FP32_MAKE(0, 0, 0)); 154 AssertCompile(FP32_MAKE(0, FP32_FRAC_V3, FP32_EXP_V3) != FP32_MAKE(0, 0, 0)); 155 AssertCompile(FP32_MAKE(0, FP32_FRAC_V4, FP32_EXP_V4) != FP32_MAKE(0, 0, 0)); 156 AssertCompile(FP32_MAKE(0, FP32_FRAC_V5, FP32_EXP_V5) != FP32_MAKE(0, 0, 0)); 157 AssertCompile(FP32_MAKE(0, FP32_FRAC_V6, FP32_EXP_V6) != FP32_MAKE(0, 0, 0)); 158 AssertCompile(FP32_MAKE(0, FP32_FRAC_V7, FP32_EXP_V7) != FP32_MAKE(0, 0, 0)); 159 AssertCompile(FP32_MAKE(0, FP32_FRAC_V0, FP32_EXP_V0) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 160 AssertCompile(FP32_MAKE(0, FP32_FRAC_V1, FP32_EXP_V1) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 161 AssertCompile(FP32_MAKE(0, FP32_FRAC_V2, FP32_EXP_V2) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 162 AssertCompile(FP32_MAKE(0, FP32_FRAC_V3, FP32_EXP_V3) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 163 AssertCompile(FP32_MAKE(0, FP32_FRAC_V4, FP32_EXP_V4) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 164 AssertCompile(FP32_MAKE(0, FP32_FRAC_V5, FP32_EXP_V5) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 165 AssertCompile(FP32_MAKE(0, FP32_FRAC_V6, FP32_EXP_V6) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 166 AssertCompile(FP32_MAKE(0, FP32_FRAC_V7, FP32_EXP_V7) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS)); 137 167 /* The maximum integer value (all 23 + 1 implied bit of the fraction part set) without losing precision. */ 138 168 #define FP32_NORM_SAFE_INT_MAX(a_Sign) RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX) … … 199 229 #define FP64_SNAN(a_Sign) RTFLOAT64U_INIT_SNAN(a_Sign) 200 230 #define FP64_SNAN_V(a_Sign, a_Val) RTFLOAT64U_INIT_SNAN_EX(a_Sign, a_Val) 231 /** @todo Move this to iprt/types.h after renaming it to RTFLOAT64U_MAKE? */ 232 #ifdef RT_BIG_ENDIAN 233 # define FP64_MAKE(a_Sign, a_Frac, a_Exp) ((UINT64_C(a_Exp) << 1) | (UINT64_C(a_Frac) << 12) | UINT64_C(a_Sign)) 234 #else 235 # define FP64_MAKE(a_Sign, a_Frac, a_Exp) (((uint64_t)(a_Sign) << 63) | ((uint64_t)(a_Exp) << 52) | (uint64_t)(a_Frac)) 236 #endif 201 237 202 238 /* … … 211 247 212 248 /* 213 * Double-precision floating-point normals .249 * Double-precision floating-point normals (non-zero, non-maximum) 214 250 * Fraction - 52 bits, all usable. 215 * Exponent - 11 bits , least significant bit MBZ.251 * Exponent - 11 bits (greater than 0 and less than 2046) 216 252 */ 217 253 #define FP64_FRAC_V0 0xacc01adec0de5 … … 219 255 #define FP64_FRAC_V2 0xca5cadea1b1ed 220 256 #define FP64_FRAC_V3 0xb5b5b5b5b5b5b 221 #define FP64_EXP_V0 0x30c 222 #define FP64_EXP_V1 0x4bc 223 #define FP64_EXP_V2 0x3ae 224 #define FP64_EXP_V3 0x7fe 225 AssertCompile(!(FP64_EXP_V0 & RT_BIT(0))); 226 AssertCompile(!(FP64_EXP_V1 & RT_BIT(0))); 227 AssertCompile(!(FP64_EXP_V2 & RT_BIT(0))); 228 AssertCompile(!(FP64_EXP_V3 & RT_BIT(0))); 257 #define FP64_EXP_V0 0x001 258 #define FP64_EXP_V1 0x62d 259 #define FP64_EXP_V2 0x7fd 260 #define FP64_EXP_V3 0x481 261 AssertCompile(FP64_EXP_V0 > 0 && FP64_EXP_V0 < FP64_EXP_NORM_MAX); 262 AssertCompile(FP64_EXP_V1 > 0 && FP64_EXP_V1 < FP64_EXP_NORM_MAX); 263 AssertCompile(FP64_EXP_V2 > 0 && FP64_EXP_V2 < FP64_EXP_NORM_MAX); 264 AssertCompile(FP64_EXP_V3 > 0 && FP64_EXP_V3 < FP64_EXP_NORM_MAX); 265 AssertCompile(FP64_FRAC_V0 < FP64_FRAC_NORM_MAX); 266 AssertCompile(FP64_FRAC_V1 < FP64_FRAC_NORM_MAX); 267 AssertCompile(FP64_FRAC_V2 < FP64_FRAC_NORM_MAX); 268 AssertCompile(FP64_FRAC_V3 < FP64_FRAC_NORM_MAX); 229 269 #define FP64_NORM_V0(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V0, FP64_EXP_V0) 230 270 #define FP64_NORM_V1(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V1, FP64_EXP_V1) 231 271 #define FP64_NORM_V2(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V2, FP64_EXP_V2) 232 272 #define FP64_NORM_V3(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V3, FP64_EXP_V3) 273 AssertCompile(FP64_MAKE(0, FP64_FRAC_V0, FP64_EXP_V0) != FP64_MAKE(0, 0, 0)); 274 AssertCompile(FP64_MAKE(0, FP64_FRAC_V1, FP64_EXP_V1) != FP64_MAKE(0, 0, 0)); 275 AssertCompile(FP64_MAKE(0, FP64_FRAC_V2, FP64_EXP_V2) != FP64_MAKE(0, 0, 0)); 276 AssertCompile(FP64_MAKE(0, FP64_FRAC_V3, FP64_EXP_V3) != FP64_MAKE(0, 0, 0)); 277 AssertCompile(FP64_MAKE(0, FP64_FRAC_V0, FP64_EXP_V0) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS)); 278 AssertCompile(FP64_MAKE(0, FP64_FRAC_V1, FP64_EXP_V1) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS)); 279 AssertCompile(FP64_MAKE(0, FP64_FRAC_V2, FP64_EXP_V2) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS)); 280 AssertCompile(FP64_MAKE(0, FP64_FRAC_V3, FP64_EXP_V3) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS)); 233 281 /* The maximum integer value (all 52 + 1 implied bit of the fraction part set) without losing precision. */ 234 282 #define FP64_NORM_SAFE_INT_MAX(a_Sign) RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_NORM_MAX, FP64_EXP_SAFE_INT_MAX) … … 2769 2817 * Normals. 2770 2818 */ 2771 /*1 7*/{ { /*src2 */ { FP64_NORM_MAX(0), FP64_NORM_V1(0), FP64_0(0), FP64_0(0) } },2819 /*16*/{ { /*src2 */ { FP64_NORM_MAX(0), FP64_NORM_V1(0), FP64_0(0), FP64_0(0) } }, 2772 2820 { /*src1 */ { FP64_NORM_MAX(1), FP64_NORM_V1(1), FP64_0(0), FP64_0(0) } }, 2773 2821 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, … … 2828 2876 * Denormals. 2829 2877 */ 2830 /*2 5*/{ { /*src2 */ { FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0), FP64_0(0) } },2878 /*24*/{ { /*src2 */ { FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 2831 2879 { /*src1 */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, 2832 2880 { /* => */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } }, … … 2853 2901 * Invalids. 2854 2902 */ 2855 /*2 8*/ BS3CPUINSTR4_PD_INVALIDS2903 /*27*/ BS3CPUINSTR4_PD_INVALIDS 2856 2904 /** @todo Underflow, Precision; Rounding; FZ etc. */ 2857 2905 }; … … 8790 8838 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 8791 8839 /*xcpt? */ false, false }, 8792 /** @todo Normals; Denormals; Underflow, Precision; Rounding; FZ etc. */ 8840 /* 8841 * Normals. 8842 */ 8843 /*20*/{ { /*src2 */ { FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } }, 8844 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(1), FP32_NORM_MAX(0) } }, 8845 { /* => */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(1), FP32_0(1), FP32_NORM_MAX(0) } }, 8846 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8847 /*128:out */ X86_MXCSR_XCPT_MASK, 8848 /*256:out */ X86_MXCSR_XCPT_MASK, 8849 /*xcpt? */ false, false }, 8850 { { /*src2 */ { FP32_NORM_MIN(0), FP32_0(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_0(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1) } }, 8851 { /*src1 */ { FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_0(1), FP32_NORM_MIN(0) } }, 8852 { /* => */ { FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_0(0), FP32_NORM_MIN(1), FP32_0(1), FP32_0(1), FP32_NORM_MIN(0) } }, 8853 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8854 /*128:out */ X86_MXCSR_XCPT_MASK, 8855 /*256:out */ X86_MXCSR_XCPT_MASK, 8856 /*xcpt? */ false, false }, 8857 { { /*src2 */ { FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } }, 8858 { /*src1 */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1) } }, 8859 { /* => */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1) } }, 8860 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8861 /*128:out */ X86_MXCSR_XCPT_MASK, 8862 /*256:out */ X86_MXCSR_XCPT_MASK, 8863 /*xcpt? */ false, false }, 8864 { { /*src2 */ { FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(1) } }, 8865 { /*src1 */ { FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(1) } }, 8866 { /* => */ { FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(1) } }, 8867 /*mxcsr:in */ X86_MXCSR_XCPT_MASK, 8868 /*128:out */ X86_MXCSR_XCPT_MASK, 8869 /*256:out */ X86_MXCSR_XCPT_MASK, 8870 /*xcpt? */ false, false }, 8871 { { /*src2 */ { FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0, 0x7d)/*0.25*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0, 0x7d)/*0.25*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0, 0x7d)/* 0.25*/, FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_V(1, 0, 0x7d)/*-0.25*/ } }, 8872 { /*src1 */ { FP32_V(1, 0, 0x7d)/*-0.25*/, FP32_V(0, 0, 0x7e)/*0.50*/, FP32_V(1, 0, 0x7d)/*-0.25*/, FP32_V(0, 0, 0x7e)/*0.50*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(1, 0, 0x7e)/*-0.50*/, FP32_V(1, 0, 0x7d)/*0.25*/, FP32_V(1, 0, 0x7e)/*-0.50*/ } }, 8873 { /* => */ { FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0, 0x7e)/*0.50*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0, 0x7e)/*0.50*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0, 0x7d)/* 0.25*/, FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_V(1, 0, 0x7d)/*-0.25*/ } }, 8874 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8875 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8876 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN, 8877 /*xcpt? */ false, false }, 8878 { { /*src2 */ { FP32_NORM_MAX(0), FP32_NORM_V1(0), FP32_NORM_V2(1), FP32_NORM_V3(1), FP32_NORM_V5(0), FP32_0(1), FP32_NORM_V5(1), FP32_0(0) } }, 8879 { /*src1 */ { FP32_NORM_V1(0), FP32_NORM_V1(1), FP32_NORM_V2(0), FP32_NORM_V3(1), FP32_0(1), FP32_NORM_V6(0), FP32_0(1), FP32_NORM_V7(0) } }, 8880 { /* => */ { FP32_NORM_MAX(0), FP32_NORM_V1(0), FP32_NORM_V2(0), FP32_NORM_V3(1), FP32_NORM_V5(0), FP32_NORM_V6(0), FP32_0(1), FP32_NORM_V7(0) } }, 8881 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 8882 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 8883 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 8884 /*xcpt? */ false, false }, 8885 { { /*src2 */ { FP32_V(0, 0x5ca5b8, 0x93)/*1807543*/, FP32_V(0, 0x5c0000, 0x84)/*55*/, FP32_V(1, 0x2514d6, 0x93)/*-1352346.75*/, FP32_V(1, 0x5c0000, 0x84)/*-55*/, FP32_V(1, 0x2514d6, 0x93)/*1352346.75*/, FP32_V(1, 0x534000, 0x86)/*211.25*/, FP32_V(0, 0x74429f, 0x97)/*32015678*/, FP32_1(1) } }, 8886 { /*src1 */ { FP32_V(0, 0x1ea980, 0x8f)/* 81235*/, FP32_V(0, 0x600000, 0x81)/* 7*/, FP32_V(0, 0x7c9000, 0x88)/* 1010.25*/, FP32_V(0, 0x600000, 0x81)/* 7*/, FP32_V(0, 0x253468, 0x93)/*1353357.00*/, FP32_1(1), FP32_V(1, 0x712060, 0x92)/*- 987654*/, FP32_1(0) } }, 8887 { /* => */ { FP32_V(0, 0x5ca5b8, 0x93)/*1807543*/, FP32_V(0, 0x5c0000, 0x84)/*55*/, FP32_V(0, 0x7c9000, 0x88)/* 1010.25*/, FP32_V(0, 0x600000, 0x81)/* 7*/, FP32_V(0, 0x253468, 0x93)/*1353357.00*/, FP32_1(1), FP32_V(0, 0x74429f, 0x97)/*32015678*/, FP32_1(0) } }, 8888 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 8889 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 8890 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO, 8891 /*xcpt? */ false, false }, 8892 { { /*src2 */ { FP32_V(0, 0x600000, 0x7e)/* 0.875*/, FP32_V(0, 0x3ce348, 0x90)/*193421.125*/, FP32_V(0, 0x6423f2, 0x92)/*934463.125*/, FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(0), FP32_V(0, 0x16b43a, 0x93)/*1234567.25*/, FP32_V(0, 0x792318, 0x91)/*510232.75*/, FP32_V(0, 0x600000, 0x7e)/*0.875*/ } }, 8893 { /*src1 */ { FP32_V(0, 0x769b50, 0x92)/*1010101.000*/, FP32_V(0, 0x430ebc, 0x91)/*399477.875*/, FP32_V(0, 0x52e0b4, 0x92)/*863755.250*/, FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MAX(1), FP32_V(0, 0x00c6d3, 0x94)/*2109876.75*/, FP32_V(1, 0x316740, 0x8e)/*-45415.25*/, FP32_V(1, 0, 0x7d)/*0.250*/ } }, 8894 { /* => */ { FP32_V(0, 0x769b50, 0x92)/*1010101.000*/, FP32_V(0, 0x430ebc, 0x91)/*399477.875*/, FP32_V(0, 0x6423f2, 0x92)/*934463.125*/, FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(0), FP32_V(0, 0x00c6d3, 0x94)/*2109876.75*/, FP32_V(0, 0x792318, 0x91)/*510232.75*/, FP32_V(0, 0x600000, 0x7e)/*0.875*/ } }, 8895 /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 8896 /*128:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 8897 /*256:out */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN, 8898 /*xcpt? */ false, false }, 8899 /** @todo More Normals. */ 8900 /** @todo Denormals; Underflow, Precision; Rounding; FZ etc. */ 8793 8901 }; 8794 8902
Note:
See TracChangeset
for help on using the changeset viewer.