Changeset 103735 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Mar 8, 2024 5:15:24 AM (9 months ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllAImpl.asm
r103700 r103735 4429 4429 IEMIMPL_MEDIA_OPT_F3 vpermilpd 4430 4430 IEMIMPL_MEDIA_OPT_F3 vpmaddwd 4431 IEMIMPL_MEDIA_OPT_F3 vpsrlvd 4432 IEMIMPL_MEDIA_OPT_F3 vpsrlvq 4433 IEMIMPL_MEDIA_OPT_F3 vpsravd 4434 IEMIMPL_MEDIA_OPT_F3 vpsllvd 4435 IEMIMPL_MEDIA_OPT_F3 vpsllvq 4431 4436 4432 4437 ;; -
trunk/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
r103700 r103735 11222 11222 11223 11223 /* 11224 * VPSRLVD 11225 */ 11226 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrlvd_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2)) 11227 { 11228 for (uint8_t uU32 = 0; uU32 < RT_ELEMENTS(puDst->au32); ++uU32) 11229 { 11230 puDst->au32[uU32] = (puSrc2->au32[uU32] > 31) ? 0 : puSrc1->au32[uU32] >> puSrc2->au8[uU32 << 2]; 11231 } 11232 } 11233 11234 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrlvd_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2)) 11235 { 11236 for (uint8_t uU32 = 0; uU32 < RT_ELEMENTS(puDst->au32); ++uU32) 11237 { 11238 puDst->au32[uU32] = (puSrc2->au32[uU32] > 31) ? 0 : puSrc1->au32[uU32] >> puSrc2->au8[uU32 << 2]; 11239 } 11240 } 11241 11242 11243 /* 11244 * VPSRAVD 11245 */ 11246 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsravd_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2)) 11247 { 11248 for (uint8_t uI32 = 0; uI32 < RT_ELEMENTS(puDst->ai32); ++uI32) 11249 { 11250 puDst->ai32[uI32] = (puSrc2->au32[uI32] > 31) ? 0 : puSrc1->ai32[uI32] >> puSrc2->au8[uI32 << 2]; 11251 } 11252 } 11253 11254 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsravd_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2)) 11255 { 11256 for (uint8_t uI32 = 0; uI32 < RT_ELEMENTS(puDst->ai32); ++uI32) 11257 { 11258 puDst->ai32[uI32] = (puSrc2->au32[uI32] > 31) ? 0 : puSrc1->ai32[uI32] >> puSrc2->au8[uI32 << 2]; 11259 } 11260 } 11261 11262 11263 /* 11264 * VPSLLVD 11265 */ 11266 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllvd_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2)) 11267 { 11268 for (uint8_t uU32 = 0; uU32 < RT_ELEMENTS(puDst->au32); ++uU32) 11269 { 11270 puDst->au32[uU32] = (puSrc2->au32[uU32] > 31) ? 0 : puSrc1->au32[uU32] << puSrc2->au8[uU32 << 2]; 11271 } 11272 } 11273 11274 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllvd_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2)) 11275 { 11276 for (uint8_t uU32 = 0; uU32 < RT_ELEMENTS(puDst->au32); ++uU32) 11277 { 11278 puDst->au32[uU32] = (puSrc2->au32[uU32] > 31) ? 0 : puSrc1->au32[uU32] << puSrc2->au8[uU32 << 2]; 11279 } 11280 } 11281 11282 11283 /* 11284 * VPSRLVQ 11285 */ 11286 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrlvq_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2)) 11287 { 11288 for (uint8_t uU64 = 0; uU64 < RT_ELEMENTS(puDst->au64); ++uU64) 11289 { 11290 puDst->au64[uU64] = (puSrc2->au64[uU64] > 63) ? 0 : puSrc1->au64[uU64] >> puSrc2->au8[uU64 << 3]; 11291 } 11292 } 11293 11294 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsrlvq_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2)) 11295 { 11296 for (uint8_t uU64 = 0; uU64 < RT_ELEMENTS(puDst->au64); ++uU64) 11297 { 11298 puDst->au64[uU64] = (puSrc2->au64[uU64] > 63) ? 0 : puSrc1->au64[uU64] >> puSrc2->au8[uU64 << 3]; 11299 } 11300 } 11301 11302 11303 /* 11304 * VPSLLVQ 11305 */ 11306 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllvq_u128_fallback,(PRTUINT128U puDst, PCRTUINT128U puSrc1, PCRTUINT128U puSrc2)) 11307 { 11308 for (uint8_t uU64 = 0; uU64 < RT_ELEMENTS(puDst->au64); ++uU64) 11309 { 11310 puDst->au64[uU64] = (puSrc2->au64[uU64] > 63) ? 0 : puSrc1->au64[uU64] << puSrc2->au8[uU64 << 3]; 11311 } 11312 } 11313 11314 IEM_DECL_IMPL_DEF(void, iemAImpl_vpsllvq_u256_fallback,(PRTUINT256U puDst, PCRTUINT256U puSrc1, PCRTUINT256U puSrc2)) 11315 { 11316 for (uint8_t uU64 = 0; uU64 < RT_ELEMENTS(puDst->au64); ++uU64) 11317 { 11318 puDst->au64[uU64] = (puSrc2->au64[uU64] > 63) ? 0 : puSrc1->au64[uU64] << puSrc2->au8[uU64 << 3]; 11319 } 11320 } 11321 11322 11323 /* 11224 11324 * PMADDWD / VPMADDWD 11225 11325 */ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap2.cpp.h
r103558 r103735 1038 1038 /* Opcode VEX.66.0F38 0x43 - invalid. */ 1039 1039 /* Opcode VEX.66.0F38 0x44 - invalid. */ 1040 1041 1040 1042 /** Opcode VEX.66.0F38 0x45. */ 1041 FNIEMOP_STUB(iemOp_vpsrlvd_q_Vx_Hx_Wx); 1043 FNIEMOP_DEF(iemOp_vpsrlvd_q_Vx_Hx_Wx) 1044 { 1045 IEMOP_MNEMONIC3(VEX_RVM, VPSRLVD, vpsrlvd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); 1046 1047 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1048 { 1049 IEMOPMEDIAOPTF3_INIT_VARS(vpsrlvq); 1050 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); 1051 } 1052 else 1053 { 1054 IEMOPMEDIAOPTF3_INIT_VARS(vpsrlvd); 1055 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); 1056 } 1057 } 1058 1059 1042 1060 /** Opcode VEX.66.0F38 0x46. */ 1043 FNIEMOP_STUB(iemOp_vsravd_Vx_Hx_Wx); 1061 FNIEMOP_DEF(iemOp_vpsravd_Vx_Hx_Wx) 1062 { 1063 IEMOP_MNEMONIC3(VEX_RVM, VPSRAVD, vpsravd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); 1064 IEMOPMEDIAOPTF3_INIT_VARS(vpsravd); 1065 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); 1066 } 1067 1068 1044 1069 /** Opcode VEX.66.0F38 0x47. */ 1045 FNIEMOP_STUB(iemOp_vpsllvd_q_Vx_Hx_Wx); 1070 FNIEMOP_DEF(iemOp_vpsllvd_q_Vx_Hx_Wx) 1071 { 1072 IEMOP_MNEMONIC3(VEX_RVM, VPSLLVD, vpsllvd, Vx, Hx, Wx, DISOPTYPE_HARMLESS, 0); 1073 1074 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1075 { 1076 IEMOPMEDIAOPTF3_INIT_VARS(vpsllvq); 1077 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); 1078 } 1079 else 1080 { 1081 IEMOPMEDIAOPTF3_INIT_VARS(vpsllvd); 1082 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Opt, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); 1083 } 1084 } 1085 1086 1046 1087 /* Opcode VEX.66.0F38 0x48 - invalid. */ 1047 1088 /* Opcode VEX.66.0F38 0x49 - invalid. */ … … 2506 2547 /* 0x44 */ IEMOP_X4(iemOp_InvalidNeedRM), 2507 2548 /* 0x45 */ iemOp_InvalidNeedRM, iemOp_vpsrlvd_q_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 2508 /* 0x46 */ iemOp_InvalidNeedRM, iemOp_v sravd_Vx_Hx_Wx,iemOp_InvalidNeedRM, iemOp_InvalidNeedRM,2549 /* 0x46 */ iemOp_InvalidNeedRM, iemOp_vpsravd_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 2509 2550 /* 0x47 */ iemOp_InvalidNeedRM, iemOp_vpsllvd_q_Vx_Hx_Wx, iemOp_InvalidNeedRM, iemOp_InvalidNeedRM, 2510 2551 /* 0x48 */ IEMOP_X4(iemOp_InvalidNeedRM),
Note:
See TracChangeset
for help on using the changeset viewer.