- Timestamp:
- Apr 6, 2023 11:45:39 PM (22 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f38.cpp.h
r99220 r99325 110 110 * Register, register. 111 111 */ 112 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();112 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 113 113 IEM_MC_BEGIN(2, 0); 114 114 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 134 134 135 135 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 136 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();136 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 137 137 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 138 138 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 169 169 * Register, register. 170 170 */ 171 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();171 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 172 172 IEM_MC_BEGIN(2, 0); 173 173 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 193 193 194 194 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 195 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();195 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 196 196 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 197 197 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 225 225 * Register, register. 226 226 */ 227 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();227 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 228 228 IEM_MC_BEGIN(2, 0); 229 229 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 249 249 250 250 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 251 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();251 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 252 252 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 253 253 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 285 285 * Register, register. 286 286 */ 287 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();287 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi); 288 288 IEM_MC_BEGIN(2, 0); 289 289 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 309 309 310 310 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 311 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();311 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi); 312 312 IEM_MC_MAYBE_RAISE_AESNI_RELATED_XCPT(); 313 313 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 345 345 * Register, register. 346 346 */ 347 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();347 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 348 348 IEM_MC_BEGIN(2, 0); 349 349 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 369 369 370 370 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 371 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();371 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 372 372 IEM_MC_MAYBE_RAISE_SHA_RELATED_XCPT(); 373 373 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 645 645 * Register, register. \ 646 646 */ \ 647 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX (); \647 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \ 648 648 IEM_MC_BEGIN(3, 0); \ 649 649 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 674 674 IEM_MC_ARG(PCRTUINT128U, puMask, 2); \ 675 675 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \ 676 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX (); \676 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \ 677 677 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); \ 678 678 IEM_MC_PREPARE_SSE_USAGE(); \ … … 740 740 * Register, register. 741 741 */ 742 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();742 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 743 743 IEM_MC_BEGIN(3, 0); 744 744 IEM_MC_ARG(PCRTUINT128U, puSrc1, 0); … … 767 767 768 768 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 769 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();769 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 770 770 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 771 771 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 864 864 * Register, register. \ 865 865 */ \ 866 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX (); \866 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \ 867 867 IEM_MC_BEGIN(2, 0); \ 868 868 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 889 889 IEM_MC_ARG(uint ## a_SrcWidth ## _t, uSrc, 1); \ 890 890 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); \ 891 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX (); \891 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \ 892 892 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); \ 893 893 IEM_MC_PREPARE_SSE_USAGE(); \ … … 1002 1002 1003 1003 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1004 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1004 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 1005 1005 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 1006 1006 IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE(); … … 1519 1519 * Register, register. 1520 1520 */ 1521 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1521 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1522 1522 IEM_MC_BEGIN(3, 0); 1523 1523 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1547 1547 1548 1548 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 1549 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1549 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1550 1550 IEM_MC_MAYBE_RAISE_SHA_RELATED_XCPT(); 1551 1551 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsThree0f3a.cpp.h
r99289 r99325 111 111 */ 112 112 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 113 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();113 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 114 114 IEM_MC_BEGIN(3, 0); 115 115 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 138 138 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 139 139 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 2); 140 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();140 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 141 141 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 142 142 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 171 171 */ 172 172 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 173 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();173 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 174 174 IEM_MC_BEGIN(4, 2); 175 175 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 207 207 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 208 208 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 209 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();209 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 210 210 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 211 211 IEM_MC_FETCH_MEM_XMM_ALIGN_SSE(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 243 243 */ 244 244 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 245 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();245 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi); 246 246 IEM_MC_BEGIN(3, 0); 247 247 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 270 270 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 271 271 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 2); 272 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();272 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi); 273 273 IEM_MC_MAYBE_RAISE_AESNI_RELATED_XCPT(); 274 274 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 323 323 */ 324 324 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 325 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();325 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 326 326 IEM_MC_BEGIN(4, 2); 327 327 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 359 359 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 360 360 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 361 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();361 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 362 362 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 363 363 IEM_MC_FETCH_MEM_XMM_U32(Src.uSrc2, 0 /*a_iDword */, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 388 388 */ 389 389 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 390 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();390 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 391 391 IEM_MC_BEGIN(4, 2); 392 392 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 424 424 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 425 425 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 426 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();426 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 427 427 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 428 428 IEM_MC_FETCH_MEM_XMM_U64(Src.uSrc2, 0 /*a_iQword */, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 553 553 */ 554 554 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 555 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();555 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 556 556 IEM_MC_BEGIN(0, 1); 557 557 IEM_MC_LOCAL(uint8_t, uValue); … … 574 574 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 575 575 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 576 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();576 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 577 577 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 578 578 IEM_MC_PREPARE_SSE_USAGE(); … … 597 597 */ 598 598 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 599 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();599 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 600 600 IEM_MC_BEGIN(0, 1); 601 601 IEM_MC_LOCAL(uint16_t, uValue); … … 618 618 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 619 619 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 620 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();620 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 621 621 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 622 622 IEM_MC_PREPARE_SSE_USAGE(); … … 648 648 */ 649 649 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 650 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();650 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 651 651 IEM_MC_BEGIN(0, 1); 652 652 IEM_MC_LOCAL(uint64_t, uSrc); … … 669 669 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 670 670 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 671 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();671 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 672 672 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 673 673 IEM_MC_PREPARE_SSE_USAGE(); … … 695 695 */ 696 696 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 697 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();697 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 698 698 IEM_MC_BEGIN(0, 1); 699 699 IEM_MC_LOCAL(uint32_t, uSrc); … … 716 716 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 717 717 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 718 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();718 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 719 719 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 720 720 IEM_MC_PREPARE_SSE_USAGE(); … … 739 739 */ 740 740 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 741 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();741 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 742 742 IEM_MC_BEGIN(0, 1); 743 743 IEM_MC_LOCAL(uint32_t, uSrc); … … 760 760 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 761 761 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 762 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();762 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 763 763 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 764 764 IEM_MC_PREPARE_SSE_USAGE(); … … 792 792 */ 793 793 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 794 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();794 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 795 795 IEM_MC_BEGIN(0, 1); 796 796 IEM_MC_LOCAL(uint8_t, uSrc); … … 813 813 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 814 814 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 815 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();815 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 816 816 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 817 817 IEM_MC_PREPARE_SSE_USAGE(); … … 835 835 */ 836 836 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 837 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();837 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 838 838 IEM_MC_BEGIN(0, 3); 839 839 IEM_MC_LOCAL(uint32_t, uSrc); … … 866 866 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 867 867 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 868 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();868 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 869 869 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 870 870 IEM_MC_PREPARE_SSE_USAGE(); … … 899 899 */ 900 900 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 901 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();901 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 902 902 IEM_MC_BEGIN(0, 1); 903 903 IEM_MC_LOCAL(uint64_t, uSrc); … … 920 920 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 921 921 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 922 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();922 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 923 923 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 924 924 IEM_MC_PREPARE_SSE_USAGE(); … … 946 946 */ 947 947 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 948 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();948 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 949 949 IEM_MC_BEGIN(0, 1); 950 950 IEM_MC_LOCAL(uint32_t, uSrc); … … 967 967 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 1); 968 968 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 969 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();969 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 970 970 IEM_MC_MAYBE_RAISE_SSE41_RELATED_XCPT(); 971 971 IEM_MC_PREPARE_SSE_USAGE(); … … 1147 1147 */ 1148 1148 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1149 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1149 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1150 1150 IEM_MC_BEGIN(4, 1); 1151 1151 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1184 1184 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1185 1185 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 1186 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1186 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1187 1187 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 1188 1188 IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 1211 1211 */ 1212 1212 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1213 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1213 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1214 1214 IEM_MC_BEGIN(4, 1); 1215 1215 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1248 1248 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1249 1249 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 1250 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1250 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1251 1251 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 1252 1252 IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 1283 1283 */ 1284 1284 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1285 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1285 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1286 1286 IEM_MC_BEGIN(4, 1); 1287 1287 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); … … 1321 1321 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1322 1322 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 1323 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1323 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1324 1324 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 1325 1325 IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 1348 1348 */ 1349 1349 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1350 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1350 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1351 1351 IEM_MC_BEGIN(4, 1); 1352 1352 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); … … 1386 1386 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1387 1387 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 1388 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1388 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1389 1389 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 1390 1390 IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 1420 1420 */ 1421 1421 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1422 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1422 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1423 1423 IEM_MC_BEGIN(4, 1); 1424 1424 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1455 1455 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1456 1456 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 1457 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1457 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1458 1458 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 1459 1459 IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 1485 1485 */ 1486 1486 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1487 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1487 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1488 1488 IEM_MC_BEGIN(4, 1); 1489 1489 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); … … 1521 1521 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1522 1522 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 3); 1523 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1523 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1524 1524 IEM_MC_MAYBE_RAISE_SSE42_RELATED_XCPT(); 1525 1525 IEM_MC_FETCH_MEM_U128(Src.uSrc2, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); … … 1582 1582 */ 1583 1583 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1584 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1584 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1585 1585 IEM_MC_BEGIN(3, 0); 1586 1586 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1612 1612 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1613 1613 IEM_MC_ARG_CONST(uint8_t, bImmArg, /*=*/ bImm, 2); 1614 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX ();1614 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1615 1615 IEM_MC_MAYBE_RAISE_SHA_RELATED_XCPT(); 1616 1616 IEM_MC_FETCH_MEM_U128_ALIGN_SSE(uSrc, pVCpu->iem.s.iEffSeg, GCPtrEffSrc); -
trunk/src/VBox/VMM/include/IEMOpHlp.h
r99324 r99325 421 421 } while (0) 422 422 423 /** 424 * Done decoding, raise \#UD exception if lock prefix present, or if the 425 * a_fFeature is present in the guest CPU. 426 */ 427 #define IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(a_fFeature) \ 428 do \ 429 { \ 430 if (RT_LIKELY( !(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK) \ 431 && IEM_GET_GUEST_CPU_FEATURES(pVCpu)->a_fFeature)) \ 432 { /* likely */ } \ 433 else \ 434 return IEMOP_RAISE_INVALID_LOCK_PREFIX(); \ 435 } while (0) 436 423 437 424 438 /** … … 509 523 * repnz or size prefixes are present, or if the VEX.VVVV field doesn't indicate 510 524 * register 0, if in real or v8086 mode, or if the a_fFeature is not present in 511 * the guest CPU. 525 * the guest CPU. 512 526 */ 513 527 #define IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(a_fFeature) \ … … 546 560 * Raises \#UD exception if rex, rep, opsize or lock prefixes are present, if 547 561 * we're in real or v8086 mode, if VEX.V!=0xf, if VEX.L!=0, or if the a_fFeature 548 * is not present in the guest CPU. 562 * is not present in the guest CPU. 549 563 */ 550 564 #define IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(a_fFeature) \ -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r99324 r99325 160 160 #define IEMOP_HLP_CLEAR_REX_NOT_BEFORE_OPCODE(a_szPrf) do { } while (0) 161 161 #define IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX() do { } while (0) 162 #define IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(a_fFeature) do { } while (0) 162 163 #define IEMOP_HLP_DONE_VEX_DECODING() do { } while (0) 163 164 #define IEMOP_HLP_DONE_VEX_DECODING_EX(a_fFeature) do { } while (0)
Note:
See TracChangeset
for help on using the changeset viewer.