VirtualBox

Changeset 106205 in vbox


Ignore:
Timestamp:
Oct 2, 2024 9:53:26 AM (4 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]rcpps - invalids.

File:
1 edited

Legend:

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

    r106189 r106205  
    8585/** The min fraction value for a single-precision floating-point denormal. */
    8686#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
    8795
    8896#define FP32_NORM_MAX(a_Sign)               RTFLOAT32U_INIT_C(a_Sign, FP32_FRAC_NORM_MAX, FP32_EXP_NORM_MAX)
     
    179187#define FP32_DENORM_V2(a_Sign)              RTFLOAT32U_INIT_C(a_Sign, 0x6fefbb, 0)
    180188#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, 0x000001, 0)
     189#define FP32_DENORM_V4(a_Sign)              RTFLOAT32U_INIT_C(a_Sign, 0x10c01a, 0)
    182190#define FP32_DENORM_V5(a_Sign)              RTFLOAT32U_INIT_C(a_Sign, 0x000fff, 0)
    183191#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)
    185224
    186225/*
     
    1411714156              /*xcpt?    */ false, false },
    1411814157    /** @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 },
    1412014217    };
    1412114218
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