VirtualBox

Changeset 105467 in vbox


Ignore:
Timestamp:
Jul 24, 2024 9:29:10 AM (4 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: SIMD FP testcase: 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 -- [v]subpd.

File:
1 edited

Legend:

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

    r105458 r105467  
    35203520
    35213521
    3522 #if 0
    35233522/*
    35243523 * [V]SUBPD.
     
    35343533            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35353534            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    3536               /*mask     */ X86_MXCSR_XCPT_MASK,
    3537               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3538               /*flags    */ 0, 0 },
     3535              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3536              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3537              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3538              /*xcpt?    */ false, false },
    35393539         { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35403540           { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35413541           { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    3542              /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3543              /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3544              /*flags    */ 0, 0 },
     3542              /*mxcsr:in */ 0,
     3543              /*128:out  */ 0,
     3544              /*256:out  */ 0,
     3545              /*xcpt?    */ false, false },
    35453546         { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35463547           { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35473548           { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    3548              /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3549              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    3550              /*flags    */ 0, 0 },
     3549              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3550              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3551              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3552              /*xcpt?    */ false, false },
    35513553         { { /*src2     */ { FP64_0(1), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35523554           { /*src1     */ { FP64_0(1), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35533555           { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    3554              /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3555              /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_ZERO,
    3556              /*flags    */ 0, 0 },
     3556              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     3557              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     3558              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     3559              /*xcpt?    */ false, false },
    35573560         { { /*src2     */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(1) } },
    35583561           { /*src1     */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(1) } },
    3559            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    3560              /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3561              /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3562              /*flags    */ 0, 0 },
     3562           { /* =>      */ { FP64_0(1), FP64_0(1), FP64_0(1), FP64_0(1) } },
     3563              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3564              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3565              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3566              /*xcpt?    */ false, false },
    35633567         { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    35643568           { /*src1     */ { FP64_0(0), FP64_0(1), FP64_0(0), FP64_0(0) } },
    35653569           { /* =>      */ { FP64_0(1), FP64_0(1), FP64_0(1), FP64_0(1) } },
    3566              /*mask     */ X86_MXCSR_XCPT_MASK,
    3567              /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    3568              /*flags    */ 0, 0 },
     3570              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3571              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3572              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3573              /*xcpt?    */ false, false },
    35693574    /*
    35703575     * Infinity.
     
    35733578            { /*src1     */ { FP64_INF(1), FP64_0(0), FP64_0(0), FP64_INF(0) } },
    35743579            { /* =>      */ { FP64_INF(1), FP64_0(0), FP64_0(0), FP64_INF(0) } },
    3575               /*mask     */ ~X86_MXCSR_IM,
    3576               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3577               /*flags    */ 0, 0 },
     3580              /*mxcsr:in */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM,
     3581              /*128:out  */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM,
     3582              /*256:out  */ X86_MXCSR_XCPT_MASK & ~X86_MXCSR_IM,
     3583              /*xcpt?    */ false, false },
    35783584          { { /*src2     */ { FP64_INF(0),  FP64_INF(1),  FP64_INF(1), FP64_INF(1)  } },
    35793585            { /*src1     */ { FP64_INF(0),  FP64_INF(1),  FP64_INF(0), FP64_INF(1)  } },
    35803586            { /* =>      */ { FP64_QNAN(1), FP64_QNAN(1), FP64_INF(0), FP64_QNAN(1) } },
    3581               /*mask     */ X86_MXCSR_XCPT_MASK,
    3582               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3583               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3587              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3588              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3589              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3590              /*xcpt?    */ false, false },
    35843591          { { /*src2     */ { FP64_INF(0),  FP64_INF(0), FP64_INF(1), FP64_INF(1)  } },
    35853592            { /*src1     */ { FP64_INF(0),  FP64_INF(1), FP64_INF(0), FP64_INF(1)  } },
    35863593            { /* =>      */ { FP64_QNAN(1), FP64_INF(1), FP64_INF(0), FP64_QNAN(1) } },
    3587               /*mask     */ X86_MXCSR_XCPT_MASK,
    3588               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3589               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3594              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3595              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3596              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3597              /*xcpt?    */ false, false },
    35903598          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_INF(1), FP64_INF(1)  } },
    35913599            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_INF(0), FP64_INF(1)  } },
    35923600            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_INF(0), FP64_QNAN(1) } },
    3593               /*mask     */ X86_MXCSR_XCPT_MASK,
    3594               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    3595               /*flags    */ 0, X86_MXCSR_IE },
     3601              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     3602              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     3603              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_IE,
     3604              /*xcpt?    */ false, false },
    35963605          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_INF(0)  } },
    35973606            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_INF(0)  } },
    35983607            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_QNAN(1) } },
    3599               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3600               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    3601               /*flags    */ 0, X86_MXCSR_IE },
     3608              /*mxcsr:in */ X86_MXCSR_FZ,
     3609              /*128:out  */ X86_MXCSR_FZ,
     3610              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_IE,
     3611              /*xcpt?    */ false, true },
    36023612          { { /*src2     */ { FP64_INF(1), FP64_INF(0), FP64_INF(1), FP64_INF(0) } },
    36033613            { /*src1     */ { FP64_INF(0), FP64_INF(0), FP64_INF(0), FP64_INF(1) } },
    3604             { /* =>      */ { FP64_0(0),   FP64_0(1),   FP64_0(1),   FP64_0(1)   } },
    3605               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3606               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3607               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3614            { /* =>      */ { FP64_INF(0), FP64_INF(0),   FP64_0(1),   FP64_0(1)   } },
     3615              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3616              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3617              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3618              /*xcpt?    */ true, true },
    36083619    /*
    36093620     * Overflow, Precision.
     
    36123623            { /*src1     */ { FP64_NORM_MAX(0), FP64_0(0), FP64_NORM_MAX(0), FP64_NORM_MAX(0) } },
    36133624            { /* =>      */ { FP64_0(0),        FP64_0(0), FP64_0(0),        FP64_0(0)        } },
    3614               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3615               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3616               /*flags    */ X86_MXCSR_PE, X86_MXCSR_PE },
     3625              /*mxcsr:in */ 0,
     3626              /*128:out  */ X86_MXCSR_PE,
     3627              /*256:out  */ X86_MXCSR_PE,
     3628              /*xcpt?    */ true, true },
    36173629          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_NORM_MIN(1), FP64_NORM_MIN(0) } },
    36183630            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_NORM_MAX(0), FP64_NORM_MAX(0) } },
    36193631            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0),        FP64_0(0)        } },
    3620               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3621               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3622               /*flags    */ 0, X86_MXCSR_PE },
     3632              /*mxcsr:in */ 0,
     3633              /*128:out  */ 0,
     3634              /*256:out  */ X86_MXCSR_PE,
     3635              /*xcpt?    */ false, true },
    36233636          { { /*src2     */ { FP64_NORM_MAX(0), FP64_NORM_MAX(0), FP64_NORM_MAX(1), FP64_NORM_MAX(1) } },
    36243637            { /*src1     */ { FP64_NORM_MAX(1), FP64_NORM_MAX(1), FP64_NORM_MAX(0), FP64_NORM_MAX(1) } },
    36253638            { /* =>      */ { FP64_NORM_MAX(1), FP64_NORM_MAX(1), FP64_NORM_MAX(0), FP64_0(0)        } },
    3626               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    3627               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    3628               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     3639              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
     3640              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     3641              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     3642              /*xcpt?    */ false, false },
    36293643          { { /*src2     */ { FP64_NORM_MAX(0), FP64_0(0), FP64_0(0), FP64_NORM_MAX(0) } },
    36303644            { /*src1     */ { FP64_NORM_MAX(1), FP64_0(0), FP64_0(0), FP64_NORM_MAX(1) } },
    36313645            { /* =>      */ { FP64_INF(1),      FP64_0(0), FP64_0(0), FP64_INF(1)      } },
    3632               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    3633               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    3634               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     3646              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ,
     3647              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
     3648              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
     3649              /*xcpt?    */ false, false },
    36353650          { { /*src2     */ { FP64_NORM_MAX(0), FP64_NORM_MIN(1), FP64_V(1, 0, 2),  FP64_NORM_MIN(1) } },
    36363651            { /*src1     */ { FP64_NORM_MAX(1), FP64_NORM_MAX(0), FP64_NORM_MIN(1), FP64_NORM_MIN(1) } },
    36373652            { /* =>      */ { FP64_INF(1),      FP64_NORM_MAX(0), FP64_NORM_MIN(0), FP64_0(0)        } },
    3638               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    3639               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    3640               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     3653              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OM | X86_MXCSR_PM,
     3654              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     3655              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     3656              /*xcpt?    */ false, false },
    36413657          { { /*src2     */ { FP64_V(1, 0, 2),  FP64_NORM_MAX(0), FP64_NORM_MAX(0), FP64_V(1, 0, 2)  } },
    36423658            { /*src1     */ { FP64_NORM_MIN(1), FP64_NORM_MAX(1), FP64_NORM_MAX(1), FP64_NORM_MIN(1) } },
    36433659            { /* =>      */ { FP64_NORM_MIN(0), FP64_NORM_MAX(1), FP64_NORM_MAX(1), FP64_NORM_MIN(0) } },
    3644               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    3645               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3646               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     3660              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM,
     3661              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     3662              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     3663              /*xcpt?    */ false, false },
    36473664          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_NORM_MIN(0), FP64_NORM_MAX(0) } },
    36483665            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_NORM_MIN(0), FP64_NORM_MAX(1) } },
    36493666            { /* =>      */ { FP64_0(0), FP64_0(0), FP64_0(0),        FP64_NORM_MAX(1) } },
    3650               /*mask     */ X86_MXCSR_XCPT_MASK,
    3651               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    3652               /*flags    */ 0, X86_MXCSR_OE | X86_MXCSR_PE },
     3667              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     3668              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     3669              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     3670              /*xcpt?    */ false, false },
    36533671          { { /*src2     */ { FP64_NORM_MIN(0), FP64_NORM_MIN(0), FP64_NORM_MIN(1), FP64_NORM_MIN(0) } },
    36543672            { /*src1     */ { FP64_NORM_MAX(0), FP64_NORM_MAX(0), FP64_NORM_MAX(1), FP64_NORM_MAX(0) } },
    36553673            { /* =>      */ { FP64_0(0),        FP64_0(0),        FP64_0(0),        FP64_0(0)        } },
    3656               /*mask     */ ~(X86_MXCSR_OM | X86_MXCSR_PM),
    3657               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    3658               /*flags    */ X86_MXCSR_PE, X86_MXCSR_PE },
     3674              /*mxcsr:in */ X86_MXCSR_XCPT_MASK & ~(X86_MXCSR_OM | X86_MXCSR_PM) | X86_MXCSR_RC_ZERO,
     3675              /*128:out  */ X86_MXCSR_XCPT_MASK & ~(X86_MXCSR_OM | X86_MXCSR_PM) | X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     3676              /*256:out  */ X86_MXCSR_XCPT_MASK & ~(X86_MXCSR_OM | X86_MXCSR_PM) | X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     3677              /*xcpt?    */ true, true },
    36593678          { { /*src2     */ { FP64_NORM_SAFE_INT_MIN(0), FP64_NORM_MAX(0), FP64_NORM_SAFE_INT_MAX(1), FP64_NORM_SAFE_INT_MAX(1) } },
    36603679            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0), FP64_NORM_MAX(1), FP64_NORM_SAFE_INT_MAX(1), FP64_NORM_SAFE_INT_MAX(1) } },
    36613680            { /* =>      */ { FP64_0(0),                 FP64_0(0),        FP64_0(0),                 FP64_0(0)                 } },
    3662               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3663               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    3664               /*flags    */ X86_MXCSR_OE |  X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     3681              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     3682              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     3683              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     3684              /*xcpt?    */ true, true },
    36653685    /*
    36663686     * Normals.
     
    36693689            { /*src1     */ { FP64_NORM_MAX(0), FP64_NORM_V1(1), FP64_NORM_MAX(1), FP64_NORM_V1(0) } },
    36703690            { /* =>      */ { FP64_0(0),        FP64_0(0),       FP64_0(0),        FP64_0(0)       } },
    3671               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3672               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3673               /*flags    */ 0, 0 },
     3691              /*mxcsr:in */ 0,
     3692              /*128:out  */ 0,
     3693              /*256:out  */ 0,
     3694              /*xcpt?    */ false, false },
    36743695          { { /*src2     */ { FP64_V(0, 0,               0x409)/*1024*/, FP64_V(0, 0xb800000000000, 0x404)/*55*/, FP64_V(1, 0xc000000000000, 0x401)/* 7*/, FP64_V(0, 0x8000000000000, 0x409)/*1536*/ } },
    36753696            { /*src1     */ { FP64_V(0, 0x8000000000000, 0x409)/*1536*/, FP64_V(1, 0xc000000000000, 0x401)/* 7*/, FP64_V(0, 0xb800000000000, 0x404)/*55*/, FP64_V(0, 0,               0x409)/*1024*/ } },
    36763697            { /* =>      */ { FP64_V(0, 0,               0x408)/* 512*/, FP64_V(1, 0xf000000000000, 0x404)/*62*/, FP64_V(0, 0xf000000000000, 0x404)/*62*/, FP64_V(1, 0,               0x408)/* 512*/ } },
    3677               /*mask     */ X86_MXCSR_XCPT_MASK,
    3678               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3679               /*flags    */ 0, 0 },
     3698              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3699              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3700              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3701              /*xcpt?    */ false, false },
    36803702          { { /*src2     */ { FP64_V(0, 0x26580b4800000, 0x41d)/*1234567890*/, FP64_V(0, 0x9000000000000, 0x405)/*      100*/, FP64_0(0), FP64_V(0, 0xd6eca42000000, 0x419)/*       123450000.5*/ } },
    36813703            { /*src1     */ { FP64_V(0, 0x26580b4800000, 0x41d)/*1234567890*/, FP64_V(0, 0xd6f3458800000, 0x41c)/*987654321*/, FP64_0(0), FP64_V(0, 0xcf00348ec5858, 0x432)/*4072598123457580.0*/ } },
    36823704            { /* =>      */ { FP64_0(0),                                       FP64_V(0, 0xd6f3426800000, 0x41c)/*987654221*/, FP64_0(0), FP64_V(0, 0xcf0033a34f337, 0x432)/*4072598000007579.5*/ } },
    3683               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3684               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3685               /*flags    */ 0, 0 },
     3705              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3706              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3707              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3708              /*xcpt?    */ false, false },
    36863709          { { /*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) } },
    36873710            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0),                                FP64_1(0),                                                FP64_0(0), FP64_0(0) } },
    36883711            { /* =>      */ { FP64_1(0),                                                FP64_V(1, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_0(0), FP64_0(0) } },
    3689               /*mask     */ X86_MXCSR_XCPT_MASK,
    3690               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3691               /*flags    */ 0, 0 },
     3712              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3713              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3714              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3715              /*xcpt?    */ false, false },
    36923716          { { /*src2     */ { FP64_1(0),                                                FP64_1(1),                                                FP64_1(1),                                                FP64_NORM_SAFE_INT_MAX(0)                                } },
    36933717            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0),                                FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_1(0)                                                } },
    36943718            { /* =>      */ { FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_NORM_SAFE_INT_MAX(0),                                FP64_NORM_SAFE_INT_MAX(0),                                FP64_V(1, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX) } },
    3695               /*mask     */ X86_MXCSR_XCPT_MASK,
    3696               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3697               /*flags    */ 0, 0 },
     3719              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_XCPT_MASK,
     3720              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_XCPT_MASK,
     3721              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_XCPT_MASK,
     3722              /*xcpt?    */ false, false },
    36983723          { { /*src2     */ { FP64_NORM_SAFE_INT_MAX(1), FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(0), FP64_NORM_SAFE_INT_MIN(1) } },
    36993724            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(1), FP64_NORM_SAFE_INT_MIN(1), FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(0) } },
    37003725            { /* =>      */ { FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(1), FP64_NORM_SAFE_INT_MIN(1), FP64_V(0, 0, 2)           } },
    3701               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3702               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3703               /*flags    */ 0, 0 },
     3726              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     3727              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     3728              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     3729              /*xcpt?    */ false, false },
    37043730          { { /*src2     */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/, FP64_0(0), FP64_0(1), FP64_NORM_SAFE_INT_MIN(0) } },
    37053731            { /*src1     */ { FP64_V(0, 0xbcd80e0108cc0, 0x42e)/*244555555308646.00*/, FP64_0(0), FP64_0(1), FP64_NORM_SAFE_INT_MIN(1) } },
    37063732            { /* =>      */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/, FP64_0(1), FP64_0(1), FP64_V(1, 0, 2) } },
    3707               /*mask     */ X86_MXCSR_XCPT_MASK,
    3708               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    3709               /*flags    */ 0, 0 },
     3733              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_XCPT_MASK,
     3734              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_XCPT_MASK,
     3735              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_XCPT_MASK,
     3736              /*xcpt?    */ false, false },
    37103737    /*
    37113738     * Denormals.
     
    37143741            { /*src1     */ { FP64_0(0),          FP64_0(0), FP64_0(0), FP64_0(0) } },
    37153742            { /* =>      */ { FP64_0(0),          FP64_0(0), FP64_0(0), FP64_0(0) } },
    3716               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3717               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3718               /*flags    */ X86_MXCSR_DE, X86_MXCSR_DE },
     3743              /*mxcsr:in */ 0,
     3744              /*128:out  */ X86_MXCSR_DE,
     3745              /*256:out  */ X86_MXCSR_DE,
     3746              /*xcpt?    */ true, true },
    37193747          { { /*src2     */ { FP64_0(0), FP64_0(0),          FP64_0(0), FP64_0(0) } },
    37203748            { /*src1     */ { FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0) } },
    37213749            { /* =>      */ { FP64_0(0), FP64_0(0),          FP64_0(0), FP64_0(0) } },
    3722               /*mask     */ X86_MXCSR_XCPT_MASK,
    3723               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_NEAREST,
    3724               /*flags    */ 0, 0 },
     3750              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     3751              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     3752              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     3753              /*xcpt?    */ false, false },
    37253754          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
    37263755            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
    37273756            { /* =>      */ { FP64_0(0),          FP64_0(0),          FP64_0(0),          FP64_0(0)          } },
    3728               /*mask     */ X86_MXCSR_XCPT_MASK,
    3729               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    3730               /*flags    */ 0, 0 },
     3757              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     3758              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     3759              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_XCPT_MASK,
     3760              /*xcpt?    */ false, false },
    37313761    /** @todo More denormals. */
    37323762    /*
     
    37363766            { /*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) } },
    37373767            { /* =>      */ { 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) } },
    3738               /*mask     */ X86_MXCSR_XCPT_MASK,
    3739               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3740               /*flags    */ 0, 0 },
     3768              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3769              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3770              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3771              /*xcpt?    */ false, false },
    37413772          { { /*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) } },
    37423773            { /*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_V0) } },
    37433774            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(0, 1),                  FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0) } },
    3744               /*mask     */ X86_MXCSR_XCPT_MASK,
    3745               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3746               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3775              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3776              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3777              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3778              /*xcpt?    */ false, false },
    37473779          { { /*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) } },
    37483780            { /*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) } },
    37493781            { /* =>      */ { 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) } },
    3750               /*mask     */ X86_MXCSR_XCPT_MASK,
    3751               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3752               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3782              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3783              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3784              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3785              /*xcpt?    */ false, false },
    37533786          { { /*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) } },
    37543787            { /*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) } },
    37553788            { /* =>      */ { 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) } },
    3756               /*mask     */ X86_MXCSR_XCPT_MASK,
    3757               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3758               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3789              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3790              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3791              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3792              /*xcpt?    */ false, false },
    37593793          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
    37603794            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
    37613795            { /* =>      */ { 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) } },
    3762               /*mask     */ X86_MXCSR_XCPT_MASK,
    3763               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3764               /*flags    */ 0, 0 },
     3796              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3797              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3798              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3799              /*xcpt?    */ false, false },
    37653800          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V1) } },
    37663801            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
    37673802            { /* =>      */ { 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) } },
    3768               /*mask     */ X86_MXCSR_XCPT_MASK,
    3769               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3770               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3803              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3804              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3805              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3806              /*xcpt?    */ false, false },
    37713807          { { /*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_V1) } },
    37723808            { /*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) } },
    37733809            { /* =>      */ { 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) } },
    3774               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3775               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    3776               /*flags    */ 0, 0 },
     3810              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3811              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3812              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3813              /*xcpt?    */ false, false },
    37773814          { { /*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) } },
    37783815            { /*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) } },
    37793816            { /* =>      */ { 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) } },
    3780               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3781               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3782               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3817              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3818              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3819              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3820              /*xcpt?    */ true, true },
    37833821          { { /*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) } },
    37843822            { /*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) } },
    37853823            { /* =>      */ { 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) } },
    3786               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3787               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3788               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3824              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3825              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3826              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3827              /*xcpt?    */ true, true },
    37893828          { { /*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) } },
    37903829            { /*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) } },
    37913830            { /* =>      */ { 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) } },
    3792               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3793               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_UP,
    3794               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3831              /*mxcsr:in */ X86_MXCSR_RC_UP,
     3832              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3833              /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3834              /*xcpt?    */ true, true },
    37953835          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
    37963836            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1)              } },
    37973837            { /* =>      */ { 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) } },
    3798               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3799               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_DOWN,
    3800               /*flags    */ 0, 0 },
     3838              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     3839              /*128:out  */ X86_MXCSR_RC_DOWN,
     3840              /*256:out  */ X86_MXCSR_RC_DOWN,
     3841              /*xcpt?    */ false, false },
    38013842          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V2) } },
    38023843            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1)              } },
    38033844            { /* =>      */ { 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) } },
    3804               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3805               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_ZERO,
    3806               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3845              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     3846              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3847              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3848              /*xcpt?    */ true, true },
    38073849    /** @todo Underflow, Precision; Rounding, FZ etc. */
    38083850    };
     
    38553897
    38563898
     3899#if 0
    38573900/*
    38583901 * [V]SUBSS.
     
    52075250        { "[v]haddps",      bs3CpuInstr4_v_haddps, 0 },
    52085251        { "[v]subps",       bs3CpuInstr4_v_subps,  0 },
     5252        { "[v]subpd",       bs3CpuInstr4_v_subpd,  0 },
    52095253# if 0
    5210         { "[v]subpd",       bs3CpuInstr4_v_subpd,  0 },
    52115254        { "[v]subss",       bs3CpuInstr4_v_subss,  0 },
    52125255        { "[v]mulps",       bs3CpuInstr4_v_mulps,  0 },
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