VirtualBox

Changeset 66746 in vbox for trunk


Ignore:
Timestamp:
May 2, 2017 11:46:46 AM (7 years ago)
Author:
vboxsync
Message:

IEM: Implemented movsd Vsd,Wsd (0xf2 0x0f 0x10).

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/disopcode.h

    r66464 r66746  
    10671067#define OP_PARM_WqZxReg         OP_PARM_Wq              /**< Annotates that register targets get their upper bits cleared. */
    10681068#define OP_PARM_VssZxReg        OP_PARM_Vss             /**< Annotates that register targets get their upper bits cleared. */
     1069#define OP_PARM_VsdZxReg        OP_PARM_Vsd             /**< Annotates that register targets get their upper bits cleared. */
    10691070#define OP_PARM_MbRO            OP_PARM_Mb              /**< Annotates read only memory byte operand. */
    10701071#define OP_PARM_MdRO            OP_PARM_Md              /**< Annotates read only memory byte operand. */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsPython.py

    r66479 r66746  
    243243    'VssZxReg': ( 'IDX_UseModRM',   'reg',    '%Vss', 'Vss',     ),
    244244    'Vsd':  ( 'IDX_UseModRM',       'reg',    '%Vsd', 'Vsd',     ),
     245    'VsdZxReg': ( 'IDX_UseModRM',   'reg',    '%Vsd', 'Vsd',     ),
    245246    'Vps':  ( 'IDX_UseModRM',       'reg',    '%Vps', 'Vps',     ),
    246247    'Vpd':  ( 'IDX_UseModRM',       'reg',    '%Vpd', 'Vpd',     ),
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r66745 r66746  
    10501050 * @optest      op1=1 op2=2 -> op1=2
    10511051 * @optest      op1=0 op2=-42 -> op1=-42
    1052  * @oponlytest
    10531052 */
    10541053FNIEMOP_DEF(iemOp_movupd_Vpd_Wpd)
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1-template.c

    r66744 r66746  
    17211721
    17221722
     1723static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd(PBS3CG1STATE pThis, unsigned iEncoding)
     1724{
     1725    unsigned off;
     1726    if (iEncoding == 0)
     1727    {
     1728        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     1729        pThis->abCurInstr[off++] = X86_MODRM_MAKE(3, 1, 0);
     1730        pThis->aOperands[pThis->iRmOp ].idxField = BS3CG1DST_XMM0_LO;
     1731        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM1_LO_ZX;
     1732    }
     1733    else if (iEncoding == 1)
     1734    {
     1735        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM2_LO_ZX;
     1736        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     1737        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 2 /*iReg*/, 8, 0, BS3CG1OPLOC_MEM);
     1738    }
     1739    else if (iEncoding == 2)
     1740    {
     1741        pThis->aOperands[pThis->iRegOp].idxField = BS3CG1DST_XMM3_LO_ZX;
     1742        off = Bs3Cg1InsertOpcodes(pThis, Bs3Cg1InsertReqPrefix(pThis, 0));
     1743        off = Bs3Cfg1EncodeMemMod0Disp(pThis, false, off, 3 /*iReg*/, 8, 1 /*cbMissalign*/, BS3CG1OPLOC_MEM);
     1744    }
     1745    else
     1746        return 0;
     1747    pThis->cbCurInstr = off;
     1748    return iEncoding + 1;
     1749}
     1750
     1751
    17231752static unsigned BS3_NEAR_CODE Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_Gv_Ma(PBS3CG1STATE pThis, unsigned iEncoding)
    17241753{
     
    21062135        case BS3CG1ENC_MODRM_VssZxReg_Wss:
    21072136            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VssZxReg_Wss(pThis, iEncoding);
     2137        case BS3CG1ENC_MODRM_VsdZxReg_Wsd:
     2138            return Bs3Cg1EncodeNext_BS3CG1ENC_MODRM_VsdZxReg_Wsd(pThis, iEncoding);
    21082139
    21092140        case BS3CG1ENC_MODRM_Gv_Ma:
     
    22852316            pThis->aOperands[0].cbOp = 4;
    22862317            pThis->aOperands[1].cbOp = 4;
     2318            pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX;
     2319            pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX;
     2320            break;
     2321
     2322        case BS3CG1ENC_MODRM_VsdZxReg_Wsd:
     2323            pThis->iRmOp             = 1;
     2324            pThis->iRegOp            = 0;
     2325            pThis->aOperands[0].cbOp = 8;
     2326            pThis->aOperands[1].cbOp = 8;
    22872327            pThis->aOperands[0].enmLocation = BS3CG1OPLOC_CTX;
    22882328            pThis->aOperands[1].enmLocation = BS3CG1OPLOC_CTX;
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-generated-1.h

    r66744 r66746  
    5858    BS3CG1OP_VssZxReg,
    5959    BS3CG1OP_Vsd,
     60    BS3CG1OP_VsdZxReg,
    6061    BS3CG1OP_Vps,
    6162    BS3CG1OP_Vpd,
     
    108109    BS3CG1ENC_MODRM_Vps_Wps,
    109110    BS3CG1ENC_MODRM_VssZxReg_Wss,
     111    BS3CG1ENC_MODRM_VsdZxReg_Wsd,
    110112    BS3CG1ENC_MODRM_MbRO,
    111113    BS3CG1ENC_MODRM_MdRO,
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