VirtualBox

Changeset 105620 in vbox


Ignore:
Timestamp:
Aug 8, 2024 9:13:41 AM (6 months ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]addsd.

File:
1 edited

Legend:

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

    r105617 r105620  
    28722872              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    28732873              /*xcpt?    */ true, true },
    2874     /** @todo Normals, Denormals, Overflow/Precision, Invalids etc. */
    28752874    /*
    28762875     * Overflow, Precision.
     
    29982997              /*256:out  */ X86_MXCSR_RC_UP,
    29992998              /*xcpt?    */ false, false },
     2999    /*
     3000     * Denormals.
     3001     */
     3002    /*29*/{ { /*src2     */ { FP64_DENORM_MAX(0), FP64_SNAN(0), FP64_SNAN(0), FP64_QNAN(0) } },
     3003            { /*src1     */ { FP64_0(0),          FP64_SNAN(0), FP64_QNAN(1), FP64_SNAN(1) } },
     3004            { /* =>      */ { FP64_0(0),          FP64_SNAN(0), FP64_QNAN(1), FP64_SNAN(1) } },
     3005              /*mxcsr:in */ 0,
     3006              /*128:out  */ X86_MXCSR_DE,
     3007              /*256:out  */ X86_MXCSR_DE,
     3008              /*xcpt?    */ true, true },
     3009          { { /*src2     */ { FP64_0(0),          FP64_SNAN(1), FP64_INF(0),  FP64_SNAN(0) } },
     3010            { /*src1     */ { FP64_DENORM_MAX(0), FP64_INF(0),  FP64_SNAN(1), FP64_QNAN(0) } },
     3011            { /* =>      */ { FP64_DENORM_MAX(0), FP64_INF(0),  FP64_SNAN(1), FP64_QNAN(0) } },
     3012              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3013              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     3014              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     3015              /*xcpt?    */ false, false },
     3016          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
     3017            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     3018            { /* =>      */ { FP64_0(0),          FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     3019              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3020              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3021              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3022              /*xcpt?    */ false, false },
     3023          /** @todo More Denormals. */
     3024    /*
     3025     * Invalids.
     3026     */
     3027    /* QNan, QNan (Masked). */
     3028    /*32*/{ { /*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) } },
     3029            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3030            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3031              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3032              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3033              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3034              /*xcpt?    */ false, false },
     3035          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_INF(0)  } },
     3036            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_SNAN(1) } },
     3037            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_SNAN(1) } },
     3038              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3039              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3040              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3041              /*xcpt?    */ false, false },
     3042          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_INF(1)  } },
     3043            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN(0) } },
     3044            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN(0) } },
     3045              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3046              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3047              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3048              /*xcpt?    */ false, false },
     3049    /* QNan, SNan (Masked). */
     3050          { { /*src2     */ { FP64_QNAN(0),      FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
     3051            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(1, FP64_FRAC_V2), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(1, FP64_FRAC_V2) } },
     3052            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(1, FP64_FRAC_V2) } },
     3053              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3054              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3055              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3056              /*xcpt?    */ false, false },
     3057          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V1) } },
     3058            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(1, FP64_FRAC_NORM_MIN), FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3059            { /* =>      */ { FP64_QNAN_V(0, 1),                  FP64_SNAN_V(1, FP64_FRAC_NORM_MIN), FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3060              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3061              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3062              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3063              /*xcpt?    */ false, false },
     3064          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_INF(0)  } },
     3065            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN(1) } },
     3066            { /* =>      */ { FP64_SNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN(1) } },
     3067              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3068              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3069              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3070              /*xcpt?    */ false, false },
     3071    /* SNan, QNan (Masked). */
     3072          { { /*src2     */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(1, FP64_FRAC_V1) } },
     3073            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(1, FP64_FRAC_V2) } },
     3074            { /* =>      */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(1, FP64_FRAC_V2) } },
     3075              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3076              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3077              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3078              /*xcpt?    */ false, false },
     3079          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V1) } },
     3080            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3081            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3082              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3083              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3084              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3085              /*xcpt?    */ false, false },
     3086          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V1) } },
     3087            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(1, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3) } },
     3088            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(1, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3) } },
     3089              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3090              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3091              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3092              /*xcpt?    */ false, false },
     3093    /* SNan, SNan (Masked). */
     3094          { { /*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) } },
     3095            { /*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) } },
     3096            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3) } },
     3097              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3098              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3099              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3100              /*xcpt?    */ false, false },
     3101          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3102            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V3) } },
     3103            { /* =>      */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V3) } },
     3104              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3105              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3106              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3107              /*xcpt?    */ false, false },
     3108          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3109            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3) } },
     3110            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3) } },
     3111              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3112              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3113              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3114              /*xcpt?    */ false, false },
     3115    /* QNan, Norm FP (Masked). */
     3116          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
     3117            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3118            { /* =>      */ { FP64_QNAN(0), FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3119              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3120              /*128:out  */ X86_MXCSR_XCPT_MASK,
     3121              /*256:out  */ X86_MXCSR_XCPT_MASK,
     3122              /*xcpt?    */ false, false },
     3123    /* SNan, Norm FP (Masked). */
     3124          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V1) } },
     3125            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3126            { /* =>      */ { FP64_QNAN_V(1, 1), FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3127              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
     3128              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3129              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     3130              /*xcpt?    */ false, false },
     3131    /* QNan, QNan (Unmasked). */
     3132    /*46*/{ { /*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) } },
     3133            { /*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_V2) } },
     3134            { /* =>      */ { 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_V2) } },
     3135              /*mxcsr:in */ 0,
     3136              /*128:out  */ 0,
     3137              /*256:out  */ 0,
     3138              /*xcpt?    */ false, false },
     3139          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
     3140            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3141            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3142              /*mxcsr:in */ 0,
     3143              /*128:out  */ 0,
     3144              /*256:out  */ 0,
     3145              /*xcpt?    */ false, false },
     3146          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
     3147            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(1, FP64_FRAC_V0) } },
     3148            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V0), FP64_QNAN_V(1, FP64_FRAC_V0) } },
     3149              /*mxcsr:in */ 0,
     3150              /*128:out  */ 0,
     3151              /*256:out  */ 0,
     3152              /*xcpt?    */ false, false },
     3153
     3154    /* QNan, SNan (Unmasked). */
     3155          { { /*src2     */ { FP64_QNAN(0),      FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
     3156            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(1, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3157            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3158              /*mxcsr:in */ 0,
     3159              /*128:out  */ X86_MXCSR_IE,
     3160              /*256:out  */ X86_MXCSR_IE,
     3161              /*xcpt?    */ true, true },
     3162          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V1) } },
     3163            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3164            { /* =>      */ { FP64_QNAN_V(0, 1),                  FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3165              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3166              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE,
     3167              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE,
     3168              /*xcpt?    */ true, true },
     3169          { { /*src2     */ { FP64_QNAN_V(0, FP64_FRAC_V1), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V1) } },
     3170            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3171            { /* =>      */ { FP64_SNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     3172              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3173              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3174              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3175              /*xcpt?    */ false, false },
     3176    /* SNan, QNan (Unmasked). */
     3177          { { /*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) } },
     3178            { /*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) } },
     3179            { /* =>      */ { 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) } },
     3180              /*mxcsr:in */ X86_MXCSR_DAZ,
     3181              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_IE,
     3182              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_IE,
     3183              /*xcpt?    */ true, true },
     3184          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(1, FP64_FRAC_V1) } },
     3185            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V0) } },
     3186            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V0) } },
     3187              /*mxcsr:in */ X86_MXCSR_RC_UP,
     3188              /*128:out  */ X86_MXCSR_RC_UP,
     3189              /*256:out  */ X86_MXCSR_RC_UP,
     3190              /*xcpt?    */ false, false },
     3191          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(1, FP64_FRAC_V1) } },
     3192            { /*src1     */ { FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3) } },
     3193            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(1, FP64_FRAC_V2), FP64_QNAN_V(1, FP64_FRAC_V3) } },
     3194              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3195              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3196              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3197              /*xcpt?    */ false, false },
     3198    /* SNan, SNan (Unmasked). */
     3199    /*55*/{ { /*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) } },
     3200            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V0) } },
     3201            { /* =>      */ { FP64_QNAN_V(0, 1), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V0) } },
     3202              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     3203              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_IE,
     3204              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_IE,
     3205              /*xcpt?    */ true, true },
     3206          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(1, FP32_FRAC_V2) } },
     3207            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(1, FP64_FRAC_V2), FP64_SNAN_V(1, FP32_FRAC_V3) } },
     3208            { /* =>      */ { FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(1, FP64_FRAC_V2), FP64_SNAN_V(1, FP32_FRAC_V3) } },
     3209              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     3210              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3211              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3212              /*xcpt?    */ true, true },
     3213          { { /*src2     */ { FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V2) } },
     3214            { /*src1     */ { FP64_SNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V3) } },
     3215            { /* =>      */ { FP64_QNAN_V(0, FP64_FRAC_V2), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_SNAN_V(1, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V3) } },
     3216              /*mxcsr:in */ 0,
     3217              /*128:out  */ 0,
     3218              /*256:out  */ 0,
     3219              /*xcpt?    */ false, false },
     3220    /* QNan, Norm FP (Unmasked). */
     3221          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
     3222            { /*src1     */ { FP64_1(0),    FP64_INF(1),                        FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3223            { /* =>      */ { FP64_QNAN(0), FP64_INF(1),                        FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3224              /*mxcsr:in */ X86_MXCSR_FZ,
     3225              /*128:out  */ X86_MXCSR_FZ,
     3226              /*256:out  */ X86_MXCSR_FZ,
     3227              /*xcpt?    */ false, false },
     3228    /* SNan, Norm FP (Unmasked). */
     3229    /*59*/{ { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V1) } },
     3230            { /*src1     */ { FP64_1(0),         FP64_INF(0),                        FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3231            { /* =>      */ { FP64_QNAN_V(1, 1), FP64_INF(0),                        FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     3232              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     3233              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3234              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     3235              /*xcpt?    */ true, true },
     3236    /** @todo Underflow, Precision; Rounding, FZ etc. */
    30003237    };
     3238
    30013239
    30023240    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
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