Changeset 103696 in vbox
- Timestamp:
- Mar 6, 2024 7:13:30 AM (13 months ago)
- svn:sync-xref-src-repo-rev:
- 162063
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r103558 r103696 4428 4428 IEMIMPL_MEDIA_OPT_F3 vpermilps 4429 4429 IEMIMPL_MEDIA_OPT_F3 vpermilpd 4430 IEMIMPL_MEDIA_OPT_F3 vpmaddwd 4430 4431 4431 4432 ;; -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r103691 r103696 11253 11253 11254 11254 11255 IEM_DECL_IMPL_DEF(void, iemAImpl_pmaddwd_u64_fallback,(PCX86FXSTATE pFpuState, uint64_t *puDst, uint64_t const *puSrc)) 11256 { 11257 RTUINT64U uSrc1 = { *puDst }; 11258 RTUINT64U uSrc2 = { *puSrc }; 11259 RTUINT64U uDst; 11260 11261 uDst.ai32[0] = (int32_t)uSrc1.ai16[0] * uSrc2.ai16[0] + (int32_t)uSrc1.ai16[1] * uSrc2.ai16[1]; 11262 uDst.ai32[1] = (int32_t)uSrc1.ai16[2] * uSrc2.ai16[2] + (int32_t)uSrc1.ai16[3] * uSrc2.ai16[3]; 11263 *puDst = uDst.u; 11264 RT_NOREF(pFpuState); 11265 } 11266 11267 11268 IEM_DECL_IMPL_DEF(void, iemAImpl_pmaddwd_u128_fallback,(PCX86FXSTATE pFpuState, PRTUINT128U puDst, PCRTUINT128U puSrc)) 11269 { 11270 RTUINT128U uSrc1 = *puDst; 11271 11272 puDst->ai32[0] = (int32_t)uSrc1.ai16[0] * puSrc->ai16[0] + (int32_t)uSrc1.ai16[1] * puSrc->ai16[1]; 11273 puDst->ai32[1] = (int32_t)uSrc1.ai16[2] * puSrc->ai16[2] + (int32_t)uSrc1.ai16[3] * puSrc->ai16[3]; 11274 puDst->ai32[2] = (int32_t)uSrc1.ai16[4] * puSrc->ai16[4] + (int32_t)uSrc1.ai16[5] * puSrc->ai16[5]; 11275 puDst->ai32[3] = (int32_t)uSrc1.ai16[6] * puSrc->ai16[6] + (int32_t)uSrc1.ai16[7] * puSrc->ai16[7]; 11276 RT_NOREF(pFpuState); 11277 } 11278 11279 11280 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmaddwd_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2)) 11281 { 11282 puDst->ai32[0] = (int32_t)puSrc1->ai16[0] * puSrc2->ai16[0] + (int32_t)puSrc1->ai16[1] * puSrc2->ai16[1]; 11283 puDst->ai32[1] = (int32_t)puSrc1->ai16[2] * puSrc2->ai16[2] + (int32_t)puSrc1->ai16[3] * puSrc2->ai16[3]; 11284 puDst->ai32[2] = (int32_t)puSrc1->ai16[4] * puSrc2->ai16[4] + (int32_t)puSrc1->ai16[5] * puSrc2->ai16[5]; 11285 puDst->ai32[3] = (int32_t)puSrc1->ai16[6] * puSrc2->ai16[6] + (int32_t)puSrc1->ai16[7] * puSrc2->ai16[7]; 11286 } 11287 11288 11289 IEM_DECL_IMPL_DEF(void, iemAImpl_vpmaddwd_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2)) 11290 { 11291 puDst->ai32[0] = (int32_t)puSrc1->ai16[0] * puSrc2->ai16[0] + (int32_t)puSrc1->ai16[1] * puSrc2->ai16[1]; 11292 puDst->ai32[1] = (int32_t)puSrc1->ai16[2] * puSrc2->ai16[2] + (int32_t)puSrc1->ai16[3] * puSrc2->ai16[3]; 11293 puDst->ai32[2] = (int32_t)puSrc1->ai16[4] * puSrc2->ai16[4] + (int32_t)puSrc1->ai16[5] * puSrc2->ai16[5]; 11294 puDst->ai32[3] = (int32_t)puSrc1->ai16[6] * puSrc2->ai16[6] + (int32_t)puSrc1->ai16[7] * puSrc2->ai16[7]; 11295 puDst->ai32[4] = (int32_t)puSrc1->ai16[8] * puSrc2->ai16[8] + (int32_t)puSrc1->ai16[9] * puSrc2->ai16[9]; 11296 puDst->ai32[5] = (int32_t)puSrc1->ai16[10] * puSrc2->ai16[10] + (int32_t)puSrc1->ai16[11] * puSrc2->ai16[11]; 11297 puDst->ai32[6] = (int32_t)puSrc1->ai16[12] * puSrc2->ai16[12] + (int32_t)puSrc1->ai16[13] * puSrc2->ai16[13]; 11298 puDst->ai32[7] = (int32_t)puSrc1->ai16[14] * puSrc2->ai16[14] + (int32_t)puSrc1->ai16[15] * puSrc2->ai16[15]; 11299 } 11300 11301 11255 11302 /* 11256 11303 * PMAXUB / VPMAXUB / PMAXUW / VPMAXUW / PMAXUD / VPMAXUD -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r103267 r103696 5522 5522 5523 5523 /* Opcode VEX.0F 0xf5 - invalid */ 5524 5525 5524 5526 /** Opcode VEX.66.0F 0xf5 - vpmaddwd Vx, Hx, Wx */ 5525 FNIEMOP_STUB(iemOp_vpmaddwd_Vx_Hx_Wx); 5527 FNIEMOP_DEF(iemOp_vpmaddwd_Vx_Hx_Wx) 5528 { 5529 IEMOP_MNEMONIC3(VEX_RVM, VPMADDWD, vpmaddwd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); 5530 IEMOPMEDIAOPTF3_INIT_VARS(vpmaddwd); 5531 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); 5532 } 5533 5534 5526 5535 /* Opcode VEX.F2.0F 0xf5 - invalid */ 5527 5536 -
trunk/src/VBox/VMM/include/IEMInternal.h
r103671 r103696 3092 3092 FNIEMAIMPLMEDIAF2U64 iemAImpl_psubd_u64; 3093 3093 FNIEMAIMPLMEDIAF2U64 iemAImpl_psubq_u64; 3094 FNIEMAIMPLMEDIAF2U64 iemAImpl_pmaddwd_u64 ;3094 FNIEMAIMPLMEDIAF2U64 iemAImpl_pmaddwd_u64, iemAImpl_pmaddwd_u64_fallback; 3095 3095 FNIEMAIMPLMEDIAF2U64 iemAImpl_pmullw_u64, iemAImpl_pmulhw_u64; 3096 3096 FNIEMAIMPLMEDIAF2U64 iemAImpl_pminub_u64, iemAImpl_pmaxub_u64; … … 3137 3137 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmulhw_u128; 3138 3138 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmulld_u128, iemAImpl_pmulld_u128_fallback; 3139 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmaddwd_u128 ;3139 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmaddwd_u128, iemAImpl_pmaddwd_u128_fallback; 3140 3140 FNIEMAIMPLMEDIAF2U128 iemAImpl_pminub_u128; 3141 3141 FNIEMAIMPLMEDIAF2U128 iemAImpl_pminud_u128, iemAImpl_pminud_u128_fallback; … … 3165 3165 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmulhrsw_u128, iemAImpl_pmulhrsw_u128_fallback; 3166 3166 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmuludq_u128; 3167 FNIEMAIMPLMEDIAF2U128 iemAImpl_pmaddwd_u128, iemAImpl_pmaddwd_u128_fallback; 3167 3168 FNIEMAIMPLMEDIAOPTF2U128 iemAImpl_packsswb_u128, iemAImpl_packuswb_u128; 3168 3169 FNIEMAIMPLMEDIAOPTF2U128 iemAImpl_packssdw_u128, iemAImpl_packusdw_u128; … … 3251 3252 FNIEMAIMPLMEDIAOPTF3U128 iemAImpl_vpsrld_u128, iemAImpl_vpsrld_u128_fallback; 3252 3253 FNIEMAIMPLMEDIAOPTF3U128 iemAImpl_vpsrlq_u128, iemAImpl_vpsrlq_u128_fallback; 3254 FNIEMAIMPLMEDIAOPTF3U128 iemAImpl_vpmaddwd_u128, iemAImpl_vpmaddwd_u128_fallback; 3253 3255 3254 3256 FNIEMAIMPLMEDIAOPTF2U128 iemAImpl_vpabsb_u128, iemAImpl_vpabsb_u128_fallback; … … 3330 3332 FNIEMAIMPLMEDIAOPTF3U256 iemAImpl_vpsrld_u256, iemAImpl_vpsrld_u256_fallback; 3331 3333 FNIEMAIMPLMEDIAOPTF3U256 iemAImpl_vpsrlq_u256, iemAImpl_vpsrlq_u256_fallback; 3334 FNIEMAIMPLMEDIAOPTF3U256 iemAImpl_vpmaddwd_u256, iemAImpl_vpmaddwd_u256_fallback; 3332 3335 3333 3336 FNIEMAIMPLMEDIAOPTF2U256 iemAImpl_vpabsb_u256, iemAImpl_vpabsb_u256_fallback;
Note:
See TracChangeset
for help on using the changeset viewer.