Changeset 66785 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
- Timestamp:
- May 4, 2017 11:48:37 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r66748 r66785 1811 1811 */ 1812 1812 1813 /** Opcode 0x0f 0x16 - movhpsv1 Vdq, Mq movlhps Vdq, Uq */ 1814 FNIEMOP_STUB(iemOp_movhpsv1_Vdq_Mq__movlhps_Vdq_Uq); //NEXT 1813 FNIEMOP_DEF(iemOp_movhps_Vdq_Mq__movlhps_Vdq_Uq) 1814 { 1815 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1816 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 1817 { 1818 /** 1819 * @opcode 0x16 1820 * @opcodesub 11 mr/reg 1821 * @oppfx none 1822 * @opcpuid sse 1823 * @opgroup og_sse_simdfp_datamove 1824 * @opxcpttype 5 1825 * @optest op1=1 op2=2 -> op1=2 1826 * @optest op1=0 op2=-42 -> op1=-42 1827 */ 1828 IEMOP_MNEMONIC2(RM_REG, MOVLHPS, movlhps, VqHi, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 1829 1830 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1831 IEM_MC_BEGIN(0, 1); 1832 IEM_MC_LOCAL(uint64_t, uSrc); 1833 1834 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 1835 IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 1836 IEM_MC_FETCH_XREG_U64(uSrc, (bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB); 1837 IEM_MC_STORE_XREG_HI_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, uSrc); 1838 1839 IEM_MC_ADVANCE_RIP(); 1840 IEM_MC_END(); 1841 } 1842 else 1843 { 1844 /** 1845 * @opdone 1846 * @opcode 0x16 1847 * @opcodesub !11 mr/reg 1848 * @oppfx none 1849 * @opcpuid sse 1850 * @opgroup og_sse_simdfp_datamove 1851 * @opxcpttype 5 1852 * @optest op1=1 op2=2 -> op1=2 1853 * @optest op1=0 op2=-42 -> op1=-42 1854 * @opfunction iemOp_movhps_Vdq_Mq__movlhps_Vdq_Uq 1855 */ 1856 IEMOP_MNEMONIC2(RM_MEM, MOVHPS, movhps, VqHi, Mq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE); 1857 1858 IEM_MC_BEGIN(0, 2); 1859 IEM_MC_LOCAL(uint64_t, uSrc); 1860 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1861 1862 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1863 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1864 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 1865 IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); 1866 1867 IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 1868 IEM_MC_STORE_XREG_HI_U64(((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg, uSrc); 1869 1870 IEM_MC_ADVANCE_RIP(); 1871 IEM_MC_END(); 1872 } 1873 return VINF_SUCCESS; 1874 } 1875 1815 1876 /** Opcode 0x66 0x0f 0x16 - movhpdv1 Vdq, Mq */ 1816 FNIEMOP_STUB(iemOp_movhpd v1_Vdq_Mq); //NEXT1877 FNIEMOP_STUB(iemOp_movhpd_Vdq_Mq); //NEXT 1817 1878 /** Opcode 0xf3 0x0f 0x16 - movshdup Vx, Wx */ 1818 1879 FNIEMOP_STUB(iemOp_movshdup_Vx_Wx); //NEXT … … 1830 1891 1831 1892 /** Opcode 0x0f 0x17 - movhpsv1 Mq, Vq */ 1832 FNIEMOP_STUB(iemOp_movhps v1_Mq_Vq); //NEXT1893 FNIEMOP_STUB(iemOp_movhps_Mq_Vq); //NEXT 1833 1894 /** Opcode 0x66 0x0f 0x17 - movhpdv1 Mq, Vq */ 1834 FNIEMOP_STUB(iemOp_movhpd v1_Mq_Vq); //NEXT1895 FNIEMOP_STUB(iemOp_movhpd_Mq_Vq); //NEXT 1835 1896 1836 1897 /** … … 8558 8619 /* 0x0f */ IEMOP_X4(iemOp_3Dnow), 8559 8620 8560 /* 0x10 */ iemOp_movups_Vps_Wps, iemOp_movupd_Vpd_Wpd, iemOp_movss_Vss_Wss, iemOp_movsd_Vsd_Wsd,8561 /* 0x11 */ iemOp_movups_Wps_Vps, iemOp_movupd_Wpd_Vpd, iemOp_movss_Wss_Vss, iemOp_movsd_Wsd_Vsd,8562 /* 0x12 */ iemOp_movlps_Vq_Mq__movhlps, iemOp_movlpd_Vq_Mq, iemOp_movsldup_Vdq_Wdq, iemOp_movddup_Vdq_Wdq,8563 /* 0x13 */ iemOp_movlps_Mq_Vq, iemOp_movlpd_Mq_Vq, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,8564 /* 0x14 */ iemOp_unpcklps_Vx_Wx, iemOp_unpcklpd_Vx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,8565 /* 0x15 */ iemOp_unpckhps_Vx_Wx, iemOp_unpckhpd_Vx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,8566 /* 0x16 */ iemOp_movhps v1_Vdq_Mq__movlhps_Vdq_Uq, iemOp_movhpdv1_Vdq_Mq, iemOp_movshdup_Vx_Wx,iemOp_InvalidNeedRM,8567 /* 0x17 */ iemOp_movhps v1_Mq_Vq, iemOp_movhpdv1_Mq_Vq,iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,8621 /* 0x10 */ iemOp_movups_Vps_Wps, iemOp_movupd_Vpd_Wpd, iemOp_movss_Vss_Wss, iemOp_movsd_Vsd_Wsd, 8622 /* 0x11 */ iemOp_movups_Wps_Vps, iemOp_movupd_Wpd_Vpd, iemOp_movss_Wss_Vss, iemOp_movsd_Wsd_Vsd, 8623 /* 0x12 */ iemOp_movlps_Vq_Mq__movhlps, iemOp_movlpd_Vq_Mq, iemOp_movsldup_Vdq_Wdq, iemOp_movddup_Vdq_Wdq, 8624 /* 0x13 */ iemOp_movlps_Mq_Vq, iemOp_movlpd_Mq_Vq, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 8625 /* 0x14 */ iemOp_unpcklps_Vx_Wx, iemOp_unpcklpd_Vx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 8626 /* 0x15 */ iemOp_unpckhps_Vx_Wx, iemOp_unpckhpd_Vx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 8627 /* 0x16 */ iemOp_movhps_Vdq_Mq__movlhps_Vdq_Uq, iemOp_movhpd_Vdq_Mq, iemOp_movshdup_Vx_Wx, iemOp_InvalidNeedRM, 8628 /* 0x17 */ iemOp_movhps_Mq_Vq, iemOp_movhpd_Mq_Vq, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 8568 8629 /* 0x18 */ IEMOP_X4(iemOp_prefetch_Grp16), 8569 8630 /* 0x19 */ IEMOP_X4(iemOp_nop_Ev),
Note:
See TracChangeset
for help on using the changeset viewer.