Changeset 105346 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
- Timestamp:
- Jul 16, 2024 10:11:56 AM (7 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r105316 r105346 3737 3737 3738 3738 /** Opcode VEX.66.0F 0x5a - vcvtpd2ps Vps, Wpd */ 3739 FNIEMOP_STUB(iemOp_vcvtpd2ps_Vps_Wpd); 3739 FNIEMOP_DEF(iemOp_vcvtpd2ps_Vps_Wpd) 3740 { 3741 IEMOP_MNEMONIC2(VEX_RM, VCVTPD2PS, vcvtpd2ps, Vps, Wpd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 3742 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 3743 if (IEM_IS_MODRM_REG_MODE(bRm)) 3744 { 3745 /* 3746 * Register, register. 3747 */ 3748 if (pVCpu->iem.s.uVexLength) 3749 { 3750 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 3751 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3752 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3753 IEM_MC_PREPARE_AVX_USAGE(); 3754 3755 IEM_MC_LOCAL( X86YMMREG, uSrc); 3756 IEM_MC_FETCH_YREG_YMM(uSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); 3757 IEM_MC_ARG_LOCAL_REF(PCX86YMMREG, puSrc, uSrc, 1); 3758 IEM_MC_LOCAL( X86XMMREG, uDst); 3759 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, puDst, uDst, 0); 3760 IEM_MC_CALL_AVX_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx, 3761 iemAImpl_vcvtpd2ps_u128_u256, 3762 iemAImpl_vcvtpd2ps_u128_u256_fallback), 3763 puDst, puSrc); 3764 IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); 3765 IEM_MC_STORE_XREG_XMM( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); 3766 IEM_MC_CLEAR_YREG_128_UP(IEM_GET_MODRM_REG(pVCpu, bRm)); 3767 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3768 IEM_MC_END(); 3769 } 3770 else 3771 { 3772 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 3773 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3774 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3775 IEM_MC_PREPARE_AVX_USAGE(); 3776 3777 IEM_MC_ARG( PCX86XMMREG, puSrc, 1); 3778 IEM_MC_REF_XREG_XMM_CONST( puSrc, IEM_GET_MODRM_RM(pVCpu, bRm)); 3779 IEM_MC_LOCAL( X86XMMREG, uDst); 3780 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, puDst, uDst, 0); 3781 IEM_MC_CALL_AVX_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx, 3782 iemAImpl_vcvtpd2ps_u128_u128, 3783 iemAImpl_vcvtpd2ps_u128_u128_fallback), 3784 puDst, puSrc); 3785 IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); 3786 IEM_MC_STORE_XREG_XMM( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); 3787 IEM_MC_CLEAR_YREG_128_UP(IEM_GET_MODRM_REG(pVCpu, bRm)); 3788 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3789 IEM_MC_END(); 3790 } 3791 } 3792 else 3793 { 3794 /* 3795 * Register, memory. 3796 */ 3797 if (pVCpu->iem.s.uVexLength) 3798 { 3799 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 3800 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3801 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 3802 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3803 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3804 IEM_MC_PREPARE_AVX_USAGE(); 3805 3806 IEM_MC_LOCAL( X86YMMREG, uSrc); 3807 IEM_MC_ARG_LOCAL_REF(PCX86YMMREG, puSrc, uSrc, 1); 3808 IEM_MC_FETCH_MEM_YMM_NO_AC(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 3809 IEM_MC_LOCAL( X86XMMREG, uDst); 3810 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, puDst, uDst, 0); 3811 IEM_MC_CALL_AVX_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx, 3812 iemAImpl_vcvtpd2ps_u128_u256, 3813 iemAImpl_vcvtpd2ps_u128_u256_fallback), 3814 puDst, puSrc); 3815 IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); 3816 IEM_MC_STORE_XREG_XMM( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); 3817 IEM_MC_CLEAR_YREG_128_UP(IEM_GET_MODRM_REG(pVCpu, bRm)); 3818 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3819 IEM_MC_END(); 3820 } 3821 else 3822 { 3823 IEM_MC_BEGIN(IEM_MC_F_NOT_286_OR_OLDER, 0); 3824 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3825 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 3826 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3827 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 3828 IEM_MC_PREPARE_AVX_USAGE(); 3829 3830 IEM_MC_LOCAL(X86XMMREG, uSrc); 3831 IEM_MC_ARG_LOCAL_REF(PCX86XMMREG, puSrc, uSrc, 1); 3832 IEM_MC_FETCH_MEM_XMM_NO_AC(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 3833 IEM_MC_LOCAL( X86XMMREG, uDst); 3834 IEM_MC_ARG_LOCAL_REF(PX86XMMREG, puDst, uDst, 0); 3835 IEM_MC_CALL_AVX_AIMPL_2(IEM_SELECT_HOST_OR_FALLBACK(fAvx, 3836 iemAImpl_vcvtpd2ps_u128_u128, 3837 iemAImpl_vcvtpd2ps_u128_u128_fallback), 3838 puDst, puSrc); 3839 IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT(); 3840 IEM_MC_STORE_XREG_XMM( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); 3841 IEM_MC_CLEAR_YREG_128_UP( IEM_GET_MODRM_REG(pVCpu, bRm)); 3842 IEM_MC_ADVANCE_RIP_AND_FINISH(); 3843 IEM_MC_END(); 3844 } 3845 } 3846 } 3847 3848 3740 3849 /** Opcode VEX.F3.0F 0x5a - vcvtss2sd Vsd, Hx, Wss */ 3741 3850 FNIEMOP_STUB(iemOp_vcvtss2sd_Vsd_Hx_Wss);
Note:
See TracChangeset
for help on using the changeset viewer.