Changeset 105184 in vbox
- Timestamp:
- Jul 8, 2024 12:27:15 PM (7 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r104521 r105184 15934 15934 15935 15935 15936 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vaddps_u128_fallback,(uint32_t uMxCsrIn, PX86XMMREG pResult, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)) 15937 { 15938 return iemAImpl_addps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], &puSrc2->ar32[0]) 15939 | iemAImpl_addps_u128_worker(&pResult->ar32[1], uMxCsrIn, &puSrc1->ar32[1], &puSrc2->ar32[1]) 15940 | iemAImpl_addps_u128_worker(&pResult->ar32[2], uMxCsrIn, &puSrc1->ar32[2], &puSrc2->ar32[2]) 15941 | iemAImpl_addps_u128_worker(&pResult->ar32[3], uMxCsrIn, &puSrc1->ar32[3], &puSrc2->ar32[3]); 15942 } 15943 15944 15945 IEM_DECL_IMPL_DEF(uint32_t, iemAImpl_vaddps_u256_fallback,(uint32_t uMxCsrIn, PX86YMMREG pResult, PCX86YMMREG puSrc1, PCX86YMMREG puSrc2)) 15946 { 15947 return iemAImpl_addps_u128_worker(&pResult->ar32[0], uMxCsrIn, &puSrc1->ar32[0], &puSrc2->ar32[0]) 15948 | iemAImpl_addps_u128_worker(&pResult->ar32[1], uMxCsrIn, &puSrc1->ar32[1], &puSrc2->ar32[1]) 15949 | iemAImpl_addps_u128_worker(&pResult->ar32[2], uMxCsrIn, &puSrc1->ar32[2], &puSrc2->ar32[2]) 15950 | iemAImpl_addps_u128_worker(&pResult->ar32[3], uMxCsrIn, &puSrc1->ar32[3], &puSrc2->ar32[3]) 15951 | iemAImpl_addps_u128_worker(&pResult->ar32[4], uMxCsrIn, &puSrc1->ar32[4], &puSrc2->ar32[4]) 15952 | iemAImpl_addps_u128_worker(&pResult->ar32[5], uMxCsrIn, &puSrc1->ar32[5], &puSrc2->ar32[5]) 15953 | iemAImpl_addps_u128_worker(&pResult->ar32[6], uMxCsrIn, &puSrc1->ar32[6], &puSrc2->ar32[6]) 15954 | iemAImpl_addps_u128_worker(&pResult->ar32[7], uMxCsrIn, &puSrc1->ar32[7], &puSrc2->ar32[7]); 15955 } 15956 15957 15936 15958 /** 15937 15959 * ADDSS -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r104439 r105184 34 34 */ 35 35 36 #if 0 /*Unused*/37 36 /** 38 37 * Common worker for AVX2 instructions on the forms: … … 57 56 IEM_MC_PREPARE_AVX_USAGE(); 58 57 59 IEM_MC_LOCAL( RTUINT256U,uSrc1);60 IEM_MC_ARG_LOCAL_REF(PC RTUINT256U,puSrc1, uSrc1, 1);61 IEM_MC_FETCH_YREG_ U256(uSrc1,IEM_GET_EFFECTIVE_VVVV(pVCpu));62 63 IEM_MC_LOCAL( RTUINT256U,uSrc2);64 IEM_MC_ARG_LOCAL_REF(PC RTUINT256U,puSrc2, uSrc2, 2);65 IEM_MC_FETCH_YREG_ U256(uSrc2,IEM_GET_MODRM_RM(pVCpu, bRm));66 67 IEM_MC_LOCAL( RTUINT256U,uDst);68 IEM_MC_ARG_LOCAL_REF(P RTUINT256U,puDst, uDst, 0);58 IEM_MC_LOCAL(X86YMMREG, uSrc1); 59 IEM_MC_ARG_LOCAL_REF(PCX86YMMREG, puSrc1, uSrc1, 1); 60 IEM_MC_FETCH_YREG_YMM(uSrc1, IEM_GET_EFFECTIVE_VVVV(pVCpu)); 61 62 IEM_MC_LOCAL(X86YMMREG, uSrc2); 63 IEM_MC_ARG_LOCAL_REF(PCX86YMMREG, puSrc2, uSrc2, 2); 64 IEM_MC_FETCH_YREG_YMM(uSrc2, IEM_GET_MODRM_RM(pVCpu, bRm)); 65 66 IEM_MC_LOCAL(X86YMMREG, uDst); 67 IEM_MC_ARG_LOCAL_REF(PX86YMMREG, puDst, uDst, 0); 69 68 70 69 IEM_MC_CALL_AVX_AIMPL_3(pImpl->pfnU256, puDst, puSrc1, puSrc2); 71 70 72 IEM_MC_STORE_YREG_ U256_ZX_VLMAX(IEM_GET_MODRM_REG(pVCpu, bRm), uDst);71 IEM_MC_STORE_YREG_YMM_ZX_VLMAX( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); 73 72 IEM_MC_ADVANCE_RIP_AND_FINISH(); 74 73 IEM_MC_END(); … … 81 80 IEM_MC_PREPARE_AVX_USAGE(); 82 81 83 IEM_MC_ARG(P RTUINT128U,puDst, 0);84 IEM_MC_REF_XREG_ U128(puDst,IEM_GET_MODRM_REG(pVCpu, bRm));85 IEM_MC_ARG(PC RTUINT128U,puSrc1, 1);86 IEM_MC_REF_XREG_ U128_CONST(puSrc1,IEM_GET_EFFECTIVE_VVVV(pVCpu));87 IEM_MC_ARG(PC RTUINT128U,puSrc2, 2);88 IEM_MC_REF_XREG_ U128_CONST(puSrc2,IEM_GET_MODRM_RM(pVCpu, bRm));82 IEM_MC_ARG(PX86XMMREG, puDst, 0); 83 IEM_MC_REF_XREG_XMM(puDst, IEM_GET_MODRM_REG(pVCpu, bRm)); 84 IEM_MC_ARG(PCX86XMMREG, puSrc1, 1); 85 IEM_MC_REF_XREG_XMM_CONST(puSrc1, IEM_GET_EFFECTIVE_VVVV(pVCpu)); 86 IEM_MC_ARG(PCX86XMMREG, puSrc2, 2); 87 IEM_MC_REF_XREG_XMM_CONST(puSrc2, IEM_GET_MODRM_RM(pVCpu, bRm)); 89 88 IEM_MC_CALL_AVX_AIMPL_3(pImpl->pfnU128, puDst, puSrc1, puSrc2); 90 89 IEM_MC_CLEAR_YREG_128_UP( IEM_GET_MODRM_REG(pVCpu, bRm)); … … 107 106 IEM_MC_PREPARE_AVX_USAGE(); 108 107 109 IEM_MC_LOCAL( RTUINT256U,uSrc2);110 IEM_MC_ARG_LOCAL_REF(PC RTUINT256U,puSrc2, uSrc2, 2);111 IEM_MC_FETCH_MEM_ U256_NO_AC(uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);112 113 IEM_MC_LOCAL( RTUINT256U,uSrc1);114 IEM_MC_ARG_LOCAL_REF(PC RTUINT256U,puSrc1, uSrc1, 1);115 IEM_MC_FETCH_YREG_ U256(uSrc1,IEM_GET_EFFECTIVE_VVVV(pVCpu));116 117 IEM_MC_LOCAL( RTUINT256U,uDst);118 IEM_MC_ARG_LOCAL_REF(P RTUINT256U,puDst, uDst, 0);108 IEM_MC_LOCAL(X86YMMREG, uSrc2); 109 IEM_MC_ARG_LOCAL_REF(PCX86YMMREG, puSrc2, uSrc2, 2); 110 IEM_MC_FETCH_MEM_YMM_NO_AC(uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 111 112 IEM_MC_LOCAL(X86YMMREG, uSrc1); 113 IEM_MC_ARG_LOCAL_REF(PCX86YMMREG, puSrc1, uSrc1, 1); 114 IEM_MC_FETCH_YREG_YMM(uSrc1, IEM_GET_EFFECTIVE_VVVV(pVCpu)); 115 116 IEM_MC_LOCAL(X86YMMREG, uDst); 117 IEM_MC_ARG_LOCAL_REF(PX86YMMREG, puDst, uDst, 0); 119 118 120 119 IEM_MC_CALL_AVX_AIMPL_3(pImpl->pfnU256, puDst, puSrc1, puSrc2); 121 120 122 IEM_MC_STORE_YREG_ U256_ZX_VLMAX(IEM_GET_MODRM_REG(pVCpu, bRm), uDst);121 IEM_MC_STORE_YREG_YMM_ZX_VLMAX( IEM_GET_MODRM_REG(pVCpu, bRm), uDst); 123 122 IEM_MC_ADVANCE_RIP_AND_FINISH(); 124 123 IEM_MC_END(); … … 133 132 IEM_MC_PREPARE_AVX_USAGE(); 134 133 135 IEM_MC_LOCAL( RTUINT128U,uSrc2);136 IEM_MC_ARG_LOCAL_REF(PC RTUINT128U,puSrc2, uSrc2, 2);137 IEM_MC_FETCH_MEM_ U128_NO_AC(uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc);138 139 IEM_MC_ARG(P RTUINT128U,puDst, 0);140 IEM_MC_REF_XREG_ U128(puDst,IEM_GET_MODRM_REG(pVCpu, bRm));141 IEM_MC_ARG(PC RTUINT128U,puSrc1, 1);142 IEM_MC_REF_XREG_ U128_CONST(puSrc1,IEM_GET_EFFECTIVE_VVVV(pVCpu));134 IEM_MC_LOCAL(X86XMMREG, uSrc2); 135 IEM_MC_ARG_LOCAL_REF(PCX86XMMREG, puSrc2, uSrc2, 2); 136 IEM_MC_FETCH_MEM_XMM_NO_AC(uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); 137 138 IEM_MC_ARG(PX86XMMREG, puDst, 0); 139 IEM_MC_REF_XREG_XMM(puDst, IEM_GET_MODRM_REG(pVCpu, bRm)); 140 IEM_MC_ARG(PCX86XMMREG, puSrc1, 1); 141 IEM_MC_REF_XREG_XMM_CONST(puSrc1, IEM_GET_EFFECTIVE_VVVV(pVCpu)); 143 142 144 143 IEM_MC_CALL_AVX_AIMPL_3(pImpl->pfnU128, puDst, puSrc1, puSrc2); … … 150 149 } 151 150 } 152 #endif 151 153 152 154 153 /** … … 2832 2831 /* Opcode VEX.F2.0F 0x57 - invalid */ 2833 2832 2833 2834 2834 /** Opcode VEX.0F 0x58 - vaddps Vps, Hps, Wps */ 2835 FNIEMOP_STUB(iemOp_vaddps_Vps_Hps_Wps); 2835 FNIEMOP_DEF(iemOp_vaddps_Vps_Hps_Wps) 2836 { 2837 IEMOP_MNEMONIC3(VEX_RVM, VADDPS, vaddps, Vps, Hps, Wps, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, 0); 2838 IEMOPMEDIAF3_INIT_VARS( vaddps); 2839 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx, IEM_SELECT_HOST_OR_FALLBACK(fAvx, &s_Host, &s_Fallback)); 2840 } 2841 2842 2836 2843 /** Opcode VEX.66.0F 0x58 - vaddpd Vpd, Hpd, Wpd */ 2837 2844 FNIEMOP_STUB(iemOp_vaddpd_Vpd_Hpd_Wpd); -
trunk/src/VBox/VMM/include/IEMInternal.h
r105180 r105184 3444 3444 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAF2U128,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc)); 3445 3445 typedef FNIEMAIMPLMEDIAF2U128 *PFNIEMAIMPLMEDIAF2U128; 3446 typedef IEM_DECL_IMPL_TYPE( void, FNIEMAIMPLMEDIAF3U128,(PX86XSAVEAREA pExtState, PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128UpuSrc2));3446 typedef IEM_DECL_IMPL_TYPE(uint32_t, FNIEMAIMPLMEDIAF3U128,(uint32_t uMxCsrIn, PX86XMMREG puDst, PCX86XMMREG puSrc1, PCX86XMMREG puSrc2)); 3447 3447 typedef FNIEMAIMPLMEDIAF3U128 *PFNIEMAIMPLMEDIAF3U128; 3448 typedef IEM_DECL_IMPL_TYPE( void, FNIEMAIMPLMEDIAF3U256,(PX86XSAVEAREA pExtState, PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256UpuSrc2));3448 typedef IEM_DECL_IMPL_TYPE(uint32_t, FNIEMAIMPLMEDIAF3U256,(uint32_t uMxCsrIn, PX86YMMREG puDst, PCX86YMMREG puSrc1, PCX86YMMREG puSrc2)); 3449 3449 typedef FNIEMAIMPLMEDIAF3U256 *PFNIEMAIMPLMEDIAF3U256; 3450 3450 typedef IEM_DECL_IMPL_TYPE(void, FNIEMAIMPLMEDIAOPTF2U64,(uint64_t *puDst, uint64_t const *puSrc)); … … 4563 4563 FNIEMAIMPLFPSSEF2U128R32 iemAImpl_rcpss_u128_r32; 4564 4564 4565 FNIEMAIMPL FPAVXF3U128 iemAImpl_vaddps_u128, iemAImpl_vaddps_u128_fallback;4565 FNIEMAIMPLMEDIAF3U128 iemAImpl_vaddps_u128, iemAImpl_vaddps_u128_fallback; 4566 4566 FNIEMAIMPLFPAVXF3U128 iemAImpl_vaddpd_u128, iemAImpl_vaddpd_u128_fallback; 4567 4567 FNIEMAIMPLFPAVXF3U128 iemAImpl_vmulps_u128, iemAImpl_vmulps_u128_fallback;
Note:
See TracChangeset
for help on using the changeset viewer.