VirtualBox

Changeset 105437 in vbox


Ignore:
Timestamp:
Jul 23, 2024 8:23:26 AM (8 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164094
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: Add parameters to explicitly state whether a floating-point exception will be raised for 128-bit and 256-bit variants of the instruction being tested since we allow setting exception flags in the MXCSR PRIOR to testing the instruction itself.

File:
1 edited

Legend:

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

    r105433 r105437  
    994994    uint32_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
    995995    uint32_t            u256ExpectedMxCsr;      /**< Expected MXCSR for a 256-bit instructions. */
    996     uint32_t            uPad;
     996    uint8_t             f128FpXcptExpected;     /**< Whether a floating-point exception is expected for a 128-bit instruction. */
     997    uint8_t             f256FpXcptExpected;     /**< Whether a floating-point exception is expected for a 256-bit instruction. */
     998    uint8_t             afPadding[2];           /**< Alignment padding. */
    997999} BS3CPUINSTR4_TEST1_VALUES_T;
    9981000
     
    10091011    uint32_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
    10101012    uint32_t            u256ExpectedMxCsr;      /**< Expected MXCSR for a 256-bit instructions. */
    1011     uint32_t            uPad;
     1013    uint8_t             f128FpXcptExpected;     /**< Whether a floating-point exception is expected for a 128-bit instruction. */
     1014    uint8_t             f256FpXcptExpected;     /**< Whether a floating-point exception is expected for a 256-bit instruction. */
     1015    uint8_t             afPadding[2];           /**< Alignment padding. */
    10121016} BS3CPUINSTR4_TEST1_VALUES_PS_T;
    10131017AssertCompile(sizeof(BS3CPUINSTR4_TEST1_VALUES_PS_T) == sizeof(BS3CPUINSTR4_TEST1_VALUES_T));
    1014 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uSrc2,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
    1015 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uSrc1,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
    1016 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uDstOut,           BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
    1017 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uMxCsr,            BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
    1018 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, u128ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
    1019 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, u256ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1018AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uSrc2,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
     1019AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uSrc1,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
     1020AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uDstOut,            BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
     1021AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, uMxCsr,             BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
     1022AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, u128ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
     1023AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, u256ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1024AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, f128FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f128FpXcptExpected);
     1025AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PS_T, f256FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f256FpXcptExpected);
    10201026
    10211027/*
     
    10311037    uint32_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
    10321038    uint32_t            u256ExpectedMxCsr;      /**< Expected MXCSR for a 256-bit instructions. */
    1033     uint32_t            uPad;
     1039    uint8_t             f128FpXcptExpected;     /**< Whether a floating-point exception is expected for a 128-bit instruction. */
     1040    uint8_t             f256FpXcptExpected;     /**< Whether a floating-point exception is expected for a 256-bit instruction. */
     1041    uint8_t             afPadding[2];           /**< Alignment padding. */
    10341042} BS3CPUINSTR4_TEST1_VALUES_PD_T;
    10351043AssertCompile(sizeof(BS3CPUINSTR4_TEST1_VALUES_PD_T) == sizeof(BS3CPUINSTR4_TEST1_VALUES_T));
    1036 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uSrc2,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
    1037 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uSrc1,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
    1038 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uDstOut,           BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
    1039 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uMxCsr,            BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
    1040 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, u128ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
    1041 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, u256ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1044AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uSrc2,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
     1045AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uSrc1,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
     1046AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uDstOut,            BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
     1047AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, uMxCsr,             BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
     1048AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, u128ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
     1049AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, u256ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1050AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, f128FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f128FpXcptExpected);
     1051AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_PD_T, f256FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f256FpXcptExpected);
    10421052
    10431053/*
     
    10531063    uint32_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
    10541064    uint32_t            u256ExpectedMxCsr;      /**< Expected MXCSR for a 256-bit instructions. */
    1055     uint32_t            uPad;
     1065    uint8_t             f128FpXcptExpected;     /**< Whether a floating-point exception is expected for a 128-bit instruction. */
     1066    uint8_t             f256FpXcptExpected;     /**< Whether a floating-point exception is expected for a 256-bit instruction. */
     1067    uint8_t             afPadding[2];           /**< Alignment padding. */
    10561068} BS3CPUINSTR4_TEST1_VALUES_SS_T;
    10571069AssertCompile(sizeof(BS3CPUINSTR4_TEST1_VALUES_SS_T) == sizeof(BS3CPUINSTR4_TEST1_VALUES_T));
    1058 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uSrc2,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
    1059 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uSrc1,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
    1060 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uDstOut,           BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
    1061 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uMxCsr,            BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
    1062 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, u128ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
    1063 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, u256ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1070AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uSrc2,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
     1071AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uSrc1,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
     1072AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uDstOut,            BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
     1073AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, uMxCsr,             BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
     1074AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, u128ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
     1075AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, u256ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1076AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, f128FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f128FpXcptExpected);
     1077AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SS_T, f256FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f256FpXcptExpected);
    10641078
    10651079/*
     
    10751089    uint32_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
    10761090    uint32_t            u256ExpectedMxCsr;      /**< Expected MXCSR for a 256-bit instructions. */
    1077     uint32_t            uPad;
     1091    uint8_t             f128FpXcptExpected;     /**< Whether a floating-point exception is expected for a 128-bit instruction. */
     1092    uint8_t             f256FpXcptExpected;     /**< Whether a floating-point exception is expected for a 256-bit instruction. */
     1093    uint8_t             afPadding[2];           /**< Alignment padding. */
    10781094} BS3CPUINSTR4_TEST1_VALUES_SQ_T;
    10791095AssertCompile(sizeof(BS3CPUINSTR4_TEST1_VALUES_SQ_T) == sizeof(BS3CPUINSTR4_TEST1_VALUES_T));
    1080 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uSrc2,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
    1081 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uSrc1,             BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
    1082 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uDstOut,           BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
    1083 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uMxCsr,            BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
    1084 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, u128ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
    1085 AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, u256ExpectedMxCsr, BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1096AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uSrc2,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc2);
     1097AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uSrc1,              BS3CPUINSTR4_TEST1_VALUES_T, uSrc1);
     1098AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uDstOut,            BS3CPUINSTR4_TEST1_VALUES_T, uDstOut);
     1099AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, uMxCsr,             BS3CPUINSTR4_TEST1_VALUES_T, uMxCsr);
     1100AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, u128ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u128ExpectedMxCsr);
     1101AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, u256ExpectedMxCsr,  BS3CPUINSTR4_TEST1_VALUES_T, u256ExpectedMxCsr);
     1102AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, f128FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f128FpXcptExpected);
     1103AssertCompileMembersSameSizeAndOffset(BS3CPUINSTR4_TEST1_VALUES_SQ_T, f256FpXcptExpected, BS3CPUINSTR4_TEST1_VALUES_T, f256FpXcptExpected);
    10861104
    10871105typedef struct BS3CPUINSTR4_TEST1_T
     
    11491167    uint8_t          bXcptExpect         = pTestCtx->bXcptExpect;
    11501168    uint8_t const    bFpXcpt             = pTestCtx->pConfig->fCr4OsXmmExcpt ? X86_XCPT_XF : X86_XCPT_UD;
    1151     uint32_t const   uExpectedMxCsr      = pTestCtx->cbOperand > 16 ? pValues->u256ExpectedMxCsr
    1152                                                                     : pValues->u128ExpectedMxCsr;
    1153     bool const       fFpFlagsExpect      = RT_BOOL(  (uExpectedMxCsr & X86_MXCSR_XCPT_FLAGS)
    1154                                                    & ((~pValues->uMxCsr >> X86_MXCSR_XCPT_MASK_SHIFT) & X86_MXCSR_XCPT_FLAGS));
    11551169    bool const       fSseInstr           = bs3CpuInstr4IsSse(pTest->enmType);
    11561170    uint32_t         uMxCsr;
    11571171    X86YMMREG        MemOpExpect;
    11581172    uint16_t         cErrors;
     1173    uint32_t         uExpectedMxCsr;
     1174    bool             fFpXcptExpected;
     1175
     1176    /*
     1177     * An exception may be raised based on the test value (128 vs 256 bits).
     1178     * In addition, we allow setting the exception flags (and mask) prior to
     1179     * executing the instruction, so we cannot use the exception flags to figure
     1180     * out if an exception will be raised. Hence, the input values provide us
     1181     * explicitly whether an exception is expected for 128 and 256-bit variants.
     1182     */
     1183    if (pTestCtx->cbOperand > 16)
     1184    {
     1185        uExpectedMxCsr  = pValues->u256ExpectedMxCsr;
     1186        fFpXcptExpected = pValues->f256FpXcptExpected;
     1187    }
     1188    else
     1189    {
     1190        uExpectedMxCsr  = pValues->u128ExpectedMxCsr;
     1191        fFpXcptExpected = pValues->f128FpXcptExpected;
     1192    }
    11591193
    11601194    /*
     
    12211255    g_uBs3TrapEipHint = pCtx->rip.u32;
    12221256    if (    bXcptExpect == X86_XCPT_DB
    1223         && !fFpFlagsExpect)
     1257        && !fFpXcptExpected)
    12241258        g_uBs3TrapEipHint += cbInstr + 1;
    12251259    Bs3TrapSetJmpAndRestoreWithExtCtxAndRm(pCtx, pExtCtx, pTrapFrame, pExtCtxOut);
     
    12341268    cErrors = Bs3TestSubErrorCount();
    12351269    if (   bXcptExpect == X86_XCPT_DB
    1236         && !fFpFlagsExpect
     1270        && !fFpXcptExpected
    12371271        && pTest->iRegDst != UINT8_MAX)
    12381272    {
     
    12761310
    12771311        /* Check if the SIMD FP exception (or lack of) is as expected. */
    1278         if (fFpFlagsExpect)
     1312        if (fFpXcptExpected)
    12791313        {
    12801314            if (pTrapFrame->bXcpt == bFpXcpt)
     
    13021336    if (bXcptExpect == X86_XCPT_PF)
    13031337        pCtx->cr2.u = (uintptr_t)puMemOp;
    1304     Bs3TestCheckRegCtxEx(&pTrapFrame->Ctx, pCtx, bXcptExpect == X86_XCPT_DB && !fFpFlagsExpect ? cbInstr + 1 : 0, 0 /*cbSpAdjust*/,
    1305                          (bXcptExpect == X86_XCPT_DB && !fFpFlagsExpect) || BS3_MODE_IS_16BIT_SYS(bMode) ? 0 : X86_EFL_RF,
     1338    Bs3TestCheckRegCtxEx(&pTrapFrame->Ctx, pCtx, bXcptExpect == X86_XCPT_DB && !fFpXcptExpected ? cbInstr + 1 : 0, 0 /*cbSpAdjust*/,
     1339                         (bXcptExpect == X86_XCPT_DB && !fFpXcptExpected) || BS3_MODE_IS_16BIT_SYS(bMode) ? 0 : X86_EFL_RF,
    13061340                         pTestCtx->pszMode, pTestCtx->idTestStep);
    13071341    pCtx->cr2.u = 0;
     
    15041538              /*mxcsr:in */ 0,
    15051539              /*128:out  */ 0,
    1506               /*256:out  */ 0 },
     1540              /*256:out  */ 0,
     1541              /*xcpt?    */ false, false },
    15071542         { { /*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) } },
    15081543           { /*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) } },
     
    15101545             /*mxcsr:in */ 0,
    15111546             /*128:out  */ 0,
    1512              /*256:out  */ 0 },
     1547             /*256:out  */ 0,
     1548             /*xcpt?    */ false, false },
    15131549         { { /*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) } },
    15141550           { /*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) } },
     
    15161552             /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    15171553             /*128:out  */ X86_MXCSR_RC_ZERO,
    1518              /*256:out  */ X86_MXCSR_RC_ZERO },
     1554             /*256:out  */ X86_MXCSR_RC_ZERO,
     1555             /*xcpt?    */ false, false },
    15191556         { { /*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) } },
    15201557           { /*src1     */ { FP32_0(1), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(1) } },
     
    15221559             /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    15231560             /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    1524              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO },
     1561             /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
     1562             /*xcpt?    */ false, false },
    15251563         { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1) } },
    15261564           { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(1) } },
     
    15281566             /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    15291567             /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    1530              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
     1568             /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     1569             /*xcpt?    */ false, false },
    15311570         { { /*src2     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } },
    15321571           { /*src1     */ { FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1), FP32_0(0), FP32_0(1) } },
     
    15341573             /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    15351574             /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    1536              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP },
     1575             /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     1576             /*xcpt?    */ false, false },
    15371577    /*
    15381578     * Infinity.
     
    15431583              /*mxcsr:in */ X86_MXCSR_IM,
    15441584              /*128:out  */ X86_MXCSR_IM | X86_MXCSR_IE,
    1545               /*256:out  */ X86_MXCSR_IM | X86_MXCSR_IE },
     1585              /*256:out  */ X86_MXCSR_IM | X86_MXCSR_IE,
     1586              /*xcpt?    */ false, false },
    15461587          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
    15471588            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0),  FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0) } },
     
    15491590              /*mxcsr:in */ 0,
    15501591              /*128:out  */ X86_MXCSR_IE,
    1551               /*256:out  */ X86_MXCSR_IE },
     1592              /*256:out  */ X86_MXCSR_IE,
     1593              /*xcpt?    */ true, true },
    15521594          { { /*src2     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(0),  FP32_0(1), FP32_0(1), FP32_0(0) } },
    15531595            { /*src1     */ { FP32_0(0), FP32_0(0), FP32_0(0), FP32_0(0), FP32_INF(1),  FP32_0(1), FP32_0(1), FP32_0(0) } },
     
    15551597              /*mxcsr:in */ X86_MXCSR_FZ,
    15561598              /*128:out  */ X86_MXCSR_FZ,
    1557               /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_IE },
     1599              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_IE,
     1600              /*xcpt?    */ false, true },
    15581601          { { /*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)  } },
    15591602            { /*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)  } },
     
    15611604              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    15621605              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    1563               /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     1606              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     1607              /*xcpt?    */ false, true },
    15641608          { { /*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) } },
    15651609            { /*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) } },
     
    15671611              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    15681612              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    1569               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     1613              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     1614              /*xcpt?    */ true, true },
    15701615    /*
    15711616     * Overflow, Precision.
     
    15761621              /*mxcsr:in */ 0,
    15771622              /*128:out  */ 0,
    1578               /*256:out  */ X86_MXCSR_OE },
     1623              /*256:out  */ X86_MXCSR_OE,
     1624              /*xcpt?    */ false, true },
    15791625          { { /*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) } },
    15801626            { /*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) } },
     
    15821628              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
    15831629              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    1584               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE },
     1630              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     1631              /*xcpt?    */ false, false },
    15851632          { { /*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) } },
    15861633            { /*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) } },
     
    15881635              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    15891636              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
    1590               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE },
     1637              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_OE | X86_MXCSR_PE,
     1638              /*xcpt?    */ false, false },
    15911639          { { /*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) } },
    15921640            { /*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) } },
     
    15941642              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    15951643              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
    1596               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE },
     1644              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_OE | X86_MXCSR_PE,
     1645              /*xcpt?    */ false, false },
    15971646          { { /*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) } },
    15981647            { /*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) } },
     
    16001649              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    16011650              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    1602               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE },
     1651              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE,
     1652              /*xcpt?    */ false, true },
    16031653          { { /*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) } },
    16041654            { /*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) } },
     
    16061656              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO,
    16071657              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    1608               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE },
     1658              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     1659              /*xcpt?    */ false, false },
    16091660          { { /*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)                                } },
    16101661            { /*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)                                } },
     
    16121663              /*mxcsr:in */ 0,
    16131664              /*128:out  */ X86_MXCSR_PE,
    1614               /*256:out  */ X86_MXCSR_PE },
     1665              /*256:out  */ X86_MXCSR_PE,
     1666              /*xcpt?    */ true, true },
    16151667    /*
    16161668     * Normals.
     
    16211673              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    16221674              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    1623               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
     1675              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     1676              /*xcpt?    */ false, false },
    16241677          { { /*src2     */ { FP32_NORM_MAX(0), FP32_NORM_V1(0), FP32_0(0), FP32_0(0), FP32_NORM_MAX(0), FP32_NORM_V1(0), FP32_0(0), FP32_0(0) } },
    16251678            { /*src1     */ { FP32_NORM_MAX(1), FP32_NORM_V1(1), FP32_0(0), FP32_0(0), FP32_NORM_MAX(1), FP32_NORM_V1(1), FP32_0(0), FP32_0(0) } },
     
    16271680              /*mxcsr:in */ 0,
    16281681              /*128:out  */ 0,
    1629               /*256:out  */ 0 },
     1682              /*256:out  */ 0,
     1683              /*xcpt?    */ false, false },
    16301684          { { /*src2     */ { FP32_V(0, 0x5ca5b8, 0x93)/*1807543*/, FP32_V(0, 0x5c0000, 0x84)/*55*/, FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_0(0), FP32_V(0, 0x5c0000, 0x84)/*55*/, FP32_V(0, 0x2514d6, 0x93)/*1352346.75*/, FP32_V(0, 0x534000, 0x86)/*211.25*/, FP32_0(0) } },
    16311685            { /*src1     */ { FP32_V(0, 0x1ea980, 0x8f)/*  81235*/, FP32_V(0, 0x600000, 0x81)/* 7*/, FP32_V(0, 0x7c9000, 0x88)/*   1010.25*/, FP32_0(0), FP32_V(0, 0x600000, 0x81)/* 7*/, FP32_V(0, 0x7c9000, 0x88)/*   1010.25*/, FP32_1(1)                /*- 1.00*/, FP32_0(0) } },
     
    16331687              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
    16341688              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
    1635               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO },
     1689              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
     1690              /*xcpt?    */ false, false },
    16361691          { { /*src2     */ { FP32_V(0, 0x74429f, 0x97)/*32015678*/, FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_0(0), FP32_0(0), FP32_V(0, 0x74429f, 0x97)/*32015678*/, FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_1(1), FP32_0(0) } },
    16371692            { /*src1     */ { FP32_V(1, 0x712060, 0x92)/*- 987654*/, FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_0(0), FP32_1(0), FP32_V(1, 0x712060, 0x92)/*- 987654*/, FP32_V(0, 0x3c614e, 0x96)/*12345678*/, FP32_1(0), FP32_1(0) } },
     
    16391694              /*mxcsr:in */ X86_MXCSR_FZ,
    16401695              /*128:out  */ X86_MXCSR_FZ,
    1641               /*256:out  */ X86_MXCSR_FZ },
     1696              /*256:out  */ X86_MXCSR_FZ,
     1697              /*xcpt?    */ false, false },
    16421698          { { /*src2     */ { FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_NORM_SAFE_INT_MAX(0),                                FP32_1(0), FP32_1(1), FP32_V(0, FP32_FRAC_NORM_MAX - 1, FP32_EXP_SAFE_INT_MAX), FP32_NORM_SAFE_INT_MAX(0),                                FP32_0(1), FP32_0(0) } },
    16431699            { /*src1     */ { FP32_1(0),                                                FP32_1(1),                                                FP32_1(1), FP32_1(0), FP32_1(0),                                                FP32_1(1),                                                FP32_0(1), FP32_0(0) } },
     
    16451701              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
    16461702              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
    1647               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP },
     1703              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     1704              /*xcpt?    */ false, false },
    16481705          { { /*src2     */ { FP32_NORM_SAFE_INT_MAX(0),               FP32_1(1),                               FP32_0(1), FP32_1(1),  FP32_0(1), FP32_1(1),  FP32_NORM_SAFE_INT_MAX(0),                   FP32_1(1),                                  } },
    16491706            { /*src1     */ { FP32_1(0),                               FP32_NORM_SAFE_INT_MAX(1),               FP32_0(1), FP32_0(1), FP32_0(1), FP32_0(1), FP32_1(0),                                   FP32_NORM_SAFE_INT_MAX(1),                  } },
     
    16511708              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    16521709              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    1653               /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO },
     1710              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     1711              /*xcpt?    */ false, false },
    16541712          { { /*src2     */ { FP32_NORM_SAFE_INT_MIN(0), FP32_0(0),                 FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(0), FP32_0(0),                 FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(0) } },
    16551713            { /*src1     */ { FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(1), FP32_0(0),                 FP32_NORM_SAFE_INT_MIN(0), FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(1), FP32_0(0),                 FP32_NORM_SAFE_INT_MIN(0) } },
     
    16571715              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    16581716              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    1659               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
     1717              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     1718              /*xcpt?    */ false, false },
    16601719          { { /*src2     */ { FP32_V(0, 0x600000, 0x7e)/*      0.875*/, FP32_V(0, 0x3ce348, 0x90)/*193421.125*/, FP32_V(0, 0x6423f2, 0x92)/*934463.125*/, FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(0), FP32_V(0, 0x16b43a, 0x93)/*1234567.25*/, FP32_V(0, 0x792318, 0x91)/*510232.75*/, FP32_V(0, 0x600000, 0x7e)/*      0.875*/ } },
    16611720            { /*src1     */ { FP32_V(0, 0x769b50, 0x92)/*1010101.000*/, FP32_V(0, 0x430ebc, 0x91)/*399477.875*/, FP32_V(1, 0x0a19f0, 0x8f)/*-70707.875*/, FP32_NORM_SAFE_INT_MIN(1), FP32_NORM_SAFE_INT_MIN(0), FP32_V(0, 0x00c6d3, 0x94)/*2109876.75*/, FP32_V(1, 0x316740, 0x8e)/*-45415.25*/, FP32_V(0, 0x769b50, 0x92)/*1010101.000*/ } },
     
    16631722              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    16641723              /*128:out  */ X86_MXCSR_RC_DOWN,
    1665               /*256:out  */ X86_MXCSR_RC_DOWN },
     1724              /*256:out  */ X86_MXCSR_RC_DOWN,
     1725              /*xcpt?    */ false, false },
    16661726   /*
    16671727    * Denormals.
     
    16721732              /*mxcsr:in */ 0,
    16731733              /*128:out  */ X86_MXCSR_DE,
    1674               /*256:out  */ X86_MXCSR_DE },
     1734              /*256:out  */ X86_MXCSR_DE,
     1735              /*xcpt?    */ true, true },
    16751736          { { /*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) } },
    16761737            { /*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) } },
     
    16781739              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    16791740              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    1680               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE },
     1741              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     1742              /*xcpt?    */ false, false },
    16811743          { { /*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) } },
    16821744            { /*src1     */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0) } },
     
    16841746              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
    16851747              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
    1686               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP },
     1748              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_UP,
     1749              /*xcpt?    */ false, false },
    16871750         { { /*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) } },
    16881751            { /*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) } },
     
    16901753              /*mxcsr:in */ 0,
    16911754              /*128:out  */ X86_MXCSR_DE,
    1692               /*256:out  */ X86_MXCSR_DE },
     1755              /*256:out  */ X86_MXCSR_DE,
     1756              /*xcpt?    */ true, true },
    16931757          { { /*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) } },
    16941758            { /*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)          } },
     
    16961760              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
    16971761              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
    1698               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ },
     1762              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ,
     1763              /*xcpt?    */ false, false },
    16991764          { { /*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) } },
    17001765            { /*src1     */ { FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0), FP32_DENORM_MAX(0), FP32_DENORM_MIN(0) } },
     
    17021767              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    17031768              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    1704               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP },
     1769              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     1770              /*xcpt?    */ false, false },
    17051771    /** @todo More Denormals. */
    17061772    /*
     
    17121778              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    17131779              /*128:out  */ X86_MXCSR_XCPT_MASK,
    1714               /*256:out  */ X86_MXCSR_XCPT_MASK },
     1780              /*256:out  */ X86_MXCSR_XCPT_MASK,
     1781              /*xcpt?    */ false, false },
    17151782          { { /*src2     */ { FP32_QNAN(0),      FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V0),       FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    17161783            { /*src1     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V4) } },
     
    17181785              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    17191786              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    1720               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     1787              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     1788              /*xcpt?    */ false, false },
    17211789          { { /*src2     */ { FP32_SNAN(0), FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V6) } },
    17221790            { /*src1     */ { FP32_QNAN(0), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1) } },
     
    17241792              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,
    17251793              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_IE,
    1726               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_IE },
     1794              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_IE,
     1795              /*xcpt?    */ false, false },
    17271796          { { /*src2     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V7), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V1) } },
    17281797            { /*src1     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V2) } },
    17291798            { /* =>      */ { FP32_QNAN_V(0, 1), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2) } },
    1730               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     1799              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    17311800              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    1732               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     1801              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     1802              /*xcpt?    */ false, false },
    17331803          { { /*src2     */ { FP32_QNAN(0), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_NORM_V0(1),              FP32_QNAN_V(0, FP32_FRAC_V1), FP32_NORM_V3(0),              FP32_QNAN_V(1, FP32_FRAC_V3), FP32_NORM_V5(0),              FP32_QNAN_V(1, FP32_FRAC_V5) } },
    17341804            { /*src1     */ { FP32_1(0),    FP32_1(1),                          FP32_QNAN_V(1, FP32_FRAC_V0), FP32_NORM_V2(1),              FP32_QNAN_V(0, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_QNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
    17351805            { /* =>      */ { FP32_QNAN(0), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_QNAN_V(1, FP32_FRAC_V0), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(1, FP32_FRAC_V3), FP32_QNAN_V(1, FP32_FRAC_V4), FP32_QNAN_V(1, FP32_FRAC_V5) } },
    1736               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    1737               /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    1738               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     1806              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,
     1807              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,
     1808              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,
     1809              /*xcpt?    */ false, false },
    17391810          { { /*src2     */ { FP32_SNAN(1),      FP32_SNAN_V(1, FP32_FRAC_NORM_MAX), FP32_NORM_V0(1),              FP32_SNAN_V(0, FP32_FRAC_V1), FP32_NORM_V3(0),              FP32_SNAN_V(1, FP32_FRAC_V3), FP32_NORM_V5(0),              FP32_SNAN_V(1, FP32_FRAC_V5) } },
    17401811            { /*src1     */ { FP32_1(0),         FP32_1(0),                          FP32_SNAN_V(1, FP32_FRAC_V0), FP32_NORM_V2(1),              FP32_SNAN_V(1, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_SNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
    17411812            { /* =>      */ { FP32_QNAN_V(1, 1), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_QNAN_V(1, FP32_FRAC_V0), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(1, FP32_FRAC_V2), FP32_QNAN_V(1, FP32_FRAC_V3), FP32_QNAN_V(1, FP32_FRAC_V4), FP32_QNAN_V(1, FP32_FRAC_V5) } },
    1742               /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     1813              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    17431814              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    1744               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
    1745 
     1815              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     1816              /*xcpt?    */ false, false },
    17461817          { { /*src2     */ { FP32_QNAN(0), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V0),       FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    17471818            { /*src1     */ { FP32_QNAN(0), FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V4) } },
     
    17491820              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    17501821              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    1751               /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
     1822              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     1823              /*xcpt?    */ false, false },
    17521824          { { /*src2     */ { FP32_QNAN(0),      FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V0),       FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V5) } },
    17531825            { /*src1     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V4) } },
     
    17551827              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    17561828              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    1757               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     1829              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     1830              /*xcpt?    */ true, true },
    17581831          { { /*src2     */ { FP32_SNAN(0), FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V6) } },
    17591832            { /*src1     */ { FP32_QNAN(0), FP32_QNAN_V(0, FP32_FRAC_NORM_MAX), FP32_QNAN_V(0, FP32_FRAC_V6), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V2), FP32_QNAN_V(0, FP32_FRAC_V1) } },
     
    17611834              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    17621835              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
    1763               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE },
     1836              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     1837              /*xcpt?    */ true, true },
    17641838          { { /*src2     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MIN), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V2), FP32_SNAN_V(0, FP32_FRAC_V7), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V6), FP32_SNAN_V(0, FP32_FRAC_V1) } },
    17651839            { /*src1     */ { FP32_SNAN(0),      FP32_SNAN_V(0, FP32_FRAC_NORM_MAX), FP32_SNAN_V(0, FP32_FRAC_V4), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V5), FP32_SNAN_V(0, FP32_FRAC_V3), FP32_SNAN_V(0, FP32_FRAC_V1), FP32_SNAN_V(0, FP32_FRAC_V2) } },
     
    17671841              /*mxcsr:in */ X86_MXCSR_RC_UP,
    17681842              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
    1769               /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE },
     1843              /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
     1844              /*xcpt?    */ true, true },
    17701845          { { /*src2     */ { FP32_QNAN(0), FP32_QNAN_V(1, FP32_FRAC_NORM_MAX), FP32_NORM_V0(1),              FP32_QNAN_V(0, FP32_FRAC_V1), FP32_NORM_V3(0),              FP32_QNAN_V(1, FP32_FRAC_V3), FP32_NORM_V5(0),              FP32_QNAN_V(1, FP32_FRAC_V5) } },
    17711846            { /*src1     */ { FP32_1(0),    FP32_1(1),                          FP32_QNAN_V(1, FP32_FRAC_V0), FP32_NORM_V2(1),              FP32_QNAN_V(0, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_QNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
     
    17731848              /*mxcsr:in */ 0,
    17741849              /*128:out  */ 0,
    1775               /*256:out  */ 0 },
     1850              /*256:out  */ 0,
     1851              /*xcpt?    */ false, false },
    17761852          { { /*src2     */ { FP32_SNAN(1),      FP32_SNAN_V(1, FP32_FRAC_NORM_MAX), FP32_NORM_V0(1),              FP32_SNAN_V(0, FP32_FRAC_V1), FP32_NORM_V3(0),              FP32_SNAN_V(1, FP32_FRAC_V3), FP32_NORM_V5(0),              FP32_SNAN_V(1, FP32_FRAC_V5) } },
    17771853            { /*src1     */ { FP32_1(0),         FP32_1(0),                          FP32_SNAN_V(1, FP32_FRAC_V0), FP32_NORM_V2(1),              FP32_SNAN_V(1, FP32_FRAC_V2), FP32_NORM_V4(0),              FP32_SNAN_V(1, FP32_FRAC_V4), FP32_NORM_V6(1)              } },
     
    17791855              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    17801856              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    1781               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     1857              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     1858              /*xcpt?    */ true, true },
    17821859    /** @todo Underflow, Precision; Rounding, FZ etc. */
    17831860    };
     
    18451922              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    18461923              /*128:out  */ X86_MXCSR_XCPT_MASK,
    1847               /*256:out  */ X86_MXCSR_XCPT_MASK },
     1924              /*256:out  */ X86_MXCSR_XCPT_MASK,
     1925              /*xcpt?    */ false, false },
    18481926          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
    18491927            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(0), FP64_0(0) } },
     
    18511929              /*mxcsr:in */ X86_MXCSR_FZ,
    18521930              /*128:out  */ X86_MXCSR_FZ,
    1853               /*256:out  */ X86_MXCSR_FZ },
     1931              /*256:out  */ X86_MXCSR_FZ,
     1932              /*xcpt?    */ false, false },
    18541933          { { /*src2     */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(0) } },
    18551934            { /*src1     */ { FP64_0(0), FP64_0(1), FP64_0(1), FP64_0(0) } },
     
    18571936              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
    18581937              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
    1859               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN },
     1938              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_DOWN,
     1939              /*xcpt?    */ false, false },
    18601940          { { /*src2     */ { FP64_0(0), FP64_0(0), FP64_0(1), FP64_0(1) } },
    18611941            { /*src1     */ { FP64_0(0), FP64_0(0), FP64_0(1), FP64_0(1) } },
     
    18631943              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    18641944              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
    1865               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ },
     1945              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ,
     1946              /*xcpt?    */ false, false },
    18661947          { { /*src2     */ { FP64_0(1), FP64_0(0), FP64_0(1), FP64_0(0) } },
    18671948            { /*src1     */ { FP64_0(1), FP64_0(0), FP64_0(1), FP64_0(0) } },
     
    18691950              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    18701951              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    1871               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO },
     1952              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     1953              /*xcpt?    */ false, false },
    18721954    /*
    18731955     * Infinity.
     
    18781960              /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM,
    18791961              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_IE,
    1880               /*256:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_IE },
     1962              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_IE,
     1963              /*xcpt?    */ true, true },
    18811964          { { /*src2     */ { FP64_0(0), FP64_INF(1), FP64_0(0), FP64_0(0) } },
    18821965            { /*src1     */ { FP64_0(0), FP64_INF(0), FP64_0(0), FP64_0(0) } },
     
    18841967              /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    18851968              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE,
    1886               /*256:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE },
     1969              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_IE,
     1970              /*xcpt?    */ true, true },
    18871971          { { /*src2     */ { FP64_0(0), FP64_INF(1), FP64_0(0), FP64_0(0) } },
    18881972            { /*src1     */ { FP64_0(0), FP64_INF(0), FP64_0(0), FP64_0(0) } },
     
    18901974              /*mxcsr:in */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    18911975              /*128:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
    1892               /*256:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE },
     1976              /*256:out  */ X86_MXCSR_DM | X86_MXCSR_ZM | X86_MXCSR_OM | X86_MXCSR_UM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP | X86_MXCSR_IE,
     1977              /*xcpt?    */ true, true },
    18931978          { { /*src2     */ { FP64_INF(0),  FP64_INF(1),  FP64_0(0), FP64_INF(1) } },
    18941979            { /*src1     */ { FP64_INF(1),  FP64_INF(0),  FP64_0(0), FP64_INF(0) } },
     
    18961981              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    18971982              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    1898               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     1983              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     1984              /*xcpt?    */ false, false },
    18991985          { { /*src2     */ { FP64_V(0, 0,               0x3fd)/*0.25*/, FP64_0(1), FP64_0(0), FP64_INF(1) } },
    19001986            { /*src1     */ { FP64_V(0, 0,               0x3fe)/*0.50*/, FP64_0(1), FP64_0(0), FP64_INF(0) } },
     
    19021988              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
    19031989              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
    1904               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     1990              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     1991              /*xcpt?    */ false, false },
    19051992    /*
    19061993     * Overflow, Precision.
     
    19111998              /*mxcsr:in */ 0,
    19121999              /*128:out  */ X86_MXCSR_OE,
    1913               /*256:out  */ X86_MXCSR_OE },
     2000              /*256:out  */ X86_MXCSR_OE,
     2001              /*xcpt?    */ true, true },
    19142002          { { /*src2     */ { FP64_NORM_MAX(0), FP64_NORM_MAX(0), FP64_0(0), FP64_0(0) } },
    19152003            { /*src1     */ { FP64_NORM_MAX(0), FP64_NORM_MAX(1), FP64_0(0), FP64_0(0) } },
     
    19172005              /*mxcsr:in */ 0,
    19182006              /*128:out  */ X86_MXCSR_OE,
    1919               /*256:out  */ X86_MXCSR_OE },
     2007              /*256:out  */ X86_MXCSR_OE,
     2008              /*xcpt?    */ true, true },
    19202009          { { /*src2     */ { FP64_NORM_MAX(0), FP64_NORM_MIN(1), FP64_0(0), FP64_NORM_MAX(0) } },
    19212010            { /*src1     */ { FP64_NORM_MAX(0), FP64_NORM_MIN(1), FP64_0(0), FP64_NORM_MAX(0) } },
     
    19232012              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ,
    19242013              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
    1925               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE },
     2014              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
     2015              /*xcpt?    */ false, false },
    19262016          { { /*src2     */ { FP64_NORM_MIN(1), FP64_NORM_MAX(0), FP64_NORM_MAX(0), FP64_0(0) } },
    19272017            { /*src1     */ { FP64_NORM_MIN(1), FP64_NORM_MAX(0), FP64_NORM_MAX(1), FP64_0(0) } },
     
    19292019              /*mxcsr:in */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ,
    19302020              /*128:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
    1931               /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE },
     2021              /*256:out  */ X86_MXCSR_OM | X86_MXCSR_PM | X86_MXCSR_FZ | X86_MXCSR_OE | X86_MXCSR_PE,
     2022              /*xcpt?    */ false, false },
    19322023          { { /*src2     */ { FP64_NORM_MAX(0), FP64_NORM_MAX(1), FP64_NORM_MAX(1), FP64_NORM_MAX(0) } },
    19332024            { /*src1     */ { FP64_NORM_MAX(0), FP64_NORM_MAX(1), FP64_NORM_MAX(1), FP64_NORM_MAX(0) } },
     
    19352026              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO,
    19362027              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
    1937               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE },
     2028              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_RC_ZERO | X86_MXCSR_OE | X86_MXCSR_PE,
     2029              /*xcpt?    */ false, false },
    19382030          { { /*src2     */ { FP64_NORM_SAFE_INT_MIN(0),                            FP64_NORM_MAX(0), FP64_0(0), FP64_NORM_SAFE_INT_MAX(1)                                } },
    19392031            { /*src1     */ { FP64_NORM_SAFE_INT_MAX(0),                            FP64_NORM_MAX(1), FP64_0(0), FP64_NORM_SAFE_INT_MAX(1)                                } },
     
    19412033              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    19422034              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    1943               /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE },
     2035              /*256:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     2036              /*xcpt?    */ true, true },
    19442037          /** @todo Why does the below on cause PE?! */
    19452038          { { /*src2     */ { FP64_V(0, 0xc000000000000, 0x3ff)/* 1.75*/, FP64_NORM_MAX(0), FP64_0(0), FP64_V(0, 0,               0x3fd)/*0.25*/ } },
     
    19482041              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    19492042              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
    1950               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_PE },
     2043              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
     2044              /*xcpt?    */ false, false },
    19512045    /*
    19522046     * Normals.
     
    19572051              /*mxcsr:in */ 0,
    19582052              /*128:out  */ 0,
    1959               /*256:out  */ 0 },
     2053              /*256:out  */ 0,
     2054              /*xcpt?    */ false, false },
    19602055          { { /*src2     */ { FP64_V(0, 0,               0x409)/*1024*/, FP64_V(0, 0xb800000000000, 0x404)/*55*/, FP64_0(0), FP64_0(0) } },
    19612056            { /*src1     */ { FP64_V(0, 0,               0x408)/* 512*/, FP64_V(0, 0xc000000000000, 0x401)/* 7*/, FP64_0(0), FP64_0(0) } },
     
    19632058              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    19642059              /*128:out  */ X86_MXCSR_XCPT_MASK,
    1965               /*256:out  */ X86_MXCSR_XCPT_MASK },
     2060              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2061              /*xcpt?    */ false, false },
    19662062          { { /*src2     */ { FP64_V(0, 0x26580b4800000, 0x41d)/* 1234567890*/, FP64_V(0, 0xd6f3458800000, 0x41c)/*987654321*/, FP64_0(0), FP64_V(0, 0xcf0033a34f337, 0x432)/*4072598000007579.5*/ } },
    19672063            { /*src1     */ { FP64_V(1, 0x26580b4800000, 0x41d)/*-1234567890*/, FP64_V(1, 0x9000000000000, 0x405)/*     -100*/, FP64_0(0), FP64_V(0, 0xd6eca42000000, 0x419)/*       123450000.5*/ } },
     
    19692065              /*mxcsr:in */ 0,
    19702066              /*128:out  */ 0,
    1971               /*256:out  */ 0 },
     2067              /*256:out  */ 0,
     2068              /*xcpt?    */ false, false },
    19722069          { { /*src2     */ { FP64_V(0, FP64_FRAC_NORM_MAX - 1, FP64_EXP_SAFE_INT_MAX), FP64_NORM_SAFE_INT_MAX(0),                                FP64_0(0), FP64_0(0) } },
    19732070            { /*src1     */ { FP64_1(0),                                                FP64_1(1),                                                FP64_0(0), FP64_0(0) } },
     
    19752072              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    19762073              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    1977               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO },
     2074              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
     2075              /*xcpt?    */ false, false },
    19782076          { { /*src2     */ { FP64_NORM_SAFE_INT_MAX(0),               FP64_1(1),                               FP64_0(0), FP64_0(0) } },
    19792077            { /*src1     */ { FP64_1(0),                               FP64_NORM_SAFE_INT_MAX(1),               FP64_0(0), FP64_0(0) } },
     
    19812079              /*mxcsr:in */ X86_MXCSR_FZ,
    19822080              /*128:out  */ X86_MXCSR_FZ,
    1983               /*256:out  */ X86_MXCSR_FZ },
     2081              /*256:out  */ X86_MXCSR_FZ,
     2082              /*xcpt?    */ false, false },
    19842083          { { /*src2     */ { FP64_NORM_SAFE_INT_MIN(0), FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(0), FP64_NORM_SAFE_INT_MIN(0) } },
    19852084            { /*src1     */ { FP64_NORM_SAFE_INT_MIN(1), FP64_NORM_SAFE_INT_MIN(1), FP64_0(0),                 FP64_NORM_SAFE_INT_MIN(0) } },
     
    19872086              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    19882087              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    1989               /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
     2088              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2089              /*xcpt?    */ false, false },
    19902090          { { /*src2     */ { FP64_V(0, 0xc122186c3cfd0, 0x42d)/*123456789876543.25*/, FP64_0(0), FP64_0(0), FP64_NORM_SAFE_INT_MIN(1) } },
    19912091            { /*src1     */ { FP64_V(0, 0xb88e0395d49b0, 0x42d)/*121098765432102.75*/, FP64_0(0), FP64_0(0), FP64_NORM_SAFE_INT_MIN(1) } },
     
    19932093              /*mxcsr:in */ X86_MXCSR_RC_UP,
    19942094              /*128:out  */ X86_MXCSR_RC_UP,
    1995               /*256:out  */ X86_MXCSR_RC_UP },
     2095              /*256:out  */ X86_MXCSR_RC_UP,
     2096              /*xcpt?    */ false, false },
    19962097    /*
    19972098     * Denormals.
     
    20022103              /*mxcsr:in */ 0,
    20032104              /*128:out  */ X86_MXCSR_DE,
    2004               /*256:out  */ X86_MXCSR_DE },
     2105              /*256:out  */ X86_MXCSR_DE,
     2106              /*xcpt?    */ true, true },
    20052107          { { /*src2     */ { FP64_0(0), FP64_0(0),          FP64_0(0), FP64_0(0) } },
    20062108            { /*src1     */ { FP64_0(0), FP64_DENORM_MAX(0), FP64_0(0), FP64_0(0) } },
     
    20082110              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20092111              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
    2010               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE },
     2112              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DE,
     2113              /*xcpt?    */ false, false },
    20112114          { { /*src2     */ { FP64_DENORM_MIN(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MAX(0) } },
    20122115            { /*src1     */ { FP64_DENORM_MAX(0), FP64_DENORM_MIN(0), FP64_DENORM_MAX(0), FP64_DENORM_MIN(0) } },
     
    20142117              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    20152118              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
    2016               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP },
     2119              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_UP,
     2120              /*xcpt?    */ false, false },
    20172121    /** @todo More denormals; Underflow, Precision; Rounding, FZ etc. */
    20182122    /*
     
    20242128              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20252129              /*128:out  */ X86_MXCSR_XCPT_MASK,
    2026               /*256:out  */ X86_MXCSR_XCPT_MASK },
     2130              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2131              /*xcpt?    */ false, false },
    20272132          { { /*src2     */ { FP64_QNAN(0),      FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V2) } },
    20282133            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V1) } },
     
    20302135              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20312136              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    2032               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     2137              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2138              /*xcpt?    */ false, false },
    20332139          { { /*src2     */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20342140            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V2), FP64_QNAN_V(0, FP64_FRAC_V3) } },
     
    20362142              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20372143              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    2038               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     2144              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2145              /*xcpt?    */ false, false },
    20392146          { { /*src2     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } },
    20402147            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V3), FP64_SNAN_V(0, FP64_FRAC_V0) } },
     
    20422149              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20432150              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    2044               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     2151              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2152              /*xcpt?    */ false, false },
    20452153          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
    20462154            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     
    20482156              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20492157              /*128:out  */ X86_MXCSR_XCPT_MASK,
    2050               /*256:out  */ X86_MXCSR_XCPT_MASK },
     2158              /*256:out  */ X86_MXCSR_XCPT_MASK,
     2159              /*xcpt?    */ false, false },
    20512160          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20522161            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V0), FP64_NORM_V2(1)              } },
     
    20542163              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,
    20552164              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
    2056               /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE },
     2165              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,
     2166              /*xcpt?    */ false, false },
    20572167          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP64_FRAC_V2) } },
    20582168            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MIN), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3) } },
     
    20602170              /*mxcsr:in */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    20612171              /*128:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
    2062               /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN },
     2172              /*256:out  */ X86_MXCSR_FZ | X86_MXCSR_RC_DOWN,
     2173              /*xcpt?    */ false, false },
    20632174          { { /*src2     */ { FP64_QNAN(0),      FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V0),       FP64_QNAN_V(0, FP32_FRAC_V1) } },
    20642175            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP32_FRAC_V2) } },
     
    20662177              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    20672178              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    2068               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     2179              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     2180              /*xcpt?    */ true, true },
    20692181          { { /*src2     */ { FP64_SNAN(0), FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V1) } },
    20702182            { /*src1     */ { FP64_QNAN(0), FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V3), FP64_QNAN_V(0, FP64_FRAC_V2) } },
     
    20722184              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO,
    20732185              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    2074               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     2186              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_FZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     2187              /*xcpt?    */ true, true },
    20752188          { { /*src2     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MIN), FP64_SNAN_V(0, FP64_FRAC_V1), FP64_SNAN_V(0, FP64_FRAC_V2) } },
    20762189            { /*src1     */ { FP64_SNAN(0),      FP64_SNAN_V(0, FP64_FRAC_NORM_MAX), FP64_SNAN_V(0, FP64_FRAC_V0), FP64_SNAN_V(0, FP64_FRAC_V3) } },
     
    20782191              /*mxcsr:in */ X86_MXCSR_RC_UP,
    20792192              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
    2080               /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE },
     2193              /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,
     2194              /*xcpt?    */ true, true },
    20812195          { { /*src2     */ { FP64_QNAN(0), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_QNAN_V(0, FP64_FRAC_V1) } },
    20822196            { /*src1     */ { FP64_1(0),    FP64_1(1),                          FP64_QNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1)              } },
     
    20842198              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    20852199              /*128:out  */ X86_MXCSR_RC_DOWN,
    2086               /*256:out  */ X86_MXCSR_RC_DOWN },
     2200              /*256:out  */ X86_MXCSR_RC_DOWN,
     2201              /*xcpt?    */ false, false },
    20872202          { { /*src2     */ { FP64_SNAN(1),      FP64_SNAN_V(1, FP64_FRAC_NORM_MAX), FP64_NORM_V0(1),              FP64_SNAN_V(0, FP64_FRAC_V2) } },
    20882203            { /*src1     */ { FP64_1(0),         FP64_1(0),                          FP64_SNAN_V(1, FP64_FRAC_V3), FP64_NORM_V2(1)              } },
     
    20902205              /*mxcsr:in */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO,
    20912206              /*128:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
    2092               /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE },
     2207              /*256:out  */ X86_MXCSR_DAZ | X86_MXCSR_RC_ZERO | X86_MXCSR_IE,
     2208              /*xcpt?    */ true, true },
    20932209    };
    20942210
     
    49425058        { "[v]addps",       bs3CpuInstr4_v_addps,  0 },
    49435059        { "[v]addpd",       bs3CpuInstr4_v_addpd,  0 },
     5060# if 0
    49445061        { "[v]addss",       bs3CpuInstr4_v_addss,  0 },
    4945 # if 0
    49465062        { "[v]haddps",      bs3CpuInstr4_v_haddps, 0 },
    49475063        { "[v]subps",       bs3CpuInstr4_v_subps,  0 },
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