VirtualBox

Changeset 106228 in vbox for trunk


Ignore:
Timestamp:
Oct 8, 2024 7:51:03 AM (6 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165016
Message:

ValidationKit/bootsectors: adapt addps, subps, mulps, divps, addsubps to auto-MXCSR; bugref:10658

  • FP32_TABLE_D1_PS_INVALIDS: fix 1 previously-masked wrong output value
  • FP32_TABLE_D1_PS_INVALIDS: remove preset exceptions from 1 entry: let the worker do that
  • addps: remove 1 entry made redundant by mask randomization
  • addps: fix 3 previously-masked wrong output values
  • addps: split 3 entries, using FIXED for complex DM vs UM vs UE behavior
  • addps: split 6 entries, using FIXED for complex OM vs PE behavior
  • subps: remove 1 entry made redundant by mask randomization
  • subps: fix 4 previously-masked wrong output values
  • subps: remove preset exceptions from 1 entry: let the worker do that
  • subps: split 4 entries, using FIXED for complex DM vs UM vs UE behavior
  • subps: split 6 entries, using FIXED for complex OM vs PE behavior
  • mulps: remove 3 entries made redundant by mask randomization
  • mulps: fix 1 previously-masked wrong output value
  • mulps: split 2 entries, using FIXED for complex DM vs UM vs UE behavior
  • mulps: split 5 entries, using FIXED for complex OM vs PE behavior
  • mulps: split 3 entries, using FIXED for complex OM vs UM vs PE behavior
  • divps: remove 4 entries made redundant by mask randomization
  • divps: fix 2 previously-masked wrong output values
  • divps: split 1 entry, using FIXED for complex DM vs UM vs UE behavior
  • divps: split 2 entries, using FIXED for complex OM vs UM vs PE behavior
  • divps: split 1 entry, using FIXED for complex UM vs PE behavior
  • divps: split 1 entry, using FIXED for complex UM vs UE behavior
  • addsubps: remove 2 entries made redundant by mask randomization
  • addsubps: remove preset exceptions from 2 entries: let the worker do that
  • addsubps: fix 1 previously-masked wrong output value
  • addsubps: split 2 entries, using FIXED for complex DM vs UM vs UE behavior
  • addsubps: split 5 entries, using FIXED for complex OM vs PE behavior
  • addsubps: split 1 entry, using FIXED for complex UM vs PE behavior
File:
1 edited

Legend:

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

    r106223 r106228  
    696696              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                \
    697697              /*xcpt?    */ false, false },                                                                                                                                    \
    698           { { /*src2     */ { FP32_QNAN(0), FP32_QNAN_MAX(1), FP32_NORM_V0(1), FP32_QNAN_V1(0), FP32_NORM_V3(0), FP32_QNAN_V3(1), FP32_NORM_V5(0), FP32_QNAN_V5(1) } },        \
    699             { /*src1     */ { FP32_1(0),    FP32_1(1),        FP32_QNAN_V0(1), FP32_NORM_V2(1), FP32_QNAN_V2(0), FP32_NORM_V4(0), FP32_QNAN_V4(1), FP32_NORM_V6(1) } },        \
    700             { /* =>      */ { FP32_QNAN(0), FP32_QNAN_MAX(1), FP32_QNAN_V0(1), FP32_QNAN_V1(0), FP32_QNAN_V2(0), FP32_QNAN_V3(1), FP32_QNAN_V4(1), FP32_QNAN_V5(1) } },        \
    701               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,                                                                                                        \
    702               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,                                                                                                        \
    703               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,                                                                                                        \
     698          { { /*src2     */ { FP32_QNAN(0), FP32_QNAN_MAX(1), FP32_NORM_V0(1),  FP32_QNAN_V1(0), FP32_NORM_V3(0), FP32_QNAN_V3(1), FP32_NORM_V5(0), FP32_QNAN_V5(1) } },       \
     699            { /*src1     */ { FP32_1(0),    FP32_1(1),        FP32_QNAN_V0(1),  FP32_NORM_V2(1), FP32_QNAN_V2(0), FP32_NORM_V4(0), FP32_QNAN_V4(1), FP32_NORM_V6(1) } },       \
     700            { /* =>      */ { FP32_QNAN(0), FP32_QNAN_MAX(1), FP32_QNAN_MAX(1), FP32_QNAN_V1(0), FP32_QNAN_V2(0), FP32_QNAN_V3(1), FP32_QNAN_V4(1), FP32_QNAN_V5(1) } },       \
     701              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,                                                                                                                               \
     702              /*128:out  */ X86_MXCSR_XCPT_MASK,                                                                                                                               \
     703              /*256:out  */ X86_MXCSR_XCPT_MASK,                                                                                                                               \
    704704              /*xcpt?    */ false, false },                                                                                                                                    \
    705705          { { /*src2     */ { FP32_SNAN(1),      FP32_SNAN_MAX(1), FP32_NORM_V0(1), FP32_SNAN_V1(0), FP32_NORM_V3(0), FP32_SNAN_V3(1), FP32_NORM_V5(0), FP32_SNAN_V5(1) } },   \
     
    35873587            { /*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) } },
    35883588            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    3589               /*mxcsr:in */ 0,
    3590               /*128:out  */ 0,
    3591               /*256:out  */ 0,
    3592               /*xcpt?    */ false, false },
    3593           { { /*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) } },
    3594             { /*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) } },
    3595             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    35963589              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    35973590              /*128:out  */ X86_MXCSR_RC_ZERO,
     
    36223615     * Infinity.
    36233616     */
    3624     /* 6*/{ { /*src2     */ { FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     3617    /* 5*/{ { /*src2     */ { FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    36253618            { /*src1     */ { FP32_INF(1),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    36263619            { /* =>      */ { FP32_QNAN(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     
    36453638          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0)  } },
    36463639            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1)  } },
    3647             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_QNAN(0) } },
     3640            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_QNAN(1) } },
    36483641              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    36493642              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    36503643              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    36513644              /*xcpt?    */ false, true },
    3652           { { /*src2     */ { FP32_INF(0), FP32_INF(1), FP32_0(0), FP32_INF(1), FP32_0(1), FP32_INF(1),  FP32_INF(1),  FP32_INF(0) } },
    3653             { /*src1     */ { FP32_INF(1), FP32_INF(0), FP32_0(1), FP32_INF(0), FP32_0(0), FP32_INF(0),  FP32_INF(0),  FP32_INF(1) } },
    3654             { /* =>      */ { FP32_INF(1), FP32_INF(0), FP32_0(1), FP32_INF(0), FP32_0(1), FP32_QNAN(1), FP32_QNAN(1), FP32_INF(1) } },
     3645          { { /*src2     */ { FP32_INF(0),  FP32_INF(1),  FP32_0(0), FP32_INF(1),  FP32_0(1), FP32_INF(1),  FP32_INF(1),  FP32_INF(0) } },
     3646            { /*src1     */ { FP32_INF(1),  FP32_INF(0),  FP32_0(1), FP32_INF(0),  FP32_0(0), FP32_INF(0),  FP32_INF(0),  FP32_INF(1) } },
     3647            { /* =>      */ { FP32_QNAN(1), FP32_QNAN(1), FP32_0(0), FP32_QNAN(1), FP32_0(0), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } },
    36553648              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    36563649              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     
    36603653     * Overflow, Precision.
    36613654     */
    3662     /*11*/{ { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3655    /*10*/{ { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    36633656            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    36643657            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(0), FP32_0(0),        FP32_INF(0)      } },
    36653658              /*mxcsr:in */ 0,
    36663659              /*128:out  */ 0,
    3667               /*256:out  */ X86_MXCSR_OE,
     3660              /*256:out  */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3661              /*xcpt?    */ false, true },
     3662          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3663            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3664            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),      FP32_0(0), FP32_INF(1),      FP32_INF(0)      } },
     3665              /*mxcsr:in */ X86_MXCSR_OM,
     3666              /*128:out  */ X86_MXCSR_OM,
     3667              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    36683668              /*xcpt?    */ false, true },
    36693669          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0) } },
    36703670            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(1), FP32_0(1), FP32_NORM_MAX(0) } },
    36713671            { /* =>      */ { FP32_NORM_MAX(0), FP32_0(0),        FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(1), FP32_0(0), FP32_NORM_MAX(0) } },
    3672               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
    3673               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    3674               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    3675               /*xcpt?    */ false, false },
    3676           { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                     FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
    3677             { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                     FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
    3678             { /* =>      */ { FP32_INF(0),      FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_0(0), FP32_INF(0),      FP32_INF(0),      FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0)      } },
    3679               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    3680               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
    3681               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
    3682               /*xcpt?    */ false, false },
    3683           { { /*src2     */ { FP32_NORM_MIN(1),                     FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
    3684             { /*src1     */ { FP32_NORM_MIN(1),                     FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
    3685             { /* =>      */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_NORM_MAX(0), FP32_0(1),        FP32_0(0), FP32_0(1), FP32_0(1),        FP32_NORM_MAX(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1) } },
    3686               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    3687               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
    3688               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
     3672              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     3673              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3674              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3675              /*xcpt?    */ false, false },
     3676          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0) } },
     3677            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(1), FP32_0(1), FP32_NORM_MAX(0) } },
     3678            { /* =>      */ { FP32_NORM_MAX(0), FP32_0(0),        FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(1), FP32_0(0), FP32_NORM_MAX(0) } },
     3679              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO,
     3680              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3681              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3682              /*xcpt?    */ false, false },
     3683          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
     3684            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
     3685            { /* =>      */ { FP32_INF(0),      FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0),      FP32_INF(0),      FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0)      } },
     3686              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3687              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3688              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3689              /*xcpt?    */ false, false },
     3690          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
     3691            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
     3692            { /* =>      */ { FP32_INF(0),      FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0),      FP32_INF(0),      FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0)      } },
     3693              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     3694              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3695              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3696              /*xcpt?    */ false, false },
     3697          { { /*src2     */ { FP32_NORM_MIN(1),                    FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
     3698            { /*src1     */ { FP32_NORM_MIN(1),                    FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
     3699            { /* =>      */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_NORM_MAX(0), FP32_0(1),        FP32_0(0), FP32_0(1), FP32_0(1),        FP32_NORM_MAX(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1) } },
     3700              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3701              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3702              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3703              /*xcpt?    */ false, false },
     3704          { { /*src2     */ { FP32_NORM_MIN(1),                    FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
     3705            { /*src1     */ { FP32_NORM_MIN(1),                    FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
     3706            { /* =>      */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_NORM_MAX(0), FP32_0(1),        FP32_0(0), FP32_0(1), FP32_0(1),        FP32_NORM_MAX(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1) } },
     3707              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     3708              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3709              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    36893710              /*xcpt?    */ false, false },
    36903711          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     
    36933714              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    36943715              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    3695               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE,
     3716              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3717              /*xcpt?    */ false, true },
     3718          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3719            { /*src1     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3720            { /* =>      */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(0), FP32_INF(0),      FP32_INF(1),      FP32_INF(1),      FP32_INF(0) } },
     3721              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     3722              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     3723              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    36963724              /*xcpt?    */ false, true },
    36973725          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    36983726            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    36993727            { /* =>      */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3728              /*mxcsr:in */ X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
     3729              /*128:out  */ X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3730              /*256:out  */ X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     3731              /*xcpt?    */ false, false },
     3732          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3733            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     3734            { /* =>      */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    37003735              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
    3701               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    3702               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    3703               /*xcpt?    */ false, false },
    3704           { { /*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)                                } },
    3705             { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1),                            FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1)                                } },
    3706             { /* =>      */ { FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_NORM_MAX(1), FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_0(0),        FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1) } },
     3736              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3737              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     3738              /*xcpt?    */ false, false },
     3739          { { /*src2     */ { FP32_NORM_SAFE_INT_MIN(0),                            FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_SAFE_INT_MAX(0),                                FP32_NORM_SAFE_INT_MIN(0),                            FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1)                                } },
     3740            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(0),                                FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1)                                } },
     3741            { /* =>      */ { FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_0(0),        FP32_0(0), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_0(0),        FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1) } },
    37073742              /*mxcsr:in */ 0,
    37083743              /*128:out  */ X86_MXCSR_PE,
     
    37123747     * Normals.
    37133748     */
    3714     /*18*/{ { /*src2     */ { FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_NORM_MAX(0), FP32_0(0), FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_NORM_MAX(0), FP32_0(0), FP32_V(0, 0,        0x7d)/*0.25*/ } },
     3749    /*23*/{ { /*src2     */ { FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_NORM_MAX(0), FP32_0(0), FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_NORM_MAX(0), FP32_0(0), FP32_V(0, 0,        0x7d)/*0.25*/ } },
    37153750            { /*src1     */ { FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_NORM_MAX(1), FP32_0(0), FP32_V(0, 0,        0x7e)/*0.50*/, FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_NORM_MAX(1), FP32_0(0), FP32_V(0, 0,        0x7e)/*0.50*/ } },
    37163751            { /* =>      */ { FP32_V(0, 0x400000, 0x7f)/* 1.50*/, FP32_0(1),        FP32_0(0), FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_V(0, 0x400000, 0x7f)/* 1.50*/, FP32_0(1),        FP32_0(0), FP32_V(0, 0x400000, 0x7e)/*0.75*/ } },
     
    37713806    * Denormals.
    37723807    */
    3773     /*26*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)         } },
     3808    /*31*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)         } },
    37743809            { /*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) } },
    37753810            { /* =>      */ { 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) } },
    37763811              /*mxcsr:in */ 0,
    3777               /*128:out  */ X86_MXCSR_DE,
    3778               /*256:out  */ X86_MXCSR_DE,
     3812              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     3813              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     3814              /*xcpt?    */ true, true },
     3815#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */
     3816 /*--|32*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)         } },
     3817            { /*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) } },
     3818            { /* =>      */ { 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) } } /* result on HW (i7-10700) */,
     3819    // IEM: { /* =>      */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } } /* result on IEM */,
     3820              /*mxcsr:in */ X86_MXCSR_DM,
     3821              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     3822              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     3823              /*xcpt?    */ true, true },
     3824#endif /* TODO_X86_MXCSR_UE_IEM */
     3825 /*32|33*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)         } },
     3826            { /*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) } },
     3827            { /* =>      */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } },
     3828              /*mxcsr:in */ X86_MXCSR_UM,
     3829              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     3830              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    37793831              /*xcpt?    */ true, true },
    37803832          { { /*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) } },
    37813833            { /*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) } },
    37823834            { /* =>      */ { 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) } },
    3783               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    3784               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    3785               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     3835              /*mxcsr:in */ 0,
     3836              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     3837              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     3838              /*xcpt?    */ false, false },
     3839#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out */
     3840 /*--|35*/{ { /*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) } },
     3841            { /*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) } },
     3842            { /* =>      */ { 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) } },
     3843              /*mxcsr:in */ X86_MXCSR_DM,
     3844              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     3845              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     3846              /*xcpt?    */ false, false },
     3847#endif /* TODO_X86_MXCSR_UE_IEM */
     3848 /*34|36*/{ { /*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) } },
     3849            { /*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) } },
     3850            { /* =>      */ { 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) } },
     3851              /*mxcsr:in */ X86_MXCSR_UM,
     3852              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     3853              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    37863854              /*xcpt?    */ false, false },
    37873855          { { /*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) } },
     
    37933861              /*xcpt?    */ false, false },
    37943862          { { /*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) } },
    3795             { /*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) } },
    3796             { /* =>      */ { FP32_0(0),         FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } },
    3797               /*mxcsr:in */ 0,
    3798               /*128:out  */ X86_MXCSR_DE,
    3799               /*256:out  */ X86_MXCSR_DE,
     3863            { /*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) } },
     3864            { /* =>      */ { FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } },
     3865              /*mxcsr:in */ 0,
     3866              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     3867              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     3868              /*xcpt?    */ true, true },
     3869#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */
     3870 /*--|39*/{ { /*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) } },
     3871            { /*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) } },
     3872            { /* =>      */ { FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on HW (i7-10700) */,
     3873    // IEM: { /* =>      */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on IEM */,
     3874              /*mxcsr:in */ X86_MXCSR_DM,
     3875              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
     3876              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
     3877              /*xcpt?    */ true, true },
     3878#endif /* TODO_X86_MXCSR_UE_IEM */
     3879 /*37|40*/{ { /*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) } },
     3880            { /*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) } },
     3881            { /* =>      */ { FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     3882              /*mxcsr:in */ X86_MXCSR_UM,
     3883              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     3884              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    38003885              /*xcpt?    */ true, true },
    38013886          { { /*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) } },
     
    38173902     * Invalids.
    38183903     */
    3819     /*34*/ FP32_TABLE_D1_PS_INVALIDS
     3904 /*40|43*/ FP32_TABLE_D1_PS_INVALIDS
    38203905    /** @todo Underflow, Precision; Rounding; FZ etc. */
    38213906    };
     
    38673952    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    38683953    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    3869     return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     3954    return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    38703955                                        g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2));
    38713956}
     
    56025687            { /*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) } },
    56035688            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    5604               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    5605               /*128:out  */ X86_MXCSR_XCPT_MASK,
    5606               /*256:out  */ X86_MXCSR_XCPT_MASK,
    5607               /*xcpt?    */ false, false },
    5608           { { /*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) } },
    5609             { /*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) } },
    5610             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    56115689              /*mxcsr:in */ 0,
    56125690              /*128:out  */ 0,
     
    56375715            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } },
    56385716            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    5639               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_XCPT_FLAGS,
    5640               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_XCPT_FLAGS,
    5641               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_XCPT_FLAGS,
     5717              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     5718              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
     5719              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
    56425720              /*xcpt?    */ false, false },
    56435721    /*
    56445722     * Infinity.
    56455723     */
    5646     /* 6*/{ { /*src2     */ { FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1) } },
     5724    /* 5*/{ { /*src2     */ { FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1) } },
    56475725            { /*src1     */ { FP32_INF(1),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0) } },
    56485726            { /* =>      */ { FP32_INF(1),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0) } },
     
    56565734              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    56575735              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    5658               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    5659               /*xcpt?    */ false, false },
     5736              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE, /*xcpt?    */ false, false },
    56605737          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1)  } },
    56615738            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1)  } },
     
    56815758          { { /*src2     */ { FP32_INF(1), FP32_INF(0),  FP32_0(0), FP32_INF(0),  FP32_0(0), FP32_INF(1),  FP32_INF(1),  FP32_INF(0) } },
    56825759            { /*src1     */ { FP32_INF(0), FP32_INF(0),  FP32_0(1), FP32_INF(0),  FP32_0(0), FP32_INF(0),  FP32_INF(0),  FP32_INF(1) } },
    5683             { /* =>      */ { FP32_INF(0), FP32_QNAN(1), FP32_0(0), FP32_QNAN(1), FP32_0(0), FP32_QNAN(1), FP32_QNAN(1), FP32_INF(1) } },
     5760            { /* =>      */ { FP32_INF(0), FP32_QNAN(1), FP32_0(1), FP32_QNAN(1), FP32_0(0), FP32_INF(0),  FP32_INF(0), FP32_INF(1) } },
    56845761              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    56855762              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     
    56895766     * Overflow, Precision.
    56905767     */
    5691     /*12*/{ { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
     5768    /*11*/{ { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MIN(1), FP32_0(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
    56925769            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0) } },
    5693             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(0), FP32_0(0),        FP32_0(0)        } },
     5770            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0),} },
    56945771              /*mxcsr:in */ 0,
    56955772              /*128:out  */ 0,
     
    56995776            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } },
    57005777            { /* =>      */ { FP32_INF(1),      FP32_INF(1),      FP32_0(0), FP32_0(0), FP32_INF(1),      FP32_INF(0),      FP32_0(0), FP32_0(0)        } },
    5701               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM,
    5702               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
    5703               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     5778              /*mxcsr:in */ 0,
     5779              /*128:out  */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5780              /*256:out  */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5781              /*xcpt?    */ false, false },
     5782          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(0) } },
     5783            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(0) } },
     5784            { /* =>      */ { FP32_INF(1),      FP32_INF(1),      FP32_0(0), FP32_0(0), FP32_INF(1),      FP32_INF(0),      FP32_0(0), FP32_0(0)        } },
     5785              /*mxcsr:in */ X86_MXCSR_OM,
     5786              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5787              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    57045788              /*xcpt?    */ false, false },
    57055789          { { /*src2     */ { FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0) } },
    57065790            { /*src1     */ { FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1) } },
    57075791            { /* =>      */ { FP32_INF(1),      FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1)      } },
    5708               /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OM | X86_MXCSR_PM,
    5709               /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
    5710               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
    5711               /*xcpt?    */ false, false },
    5712           { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_0(0), FP32_NORM_MAX(0), FP32_0(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     5792              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     5793              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5794              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5795              /*xcpt?    */ false, false },
     5796          { { /*src2     */ { FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0) } },
     5797            { /*src1     */ { FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1) } },
     5798            { /* =>      */ { FP32_INF(1),      FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1)      } },
     5799              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     5800              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5801              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5802              /*xcpt?    */ false, false },
     5803#ifdef TODO_X86_MXCSR_PE_IEM_SSE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out(SSE-128); properly set in 128:out(AVX-128) */
     5804 /*--|16*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_0(0), FP32_NORM_MAX(0), FP32_0(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
    57135805            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1),                     FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
    57145806            { /* =>      */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(0),                     FP32_0(0),        FP32_0(0)        } },
    5715               /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM,
    5716               /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
    5717               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     5807              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     5808              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5809              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     5810              /*xcpt?    */ false, false },
     5811#endif /* TODO_X86_MXCSR_PE_IEM_SSE */
     5812 /*16|17*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_0(0), FP32_NORM_MAX(0), FP32_0(0), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     5813            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(1),                     FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     5814            { /* =>      */ { FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MIN(0),                     FP32_0(0),        FP32_0(0)        } },
     5815              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     5816              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5817              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    57185818              /*xcpt?    */ false, false },
    57195819          { { /*src2     */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_V(1, 0, 2)  } },
    57205820            { /*src1     */ { FP32_NORM_MIN(1),                     FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MIN(1) } },
    57215821            { /* =>      */ { FP32_NORM_MIN(0),                     FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MIN(0) } },
    5722               /*mxcsr:in */ X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM,
    5723               /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
    5724               /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_PE,
     5822              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     5823              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5824              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5825              /*xcpt?    */ false, false },
     5826          { { /*src2     */ { FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_V(1, 0, 2)  } },
     5827            { /*src1     */ { FP32_NORM_MIN(1),                     FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MIN(1) } },
     5828            { /* =>      */ { FP32_NORM_MIN(0),                     FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MIN(0) } },
     5829              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO,
     5830              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5831              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    57255832              /*xcpt?    */ false, false },
    57265833          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_NORM_MIN(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
    57275834            { /*src1     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
    57285835            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0),        FP32_0(0)        } },
    5729               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
    5730               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP,
    5731               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
    5732               /*xcpt?    */ false, false },
    5733           { { /*src2     */ { FP32_NORM_MIN(0), FP32_NORM_MIN(1),  FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
    5734             { /*src1     */ { FP32_NORM_MIN(0), FP32_NORM_MAX(1),  FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
    5735             { /* =>      */ { FP32_0(0),        FP32_0(0),         FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0)        } },
     5836              /*mxcsr:in */ X86_MXCSR_RC_UP,
     5837              /*128:out  */ X86_MXCSR_RC_UP,
     5838              /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     5839              /*xcpt?    */ false, false },
     5840          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_NORM_MIN(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
     5841            { /*src1     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
     5842            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0),        FP32_0(0)        } },
     5843              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_UP,
     5844              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_UP,
     5845              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5846              /*xcpt?    */ false, false },
     5847          { { /*src2     */ { FP32_NORM_MIN(0), FP32_NORM_MIN(1),                                     FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
     5848            { /*src1     */ { FP32_NORM_MIN(0), FP32_NORM_MAX(1),                                     FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0) } },
     5849            { /* =>      */ { FP32_0(0),        FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MAX), FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0),        FP32_0(0)        } },
    57365850              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    57375851              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    57385852              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    57395853              /*xcpt?    */ true, true },
    5740 #ifdef TODO_X86_MXCSR_PE_NATIVE
    5741           { { /*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) } },
    5742             { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1) } },
    5743             { /* =>      */ { FP32_0(0),                 FP32_0(0),        FP32_0(0), FP32_0(0),                 FP32_0(0),                 FP32_0(0),        FP32_0(0), FP32_0(0)                 } },
     5854#ifdef TODO_X86_MXCSR_PE_IEM_SSE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out(SSE-128) (but occasionally is set???); properly set in 128:out(AVX-128) */
     5855 /*--|23*/{ { /*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) } },
     5856            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),                                FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(0),                                FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1) } },
     5857            { /* =>      */ { FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_INF(1),      FP32_0(1), FP32_0(1),                 FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_INF(1),      FP32_0(1), FP32_0(1)                 } },
    57445858              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    5745               /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
     5859              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    57465860              /*256:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
    57475861              /*xcpt?    */ true, true },
    5748 #endif
     5862#endif /* TODO_X86_MXCSR_PE_IEM_SSE */
     5863 /*22|24*/{ { /*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) } },
     5864            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),                                FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1), FP32_NORM_SAFE_INT_MAX(0),                                FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1) } },
     5865            { /* =>      */ { FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_INF(1),      FP32_0(1), FP32_0(1),                 FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_INF(1),      FP32_0(1), FP32_0(1)                 } },
     5866              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_DOWN,
     5867              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5868              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     5869              /*xcpt?    */ true, true },
    57495870    /*
    57505871     * Normals.
    57515872     */
    5752     /*20*/{ { /*src2     */ { FP32_V(0, 0,        0x7d)/*0.25*/, FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_V(1, 0,        0x7e)/*-0.50*/, FP32_0(0), FP32_0(1), FP32_V(0, 0x400000, 0x7e)/* 0.75*/ } },
     5873 /*23|25*/{ { /*src2     */ { FP32_V(0, 0,        0x7d)/*0.25*/, FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_V(1, 0,        0x7e)/*-0.50*/, FP32_0(0), FP32_0(1), FP32_V(0, 0x400000, 0x7e)/* 0.75*/ } },
    57535874            { /*src1     */ { FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_0(0),        FP32_0(0), FP32_0(0), FP32_V(1, 0x400000, 0x7e)/*-0.75*/, FP32_0(0), FP32_0(1), FP32_V(0, 0,        0x7e)/* 0.50*/ } },
    57545875            { /* =>      */ { FP32_V(0, 0x400000, 0x7f)/*1.50*/, FP32_NORM_MAX(1), FP32_0(1), FP32_0(1), FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_0(1), FP32_0(1), FP32_V(1, 0,        0x7d)/*-0.25*/ } },
     
    57675888            { /*src1     */ { FP32_V(0, 0x669050, 0x93)/*1888778*/, FP32_V(0, 0x780000, 0x84)/*62*/, FP32_V(0, 0x253468, 0x93)/*1353357.00*/, FP32_0(0), FP32_V(1, 0x600000, 0x81)/* -7*/, FP32_V(1, 0x7c9000, 0x88)/*   -1010.25*/, FP32_1(0)                /*  1.00*/, FP32_0(0) } },
    57685889            { /* =>      */ { FP32_V(0, 0x1ea980, 0x8f)/*  81235*/, FP32_V(0, 0x5c0000, 0x84)/*55*/, FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_0(0), FP32_V(1, 0x780000, 0x84)/*-62*/, FP32_V(1, 0x253468, 0x93)/*-1353357.00*/, FP32_V(1, 0x524000, 0x86)/*210.25*/, FP32_0(0) } },
    5769               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_ZERO | X86_MXCSR_FZ,
    5770               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_ZERO | X86_MXCSR_FZ,
    5771               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_ZERO | X86_MXCSR_FZ,
     5890              /*mxcsr:in */ X86_MXCSR_RC_ZERO | X86_MXCSR_FZ,
     5891              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_FZ,
     5892              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_FZ,
    57725893              /*xcpt?    */ false, false },
    57735894          { { /*src2     */ { FP32_V(0, 0x6cb99c, 0x97)/*31028024*/, FP32_V(1, 0x3c614e, 0x96)/*-12345678*/, FP32_0(0), FP32_0(0), FP32_V(0, 0x712060, 0x92)/*  987654*/, FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_0(0), FP32_0(0) } },
     
    58095930     * Denormals.
    58105931     */
    5811     /*28*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)          } },
     5932 /*31|33*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)          } },
    58125933            { /*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) } },
    58135934            { /* =>      */ { 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) } },
    58145935              /*mxcsr:in */ 0,
    5815               /*128:out  */ X86_MXCSR_DE,
    5816               /*256:out  */ X86_MXCSR_DE,
     5936              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     5937              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     5938              /*xcpt?    */ true, true },
     5939#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */
     5940 /*--|34*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)          } },
     5941            { /*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) } },
     5942            { /* =>      */ { 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) } } /* result on HW (i7-10700) */,
     5943    // IEM: { /* =>      */ { FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } } /* result on IEM */,
     5944              /*mxcsr:in */ X86_MXCSR_DM,
     5945              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     5946              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     5947              /*xcpt?    */ true, true },
     5948#endif /* TODO_X86_MXCSR_UE_IEM */
     5949 /*32|35*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0)          } },
     5950            { /*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) } },
     5951            { /* =>      */ { FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(1) } },
     5952              /*mxcsr:in */ X86_MXCSR_UM,
     5953              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     5954              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    58175955              /*xcpt?    */ true, true },
    58185956          { { /*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) } },
    58195957            { /*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) } },
    58205958            { /* =>      */ { 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) } },
    5821               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    5822               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    5823               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     5959              /*mxcsr:in */ 0,
     5960              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     5961              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     5962              /*xcpt?    */ false, false },
     5963#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out */
     5964 /*--|37*/{ { /*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) } },
     5965            { /*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) } },
     5966            { /* =>      */ { 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) } },
     5967              /*mxcsr:in */ X86_MXCSR_DM,
     5968              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     5969              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     5970              /*xcpt?    */ false, false },
     5971#endif /* TODO_X86_MXCSR_UE_IEM */
     5972 /*34|38*/{ { /*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) } },
     5973            { /*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) } },
     5974            { /* =>      */ { 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) } },
     5975              /*mxcsr:in */ X86_MXCSR_UM,
     5976              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     5977              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    58245978              /*xcpt?    */ false, false },
    58255979          { { /*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) } },
     
    58345988            { /* =>      */ { FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } },
    58355989              /*mxcsr:in */ 0,
    5836               /*128:out  */ X86_MXCSR_DE,
    5837               /*256:out  */ X86_MXCSR_DE,
     5990              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     5991              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     5992              /*xcpt?    */ true, true },
     5993#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out *AND* different output values */
     5994 /*--|41*/{ { /*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) } },
     5995            { /*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) } },
     5996            { /* =>      */ { FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),          FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on HW (i7-10700) */,
     5997    // IEM: { /* =>      */ { FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } } /* result on IEM */,
     5998              /*mxcsr:in */ X86_MXCSR_DM,
     5999              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     6000              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     6001              /*xcpt?    */ true, true },
     6002#endif /* TODO_X86_MXCSR_UE_IEM */
     6003 /*37|42*/{ { /*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) } },
     6004            { /*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) } },
     6005            { /* =>      */ { FP32_DENORM_MAX(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     6006              /*mxcsr:in */ X86_MXCSR_UM,
     6007              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     6008              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    58386009              /*xcpt?    */ true, true },
    58396010          { { /*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) } },
    58406011            { /*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)          } },
    58416012            { /* =>      */ { FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0) } },
    5842               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    5843               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    5844               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     6013              /*mxcsr:in */ 0,
     6014              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     6015              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     6016              /*xcpt?    */ false, false },
     6017#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out */
     6018 /*--|44*/{ { /*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) } },
     6019            { /*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)          } },
     6020            { /* =>      */ { FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0) } },
     6021              /*mxcsr:in */ X86_MXCSR_DM,
     6022              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     6023              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     6024              /*xcpt?    */ false, false },
     6025#endif /* TODO_X86_MXCSR_UE_IEM */
     6026 /*39|45*/{ { /*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) } },
     6027            { /*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)          } },
     6028            { /* =>      */ { FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0), FP32_0(0), FP32_0(0), FP32_DENORM_MAX(0) } },
     6029              /*mxcsr:in */ X86_MXCSR_UM,
     6030              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     6031              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    58456032              /*xcpt?    */ false, false },
    58466033          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } },
     
    58556042     * Invalids.
    58566043     */
    5857     /*34*/ FP32_TABLE_D1_PS_INVALIDS
     6044 /*41|47*/ FP32_TABLE_D1_PS_INVALIDS
    58586045    /** @todo Underflow; Precision; Rounding; FZ etc. */
    58596046    };
     
    59056092    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    59066093    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    5907     return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     6094    return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    59086095                                        g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2));
    59096096}
     
    76487835            { /*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) } },
    76497836            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    7650               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    7651               /*128:out  */ X86_MXCSR_XCPT_MASK,
    7652               /*256:out  */ X86_MXCSR_XCPT_MASK,
    7653               /*xcpt?    */ false, false },
    7654           { { /*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) } },
    7655             { /*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) } },
    7656             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    76577837              /*mxcsr:in */ 0,
    76587838              /*128:out  */ 0,
     
    76977877     * Infinity.
    76987878     */
    7699     /* 7*/{ { /*src2     */ { FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     7879    /* 6*/{ { /*src2     */ { FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    77007880            { /*src1     */ { FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    77017881            { /* =>      */ { FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     
    77497929     * Overflow, Precision.
    77507930     */
    7751     /*14*/{ { /*src2     */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),  FP32_2(0)        } },
     7931    /*13*/{ { /*src2     */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),  FP32_2(0)        } },
    77527932            { /*src1     */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_2(0),         FP32_NORM_MAX(0) } },
    77537933            { /* =>      */ { FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_0(0),         FP32_0(0)        } },
    77547934              /*mxcsr:in */ 0,
    77557935              /*128:out  */ 0,
    7756               /*256:out  */ X86_MXCSR_OE,
     7936              /*256:out  */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
    77577937              /*xcpt?    */ false, true },
    7758 #ifdef TODO_X86_MXCSR_PE
    7759           { { /*src2     */ { FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     7938          { { /*src2     */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),  FP32_2(0)        } },
     7939            { /*src1     */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_2(0),         FP32_NORM_MAX(0) } },
     7940            { /* =>      */ { FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_INF(1),       FP32_INF(0),     } },
     7941              /*mxcsr:in */ X86_MXCSR_OM,
     7942              /*128:out  */ X86_MXCSR_OM,
     7943              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7944              /*xcpt?    */ false, true },
     7945#ifdef TODO_X86_MXCSR_PE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out */
     7946 /*--|15*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    77607947            { /*src1     */ { FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    7761             { /* =>      */ { FP32_0(0),        FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_0(0),               FP32_0(0) } },
    7762               /*mxcsr:in */ 0,
    7763               /*128:out  */ X86_MXCSR_OE | X86_MXCSR_PE,
    7764               /*256:out  */ X86_MXCSR_OE | X86_MXCSR_PE,
    7765               /*xcpt?    */ true, true },
    7766 #endif
    7767           { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_NORM_MAX(0) } },
     7948            { /* =>      */ { FP32_INF(0),      FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_INF(0),      FP32_INF(0)      } },
     7949              /*mxcsr:in */ 0,
     7950              /*128:out  */ X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7951              /*256:out  */ X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7952              /*xcpt?    */ true, true },
     7953#endif /* TODO_X86_MXCSR_PE_IEM */
     7954 /*15|16*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     7955            { /*src1     */ { FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     7956            { /* =>      */ { FP32_INF(0),      FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_INF(0),      FP32_INF(0)      } },
     7957              /*mxcsr:in */ X86_MXCSR_OM,
     7958              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7959              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7960              /*xcpt?    */ true, true },
     7961#ifdef TODO_X86_MXCSR_PE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out */
     7962 /*--|17*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_NORM_MAX(0) } },
    77687963            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_1(1), FP32_0(1), FP32_NORM_MAX(0) } },
    77697964            { /* =>      */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_1(0), FP32_0(1), FP32_NORM_MAX(0) } },
    7770               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
    7771               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    7772               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    7773               /*xcpt?    */ false, false },
    7774           { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_V1(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     7965              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     7966              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7967              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7968              /*xcpt?    */ false, false },
     7969#endif /* TODO_X86_MXCSR_PE_IEM */
     7970 /*16|18*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_1(1), FP32_0(0), FP32_NORM_MAX(0) } },
     7971            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_1(1), FP32_0(1), FP32_NORM_MAX(0) } },
     7972            { /* =>      */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_1(0), FP32_0(1), FP32_NORM_MAX(0) } },
     7973              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO,
     7974              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7975              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     7976              /*xcpt?    */ false, false },
     7977#ifdef TODO_X86_MXCSR_PE_IEM_SSE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out -- in complex circumstances: */
     7978                                 /** @todo PE is not set if any of the following are true on IEM: (1) !OM && !UM; (2) !OM && SSE; (3) !UM && SSE */
     7979                                 /** @todo PE is always set on HW (i7-10700), on both SSE & AVX, with any combination of OM & UM states */
     7980 /*--|19*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_V1(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
    77757981            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_1(0),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } },
    7776             { /* =>      */ { FP32_INF(0), FP32_0(0),        FP32_NORM_V1(0), FP32_INF(0),      FP32_INF(0),      FP32_0(1),        FP32_0(1),        FP32_INF(1) } },
    7777               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM,
    7778               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
    7779               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
    7780               /*xcpt?    */ false, false },
    7781           { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     7982            { /* =>      */ { FP32_INF(0),      FP32_0(0),        FP32_NORM_V1(0), FP32_INF(0),      FP32_INF(0),      FP32_0(1),        FP32_0(1),        FP32_INF(1)      } },
     7983              /*mxcsr:in */ 0,
     7984              /*128:out  */ X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
     7985              /*256:out  */ X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
     7986              /*xcpt?    */ false, false },
     7987#endif /* TODO_X86_MXCSR_PE_IEM_SSE */
     7988 /*17|20*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_V1(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     7989            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_1(0),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } },
     7990            { /* =>      */ { FP32_INF(0),      FP32_0(0),        FP32_NORM_V1(0), FP32_INF(0),      FP32_INF(0),      FP32_0(1),        FP32_0(1),        FP32_INF(1)      } },
     7991              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM,
     7992              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     7993              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     7994              /*xcpt?    */ false, false },
     7995#ifdef TODO_X86_MXCSR_PE_IEM_SSE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out -- in complex circumstances: */
     7996                                 /** @todo PE is not set if any of the following are true on IEM: (1) !OM && !UM; (2) !OM && SSE; (3) !UM && SSE */
     7997                                 /** @todo PE is always set on HW (i7-10700), on both SSE & AVX, with any combination of OM & UM states */
     7998 /*--|21*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
    77827999            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_0(0),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } },
    77838000            { /* =>      */ { FP32_NORM_MAX(0), FP32_0(1),        FP32_0(0),       FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(1),        FP32_0(1),        FP32_INF(1)      } },
    7784               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    7785               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
    7786               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
    7787               /*xcpt?    */ false, false },
    7788           { { /*src2     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_2(0), FP32_1(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1) } },
     8001              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     8002              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
     8003              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
     8004              /*xcpt?    */ false, false },
     8005#endif /* TODO_X86_MXCSR_PE_IEM_SSE */
     8006 /*18|22*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     8007            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_0(0),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(1), FP32_NORM_MIN(0), FP32_NORM_MAX(1) } },
     8008            { /* =>      */ { FP32_NORM_MAX(0), FP32_0(1),        FP32_0(0),       FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(1),        FP32_0(1),        FP32_INF(1)      } },
     8009              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     8010              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     8011              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     8012              /*xcpt?    */ false, false },
     8013#ifdef TODO_X86_MXCSR_PE_IEM_SSE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out -- in complex circumstances: */
     8014                                 /** @todo PE is not set if any of the following are true on IEM: (1) !OM && !UM; (2) !OM && SSE; (3) !UM && SSE */
     8015                                 /** @todo PE is always set on HW (i7-10700), on both SSE & AVX, with any combination of OM & UM states */
     8016 /*--|23*/{ { /*src2     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_2(0), FP32_1(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1) } },
    77898017            { /*src1     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_1(1), FP32_2(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1) } },
    77908018            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(0), FP32_INF(1),      FP32_2(1), FP32_2(0), FP32_INF(1),      FP32_NORM_MAX(0), FP32_0(0)        } },
    7791               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    7792               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
    7793               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
    7794               /*xcpt?    */ false, false },
    7795 #ifdef TODO_X86_MXCSR_PE
    7796           { { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     8019              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     8020              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
     8021              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE,
     8022              /*xcpt?    */ false, false },
     8023#endif /* TODO_X86_MXCSR_PE_IEM_SSE */
     8024 /*19|24*/{ { /*src2     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_2(0), FP32_1(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1) } },
     8025            { /*src1     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_1(1), FP32_2(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1) } },
     8026            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(0), FP32_INF(1),      FP32_2(1), FP32_2(0), FP32_INF(1),      FP32_NORM_MAX(0), FP32_0(0)        } },
     8027              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     8028              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     8029              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     8030              /*xcpt?    */ false, false },
     8031#ifdef TODO_X86_MXCSR_PE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out */
     8032 /*--|25*/{ { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    77978033            { /*src1     */ { FP32_NORM_V7(0), FP32_1(1),       FP32_NORM_V4(0), FP32_1(1),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    77988034            { /* =>      */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0),      FP32_INF(0),      FP32_INF(0),      FP32_INF(0)      } },
    77998035              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    78008036              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    7801               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
     8037              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    78028038              /*xcpt?    */ false, true },
    7803 #endif
    7804           { { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     8039#endif /* TODO_X86_MXCSR_PE_IEM */
     8040 /*20|26*/{ { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     8041            { /*src1     */ { FP32_NORM_V7(0), FP32_1(1),       FP32_NORM_V4(0), FP32_1(1),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     8042            { /* =>      */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0),      FP32_INF(0),      FP32_INF(0),      FP32_INF(0)      } },
     8043              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     8044              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     8045              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     8046              /*xcpt?    */ false, true },
     8047#ifdef TODO_X86_MXCSR_PE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out */
     8048 /*--|27*/{ { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     8049            { /*src1     */ { FP32_NORM_V7(0), FP32_1(1),       FP32_NORM_V4(0), FP32_1(1),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     8050            { /* =>      */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0),      FP32_INF(0),      FP32_INF(0),      FP32_INF(0)      } },
     8051              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     8052              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     8053              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     8054              /*xcpt?    */ false, false },
     8055#endif /* TODO_X86_MXCSR_PE_IEM */
     8056 /*21|28*/{ { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    78058057            { /*src1     */ { FP32_NORM_V7(0), FP32_1(1),       FP32_NORM_V4(0), FP32_1(1),       FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    78068058            { /* =>      */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0),      FP32_INF(0),      FP32_INF(0),      FP32_INF(0)      } },
    78078059              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
    78088060              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
    7809               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
     8061              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    78108062              /*xcpt?    */ false, false },
    78118063    /** @todo More Overflow/Precision. */
     
    78138065     * Normals.
    78148066     */
    7815     /*22*/{ { /*src2     */ { FP32_V(0, 0x600000, 0x7f)/*1.7500*/, FP32_NORM_V0(0), FP32_NORM_V1(0), FP32_NORM_V2(1), FP32_1(1),       FP32_1(0),       FP32_1(1),       FP32_NORM_V6(1) } },
     8067 /*22|29*/{ { /*src2     */ { FP32_V(0, 0x600000, 0x7f)/*1.7500*/, FP32_NORM_V0(0), FP32_NORM_V1(0), FP32_NORM_V2(1), FP32_1(1),       FP32_1(0),       FP32_1(1),       FP32_NORM_V6(1) } },
    78168068            { /*src1     */ { FP32_V(0, 0,        0x7d)/*0.2500*/, FP32_1(0),       FP32_1(1),       FP32_0(0),       FP32_NORM_V0(1), FP32_NORM_V3(0), FP32_NORM_V4(0), FP32_1(0)       } },
    78178069            { /* =>      */ { FP32_V(0, 0x600000, 0x7d)/*0.4375*/, FP32_NORM_V0(0), FP32_NORM_V1(1), FP32_0(1),       FP32_NORM_V0(0), FP32_NORM_V3(0), FP32_NORM_V4(1), FP32_NORM_V6(1) } },
     
    78458097    * Denormals.
    78468098    */
    7847     /*26*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
     8099 /*26|33*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    78488100            { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    78498101            { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0)          } },
     
    78528104              /*256:out  */ X86_MXCSR_DE,
    78538105              /*xcpt?    */ true, true },
    7854           { { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    7855             { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    7856             { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0)          } },
    7857               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    7858               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    7859               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    7860               /*xcpt?    */ false, false },
    78618106          { { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
    78628107            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    78638108            { /* =>      */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } },
    7864               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    7865               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    7866               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     8109              /*mxcsr:in */ 0,
     8110              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     8111              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     8112              /*xcpt?    */ false, false },
     8113#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out */
     8114 /*--|35*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     8115            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
     8116            { /* =>      */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } },
     8117              /*mxcsr:in */ X86_MXCSR_DM,
     8118              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     8119              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     8120              /*xcpt?    */ false, false },
     8121#endif /* TODO_X86_MXCSR_UE_IEM */
     8122 /*28|36*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     8123            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
     8124            { /* =>      */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } },
     8125              /*mxcsr:in */ X86_MXCSR_UM,
     8126              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     8127              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    78678128              /*xcpt?    */ false, false },
    78688129          { { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
     
    78878148              /*256:out  */ X86_MXCSR_DE,
    78888149              /*xcpt?    */ true, true },
    7889           { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    7890             { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
    7891             { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0)          } },
    7892               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    7893               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    7894               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    7895               /*xcpt?    */ false, false },
    78968150          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
    78978151            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
    78988152            { /* =>      */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } },
    7899               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    7900               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    7901               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     8153              /*mxcsr:in */ 0,
     8154              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     8155              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     8156              /*xcpt?    */ false, false },
     8157#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out */
     8158 /*--|41*/{ { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     8159            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
     8160            { /* =>      */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } },
     8161              /*mxcsr:in */ X86_MXCSR_DM,
     8162              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     8163              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     8164              /*xcpt?    */ false, false },
     8165#endif /* TODO_X86_MXCSR_UE_IEM */
     8166 /*33|42*/{ { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     8167            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
     8168            { /* =>      */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } },
     8169              /*mxcsr:in */ X86_MXCSR_UM,
     8170              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     8171              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    79028172              /*xcpt?    */ false, false },
    79038173          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
     
    79478217     * Invalids.
    79488218     */
    7949     /*40*/ FP32_TABLE_D1_PS_INVALIDS
     8219 /*40|49*/ FP32_TABLE_D1_PS_INVALIDS
    79508220    /** @todo Underflow, Precision; Rounding; FZ etc. */
    79518221    };
     
    79978267    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    79988268    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    7999     return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     8269    return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    80008270                                        g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2));
    80018271}
     
    89199189            { /*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) } },
    89209190            { /* =>      */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } },
    8921               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    8922               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    8923               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    8924               /*xcpt?    */ false, false },
    8925           { { /*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) } },
    8926             { /*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) } },
    8927             { /* =>      */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } },
    89289191              /*mxcsr:in */ 0,
    89299192              /*128:out  */ X86_MXCSR_IE,
     
    89399202          { { /*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) } },
    89409203            { /*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) } },
    8941             { /* =>      */ { FP32_QNAN(1), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(0), FP32_QNAN(1) } },
     9204            { /* =>      */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } },
    89429205              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    89439206              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     
    89689231     * Infinity.
    89699232     */
    8970     /* 7*/{ { /*src2     */ { FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     9233    /* 6*/{ { /*src2     */ { FP32_INF(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    89719234            { /*src1     */ { FP32_INF(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    89729235            { /* =>      */ { FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1), FP32_QNAN(1) } },
     
    90209283     * Overflow, Precision.
    90219284     */
     9285#ifdef TODO_X86_MXCSR_PE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 256:out */
     9286 /*--|13*/{ { /*src2     */ { FP32_1(0), FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),       FP32_2(0)                                            } },
     9287            { /*src1     */ { FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_2(0),              FP32_NORM_MAX(0)                                     } },
     9288            { /* =>      */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_V(1, 0x400000, 0), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_NORM_MAX - 1) } },
     9289              /*mxcsr:in */ 0,
     9290              /*128:out  */ 0,
     9291              /*256:out  */ X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_UM_FIXED,
     9292              /*xcpt?    */ false, true },
     9293#endif /* TODO_X86_MXCSR_PE_IEM */
     9294 /*13|14*/{ { /*src2     */ { FP32_1(0), FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),       FP32_2(0)                                            } },
     9295            { /*src1     */ { FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_2(0),              FP32_NORM_MAX(0)                                     } },
     9296            { /* =>      */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_V(1, 0x400000, 0), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_NORM_MAX - 1) } },
     9297              /*mxcsr:in */ X86_MXCSR_UM,
     9298              /*128:out  */ X86_MXCSR_UM,
     9299              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_UM_FIXED,
     9300              /*xcpt?    */ false, true },
    90229301#ifdef TODO_X86_MXCSR_PE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 256:out */
    9023  /*--|14*/{ { /*src2     */ { FP32_1(0), FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),  FP32_2(0)        } },
    9024             { /*src1     */ { FP32_0(0), FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_2(0),         FP32_NORM_MAX(0) } },
    9025             { /* =>      */ { FP32_0(0), FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_2(0),         FP32_NORM_MAX(0) } },
    9026               /*mxcsr:in */ 0,
    9027               /*128:out  */ 0,
    9028               /*256:out  */ X86_MXCSR_UE | X86_MXCSR_PE,
    9029               /*xcpt?    */ false, true },
    9030 #endif /* TODO_X86_MXCSR_PE */
    9031  /*14|15*/{ { /*src2     */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),     FP32_NORM_MAX(0) } },
     9302 /*--|15*/{ { /*src2     */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),     FP32_NORM_MAX(0) } },
    90329303            { /*src1     */ { FP32_NORM_MAX(0),         FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_1(0),            FP32_0(0)        } },
    90339304            { /* =>      */ { FP32_INF(0),              FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_V(1,0x200000,0), FP32_0(0)        } },
    9034               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    9035               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_OE | X86_MXCSR_PE,
    9036               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE,
    9037               /*xcpt?    */ false, false },
    9038 #ifdef TODO_X86_MXCSR_PE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 256:out */
    9039  /*--|16*/{ { /*src2     */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),     FP32_NORM_MAX(0) } },
     9305              /*mxcsr:in */ 0,
     9306              /*128:out  */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     9307              /*256:out  */ X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     9308              /*xcpt?    */ false, false },
     9309#endif /* TODO_X86_MXCSR_PE */
     9310 /*14|16*/{ { /*src2     */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),     FP32_NORM_MAX(0) } },
    90409311            { /*src1     */ { FP32_NORM_MAX(0),         FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_1(0),            FP32_0(0)        } },
    90419312            { /* =>      */ { FP32_INF(0),              FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_V(1,0x200000,0), FP32_0(0)        } },
    9042               /*mxcsr:in */ 0,
    9043               /*128:out  */ X86_MXCSR_OE,
    9044               /*256:out  */ X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE,
    9045               /*xcpt?    */ true, true },
    9046 #endif /* TODO_X86_MXCSR_PE */
    9047  /*15|17*/{ { /*src2     */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),     FP32_NORM_MAX(0) } },
     9313              /*mxcsr:in */ X86_MXCSR_UM,
     9314              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     9315              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     9316              /*xcpt?    */ false, false },
     9317          { { /*src2     */ { FP32_V(0,0,0x7e)/*0.50*/, FP32_1(1), FP32_1(0), FP32_1(0), FP32_NORM_MAX(1), FP32_1(0), FP32_NORM_MAX(1),     FP32_NORM_MAX(0) } },
    90489318            { /*src1     */ { FP32_NORM_MAX(0),         FP32_1(0), FP32_0(0), FP32_1(0), FP32_0(0),        FP32_1(0), FP32_1(0),            FP32_0(0)        } },
    90499319            { /* =>      */ { FP32_INF(0),              FP32_1(1), FP32_0(0), FP32_1(0), FP32_0(1),        FP32_1(0), FP32_V(1,0x200000,0), FP32_0(0)        } },
    90509320              /*mxcsr:in */ X86_MXCSR_OM,
    9051               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE,
    9052               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE,
    9053               /*xcpt?    */ true, true },
     9321              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     9322              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED,
     9323              /*xcpt?    */ false, false },
     9324#ifdef TODO_X86_MXCSR_PE /** @todo THIS FAILS ON IEM: X86_MXCSR_PE not set in 128:out or 256:out */
     9325 /*--|18*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_1(0), FP32_1(0), FP32_NORM_MAX(0), FP32_1(1), FP32_1(0), FP32_NORM_MIN(0) } },
     9326            { /*src1     */ { FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_NORM_MIN(1), FP32_1(0), FP32_1(1), FP32_NORM_MAX(0) } },
     9327            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_0(1),        FP32_1(1), FP32_1(1), FP32_NORM_MAX(0) } },
     9328              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     9329              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     9330              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED | BS3_MXCSR_UM_FIXED,
     9331              /*xcpt?    */ false, false },
     9332#endif /* TODO_X86_MXCSR_PE */
     9333 /*16|19*/{ { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_1(0), FP32_1(0), FP32_NORM_MAX(0), FP32_1(1), FP32_1(0), FP32_NORM_MIN(0) } },
     9334            { /*src1     */ { FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_NORM_MIN(1), FP32_1(0), FP32_1(1), FP32_NORM_MAX(0) } },
     9335            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_0(1),        FP32_1(1), FP32_1(1), FP32_NORM_MAX(0) } },
     9336              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO,
     9337              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED,
     9338              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_OM_FIXED,
     9339              /*xcpt?    */ false, false },
    90549340          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(0), FP32_1(0), FP32_1(0), FP32_NORM_MAX(0), FP32_1(1), FP32_1(0), FP32_NORM_MIN(0) } },
    90559341            { /*src1     */ { FP32_NORM_MIN(0), FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_NORM_MIN(1), FP32_1(0), FP32_1(1), FP32_NORM_MAX(0) } },
    90569342            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(1), FP32_1(0), FP32_1(0), FP32_0(1),        FP32_1(1), FP32_1(1), FP32_NORM_MAX(0) } },
    9057               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_UM | X86_MXCSR_RC_ZERO,
    9058               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_UM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE,
    9059               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_UM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE,
     9343              /*mxcsr:in */ X86_MXCSR_UM | X86_MXCSR_RC_ZERO,
     9344              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
     9345              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
    90609346              /*xcpt?    */ false, false },
    90619347          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1), FP32_NORM_V1(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MIN(0), FP32_NORM_MIN(1), FP32_NORM_MAX(0) } },
     
    90879373              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    90889374              /*xcpt?    */ false, false },
    9089           { { /*src2     */ { FP32_1(0),       FP32_NORM_V2(1), FP32_1(1),       FP32_NORM_V6(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    9090             { /*src1     */ { FP32_NORM_V7(0), FP32_NORM_V2(0), FP32_NORM_V4(1), FP32_NORM_V6(1), FP32_INF(0),      FP32_INF(0),      FP32_INF(0),      FP32_INF(0)      } },
    9091             { /* =>      */ { FP32_NORM_V7(0), FP32_1(1),       FP32_NORM_V4(0), FP32_1(1),       FP32_INF(0),      FP32_INF(1),      FP32_INF(1),      FP32_INF(0)      } },
    9092               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
    9093               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
    9094               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
    9095               /*xcpt?    */ false, false },
    90969375    /** @todo More Overflow/Precision. */
    90979376    /*
    90989377     * Normals.
    90999378     */
    9100  /*22|24*/{ { /*src2     */ { FP32_V(0, 0x600000, 0x7f)/*1.7500*/, FP32_NORM_V0(0), FP32_NORM_V1(0), FP32_NORM_V2(1), FP32_1(1),       FP32_1(0),       FP32_1(1),       FP32_NORM_V6(1) } },
     9379 /*22|25*/{ { /*src2     */ { FP32_V(0, 0x600000, 0x7f)/*1.7500*/, FP32_NORM_V0(0), FP32_NORM_V1(0), FP32_NORM_V2(1), FP32_1(1),       FP32_1(0),       FP32_1(1),       FP32_NORM_V6(1) } },
    91019380            { /*src1     */ { FP32_V(0, 0x600000, 0x7d)/*0.4375*/, FP32_NORM_V0(0), FP32_NORM_V1(1), FP32_0(1),       FP32_NORM_V0(0), FP32_NORM_V3(0), FP32_NORM_V4(1), FP32_NORM_V6(1) } },
    91029381            { /* =>      */ { FP32_V(0, 0,        0x7d)/*0.2500*/, FP32_1(0),       FP32_1(1),       FP32_0(0),       FP32_NORM_V0(1), FP32_NORM_V3(0), FP32_NORM_V4(0), FP32_1(0)       } },
     
    91309409    * Denormals.
    91319410    */
    9132  /*26|28*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
     9411 /*26|29*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    91339412            { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    91349413            { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_INF(0),        FP32_INF(1),        FP32_INF(1),        FP32_INF(0)          } },
     
    91379416              /*256:out  */ X86_MXCSR_DE | X86_MXCSR_ZE,
    91389417              /*xcpt?    */ true, true },
    9139           { { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    9140             { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    9141             { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_INF(0),        FP32_INF(1),        FP32_INF(1),        FP32_INF(0)        } },
    9142               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    9143               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    9144               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE | X86_MXCSR_ZE,
    9145               /*xcpt?    */ false, false },
    9146           { { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     9418#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 256:out */
     9419 /*--|30*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
    91479420            { /*src1     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } },
    91489421            { /* =>      */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    9149               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    9150               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    9151               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     9422              /*mxcsr:in */ 0,
     9423              /*128:out  */ X86_MXCSR_DE,
     9424              /*256:out  */ X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
     9425              /*xcpt?    */ false, false },
     9426#endif /* TODO_X86_MXCSR_UE_IEM */
     9427 /*27|31*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     9428            { /*src1     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0) } },
     9429            { /* =>      */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
     9430              /*mxcsr:in */ X86_MXCSR_UM,
     9431              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE,
     9432              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    91529433              /*xcpt?    */ false, false },
    91539434          { { /*src2     */ { FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
     
    91679448          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    91689449            { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
    9169             { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_QNAN(1),       FP32_QNAN(1),       FP32_QNAN(1),       FP32_QNAN(1)       } },
     9450            { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_INF(0),        FP32_INF(1),        FP32_INF(1),        FP32_INF(0)        } },
    91709451              /*mxcsr:in */ 0,
    91719452              /*128:out  */ X86_MXCSR_DE,
    91729453              /*256:out  */ X86_MXCSR_DE | X86_MXCSR_ZE,
    91739454              /*xcpt?    */ true, true },
    9174           { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
    9175             { /*src1     */ { FP32_0(0),          FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
    9176             { /* =>      */ { FP32_0(0),          FP32_0(1),          FP32_0(0),          FP32_0(1),          FP32_INF(0),        FP32_INF(1),        FP32_INF(1),        FP32_INF(0)        } },
    9177               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    9178               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    9179               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE | X86_MXCSR_ZE,
    9180               /*xcpt?    */ false, false },
    91819455          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
    91829456            { /* =>      */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } },
    91839457            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
    9184               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    9185               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    9186               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     9458              /*mxcsr:in */ 0,
     9459              /*128:out  */ X86_MXCSR_DE,
     9460              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     9461              /*xcpt?    */ false, false },
     9462#ifdef TODO_X86_MXCSR_UE_IEM /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 256:out */
     9463 /*--|36*/{ { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     9464            { /* =>      */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } },
     9465            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
     9466              /*mxcsr:in */ X86_MXCSR_DM,
     9467              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE,
     9468              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     9469              /*xcpt?    */ false, false },
     9470#endif /* TODO_X86_MXCSR_UE_IEM */
     9471 /*32|37*/{ { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_1(0),          FP32_1(0),          FP32_1(1),          FP32_1(1)          } },
     9472            { /* =>      */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0) } },
     9473            { /*src1     */ { FP32_1(0),          FP32_1(1),          FP32_1(0),          FP32_1(1),          FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1) } },
     9474              /*mxcsr:in */ X86_MXCSR_UM,
     9475              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE,
     9476              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    91879477              /*xcpt?    */ false, false },
    91889478          { { /*src2     */ { FP32_DENORM_MIN(0), FP32_DENORM_MIN(0), FP32_DENORM_MIN(1), FP32_DENORM_MIN(1), FP32_0(0),          FP32_0(0),          FP32_0(1),          FP32_0(1)          } },
     
    92329522     * Invalids.
    92339523     */
    9234  /*40|42*/ FP32_TABLE_D1_PS_INVALIDS
     9524 /*39|44*/ FP32_TABLE_D1_PS_INVALIDS
    92359525    /** @todo Underflow, Precision; Rounding; FZ etc. */
    92369526    };
     
    92829572    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    92839573    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    9284     return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     9574    return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    92859575                                        g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2));
    92869576}
     
    1036810658            { /*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) } },
    1036910659            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    10370               /*mxcsr:in */ 0,
    10371               /*128:out  */ 0,
    10372               /*256:out  */ 0,
    10373               /*xcpt?    */ false, false },
    10374           { { /*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) } },
    10375             { /*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) } },
    10376             { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    1037710660              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    1037810661              /*128:out  */ X86_MXCSR_RC_ZERO,
     
    1041010693            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } },
    1041110694            { /* =>      */ { FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(1) } },
    10412               /*mxcsr:in */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_DOWN,
    10413               /*128:out  */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_DOWN,
    10414               /*256:out  */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_DOWN,
     10695              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     10696              /*128:out  */ X86_MXCSR_RC_DOWN,
     10697              /*256:out  */ X86_MXCSR_RC_DOWN,
    1041510698              /*xcpt?    */ false, false },
    1041610699          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1) } },
    1041710700            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(1) } },
    1041810701            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1) } },
    10419               /*mxcsr:in */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_ZERO,
    10420               /*128:out  */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_ZERO,
    10421               /*256:out  */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_RC_ZERO,
     10702              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     10703              /*128:out  */ X86_MXCSR_RC_ZERO,
     10704              /*256:out  */ X86_MXCSR_RC_ZERO,
    1042210705              /*xcpt?    */ false, false },
    1042310706    /*
    1042410707     * Infinity.
    1042510708     */
    10426     /* 9*/{ { /*src2     */ { FP32_INF(0),  FP32_INF(0), FP32_INF(0), FP32_INF(0),  FP32_INF(1), FP32_INF(1),  FP32_INF(1),  FP32_INF(1) } },
     10709    /* 8*/{ { /*src2     */ { FP32_INF(0),  FP32_INF(0), FP32_INF(0), FP32_INF(0),  FP32_INF(1), FP32_INF(1),  FP32_INF(1),  FP32_INF(1) } },
    1042710710            { /*src1     */ { FP32_INF(0),  FP32_INF(0), FP32_INF(1), FP32_INF(1),  FP32_INF(0), FP32_INF(0),  FP32_INF(1),  FP32_INF(1) } },
    1042810711            { /* =>      */ { FP32_QNAN(1), FP32_INF(0), FP32_INF(1), FP32_QNAN(1), FP32_INF(0), FP32_QNAN(1), FP32_QNAN(1), FP32_INF(1) } },
     
    1048310766     * Overflow, Precision.
    1048410767     */
    10485     /*17*/{ { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10768    /*16*/{ { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    1048610769            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    1048710770            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(0), FP32_0(0),        FP32_INF(0)      } },
    1048810771              /*mxcsr:in */ 0,
    1048910772              /*128:out  */ 0,
    10490               /*256:out  */ X86_MXCSR_OE,
     10773              /*256:out  */ X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10774              /*xcpt?    */ false, true },
     10775          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10776            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10777            { /* =>      */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_0(0), FP32_0(0),        FP32_INF(0)      } },
     10778              /*mxcsr:in */ X86_MXCSR_OM,
     10779              /*128:out  */ X86_MXCSR_OM,
     10780              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    1049110781              /*xcpt?    */ false, true },
    1049210782          { { /*src2     */ { FP32_NORM_MIN(0),                                     FP32_NORM_MAX(0), FP32_1(0), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_1(0), FP32_0(0),       FP32_NORM_MAX(0) } },
     
    1050010790            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                     FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MIN(0),                                     FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
    1050110791            { /* =>      */ { FP32_0(0),        FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_0(0),       FP32_INF(0),      FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MAX), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0)      } },
    10502               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    10503               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
    10504               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
     10792              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     10793              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10794              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
     10795              /*xcpt?    */ false, false },
     10796          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                     FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MAX(0),                                     FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
     10797            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MIN(1),                     FP32_NORM_V3(0), FP32_NORM_MAX(0), FP32_NORM_MIN(0),                                     FP32_NORM_MIN(1),                    FP32_0(0), FP32_NORM_MAX(0) } },
     10798            { /* =>      */ { FP32_0(0),        FP32_V(1, 0, FP32_EXP_NORM_MIN + 1),  FP32_0(0),       FP32_INF(0),      FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MAX), FP32_V(1, 0, FP32_EXP_NORM_MIN + 1), FP32_0(0), FP32_INF(0)      } },
     10799              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     10800              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     10801              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
    1050510802              /*xcpt?    */ false, false },
    1050610803          { { /*src2     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
    1050710804            { /*src1     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
    1050810805            { /* =>      */ { FP32_0(1),        FP32_NORM_MAX(0), FP32_INF(1),      FP32_0(0), FP32_0(1), FP32_0(1),        FP32_0(1),        FP32_V(1, 0, FP32_EXP_NORM_MIN + 1) } },
    10509               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    10510               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
    10511               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
     10806              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     10807              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10808              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10809              /*xcpt?    */ false, false },
     10810          { { /*src2     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
     10811            { /*src1     */ { FP32_NORM_MIN(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MIN(1)                    } },
     10812            { /* =>      */ { FP32_0(1),        FP32_NORM_MAX(0), FP32_INF(1),      FP32_0(0), FP32_0(1), FP32_0(1),        FP32_0(1),        FP32_V(1, 0, FP32_EXP_NORM_MIN + 1) } },
     10813              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     10814              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     10815              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    1051210816              /*xcpt?    */ false, false },
    1051310817          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     
    1051610820              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    1051710821              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    10518               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE,
     10822              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10823              /*xcpt?    */ false, true },
     10824          { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(1), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10825            { /*src1     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10826            { /* =>      */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0),        FP32_INF(1),      FP32_0(0),        FP32_INF(0)      } },
     10827              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     10828              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
     10829              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
    1051910830              /*xcpt?    */ false, true },
    1052010831          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    1052110832            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
    1052210833            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0),        FP32_NORM_MAX(0), FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0),        FP32_NORM_MAX(0) } },
    10523               /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
    10524               /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    10525               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    10526               /*xcpt?    */ false, false },
    10527           { { /*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)                                } },
    10528             { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1),                            FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1)                                } },
    10529             { /* =>      */ { FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_NORM_MAX(1), FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_0(0),        FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1) } },
     10834              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     10835              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10836              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_OE | BS3_MXCSR_OM_FIXED,
     10837              /*xcpt?    */ false, false },
     10838          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10839            { /*src1     */ { FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0), FP32_NORM_MAX(0), FP32_NORM_MAX(1), FP32_NORM_MAX(1), FP32_NORM_MAX(0) } },
     10840            { /* =>      */ { FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0),        FP32_NORM_MAX(0), FP32_0(0),        FP32_NORM_MAX(1), FP32_0(0),        FP32_NORM_MAX(0) } },
     10841              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO,
     10842              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     10843              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE | BS3_MXCSR_OM_FIXED,
     10844              /*xcpt?    */ false, false },
     10845          { { /*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)                                } },
     10846            { /*src1     */ { FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1),                                FP32_NORM_SAFE_INT_MAX(0),                            FP32_NORM_MAX(1), FP32_0(0), FP32_NORM_SAFE_INT_MAX(1)                                } },
     10847            { /* =>      */ { FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_0(0),        FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1), FP32_V(0, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX), FP32_0(0),        FP32_0(0), FP32_V(1, FP32_FRAC_NORM_MAX, FP32_EXP_SAFE_INT_MAX + 1) } },
    1053010848              /*mxcsr:in */ 0,
    1053110849              /*128:out  */ X86_MXCSR_PE,
     
    1053510853     * Normals.
    1053610854     */
    10537     /*24*/{ { /*src2     */ { FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(1, 0,        0x7e)/*-0.50*/, FP32_V(0, 0x400000, 0x7e)/* 0.75*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0,        0x7e)/*0.50*/, FP32_V(0, 0x534000, 0x86)/*211.25*/} },
     10855    /*28*/{ { /*src2     */ { FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(1, 0,        0x7e)/*-0.50*/, FP32_V(0, 0x400000, 0x7e)/* 0.75*/, FP32_V(0, 0x600000, 0x7f)/* 1.75*/, FP32_V(0, 0,        0x7e)/*0.50*/, FP32_V(0, 0x534000, 0x86)/*211.25*/} },
    1053810856            { /*src1     */ { FP32_V(0, 0x600000, 0x7f)/*1.75*/, FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_V(0, 0,        0x7e)/* 0.50*/, FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_V(0, 0x400000, 0x7e)/*0.75*/, FP32_1(1)                /*- 1.00*/} },
    1053910857            { /* =>      */ { FP32_V(0, 0x400000, 0x7f)/*1.50*/, FP32_V(0, 0x400000, 0x7f)/* 1.50*/, FP32_V(0, 0,        0x7e)/*0.50*/, FP32_V(1, 0x400000, 0x7e)/*-0.75*/, FP32_V(1, 0,        0x7d)/*-0.25*/, FP32_V(0, 0x400000, 0x7f)/* 1.50*/, FP32_V(0, 0,        0x7d)/*0.25*/, FP32_V(0, 0x524000, 0x86)/*210.25*/} },
     
    1058110899    * Denormals.
    1058210900    */
    10583     /*30*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
     10901    /*34*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
    1058410902            { /*src1     */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_0(0),          FP32_DENORM_MAX(1),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    1058510903            { /* =>      */ { FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(1), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    10586               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    10587               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    10588               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    10589               /*xcpt?    */ false, false },
    10590           { { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
     10904              /*mxcsr:in */ 0,
     10905              /*128:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     10906              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     10907              /*xcpt?    */ false, false },
     10908#ifdef TODO_X86_MXCSR_UE /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 128:out or 256:out */
     10909 /*--|35*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
    1059110910            { /*src1     */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_0(0),          FP32_DENORM_MAX(1),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    1059210911            { /* =>      */ { FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(1), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    10593               /*mxcsr:in */ 0,
    10594               /*128:out  */ X86_MXCSR_DE,
    10595               /*256:out  */ X86_MXCSR_DE,
    10596               /*xcpt?    */ true, true },
    10597 #if 0
    10598           /** @todo How the hell is this generating an #XF exception? */
     10912              /*mxcsr:in */ X86_MXCSR_DM,
     10913              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     10914              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     10915              /*xcpt?    */ false, false },
     10916#endif /* TODO_X86_MXCSR_UE */
     10917 /*35|36*/{ { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
     10918            { /*src1     */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),                                   FP32_0(0),          FP32_DENORM_MAX(1),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
     10919            { /* =>      */ { FP32_DENORM_MAX(1), FP32_DENORM_MAX(1), FP32_0(0),          FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(1), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
     10920              /*mxcsr:in */ X86_MXCSR_UM,
     10921              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     10922              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
     10923              /*xcpt?    */ false, false },
    1059910924          { { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
    1060010925            { /*src1     */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(1),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    1060110926            { /* =>      */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1), FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
    10602               /*mxcsr:in */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    10603               /*128:out  */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE,
    10604               /*256:out  */ X86_MXCSR_XCPT_FLAGS | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE,
    10605               /*xcpt?    */ true, true },
    10606 #endif
     10927              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     10928              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
     10929              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_UM_FIXED,
     10930              /*xcpt?    */ true, true },
     10931          { { /*src2     */ { FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_DENORM_MAX(1),                                   FP32_0(0),          FP32_0(0)          } },
     10932            { /*src1     */ { FP32_0(0),          FP32_DENORM_MAX(1), FP32_DENORM_MAX(0), FP32_DENORM_MAX(0), FP32_0(0),          FP32_DENORM_MAX(1),                                   FP32_DENORM_MAX(0), FP32_DENORM_MAX(1) } },
     10933            { /* =>      */ { FP32_0(1),          FP32_0(1),          FP32_0(0),          FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_0(1),          FP32_V(1, FP32_FRAC_NORM_MAX - 1, FP32_EXP_NORM_MIN), FP32_0(0),          FP32_0(1)          } },
     10934              /*mxcsr:in */ X86_MXCSR_UM | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     10935              /*128:out  */ X86_MXCSR_UM | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_UM_FIXED,
     10936              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_DE | X86_MXCSR_UE | X86_MXCSR_PE | BS3_MXCSR_UM_FIXED,
     10937              /*xcpt?    */ true, true },
    1060710938          { { /*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)} },
    1060810939            { /*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)} },
    1060910940            { /* =>      */ { 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)} },
    10610               /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    10611               /*128:out  */ X86_MXCSR_XCPT_MASK,
    10612               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     10941              /*mxcsr:in */ 0,
     10942              /*128:out  */ 0,
     10943              /*256:out  */ X86_MXCSR_DE | BS3_MXCSR_DM_FIXED,
     10944              /*xcpt?    */ false, false },
     10945#ifdef TODO_X86_MXCSR_UE /** @todo THIS FAILS ON IEM: X86_MXCSR_UE not set in 256:out */
     10946 /*--|40*/{ { /*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)} },
     10947            { /*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)} },
     10948            { /* =>      */ { 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)} },
     10949              /*mxcsr:in */ X86_MXCSR_DM,
     10950              /*128:out  */ X86_MXCSR_DM,
     10951              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_DE | X86_MXCSR_UE | BS3_MXCSR_DM_FIXED | BS3_MXCSR_UM_FIXED,
     10952              /*xcpt?    */ false, false },
     10953#endif /* TODO_X86_MXCSR_UE */
     10954 /*39|41*/{ { /*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)} },
     10955            { /*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)} },
     10956            { /* =>      */ { 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)} },
     10957              /*mxcsr:in */ X86_MXCSR_UM,
     10958              /*128:out  */ X86_MXCSR_UM,
     10959              /*256:out  */ X86_MXCSR_UM | X86_MXCSR_DE | BS3_MXCSR_UM_FIXED,
    1061310960              /*xcpt?    */ false, false },
    1061410961          { { /*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) } },
     
    1065110998     * Invalids.
    1065210999     */
    10653     /*38*/ FP32_TABLE_D1_PS_INVALIDS
     11000 /*45|47*/ FP32_TABLE_D1_PS_INVALIDS
    1065411001    /** @todo Underflow; Precision; Rounding; FZ etc. */
    1065511002    };
     
    1070111048    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
    1070211049    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
    10703     return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     11050    return bs3CpuInstr4_WorkerTestType1A(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
    1070411051                                        g_aXcptConfig2, RT_ELEMENTS(g_aXcptConfig2));
    1070511052}
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