VirtualBox

Changeset 61637 in vbox


Ignore:
Timestamp:
Jun 9, 2016 6:49:56 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
107985
Message:

IEM: Quick implementation of movups Wps,Vps.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h

    r61623 r61637  
    15051505/** Opcode 0x0f 0x10. */
    15061506FNIEMOP_STUB(iemOp_movups_Vps_Wps__movupd_Vpd_Wpd__movss_Vss_Wss__movsd_Vsd_Wsd);
     1507
     1508
    15071509/** Opcode 0x0f 0x11. */
    1508 FNIEMOP_STUB(iemOp_movups_Wps_Vps__movupd_Wpd_Vpd__movss_Wss_Vss__movsd_Vsd_Wsd);
     1510FNIEMOP_DEF(iemOp_movups_Wps_Vps__movupd_Wpd_Vpd__movss_Wss_Vss__movsd_Vsd_Wsd)
     1511{
     1512    /* Quick hack. Need to restructure all of this later some time. */
     1513    if (pIemCpu->fPrefixes == 0)
     1514    {
     1515        uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     1516        if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
     1517        {
     1518            /*
     1519             * Register, register.
     1520             */
     1521            IEMOP_HLP_DONE_DECODING_NO_LOCK_REPZ_OR_REPNZ_PREFIXES();
     1522            IEM_MC_BEGIN(0, 0);
     1523            IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     1524            IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
     1525            IEM_MC_COPY_XREG_U128((bRm & X86_MODRM_RM_MASK) | pIemCpu->uRexB,
     1526                                  ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     1527            IEM_MC_ADVANCE_RIP();
     1528            IEM_MC_END();
     1529        }
     1530        else
     1531        {
     1532            /*
     1533             * Memory, register.
     1534             */
     1535            IEM_MC_BEGIN(0, 2);
     1536            IEM_MC_LOCAL(uint128_t,                 uSrc); /** @todo optimize this one day... */
     1537            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     1538
     1539            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     1540            IEMOP_HLP_DONE_DECODING_NO_LOCK_REPZ_OR_REPNZ_PREFIXES(); /** @todo check if this is delayed this long for REPZ/NZ - yes it generally is! */
     1541            IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     1542            IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ();
     1543
     1544            IEM_MC_FETCH_XREG_U128(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pIemCpu->uRexReg);
     1545            IEM_MC_STORE_MEM_U128(pIemCpu->iEffSeg, GCPtrEffSrc, uSrc);
     1546
     1547            IEM_MC_ADVANCE_RIP();
     1548            IEM_MC_END();
     1549        }
     1550        return VINF_SUCCESS;
     1551    }
     1552
     1553    IEMOP_BITCH_ABOUT_STUB();
     1554    return VERR_IEM_INSTR_NOT_IMPLEMENTED;
     1555}
     1556
     1557
    15091558/** Opcode 0x0f 0x12. */
    15101559FNIEMOP_STUB(iemOp_movlps_Vq_Mq__movhlps_Vq_Uq__movlpd_Vq_Mq__movsldup_Vq_Wq__movddup_Vq_Wq); //NEXT
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