VirtualBox

Changeset 105595 in vbox for trunk/src


Ignore:
Timestamp:
Aug 6, 2024 4:52:41 AM (7 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164274
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]mulpd (W.I.P) -- Allow setting all MXCSR bits (other than MXCSR.MM bit) prior to testing the instruction and explicitly specifying FP-exception for 128-bit and 256-bit variants.

File:
1 edited

Legend:

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

    r105594 r105595  
    46184618             /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    46194619             /*xcpt?    */ false, false },
    4620 #if 0
    46214620    /*
    46224621     * Normals.
     
    46254624            { /*src1     */ { FP64_1(0),                                         FP64_V(0, 0x2d69a80000000, 0x413)/*  1234586.50*/, FP64_V(1, 0x4000000000000, 0x400)/*             -2.50*/, FP64_V(0, 0xb800000000000, 0x402)/*          13.75000*/ } },
    46264625            { /* =>      */ { FP64_V(0, 0xe66f500000000, 0x40d)/*31131.828125*/, FP64_V(0, 0xfb74e1d800000, 0x41a)/*266053390.75*/, FP64_V(0, 0x549270a11c760, 0x42c)/* 46807863534478.75*/, FP64_V(0, 0x3c30944926c00, 0x424)/*169753086244.84375*/ } },
    4627               /*mask     */ X86_MXCSR_XCPT_MASK,
    4628               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    4629               /*flags    */ 0, 0 },
     4626             /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     4627             /*128:out  */ X86_MXCSR_XCPT_MASK,
     4628             /*256:out  */ X86_MXCSR_XCPT_MASK,
     4629             /*xcpt?    */ false, false },
    46304630          { { /*src2     */ { FP64_NORM_MAX(1), FP64_NORM_V3(1), FP64_1(0),       FP64_1(1)        } },
    46314631            { /*src1     */ { FP64_1(1),        FP64_1(0),       FP64_NORM_V1(0), FP64_NORM_MIN(1) } },
    46324632            { /* =>      */ { FP64_NORM_MAX(0), FP64_NORM_V3(1), FP64_NORM_V1(0), FP64_NORM_MIN(0) } },
    4633               /*mask     */ X86_MXCSR_XCPT_MASK,
    4634               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_DOWN,
    4635               /*flags    */ 0, 0 },
     4633             /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4634             /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4635             /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4636             /*xcpt?    */ false, false },
    46364637          { { /*src2     */ { FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/, FP64_V(1, 0x68b83b1ed4000, 0x41e)/*-3025935759.4140625*/, FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646*/, FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/ } },
    46374638            { /*src1     */ { FP64_V(0, 0x8000000000000, 0x3fe)/*              0.75*/, FP64_V(1, 0,               0x400)/*         -2.0000000*/, FP64_1(0),                                            FP64_V(0, 0x8000000000000, 0x400)/*              3.00*/ } },
    46384639            { /* =>      */ { FP64_V(0, 0x4da20a80c6990, 0x42e)/*183416666481484.50*/, FP64_V(0, 0x68b83b1ed4000, 0x41f)/* 6051871518.8281250*/, FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646*/, FP64_V(0, 0x4a6a82b05f744, 0x42f)/*363296296296308.25*/ } },
    4639               /*mask     */ X86_MXCSR_XCPT_MASK,
    4640               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_DOWN,
    4641               /*flags    */ 0, 0 },
     4640             /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4641             /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4642             /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4643             /*xcpt?    */ false, false },
    46424644          { { /*src2     */ { FP64_1(0),                 FP64_1(0),                                                FP64_NORM_SAFE_INT_MIN(0), FP64_1(0)                 } },
    46434645            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0), FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_1(0),                 FP64_NORM_SAFE_INT_MIN(1) } },
    46444646            { /* =>      */ { FP64_NORM_SAFE_INT_MAX(0), FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_NORM_SAFE_INT_MIN(0), FP64_NORM_SAFE_INT_MIN(1) } },
    4645               /*mask     */ X86_MXCSR_XCPT_MASK,
    4646               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    4647               /*flags    */ 0, 0 },
     4647             /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     4648             /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     4649             /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     4650             /*xcpt?    */ false, false },
    46484651          { { /*src2     */ { FP64_NORM_V0(0), FP64_NORM_V1(1), FP64_NORM_V2(0), FP64_NORM_V3(1) } },
    46494652            { /*src1     */ { FP64_1(0),       FP64_1(1),       FP64_1(1),       FP64_1(1)       } },
    46504653            { /* =>      */ { FP64_NORM_V0(0), FP64_NORM_V1(0), FP64_NORM_V2(1), FP64_NORM_V3(0) } },
    4651               /*mask     */ X86_MXCSR_XCPT_MASK,
    4652               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_DOWN,
    4653               /*flags    */ 0, 0 },
     4654             /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4655             /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4656             /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_DOWN,
     4657             /*xcpt?    */ false, false },
    46544658          /** @todo More Normals. */
    46554659    /*
     
    46594663            { /*src1     */ { FP64_0(0),          FP64_DENORM_MIN(0), FP64_0(0),          FP64_DENORM_MAX(0) } },
    46604664            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
    4661               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    4662               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    4663               /*flags    */ X86_MXCSR_DE, X86_MXCSR_DE },
     4665             /*mxcsr:in */ 0,
     4666             /*128:out  */ X86_MXCSR_DE,
     4667             /*256:out  */ X86_MXCSR_DE,
     4668             /*xcpt?    */ true, true },
    46644669          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_DENORM_MIN(0), FP64_0(0)          } },
    46654670            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0),          FP64_DENORM_MIN(0) } },
    46664671            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0),          FP64_0(0)          } },
    4667               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    4668               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    4669               /*flags    */ 0, X86_MXCSR_DE },
     4672             /*mxcsr:in */ X86_MXCSR_FZ,
     4673             /*128:out  */ X86_MXCSR_FZ,
     4674             /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_DE,
     4675             /*xcpt?    */ false, true },
    46704676          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_0(0),          FP64_DENORM_MIN(0), FP64_0(0)          } },
    46714677            { /*src1     */ { FP64_0(0),          FP64_DENORM_MAX(0), FP64_0(0),          FP64_DENORM_MIN(0) } },
    46724678            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
    4673               /*mask     */ X86_MXCSR_XCPT_MASK,
    4674               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    4675               /*flags    */ 0, 0 },
     4679             /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     4680             /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     4681             /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     4682             /*xcpt?    */ false, false },
    46764683          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_1(0),          FP64_DENORM_MIN(0), FP64_1(0)          } },
    46774684            { /*src1     */ { FP64_1(0),          FP64_DENORM_MAX(0), FP64_1(0),          FP64_DENORM_MIN(0) } },
    46784685            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
    4679               /*mask     */ X86_MXCSR_XCPT_MASK,
    4680               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    4681               /*flags    */ 0, 0 },
     4686              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     4687              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     4688              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     4689              /*xcpt?    */ false, false },
    46824690          { { /*src2     */ { FP64_DENORM_MIN(1), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(1) } },
    46834691            { /*src1     */ { FP64_DENORM_MAX(1), FP64_DENORM_MIN(1), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
    46844692            { /* =>      */ { FP64_0(0),          FP64_0(1),          FP64_0(0),          FP64_0(1)         } },
    4685               /*mask     */ X86_MXCSR_XCPT_MASK,
    4686               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    4687               /*flags    */ 0, 0 },
     4693              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     4694              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     4695              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     4696              /*xcpt?    */ false, false },
    46884697          { { /*src2     */ { FP64_1(0),       FP64_NORM_V1(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
    46894698            { /*src1     */ { FP64_NORM_V0(0), FP64_1(0),       FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
    46904699            { /* =>      */ { FP64_NORM_V0(0), FP64_NORM_V1(0), FP64_0(0),          FP64_0(0)          } },
    4691               /*mask     */ X86_MXCSR_XCPT_MASK,
    4692               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    4693               /*flags    */ 0, X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE },
     4700              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     4701              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     4702              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE,
     4703              /*xcpt?    */ false, false },
    46944704          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(1) } },
    46954705            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(1), FP64_DENORM_MIN(1) } },
    46964706            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_INF(1),        FP64_INF(0)        } },
    4697               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    4698               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    4699               /*flags    */ X86_MXCSR_DE, X86_MXCSR_DE },
     4707              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     4708              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE,
     4709              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE,
     4710              /*xcpt?    */ true, true },
    47004711          { { /*src2     */ { FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(1) } },
    47014712            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(1), FP64_DENORM_MIN(1) } },
    47024713            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(1),          FP64_0(0)          } },
    4703               /*mask     */ X86_MXCSR_XCPT_MASK,
    4704               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    4705               /*flags    */ X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE, X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE },
     4714              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     4715              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE,
     4716              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE,
     4717              /*xcpt?    */ true, true },
     4718#if 0
    47064719    /*
    47074720     * Overflow, Precision.
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