VirtualBox

Ignore:
Timestamp:
Sep 10, 2024 9:36:19 AM (5 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]addsubpd - Denormals.

File:
1 edited

Legend:

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

    r105996 r105999  
    89548954          { { /*src2     */ { FP64_NORM_SAFE_INT_MAX(1),  FP64_NORM_SAFE_INT_MIN(0),               FP64_NORM_SAFE_INT_MIN(1),               FP64_NORM_SAFE_INT_MIN(0) } },
    89558955            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(1),  FP64_NORM_SAFE_INT_MIN(0),               FP64_NORM_SAFE_INT_MIN(0),               FP64_0(0)                 } },
    8956             { /* =>      */ { FP64_0(0),                  FP64_V(0, 0, FP32_EXP_SAFE_INT_MIN + 1), FP64_V(0, 0, FP32_EXP_SAFE_INT_MIN + 1), FP64_NORM_SAFE_INT_MIN(0) } },
     8956            { /* =>      */ { FP64_0(0),                  FP64_V(0, 0, FP64_EXP_SAFE_INT_MIN + 1), FP64_V(0, 0, FP64_EXP_SAFE_INT_MIN + 1), FP64_NORM_SAFE_INT_MIN(0) } },
    89578957              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
    89588958              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     
    89618961          { { /*src2     */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/, FP64_NORM_SAFE_INT_MIN(1),               FP64_NORM_SAFE_INT_MIN(0),               FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/ } },
    89628962            { /*src1     */ { FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/, FP64_NORM_SAFE_INT_MIN(1),               FP64_NORM_SAFE_INT_MIN(1),               FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/ } },
    8963             { /* =>      */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/, FP64_V(1, 0, FP32_EXP_SAFE_INT_MIN + 1), FP64_V(1, 0, FP32_EXP_SAFE_INT_MIN + 1), FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/ } },
     8963            { /* =>      */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/, FP64_V(1, 0, FP64_EXP_SAFE_INT_MIN + 1), FP64_V(1, 0, FP64_EXP_SAFE_INT_MIN + 1), FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/ } },
    89648964              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_XCPT_MASK,
    89658965              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_XCPT_MASK,
     
    89678967              /*xcpt?    */ false, false },
    89688968    /** @todo More Normals. */
    8969     /** @todo Denormals; Invalids; Rounding; FZ etc. */
     8969    /*
     8970     * Denormals.
     8971     */
     8972    /*42*/{ { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(1),                                   FP64_DENORM_MAX(0), FP64_DENORM_MAX(0)                                   } },
     8973            { /*src1     */ { FP64_0(0),          FP64_DENORM_MAX(1),                                   FP64_DENORM_MAX(0), FP64_DENORM_MAX(0)                                   } },
     8974            { /* =>      */ { FP64_DENORM_MAX(1), FP64_V(1, FP64_FRAC_NORM_MAX - 1, FP64_EXP_NORM_MIN), FP64_0(0),          FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_NORM_MIN) } },
     8975              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     8976              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     8977              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     8978              /*xcpt?    */ false, false },
     8979          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_0(0),          FP64_DENORM_MAX(0), FP64_DENORM_MAX(0),                                   } },
     8980            { /*src1     */ { FP64_0(0),          FP64_DENORM_MAX(1), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0),                                   } },
     8981            { /* =>      */ { FP64_DENORM_MAX(1), FP64_DENORM_MAX(1), FP64_0(0),          FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_NORM_MIN), } },
     8982              /*mxcsr:in */ 0,
     8983              /*128:out  */ X86_MXCSR_DE,
     8984              /*256:out  */ X86_MXCSR_DE,
     8985              /*xcpt?    */ true, true },
     8986          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(1),                                   FP64_0(0),          FP64_0(0)          } },
     8987            { /*src1     */ { FP64_0(0),          FP64_DENORM_MAX(1),                                   FP64_DENORM_MAX(0), FP64_DENORM_MAX(1) } },
     8988            { /* =>      */ { FP64_DENORM_MAX(1), FP64_V(1, FP64_FRAC_NORM_MAX - 1, FP64_EXP_NORM_MIN), FP64_DENORM_MAX(0), FP64_DENORM_MAX(1) } },
     8989              /*mxcsr:in */ 0,
     8990              /*128:out  */ X86_MXCSR_DE,
     8991              /*256:out  */ X86_MXCSR_DE,
     8992              /*xcpt?    */ true, true },
     8993          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0),          FP64_0(0)} },
     8994            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0)} },
     8995            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0)} },
     8996              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     8997              /*128:out  */ X86_MXCSR_XCPT_MASK,
     8998              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     8999              /*xcpt?    */ false, false },
     9000          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     9001            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     9002            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)         } },
     9003              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     9004              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     9005              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     9006              /*xcpt?    */ false, false },
     9007          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     9008            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     9009            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9010              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     9011              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     9012              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     9013              /*xcpt?    */ false, false },
     9014          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MIN(0) } },
     9015            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     9016            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9017              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     9018              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     9019              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     9020              /*xcpt?    */ false, false },
     9021          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     9022            { /*src1     */ { FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0) } },
     9023            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9024              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     9025              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     9026              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     9027              /*xcpt?    */ false, false },
     9028          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MIN(0) } },
     9029            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     9030            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9031              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     9032              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     9033              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     9034              /*xcpt?    */ false, false },
     9035          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     9036            { /*src1     */ { FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0) } },
     9037            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9038              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     9039              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     9040              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     9041              /*xcpt?    */ false, false },
     9042          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MIN(0) } },
     9043            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     9044            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9045              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     9046              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     9047              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     9048              /*xcpt?    */ false, false },
     9049          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     9050            { /*src1     */ { FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0) } },
     9051            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
     9052              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     9053              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     9054              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     9055              /*xcpt?    */ false, false },
     9056          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MIN(0) } },
     9057            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     9058            { /* =>      */ { FP64_0(1),          FP64_0(0),          FP64_0(1),          FP64_0(0)          } },
     9059              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     9060              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     9061              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     9062              /*xcpt?    */ false, false },
     9063          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     9064            { /*src1     */ { FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0) } },
     9065            { /* =>      */ { FP64_0(1),          FP64_0(0),          FP64_0(1),          FP64_0(0)          } },
     9066              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     9067              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     9068              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     9069              /*xcpt?    */ false, false },
     9070    /** @todo More Denormals. */
     9071    /** @todo Invalids; Rounding; FZ etc. */
    89709072    };
    89719073
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