VirtualBox

Changeset 66792 in vbox


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

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

File:
1 edited

Legend:

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

    r66791 r66792  
    16951695 * @oppfx       0x66
    16961696 * @opcpuid     sse2
    1697  * @opgroup     og_sse_simdfp_datamove
     1697 * @opgroup     og_sse2_pcksclr_datamove
    16981698 * @opxcpttype  5
    16991699 * @optest      op1=1 op2=2 -> op1=2
     
    20412041}
    20422042
    2043 /** Opcode 0x66 0x0f 0x17 - movhpdv1 Mq, Vq   */
    2044 FNIEMOP_STUB(iemOp_movhpd_Mq_Vq);  //NEXT
     2043
     2044/**
     2045 * @opcode      0x17
     2046 * @opcodesub   !11 mr/reg
     2047 * @oppfx       0x66
     2048 * @opcpuid     sse2
     2049 * @opgroup     og_sse2_pcksclr_datamove
     2050 * @opxcpttype  5
     2051 * @optest      op1=1 op2=2 -> op1=2
     2052 * @optest      op1=0 op2=-42 -> op1=-42
     2053 */
     2054FNIEMOP_DEF(iemOp_movhpd_Mq_Vq)
     2055{
     2056    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     2057    if ((bRm & X86_MODRM_MOD_MASK) != (3 << X86_MODRM_MOD_SHIFT))
     2058    {
     2059        IEMOP_MNEMONIC2(MR_MEM, MOVHPD, movhpd, MqWO, VqHi, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     2060
     2061        IEM_MC_BEGIN(0, 2);
     2062        IEM_MC_LOCAL(uint64_t,                  uSrc);
     2063        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     2064
     2065        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     2066        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     2067        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     2068        IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ();
     2069
     2070        IEM_MC_FETCH_XREG_HI_U64(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);
     2071        IEM_MC_STORE_MEM_U64(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc);
     2072
     2073        IEM_MC_ADVANCE_RIP();
     2074        IEM_MC_END();
     2075        return VINF_SUCCESS;
     2076    }
     2077
     2078    /**
     2079     * @opdone
     2080     * @opmnemonic  ud660f17m3
     2081     * @opcode      0x17
     2082     * @opcodesub   11 mr/reg
     2083     * @oppfx       0x66
     2084     * @opunused    immediate
     2085     * @opcpuid     sse
     2086     * @optest      ->
     2087     */
     2088    return IEMOP_RAISE_INVALID_OPCODE();
     2089}
     2090
    20452091
    20462092/**
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