VirtualBox

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


Ignore:
Timestamp:
Oct 30, 2024 5:25:00 AM (6 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165672
Message:

ValidationKit/bootsectors: Implement SISD FP testcases for [v]cvttss2si; bugref:10658; jiraref:VBP-1206

  • also improve a few cvtps2pi, cvttps2pi, [v]cvtss2si testcases
File:
1 edited

Legend:

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

    r106769 r106780  
    1648316483              /*256:out  */ -1 },
    1648416484          { { /* unused  */ { FP32_ROW_UNUSED } },
    16485             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16486                               /*123456.1*/             /*-123456.1*/
    16487             { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
     16485            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16486                              /*123456.9*/             /*-123456.9*/
     16487            { /* =>   mm */ { FP32_INT_C(123457),      FP32_INT_C(-123457),     FP32_x6_UNUSED  } },
    1648816488              /*mxcsr:in */ 0,
    1648916489              /*128:out  */ X86_MXCSR_PE,
    1649016490              /*256:out  */ -1 },
    1649116491          { { /* unused  */ { FP32_ROW_UNUSED } },
    16492             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16493                               /*123456.1*/             /*-123456.1*/
     16492            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16493                              /*123456.9*/             /*-123456.9*/
    1649416494            { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123457),     FP32_x6_UNUSED  } },
    1649516495              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     
    1649716497              /*256:out  */ -1 },
    1649816498          { { /* unused  */ { FP32_ROW_UNUSED } },
    16499             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16500                               /*123456.1*/             /*-123456.1*/
     16499            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16500                              /*123456.9*/             /*-123456.9*/
    1650116501            { /* =>   mm */ { FP32_INT_C(123457),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
    1650216502              /*mxcsr:in */ X86_MXCSR_RC_UP,
     
    1650416504              /*256:out  */ -1 },
    1650516505          { { /* unused  */ { FP32_ROW_UNUSED } },
    16506             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16507                               /*123456.1*/             /*-123456.1*/
     16506            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16507                              /*123456.9*/             /*-123456.9*/
    1650816508            { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
    1650916509              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     
    1662416624              /*256:out  */ -1 },
    1662516625          { { /* unused  */ { FP32_ROW_UNUSED } },
    16626             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16627                               /*123456.1*/             /*-123456.1*/
     16626            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16627                              /*123456.9*/             /*-123456.9*/
    1662816628            { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
    1662916629              /*mxcsr:in */ 0,
     
    1663116631              /*256:out  */ -1 },
    1663216632          { { /* unused  */ { FP32_ROW_UNUSED } },
    16633             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16634                               /*123456.1*/             /*-123456.1*/
     16633            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16634                              /*123456.9*/             /*-123456.9*/
    1663516635            { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
    1663616636              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     
    1663816638              /*256:out  */ -1 },
    1663916639          { { /* unused  */ { FP32_ROW_UNUSED } },
    16640             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16641                               /*123456.1*/             /*-123456.1*/
     16640            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16641                              /*123456.9*/             /*-123456.9*/
    1664216642            { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
    1664316643              /*mxcsr:in */ X86_MXCSR_RC_UP,
     
    1664516645              /*256:out  */ -1 },
    1664616646          { { /* unused  */ { FP32_ROW_UNUSED } },
    16647             { /* src xmm */ { FP32_V(0,0x71200d,0x8f), FP32_V(1,0x71200d,0x8f), FP32_RAND_x6_V2 } },
    16648                               /*123456.1*/             /*-123456.1*/
     16647            { /* src xmm */ { FP32_V(0,0x712073,0x8f), FP32_V(1,0x712073,0x8f), FP32_RAND_x6_V2 } },
     16648                              /*123456.9*/             /*-123456.9*/
    1664916649            { /* =>   mm */ { FP32_INT_C(123456),      FP32_INT_C(-123456),     FP32_x6_UNUSED  } },
    1665016650              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     
    1707917079              /*256:out  */ -1 },
    1708017080          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
    17081             { /* src xmm */ { FP32_V(0,0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
     17081            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17082            { /* =>  r32 */ { FP32_INT_C(123457),                  FP32_x7_UNUSED  } },
     17083              /*mxcsr:in */ 0,
     17084              /*128:out  */ X86_MXCSR_PE,
     17085              /*256:out  */ -1 },
     17086          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17087            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17088            { /* =>  r32 */ { FP32_INT_C(-123457),                  FP32_x7_UNUSED  } },
     17089              /*mxcsr:in */ 0,
     17090              /*128:out  */ X86_MXCSR_PE,
     17091              /*256:out  */ -1 },
     17092          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17093            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
    1708217094            { /* =>  r32 */ { FP32_INT_C(123456),                  FP32_x7_UNUSED  } },
    17083               /*mxcsr:in */ 0,
    17084               /*128:out  */ X86_MXCSR_PE,
    17085               /*256:out  */ -1 },
    17086           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED               } },
    17087             { /* src xmm */ { FP32_V(1,0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17088             { /* =>  r32 */ { FP32_INT_C(-123456),     FP32_x7_UNUSED               } },
    17089               /*mxcsr:in */ 0,
    17090               /*128:out  */ X86_MXCSR_PE,
    17091               /*256:out  */ -1 },
    17092           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED              } },
    17093             { /* src xmm */ { FP32_V(0,0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17094             { /* =>  r32 */ { FP32_INT_C(123456),      FP32_x7_UNUSED              } },
    1709517095              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    1709617096              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
    1709717097              /*256:out  */ -1 },
    17098           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED               } },
    17099             { /* src xmm */ { FP32_V(1,0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17100             { /* =>  r32 */ { FP32_INT_C(-123457),     FP32_x7_UNUSED               } },
     17098          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17099            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17100            { /* =>  r32 */ { FP32_INT_C(-123457),                  FP32_x7_UNUSED  } },
    1710117101              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    1710217102              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
    1710317103              /*256:out  */ -1 },
    17104           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED               } },
    17105             { /* src xmm */ { FP32_V(0,0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17106             { /* =>  r32 */ { FP32_INT_C(123457),      FP32_x7_UNUSED               } },
     17104          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17105            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17106            { /* =>  r32 */ { FP32_INT_C(123457),                  FP32_x7_UNUSED  } },
    1710717107              /*mxcsr:in */ X86_MXCSR_RC_UP,
    1710817108              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
    1710917109              /*256:out  */ -1 },
    17110           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED               } },
    17111             { /* src xmm */ { FP32_V(1,0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17112             { /* =>  r32 */ { FP32_INT_C(-123456),     FP32_x7_UNUSED               } },
     17110          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17111            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17112            { /* =>  r32 */ { FP32_INT_C(-123456),                  FP32_x7_UNUSED  } },
    1711317113              /*mxcsr:in */ X86_MXCSR_RC_UP,
    1711417114              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
    1711517115              /*256:out  */ -1 },
    17116           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED              } },
    17117             { /* src xmm */ { FP32_V(0,0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17118             { /* =>  r32 */ { FP32_INT_C(123456),      FP32_x7_UNUSED              } },
     17116          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17117            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17118            { /* =>  r32 */ { FP32_INT_C(123456),                  FP32_x7_UNUSED  } },
    1711917119              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    1712017120              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    1712117121              /*256:out  */ -1 },
    17122           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED               } },
    17123             { /* src xmm */ { FP32_V(1,0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17124             { /* =>  r32 */ { FP32_INT_C(-123456),     FP32_x7_UNUSED               } },
     17122          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17123            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17124            { /* =>  r32 */ { FP32_INT_C(-123456),                  FP32_x7_UNUSED  } },
    1712517125              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    1712617126              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    1712717127              /*256:out  */ -1 },
    17128           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED          } },
     17128          { { /* clr r64 */ { FP32_INT64_C(0),                 FP32_x6_UNUSED  } },
    1712917129            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
    17130             { /* =>  r32 */ { FP32_INT_C(-1),          FP32_x7_UNUSED          } },
     17130            { /* =>  r32 */ { FP32_INT_C(-1),                  FP32_x7_UNUSED  } },
    1713117131              /*mxcsr:in */ X86_MXCSR_FZ,
    1713217132              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
    1713317133              /*256:out  */ -1 },
    17134           { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED         } },
     17134          { { /* clr r64 */ { FP32_INT64_C(0),                FP32_x6_UNUSED  } },
    1713517135            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
    17136             { /* =>  r32 */ { FP32_INT_C(1),           FP32_x7_UNUSED         } },
     17136            { /* =>  r32 */ { FP32_INT_C(1),                  FP32_x7_UNUSED  } },
    1713717137              /*mxcsr:in */ X86_MXCSR_FZ,
    1713817138              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     17139              /*256:out  */ -1 },
     17140          { { /* clr r64 */ { FP32_INT64_C(0),                 FP32_x6_UNUSED  } },
     17141            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17142            { /* =>  r32 */ { FP32_INT_C(-1),                  FP32_x7_UNUSED  } },
     17143              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17144              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_DOWN,
     17145              /*256:out  */ -1 },
     17146          { { /* clr r64 */ { FP32_INT64_C(0),                FP32_x6_UNUSED  } },
     17147            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17148            { /* =>  r32 */ { FP32_INT_C(1),                  FP32_x7_UNUSED  } },
     17149              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17150              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_UP,
    1713917151              /*256:out  */ -1 },
    1714017152          { { /* clr r64 */ { FP32_INT64_C(0),           FP32_x6_UNUSED  } },
     
    1715317165     * Denormals.
    1715417166     */
    17155     /*18*/{ { /* clr r64 */ { FP32_INT64_C(0),    FP32_x6_UNUSED  } },
     17167    /*20*/{ { /* clr r64 */ { FP32_INT64_C(0),    FP32_x6_UNUSED  } },
    1715617168            { /* src xmm */ { FP32_DENORM_MAX(0), FP32_RAND_x7_V2 } },
    1715717169            { /* =>  r32 */ { FP32_INT_C(0),      FP32_x7_UNUSED  } },
     
    1716817180     * Overflow (Underflow not possible).
    1716917181     */
    17170     /*20*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17182    /*22*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
    1717117183            { /* src xmm */ { FP32_NORM_MAX(0),    FP32_RAND_x7_V2 } },
    1717217184            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     
    1718317195     * Invalids.
    1718417196     */
    17185     /*22*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17197    /*24*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
    1718617198            { /* src xmm */ { FP32_QNAN(0),        FP32_RAND_x7_V2 } },
    1718717199            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     
    1723217244     */
    1723317245    /* 4*/{ { /* unused  */ { FP32_ROW_UNUSED } },
    17234             { /* src xmm */ { FP32_V(0, 0x712000,0x8f), FP32_RAND_x7_V0 } },
    17235             { /* =>  r64 */ { FP32_INT64_C(123456),     FP32_x6_UNUSED  } },
     17246            { /* src xmm */ { FP32_V(0,0x712000,0x8f), FP32_RAND_x7_V0 } },
     17247            { /* =>  r64 */ { FP32_INT64_C(123456),    FP32_x6_UNUSED  } },
    1723617248              /*mxcsr:in */ 0,
    1723717249              /*128:out  */ 0,
    1723817250              /*256:out  */ -1 },
    1723917251          { { /* unused  */ { FP32_ROW_UNUSED } },
    17240             { /* src xmm */ { FP32_V(1, 0x712000,0x8f), FP32_RAND_x7_V0 } },
    17241             { /* =>  r64 */ { FP32_INT64_C(-123456),    FP32_x6_UNUSED  } },
     17252            { /* src xmm */ { FP32_V(1,0x712000,0x8f), FP32_RAND_x7_V0 } },
     17253            { /* =>  r64 */ { FP32_INT64_C(-123456),   FP32_x6_UNUSED  } },
    1724217254              /*mxcsr:in */ 0,
    1724317255              /*128:out  */ 0,
    1724417256              /*256:out  */ -1 },
    1724517257          { { /* unused  */ { FP32_ROW_UNUSED } },
    17246             { /* src xmm */ { FP32_V(0, 0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17247             { /* =>  r64 */ { FP32_INT64_C(123456),                 FP32_x6_UNUSED  } },
     17258            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17259            { /* =>  r64 */ { FP32_INT64_C(123457),                FP32_x6_UNUSED  } },
    1724817260              /*mxcsr:in */ 0,
    1724917261              /*128:out  */ X86_MXCSR_PE,
    1725017262              /*256:out  */ -1 },
    1725117263          { { /* unused  */ { FP32_ROW_UNUSED } },
    17252             { /* src xmm */ { FP32_V(1, 0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17253             { /* =>  r64 */ { FP32_INT64_C(-123456),                 FP32_x6_UNUSED  } },
     17264            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17265            { /* =>  r64 */ { FP32_INT64_C(-123457),                FP32_x6_UNUSED  } },
    1725417266              /*mxcsr:in */ 0,
    1725517267              /*128:out  */ X86_MXCSR_PE,
    1725617268              /*256:out  */ -1 },
    1725717269          { { /* unused  */ { FP32_ROW_UNUSED } },
    17258             { /* src xmm */ { FP32_V(0, 0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17259             { /* =>  r64 */ { FP32_INT64_C(123456),                 FP32_x6_UNUSED  } },
     17270            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17271            { /* =>  r64 */ { FP32_INT64_C(123456),                FP32_x6_UNUSED  } },
    1726017272              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    1726117273              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
    1726217274              /*256:out  */ -1 },
    1726317275          { { /* unused  */ { FP32_ROW_UNUSED } },
    17264             { /* src xmm */ { FP32_V(1, 0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17265             { /* =>  r64 */ { FP32_INT64_C(-123457),                 FP32_x6_UNUSED  } },
     17276            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17277            { /* =>  r64 */ { FP32_INT64_C(-123457),                FP32_x6_UNUSED  } },
    1726617278              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
    1726717279              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
    1726817280              /*256:out  */ -1 },
    1726917281          { { /* unused  */ { FP32_ROW_UNUSED } },
    17270             { /* src xmm */ { FP32_V(0, 0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17271             { /* =>  r64 */ { FP32_INT64_C(123457),                 FP32_x6_UNUSED  } },
     17282            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17283            { /* =>  r64 */ { FP32_INT64_C(123457),                FP32_x6_UNUSED  } },
    1727217284              /*mxcsr:in */ X86_MXCSR_RC_UP,
    1727317285              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
    1727417286              /*256:out  */ -1 },
    1727517287          { { /* unused  */ { FP32_ROW_UNUSED } },
    17276             { /* src xmm */ { FP32_V(1, 0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17277             { /* =>  r64 */ { FP32_INT64_C(-123456),                 FP32_x6_UNUSED  } },
     17288            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17289            { /* =>  r64 */ { FP32_INT64_C(-123456),                FP32_x6_UNUSED  } },
    1727817290              /*mxcsr:in */ X86_MXCSR_RC_UP,
    1727917291              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
    1728017292              /*256:out  */ -1 },
    1728117293          { { /* unused  */ { FP32_ROW_UNUSED } },
    17282             { /* src xmm */ { FP32_V(0, 0x71200d,0x8f)/*123456.1*/, FP32_RAND_x7_V2 } },
    17283             { /* =>  r64 */ { FP32_INT64_C(123456),                 FP32_x6_UNUSED  } },
     17294            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17295            { /* =>  r64 */ { FP32_INT64_C(123456),                FP32_x6_UNUSED  } },
    1728417296              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    1728517297              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    1728617298              /*256:out  */ -1 },
    1728717299          { { /* unused  */ { FP32_ROW_UNUSED } },
    17288             { /* src xmm */ { FP32_V(1, 0x71200d,0x8f)/*-123456.1*/, FP32_RAND_x7_V2 } },
    17289             { /* =>  r64 */ { FP32_INT64_C(-123456),                 FP32_x6_UNUSED  } },
     17300            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17301            { /* =>  r64 */ { FP32_INT64_C(-123456),                FP32_x6_UNUSED  } },
    1729017302              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
    1729117303              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
    1729217304              /*256:out  */ -1 },
    1729317305          { { /* unused  */ { FP32_ROW_UNUSED } },
    17294             { /* src xmm */ { FP32_V(1, 0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
    17295             { /* =>  r64 */ { FP32_INT64_C(-1),                 FP32_x6_UNUSED  } },
     17306            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17307            { /* =>  r64 */ { FP32_INT64_C(-1),                FP32_x6_UNUSED  } },
    1729617308              /*mxcsr:in */ X86_MXCSR_FZ,
    1729717309              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
    1729817310              /*256:out  */ -1 },
    1729917311          { { /* unused  */ { FP32_ROW_UNUSED } },
    17300             { /* src xmm */ { FP32_V(0, 0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
    17301             { /* =>  r64 */ { FP32_INT64_C(1),                 FP32_x6_UNUSED  } },
     17312            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17313            { /* =>  r64 */ { FP32_INT64_C(1),                FP32_x6_UNUSED  } },
    1730217314              /*mxcsr:in */ X86_MXCSR_FZ,
    1730317315              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     17316              /*256:out  */ -1 },
     17317          { { /* unused  */ { FP32_ROW_UNUSED } },
     17318            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17319            { /* =>  r64 */ { FP32_INT64_C(-1),                FP32_x6_UNUSED  } },
     17320              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17321              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_DOWN,
     17322              /*256:out  */ -1 },
     17323          { { /* unused  */ { FP32_ROW_UNUSED } },
     17324            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17325            { /* =>  r64 */ { FP32_INT64_C(1),                FP32_x6_UNUSED  } },
     17326              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17327              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_UP,
    1730417328              /*256:out  */ -1 },
    1730517329          { { /* unused  */ { FP32_ROW_UNUSED } },
     
    1731517339              /*128:out  */ 0,
    1731617340              /*256:out  */ -1 },
     17341          { { /* unused  */ { FP32_ROW_UNUSED } },
     17342            { /* src xmm */ { FP32_V(0,0x79ccd8,0xbd)/*8999999652602314752.0,*/, FP32_RAND_x7_V2 } },
     17343            { /* =>  r64 */ { FP32_INT64_C(8999999652602314752),                 FP32_x6_UNUSED  } },
     17344              /*mxcsr:in */ 0,
     17345              /*128:out  */ 0,
     17346              /*256:out  */ -1 },
     17347          { { /* unused  */ { FP32_ROW_UNUSED } },
     17348            { /* src xmm */ { FP32_V(1,0x79ccd8,0xbd)/*-8999999652602314752.0,*/, FP32_RAND_x7_V2 } },
     17349            { /* =>  r64 */ { FP32_INT64_C(-8999999652602314752),                 FP32_x6_UNUSED  } },
     17350              /*mxcsr:in */ 0,
     17351              /*128:out  */ 0,
     17352              /*256:out  */ -1 },
     17353          { { /* unused  */ { FP32_ROW_UNUSED } },
     17354            { /* src xmm */ { FP32_V(0,0x79ccd9,0xbd)/*9000000202358128640.0,*/, FP32_RAND_x7_V2 } },
     17355            { /* =>  r64 */ { FP32_INT64_C(9000000202358128640),                 FP32_x6_UNUSED  } },
     17356              /*mxcsr:in */ 0,
     17357              /*128:out  */ 0,
     17358              /*256:out  */ -1 },
     17359          { { /* unused  */ { FP32_ROW_UNUSED } },
     17360            { /* src xmm */ { FP32_V(1,0x79ccd9,0xbd)/*-9000000202358128640.0,*/, FP32_RAND_x7_V2 } },
     17361            { /* =>  r64 */ { FP32_INT64_C(-9000000202358128640),                 FP32_x6_UNUSED  } },
     17362              /*mxcsr:in */ 0,
     17363              /*128:out  */ 0,
     17364              /*256:out  */ -1 },
    1731717365    /*
    1731817366     * Denormals.
    1731917367     */
    17320     /*18*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17368    /*24*/{ { /* unused  */ { FP32_ROW_UNUSED } },
    1732117369            { /* src xmm */ { FP32_DENORM_MAX(0),   FP32_RAND_x7_V2 } },
    1732217370            { /* =>  r64 */ { FP32_INT64_C(0),      FP32_x6_UNUSED  } },
     
    1733317381     * Overflow (Underflow not possible).
    1733417382     */
    17335     /*20*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17383    /*26*/{ { /* unused  */ { FP32_ROW_UNUSED } },
    1733617384            { /* src xmm */ { FP32_NORM_MAX(0),      FP32_RAND_x7_V2 } },
    1733717385            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     
    1734817396     * Invalids.
    1734917397     */
    17350     /*22*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17398    /*28*/{ { /* unused  */ { FP32_ROW_UNUSED } },
    1735117399            { /* src xmm */ { FP32_QNAN(0),          FP32_RAND_x7_V2 } },
    1735217400            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     
    1741017458        { bs3CpuInstr4_vcvtss2si_R8_XMM8_icebp_c64,   255,         RM_REG, T_AVX_128, R8,  XMM8,  NOREG, PASS_s_aValues64 },
    1741117459        { bs3CpuInstr4_vcvtss2si_R8_FSxBX_icebp_c64,  255,         RM_MEM, T_AVX_128, R8,  FSxBX, NOREG, PASS_s_aValues64 },
     17460    };
     17461
     17462    static BS3CPUINSTR4_TEST1_MODE_T const s_aTests[3] = BS3CPUINSTR4_TEST1_MODES_INIT(s_aTests16, s_aTests32, s_aTests64);
     17463    unsigned const                         iTest       = BS3CPUINSTR4_TEST_MODES_INDEX(bMode);
     17464    return bs3CpuInstr4_WorkerTestType1(bMode, s_aTests[iTest].paTests, s_aTests[iTest].cTests,
     17465                                        g_aXcptConfig5, RT_ELEMENTS(g_aXcptConfig5));
     17466}
     17467
     17468
     17469/*
     17470 * CVTTSS2SI.
     17471 */
     17472BS3_DECL_FAR(uint8_t) bs3CpuInstr4_cvttss2si(uint8_t bMode)
     17473{
     17474    static BS3CPUINSTR4_TEST1_VALUES_PS_T const s_aValues32[] =
     17475    {
     17476    /*
     17477     * Zero.
     17478     */
     17479    /* 0*/{ { /* clr r64 */ { FP32_INT64_C(0), FP32_x6_UNUSED  } },
     17480            { /* src xmm */ { FP32_0(0),       FP32_RAND_x7_V1 } },
     17481            { /* =>  r32 */ { FP32_INT_C(0),   FP32_x7_UNUSED  } },
     17482              /*mxcsr:in */ 0,
     17483              /*128:out  */ 0,
     17484              /*256:out  */ -1 },
     17485          { { /* clr r64 */ { FP32_INT64_C(0), FP32_x6_UNUSED  } },
     17486            { /* src xmm */ { FP32_0(1),       FP32_RAND_x7_V1 } },
     17487            { /* =>  r32 */ { FP32_INT_C(0),   FP32_x7_UNUSED  } },
     17488              /*mxcsr:in */ 0,
     17489              /*128:out  */ 0,
     17490              /*256:out  */ -1 },
     17491    /*
     17492     * Infinity.
     17493     */
     17494    /* 2*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17495            { /* src xmm */ { FP32_INF(1),         FP32_RAND_x7_V1 } },
     17496            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     17497              /*mxcsr:in */ 0,
     17498              /*128:out  */ X86_MXCSR_IE,
     17499              /*256:out  */ -1 },
     17500          { { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17501            { /* src xmm */ { FP32_INF(0),         FP32_RAND_x7_V1 } },
     17502            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     17503              /*mxcsr:in */ 0,
     17504              /*128:out  */ X86_MXCSR_IE,
     17505              /*256:out  */ -1 },
     17506    /*
     17507     * Normals & Precision.
     17508     */
     17509    /* 4*/{ { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED  } },
     17510            { /* src xmm */ { FP32_V(0,0x712000,0x8f), FP32_RAND_x7_V0 } },
     17511            { /* =>  r32 */ { FP32_INT_C(123456),      FP32_x7_UNUSED  } },
     17512              /*mxcsr:in */ 0,
     17513              /*128:out  */ 0,
     17514              /*256:out  */ -1 },
     17515          { { /* clr r64 */ { FP32_INT64_C(0),         FP32_x6_UNUSED  } },
     17516            { /* src xmm */ { FP32_V(1,0x712000,0x8f), FP32_RAND_x7_V0 } },
     17517            { /* =>  r32 */ { FP32_INT_C(-123456),     FP32_x7_UNUSED  } },
     17518              /*mxcsr:in */ 0,
     17519              /*128:out  */ 0,
     17520              /*256:out  */ -1 },
     17521          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17522            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17523            { /* =>  r32 */ { FP32_INT_C(123456),                  FP32_x7_UNUSED  } },
     17524              /*mxcsr:in */ 0,
     17525              /*128:out  */ X86_MXCSR_PE,
     17526              /*256:out  */ -1 },
     17527          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17528            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17529            { /* =>  r32 */ { FP32_INT_C(-123456),                  FP32_x7_UNUSED  } },
     17530              /*mxcsr:in */ 0,
     17531              /*128:out  */ X86_MXCSR_PE,
     17532              /*256:out  */ -1 },
     17533          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17534            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17535            { /* =>  r32 */ { FP32_INT_C(123456),                  FP32_x7_UNUSED  } },
     17536              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17537              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
     17538              /*256:out  */ -1 },
     17539          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17540            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17541            { /* =>  r32 */ { FP32_INT_C(-123456),                  FP32_x7_UNUSED  } },
     17542              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17543              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
     17544              /*256:out  */ -1 },
     17545          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17546            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17547            { /* =>  r32 */ { FP32_INT_C(123456),                  FP32_x7_UNUSED  } },
     17548              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17549              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
     17550              /*256:out  */ -1 },
     17551          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17552            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17553            { /* =>  r32 */ { FP32_INT_C(-123456),                  FP32_x7_UNUSED  } },
     17554              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17555              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
     17556              /*256:out  */ -1 },
     17557          { { /* clr r64 */ { FP32_INT64_C(0),                     FP32_x6_UNUSED  } },
     17558            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17559            { /* =>  r32 */ { FP32_INT_C(123456),                  FP32_x7_UNUSED  } },
     17560              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     17561              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     17562              /*256:out  */ -1 },
     17563          { { /* clr r64 */ { FP32_INT64_C(0),                      FP32_x6_UNUSED  } },
     17564            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17565            { /* =>  r32 */ { FP32_INT_C(-123456),                  FP32_x7_UNUSED  } },
     17566              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     17567              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     17568              /*256:out  */ -1 },
     17569          { { /* clr r64 */ { FP32_INT64_C(0),                 FP32_x6_UNUSED  } },
     17570            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17571            { /* =>  r32 */ { FP32_INT_C(0),                   FP32_x7_UNUSED  } },
     17572              /*mxcsr:in */ X86_MXCSR_FZ,
     17573              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     17574              /*256:out  */ -1 },
     17575          { { /* clr r64 */ { FP32_INT64_C(0),                FP32_x6_UNUSED  } },
     17576            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17577            { /* =>  r32 */ { FP32_INT_C(0),                  FP32_x7_UNUSED  } },
     17578              /*mxcsr:in */ X86_MXCSR_FZ,
     17579              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     17580              /*256:out  */ -1 },
     17581          { { /* clr r64 */ { FP32_INT64_C(0),                 FP32_x6_UNUSED  } },
     17582            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17583            { /* =>  r32 */ { FP32_INT_C(0),                   FP32_x7_UNUSED  } },
     17584              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17585              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_DOWN,
     17586              /*256:out  */ -1 },
     17587          { { /* clr r64 */ { FP32_INT64_C(0),                FP32_x6_UNUSED  } },
     17588            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17589            { /* =>  r32 */ { FP32_INT_C(0),                  FP32_x7_UNUSED  } },
     17590              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17591              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_UP,
     17592              /*256:out  */ -1 },
     17593          { { /* clr r64 */ { FP32_INT64_C(0),           FP32_x6_UNUSED  } },
     17594            { /* src xmm */ { FP32_NORM_SAFE_INT_MAX(1), FP32_RAND_x7_V2 } },
     17595            { /* =>  r32 */ { FP32_INT_C(-16777215),     FP32_x7_UNUSED  } },
     17596              /*mxcsr:in */ 0,
     17597              /*128:out  */ 0,
     17598              /*256:out  */ -1 },
     17599          { { /* clr r64 */ { FP32_INT64_C(0),           FP32_x6_UNUSED  } },
     17600            { /* src xmm */ { FP32_NORM_SAFE_INT_MAX(0), FP32_RAND_x7_V2 } },
     17601            { /* =>  r32 */ { FP32_INT_C(16777215),      FP32_x7_UNUSED  } },
     17602              /*mxcsr:in */ 0,
     17603              /*128:out  */ 0,
     17604              /*256:out  */ -1 },
     17605    /*
     17606     * Denormals.
     17607     */
     17608    /*20*/{ { /* clr r64 */ { FP32_INT64_C(0),    FP32_x6_UNUSED  } },
     17609            { /* src xmm */ { FP32_DENORM_MAX(0), FP32_RAND_x7_V2 } },
     17610            { /* =>  r32 */ { FP32_INT_C(0),      FP32_x7_UNUSED  } },
     17611              /*mxcsr:in */ 0,
     17612              /*128:out  */ X86_MXCSR_PE,
     17613              /*256:out  */ -1 },
     17614          { { /* clr r64 */ { FP32_INT64_C(0),    FP32_x6_UNUSED  } },
     17615            { /* src xmm */ { FP32_DENORM_MIN(1), FP32_RAND_x7_V2 } },
     17616            { /* =>  r32 */ { FP32_INT_C(0),      FP32_x7_UNUSED  } },
     17617              /*mxcsr:in */ X86_MXCSR_DAZ,
     17618              /*128:out  */ X86_MXCSR_DAZ,
     17619              /*256:out  */ -1 },
     17620    /*
     17621     * Overflow (Underflow not possible).
     17622     */
     17623    /*22*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17624            { /* src xmm */ { FP32_NORM_MAX(0),    FP32_RAND_x7_V2 } },
     17625            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     17626              /*mxcsr:in */ 0,
     17627              /*128:out  */ X86_MXCSR_IE,
     17628              /*256:out  */ -1 },
     17629          { { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17630            { /* src xmm */ { FP32_NORM_MAX(1),    FP32_RAND_x7_V2 } },
     17631            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     17632              /*mxcsr:in */ 0,
     17633              /*128:out  */ X86_MXCSR_IE,
     17634              /*256:out  */ -1 },
     17635    /*
     17636     * Invalids.
     17637     */
     17638    /*24*/{ { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17639            { /* src xmm */ { FP32_QNAN(0),        FP32_RAND_x7_V2 } },
     17640            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     17641              /*mxcsr:in */ 0,
     17642              /*128:out  */ X86_MXCSR_IE,
     17643              /*256:out  */ -1 },
     17644          { { /* clr r64 */ { FP32_INT64_C(0),     FP32_x6_UNUSED  } },
     17645            { /* src xmm */ { FP32_SNAN(1),        FP32_RAND_x7_V2 } },
     17646            { /* =>  r32 */ { FP32_INT_INDEFINITE, FP32_x7_UNUSED  } },
     17647              /*mxcsr:in */ 0,
     17648              /*128:out  */ X86_MXCSR_IE,
     17649              /*256:out  */ -1 },
     17650    };
     17651    static BS3CPUINSTR4_TEST1_VALUES_PS_T const s_aValues64[] =
     17652    {
     17653    /*
     17654     * Zero.
     17655     */
     17656    /* 0*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17657            { /* src xmm */ { FP32_0(0),       FP32_RAND_x7_V1 } },
     17658            { /* =>  r64 */ { FP32_INT64_C(0), FP32_x6_UNUSED  } },
     17659              /*mxcsr:in */ 0,
     17660              /*128:out  */ 0,
     17661              /*256:out  */ -1 },
     17662          { { /* unused  */ { FP32_ROW_UNUSED } },
     17663            { /* src xmm */ { FP32_0(1),       FP32_RAND_x7_V1 } },
     17664            { /* =>  r64 */ { FP32_INT64_C(0), FP32_x6_UNUSED  } },
     17665              /*mxcsr:in */ 0,
     17666              /*128:out  */ 0,
     17667              /*256:out  */ -1 },
     17668    /*
     17669     * Infinity.
     17670     */
     17671    /* 2*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17672            { /* src xmm */ { FP32_INF(1),           FP32_RAND_x7_V1 } },
     17673            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     17674              /*mxcsr:in */ 0,
     17675              /*128:out  */ X86_MXCSR_IE,
     17676              /*256:out  */ -1 },
     17677          { { /* unused  */ { FP32_ROW_UNUSED } },
     17678            { /* src xmm */ { FP32_INF(0),           FP32_RAND_x7_V1 } },
     17679            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     17680              /*mxcsr:in */ 0,
     17681              /*128:out  */ X86_MXCSR_IE,
     17682              /*256:out  */ -1 },
     17683    /*
     17684     * Normals & Precision.
     17685     */
     17686    /* 4*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17687            { /* src xmm */ { FP32_V(0,0x712000,0x8f), FP32_RAND_x7_V0 } },
     17688            { /* =>  r64 */ { FP32_INT64_C(123456),    FP32_x6_UNUSED  } },
     17689              /*mxcsr:in */ 0,
     17690              /*128:out  */ 0,
     17691              /*256:out  */ -1 },
     17692          { { /* unused  */ { FP32_ROW_UNUSED } },
     17693            { /* src xmm */ { FP32_V(1,0x712000,0x8f), FP32_RAND_x7_V0 } },
     17694            { /* =>  r64 */ { FP32_INT64_C(-123456),   FP32_x6_UNUSED  } },
     17695              /*mxcsr:in */ 0,
     17696              /*128:out  */ 0,
     17697              /*256:out  */ -1 },
     17698          { { /* unused  */ { FP32_ROW_UNUSED } },
     17699            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17700            { /* =>  r64 */ { FP32_INT64_C(123456),                FP32_x6_UNUSED  } },
     17701              /*mxcsr:in */ 0,
     17702              /*128:out  */ X86_MXCSR_PE,
     17703              /*256:out  */ -1 },
     17704          { { /* unused  */ { FP32_ROW_UNUSED } },
     17705            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17706            { /* =>  r64 */ { FP32_INT64_C(-123456),                FP32_x6_UNUSED  } },
     17707              /*mxcsr:in */ 0,
     17708              /*128:out  */ X86_MXCSR_PE,
     17709              /*256:out  */ -1 },
     17710          { { /* unused  */ { FP32_ROW_UNUSED } },
     17711            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17712            { /* =>  r64 */ { FP32_INT64_C(123456),                FP32_x6_UNUSED  } },
     17713              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17714              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
     17715              /*256:out  */ -1 },
     17716          { { /* unused  */ { FP32_ROW_UNUSED } },
     17717            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17718            { /* =>  r64 */ { FP32_INT64_C(-123456),                FP32_x6_UNUSED  } },
     17719              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17720              /*128:out  */ X86_MXCSR_RC_DOWN | X86_MXCSR_PE,
     17721              /*256:out  */ -1 },
     17722          { { /* unused  */ { FP32_ROW_UNUSED } },
     17723            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17724            { /* =>  r64 */ { FP32_INT64_C(123456),                FP32_x6_UNUSED  } },
     17725              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17726              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
     17727              /*256:out  */ -1 },
     17728          { { /* unused  */ { FP32_ROW_UNUSED } },
     17729            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17730            { /* =>  r64 */ { FP32_INT64_C(-123456),                FP32_x6_UNUSED  } },
     17731              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17732              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_PE,
     17733              /*256:out  */ -1 },
     17734          { { /* unused  */ { FP32_ROW_UNUSED } },
     17735            { /* src xmm */ { FP32_V(0,0x712073,0x8f)/*123456.9*/, FP32_RAND_x7_V2 } },
     17736            { /* =>  r64 */ { FP32_INT64_C(123456),                FP32_x6_UNUSED  } },
     17737              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     17738              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     17739              /*256:out  */ -1 },
     17740          { { /* unused  */ { FP32_ROW_UNUSED } },
     17741            { /* src xmm */ { FP32_V(1,0x712073,0x8f)/*-123456.9*/, FP32_RAND_x7_V2 } },
     17742            { /* =>  r64 */ { FP32_INT64_C(-123456),                FP32_x6_UNUSED  } },
     17743              /*mxcsr:in */ X86_MXCSR_RC_ZERO,
     17744              /*128:out  */ X86_MXCSR_RC_ZERO | X86_MXCSR_PE,
     17745              /*256:out  */ -1 },
     17746          { { /* unused  */ { FP32_ROW_UNUSED } },
     17747            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17748            { /* =>  r64 */ { FP32_INT64_C(0),                 FP32_x6_UNUSED  } },
     17749              /*mxcsr:in */ X86_MXCSR_FZ,
     17750              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     17751              /*256:out  */ -1 },
     17752          { { /* unused  */ { FP32_ROW_UNUSED } },
     17753            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17754            { /* =>  r64 */ { FP32_INT64_C(0),                FP32_x6_UNUSED  } },
     17755              /*mxcsr:in */ X86_MXCSR_FZ,
     17756              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_FZ,
     17757              /*256:out  */ -1 },
     17758          { { /* unused  */ { FP32_ROW_UNUSED } },
     17759            { /* src xmm */ { FP32_V(1,0x766666,0x7e)/*-0.9*/, FP32_RAND_x7_V2 } },
     17760            { /* =>  r64 */ { FP32_INT64_C(0),                 FP32_x6_UNUSED  } },
     17761              /*mxcsr:in */ X86_MXCSR_RC_DOWN,
     17762              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_DOWN,
     17763              /*256:out  */ -1 },
     17764          { { /* unused  */ { FP32_ROW_UNUSED } },
     17765            { /* src xmm */ { FP32_V(0,0x766666,0x7e)/*0.9*/, FP32_RAND_x7_V2 } },
     17766            { /* =>  r64 */ { FP32_INT64_C(0),                FP32_x6_UNUSED  } },
     17767              /*mxcsr:in */ X86_MXCSR_RC_UP,
     17768              /*128:out  */ X86_MXCSR_PE | X86_MXCSR_RC_UP,
     17769              /*256:out  */ -1 },
     17770          { { /* unused  */ { FP32_ROW_UNUSED } },
     17771            { /* src xmm */ { FP32_NORM_SAFE_INT_MAX(1),   FP32_RAND_x7_V2 } },
     17772            { /* =>  r64 */ { FP32_INT64_C(-16777215),     FP32_x6_UNUSED  } },
     17773              /*mxcsr:in */ 0,
     17774              /*128:out  */ 0,
     17775              /*256:out  */ -1 },
     17776          { { /* unused  */ { FP32_ROW_UNUSED } },
     17777            { /* src xmm */ { FP32_NORM_SAFE_INT_MAX(0),   FP32_RAND_x7_V2 } },
     17778            { /* =>  r64 */ { FP32_INT64_C(16777215),      FP32_x6_UNUSED  } },
     17779              /*mxcsr:in */ 0,
     17780              /*128:out  */ 0,
     17781              /*256:out  */ -1 },
     17782          { { /* unused  */ { FP32_ROW_UNUSED } },
     17783            { /* src xmm */ { FP32_V(0,0x79ccd8,0xbd)/*8999999652602314752.0,*/, FP32_RAND_x7_V2 } },
     17784            { /* =>  r64 */ { FP32_INT64_C(8999999652602314752),                 FP32_x6_UNUSED  } },
     17785              /*mxcsr:in */ 0,
     17786              /*128:out  */ 0,
     17787              /*256:out  */ -1 },
     17788          { { /* unused  */ { FP32_ROW_UNUSED } },
     17789            { /* src xmm */ { FP32_V(1,0x79ccd8,0xbd)/*-8999999652602314752.0,*/, FP32_RAND_x7_V2 } },
     17790            { /* =>  r64 */ { FP32_INT64_C(-8999999652602314752),                 FP32_x6_UNUSED  } },
     17791              /*mxcsr:in */ 0,
     17792              /*128:out  */ 0,
     17793              /*256:out  */ -1 },
     17794          { { /* unused  */ { FP32_ROW_UNUSED } },
     17795            { /* src xmm */ { FP32_V(0,0x79ccd9,0xbd)/*9000000202358128640.0,*/, FP32_RAND_x7_V2 } },
     17796            { /* =>  r64 */ { FP32_INT64_C(9000000202358128640),                 FP32_x6_UNUSED  } },
     17797              /*mxcsr:in */ 0,
     17798              /*128:out  */ 0,
     17799              /*256:out  */ -1 },
     17800          { { /* unused  */ { FP32_ROW_UNUSED } },
     17801            { /* src xmm */ { FP32_V(1,0x79ccd9,0xbd)/*-9000000202358128640.0,*/, FP32_RAND_x7_V2 } },
     17802            { /* =>  r64 */ { FP32_INT64_C(-9000000202358128640),                 FP32_x6_UNUSED  } },
     17803              /*mxcsr:in */ 0,
     17804              /*128:out  */ 0,
     17805              /*256:out  */ -1 },
     17806    /*
     17807     * Denormals.
     17808     */
     17809    /*24*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17810            { /* src xmm */ { FP32_DENORM_MAX(0),   FP32_RAND_x7_V2 } },
     17811            { /* =>  r64 */ { FP32_INT64_C(0),      FP32_x6_UNUSED  } },
     17812              /*mxcsr:in */ 0,
     17813              /*128:out  */ X86_MXCSR_PE,
     17814              /*256:out  */ -1 },
     17815          { { /* unused  */ { FP32_ROW_UNUSED } },
     17816            { /* src xmm */ { FP32_DENORM_MIN(1),   FP32_RAND_x7_V2 } },
     17817            { /* =>  r64 */ { FP32_INT64_C(0),      FP32_x6_UNUSED  } },
     17818              /*mxcsr:in */ X86_MXCSR_DAZ,
     17819              /*128:out  */ X86_MXCSR_DAZ,
     17820              /*256:out  */ -1 },
     17821    /*
     17822     * Overflow (Underflow not possible).
     17823     */
     17824    /*26*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17825            { /* src xmm */ { FP32_NORM_MAX(0),      FP32_RAND_x7_V2 } },
     17826            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     17827              /*mxcsr:in */ 0,
     17828              /*128:out  */ X86_MXCSR_IE,
     17829              /*256:out  */ -1 },
     17830          { { /* unused  */ { FP32_ROW_UNUSED } },
     17831            { /* src xmm */ { FP32_NORM_MAX(1),      FP32_RAND_x7_V2 } },
     17832            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     17833              /*mxcsr:in */ 0,
     17834              /*128:out  */ X86_MXCSR_IE,
     17835              /*256:out  */ -1 },
     17836    /*
     17837     * Invalids.
     17838     */
     17839    /*28*/{ { /* unused  */ { FP32_ROW_UNUSED } },
     17840            { /* src xmm */ { FP32_QNAN(0),          FP32_RAND_x7_V2 } },
     17841            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     17842              /*mxcsr:in */ 0,
     17843              /*128:out  */ X86_MXCSR_IE,
     17844              /*256:out  */ -1 },
     17845          { { /* unused  */ { FP32_ROW_UNUSED } },
     17846            { /* src xmm */ { FP32_SNAN(1),          FP32_RAND_x7_V2 } },
     17847            { /* =>  r64 */ { FP32_INT64_INDEFINITE, FP32_x6_UNUSED  } },
     17848              /*mxcsr:in */ 0,
     17849              /*128:out  */ X86_MXCSR_IE,
     17850              /*256:out  */ -1 },
     17851    };
     17852
     17853    static BS3CPUINSTR4_TEST1_T const s_aTests16[] =
     17854    {
     17855        { bs3CpuInstr4_cvttss2si_EAX_XMM1_icebp_c16,   255,         RM_REG, T_SSE,     EAX, XMM1,  NOREG, PASS_s_aValues32 },
     17856        { bs3CpuInstr4_cvttss2si_EAX_FSxBX_icebp_c16,  255,         RM_MEM, T_SSE,     EAX, FSxBX, NOREG, PASS_s_aValues32 },
     17857
     17858        { bs3CpuInstr4_vcvttss2si_EAX_XMM1_icebp_c16,  255,         RM_REG, T_AVX_128, EAX, XMM1,  NOREG, PASS_s_aValues32 },
     17859        { bs3CpuInstr4_vcvttss2si_EAX_FSxBX_icebp_c16, 255,         RM_MEM, T_AVX_128, EAX, FSxBX, NOREG, PASS_s_aValues32 },
     17860
     17861        { bs3CpuInstr4_vcvttss2si_RAX_XMM1_icebp_c16,  BS3_XCPT_UD, RM_REG, T_AVX_128, RAX, XMM1,  NOREG, PASS_s_aValues64 },
     17862        { bs3CpuInstr4_vcvttss2si_RAX_FSxBX_icebp_c16, BS3_XCPT_UD, RM_MEM, T_AVX_128, RAX, FSxBX, NOREG, PASS_s_aValues64 },
     17863    };
     17864
     17865    static BS3CPUINSTR4_TEST1_T const s_aTests32[] =
     17866    {
     17867        { bs3CpuInstr4_cvttss2si_EAX_XMM1_icebp_c32,   255,         RM_REG, T_SSE,     EAX, XMM1,  NOREG, PASS_s_aValues32 },
     17868        { bs3CpuInstr4_cvttss2si_EAX_FSxBX_icebp_c32,  255,         RM_MEM, T_SSE,     EAX, FSxBX, NOREG, PASS_s_aValues32 },
     17869
     17870        { bs3CpuInstr4_vcvttss2si_EAX_XMM1_icebp_c32,  255,         RM_REG, T_AVX_128, EAX, XMM1,  NOREG, PASS_s_aValues32 },
     17871        { bs3CpuInstr4_vcvttss2si_EAX_FSxBX_icebp_c32, 255,         RM_MEM, T_AVX_128, EAX, FSxBX, NOREG, PASS_s_aValues32 },
     17872
     17873        { bs3CpuInstr4_vcvttss2si_RAX_XMM1_icebp_c32,  BS3_XCPT_UD, RM_REG, T_AVX_128, RAX, XMM1,  NOREG, PASS_s_aValues64 },
     17874        { bs3CpuInstr4_vcvttss2si_RAX_FSxBX_icebp_c32, BS3_XCPT_UD, RM_MEM, T_AVX_128, RAX, FSxBX, NOREG, PASS_s_aValues64 },
     17875    };
     17876    static BS3CPUINSTR4_TEST1_T const s_aTests64[] =
     17877    {
     17878        { bs3CpuInstr4_cvttss2si_EAX_XMM1_icebp_c64,   255,         RM_REG, T_SSE,     EAX, XMM1,  RAX,   PASS_s_aValues32 },
     17879        { bs3CpuInstr4_cvttss2si_EAX_FSxBX_icebp_c64,  255,         RM_MEM, T_SSE,     EAX, FSxBX, RAX,   PASS_s_aValues32 },
     17880
     17881        { bs3CpuInstr4_cvttss2si_R8D_XMM8_icebp_c64,   255,         RM_REG, T_SSE,     R8D, XMM8,  R8,    PASS_s_aValues32 },
     17882        { bs3CpuInstr4_cvttss2si_R8D_FSxBX_icebp_c64,  255,         RM_MEM, T_SSE,     R8D, FSxBX, R8,    PASS_s_aValues32 },
     17883
     17884        { bs3CpuInstr4_vcvttss2si_EAX_XMM1_icebp_c64,  255,         RM_REG, T_AVX_128, EAX, XMM1,  RAX,   PASS_s_aValues32 },
     17885        { bs3CpuInstr4_vcvttss2si_EAX_FSxBX_icebp_c64, 255,         RM_MEM, T_AVX_128, EAX, FSxBX, RAX,   PASS_s_aValues32 },
     17886
     17887        { bs3CpuInstr4_vcvttss2si_R8D_XMM8_icebp_c64,  255,         RM_REG, T_AVX_128, R8D, XMM8,  R8,    PASS_s_aValues32 },
     17888        { bs3CpuInstr4_vcvttss2si_R8D_FSxBX_icebp_c64, 255,         RM_MEM, T_AVX_128, R8D, FSxBX, R8,    PASS_s_aValues32 },
     17889
     17890        { bs3CpuInstr4_cvttss2si_RAX_XMM1_icebp_c64,   255,         RM_REG, T_SSE,     RAX, XMM1,  NOREG, PASS_s_aValues64 },
     17891        { bs3CpuInstr4_cvttss2si_RAX_FSxBX_icebp_c64,  255,         RM_MEM, T_SSE,     RAX, FSxBX, NOREG, PASS_s_aValues64 },
     17892
     17893        { bs3CpuInstr4_cvttss2si_R8_XMM8_icebp_c64,    255,         RM_REG, T_SSE,     R8,  XMM8,  NOREG, PASS_s_aValues64 },
     17894        { bs3CpuInstr4_cvttss2si_R8_FSxBX_icebp_c64,   255,         RM_MEM, T_SSE,     R8,  FSxBX, NOREG, PASS_s_aValues64 },
     17895
     17896        { bs3CpuInstr4_vcvttss2si_RAX_XMM1_icebp_c64,  255,         RM_REG, T_AVX_128, RAX, XMM1,  NOREG, PASS_s_aValues64 },
     17897        { bs3CpuInstr4_vcvttss2si_RAX_FSxBX_icebp_c64, 255,         RM_MEM, T_AVX_128, RAX, FSxBX, NOREG, PASS_s_aValues64 },
     17898
     17899        { bs3CpuInstr4_vcvttss2si_R8_XMM8_icebp_c64,   255,         RM_REG, T_AVX_128, R8,  XMM8,  NOREG, PASS_s_aValues64 },
     17900        { bs3CpuInstr4_vcvttss2si_R8_FSxBX_icebp_c64,  255,         RM_MEM, T_AVX_128, R8,  FSxBX, NOREG, PASS_s_aValues64 },
    1741217901    };
    1741317902
     
    1748117970        { "cvtsi2ss",       bs3CpuInstr4_cvtsi2ss,   0 },
    1748217971        { "cvtss2si",       bs3CpuInstr4_cvtss2si,   0 },
     17972        { "cvttss2si",      bs3CpuInstr4_cvttss2si,  0 },
    1748317973#endif
    1748417974    };
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