Changeset 66792 in vbox
- Timestamp:
- May 4, 2017 12:32:54 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 115204
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r66791 r66792 1695 1695 * @oppfx 0x66 1696 1696 * @opcpuid sse2 1697 * @opgroup og_sse _simdfp_datamove1697 * @opgroup og_sse2_pcksclr_datamove 1698 1698 * @opxcpttype 5 1699 1699 * @optest op1=1 op2=2 -> op1=2 … … 2041 2041 } 2042 2042 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 */ 2054 FNIEMOP_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 2045 2091 2046 2092 /**
Note:
See TracChangeset
for help on using the changeset viewer.