VirtualBox

Ignore:
Timestamp:
Sep 16, 2024 10:22:11 AM (8 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
164821
Message:

ValidationKit/bootsectors: bugref:10658 SIMD FP testcase: [v]maxps - invalids.

File:
1 edited

Legend:

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

    r106056 r106057  
    13281328            { /* =>      */ { FP64_QNAN_V(0, 1),                  FP64_QNAN_V(0, FP64_FRAC_NORM_MAX), FP64_QNAN_V(1, FP64_FRAC_NORM_MAX), FP64_QNAN_V(0, FP64_FRAC_V1) } },       \
    13291329              /*mxcsr:in */ X86_MXCSR_RC_UP,                                                                                                                                      \
    1330               /*128:out  */ X86_MXCSR_RC_UP|X86_MXCSR_IE,                                                                                                                         \
    1331               /*256:out  */ X86_MXCSR_RC_UP|X86_MXCSR_IE,                                                                                                                         \
     1330              /*128:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,                                                                                                                         \
     1331              /*256:out  */ X86_MXCSR_RC_UP | X86_MXCSR_IE,                                                                                                                         \
    13321332              /*xcpt?    */ true, true },                                                                                                                                         \
     1333
     1334/**
     1335 * Table D-9: Packed single-precision floating-point invalid values.
     1336 * For instructions: maxps, minps.
     1337 **/
     1338#define FP32_TABLE_D9_PS_INVALIDS \
     1339    /*0 */{ { /*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) } }, \
     1340            { /*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) } }, \
     1341            { /* =>      */ { 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) } }, \
     1342              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,                                                                                                                                                                                                                              \
     1343              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1344              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1345              /*xcpt?    */ false, false },                                                                                                                                                                                                                                   \
     1346          { { /*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) } }, \
     1347            { /*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) } }, \
     1348            { /* =>      */ { 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) } }, \
     1349              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,                                                                                                                                                                                                                              \
     1350              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1351              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1352              /*xcpt?    */ false, false },                                                                                                                                                                                                                                   \
     1353          { { /*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) } },       \
     1354            { /*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) } },       \
     1355            { /* =>      */ { 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) } },       \
     1356              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ,                                                                                                                                                                                                               \
     1357              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_IE,                                                                                                                                                                                                \
     1358              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_FZ | X86_MXCSR_IE,                                                                                                                                                                                                \
     1359              /*xcpt?    */ false, false },                                                                                                                                                                                                                                   \
     1360          { { /*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) } },       \
     1361            { /*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) } },       \
     1362            { /* =>      */ { 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) } },       \
     1363              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,                                                                                                                                                                                                                              \
     1364              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1365              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1366              /*xcpt?    */ false, false },                                                                                                                                                                                                                                   \
     1367          { { /*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) } },       \
     1368            { /*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)              } },       \
     1369            { /* =>      */ { 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) } },       \
     1370              /*mxcsr:in */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,                                                                                                                                                                                                       \
     1371              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,                                                                                                                                                                                                       \
     1372              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_XCPT_FLAGS,                                                                                                                                                                                                       \
     1373              /*xcpt?    */ false, false },                                                                                                                                                                                                                                   \
     1374          { { /*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) } },       \
     1375            { /*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)              } },       \
     1376            { /* =>      */ { 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) } },       \
     1377              /*mxcsr:in */ X86_MXCSR_XCPT_MASK,                                                                                                                                                                                                                              \
     1378              /*128:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1379              /*256:out  */ X86_MXCSR_XCPT_MASK | X86_MXCSR_IE,                                                                                                                                                                                                               \
     1380              /*xcpt?    */ false, false },                                                                                                                                                                                                                                   \
     1381          { { /*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) } }, \
     1382            { /*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) } }, \
     1383            { /* =>      */ { 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) } }, \
     1384              /*mxcsr:in */ 0,                                                                                                                                                                                                                                                \
     1385              /*128:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1386              /*256:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1387              /*xcpt?    */ true, true },                                                                                                                                                                                                                                     \
     1388          { { /*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) } }, \
     1389            { /*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) } }, \
     1390            { /* =>      */ { 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) } }, \
     1391              /*mxcsr:in */ 0,                                                                                                                                                                                                                                                \
     1392              /*128:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1393              /*256:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1394              /*xcpt?    */ true, true },                                                                                                                                                                                                                                     \
     1395          { { /*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) } },       \
     1396            { /*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) } },       \
     1397            { /* =>      */ { FP32_QNAN(0), FP32_QNAN_V(0, FP32_FRAC_NORM_MIN), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V1), FP32_QNAN_V(0, FP32_FRAC_V3), FP32_QNAN_V(0, FP32_FRAC_V4), FP32_QNAN_V(0, FP32_FRAC_V5), FP32_QNAN_V(0, FP32_FRAC_V6) } },       \
     1398              /*mxcsr:in */ 0,                                                                                                                                                                                                                                                \
     1399              /*128:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1400              /*256:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1401              /*xcpt?    */ true, true },                                                                                                                                                                                                                                     \
     1402          { { /*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) } },       \
     1403            { /*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) } },       \
     1404            { /* =>      */ { 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) } },       \
     1405              /*mxcsr:in */ 0,                                                                                                                                                                                                                                                \
     1406              /*128:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1407              /*256:out  */ X86_MXCSR_IE,                                                                                                                                                                                                                                     \
     1408              /*xcpt?    */ true, true },                                                                                                                                                                                                                                     \
    13331409
    13341410
     
    89699045              /*xcpt?    */ false, false },
    89709046    /** @todo More Denormals. */
     9047    /*35*/ FP32_TABLE_D9_PS_INVALIDS
    89719048    };
    89729049
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