VirtualBox

Changeset 105431 in vbox for trunk


Ignore:
Timestamp:
Jul 22, 2024 6:04:01 PM (6 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: Allow setting all MXCSR bits (other than MXCSR.MM bit) -- [v]addpd.

File:
1 edited

Legend:

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

    r105430 r105431  
    20152015              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    20162016              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP },
    2017 #if 0
    20182017    /** @todo More denormals; Underflow, Precision; Rounding, FZ etc. */
    20192018    /*
     
    20232022            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2) } },
    20242023            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2) } },
    2025               /*mask    */ X86_MXCSR_XCPT_MASK,
    2026               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2027               /*flags    */ 0, 0 },
     2024              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2025              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2026              /*256:out  */ X86_MXCSR_XCPT_MASK },
    20282027          { { /*src2     */ { FP64_QNAN(0),      FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V2) } },
    20292028            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20302029            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, 1),                  FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V1) } },
    2031               /*mask    */ X86_MXCSR_XCPT_MASK,
    2032               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2033               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2030              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2031              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2032              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
    20342033          { { /*src2     */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20352034            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
    20362035            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
    2037               /*mask    */ X86_MXCSR_XCPT_MASK,
    2038               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2039               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2036              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2037              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2038              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
    20402039          { { /*src2     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } },
    20412040            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V0) } },
    20422041            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V0) } },
    2043               /*mask    */ X86_MXCSR_XCPT_MASK,
    2044               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2045               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2042              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2043              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2044              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
    20462045          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
    20472046            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
    20482047            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V1) } },
    2049               /*mask    */ X86_MXCSR_XCPT_MASK,
    2050               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2051               /*flags    */ 0, 0 },
     2048              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2049              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2050              /*256:out  */ X86_MXCSR_XCPT_MASK },
    20522051          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20532052            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
    20542053            { /* =>      */ { FP64_QNAN_V(1, 1), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V1) } },
    2055               /*mask    */ X86_MXCSR_XCPT_MASK,
    2056               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2057               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2054              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2055              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2056              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
    20582057          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V2) } },
    20592058            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3) } },
    20602059            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3) } },
    2061               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2062               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    2063               /*flags    */ 0, 0 },
     2060              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2061              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2062              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
    20642063          { { /*src2     */ { FP64_QNAN(0),      FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP32_FRAC_V1) } },
    20652064            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP32_FRAC_V2) } },
    20662065            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, 1),                  FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP32_FRAC_V2) } },
    2067               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2068               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    2069               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2066              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     2067              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     2068              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
    20702069          { { /*src2     */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20712070            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } },
    20722071            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } },
    2073               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2074               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    2075               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2072              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     2073              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     2074              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
    20762075          { { /*src2     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } },
    20772076            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3) } },
    20782077            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V3) } },
    2079               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2080               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_UP,
    2081               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2078              /*mxcsr:in */ X86_MXCSR_RC_UP,
     2079              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
     2080              /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE },
    20822081          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
    20832082            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1)              } },
    20842083            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V1) } },
    2085               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2086               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_DOWN,
    2087               /*flags    */ 0, 0 },
     2084              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     2085              /*128:out  */ X86_MXCSR_RC_DOWN,
     2086              /*256:out  */ X86_MXCSR_RC_DOWN },
    20882087          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V2) } },
    20892088            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1)              } },
    20902089            { /* =>      */ { FP64_QNAN_V(1, 1), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } },
    2091               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2092               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_ZERO,
    2093               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
    2094 #endif
     2090              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     2091              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     2092              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
    20952093    };
    20962094
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