VirtualBox

Changeset 105439 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
Jul 23, 2024 10:04:18 AM (6 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: Allow setting all bits in MXCSR (other than MXCSR.MM bit) and explicitly specifying FP-exception bits for 128-bit and 256-bit variants - [h]addps (W.I.P).

File:
1 edited

Legend:

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

    r105438 r105439  
    27392739
    27402740
    2741 #if 0
    27422741/*
    27432742 * [V]HADDPS.
     
    27532752            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    27542753            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    2755               /*mask     */ X86_MXCSR_XCPT_MASK,
    2756               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2757               /*flags    */ 0, 0 },
     2754              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2755              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2756              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2757              /*xcpt?    */ false, false },
    27582758          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    27592759            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    27602760            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    2761               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2762               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2763               /*flags    */ 0, 0 },
     2761              /*mxcsr:in */ 0,
     2762              /*128:out  */ 0,
     2763              /*256:out  */ 0,
     2764              /*xcpt?    */ false, false },
    27642765          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    27652766            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    27662767            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    2767               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2768               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    2769               /*flags    */ 0, 0 },
     2768              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     2769              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     2770              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     2771              /*xcpt?    */ false, false },
    27702772          { { /*src2     */ { FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1) } },
    27712773            { /*src1     */ { FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1) } },
    27722774            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    2773               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2774               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_ZERO,
    2775               /*flags    */ 0, 0 },
     2775              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     2776              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     2777              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     2778              /*xcpt?    */ false, false },
    27762779          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1) } },
    27772780            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1) } },
    27782781            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } },
    2779               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2780               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    2781               /*flags    */ 0, 0 },
     2782              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     2783              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     2784              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     2785              /*xcpt?    */ false, false },
    27822786          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } },
    27832787            { /*src1     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } },
    27842788            { /* =>      */ { FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1) } },
    2785               /*mask     */ X86_MXCSR_XCPT_MASK,
    2786               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    2787               /*flags    */ 0, 0 },
     2789              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2790              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2791              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2792              /*xcpt?    */ false, false },
    27882793    /*
    27892794     * Infinity.
     
    27922797            { /*src1     */ { FP32_INF(1),  FP32_INF(0),  FP32_0(0),    FP32_0(0),    FP32_INF(0),  FP32_INF(1), FP32_0(0),    FP32_0(0)    } },
    27932798            { /* =>      */ { FP32_QNAN(1), FP32_0(0),    FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_0(0),   FP32_QNAN(1), FP32_QNAN(1) } },
    2794               /*mask     */ X86_MXCSR_IM,
    2795               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2796               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
    2797           { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),  FP32_INF(1), FP32_0(0),    FP32_0(0)   } },
    2798             { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),  FP32_INF(0), FP32_INF(0),  FP32_INF(0) } },
    2799             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_QNAN(1), FP32_INF(0), FP32_INF(1),  FP32_0(0)   } },
    2800               /*mask     */ X86_MXCSR_XCPT_MASK,
    2801               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2802               /*flags    */ 0, X86_MXCSR_IE },
     2799              /*mxcsr:in */ X86_MXCSR_IM,
     2800              /*128:out  */ X86_MXCSR_IM | X86_MXCSR_IE,
     2801              /*256:out  */ X86_MXCSR_IM | X86_MXCSR_IE,
     2802              /*xcpt?    */ false, false },
     2803          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),  FP32_INF(1), FP32_0(0),   FP32_0(0)   } },
     2804            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),  FP32_INF(0), FP32_INF(0), FP32_INF(0) } },
     2805            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_QNAN(1), FP32_INF(0), FP32_INF(1), FP32_0(0)   } },
     2806              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2807              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2808              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2809              /*xcpt?    */ false, false },
    28032810          { { /*src2     */ { FP32_INF(0),  FP32_INF(1), FP32_INF(0),  FP32_INF(1),  FP32_INF(1),  FP32_INF(1), FP32_0(0),   FP32_0(0)   } },
    28042811            { /*src1     */ { FP32_INF(1),  FP32_INF(0), FP32_0(0),    FP32_0(0),    FP32_INF(1),  FP32_INF(0), FP32_INF(0), FP32_INF(0) } },
    28052812            { /* =>      */ { FP32_QNAN(1), FP32_0(0),   FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_INF(0), FP32_INF(1), FP32_0(0)   } },
    2806               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2807               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    2808               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     2813              /*mxcsr:in */ X86_MXCSR_FZ,
     2814              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_IE,
     2815              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_IE,
     2816              /*xcpt?    */ true, true },
    28092817          { { /*src2     */ { FP32_INF(1),  FP32_INF(1), FP32_INF(0), FP32_0(0),   FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_0(0)   } },
    28102818            { /*src1     */ { FP32_INF(0),  FP32_INF(0), FP32_INF(1), FP32_0(0),   FP32_0(0),   FP32_0(0),   FP32_0(0),   FP32_0(0)   } },
    28112819            { /* =>      */ { FP32_INF(0),  FP32_INF(1), FP32_INF(1), FP32_INF(0), FP32_0(0),   FP32_0(0),   FP32_INF(1), FP32_INF(0) } },
    2812               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2813               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    2814               /*flags    */ 0, 0 },
     2820              /*mxcsr:in */ 0,
     2821              /*128:out  */ 0,
     2822              /*256:out  */ 0,
     2823              /*xcpt?    */ false, false },
    28152824          { { /*src2     */ { FP32_INF(0),  FP32_QNAN(1), FP32_INF(1),  FP32_QNAN(0), FP32_INF(1),  FP32_INF(1),  FP32_0(0),   FP32_0(0)   } },
    28162825            { /*src1     */ { FP32_INF(0),  FP32_QNAN(0), FP32_INF(1),  FP32_QNAN(0), FP32_INF(1),  FP32_QNAN(1), FP32_INF(0), FP32_INF(0) } },
    28172826            { /* =>      */ { FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(1), FP32_QNAN(0), FP32_QNAN(1), FP32_INF(0),  FP32_INF(1), FP32_0(0)   } },
    2818               /*mask     */ X86_MXCSR_XCPT_MASK,
    2819               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    2820               /*flags    */ 0, 0 },
     2827              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2828              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2829              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2830              /*xcpt?    */ false, false },
    28212831    /*
    28222832     * Overflow, Precision.
     
    28252835            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } },
    28262836            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0)        } },
    2827               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2828               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2829               /*flags    */ 0, X86_MXCSR_OE },
     2837              /*mxcsr:in */ 0,
     2838              /*128:out  */ 0,
     2839              /*256:out  */ X86_MXCSR_OE,
     2840              /*xcpt?    */ false, true },
    28302841          { { /*src2     */ { FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0),                                     FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    28312842            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1),                                     FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    28322843            { /* =>      */ { FP32_INF(1),      FP32_INF(1),      FP32_V(1, FP32_FRAC_NORM_MIN, FP32_EXP_NORM_MIN + 1), FP32_INF(0),      FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    2833               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    2834               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2835               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     2844              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM,
     2845              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     2846              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     2847              /*xcpt?    */ false, false },
    28362848          { { /*src2     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(0),        FP32_0(0), FP32_NORM_MAX(0) } },
    28372849            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(0) } },
    28382850            { /* =>      */ { FP32_NORM_MAX(0), FP32_0(0),        FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } },
    2839               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    2840               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    2841               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
    2842           { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0),        FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0),        FP32_NORM_MAX(0) } },
    2843             { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } },
    2844             { /* =>      */ { FP32_INF(0),      FP32_V(1, 0, 2),  FP32_0(0),        FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_INF(0),      FP32_NORM_MAX(0) } },
    2845               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    2846               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    2847               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     2851              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
     2852              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     2853              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     2854              /*xcpt?    */ false, false },
     2855          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0),        FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0),                                     FP32_0(0),        FP32_NORM_MAX(0) } },
     2856            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MAX(0),                                     FP32_NORM_MIN(0), FP32_NORM_MAX(1) } },
     2857            { /* =>      */ { FP32_INF(0),      FP32_V(1, 0, 2),  FP32_0(0),        FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MAX), FP32_INF(0),      FP32_NORM_MAX(0) } },
     2858              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP,
     2859              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
     2860              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
     2861              /*xcpt?    */ false, false },
    28482862          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0),        FP32_0(0),        FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
    28492863            { /*src1     */ { FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_0(0),        FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(1) } },
    28502864            { /* =>      */ { FP32_V(1, 0, 2),  FP32_V(0, 0, 2),  FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_V(1, 0, 2),  FP32_NORM_MAX(0), FP32_0(0)        } },
    2851               /*mask     */ X86_MXCSR_OM | X86_MXCSR_PM,
    2852               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    2853               /*flags    */ X86_MXCSR_OE | X86_MXCSR_PE, X86_MXCSR_OE | X86_MXCSR_PE },
     2865              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
     2866              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     2867              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     2868              /*xcpt?    */ false, false },
    28542869          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    28552870            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1) } },
    28562871            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0),        FP32_0(0)        } },
    2857               /*mask     */ X86_MXCSR_XCPT_MASK,
    2858               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    2859               /*flags    */ 0, X86_MXCSR_OE | X86_MXCSR_PE },
     2872              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     2873              /*128:out  */ X86_MXCSR_RC_ZERO,
     2874              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE,
     2875              /*xcpt?    */ false, true },
    28602876          { { /*src2     */ { FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_MAX(0),                                         FP32_0(0),                 FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_MAX(0),          FP32_0(0),        FP32_NORM_SAFE_INT_MAX(1) } },
    28612877            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_SAFE_INT_MIN(0),                                FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_MAX(0),          FP32_0(0),        FP32_NORM_SAFE_INT_MAX(1) } },
    28622878            { /* =>      */ { FP32_NORM_SAFE_INT_MAX(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1), FP32_NORM_MAX(0),          FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_MAX(0),          FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_MAX(0), FP32_NORM_SAFE_INT_MAX(1) } },
    2863               /*mask     */ X86_MXCSR_XCPT_MASK,
    2864               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_ZERO,
    2865               /*flags    */ X86_MXCSR_PE, X86_MXCSR_PE },
     2879              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2880              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     2881              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     2882              /*xcpt?    */ false, false },
     2883#if 0
    28662884    /*
    28672885     * Normals.
     
    30313049              /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
    30323050    /** @todo Underflow, Precision; Rounding, FZ etc. */
     3051#endif
    30333052    };
    30343053
     
    30803099
    30813100
     3101#if 0
    30823102/*
    30833103 * [V]SUBPS.
     
    51155135        { "[v]addpd",       bs3CpuInstr4_v_addpd,  0 },
    51165136        { "[v]addss",       bs3CpuInstr4_v_addss,  0 },
     5137        { "[v]haddps",      bs3CpuInstr4_v_haddps, 0 },
    51175138# if 0
    5118         { "[v]haddps",      bs3CpuInstr4_v_haddps, 0 },
    51195139        { "[v]subps",       bs3CpuInstr4_v_subps,  0 },
    51205140        { "[v]subpd",       bs3CpuInstr4_v_subpd,  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