Changeset 95953 in vbox
- Timestamp:
- Jul 29, 2022 4:16:57 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 152709
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h
r95952 r95953 133 133 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 134 134 IEM_MC_CALL_VOID_AIMPL_2(pfnU64, pDst, pSrc); 135 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 136 IEM_MC_FPU_TO_MMX_MODE(); 137 138 IEM_MC_ADVANCE_RIP(); 139 IEM_MC_END(); 140 } 141 return VINF_SUCCESS; 142 } 143 144 145 /** 146 * Common worker for MMX instructions on the form: 147 * pxxx mm1, mm2/mem64 148 * for instructions introduced with SSE. 149 */ 150 FNIEMOP_DEF_1(iemOpCommonMmxSse_FullFull_To_Full, PFNIEMAIMPLMEDIAF2U64, pfnU64) 151 { 152 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 153 if (IEM_IS_MODRM_REG_MODE(bRm)) 154 { 155 /* 156 * Register, register. 157 */ 158 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 159 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 160 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 161 IEM_MC_BEGIN(2, 0); 162 IEM_MC_ARG(uint64_t *, pDst, 0); 163 IEM_MC_ARG(uint64_t const *, pSrc, 1); 164 IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT_CHECK_SSE_OR_MMXEXT(); 165 IEM_MC_PREPARE_FPU_USAGE(); 166 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 167 IEM_MC_REF_MREG_U64_CONST(pSrc, IEM_GET_MODRM_RM_8(bRm)); 168 IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc); 169 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 170 IEM_MC_FPU_TO_MMX_MODE(); 171 IEM_MC_ADVANCE_RIP(); 172 IEM_MC_END(); 173 } 174 else 175 { 176 /* 177 * Register, memory. 178 */ 179 IEM_MC_BEGIN(2, 2); 180 IEM_MC_ARG(uint64_t *, pDst, 0); 181 IEM_MC_LOCAL(uint64_t, uSrc); 182 IEM_MC_ARG_LOCAL_REF(uint64_t const *, pSrc, uSrc, 1); 183 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 184 185 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 186 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 187 IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT_CHECK_SSE_OR_MMXEXT(); 188 IEM_MC_FETCH_MEM_U64(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 189 190 IEM_MC_PREPARE_FPU_USAGE(); 191 IEM_MC_REF_MREG_U64(pDst, IEM_GET_MODRM_REG_8(bRm)); 192 IEM_MC_CALL_MMX_AIMPL_2(pfnU64, pDst, pSrc); 135 193 IEM_MC_MODIFIED_MREG_BY_REF(pDst); 136 194 IEM_MC_FPU_TO_MMX_MODE(); … … 9900 9958 { 9901 9959 IEMOP_MNEMONIC2(RM, PMINUB, pminub, Pq, Qq, DISOPTYPE_HARMLESS | DISOPTYPE_MMX, IEMOPHINT_IGNORES_OP_SIZES); 9902 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pminub_u64);9960 return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pminub_u64); 9903 9961 } 9904 9962 … … 9975 10033 { 9976 10034 IEMOP_MNEMONIC2(RM, PMAXUB, pmaxub, Pq, Qq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 9977 return FNIEMOP_CALL_1(iemOpCommonMmx _FullFull_To_Full, iemAImpl_pmaxub_u64);10035 return FNIEMOP_CALL_1(iemOpCommonMmxSse_FullFull_To_Full, iemAImpl_pmaxub_u64); 9978 10036 } 9979 10037
Note:
See TracChangeset
for help on using the changeset viewer.