Changeset 101952 in vbox for trunk/src/VBox
- Timestamp:
- Nov 8, 2023 2:17:53 AM (13 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f3a.cpp.h
r101387 r101952 835 835 */ 836 836 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 837 IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);837 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 838 838 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 839 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 840 IEM_MC_PREPARE_SSE_USAGE(); 841 842 IEM_MC_LOCAL(uint32_t, uSrc); 843 IEM_MC_FETCH_XREG_U32(uSrc, IEM_GET_MODRM_RM(pVCpu, bRm), (bImm >> 6) & 3); 844 IEM_MC_CLEAR_XREG_U32_MASK(IEM_GET_MODRM_REG(pVCpu, bRm), bImm); 845 IEM_MC_STORE_XREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), (bImm >> 4) & 3, uSrc); 846 847 IEM_MC_ADVANCE_RIP_AND_FINISH(); 848 IEM_MC_END(); 849 } 850 else 851 { 852 /* 853 * XMM, [mem32]. 854 */ 855 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 856 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 857 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 858 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 859 860 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 861 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 862 IEM_MC_PREPARE_SSE_USAGE(); 863 839 864 IEM_MC_LOCAL(uint32_t, uSrc); 840 IEM_MC_LOCAL(uint8_t, uSrcSel); 841 IEM_MC_LOCAL(uint8_t, uDstSel); 842 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 843 IEM_MC_PREPARE_SSE_USAGE(); 844 IEM_MC_ASSIGN(uSrcSel, bImm); 845 IEM_MC_SHR_LOCAL_U8(uSrcSel, 6); 846 IEM_MC_AND_LOCAL_U8(uSrcSel, 3); 847 IEM_MC_FETCH_XREG_U32(uSrc, IEM_GET_MODRM_RM(pVCpu, bRm), uSrcSel); 848 IEM_MC_ASSIGN(uDstSel, bImm); 849 IEM_MC_SHR_LOCAL_U8(uDstSel, 4); 850 IEM_MC_AND_LOCAL_U8(uDstSel, 3); 865 IEM_MC_FETCH_MEM_U32(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 851 866 IEM_MC_CLEAR_XREG_U32_MASK(IEM_GET_MODRM_REG(pVCpu, bRm), bImm); 852 IEM_MC_STORE_XREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), uDstSel, uSrc); 853 IEM_MC_ADVANCE_RIP_AND_FINISH(); 854 IEM_MC_END(); 855 } 856 else 857 { 858 /* 859 * XMM, [mem32]. 860 */ 861 IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 862 IEM_MC_LOCAL(uint32_t, uSrc); 863 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 864 IEM_MC_LOCAL(uint8_t, uDstSel); 865 866 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 867 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 868 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 869 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); 870 IEM_MC_PREPARE_SSE_USAGE(); 871 872 IEM_MC_FETCH_MEM_U32(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 873 IEM_MC_ASSIGN(uDstSel, bImm); 874 IEM_MC_SHR_LOCAL_U8(uDstSel, 4); 875 IEM_MC_AND_LOCAL_U8(uDstSel, 3); 876 IEM_MC_CLEAR_XREG_U32_MASK(IEM_GET_MODRM_REG(pVCpu, bRm), bImm); 877 IEM_MC_STORE_XREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), uDstSel, uSrc); 867 IEM_MC_STORE_XREG_U32(IEM_GET_MODRM_REG(pVCpu, bRm), (bImm >> 4) & 3, uSrc); 878 868 IEM_MC_ADVANCE_RIP_AND_FINISH(); 879 869 IEM_MC_END();
Note:
See TracChangeset
for help on using the changeset viewer.