VirtualBox

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


Ignore:
Timestamp:
Jul 23, 2024 10:57:41 AM (10 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164099
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.

File:
1 edited

Legend:

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

    r105439 r105442  
    28812881              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    28822882              /*xcpt?    */ false, false },
    2883 #if 0
    28842883    /*
    28852884     * Normals.
     
    28882887            { /*src1     */ { FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_NORM_MAX(1),                  FP32_0(0),        FP32_V(0, 0,        0x7e)/*0.50*/, FP32_V(0, 0, 0x7d)/*0.25*/, FP32_0(0),                         FP32_0(0)                         } },
    28892888            { /* =>      */ { FP32_V(0, 0x400000, 0x7f)/* 1.50*/, FP32_NORM_MAX(1),                  FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_NORM_MAX(0), FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_0(0),                  FP32_NORM_MAX(0),                  FP32_V(0, 0x600000, 0x7f)/*1.75*/ } },
    2890               /*mask     */ X86_MXCSR_XCPT_MASK,
    2891               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    2892               /*flags    */ 0, 0 },
     2889              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2890              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2891              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2892              /*xcpt?    */ false, false },
    28932893          { { /*src2     */ { FP32_NORM_V1(1),  FP32_NORM_V1(0),  FP32_NORM_V4(1),  FP32_NORM_V4(0),  FP32_NORM_V1(1),  FP32_NORM_V1(0),  FP32_NORM_V2(1), FP32_NORM_V2(0) } },
    28942894            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_V3(0), FP32_NORM_V3(1) } },
    28952895            { /* =>      */ { FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),       FP32_0(0)       } },
    2896               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2897               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2898               /*flags    */ 0, 0 },
     2896              /*mxcsr:in */ 0,
     2897              /*128:out  */ 0,
     2898              /*256:out  */ 0,
     2899              /*xcpt?    */ false, false },
    28992900          { { /*src2     */ { FP32_V(0, 0x5c0000, 0x84)/*     55*/, FP32_V(0, 0x600000, 0x81)/*      7.00*/, FP32_0(0),                            FP32_V(0, 0x5c0000, 0x84)/*   55.00*/, FP32_V(0, 0x253468, 0x93)/*1353357*/, FP32_V(1, 0x7c9000, 0x88)/*-1010.25*/, FP32_0(0),                               FP32_V(0, 0x534000, 0x86)/*211.25*/ } },
    29002901            { /*src1     */ { FP32_V(0, 0x669050, 0x93)/*1888778*/, FP32_V(1, 0x1ea980, 0x8f)/* -81235.00*/, FP32_V(0, 0x253468, 0x93)/*1353357*/, FP32_V(1, 0x7c9000, 0x88)/*-1010.25*/, FP32_V(0, 0x5c0000, 0x84)/*     55*/, FP32_V(0, 0x600000, 0x81)/*7*/,        FP32_V(0, 0x534000, 0x86)/*211.25*/,     FP32_1(1)                           } },
    29012902            { /* =>      */ { FP32_V(0, 0x5ca5b8, 0x93)/*1807543*/, FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_V(0, 0x780000, 0x84)/*     62*/, FP32_V(0, 0x5c0000, 0x84)/*   55.00*/, FP32_V(0, 0x780000, 0x84)/*     62*/, FP32_V(0, 0x524000, 0x86)/*210.25*/,   FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_V(0, 0x534000, 0x86)/*211.25*/ } },
    2902               /*mask     */ X86_MXCSR_XCPT_MASK,
    2903               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2904               /*flags    */ 0, 0 },
     2903              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2904              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2905              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2906              /*xcpt?    */ false, false },
    29052907          { { /*src2     */ { FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_0(0),                             FP32_NORM_V1(0), FP32_V(0, 0x3c614e, 0x97)/*24691356*/, FP32_V(1, 0x3c614e, 0x96)/*-12345678*/, FP32_0(0),                             FP32_1(1) } },
    29062908            { /*src1     */ { FP32_V(0, 0x74429f, 0x97)/*32015678*/, FP32_V(1, 0x712060, 0x92)/* -987654*/, FP32_NORM_V3(1),                       FP32_0(0),       FP32_V(0, 0x74429f, 0x97)/*32015678*/, FP32_V(1, 0x712060, 0x92)/*  -987654*/, FP32_0(0),                             FP32_1(0) } },
    29072909            { /* =>      */ { FP32_V(0, 0x6cb99c, 0x97)/*31028024*/, FP32_NORM_V3(1),                       FP32_V(0, 0x3c614e, 0x97)/*24691356*/, FP32_NORM_V1(0), FP32_V(0, 0x6cb99c, 0x97)/*31028024*/, FP32_1(0),                              FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_1(1) } },
    2908               /*mask     */ X86_MXCSR_XCPT_MASK,
    2909               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2910               /*flags    */ 0, 0 },
     2910              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2911              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2912              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2913              /*xcpt?    */ false, false },
    29112914          { { /*src2     */ { FP32_1(0),                                                FP32_1(1),                                                FP32_1(1),                 FP32_0(0), FP32_1(0),                                                FP32_1(1),                                                FP32_1(1),                 FP32_0(0) } },
    29122915            { /*src1     */ { FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_1(0),                                                FP32_NORM_SAFE_INT_MAX(0), FP32_1(1), FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_1(0),                                                FP32_NORM_SAFE_INT_MAX(0), FP32_1(1) } },
    29132916            { /* =>      */ { FP32_NORM_SAFE_INT_MAX(0),                                FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_0(0),                 FP32_1(1), FP32_NORM_SAFE_INT_MAX(0),                                FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_0(0),                 FP32_1(1) } },
    2914               /*mask     */ X86_MXCSR_XCPT_MASK,
    2915               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    2916               /*flags    */ 0, 0 },
     2917              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2918              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2919              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     2920              /*xcpt?    */ false, false },
    29172921          { { /*src2     */ { FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_1(1),                               FP32_0(0), FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_1(1),                               FP32_0(0) } },
    29182922            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_NORM_SAFE_INT_MAX(1),               FP32_1(1), FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_NORM_SAFE_INT_MAX(1),               FP32_1(1) } },
    29192923            { /* =>      */ { FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(1, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_1(1), FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(1, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_1(1) } },
    2920               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2921               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2922               /*flags    */ 0, 0 },
     2924              /*mxcsr:in */ 0,
     2925              /*128:out  */ 0,
     2926              /*256:out  */ 0,
     2927              /*xcpt?    */ false, false },
    29232928          { { /*src2     */ { FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_1(1),                               FP32_0(0), FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_1(1),                               FP32_0(0) } },
    29242929            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_NORM_SAFE_INT_MAX(1),               FP32_1(1), FP32_NORM_SAFE_INT_MAX(0),               FP32_1(0),                               FP32_NORM_SAFE_INT_MAX(1),               FP32_1(1) } },
    29252930            { /* =>      */ { FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(1, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_1(1), FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(1, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(0, 0, FP32_EXP_SAFE_INT_MAX + 1), FP32_1(1) } },
    2926               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2927               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    2928               /*flags    */ 0, 0 },
     2931              /*mxcsr:in */ X86_MXCSR_FZ,
     2932              /*128:out  */ X86_MXCSR_FZ,
     2933              /*256:out  */ X86_MXCSR_FZ,
     2934              /*xcpt?    */ false, false },
    29292935          { { /*src2     */ { FP32_V(0, 0x6423f2, 0x92)/* 934463.125*/, FP32_V(1, 0x0a19f0, 0x8f)/*-70707.875*/, FP32_NORM_SAFE_INT_MIN(1),               FP32_NORM_SAFE_INT_MIN(1),               FP32_NORM_SAFE_INT_MIN(0),               FP32_NORM_SAFE_INT_MIN(0),               FP32_V(0, 0x600000, 0x7e)/*     0.875*/, FP32_V(0, 0x769b50, 0x92)/*1010101.000*/ } },
    29302936            { /*src1     */ { FP32_V(0, 0x769b50, 0x92)/*1010101.000*/, FP32_V(0, 0x600000, 0x7e)/*     0.875*/, FP32_V(0, 0x430ebc, 0x91)/*399477.875*/, FP32_V(0, 0x3ce348, 0x90)/*193421.125*/, FP32_V(0, 0x16b43a, 0x93)/*1234567.25*/, FP32_V(0, 0x00c6d3, 0x94)/*2109876.75*/, FP32_V(0, 0x792318, 0x91)/*510232.750*/, FP32_V(1, 0x316740, 0x8e)/* -45415.250*/ } },
    29312937            { /* =>      */ { FP32_V(0, 0x769b5e, 0x92)/*1010101.875*/, FP32_V(0, 0x10c030, 0x92)/*592899.000*/, FP32_V(0, 0x52e0b4, 0x92)/*863755.250*/, FP32_V(1, 0, 2),                         FP32_V(0, 0x4c20f0, 0x94)/*3344444.00*/, FP32_V(0, 0x62f630, 0x91)/*464817.50*/,  FP32_V(0, 0, 2),                         FP32_V(0, 0x769b5e, 0x92)/*1010101.875*/ } },
    2932               /*mask     */ X86_MXCSR_XCPT_MASK,
    2933               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    2934               /*flags    */ 0, 0 },
     2938              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2939              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2940              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2941              /*xcpt?    */ false, false },
    29352942    /*
    29362943     * Denormals.
     
    29392946            { /*src1     */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } },
    29402947            { /* =>      */ { FP32_0(0),          FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0)          } },
    2941               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2942               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2943               /*flags    */ X86_MXCSR_DE, X86_MXCSR_DE },
     2948              /*mxcsr:in */ 0,
     2949              /*128:out  */ X86_MXCSR_DE,
     2950              /*256:out  */ X86_MXCSR_DE,
     2951              /*xcpt?    */ true, true },
    29442952          { { /*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) } },
    29452953            { /*src1     */ { FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0) } },
    29462954            { /* =>      */ { FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0) } },
    2947               /*mask     */ X86_MXCSR_XCPT_MASK,
    2948               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_NEAREST,
    2949               /*flags    */ 0, 0 },
     2955              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     2956              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     2957              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     2958              /*xcpt?    */ false, false },
    29502959          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0) } },
    29512960            { /*src1     */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0) } },
    29522961            { /* =>      */ { FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),         } },
    2953               /*mask     */ X86_MXCSR_XCPT_MASK,
    2954               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    2955               /*flags    */ 0, 0 },
     2962              /*mxcsr:in */ X86_MXCSR_DAZ,
     2963              /*128:out  */ X86_MXCSR_DAZ,
     2964              /*256:out  */ X86_MXCSR_DAZ,
     2965              /*xcpt?    */ false, false },
    29562966         { { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } },
    29572967            { /*src1     */ { FP32_0(0),         FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    29582968            { /* =>      */ { FP32_0(0),         FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } },
    2959               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    2960               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2961               /*flags    */ X86_MXCSR_DE, X86_MXCSR_DE },
     2969              /*mxcsr:in */ 0,
     2970              /*128:out  */ X86_MXCSR_DE,
     2971              /*256:out  */ X86_MXCSR_DE,
     2972              /*xcpt?    */ true, true },
    29622973          { { /*src2     */ { FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } },
    29632974            { /*src1     */ { FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)          } },
    29642975            { /* =>      */ { FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0)          } },
    2965               /*mask     */ X86_MXCSR_XCPT_MASK,
    2966               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_NEAREST,
    2967               /*flags    */ 0, 0 },
     2976              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     2977              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     2978              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_XCPT_MASK,
     2979              /*xcpt?    */ false, false },
    29682980          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0) } },
    29692981            { /*src1     */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0) } },
    29702982            { /* =>      */ { FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0),          FP32_0(0)          } },
    2971               /*mask     */ X86_MXCSR_XCPT_MASK,
    2972               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    2973               /*flags    */ 0, 0 },
     2983              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     2984              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     2985              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
     2986              /*xcpt?    */ false, false },
    29742987          /** @todo Denormals; Rounding, FZ etc. */
    29752988    /*
     
    29792992            { /*src1     */ { FP32_QNAN(0),                       FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V4) } },
    29802993            { /* =>      */ { FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V0),       FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3) } },
    2981               /*mask     */ X86_MXCSR_XCPT_MASK,
    2982               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2983               /*flags    */ 0, 0 },
     2994              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     2995              /*128:out  */ X86_MXCSR_XCPT_MASK,
     2996              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2997              /*xcpt?    */ false, false },
    29842998          { { /*src2     */ { FP32_QNAN(0), FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V5) } },
    29852999            { /*src1     */ { FP32_QNAN(0), FP32_SNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V2),       FP32_QNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V4) } },
    29863000            { /* =>      */ { FP32_QNAN(0), FP32_QNAN(0),                       FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V4) } },
    2987               /*mask     */ X86_MXCSR_XCPT_MASK,
    2988               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2989               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3001              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3002              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3003              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3004              /*xcpt?    */ false, false },
    29903005          { { /*src2     */ { FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V6) } },
    29913006            { /*src1     */ { FP32_SNAN(0),                       FP32_QNAN(0),                 FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1) } },
    29923007            { /* =>      */ { FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, 1),            FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    2993               /*mask     */ X86_MXCSR_XCPT_MASK,
    2994               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    2995               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3008              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3009              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3010              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3011              /*xcpt?    */ false, false },
    29963012          { { /*src2     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V7), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V1) } },
    29973013            { /*src1     */ { FP32_SNAN(0),      FP32_SNAN(0),                       FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V2) } },
    29983014            { /* =>      */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V7), FP32_QNAN_V(0, FP32_FRAC_V6) } },
    2999               /*mask     */ X86_MXCSR_XCPT_MASK,
    3000               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3001               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3015              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3016              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3017              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3018              /*xcpt?    */ false, false },
    30023019          { { /*src2     */ { FP32_QNAN(0), FP32_NORM_V1(0),                    FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V1), FP32_NORM_V3(1),              FP32_QNAN_V(0, FP32_FRAC_V5), FP32_NORM_V5(1)              } },
    30033020            { /*src1     */ { FP32_QNAN(0), FP32_1(1),                          FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_NORM_V2(1),                    FP32_QNAN_V(0, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_QNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
    30043021            { /* =>      */ { FP32_QNAN(0), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(1, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    3005               /*mask     */ X86_MXCSR_XCPT_MASK,
    3006               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3007               /*flags    */ 0, 0 },
     3022              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3023              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3024              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3025              /*xcpt?    */ false, false },
    30083026          { { /*src2     */ { FP32_SNAN_V(1, FP32_FRAC_NORM_MAX), FP32_1(0),                          FP32_SNAN_V(0, FP32_FRAC_V1),       FP32_NORM_V3(0),              FP32_SNAN_V(0, FP32_FRAC_V0), FP32_NORM_V3(1),              FP32_SNAN_V(0, FP32_FRAC_V6), FP32_NORM_V7(1)              } },
    30093027            { /*src1     */ { FP32_SNAN(0),                       FP32_1(1),                          FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_NORM_V2(1),              FP32_SNAN_V(1, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_SNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
    30103028            { /* =>      */ { FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(1, FP32_FRAC_V2), FP32_QNAN_V(1, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V0), FP32_QNAN_V(0, FP32_FRAC_V6) } },
    3011               /*mask     */ X86_MXCSR_XCPT_MASK,
    3012               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3013               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3029              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3030              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3031              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3032              /*xcpt?    */ false, false },
    30143033          { { /*src2     */ { FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_V0),       FP32_QNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    30153034            { /*src1     */ { FP32_QNAN(0),                       FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V4) } },
    30163035            { /* =>      */ { FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V0),       FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3) } },
    3017               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3018               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_ZERO,
    3019               /*flags    */ 0, 0 },
     3036              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3037              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3038              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3039              /*xcpt?    */ false, false },
    30203040          { { /*src2     */ { FP32_QNAN(0), FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V5) } },
    30213041            { /*src1     */ { FP32_QNAN(0), FP32_SNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V2),       FP32_QNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V4) } },
    30223042            { /* =>      */ { FP32_QNAN(0), FP32_QNAN(0),                       FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V4) } },
    3023               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3024               /*daz,fz,rc*/ X86_MXCSR_DAZ, 0, X86_MXCSR_RC_UP,
    3025               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3043              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     3044              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3045              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3046              /*xcpt?    */ true, true },
    30263047          { { /*src2     */ { FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V6) } },
    30273048            { /*src1     */ { FP32_SNAN(0),                       FP32_QNAN(0),                 FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1) } },
    30283049            { /* =>      */ { FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, 1),            FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    3029               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3030               /*daz,fz,rc*/ 0, X86_MXCSR_FZ, X86_MXCSR_RC_NEAREST,
    3031               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3050              /*mxcsr:in */ 0,
     3051              /*128:out  */ X86_MXCSR_IE,
     3052              /*256:out  */ X86_MXCSR_IE,
     3053              /*xcpt?    */ true, true },
    30323054          { { /*src2     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V7), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V1) } },
    30333055            { /*src1     */ { FP32_SNAN(0),      FP32_SNAN(0),                       FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V2) } },
    30343056            { /* =>      */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V7), FP32_QNAN_V(0, FP32_FRAC_V6) } },
    3035               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3036               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_DOWN,
    3037               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3057              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3058              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3059              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     3060              /*xcpt?    */ true, true },
    30383061          { { /*src2     */ { FP32_QNAN(0), FP32_NORM_V1(0),                    FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1),       FP32_QNAN_V(0, FP32_FRAC_V1), FP32_NORM_V3(1),              FP32_QNAN_V(0, FP32_FRAC_V5), FP32_NORM_V5(1)              } },
    30393062            { /*src1     */ { FP32_QNAN(0), FP32_1(1),                          FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_NORM_V2(1),                    FP32_QNAN_V(0, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_QNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
    30403063            { /* =>      */ { FP32_QNAN(0), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_QNAN(0),                       FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(1, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    3041               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3042               /*daz,fz,rc*/ 0, 0, X86_MXCSR_RC_NEAREST,
    3043               /*flags    */ 0, 0 },
     3064              /*mxcsr:in */ 0,
     3065              /*128:out  */ 0,
     3066              /*256:out  */ 0,
     3067              /*xcpt?    */ false, false },
    30443068          { { /*src2     */ { FP32_SNAN_V(1, FP32_FRAC_NORM_MAX), FP32_1(0),                          FP32_SNAN_V(0, FP32_FRAC_V1),       FP32_NORM_V3(0),              FP32_SNAN_V(0, FP32_FRAC_V0), FP32_NORM_V3(1),              FP32_SNAN_V(0, FP32_FRAC_V6), FP32_NORM_V7(1)              } },
    30453069            { /*src1     */ { FP32_SNAN(0),                       FP32_1(1),                          FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_NORM_V2(1),              FP32_SNAN_V(1, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_SNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
    30463070            { /* =>      */ { FP32_QNAN_V(0, 1),                  FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(1, FP32_FRAC_V2), FP32_QNAN_V(1, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V0), FP32_QNAN_V(0, FP32_FRAC_V6) } },
    3047               /*mask     */ ~X86_MXCSR_XCPT_MASK,
    3048               /*daz,fz,rc*/ X86_MXCSR_DAZ, X86_MXCSR_FZ, X86_MXCSR_RC_UP,
    3049               /*flags    */ X86_MXCSR_IE, X86_MXCSR_IE },
     3071              /*mxcsr:in */ X86_MXCSR_RC_UP,
     3072              /*128:out  */ X86_MXCSR_RC_UP|X86_MXCSR_IE,
     3073              /*256:out  */ X86_MXCSR_RC_UP|X86_MXCSR_IE,
     3074              /*xcpt?    */ true, true },
    30503075    /** @todo Underflow, Precision; Rounding, FZ etc. */
    3051 #endif
    30523076    };
    30533077
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette