VirtualBox

Changeset 66791 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
May 4, 2017 12:29:02 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
115203
Message:

IEM: Implemented movhps Mq,Vq (0f 17).

File:
1 edited

Legend:

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

    r66789 r66791  
    19931993 */
    19941994
    1995 /** Opcode      0x0f 0x17 - movhpsv1 Mq, Vq   */
    1996 FNIEMOP_STUB(iemOp_movhps_Mq_Vq);  //NEXT
     1995
     1996/**
     1997 * @opcode      0x17
     1998 * @opcodesub   !11 mr/reg
     1999 * @oppfx       none
     2000 * @opcpuid     sse
     2001 * @opgroup     og_sse_simdfp_datamove
     2002 * @opxcpttype  5
     2003 * @optest      op1=1 op2=2 -> op1=2
     2004 * @optest      op1=0 op2=-42 -> op1=-42
     2005 */
     2006FNIEMOP_DEF(iemOp_movhps_Mq_Vq)
     2007{
     2008    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     2009    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     2010    {
     2011        IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, MqWO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     2012
     2013        IEM_MC_BEGIN(0, 2);
     2014        IEM_MC_LOCAL(uint64_t,                  uSrc);
     2015        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     2016
     2017        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     2018        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     2019        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     2020        IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ();
     2021
     2022        IEM_MC_FETCH_XREG_HI_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);
     2023        IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc);
     2024
     2025        IEM_MC_ADVANCE_RIP();
     2026        IEM_MC_END();
     2027        return VINF_SUCCESS;
     2028    }
     2029
     2030    /**
     2031     * @opdone
     2032     * @opmnemonic  ud0f17m3
     2033     * @opcode      0x17
     2034     * @opcodesub   11 mr/reg
     2035     * @oppfx       none
     2036     * @opunused    immediate
     2037     * @opcpuid     sse
     2038     * @optest      ->
     2039     */
     2040    return IEMOP_RAISE_INVALID_OPCODE();
     2041}
     2042
    19972043/** Opcode 0x66 0x0f 0x17 - movhpdv1 Mq, Vq   */
    19982044FNIEMOP_STUB(iemOp_movhpd_Mq_Vq);  //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