VirtualBox

Changeset 105430 in vbox for trunk


Ignore:
Timestamp:
Jul 22, 2024 5:52:11 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 (W.I.P).

File:
1 edited

Legend:

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

    r105425 r105430  
    19491949              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
    19501950              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_PE },
    1951 #if 0
    19521951    /*
    19531952     * Normals.
     
    19561955            { /*src1     */ { FP64_NORM_MAX(1), FP64_NORM_V1(1), FP64_0(0), FP64_0(0) } },
    19571956            { /* =>      */ { FP64_0(0),        FP64_0(0),       FP64_0(0), FP64_0(0) } },
    1958               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    1959               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    1960               /*flags    */ 0, 0 },
     1957              /*mxcsr:in */ 0,
     1958              /*128:out  */ 0,
     1959              /*256:out  */ 0 },
    19611960          { { /*src2     */ { FP64_V(0, 0,               0x409)/*1024*/, FP64_V(0, 0xb800000000000, 0x404)/*55*/, FP64_0(0), FP64_0(0) } },
    19621961            { /*src1     */ { FP64_V(0, 0,               0x408)/* 512*/, FP64_V(0, 0xc000000000000, 0x401)/* 7*/, FP64_0(0), FP64_0(0) } },
    19631962            { /* =>      */ { FP64_V(0, 0x8000000000000, 0x409)/*1536*/, FP64_V(0, 0xf000000000000, 0x404)/*62*/, FP64_0(0), FP64_0(0) } },
    1964               /*mask    */ X86_MXCSR_XCPT_MASK,
    1965               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    1966               /*flags    */ 0, 0 },
     1963              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     1964              /*128:out  */ X86_MXCSR_XCPT_MASK,
     1965              /*256:out  */ X86_MXCSR_XCPT_MASK },
    19671966          { { /*src2     */ { FP64_V(0, 0x26580b4800000, 0x41d)/* 1234567890*/, FP64_V(0, 0xd6f3458800000, 0x41c)/*987654321*/, FP64_0(0), FP64_V(0, 0xcf0033a34f337, 0x432)/*4072598000007579.5*/ } },
    19681967            { /*src1     */ { FP64_V(1, 0x26580b4800000, 0x41d)/*-1234567890*/, FP64_V(1, 0x9000000000000, 0x405)/*     -100*/, FP64_0(0), FP64_V(0, 0xd6eca42000000, 0x419)/*       123450000.5*/ } },
    19691968            { /* =>      */ { FP64_0(0),                                        FP64_V(0, 0xd6f3426800000, 0x41c)/*987654221*/, FP64_0(0), FP64_V(0, 0xcf00348ec5858, 0x432)/*4072598123457580.0*/ } },
    1970               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    1971               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    1972               /*flags    */ 0, 0 },
     1969              /*mxcsr:in */ 0,
     1970              /*128:out  */ 0,
     1971              /*256:out  */ 0 },
    19731972          { { /*src2     */ { FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_NORM_SAFE_INT_MAX(0),                                FP64_0(0), FP64_0(0) } },
    19741973            { /*src1     */ { FP64_1(0),                                                FP64_1(1),                                                FP64_0(0), FP64_0(0) } },
    19751974            { /* =>      */ { FP64_NORM_SAFE_INT_MAX(0),                                FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_0(0), FP64_0(0) } },
    1976               /*mask     */ X86_MXCSR_XCPT_MASK,
    1977               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    1978               /*flags    */ 0, 0 },
     1975              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     1976              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     1977              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO },
    19791978          { { /*src2     */ { FP64_NORM_SAFE_INT_MAX(0),               FP64_1(1),                               FP64_0(0), FP64_0(0) } },
    19801979            { /*src1     */ { FP64_1(0),                               FP64_NORM_SAFE_INT_MAX(1),               FP64_0(0), FP64_0(0) } },
    19811980            { /* =>      */ { FP64_V(0, 0, FP64_EXP_SAFE_INT_MAX + 1), FP64_V(1, 0, FP64_EXP_SAFE_INT_MAX + 1), FP64_0(0), FP64_0(0) } },
    1982               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    1983               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    1984               /*flags    */ 0, 0 },
     1981              /*mxcsr:in */ X86_MXCSR_FZ,
     1982              /*128:out  */ X86_MXCSR_FZ,
     1983              /*256:out  */ X86_MXCSR_FZ },
    19851984          { { /*src2     */ { FP64_NORM_SAFE_INT_MIN(0), FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(0), FP64_NORM_SAFE_INT_MIN(0) } },
    19861985            { /*src1     */ { FP64_NORM_SAFE_INT_MIN(1), FP64_NORM_SAFE_INT_MIN(1), FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(0) } },
    1987             { /* =>      */ { FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(1), FP64_NORM_SAFE_INT_MIN(0), FP64_V(0, 0, 2)           } },
    1988               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    1989               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    1990               /*flags    */ 0, 0 },
     1986            { /* =>      */ { FP64_0(1),                 FP64_NORM_SAFE_INT_MIN(1), FP64_NORM_SAFE_INT_MIN(0), FP64_V(0, 0, 2)           } },
     1987              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     1988              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     1989              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
    19911990          { { /*src2     */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/, FP64_0(0), FP64_0(0), FP64_NORM_SAFE_INT_MIN(1) } },
    19921991            { /*src1     */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/, FP64_0(0), FP64_0(0), FP64_NORM_SAFE_INT_MIN(1) } },
    19931992            { /* =>      */ { FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/, FP64_0(0), FP64_0(0), FP64_V(1, 0, 2)           } },
    1994               /*mask     */ X86_MXCSR_XCPT_MASK,
    1995               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    1996               /*flags    */ 0, 0 },
     1993              /*mxcsr:in */ X86_MXCSR_RC_UP,
     1994              /*128:out  */ X86_MXCSR_RC_UP,
     1995              /*256:out  */ X86_MXCSR_RC_UP },
    19971996    /*
    19981997     * Denormals.
     
    20012000            { /*src1     */ { FP64_0(0),          FP64_0(0), FP64_0(0), FP64_0(0) } },
    20022001            { /* =>      */ { FP64_0(0),          FP64_0(0), FP64_0(0), FP64_0(0) } },
    2003               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2004               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2005               /*flags    */ X86_MXCSR_DE, X86_MXCSR_DE },
     2002              /*mxcsr:in */ 0,
     2003              /*128:out  */ X86_MXCSR_DE,
     2004              /*256:out  */ X86_MXCSR_DE },
    20062005          { { /*src2     */ { FP64_0(0), FP64_0(0),          FP64_0(0), FP64_0(0) } },
    20072006            { /*src1     */ { FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0) } },
    2008             { /* =>      */ { FP64_0(0), FP64_0(0),          FP64_0(0), FP64_0(0) } },
    2009               /*mask    */ X86_MXCSR_XCPT_MASK,
    2010               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_NEAREST,
    2011               /*flags    */ 0, 0 },
     2007            { /* =>      */ { FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0) } },
     2008              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2009              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     2010              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE },
    20122011          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
    20132012            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
    20142013            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
    2015               /*mask     */ X86_MXCSR_XCPT_MASK,
    2016               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    2017               /*flags    */ 0, 0 },
     2014              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     2015              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     2016              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP },
     2017#if 0
    20182018    /** @todo More denormals; Underflow, Precision; Rounding, FZ etc. */
    20192019    /*
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