VirtualBox

Changeset 106053 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Sep 13, 2024 7:00:27 PM (3 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]maxps - normals. Adjusted range of random normal floating-point test values.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32

    r106052 r106053  
    9797#define FP32_SNAN(a_Sign)                   RTFLOAT32U_INIT_SNAN(a_Sign)
    9898#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
    99105
    100106/*
    101  * Single-precision floating normals.
     107 * Single-precision floating normals (non-zero, non-maximum)
    102108 * Fraction - 23 bits, all usable.
    103  * Exponent - 8 bits, least significant bit MBZ.
     109 * Exponent - 8 bits (greater than 0 and less than 254)
    104110 */
    105111#define FP32_FRAC_V0                        0x401ac0
     
    110116#define FP32_FRAC_V5                        0x012345
    111117#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
     127AssertCompile(FP32_EXP_V0 > 0 && FP32_EXP_V0 < FP32_EXP_NORM_MAX);
     128AssertCompile(FP32_EXP_V1 > 0 && FP32_EXP_V1 < FP32_EXP_NORM_MAX);
     129AssertCompile(FP32_EXP_V2 > 0 && FP32_EXP_V2 < FP32_EXP_NORM_MAX);
     130AssertCompile(FP32_EXP_V3 > 0 && FP32_EXP_V3 < FP32_EXP_NORM_MAX);
     131AssertCompile(FP32_EXP_V4 > 0 && FP32_EXP_V4 < FP32_EXP_NORM_MAX);
     132AssertCompile(FP32_EXP_V5 > 0 && FP32_EXP_V5 < FP32_EXP_NORM_MAX);
     133AssertCompile(FP32_EXP_V6 > 0 && FP32_EXP_V6 < FP32_EXP_NORM_MAX);
     134AssertCompile(FP32_EXP_V7 > 0 && FP32_EXP_V7 < FP32_EXP_NORM_MAX);
     135AssertCompile(FP32_FRAC_V0 <= FP32_FRAC_NORM_MAX);
     136AssertCompile(FP32_FRAC_V1 <= FP32_FRAC_NORM_MAX);
     137AssertCompile(FP32_FRAC_V2 <= FP32_FRAC_NORM_MAX);
     138AssertCompile(FP32_FRAC_V3 <= FP32_FRAC_NORM_MAX);
     139AssertCompile(FP32_FRAC_V4 <= FP32_FRAC_NORM_MAX);
     140AssertCompile(FP32_FRAC_V5 <= FP32_FRAC_NORM_MAX);
     141AssertCompile(FP32_FRAC_V6 <= FP32_FRAC_NORM_MAX);
     142AssertCompile(FP32_FRAC_V7 <= FP32_FRAC_NORM_MAX);
    129143#define FP32_NORM_V0(a_Sign)                RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V0, FP32_EXP_V0)
    130144#define FP32_NORM_V1(a_Sign)                RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V1, FP32_EXP_V1)
     
    135149#define FP32_NORM_V6(a_Sign)                RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V6, FP32_EXP_V6)
    136150#define FP32_NORM_V7(a_Sign)                RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_V7, FP32_EXP_V7)
     151AssertCompile(FP32_MAKE(0, FP32_FRAC_V0, FP32_EXP_V0) != FP32_MAKE(0, 0, 0));
     152AssertCompile(FP32_MAKE(0, FP32_FRAC_V1, FP32_EXP_V1) != FP32_MAKE(0, 0, 0));
     153AssertCompile(FP32_MAKE(0, FP32_FRAC_V2, FP32_EXP_V2) != FP32_MAKE(0, 0, 0));
     154AssertCompile(FP32_MAKE(0, FP32_FRAC_V3, FP32_EXP_V3) != FP32_MAKE(0, 0, 0));
     155AssertCompile(FP32_MAKE(0, FP32_FRAC_V4, FP32_EXP_V4) != FP32_MAKE(0, 0, 0));
     156AssertCompile(FP32_MAKE(0, FP32_FRAC_V5, FP32_EXP_V5) != FP32_MAKE(0, 0, 0));
     157AssertCompile(FP32_MAKE(0, FP32_FRAC_V6, FP32_EXP_V6) != FP32_MAKE(0, 0, 0));
     158AssertCompile(FP32_MAKE(0, FP32_FRAC_V7, FP32_EXP_V7) != FP32_MAKE(0, 0, 0));
     159AssertCompile(FP32_MAKE(0, FP32_FRAC_V0, FP32_EXP_V0) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     160AssertCompile(FP32_MAKE(0, FP32_FRAC_V1, FP32_EXP_V1) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     161AssertCompile(FP32_MAKE(0, FP32_FRAC_V2, FP32_EXP_V2) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     162AssertCompile(FP32_MAKE(0, FP32_FRAC_V3, FP32_EXP_V3) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     163AssertCompile(FP32_MAKE(0, FP32_FRAC_V4, FP32_EXP_V4) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     164AssertCompile(FP32_MAKE(0, FP32_FRAC_V5, FP32_EXP_V5) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     165AssertCompile(FP32_MAKE(0, FP32_FRAC_V6, FP32_EXP_V6) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
     166AssertCompile(FP32_MAKE(0, FP32_FRAC_V7, FP32_EXP_V7) != FP32_MAKE(0, 0, RTFLOAT32U_EXP_BIAS));
    137167/* The maximum integer value (all 23 + 1 implied bit of the fraction part set) without losing precision. */
    138168#define FP32_NORM_SAFE_INT_MAX(a_Sign)      RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX)
     
    199229#define FP64_SNAN(a_Sign)                   RTFLOAT64U_INIT_SNAN(a_Sign)
    200230#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
    201237
    202238/*
     
    211247
    212248/*
    213  * Double-precision floating-point normals.
     249 * Double-precision floating-point normals (non-zero, non-maximum)
    214250 * Fraction - 52 bits, all usable.
    215  * Exponent - 11 bits, least significant bit MBZ.
     251 * Exponent - 11 bits (greater than 0 and less than 2046)
    216252 */
    217253#define FP64_FRAC_V0                        0xacc01adec0de5
     
    219255#define FP64_FRAC_V2                        0xca5cadea1b1ed
    220256#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
     261AssertCompile(FP64_EXP_V0 > 0 && FP64_EXP_V0 < FP64_EXP_NORM_MAX);
     262AssertCompile(FP64_EXP_V1 > 0 && FP64_EXP_V1 < FP64_EXP_NORM_MAX);
     263AssertCompile(FP64_EXP_V2 > 0 && FP64_EXP_V2 < FP64_EXP_NORM_MAX);
     264AssertCompile(FP64_EXP_V3 > 0 && FP64_EXP_V3 < FP64_EXP_NORM_MAX);
     265AssertCompile(FP64_FRAC_V0 < FP64_FRAC_NORM_MAX);
     266AssertCompile(FP64_FRAC_V1 < FP64_FRAC_NORM_MAX);
     267AssertCompile(FP64_FRAC_V2 < FP64_FRAC_NORM_MAX);
     268AssertCompile(FP64_FRAC_V3 < FP64_FRAC_NORM_MAX);
    229269#define FP64_NORM_V0(a_Sign)                RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V0, FP64_EXP_V0)
    230270#define FP64_NORM_V1(a_Sign)                RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V1, FP64_EXP_V1)
    231271#define FP64_NORM_V2(a_Sign)                RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V2, FP64_EXP_V2)
    232272#define FP64_NORM_V3(a_Sign)                RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_V3, FP64_EXP_V3)
     273AssertCompile(FP64_MAKE(0, FP64_FRAC_V0, FP64_EXP_V0) != FP64_MAKE(0, 0, 0));
     274AssertCompile(FP64_MAKE(0, FP64_FRAC_V1, FP64_EXP_V1) != FP64_MAKE(0, 0, 0));
     275AssertCompile(FP64_MAKE(0, FP64_FRAC_V2, FP64_EXP_V2) != FP64_MAKE(0, 0, 0));
     276AssertCompile(FP64_MAKE(0, FP64_FRAC_V3, FP64_EXP_V3) != FP64_MAKE(0, 0, 0));
     277AssertCompile(FP64_MAKE(0, FP64_FRAC_V0, FP64_EXP_V0) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS));
     278AssertCompile(FP64_MAKE(0, FP64_FRAC_V1, FP64_EXP_V1) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS));
     279AssertCompile(FP64_MAKE(0, FP64_FRAC_V2, FP64_EXP_V2) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS));
     280AssertCompile(FP64_MAKE(0, FP64_FRAC_V3, FP64_EXP_V3) != FP64_MAKE(0, 0, RTFLOAT64U_EXP_BIAS));
    233281/* The maximum integer value (all 52 + 1 implied bit of the fraction part set) without losing precision. */
    234282#define FP64_NORM_SAFE_INT_MAX(a_Sign)      RTFLOAT64U_INIT_C(a_Sign, FP64_FRAC_NORM_MAX, FP64_EXP_SAFE_INT_MAX)
     
    27692817     * Normals.
    27702818     */
    2771     /*17*/{ { /*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) } },
    27722820            { /*src1     */ { FP64_NORM_MAX(1), FP64_NORM_V1(1), FP64_0(0), FP64_0(0) } },
    27732821            { /* =>      */ { FP64_0(0),        FP64_0(0),       FP64_0(0), FP64_0(0) } },
     
    28282876     * Denormals.
    28292877     */
    2830     /*25*/{ { /*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) } },
    28312879            { /*src1     */ { FP64_0(0),          FP64_0(0), FP64_0(0), FP64_0(0) } },
    28322880            { /* =>      */ { FP64_0(0),          FP64_0(0), FP64_0(0), FP64_0(0) } },
     
    28532901     * Invalids.
    28542902     */
    2855     /*28*/ BS3CPUINSTR4_PD_INVALIDS
     2903    /*27*/ BS3CPUINSTR4_PD_INVALIDS
    28562904    /** @todo Underflow, Precision; Rounding; FZ etc. */
    28572905    };
     
    87908838             /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
    87918839             /*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. */
    87938901    };
    87948902
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