VirtualBox

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


Ignore:
Timestamp:
Dec 6, 2024 4:38:44 AM (6 weeks ago)
Author:
vboxsync
Message:

ValidationKit/bootsectors: Implement SISD FP testcases for cmps[sd]; bugref:10658; jiraref:VBP-1209

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

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

    r107231 r107238  
    14601460EMIT_INSTR_PLUS_ICEBP_C64 vcmppd, YMM8, YMM8, FSxBX, 01fh ;; same-register
    14611461
     1462;; [v]cmpss
     1463;
     1464EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  000h
     1465EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  001h
     1466EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  002h
     1467EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  003h
     1468EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  004h
     1469EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  005h
     1470EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  006h
     1471EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  007h
     1472EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  008h ;; reserved
     1473EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  011h ;; reserved
     1474EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  022h ;; reserved
     1475EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  043h ;; reserved
     1476EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM2,  084h ;; reserved
     1477EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM1,  000h ;; same-register
     1478EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, XMM1,  006h ;; same-register
     1479EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, FSxBX, 001h
     1480EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, FSxBX, 004h
     1481EMIT_INSTR_PLUS_ICEBP     cmpss,  XMM1, FSxBX, 007h
     1482EMIT_INSTR_PLUS_ICEBP_C64 cmpss,  XMM8, XMM9,  002h
     1483EMIT_INSTR_PLUS_ICEBP_C64 cmpss,  XMM8, XMM8,  005h ;; same-register
     1484EMIT_INSTR_PLUS_ICEBP_C64 cmpss,  XMM8, FSxBX, 003h
     1485
     1486EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  000h
     1487EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  001h
     1488EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  002h
     1489EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  003h
     1490EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  004h
     1491EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  005h
     1492EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  006h
     1493EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  007h
     1494EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  008h
     1495EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  009h
     1496EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  00ah
     1497EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  00bh
     1498EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  00ch
     1499EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  00dh
     1500EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  00eh
     1501EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  00fh
     1502EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  010h
     1503EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  011h
     1504EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  012h
     1505EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  013h
     1506EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  014h
     1507EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  015h
     1508EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  016h
     1509EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  017h
     1510EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  018h
     1511EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  019h
     1512EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  01ah
     1513EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  01bh
     1514EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  01ch
     1515EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  01dh
     1516EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  01eh
     1517EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  01fh
     1518EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  022h ;; reserved
     1519EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM3,  044h ;; reserved
     1520EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM1, XMM1,  005h ;; same-register
     1521EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM1, XMM2,  00ah ;; same-register
     1522EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM1, FSxBX, 00bh ;; same-register
     1523EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM1,  00ch ;; same-register
     1524EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, XMM2,  00eh ;; same-register
     1525EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, FSxBX, 010h
     1526EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, FSxBX, 011h
     1527EMIT_INSTR_PLUS_ICEBP     vcmpss, XMM1, XMM2, FSxBX, 013h
     1528EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM9, XMM10, 016h
     1529EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM9, XMM10, 017h
     1530EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM9, XMM10, 019h
     1531EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM9, XMM9,  01ah ;; same-register
     1532EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM9, XMM10, 0ddh ;; reserved
     1533EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM9, FSxBX, 01dh
     1534EMIT_INSTR_PLUS_ICEBP_C64 vcmpss, XMM8, XMM8, FSxBX, 01fh ;; same-register
     1535
     1536;
     1537;; [v]cmpsd
     1538;
     1539EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  000h
     1540EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  001h
     1541EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  002h
     1542EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  003h
     1543EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  004h
     1544EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  005h
     1545EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  006h
     1546EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  007h
     1547EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  008h ;; reserved
     1548EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  011h ;; reserved
     1549EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  022h ;; reserved
     1550EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  043h ;; reserved
     1551EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM2,  084h ;; reserved
     1552EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM1,  000h ;; same-register
     1553EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, XMM1,  006h ;; same-register
     1554EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, FSxBX, 001h
     1555EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, FSxBX, 004h
     1556EMIT_INSTR_PLUS_ICEBP     cmpsd,  XMM1, FSxBX, 007h
     1557EMIT_INSTR_PLUS_ICEBP_C64 cmpsd,  XMM8, XMM9,  002h
     1558EMIT_INSTR_PLUS_ICEBP_C64 cmpsd,  XMM8, XMM8,  005h ;; same-register
     1559EMIT_INSTR_PLUS_ICEBP_C64 cmpsd,  XMM8, FSxBX, 003h
     1560
     1561EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  000h
     1562EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  001h
     1563EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  002h
     1564EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  003h
     1565EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  004h
     1566EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  005h
     1567EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  006h
     1568EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  007h
     1569EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  008h
     1570EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  009h
     1571EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  00ah
     1572EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  00bh
     1573EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  00ch
     1574EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  00dh
     1575EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  00eh
     1576EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  00fh
     1577EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  010h
     1578EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  011h
     1579EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  012h
     1580EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  013h
     1581EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  014h
     1582EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  015h
     1583EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  016h
     1584EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  017h
     1585EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  018h
     1586EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  019h
     1587EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  01ah
     1588EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  01bh
     1589EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  01ch
     1590EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  01dh
     1591EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  01eh
     1592EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  01fh
     1593EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  022h ;; reserved
     1594EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM3,  044h ;; reserved
     1595EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM1, XMM1,  005h ;; same-register
     1596EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM1, XMM2,  00ah ;; same-register
     1597EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM1, FSxBX, 00bh ;; same-register
     1598EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM1,  00ch ;; same-register
     1599EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, XMM2,  00eh ;; same-register
     1600EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, FSxBX, 010h
     1601EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, FSxBX, 011h
     1602EMIT_INSTR_PLUS_ICEBP     vcmpsd, XMM1, XMM2, FSxBX, 013h
     1603EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM9, XMM10, 016h
     1604EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM9, XMM10, 017h
     1605EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM9, XMM10, 019h
     1606EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM9, XMM9,  01ah ;; same-register
     1607EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM9, XMM10, 0ddh ;; reserved
     1608EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM9, FSxBX, 01dh
     1609EMIT_INSTR_PLUS_ICEBP_C64 vcmpsd, XMM8, XMM8, FSxBX, 01fh ;; same-register
     1610
    14621611;
    14631612;; cvtpi2ps
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-instr-4.c32

    r107231 r107238  
    1924319243    static BS3CPUINSTR4_TEST1_T const s_aTests[] =
    1924419244    {
    19245         { BS3_INSTR4_ALL(cmpps_XMM1_XMM1_000h),        255, RM_REG, T_SSE,     XMM1, XMM1, XMM1, 0x00, PASS_TEST_ARRAY(s_aValuesSR) },
    19246         { BS3_INSTR4_ALL(cmpps_XMM1_XMM1_006h),        255, RM_REG, T_SSE,     XMM1, XMM1, XMM1, 0x06, PASS_TEST_ARRAY(s_aValuesSR) },
     19245        { BS3_INSTR4_ALL(cmpps_XMM1_XMM1_000h),        255, RM_REG, T_SSE,     XMM1, XMM1, NOREG, 0x00, PASS_TEST_ARRAY(s_aValuesSR) },
     19246        { BS3_INSTR4_ALL(cmpps_XMM1_XMM1_006h),        255, RM_REG, T_SSE,     XMM1, XMM1, NOREG, 0x06, PASS_TEST_ARRAY(s_aValuesSR) },
    1924719247        { BS3_INSTR4_ALL(cmpps_XMM1_XMM2_000h),        255, RM_REG, T_SSE,     XMM1, XMM1, XMM2,  0x00, PASS_TEST_ARRAY(s_aValues)   },
    1924819248        { BS3_INSTR4_ALL(cmpps_XMM1_XMM2_001h),        255, RM_REG, T_SSE,     XMM1, XMM1, XMM2,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     
    1926119261        { BS3_INSTR4_ALL(cmpps_XMM1_FSxBX_004h),       255, RM_MEM, T_SSE,     XMM1, XMM1, FSxBX, 0x04, PASS_TEST_ARRAY(s_aValues)   },
    1926219262        { BS3_INSTR4_ALL(cmpps_XMM1_FSxBX_007h),       255, RM_MEM, T_SSE,     XMM1, XMM1, FSxBX, 0x07, PASS_TEST_ARRAY(s_aValues)   },
    19263         { BS3_INSTR4_C64(cmpps_XMM8_XMM8_005h),        255, RM_REG, T_SSE,     XMM8, XMM8, XMM8, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19263        { BS3_INSTR4_C64(cmpps_XMM8_XMM8_005h),        255, RM_REG, T_SSE,     XMM8, XMM8, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
    1926419264        { BS3_INSTR4_C64(cmpps_XMM8_XMM9_002h),        255, RM_REG, T_SSE,     XMM8, XMM8, XMM9,  0x02, PASS_TEST_ARRAY(s_aValues)   },
    1926519265        { BS3_INSTR4_C64(cmpps_XMM8_FSxBX_003h),       255, RM_MEM, T_SSE,     XMM8, XMM8, FSxBX, 0x03, PASS_TEST_ARRAY(s_aValues)   },
    1926619266
    1926719267        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM1_FSxBX_00bh), 255, RM_MEM, T_AVX_128, XMM1, XMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues)   },
    19268         { BS3_INSTR4_ALL(vcmpps_XMM1_XMM1_XMM1_005h),  255, RM_REG, T_AVX_128, XMM1, XMM1, XMM1, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19268        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM1_XMM1_005h),  255, RM_REG, T_AVX_128, XMM1, XMM1, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
    1926919269        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM1_XMM2_00ah),  255, RM_REG, T_AVX_128, XMM1, XMM1, XMM2,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
    1927019270        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_FSxBX_010h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues)   },
     
    1927219272        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_FSxBX_013h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues)   },
    1927319273        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM1_00ch),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM1,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
    19274         { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM2_00eh),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
     19274        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM2_00eh),  255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
    1927519275        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM3_000h),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3,  0x00, PASS_TEST_ARRAY(s_aValues)   },
    1927619276        { BS3_INSTR4_ALL(vcmpps_XMM1_XMM2_XMM3_001h),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     
    1930919309        { BS3_INSTR4_C64(vcmpps_XMM8_XMM8_FSxBX_01fh), 255, RM_MEM, T_AVX_128, XMM8, XMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues)   },
    1931019310        { BS3_INSTR4_C64(vcmpps_XMM8_XMM9_FSxBX_01dh), 255, RM_MEM, T_AVX_128, XMM8, XMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues)   },
    19311         { BS3_INSTR4_C64(vcmpps_XMM8_XMM9_XMM9_01ah),  255, RM_REG, T_AVX_128, XMM8, XMM9, XMM9, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
     19311        { BS3_INSTR4_C64(vcmpps_XMM8_XMM9_XMM9_01ah),  255, RM_REG, T_AVX_128, XMM8, XMM9, NOREG, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
    1931219312        { BS3_INSTR4_C64(vcmpps_XMM8_XMM9_XMM10_016h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x16, PASS_TEST_ARRAY(s_aValues)   },
    1931319313        { BS3_INSTR4_C64(vcmpps_XMM8_XMM9_XMM10_017h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x17, PASS_TEST_ARRAY(s_aValues)   },
     
    1931619316
    1931719317        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM1_FSxBX_00bh), 255, RM_MEM, T_AVX_256, YMM1, YMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues)   },
    19318         { BS3_INSTR4_ALL(vcmpps_YMM1_YMM1_YMM1_005h),  255, RM_REG, T_AVX_256, YMM1, YMM1, YMM1, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19318        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM1_YMM1_005h),  255, RM_REG, T_AVX_256, YMM1, YMM1, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
    1931919319        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM1_YMM2_00ah),  255, RM_REG, T_AVX_256, YMM1, YMM1, YMM2,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
    1932019320        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_FSxBX_010h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues)   },
     
    1932219322        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_FSxBX_013h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues)   },
    1932319323        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_YMM1_00ch),  255, RM_REG, T_AVX_256, YMM1, YMM1, YMM2,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
    19324         { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_YMM2_00eh),  255, RM_REG, T_AVX_256, YMM1, YMM2, YMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
     19324        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_YMM2_00eh),  255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
    1932519325        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_YMM3_000h),  255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3,  0x00, PASS_TEST_ARRAY(s_aValues)   },
    1932619326        { BS3_INSTR4_ALL(vcmpps_YMM1_YMM2_YMM3_001h),  255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     
    1935919359        { BS3_INSTR4_C64(vcmpps_YMM8_YMM8_FSxBX_01fh), 255, RM_MEM, T_AVX_256, YMM8, YMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues)   },
    1936019360        { BS3_INSTR4_C64(vcmpps_YMM8_YMM9_FSxBX_01dh), 255, RM_MEM, T_AVX_256, YMM8, YMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues)   },
    19361         { BS3_INSTR4_C64(vcmpps_YMM8_YMM9_YMM9_01ah),  255, RM_REG, T_AVX_256, YMM8, YMM9, YMM9, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
     19361        { BS3_INSTR4_C64(vcmpps_YMM8_YMM9_YMM9_01ah),  255, RM_REG, T_AVX_256, YMM8, YMM9, NOREG, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
    1936219362        { BS3_INSTR4_C64(vcmpps_YMM8_YMM9_YMM10_016h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x16, PASS_TEST_ARRAY(s_aValues)   },
    1936319363        { BS3_INSTR4_C64(vcmpps_YMM8_YMM9_YMM10_017h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x17, PASS_TEST_ARRAY(s_aValues)   },
     
    1960419604    static BS3CPUINSTR4_TEST1_T const s_aTests[] =
    1960519605    {
    19606         { BS3_INSTR4_ALL(cmppd_XMM1_XMM1_000h),        255, RM_REG, T_SSE2,    XMM1, XMM1, XMM1, 0x00, PASS_TEST_ARRAY(s_aValuesSR) },
    19607         { BS3_INSTR4_ALL(cmppd_XMM1_XMM1_006h),        255, RM_REG, T_SSE2,    XMM1, XMM1, XMM1, 0x06, PASS_TEST_ARRAY(s_aValuesSR) },
     19606        { BS3_INSTR4_ALL(cmppd_XMM1_XMM1_000h),        255, RM_REG, T_SSE2,    XMM1, XMM1, NOREG, 0x00, PASS_TEST_ARRAY(s_aValuesSR) },
     19607        { BS3_INSTR4_ALL(cmppd_XMM1_XMM1_006h),        255, RM_REG, T_SSE2,    XMM1, XMM1, NOREG, 0x06, PASS_TEST_ARRAY(s_aValuesSR) },
    1960819608        { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_000h),        255, RM_REG, T_SSE2,    XMM1, XMM1, XMM2,  0x00, PASS_TEST_ARRAY(s_aValues)   },
    1960919609        { BS3_INSTR4_ALL(cmppd_XMM1_XMM2_001h),        255, RM_REG, T_SSE2,    XMM1, XMM1, XMM2,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     
    1962219622        { BS3_INSTR4_ALL(cmppd_XMM1_FSxBX_004h),       255, RM_MEM, T_SSE2,    XMM1, XMM1, FSxBX, 0x04, PASS_TEST_ARRAY(s_aValues)   },
    1962319623        { BS3_INSTR4_ALL(cmppd_XMM1_FSxBX_007h),       255, RM_MEM, T_SSE2,    XMM1, XMM1, FSxBX, 0x07, PASS_TEST_ARRAY(s_aValues)   },
    19624         { BS3_INSTR4_C64(cmppd_XMM8_XMM8_005h),        255, RM_REG, T_SSE2,    XMM8, XMM8, XMM8, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19624        { BS3_INSTR4_C64(cmppd_XMM8_XMM8_005h),        255, RM_REG, T_SSE2,    XMM8, XMM8, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
    1962519625        { BS3_INSTR4_C64(cmppd_XMM8_XMM9_002h),        255, RM_REG, T_SSE2,    XMM8, XMM8, XMM9,  0x02, PASS_TEST_ARRAY(s_aValues)   },
    1962619626        { BS3_INSTR4_C64(cmppd_XMM8_FSxBX_003h),       255, RM_MEM, T_SSE2,    XMM8, XMM8, FSxBX, 0x03, PASS_TEST_ARRAY(s_aValues)   },
    1962719627
    1962819628        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_FSxBX_00bh), 255, RM_MEM, T_AVX_128, XMM1, XMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues)   },
    19629         { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_XMM1_005h),  255, RM_REG, T_AVX_128, XMM1, XMM1, XMM1, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19629        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_XMM1_005h),  255, RM_REG, T_AVX_128, XMM1, XMM1, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
    1963019630        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM1_XMM2_00ah),  255, RM_REG, T_AVX_128, XMM1, XMM1, XMM2,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
    1963119631        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_FSxBX_010h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues)   },
     
    1963319633        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_FSxBX_013h), 255, RM_MEM, T_AVX_128, XMM1, XMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues)   },
    1963419634        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM1_00ch),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM1,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
    19635         { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM2_00eh),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
     19635        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM2_00eh),  255, RM_REG, T_AVX_128, XMM1, XMM2, NOREG, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
    1963619636        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_000h),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3,  0x00, PASS_TEST_ARRAY(s_aValues)   },
    1963719637        { BS3_INSTR4_ALL(vcmppd_XMM1_XMM2_XMM3_001h),  255, RM_REG, T_AVX_128, XMM1, XMM2, XMM3,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     
    1967019670        { BS3_INSTR4_C64(vcmppd_XMM8_XMM8_FSxBX_01fh), 255, RM_MEM, T_AVX_128, XMM8, XMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues)   },
    1967119671        { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_FSxBX_01dh), 255, RM_MEM, T_AVX_128, XMM8, XMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues)   },
    19672         { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM9_01ah),  255, RM_REG, T_AVX_128, XMM8, XMM9, XMM9, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
     19672        { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM9_01ah),  255, RM_REG, T_AVX_128, XMM8, XMM9, NOREG, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
    1967319673        { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM10_016h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x16, PASS_TEST_ARRAY(s_aValues)   },
    1967419674        { BS3_INSTR4_C64(vcmppd_XMM8_XMM9_XMM10_017h), 255, RM_REG, T_AVX_128, XMM8, XMM9, XMM10, 0x17, PASS_TEST_ARRAY(s_aValues)   },
     
    1967719677
    1967819678        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_FSxBX_00bh), 255, RM_MEM, T_AVX_256, YMM1, YMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues)   },
    19679         { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_YMM1_005h),  255, RM_REG, T_AVX_256, YMM1, YMM1, YMM1, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19679        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_YMM1_005h),  255, RM_REG, T_AVX_256, YMM1, YMM1, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
    1968019680        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM1_YMM2_00ah),  255, RM_REG, T_AVX_256, YMM1, YMM1, YMM2,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
    1968119681        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_FSxBX_010h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues)   },
     
    1968319683        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_FSxBX_013h), 255, RM_MEM, T_AVX_256, YMM1, YMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues)   },
    1968419684        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM1_00ch),  255, RM_REG, T_AVX_256, YMM1, YMM1, YMM2,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
    19685         { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM2_00eh),  255, RM_REG, T_AVX_256, YMM1, YMM2, YMM2, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
     19685        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM2_00eh),  255, RM_REG, T_AVX_256, YMM1, YMM2, NOREG, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
    1968619686        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_000h),  255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3,  0x00, PASS_TEST_ARRAY(s_aValues)   },
    1968719687        { BS3_INSTR4_ALL(vcmppd_YMM1_YMM2_YMM3_001h),  255, RM_REG, T_AVX_256, YMM1, YMM2, YMM3,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     
    1972019720        { BS3_INSTR4_C64(vcmppd_YMM8_YMM8_FSxBX_01fh), 255, RM_MEM, T_AVX_256, YMM8, YMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues)   },
    1972119721        { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_FSxBX_01dh), 255, RM_MEM, T_AVX_256, YMM8, YMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues)   },
    19722         { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM9_01ah),  255, RM_REG, T_AVX_256, YMM8, YMM9, YMM9, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
     19722        { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM9_01ah),  255, RM_REG, T_AVX_256, YMM8, YMM9, NOREG, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
    1972319723        { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM10_016h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x16, PASS_TEST_ARRAY(s_aValues)   },
    1972419724        { BS3_INSTR4_C64(vcmppd_YMM8_YMM9_YMM10_017h), 255, RM_REG, T_AVX_256, YMM8, YMM9, YMM10, 0x17, PASS_TEST_ARRAY(s_aValues)   },
     
    1972819728
    1972919729    return bs3CpuInstr4_WorkerTestType1_P(bMode, PASS_ARRAY(s_aTests), PASS_ARRAY(g_aXcptConfig2), bs3CpuInstr4_WorkerTestType1_Provider_cmppd);
     19730}
     19731
     19732
     19733typedef struct BS3CPUINSTR4_CMPSS_VALUES_T
     19734{
     19735    RTFLOAT32U          uSrc2;
     19736    RTFLOAT32U          uSrc1;
     19737    uint8_t             uDst;                   /**< Result value, encoded as a CMP_XX_T comparison predicate */
     19738    uint16_t            uMxCsr;                 /**< MXCSR to set prior to executing the instruction. */
     19739    uint16_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
     19740} BS3CPUINSTR4_CMPSS_VALUES_T;
     19741
     19742static DECLCALLBACK(PBS3CPUINSTR4_TEST1_VALUES_T) bs3CpuInstr4_WorkerTestType1_Provider_cmpss(void *paValues, const unsigned cValues, const unsigned iVal, uint8_t uExtra)
     19743{
     19744    static BS3CPUINSTR4_TEST1_VALUES_SS_T sValues;
     19745    BS3CPUINSTR4_CMPSS_VALUES_T *psValuesIn = &((BS3CPUINSTR4_CMPSS_VALUES_T *)paValues)[iVal];
     19746    unsigned iCnt;
     19747    uint8_t uPredicate;
     19748    uint8_t uCmpResult;
     19749    bool fSignaling;
     19750
     19751    BS3_ASSERT(uExtra < 32);
     19752    uPredicate = g_aCmpPredicate[uExtra] & CMP_ORDERING_MASK;
     19753    fSignaling = (g_aCmpPredicate[uExtra] & CMP_IE_T) == CMP_IE_T;
     19754
     19755    sValues.uSrc1.ymm.au32[0] = psValuesIn->uSrc1.u;
     19756    sValues.uSrc2.ymm.au32[0] = psValuesIn->uSrc2.u;
     19757    sValues.u128ExpectedMxCsr = psValuesIn->u128ExpectedMxCsr;
     19758    uCmpResult = psValuesIn->uDst;
     19759    if (uCmpResult == CMP_IE_T || (uCmpResult == CMP_UN_T && fSignaling))
     19760        sValues.u128ExpectedMxCsr |= X86_MXCSR_IE;
     19761    if (uCmpResult == CMP_IE_T) uCmpResult = CMP_UN_T;
     19762    sValues.uDstOut.ymm.au32[0] = (uCmpResult & uPredicate) ? 0xFFFFFFFF : 0;
     19763
     19764    for (iCnt = 1; iCnt < RT_ELEMENTS(sValues.uSrc1.ymm.au32) / 2; iCnt++)
     19765    {
     19766        sValues.uSrc1.ymm.au32[iCnt] = bs3CpuInstrX_SimpleRand();
     19767        sValues.uSrc2.ymm.au32[iCnt] = bs3CpuInstrX_SimpleRand();
     19768        sValues.uDstOut.ymm.au32[iCnt] = sValues.uSrc1.ymm.au32[iCnt];
     19769    }
     19770    sValues.uMxCsr = psValuesIn->uMxCsr;
     19771    sValues.afEflOut = 0;
     19772    return (PBS3CPUINSTR4_TEST1_VALUES_T)&sValues;
     19773}
     19774
     19775/*
     19776 * [V]CMPSS.
     19777 */
     19778BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_cmpss(uint8_t bMode)
     19779{
     19780    static BS3CPUINSTR4_CMPSS_VALUES_T const s_aValues[] =
     19781    {
     19782              /*src2*/            /*src1*/             /* => */  /*mxcsr:in*/          /*128:out*/
     19783        /* Zero. */
     19784    /* 0*/{   FP32_0(0),          FP32_0(0),           CMP_EQ_T, 0,                    0                    },
     19785          {   FP32_0(0),          FP32_0(1),           CMP_EQ_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19786          {   FP32_0(1),          FP32_0(0),           CMP_EQ_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19787          {   FP32_0(1),          FP32_0(1),           CMP_EQ_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19788        /* Infinity. */
     19789    /* 4*/{   FP32_INF(0),        FP32_INF(0),         CMP_EQ_T, 0,                    0                    },
     19790          {   FP32_INF(0),        FP32_INF(1),         CMP_GT_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19791          {   FP32_INF(1),        FP32_INF(1),         CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19792          {   FP32_INF(1),        FP32_INF(0),         CMP_LT_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19793          {   FP32_INF(0),        FP32_0(0),           CMP_GT_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19794          {   FP32_INF(1),        FP32_0(1),           CMP_LT_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19795        /* Normals. */
     19796    /*10*/{   FP32_2(0),          FP32_2(0),           CMP_EQ_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19797          {   FP32_2(0),          FP32_2(1),           CMP_GT_T, X86_MXCSR_FZ,         X86_MXCSR_FZ         },
     19798          {   FP32_2(1),          FP32_2(0),           CMP_LT_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19799          {   FP32_0(0),          FP32_2(1),           CMP_GT_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19800          {   FP32_NORM_V0(0),    FP32_NORM_V0(0),     CMP_EQ_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19801          {   FP32_NORM_V1(0),    FP32_NORM_V2(0),     CMP_GT_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19802          {   FP32_NORM_V2(1),    FP32_NORM_V1(1),     CMP_GT_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19803          {   FP32_RAND_V1(0),    FP32_RAND_V2(0),     CMP_LT_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19804          {   FP32_RAND_V2(1),    FP32_RAND_V1(1),     CMP_LT_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19805          {   FP32_0_5(0),        FP32_0_5(0),         CMP_EQ_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19806          {   FP32_0_5(0),        FP32_0_5_DN(0),      CMP_GT_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19807          {   FP32_0_5(0),        FP32_0_5_UP(0),      CMP_LT_T, X86_MXCSR_FZ,         X86_MXCSR_FZ         },
     19808          {   FP32_0_5(1),        FP32_0_5(1),         CMP_EQ_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19809          {   FP32_0_5(1),        FP32_0_5_DN(1),      CMP_LT_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19810          {   FP32_0_5(1),        FP32_0_5_UP(1),      CMP_GT_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19811        /* Denormals. */
     19812    /*25*/{   FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),  CMP_EQ_T, 0,                    X86_MXCSR_DE         },
     19813          {   FP32_DENORM_MAX(1), FP32_DENORM_MAX(0),  CMP_LT_T, 0,                    X86_MXCSR_DE         },
     19814          {   FP32_DENORM_MIN(0), FP32_DENORM_MIN(1),  CMP_GT_T, 0,                    X86_MXCSR_DE         },
     19815          {   FP32_DENORM_MAX(0), FP32_0(0),           CMP_GT_T, 0,                    X86_MXCSR_DE         },
     19816          {   FP32_0(1),          FP32_DENORM_MIN(0),  CMP_LT_T, 0,                    X86_MXCSR_DE         },
     19817          {   FP32_DENORM_MAX(1), FP32_DENORM_MAX(0),  CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19818          {   FP32_DENORM_MIN(0), FP32_DENORM_MAX(1),  CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19819          {   FP32_0(0),          FP32_DENORM_MAX(0),  CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19820        /* Invalids. */
     19821    /*33*/{   FP32_QNAN(0),       FP32_0(1),           CMP_UN_T, 0,                    0                    },
     19822          {   FP32_INF(1),        FP32_QNAN(1),        CMP_UN_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19823          {   FP32_SNAN_V1(0),    FP32_NORM_V2(0),     CMP_IE_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19824          {   FP32_RAND_V3(1),    FP32_SNAN_V3(1),     CMP_IE_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19825          {   FP32_DENORM_MAX(0), FP32_QNAN_V1(1),     CMP_UN_T, 0,                    0                    },
     19826          {   FP32_SNAN_V2(0),    FP32_DENORM_MIN(1),  CMP_IE_T, 0,                    0                    },
     19827        /* Precision, Overflow, Underflow not possible. */
     19828    };
     19829    static BS3CPUINSTR4_CMPSS_VALUES_T const s_aValuesSR[] =
     19830    {
     19831        /* Zero. */
     19832    /* 0*/{   FP32_0(0),          FP32_0(0),           CMP_EQ_T, 0,                    0                    },
     19833        /* Infinity. */
     19834    /* 1*/{   FP32_INF(0),        FP32_INF(0),         CMP_EQ_T, 0,                    0                    },
     19835        /* Normals. */
     19836    /* 2*/{   FP32_2(0),          FP32_2(0),           CMP_EQ_T, 0,                    0                    },
     19837        /* Denormals. */
     19838    /* 4*/{   FP32_DENORM_MAX(0), FP32_DENORM_MAX(0),  CMP_EQ_T, 0,                    X86_MXCSR_DE         },
     19839        /* Invalids. */
     19840    /* 5*/{   FP32_QNAN(0),       FP32_QNAN(0),        CMP_UN_T, 0,                    0                    },
     19841          {   FP32_SNAN(0),       FP32_SNAN(0),        CMP_IE_T, 0,                    0                    },
     19842        /* Precision, Overflow, Underflow not possible. */
     19843    };
     19844
     19845    static BS3CPUINSTR4_TEST1_T const s_aTests[] =
     19846    {
     19847        { BS3_INSTR4_ALL(cmpss_XMM1_XMM1_000h),        255, RM_REG,   T_SSE,     XMM1, XMM1, NOREG, 0x00, PASS_TEST_ARRAY(s_aValuesSR) },
     19848        { BS3_INSTR4_ALL(cmpss_XMM1_XMM1_006h),        255, RM_REG,   T_SSE,     XMM1, XMM1, NOREG, 0x06, PASS_TEST_ARRAY(s_aValuesSR) },
     19849        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_000h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x00, PASS_TEST_ARRAY(s_aValues)   },
     19850        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_001h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     19851        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_002h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x02, PASS_TEST_ARRAY(s_aValues)   },
     19852        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_003h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x03, PASS_TEST_ARRAY(s_aValues)   },
     19853        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_004h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x04, PASS_TEST_ARRAY(s_aValues)   },
     19854        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_005h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x05, PASS_TEST_ARRAY(s_aValues)   },
     19855        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_006h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x06, PASS_TEST_ARRAY(s_aValues)   },
     19856        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_007h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x07, PASS_TEST_ARRAY(s_aValues)   },
     19857        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_008h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x00, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19858        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_011h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x01, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19859        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_022h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x02, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19860        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_043h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x03, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19861        { BS3_INSTR4_ALL(cmpss_XMM1_XMM2_084h),        255, RM_REG,   T_SSE,     XMM1, XMM1, XMM2,  0x04, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19862        { BS3_INSTR4_ALL(cmpss_XMM1_FSxBX_001h),       255, RM_MEM32, T_SSE,     XMM1, XMM1, FSxBX, 0x01, PASS_TEST_ARRAY(s_aValues)   },
     19863        { BS3_INSTR4_ALL(cmpss_XMM1_FSxBX_004h),       255, RM_MEM32, T_SSE,     XMM1, XMM1, FSxBX, 0x04, PASS_TEST_ARRAY(s_aValues)   },
     19864        { BS3_INSTR4_ALL(cmpss_XMM1_FSxBX_007h),       255, RM_MEM32, T_SSE,     XMM1, XMM1, FSxBX, 0x07, PASS_TEST_ARRAY(s_aValues)   },
     19865        { BS3_INSTR4_C64(cmpss_XMM8_XMM8_005h),        255, RM_REG,   T_SSE,     XMM8, XMM8, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19866        { BS3_INSTR4_C64(cmpss_XMM8_XMM9_002h),        255, RM_REG,   T_SSE,     XMM8, XMM8, XMM9,  0x02, PASS_TEST_ARRAY(s_aValues)   },
     19867        { BS3_INSTR4_C64(cmpss_XMM8_FSxBX_003h),       255, RM_MEM32, T_SSE,     XMM8, XMM8, FSxBX, 0x03, PASS_TEST_ARRAY(s_aValues)   },
     19868
     19869        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM1_FSxBX_00bh), 255, RM_MEM32, T_AVX_128, XMM1, XMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues)   },
     19870        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM1_XMM1_005h),  255, RM_REG,   T_AVX_128, XMM1, XMM1, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     19871        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM1_XMM2_00ah),  255, RM_REG,   T_AVX_128, XMM1, XMM1, XMM2,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
     19872        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_FSxBX_010h), 255, RM_MEM32, T_AVX_128, XMM1, XMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues)   },
     19873        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_FSxBX_011h), 255, RM_MEM32, T_AVX_128, XMM1, XMM2, FSxBX, 0x11, PASS_TEST_ARRAY(s_aValues)   },
     19874        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_FSxBX_013h), 255, RM_MEM32, T_AVX_128, XMM1, XMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues)   },
     19875        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM1_00ch),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM1,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
     19876        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM2_00eh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, NOREG, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
     19877        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_000h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x00, PASS_TEST_ARRAY(s_aValues)   },
     19878        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_001h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     19879        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_002h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x02, PASS_TEST_ARRAY(s_aValues)   },
     19880        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_003h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x03, PASS_TEST_ARRAY(s_aValues)   },
     19881        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_004h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x04, PASS_TEST_ARRAY(s_aValues)   },
     19882        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_005h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x05, PASS_TEST_ARRAY(s_aValues)   },
     19883        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_006h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x06, PASS_TEST_ARRAY(s_aValues)   },
     19884        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_007h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x07, PASS_TEST_ARRAY(s_aValues)   },
     19885        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_008h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x08, PASS_TEST_ARRAY(s_aValues)   },
     19886        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_009h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x09, PASS_TEST_ARRAY(s_aValues)   },
     19887        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_00ah),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
     19888        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_00bh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0b, PASS_TEST_ARRAY(s_aValues)   },
     19889        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_00ch),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
     19890        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_00dh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0d, PASS_TEST_ARRAY(s_aValues)   },
     19891        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_00eh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0e, PASS_TEST_ARRAY(s_aValues)   },
     19892        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_00fh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0f, PASS_TEST_ARRAY(s_aValues)   },
     19893        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_010h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x10, PASS_TEST_ARRAY(s_aValues)   },
     19894        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_011h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x11, PASS_TEST_ARRAY(s_aValues)   },
     19895        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_012h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x12, PASS_TEST_ARRAY(s_aValues)   },
     19896        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_013h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x13, PASS_TEST_ARRAY(s_aValues)   },
     19897        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_014h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x14, PASS_TEST_ARRAY(s_aValues)   },
     19898        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_015h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x15, PASS_TEST_ARRAY(s_aValues)   },
     19899        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_016h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x16, PASS_TEST_ARRAY(s_aValues)   },
     19900        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_017h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x17, PASS_TEST_ARRAY(s_aValues)   },
     19901        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_018h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x18, PASS_TEST_ARRAY(s_aValues)   },
     19902        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_019h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x19, PASS_TEST_ARRAY(s_aValues)   },
     19903        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_01ah),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1a, PASS_TEST_ARRAY(s_aValues)   },
     19904        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_01bh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1b, PASS_TEST_ARRAY(s_aValues)   },
     19905        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_01ch),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1c, PASS_TEST_ARRAY(s_aValues)   },
     19906        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_01dh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1d, PASS_TEST_ARRAY(s_aValues)   },
     19907        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_01eh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1e, PASS_TEST_ARRAY(s_aValues)   },
     19908        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_01fh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1f, PASS_TEST_ARRAY(s_aValues)   },
     19909        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_022h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x02, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19910        { BS3_INSTR4_ALL(vcmpss_XMM1_XMM2_XMM3_044h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x04, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19911        { BS3_INSTR4_C64(vcmpss_XMM8_XMM8_FSxBX_01fh), 255, RM_MEM32, T_AVX_128, XMM8, XMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues)   },
     19912        { BS3_INSTR4_C64(vcmpss_XMM8_XMM9_FSxBX_01dh), 255, RM_MEM32, T_AVX_128, XMM8, XMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues)   },
     19913        { BS3_INSTR4_C64(vcmpss_XMM8_XMM9_XMM9_01ah),  255, RM_REG,   T_AVX_128, XMM8, XMM9, NOREG, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
     19914        { BS3_INSTR4_C64(vcmpss_XMM8_XMM9_XMM10_016h), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x16, PASS_TEST_ARRAY(s_aValues)   },
     19915        { BS3_INSTR4_C64(vcmpss_XMM8_XMM9_XMM10_017h), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x17, PASS_TEST_ARRAY(s_aValues)   },
     19916        { BS3_INSTR4_C64(vcmpss_XMM8_XMM9_XMM10_019h), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x19, PASS_TEST_ARRAY(s_aValues)   },
     19917        { BS3_INSTR4_C64(vcmpss_XMM8_XMM9_XMM10_0ddh), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x1d, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     19918    };
     19919
     19920    return bs3CpuInstr4_WorkerTestType1_P(bMode, PASS_ARRAY(s_aTests), PASS_ARRAY(g_aXcptConfig3), bs3CpuInstr4_WorkerTestType1_Provider_cmpss);
     19921}
     19922
     19923
     19924typedef struct BS3CPUINSTR4_CMPSD_VALUES_T
     19925{
     19926    RTFLOAT64U          uSrc2;
     19927    RTFLOAT64U          uSrc1;
     19928    uint8_t             uDst;                   /**< Result value, encoded as a CMP_XX_T comparison predicate */
     19929    uint16_t            uMxCsr;                 /**< MXCSR to set prior to executing the instruction. */
     19930    uint16_t            u128ExpectedMxCsr;      /**< Expected MXCSR for a 128-bit instruction. */
     19931} BS3CPUINSTR4_CMPSD_VALUES_T;
     19932
     19933static DECLCALLBACK(PBS3CPUINSTR4_TEST1_VALUES_T) bs3CpuInstr4_WorkerTestType1_Provider_cmpsd(void *paValues, const unsigned cValues, const unsigned iVal, uint8_t uExtra)
     19934{
     19935    static BS3CPUINSTR4_TEST1_VALUES_SD_T sValues;
     19936    BS3CPUINSTR4_CMPSD_VALUES_T *psValuesIn = &((BS3CPUINSTR4_CMPSD_VALUES_T *)paValues)[iVal];
     19937    unsigned iCnt;
     19938    uint8_t uPredicate;
     19939    uint8_t uCmpResult;
     19940    bool fSignaling;
     19941
     19942    BS3_ASSERT(uExtra < 32);
     19943    uPredicate = g_aCmpPredicate[uExtra] & CMP_ORDERING_MASK;
     19944    fSignaling = (g_aCmpPredicate[uExtra] & CMP_IE_T) == CMP_IE_T;
     19945
     19946    sValues.uSrc1.ymm.au64[0] = psValuesIn->uSrc1.u;
     19947    sValues.uSrc2.ymm.au64[0] = psValuesIn->uSrc2.u;
     19948    sValues.u128ExpectedMxCsr = psValuesIn->u128ExpectedMxCsr;
     19949    uCmpResult = psValuesIn->uDst;
     19950    if (uCmpResult == CMP_IE_T || (uCmpResult == CMP_UN_T && fSignaling))
     19951        sValues.u128ExpectedMxCsr |= X86_MXCSR_IE;
     19952    if (uCmpResult == CMP_IE_T) uCmpResult = CMP_UN_T;
     19953    sValues.uDstOut.ymm.au64[0] = (uCmpResult & uPredicate) ? 0xFFFFFFFFFFFFFFFFull : 0;
     19954    for (iCnt = 2; iCnt < RT_ELEMENTS(sValues.uSrc1.ymm.au32) / 2; iCnt++)
     19955    {
     19956        sValues.uSrc1.ymm.au32[iCnt] = bs3CpuInstrX_SimpleRand();
     19957        sValues.uSrc2.ymm.au32[iCnt] = bs3CpuInstrX_SimpleRand();
     19958        sValues.uDstOut.ymm.au32[iCnt] = sValues.uSrc1.ymm.au32[iCnt];
     19959    }
     19960    sValues.uMxCsr = psValuesIn->uMxCsr;
     19961    sValues.afEflOut = 0;
     19962    return (PBS3CPUINSTR4_TEST1_VALUES_T)&sValues;
     19963}
     19964
     19965/*
     19966 * [V]CMPSD.
     19967 */
     19968BS3_DECL_FAR(uint8_t) bs3CpuInstr4_v_cmpsd(uint8_t bMode)
     19969{
     19970    static BS3CPUINSTR4_CMPSD_VALUES_T const s_aValues[] =
     19971    {
     19972              /*src2*/            /*src1*/             /* => */  /*mxcsr:in*/          /*128:out*/
     19973        /* Zero. */
     19974    /* 0*/{   FP64_0(0),          FP64_0(0),           CMP_EQ_T, 0,                    0                    },
     19975          {   FP64_0(0),          FP64_0(1),           CMP_EQ_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19976          {   FP64_0(1),          FP64_0(0),           CMP_EQ_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19977          {   FP64_0(1),          FP64_0(1),           CMP_EQ_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19978        /* Infinity. */
     19979    /* 4*/{   FP64_INF(0),        FP64_INF(0),         CMP_EQ_T, 0,                    0                    },
     19980          {   FP64_INF(0),        FP64_INF(1),         CMP_GT_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19981          {   FP64_INF(1),        FP64_INF(1),         CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19982          {   FP64_INF(1),        FP64_INF(0),         CMP_LT_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19983          {   FP64_INF(0),        FP64_0(0),           CMP_GT_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19984          {   FP64_INF(1),        FP64_0(1),           CMP_LT_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19985        /* Normals. */
     19986    /*10*/{   FP64_2(0),          FP64_2(0),           CMP_EQ_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19987          {   FP64_2(0),          FP64_2(1),           CMP_GT_T, X86_MXCSR_FZ,         X86_MXCSR_FZ         },
     19988          {   FP64_2(1),          FP64_2(0),           CMP_LT_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19989          {   FP64_0(0),          FP64_2(1),           CMP_GT_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19990          {   FP64_NORM_V0(0),    FP64_NORM_V0(0),     CMP_EQ_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19991          {   FP64_NORM_V1(0),    FP64_NORM_V2(0),     CMP_LT_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19992          {   FP64_NORM_V2(1),    FP64_NORM_V1(1),     CMP_LT_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19993          {   FP64_RAND_V1(0),    FP64_RAND_V2(0),     CMP_GT_T, X86_MXCSR_RC_UP,      X86_MXCSR_RC_UP      },
     19994          {   FP64_RAND_V2(1),    FP64_RAND_V1(1),     CMP_GT_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     19995          {   FP64_0_5(0),        FP64_0_5(0),         CMP_EQ_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     19996          {   FP64_0_5(0),        FP64_0_5_DN(0),      CMP_GT_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     19997          {   FP64_0_5(0),        FP64_0_5_UP(0),      CMP_LT_T, X86_MXCSR_FZ,         X86_MXCSR_FZ         },
     19998          {   FP64_0_5(1),        FP64_0_5(1),         CMP_EQ_T, X86_MXCSR_RC_NEAREST, X86_MXCSR_RC_NEAREST },
     19999          {   FP64_0_5(1),        FP64_0_5_DN(1),      CMP_LT_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     20000          {   FP64_0_5(1),        FP64_0_5_UP(1),      CMP_GT_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     20001        /* Denormals. */
     20002    /*25*/{   FP64_DENORM_MAX(0), FP64_DENORM_MAX(0),  CMP_EQ_T, 0,                    X86_MXCSR_DE         },
     20003          {   FP64_DENORM_MAX(1), FP64_DENORM_MAX(0),  CMP_LT_T, 0,                    X86_MXCSR_DE         },
     20004          {   FP64_DENORM_MIN(0), FP64_DENORM_MIN(1),  CMP_GT_T, 0,                    X86_MXCSR_DE         },
     20005          {   FP64_DENORM_MAX(0), FP64_0(0),           CMP_GT_T, 0,                    X86_MXCSR_DE         },
     20006          {   FP64_0(1),          FP64_DENORM_MIN(0),  CMP_LT_T, 0,                    X86_MXCSR_DE         },
     20007          {   FP64_DENORM_MAX(1), FP64_DENORM_MAX(0),  CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     20008          {   FP64_DENORM_MIN(0), FP64_DENORM_MAX(1),  CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     20009          {   FP64_0(0),          FP64_DENORM_MAX(0),  CMP_EQ_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     20010        /* Invalids. */
     20011    /*33*/{   FP64_QNAN(0),       FP64_0(1),           CMP_UN_T, 0,                    0                    },
     20012          {   FP64_INF(1),        FP64_QNAN(1),        CMP_UN_T, X86_MXCSR_RC_ZERO,    X86_MXCSR_RC_ZERO    },
     20013          {   FP64_SNAN_V1(0),    FP64_NORM_V2(0),     CMP_IE_T, X86_MXCSR_DAZ,        X86_MXCSR_DAZ        },
     20014          {   FP64_RAND_V3(1),    FP64_SNAN_V3(1),     CMP_IE_T, X86_MXCSR_RC_DOWN,    X86_MXCSR_RC_DOWN    },
     20015          {   FP64_DENORM_MAX(0), FP64_QNAN_V1(1),     CMP_UN_T, 0,                    0                    },
     20016          {   FP64_SNAN_V2(0),    FP64_DENORM_MIN(1),  CMP_IE_T, 0,                    0                    },
     20017        /* Precision, Overflow, Underflow not possible. */
     20018    };
     20019    static BS3CPUINSTR4_CMPSD_VALUES_T const s_aValuesSR[] =
     20020    {
     20021        /* Zero. */
     20022    /* 0*/{   FP64_0(0),          FP64_0(0),           CMP_EQ_T, 0,                    0                    },
     20023        /* Infinity. */
     20024    /* 1*/{   FP64_INF(0),        FP64_INF(0),         CMP_EQ_T, 0,                    0                    },
     20025        /* Normals. */
     20026    /* 2*/{   FP64_2(0),          FP64_2(0),           CMP_EQ_T, 0,                    0                    },
     20027        /* Denormals. */
     20028    /* 4*/{   FP64_DENORM_MAX(0), FP64_DENORM_MAX(0),  CMP_EQ_T, 0,                    X86_MXCSR_DE         },
     20029        /* Invalids. */
     20030    /* 5*/{   FP64_QNAN(0),       FP64_QNAN(0),        CMP_UN_T, 0,                    0                    },
     20031          {   FP64_SNAN(0),       FP64_SNAN(0),        CMP_IE_T, 0,                    0                    },
     20032        /* Precision, Overflow, Underflow not possible. */
     20033    };
     20034
     20035    static BS3CPUINSTR4_TEST1_T const s_aTests[] =
     20036    {
     20037        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM1_000h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, NOREG, 0x00, PASS_TEST_ARRAY(s_aValuesSR) },
     20038        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM1_006h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, NOREG, 0x06, PASS_TEST_ARRAY(s_aValuesSR) },
     20039        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_000h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x00, PASS_TEST_ARRAY(s_aValues)   },
     20040        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_001h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     20041        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_002h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x02, PASS_TEST_ARRAY(s_aValues)   },
     20042        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_003h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x03, PASS_TEST_ARRAY(s_aValues)   },
     20043        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_004h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x04, PASS_TEST_ARRAY(s_aValues)   },
     20044        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_005h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x05, PASS_TEST_ARRAY(s_aValues)   },
     20045        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_006h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x06, PASS_TEST_ARRAY(s_aValues)   },
     20046        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_007h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x07, PASS_TEST_ARRAY(s_aValues)   },
     20047        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_008h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x00, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20048        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_011h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x01, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20049        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_022h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x02, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20050        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_043h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x03, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20051        { BS3_INSTR4_ALL(cmpsd_XMM1_XMM2_084h),        255, RM_REG,   T_SSE2,    XMM1, XMM1, XMM2,  0x04, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20052        { BS3_INSTR4_ALL(cmpsd_XMM1_FSxBX_001h),       255, RM_MEM64, T_SSE2,    XMM1, XMM1, FSxBX, 0x01, PASS_TEST_ARRAY(s_aValues)   },
     20053        { BS3_INSTR4_ALL(cmpsd_XMM1_FSxBX_004h),       255, RM_MEM64, T_SSE2,    XMM1, XMM1, FSxBX, 0x04, PASS_TEST_ARRAY(s_aValues)   },
     20054        { BS3_INSTR4_ALL(cmpsd_XMM1_FSxBX_007h),       255, RM_MEM64, T_SSE2,    XMM1, XMM1, FSxBX, 0x07, PASS_TEST_ARRAY(s_aValues)   },
     20055        { BS3_INSTR4_C64(cmpsd_XMM8_XMM8_005h),        255, RM_REG,   T_SSE2,    XMM8, XMM8, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     20056        { BS3_INSTR4_C64(cmpsd_XMM8_XMM9_002h),        255, RM_REG,   T_SSE2,    XMM8, XMM8, XMM9,  0x02, PASS_TEST_ARRAY(s_aValues)   },
     20057        { BS3_INSTR4_C64(cmpsd_XMM8_FSxBX_003h),       255, RM_MEM64, T_SSE2,    XMM8, XMM8, FSxBX, 0x03, PASS_TEST_ARRAY(s_aValues)   },
     20058
     20059        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM1_FSxBX_00bh), 255, RM_MEM64, T_AVX_128, XMM1, XMM1, FSxBX, 0x0b, PASS_TEST_ARRAY(s_aValues)   },
     20060        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM1_XMM1_005h),  255, RM_REG,   T_AVX_128, XMM1, XMM1, NOREG, 0x05, PASS_TEST_ARRAY(s_aValuesSR) },
     20061        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM1_XMM2_00ah),  255, RM_REG,   T_AVX_128, XMM1, XMM1, XMM2,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
     20062        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_FSxBX_010h), 255, RM_MEM64, T_AVX_128, XMM1, XMM2, FSxBX, 0x10, PASS_TEST_ARRAY(s_aValues)   },
     20063        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_FSxBX_011h), 255, RM_MEM64, T_AVX_128, XMM1, XMM2, FSxBX, 0x11, PASS_TEST_ARRAY(s_aValues)   },
     20064        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_FSxBX_013h), 255, RM_MEM64, T_AVX_128, XMM1, XMM2, FSxBX, 0x13, PASS_TEST_ARRAY(s_aValues)   },
     20065        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM1_00ch),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM1,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
     20066        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM2_00eh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, NOREG, 0x0e, PASS_TEST_ARRAY(s_aValuesSR) },
     20067        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_000h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x00, PASS_TEST_ARRAY(s_aValues)   },
     20068        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_001h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x01, PASS_TEST_ARRAY(s_aValues)   },
     20069        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_002h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x02, PASS_TEST_ARRAY(s_aValues)   },
     20070        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_003h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x03, PASS_TEST_ARRAY(s_aValues)   },
     20071        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_004h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x04, PASS_TEST_ARRAY(s_aValues)   },
     20072        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_005h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x05, PASS_TEST_ARRAY(s_aValues)   },
     20073        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_006h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x06, PASS_TEST_ARRAY(s_aValues)   },
     20074        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_007h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x07, PASS_TEST_ARRAY(s_aValues)   },
     20075        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_008h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x08, PASS_TEST_ARRAY(s_aValues)   },
     20076        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_009h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x09, PASS_TEST_ARRAY(s_aValues)   },
     20077        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_00ah),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0a, PASS_TEST_ARRAY(s_aValues)   },
     20078        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_00bh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0b, PASS_TEST_ARRAY(s_aValues)   },
     20079        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_00ch),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0c, PASS_TEST_ARRAY(s_aValues)   },
     20080        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_00dh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0d, PASS_TEST_ARRAY(s_aValues)   },
     20081        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_00eh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0e, PASS_TEST_ARRAY(s_aValues)   },
     20082        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_00fh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x0f, PASS_TEST_ARRAY(s_aValues)   },
     20083        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_010h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x10, PASS_TEST_ARRAY(s_aValues)   },
     20084        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_011h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x11, PASS_TEST_ARRAY(s_aValues)   },
     20085        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_012h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x12, PASS_TEST_ARRAY(s_aValues)   },
     20086        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_013h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x13, PASS_TEST_ARRAY(s_aValues)   },
     20087        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_014h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x14, PASS_TEST_ARRAY(s_aValues)   },
     20088        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_015h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x15, PASS_TEST_ARRAY(s_aValues)   },
     20089        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_016h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x16, PASS_TEST_ARRAY(s_aValues)   },
     20090        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_017h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x17, PASS_TEST_ARRAY(s_aValues)   },
     20091        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_018h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x18, PASS_TEST_ARRAY(s_aValues)   },
     20092        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_019h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x19, PASS_TEST_ARRAY(s_aValues)   },
     20093        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_01ah),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1a, PASS_TEST_ARRAY(s_aValues)   },
     20094        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_01bh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1b, PASS_TEST_ARRAY(s_aValues)   },
     20095        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_01ch),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1c, PASS_TEST_ARRAY(s_aValues)   },
     20096        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_01dh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1d, PASS_TEST_ARRAY(s_aValues)   },
     20097        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_01eh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1e, PASS_TEST_ARRAY(s_aValues)   },
     20098        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_01fh),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x1f, PASS_TEST_ARRAY(s_aValues)   },
     20099        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_022h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x02, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20100        { BS3_INSTR4_ALL(vcmpsd_XMM1_XMM2_XMM3_044h),  255, RM_REG,   T_AVX_128, XMM1, XMM2, XMM3,  0x04, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20101        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM8_FSxBX_01fh), 255, RM_MEM64, T_AVX_128, XMM8, XMM8, FSxBX, 0x1f, PASS_TEST_ARRAY(s_aValues)   },
     20102        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM9_FSxBX_01dh), 255, RM_MEM64, T_AVX_128, XMM8, XMM9, FSxBX, 0x1d, PASS_TEST_ARRAY(s_aValues)   },
     20103        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM9_XMM9_01ah),  255, RM_REG,   T_AVX_128, XMM8, XMM9, NOREG, 0x1a, PASS_TEST_ARRAY(s_aValuesSR) },
     20104        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM9_XMM10_016h), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x16, PASS_TEST_ARRAY(s_aValues)   },
     20105        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM9_XMM10_017h), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x17, PASS_TEST_ARRAY(s_aValues)   },
     20106        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM9_XMM10_019h), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x19, PASS_TEST_ARRAY(s_aValues)   },
     20107        { BS3_INSTR4_C64(vcmpsd_XMM8_XMM9_XMM10_0ddh), 255, RM_REG,   T_AVX_128, XMM8, XMM9, XMM10, 0x1d, PASS_TEST_ARRAY(s_aValues)   }, /* reserved */
     20108    };
     20109
     20110    return bs3CpuInstr4_WorkerTestType1_P(bMode, PASS_ARRAY(s_aTests), PASS_ARRAY(g_aXcptConfig3), bs3CpuInstr4_WorkerTestType1_Provider_cmpsd);
    1973020111}
    1973120112
     
    2450824889        { "[v]cmpps",       bs3CpuInstr4_v_cmpps,     0 },
    2450924890        { "[v]cmppd",       bs3CpuInstr4_v_cmppd,     0 },
     24891        { "[v]cmpss",       bs3CpuInstr4_v_cmpss,     0 },
     24892        { "[v]cmpsd",       bs3CpuInstr4_v_cmpsd,     0 },
    2451024893        { "[v]comiss",      bs3CpuInstr4_v_comiss,    0 },
    2451124894        { "[v]ucomiss",     bs3CpuInstr4_v_ucomiss,   0 },
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette