Changeset 103959 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Mar 20, 2024 1:50:22 PM (11 months ago)
- svn:sync-xref-src-repo-rev:
- 162336
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h
r103955 r103959 1194 1194 { 1195 1195 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 1196 IEMOP_HLP_DONE_VEX_DECODING_ EX(fAvx2);1196 IEMOP_HLP_DONE_VEX_DECODING_W0_EX(fAvx2); 1197 1197 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 1198 1198 IEM_MC_PREPARE_AVX_USAGE(); … … 1222 1222 { 1223 1223 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1224 IEMOP_HLP_DONE_VEX_DECODING_ EX(fAvx);1224 IEMOP_HLP_DONE_VEX_DECODING_W0_EX(fAvx); 1225 1225 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 1226 1226 IEM_MC_PREPARE_AVX_USAGE(); … … 1252 1252 uint8_t bOp4; IEM_OPCODE_GET_NEXT_U8(&bOp4); 1253 1253 1254 IEMOP_HLP_DONE_VEX_DECODING_ EX(fAvx2);1254 IEMOP_HLP_DONE_VEX_DECODING_W0_EX(fAvx2); 1255 1255 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 1256 1256 IEM_MC_PREPARE_AVX_USAGE(); … … 1284 1284 uint8_t bOp4; IEM_OPCODE_GET_NEXT_U8(&bOp4); 1285 1285 1286 IEMOP_HLP_DONE_VEX_DECODING_ EX(fAvx);1286 IEMOP_HLP_DONE_VEX_DECODING_W0_EX(fAvx); 1287 1287 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); 1288 1288 IEM_MC_PREPARE_AVX_USAGE(); … … 1312 1312 FNIEMOP_DEF(iemOp_vpblendvb_Vx_Hx_Wx_Lx) 1313 1313 { 1314 IEMOP_MNEMONIC4(VEX_RVMR, VPBLENDVB, vpblendvb, Vx_WO, Hx, Wx, Lx, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_L_ZERO | IEMOPHINT_VEX_W_ZERO); 1314 /** @todo testcase: cover VEX.W=1 and check that it triggers \#UD on both real 1315 * and emulated hardware. */ 1316 IEMOP_MNEMONIC4(VEX_RVMR, VPBLENDVB, vpblendvb, Vx_WO, Hx, Wx, Lx, DISOPTYPE_HARMLESS, IEMOPHINT_VEX_W_ZERO); 1315 1317 IEMOPBLENDOP_INIT_VARS(vpblendvb); 1316 1318 return FNIEMOP_CALL_1(iemOpCommonAvxAvx2_Vx_Hx_Wx_Lx, IEM_SELECT_HOST_OR_FALLBACK(fAvx2, &s_Host, &s_Fallback)); -
trunk/src/VBox/VMM/include/IEMOpHlp.h
r103922 r103959 601 601 } while (0) 602 602 603 /** 604 * Done decoding VEX, L=0 and W=0. 605 * Raises \#UD exception if rex, rep, opsize or lock prefixes are present, 606 * if we're in real or v8086 mode, if VEX.L!=0, if VEX.W!=0, or if the 607 * a_fFeature is not present in the guest CPU. 608 */ 609 #define IEMOP_HLP_DONE_VEX_DECODING_L0_AND_W0_EX(a_fFeature) \ 610 do \ 611 { \ 612 if (RT_LIKELY( !( pVCpu->iem.s.fPrefixes \ 613 & (IEM_OP_PRF_LOCK | IEM_OP_PRF_SIZE_OP | IEM_OP_PRF_REPZ | IEM_OP_PRF_REPNZ | IEM_OP_PRF_REX \ 614 | IEM_OP_PRF_SIZE_REX_W /*VEX.W*/)) \ 615 && pVCpu->iem.s.uVexLength == 0 \ 616 && !IEM_IS_REAL_OR_V86_MODE(pVCpu) \ 617 && IEM_GET_GUEST_CPU_FEATURES(pVCpu)->a_fFeature )) \ 618 { /* likely */ } \ 619 else \ 620 IEMOP_RAISE_INVALID_OPCODE_RET(); \ 621 } while (0) 622 623 603 624 #define IEMOP_HLP_DECODED_NL_1(a_uDisOpNo, a_fIemOpFlags, a_uDisParam0, a_fDisOpType) \ 604 625 do \
Note:
See TracChangeset
for help on using the changeset viewer.