VirtualBox

Changeset 53150 in vbox


Ignore:
Timestamp:
Oct 27, 2014 9:49:17 AM (10 years ago)
Author:
vboxsync
Message:

DIS: #6249: Added missing instructions (starting with 660F3Ah)

Location:
trunk/src/VBox/Disassembler
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Disassembler/DisasmTables.cpp

    r53131 r53150  
    16691669};
    16701670
     1671const DISOPCODE g_aThreeByteMapX86_660F3A_10[16] =
     1672{
     1673    INVALID_OPCODE,
     1674    INVALID_OPCODE,
     1675    INVALID_OPCODE,
     1676    INVALID_OPCODE,
     1677    OP("pextrb %Eb,%Vdq,%Ib",    IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PEXTRB,    OP_PARM_Eb,  OP_PARM_Vdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1678    OP("pextrw %Ew,%Vdq,%Ib",    IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PEXTRW,    OP_PARM_Ew,  OP_PARM_Vdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1679    OP("pextrd %Ed,%Vdq,%Ib",    IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PEXTRD,    OP_PARM_Ed,  OP_PARM_Vdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1680    OP("extractps %Ed,%Vdq,%Ib", IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_EXTRACTPS, OP_PARM_Ed,  OP_PARM_Vdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1681    INVALID_OPCODE,
     1682    INVALID_OPCODE,
     1683    INVALID_OPCODE,
     1684    INVALID_OPCODE,
     1685    INVALID_OPCODE,
     1686    INVALID_OPCODE,
     1687    INVALID_OPCODE,
     1688    INVALID_OPCODE,
     1689};
     1690
     1691const DISOPCODE g_aThreeByteMapX86_660F3A_20[16] =
     1692{
     1693    // vpinsrb %Vdq,%Hdq,%Ry/Mb,%Ib
     1694    OP("pinsrb %Vdq,%Ey,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PINSRB,    OP_PARM_Vdq, OP_PARM_Ey,   OP_PARM_Ib,  DISOPTYPE_HARMLESS),
     1695    // vinsertps %Vdq,%Hdq,%Udq/Md,%Ib
     1696    OP("insertps %Vdq,%Wdq,%Ib",IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_INSERTPS,  OP_PARM_Vdq, OP_PARM_Wdq,  OP_PARM_Ib,  DISOPTYPE_HARMLESS),
     1697    OP("pinsrd %Vdq,%Ey,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PINSRD,    OP_PARM_Vdq, OP_PARM_Ey,   OP_PARM_Ib,  DISOPTYPE_HARMLESS),
     1698    INVALID_OPCODE,
     1699    INVALID_OPCODE,
     1700    INVALID_OPCODE,
     1701    INVALID_OPCODE,
     1702    INVALID_OPCODE,
     1703    INVALID_OPCODE,
     1704    INVALID_OPCODE,
     1705    INVALID_OPCODE,
     1706    INVALID_OPCODE,
     1707    INVALID_OPCODE,
     1708    INVALID_OPCODE,
     1709    INVALID_OPCODE,
     1710    INVALID_OPCODE,
     1711};
     1712
     1713const DISOPCODE g_aThreeByteMapX86_660F3A_40[16] =
     1714{
     1715    OP("dpps %Vdq,%Wdq,%Ib",    IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_DPPS,      OP_PARM_Vdq,  OP_PARM_Wdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1716    OP("dppd %Vdq,%Wdq,%Ib",    IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_DPPD,      OP_PARM_Vdq,  OP_PARM_Wdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1717    OP("mpsadbw %Vdq,%Wdq,%Ib", IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_MPSADBW,   OP_PARM_Vdq,  OP_PARM_Wdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1718    INVALID_OPCODE,
     1719    OP("pclmulqdq %Vdq,%Wdq,%Ib",IDX_ParseModRM,   IDX_UseModRM,   IDX_ParseImmByte,   OP_PCLMULQDQ, OP_PARM_Vdq,  OP_PARM_Wdq,  OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1720    INVALID_OPCODE,
     1721    INVALID_OPCODE,
     1722    INVALID_OPCODE,
     1723    INVALID_OPCODE,
     1724    INVALID_OPCODE,
     1725    INVALID_OPCODE,
     1726    INVALID_OPCODE,
     1727    INVALID_OPCODE,
     1728    INVALID_OPCODE,
     1729    INVALID_OPCODE,
     1730    INVALID_OPCODE,
     1731};
     1732
     1733const DISOPCODE g_aThreeByteMapX86_660F3A_60[16] =
     1734{
     1735    OP("pcmpestrm %Vdq,%Wdq,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PCMPESTRM, OP_PARM_Vdq,   OP_PARM_Wdq,   OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1736    OP("pcmpestri %Vdq,%Wdq,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PCMPESTRI, OP_PARM_Vdq,   OP_PARM_Wdq,   OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1737    OP("pcmpistrm %Vdq,%Wdq,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PCMPISTRM, OP_PARM_Vdq,   OP_PARM_Wdq,   OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1738    OP("pcmpistri %Vdq,%Wdq,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_PCMPISTRI, OP_PARM_Vdq,   OP_PARM_Wdq,   OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1739    INVALID_OPCODE,
     1740    INVALID_OPCODE,
     1741    INVALID_OPCODE,
     1742    INVALID_OPCODE,
     1743    INVALID_OPCODE,
     1744    INVALID_OPCODE,
     1745    INVALID_OPCODE,
     1746    INVALID_OPCODE,
     1747    INVALID_OPCODE,
     1748    INVALID_OPCODE,
     1749    INVALID_OPCODE,
     1750    INVALID_OPCODE,
     1751};
     1752
     1753const DISOPCODE g_aThreeByteMapX86_660F3A_D0[16] =
     1754{
     1755    INVALID_OPCODE,
     1756    INVALID_OPCODE,
     1757    INVALID_OPCODE,
     1758    INVALID_OPCODE,
     1759    INVALID_OPCODE,
     1760    INVALID_OPCODE,
     1761    INVALID_OPCODE,
     1762    INVALID_OPCODE,
     1763    INVALID_OPCODE,
     1764    INVALID_OPCODE,
     1765    INVALID_OPCODE,
     1766    INVALID_OPCODE,
     1767    INVALID_OPCODE,
     1768    INVALID_OPCODE,
     1769    INVALID_OPCODE,
     1770    OP("aeskeygen %Vdq,%Wdq,%Ib",   IDX_ParseModRM,    IDX_UseModRM,   IDX_ParseImmByte,   OP_AESKEYGEN, OP_PARM_Vdq,   OP_PARM_Wdq,   OP_PARM_Ib, DISOPTYPE_HARMLESS),
     1771};
     1772
    16711773/** Three byte opcode map with prefix 0x66 (0xF 0x3A) */
    16721774/** @todo remainder missing (too lazy now) */
     
    16761778    NULL,
    16771779    /* 1 */
    1678     NULL,
     1780    g_aThreeByteMapX86_660F3A_10,
    16791781    /* 2 */
    1680     NULL,
     1782    g_aThreeByteMapX86_660F3A_20,
    16811783    /* 3 */
    16821784    NULL,
    16831785    /* 4 */
    1684     NULL,
     1786    g_aThreeByteMapX86_660F3A_40,
    16851787    /* 5 */
    16861788    NULL,
    16871789    /* 6 */
    1688     NULL,
     1790    g_aThreeByteMapX86_660F3A_60,
    16891791    /* 7 */
    16901792    NULL,
     
    17001802    NULL,
    17011803    /* d */
    1702     NULL,
     1804    g_aThreeByteMapX86_660F3A_D0,
    17031805    /* e */
    17041806    NULL,
  • trunk/src/VBox/Disassembler/testcase/tstDisasm-1A.asm

    r53131 r53150  
    383383        vblendvpd xmm0, xmm1, [100h], xmm3
    384384
     385        dpps xmm0, xmm1, 1
     386
     387        extractps eax, xmm2, 3
     388
    385389        ret
    386390ENDPROC   TestProc64
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