Changeset 101387 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Oct 7, 2023 11:34:54 PM (16 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstCommon.cpp.h
r100854 r101387 897 897 { 898 898 case IEMMODE_16BIT: 899 IEM_MC_BEGIN(0, 1, 0 );899 IEM_MC_BEGIN(0, 1, 0, 0); 900 900 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 901 901 IEM_MC_LOCAL(uint16_t, u16Value); … … 907 907 908 908 case IEMMODE_32BIT: 909 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );909 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 910 910 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 911 911 IEM_MC_LOCAL(uint32_t, u32Value); … … 917 917 918 918 case IEMMODE_64BIT: 919 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );919 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 920 920 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 921 921 IEM_MC_LOCAL(uint64_t, u64Value); … … 939 939 { 940 940 case IEMMODE_16BIT: 941 IEM_MC_BEGIN(5, 1, 0 );941 IEM_MC_BEGIN(5, 1, 0, 0); 942 942 IEM_MC_ARG(uint16_t, uSel, 0); 943 943 IEM_MC_ARG(uint16_t, offSeg, 1); … … 957 957 958 958 case IEMMODE_32BIT: 959 IEM_MC_BEGIN(5, 1, IEM_MC_F_MIN_386 );959 IEM_MC_BEGIN(5, 1, IEM_MC_F_MIN_386, 0); 960 960 IEM_MC_ARG(uint16_t, uSel, 0); 961 961 IEM_MC_ARG(uint32_t, offSeg, 1); … … 975 975 976 976 case IEMMODE_64BIT: 977 IEM_MC_BEGIN(5, 1, IEM_MC_F_64BIT );977 IEM_MC_BEGIN(5, 1, IEM_MC_F_64BIT, 0); 978 978 IEM_MC_ARG(uint16_t, uSel, 0); 979 979 IEM_MC_ARG(uint64_t, offSeg, 1); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstCommonBodyMacros.h
r100856 r101387 50 50 { \ 51 51 case IEMMODE_16BIT: \ 52 IEM_MC_BEGIN(3, 0, a_f16BitMcFlag ); \52 IEM_MC_BEGIN(3, 0, a_f16BitMcFlag, 0); \ 53 53 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 54 54 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 66 66 \ 67 67 case IEMMODE_32BIT: \ 68 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \68 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 69 69 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 70 70 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 84 84 \ 85 85 case IEMMODE_64BIT: \ 86 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \86 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 87 87 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 88 88 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 110 110 { \ 111 111 case IEMMODE_16BIT: \ 112 IEM_MC_BEGIN(3, 1, a_f16BitMcFlag ); \112 IEM_MC_BEGIN(3, 1, a_f16BitMcFlag, 0); \ 113 113 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 114 114 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 128 128 \ 129 129 case IEMMODE_32BIT: \ 130 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 ); \130 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \ 131 131 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 132 132 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 148 148 \ 149 149 case IEMMODE_64BIT: \ 150 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT ); \150 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \ 151 151 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 152 152 IEM_MC_ARG(uint64_t, u64Src, 1); \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r101304 r101387 71 71 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 72 72 { \ 73 IEM_MC_BEGIN(3, 0, 0 ); \73 IEM_MC_BEGIN(3, 0, 0, 0); \ 74 74 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 75 75 IEM_MC_ARG(uint8_t, u8Src, 1); \ … … 94 94 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 95 95 { \ 96 IEM_MC_BEGIN(3, 3, 0 ); \96 IEM_MC_BEGIN(3, 3, 0, 0); \ 97 97 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 98 98 IEM_MC_ARG(uint8_t, u8Src, 1); \ … … 131 131 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 132 132 { \ 133 IEM_MC_BEGIN(3, 0, 0 ); \133 IEM_MC_BEGIN(3, 0, 0, 0); \ 134 134 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 135 135 IEM_MC_ARG(uint8_t, u8Src, 1); \ … … 154 154 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 155 155 { \ 156 IEM_MC_BEGIN(3, 3, 0 ); \156 IEM_MC_BEGIN(3, 3, 0, 0); \ 157 157 IEM_MC_ARG(uint8_t const *, pu8Dst, 0); \ 158 158 IEM_MC_ARG(uint8_t, u8Src, 1); \ … … 185 185 186 186 #define IEMOP_BODY_BINARY_rm_r8_LOCKED(a_fnLockedU8) \ 187 IEM_MC_BEGIN(3, 3, 0 ); \187 IEM_MC_BEGIN(3, 3, 0, 0); \ 188 188 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 189 189 IEM_MC_ARG(uint8_t, u8Src, 1); \ … … 219 219 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 220 220 { \ 221 IEM_MC_BEGIN(3, 0, 0 ); \221 IEM_MC_BEGIN(3, 0, 0, 0); \ 222 222 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 223 223 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 238 238 * We're accessing memory. \ 239 239 */ \ 240 IEM_MC_BEGIN(3, 1, 0 ); \240 IEM_MC_BEGIN(3, 1, 0, 0); \ 241 241 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 242 242 IEM_MC_ARG(uint8_t, u8Src, 1); \ … … 272 272 { \ 273 273 case IEMMODE_16BIT: \ 274 IEM_MC_BEGIN(3, 0, 0 ); \274 IEM_MC_BEGIN(3, 0, 0, 0); \ 275 275 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 276 276 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 288 288 \ 289 289 case IEMMODE_32BIT: \ 290 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \290 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 291 291 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 292 292 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 305 305 \ 306 306 case IEMMODE_64BIT: \ 307 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \307 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 308 308 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 309 309 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 335 335 { \ 336 336 case IEMMODE_16BIT: \ 337 IEM_MC_BEGIN(3, 3, 0 ); \337 IEM_MC_BEGIN(3, 3, 0, 0); \ 338 338 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 339 339 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 356 356 \ 357 357 case IEMMODE_32BIT: \ 358 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \358 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 359 359 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 360 360 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 377 377 \ 378 378 case IEMMODE_64BIT: \ 379 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \379 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 380 380 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 381 381 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 408 408 { \ 409 409 case IEMMODE_16BIT: \ 410 IEM_MC_BEGIN(3, 3, 0 ); \410 IEM_MC_BEGIN(3, 3, 0, 0); \ 411 411 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 412 412 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 429 429 \ 430 430 case IEMMODE_32BIT: \ 431 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \431 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 432 432 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 433 433 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 450 450 \ 451 451 case IEMMODE_64BIT: \ 452 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \452 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 453 453 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 454 454 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 491 491 { \ 492 492 case IEMMODE_16BIT: \ 493 IEM_MC_BEGIN(3, 0, 0 ); \493 IEM_MC_BEGIN(3, 0, 0, 0); \ 494 494 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 495 495 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 507 507 \ 508 508 case IEMMODE_32BIT: \ 509 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \509 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 510 510 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 511 511 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 523 523 \ 524 524 case IEMMODE_64BIT: \ 525 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \525 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 526 526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 527 527 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 553 553 { \ 554 554 case IEMMODE_16BIT: \ 555 IEM_MC_BEGIN(3, 3, 0 ); \555 IEM_MC_BEGIN(3, 3, 0, 0); \ 556 556 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 557 557 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 574 574 \ 575 575 case IEMMODE_32BIT: \ 576 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \576 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 577 577 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 578 578 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 595 595 \ 596 596 case IEMMODE_64BIT: \ 597 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \597 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 598 598 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 599 599 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 634 634 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 635 635 \ 636 IEM_MC_BEGIN(3, 0, 0 ); \636 IEM_MC_BEGIN(3, 0, 0, 0); \ 637 637 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 638 638 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 658 658 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 659 659 \ 660 IEM_MC_BEGIN(3, 0, 0 ); \660 IEM_MC_BEGIN(3, 0, 0, 0); \ 661 661 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 662 662 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 676 676 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 677 677 \ 678 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \678 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 679 679 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 680 680 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 696 696 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 697 697 \ 698 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \698 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 699 699 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 700 700 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 1123 1123 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1124 1124 IEMOP_HLP_NO_64BIT(); 1125 IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_MODE, iemCImpl_pop_Sreg, X86_SREG_SS, pVCpu->iem.s.enmEffOpSize); 1125 IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_MODE | IEM_CIMPL_F_INHIBIT_SHADOW, 1126 iemCImpl_pop_Sreg, X86_SREG_SS, pVCpu->iem.s.enmEffOpSize); 1126 1127 } 1127 1128 … … 1768 1769 { \ 1769 1770 case IEMMODE_16BIT: \ 1770 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_64BIT ); \1771 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_64BIT, 0); \ 1771 1772 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 1772 1773 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 1780 1781 \ 1781 1782 case IEMMODE_32BIT: \ 1782 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT ); \1783 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); \ 1783 1784 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 1784 1785 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 2195 2196 { 2196 2197 case IEMMODE_16BIT: 2197 IEM_MC_BEGIN(0, 1, 0 );2198 IEM_MC_BEGIN(0, 1, 0, 0); 2198 2199 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2199 2200 IEM_MC_LOCAL(uint16_t, u16Value); … … 2205 2206 2206 2207 case IEMMODE_32BIT: 2207 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT );2208 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); 2208 2209 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2209 2210 IEM_MC_LOCAL(uint32_t, u32Value); … … 2215 2216 2216 2217 case IEMMODE_64BIT: 2217 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );2218 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 2218 2219 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2219 2220 IEM_MC_LOCAL(uint64_t, u64Value); … … 2277 2278 if (IEM_GET_TARGET_CPU(pVCpu) == IEMTARGETCPU_8086) 2278 2279 { 2279 IEM_MC_BEGIN(0, 1, IEM_MC_F_ONLY_8086 );2280 IEM_MC_BEGIN(0, 1, IEM_MC_F_ONLY_8086, 0); 2280 2281 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2281 2282 IEM_MC_LOCAL(uint16_t, u16Value); … … 2335 2336 { 2336 2337 case IEMMODE_16BIT: 2337 IEM_MC_BEGIN(0, 1, 0 );2338 IEM_MC_BEGIN(0, 1, 0, 0); 2338 2339 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2339 2340 IEM_MC_LOCAL(uint16_t *, pu16Dst); … … 2345 2346 2346 2347 case IEMMODE_32BIT: 2347 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT );2348 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); 2348 2349 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2349 2350 IEM_MC_LOCAL(uint32_t *, pu32Dst); … … 2356 2357 2357 2358 case IEMMODE_64BIT: 2358 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );2359 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 2359 2360 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2360 2361 IEM_MC_LOCAL(uint64_t *, pu64Dst); … … 2428 2429 { 2429 2430 case IEMMODE_16BIT: 2430 IEM_MC_BEGIN(0, 1, 0 );2431 IEM_MC_BEGIN(0, 1, 0, 0); 2431 2432 IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP, 2432 2433 DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG); … … 2439 2440 2440 2441 case IEMMODE_32BIT: 2441 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );2442 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 2442 2443 IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP, 2443 2444 DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG); … … 2450 2451 2451 2452 case IEMMODE_64BIT: 2452 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );2453 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 2453 2454 IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP, 2454 2455 DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG); … … 2605 2606 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 2606 2607 { 2607 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186 | IEM_MC_F_NOT_64BIT );2608 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186 | IEM_MC_F_NOT_64BIT, 0); 2608 2609 IEM_MC_ARG(uint16_t, u16Index, 0); /* Note! All operands are actually signed. Lazy unsigned bird. */ 2609 2610 IEM_MC_ARG(uint16_t, u16LowerBounds, 1); … … 2623 2624 else /* 32-bit operands */ 2624 2625 { 2625 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT );2626 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); 2626 2627 IEM_MC_ARG(uint32_t, u32Index, 0); /* Note! All operands are actually signed. Lazy unsigned bird. */ 2627 2628 IEM_MC_ARG(uint32_t, u32LowerBounds, 1); … … 2683 2684 { 2684 2685 /* Register */ 2685 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT );2686 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT, 0); 2686 2687 IEMOP_HLP_DECODED_NL_2(OP_ARPL, IEMOPFORM_MR_REG, OP_PARM_Ew, OP_PARM_Gw, DISOPTYPE_HARMLESS); 2687 2688 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 2700 2701 { 2701 2702 /* Memory */ 2702 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT );2703 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT, 0); 2703 2704 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 2704 2705 IEM_MC_ARG(uint16_t, u16Src, 1); … … 2742 2743 * Register to register. 2743 2744 */ 2744 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );2745 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 2745 2746 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2746 2747 IEM_MC_LOCAL(uint64_t, u64Value); … … 2755 2756 * We're loading a register from memory. 2756 2757 */ 2757 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );2758 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 2758 2759 IEM_MC_LOCAL(uint64_t, u64Value); 2759 2760 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 2873 2874 { 2874 2875 case IEMMODE_16BIT: 2875 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186 );2876 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186, 0); 2876 2877 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 2877 2878 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 2882 2883 2883 2884 case IEMMODE_32BIT: 2884 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT );2885 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); 2885 2886 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 2886 2887 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 2891 2892 2892 2893 case IEMMODE_64BIT: 2893 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );2894 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 2894 2895 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 2895 2896 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 2923 2924 /* register operand */ 2924 2925 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 2925 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186 );2926 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186, 0); 2926 2927 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2927 2928 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 2942 2943 { 2943 2944 /* memory operand */ 2944 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186 );2945 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186, 0); 2945 2946 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 2946 2947 IEM_MC_ARG(uint16_t, u16Src, 1); … … 2972 2973 /* register operand */ 2973 2974 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 2974 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 );2975 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); 2975 2976 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2976 2977 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 2991 2992 { 2992 2993 /* memory operand */ 2993 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386 );2994 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386, 0); 2994 2995 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 2995 2996 IEM_MC_ARG(uint32_t, u32Src, 1); … … 3021 3022 /* register operand */ 3022 3023 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 3023 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT );3024 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); 3024 3025 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3025 3026 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 3040 3041 { 3041 3042 /* memory operand */ 3042 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );3043 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 3043 3044 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3044 3045 IEM_MC_ARG(uint64_t, u64Src, 1); … … 3081 3082 { 3082 3083 case IEMMODE_16BIT: 3083 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186 );3084 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186, 0); 3084 3085 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3085 3086 IEM_MC_PUSH_U16(i8Imm); … … 3088 3089 break; 3089 3090 case IEMMODE_32BIT: 3090 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT );3091 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); 3091 3092 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3092 3093 IEM_MC_PUSH_U32(i8Imm); … … 3095 3096 break; 3096 3097 case IEMMODE_64BIT: 3097 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );3098 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 3098 3099 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3099 3100 IEM_MC_PUSH_U64(i8Imm); … … 3124 3125 { 3125 3126 /* register operand */ 3126 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186 );3127 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186, 0); 3127 3128 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 3128 3129 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 3144 3145 { 3145 3146 /* memory operand */ 3146 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186 );3147 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186, 0); 3147 3148 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 3148 3149 IEM_MC_ARG(uint16_t, u16Src, 1); … … 3174 3175 /* register operand */ 3175 3176 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 3176 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 );3177 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); 3177 3178 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3178 3179 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 3193 3194 { 3194 3195 /* memory operand */ 3195 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386 );3196 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386, 0); 3196 3197 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 3197 3198 IEM_MC_ARG(uint32_t, u32Src, 1); … … 3223 3224 /* register operand */ 3224 3225 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 3225 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT );3226 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); 3226 3227 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3227 3228 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 3242 3243 { 3243 3244 /* memory operand */ 3244 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );3245 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 3245 3246 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3246 3247 IEM_MC_ARG(uint64_t, u64Src, 1); … … 3531 3532 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3532 3533 3533 IEM_MC_BEGIN(0, 0, 0 );3534 IEM_MC_BEGIN(0, 0, 0, 0); 3534 3535 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3535 3536 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 3551 3552 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3552 3553 3553 IEM_MC_BEGIN(0, 0, 0 );3554 IEM_MC_BEGIN(0, 0, 0, 0); 3554 3555 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3555 3556 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 3570 3571 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3571 3572 3572 IEM_MC_BEGIN(0, 0, 0 );3573 IEM_MC_BEGIN(0, 0, 0, 0); 3573 3574 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3574 3575 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 3590 3591 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3591 3592 3592 IEM_MC_BEGIN(0, 0, 0 );3593 IEM_MC_BEGIN(0, 0, 0, 0); 3593 3594 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3594 3595 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 3610 3611 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3611 3612 3612 IEM_MC_BEGIN(0, 0, 0 );3613 IEM_MC_BEGIN(0, 0, 0, 0); 3613 3614 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3614 3615 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 3630 3631 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3631 3632 3632 IEM_MC_BEGIN(0, 0, 0 );3633 IEM_MC_BEGIN(0, 0, 0, 0); 3633 3634 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3634 3635 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 3650 3651 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3651 3652 3652 IEM_MC_BEGIN(0, 0, 0 );3653 IEM_MC_BEGIN(0, 0, 0, 0); 3653 3654 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3654 3655 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 3670 3671 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3671 3672 3672 IEM_MC_BEGIN(0, 0, 0 );3673 IEM_MC_BEGIN(0, 0, 0, 0); 3673 3674 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3674 3675 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 3690 3691 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3691 3692 3692 IEM_MC_BEGIN(0, 0, 0 );3693 IEM_MC_BEGIN(0, 0, 0, 0); 3693 3694 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3694 3695 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 3710 3711 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3711 3712 3712 IEM_MC_BEGIN(0, 0, 0 );3713 IEM_MC_BEGIN(0, 0, 0, 0); 3713 3714 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3714 3715 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 3730 3731 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3731 3732 3732 IEM_MC_BEGIN(0, 0, 0 );3733 IEM_MC_BEGIN(0, 0, 0, 0); 3733 3734 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3734 3735 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 3750 3751 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3751 3752 3752 IEM_MC_BEGIN(0, 0, 0 );3753 IEM_MC_BEGIN(0, 0, 0, 0); 3753 3754 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3754 3755 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 3770 3771 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3771 3772 3772 IEM_MC_BEGIN(0, 0, 0 );3773 IEM_MC_BEGIN(0, 0, 0, 0); 3773 3774 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3774 3775 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 3790 3791 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3791 3792 3792 IEM_MC_BEGIN(0, 0, 0 );3793 IEM_MC_BEGIN(0, 0, 0, 0); 3793 3794 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3794 3795 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 3810 3811 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3811 3812 3812 IEM_MC_BEGIN(0, 0, 0 );3813 IEM_MC_BEGIN(0, 0, 0, 0); 3813 3814 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3814 3815 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 3830 3831 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3831 3832 3832 IEM_MC_BEGIN(0, 0, 0 );3833 IEM_MC_BEGIN(0, 0, 0, 0); 3833 3834 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3834 3835 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 3850 3851 /* register target */ \ 3851 3852 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 3852 IEM_MC_BEGIN(3, 0, 0 ); \3853 IEM_MC_BEGIN(3, 0, 0, 0); \ 3853 3854 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 3854 3855 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 3868 3869 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 3869 3870 { \ 3870 IEM_MC_BEGIN(3, 3, 0 ); \3871 IEM_MC_BEGIN(3, 3, 0, 0); \ 3871 3872 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 3872 3873 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ … … 3893 3894 3894 3895 #define IEMOP_BODY_BINARY_Eb_Ib_LOCKED(a_fnLockedU8) \ 3895 IEM_MC_BEGIN(3, 3, 0 ); \3896 IEM_MC_BEGIN(3, 3, 0, 0); \ 3896 3897 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 3897 3898 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ … … 3921 3922 /* register target */ \ 3922 3923 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 3923 IEM_MC_BEGIN(3, 0, 0 ); \3924 IEM_MC_BEGIN(3, 0, 0, 0); \ 3924 3925 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 3925 3926 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 3939 3940 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 3940 3941 { \ 3941 IEM_MC_BEGIN(3, 3, 0 ); \3942 IEM_MC_BEGIN(3, 3, 0, 0); \ 3942 3943 IEM_MC_ARG(uint8_t const *, pu8Dst, 0); \ 3943 3944 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ … … 4101 4102 { \ 4102 4103 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4103 IEM_MC_BEGIN(3, 0, 0 ); \4104 IEM_MC_BEGIN(3, 0, 0, 0); \ 4104 4105 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4105 4106 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4119 4120 { \ 4120 4121 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4121 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \4122 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 4122 4123 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4123 4124 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4138 4139 { \ 4139 4140 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4140 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \4141 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 4141 4142 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4142 4143 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4165 4166 case IEMMODE_16BIT: \ 4166 4167 { \ 4167 IEM_MC_BEGIN(3, 3, 0 ); \4168 IEM_MC_BEGIN(3, 3, 0, 0); \ 4168 4169 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4169 4170 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4189 4190 case IEMMODE_32BIT: \ 4190 4191 { \ 4191 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \4192 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4192 4193 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4193 4194 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4213 4214 case IEMMODE_64BIT: \ 4214 4215 { \ 4215 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \4216 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4216 4217 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4217 4218 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4247 4248 case IEMMODE_16BIT: \ 4248 4249 { \ 4249 IEM_MC_BEGIN(3, 3, 0 ); \4250 IEM_MC_BEGIN(3, 3, 0, 0); \ 4250 4251 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4251 4252 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4271 4272 case IEMMODE_32BIT: \ 4272 4273 { \ 4273 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \4274 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4274 4275 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4275 4276 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4295 4296 case IEMMODE_64BIT: \ 4296 4297 { \ 4297 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \4298 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4298 4299 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4299 4300 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4333 4334 { \ 4334 4335 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4335 IEM_MC_BEGIN(3, 0, 0 ); \4336 IEM_MC_BEGIN(3, 0, 0, 0); \ 4336 4337 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4337 4338 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4351 4352 { \ 4352 4353 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4353 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \4354 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 4354 4355 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4355 4356 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4369 4370 { \ 4370 4371 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4371 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \4372 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 4372 4373 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4373 4374 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4396 4397 case IEMMODE_16BIT: \ 4397 4398 { \ 4398 IEM_MC_BEGIN(3, 3, 0 ); \4399 IEM_MC_BEGIN(3, 3, 0, 0); \ 4399 4400 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 4400 4401 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4420 4421 case IEMMODE_32BIT: \ 4421 4422 { \ 4422 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \4423 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4423 4424 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 4424 4425 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4444 4445 case IEMMODE_64BIT: \ 4445 4446 { \ 4446 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \4447 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4447 4448 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 4448 4449 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4620 4621 { \ 4621 4622 case IEMMODE_16BIT: \ 4622 IEM_MC_BEGIN(3, 0, 0 ); \4623 IEM_MC_BEGIN(3, 0, 0, 0); \ 4623 4624 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4624 4625 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4635 4636 \ 4636 4637 case IEMMODE_32BIT: \ 4637 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \4638 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 4638 4639 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4639 4640 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4651 4652 \ 4652 4653 case IEMMODE_64BIT: \ 4653 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \4654 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 4654 4655 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4655 4656 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4678 4679 { \ 4679 4680 case IEMMODE_16BIT: \ 4680 IEM_MC_BEGIN(3, 3, 0 ); \4681 IEM_MC_BEGIN(3, 3, 0, 0); \ 4681 4682 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4682 4683 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4700 4701 \ 4701 4702 case IEMMODE_32BIT: \ 4702 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \4703 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4703 4704 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4704 4705 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4722 4723 \ 4723 4724 case IEMMODE_64BIT: \ 4724 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \4725 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4725 4726 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4726 4727 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4754 4755 { \ 4755 4756 case IEMMODE_16BIT: \ 4756 IEM_MC_BEGIN(3, 3, 0 ); \4757 IEM_MC_BEGIN(3, 3, 0, 0); \ 4757 4758 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4758 4759 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4776 4777 \ 4777 4778 case IEMMODE_32BIT: \ 4778 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \4779 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4779 4780 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4780 4781 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4798 4799 \ 4799 4800 case IEMMODE_64BIT: \ 4800 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \4801 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4801 4802 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4802 4803 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4836 4837 { \ 4837 4838 case IEMMODE_16BIT: \ 4838 IEM_MC_BEGIN(3, 0, 0 ); \4839 IEM_MC_BEGIN(3, 0, 0, 0); \ 4839 4840 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4840 4841 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4851 4852 \ 4852 4853 case IEMMODE_32BIT: \ 4853 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \4854 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 4854 4855 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4855 4856 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4866 4867 \ 4867 4868 case IEMMODE_64BIT: \ 4868 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \4869 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 4869 4870 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4870 4871 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4893 4894 { \ 4894 4895 case IEMMODE_16BIT: \ 4895 IEM_MC_BEGIN(3, 3, 0 ); \4896 IEM_MC_BEGIN(3, 3, 0, 0); \ 4896 4897 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 4897 4898 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4915 4916 \ 4916 4917 case IEMMODE_32BIT: \ 4917 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \4918 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 4918 4919 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 4919 4920 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4937 4938 \ 4938 4939 case IEMMODE_64BIT: \ 4939 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \4940 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 4940 4941 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 4941 4942 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 5124 5125 if (IEM_IS_MODRM_REG_MODE(bRm)) 5125 5126 { 5126 IEM_MC_BEGIN(0, 2, 0 );5127 IEM_MC_BEGIN(0, 2, 0, 0); 5127 5128 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5128 5129 IEM_MC_LOCAL(uint8_t, uTmp1); … … 5142 5143 * We're accessing memory. 5143 5144 */ 5144 IEM_MC_BEGIN(2, 4, 0 );5145 IEM_MC_BEGIN(2, 4, 0, 0); 5145 5146 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5146 5147 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5182 5183 { 5183 5184 case IEMMODE_16BIT: 5184 IEM_MC_BEGIN(0, 2, 0 );5185 IEM_MC_BEGIN(0, 2, 0, 0); 5185 5186 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5186 5187 IEM_MC_LOCAL(uint16_t, uTmp1); … … 5197 5198 5198 5199 case IEMMODE_32BIT: 5199 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );5200 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 5200 5201 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5201 5202 IEM_MC_LOCAL(uint32_t, uTmp1); … … 5212 5213 5213 5214 case IEMMODE_64BIT: 5214 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );5215 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 5215 5216 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5216 5217 IEM_MC_LOCAL(uint64_t, uTmp1); … … 5237 5238 { 5238 5239 case IEMMODE_16BIT: 5239 IEM_MC_BEGIN(2, 4, 0 );5240 IEM_MC_BEGIN(2, 4, 0, 0); 5240 5241 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5241 5242 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5260 5261 5261 5262 case IEMMODE_32BIT: 5262 IEM_MC_BEGIN(2, 4, IEM_MC_F_MIN_386 );5263 IEM_MC_BEGIN(2, 4, IEM_MC_F_MIN_386, 0); 5263 5264 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5264 5265 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5283 5284 5284 5285 case IEMMODE_64BIT: 5285 IEM_MC_BEGIN(2, 4, IEM_MC_F_64BIT );5286 IEM_MC_BEGIN(2, 4, IEM_MC_F_64BIT, 0); 5286 5287 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5287 5288 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5326 5327 if (IEM_IS_MODRM_REG_MODE(bRm)) 5327 5328 { 5328 IEM_MC_BEGIN(0, 1, 0 );5329 IEM_MC_BEGIN(0, 1, 0, 0); 5329 5330 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5330 5331 IEM_MC_LOCAL(uint8_t, u8Value); … … 5339 5340 * We're writing a register to memory. 5340 5341 */ 5341 IEM_MC_BEGIN(0, 2, 0 );5342 IEM_MC_BEGIN(0, 2, 0, 0); 5342 5343 IEM_MC_LOCAL(uint8_t, u8Value); 5343 5344 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5369 5370 { 5370 5371 case IEMMODE_16BIT: 5371 IEM_MC_BEGIN(0, 1, 0 );5372 IEM_MC_BEGIN(0, 1, 0, 0); 5372 5373 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5373 5374 IEM_MC_LOCAL(uint16_t, u16Value); … … 5379 5380 5380 5381 case IEMMODE_32BIT: 5381 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );5382 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 5382 5383 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5383 5384 IEM_MC_LOCAL(uint32_t, u32Value); … … 5389 5390 5390 5391 case IEMMODE_64BIT: 5391 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );5392 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 5392 5393 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5393 5394 IEM_MC_LOCAL(uint64_t, u64Value); … … 5409 5410 { 5410 5411 case IEMMODE_16BIT: 5411 IEM_MC_BEGIN(0, 2, 0 );5412 IEM_MC_BEGIN(0, 2, 0, 0); 5412 5413 IEM_MC_LOCAL(uint16_t, u16Value); 5413 5414 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5421 5422 5422 5423 case IEMMODE_32BIT: 5423 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );5424 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 5424 5425 IEM_MC_LOCAL(uint32_t, u32Value); 5425 5426 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5433 5434 5434 5435 case IEMMODE_64BIT: 5435 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );5436 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 5436 5437 IEM_MC_LOCAL(uint64_t, u64Value); 5437 5438 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5464 5465 if (IEM_IS_MODRM_REG_MODE(bRm)) 5465 5466 { 5466 IEM_MC_BEGIN(0, 1, 0 );5467 IEM_MC_BEGIN(0, 1, 0, 0); 5467 5468 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5468 5469 IEM_MC_LOCAL(uint8_t, u8Value); … … 5477 5478 * We're loading a register from memory. 5478 5479 */ 5479 IEM_MC_BEGIN(0, 2, 0 );5480 IEM_MC_BEGIN(0, 2, 0, 0); 5480 5481 IEM_MC_LOCAL(uint8_t, u8Value); 5481 5482 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5507 5508 { 5508 5509 case IEMMODE_16BIT: 5509 IEM_MC_BEGIN(0, 1, 0 );5510 IEM_MC_BEGIN(0, 1, 0, 0); 5510 5511 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5511 5512 IEM_MC_LOCAL(uint16_t, u16Value); … … 5517 5518 5518 5519 case IEMMODE_32BIT: 5519 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );5520 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 5520 5521 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5521 5522 IEM_MC_LOCAL(uint32_t, u32Value); … … 5527 5528 5528 5529 case IEMMODE_64BIT: 5529 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );5530 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 5530 5531 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5531 5532 IEM_MC_LOCAL(uint64_t, u64Value); … … 5547 5548 { 5548 5549 case IEMMODE_16BIT: 5549 IEM_MC_BEGIN(0, 2, 0 );5550 IEM_MC_BEGIN(0, 2, 0, 0); 5550 5551 IEM_MC_LOCAL(uint16_t, u16Value); 5551 5552 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5559 5560 5560 5561 case IEMMODE_32BIT: 5561 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );5562 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 5562 5563 IEM_MC_LOCAL(uint32_t, u32Value); 5563 5564 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5571 5572 5572 5573 case IEMMODE_64BIT: 5573 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );5574 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 5574 5575 IEM_MC_LOCAL(uint64_t, u64Value); 5575 5576 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5628 5629 { 5629 5630 case IEMMODE_16BIT: 5630 IEM_MC_BEGIN(0, 1, 0 );5631 IEM_MC_BEGIN(0, 1, 0, 0); 5631 5632 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5632 5633 IEM_MC_LOCAL(uint16_t, u16Value); … … 5638 5639 5639 5640 case IEMMODE_32BIT: 5640 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );5641 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 5641 5642 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5642 5643 IEM_MC_LOCAL(uint32_t, u32Value); … … 5648 5649 5649 5650 case IEMMODE_64BIT: 5650 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );5651 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 5651 5652 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5652 5653 IEM_MC_LOCAL(uint64_t, u64Value); … … 5669 5670 pVCpu->iem.s.enmEffOpSize = pVCpu->iem.s.enmDefOpSize = IEMMODE_16BIT; 5670 5671 #endif 5671 IEM_MC_BEGIN(0, 2, 0 );5672 IEM_MC_BEGIN(0, 2, 0, 0); 5672 5673 IEM_MC_LOCAL(uint16_t, u16Value); 5673 5674 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5697 5698 { 5698 5699 case IEMMODE_16BIT: 5699 IEM_MC_BEGIN(0, 2, 0 );5700 IEM_MC_BEGIN(0, 2, 0, 0); 5700 5701 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5701 5702 IEM_MC_LOCAL(uint16_t, u16Cast); … … 5709 5710 5710 5711 case IEMMODE_32BIT: 5711 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );5712 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 5712 5713 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5713 5714 IEM_MC_LOCAL(uint32_t, u32Cast); … … 5721 5722 5722 5723 case IEMMODE_64BIT: 5723 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );5724 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 5724 5725 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5725 5726 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 5766 5767 if (IEM_IS_MODRM_REG_MODE(bRm)) 5767 5768 { 5768 IEM_MC_BEGIN(2, 0, 0); 5769 /** @todo Only set IEM_CIMPL_F_INHIBIT_SHADOW when it actually applies... */ 5770 IEM_MC_BEGIN(2, 0, 0, 0); 5769 5771 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5770 5772 IEM_MC_ARG_CONST(uint8_t, iSRegArg, iSegReg, 0); … … 5772 5774 IEM_MC_FETCH_GREG_U16(u16Value, IEM_GET_MODRM_RM(pVCpu, bRm)); 5773 5775 if (iSRegArg >= X86_SREG_FS || !IEM_IS_32BIT_CODE(pVCpu)) 5774 IEM_MC_CALL_CIMPL_2( 0,iemCImpl_load_SReg, iSRegArg, u16Value);5776 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW, iemCImpl_load_SReg, iSRegArg, u16Value); 5775 5777 else 5776 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_ MODE, iemCImpl_load_SReg, iSRegArg, u16Value);5778 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW | IEM_CIMPL_F_MODE, iemCImpl_load_SReg, iSRegArg, u16Value); 5777 5779 IEM_MC_END(); 5778 5780 } … … 5783 5785 * regardless of operand size prefixes. 5784 5786 */ 5785 IEM_MC_BEGIN(2, 1, 0); 5787 /** @todo Only set IEM_CIMPL_F_INHIBIT_SHADOW when it actually applies... */ 5788 IEM_MC_BEGIN(2, 1, 0, 0); 5786 5789 IEM_MC_ARG_CONST(uint8_t, iSRegArg, iSegReg, 0); 5787 5790 IEM_MC_ARG(uint16_t, u16Value, 1); … … 5791 5794 IEM_MC_FETCH_MEM_U16(u16Value, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 5792 5795 if (iSRegArg >= X86_SREG_FS || !IEM_IS_32BIT_CODE(pVCpu)) 5793 IEM_MC_CALL_CIMPL_2( 0,iemCImpl_load_SReg, iSRegArg, u16Value);5796 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW, iemCImpl_load_SReg, iSRegArg, u16Value); 5794 5797 else 5795 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_ MODE, iemCImpl_load_SReg, iSRegArg, u16Value);5798 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW | IEM_CIMPL_F_MODE, iemCImpl_load_SReg, iSRegArg, u16Value); 5796 5799 IEM_MC_END(); 5797 5800 } … … 5835 5838 { 5836 5839 case IEMMODE_16BIT: 5837 IEM_MC_BEGIN(2, 0, 0 );5840 IEM_MC_BEGIN(2, 0, 0, 0); 5838 5841 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5839 5842 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 5846 5849 5847 5850 case IEMMODE_32BIT: 5848 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 );5851 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); 5849 5852 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5850 5853 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 5857 5860 5858 5861 case IEMMODE_64BIT: 5859 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );5862 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 5860 5863 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5861 5864 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 6008 6011 { 6009 6012 case IEMMODE_16BIT: 6010 IEM_MC_BEGIN(0, 2, 0 );6013 IEM_MC_BEGIN(0, 2, 0, 0); 6011 6014 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6012 6015 IEM_MC_LOCAL(uint16_t, u16Tmp1); … … 6021 6024 6022 6025 case IEMMODE_32BIT: 6023 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );6026 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 6024 6027 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6025 6028 IEM_MC_LOCAL(uint32_t, u32Tmp1); … … 6034 6037 6035 6038 case IEMMODE_64BIT: 6036 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );6039 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 6037 6040 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6038 6041 IEM_MC_LOCAL(uint64_t, u64Tmp1); … … 6082 6085 IEMOP_MNEMONIC(nop, "nop"); 6083 6086 /** @todo testcase: lock nop; lock pause */ 6084 IEM_MC_BEGIN(0, 0, 0 );6087 IEM_MC_BEGIN(0, 0, 0, 0); 6085 6088 IEMOP_HLP_DONE_DECODING(); 6086 6089 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 6168 6171 case IEMMODE_16BIT: 6169 6172 IEMOP_MNEMONIC(cbw, "cbw"); 6170 IEM_MC_BEGIN(0, 1, 0 );6173 IEM_MC_BEGIN(0, 1, 0, 0); 6171 6174 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6172 6175 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 7) { … … 6181 6184 case IEMMODE_32BIT: 6182 6185 IEMOP_MNEMONIC(cwde, "cwde"); 6183 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );6186 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 6184 6187 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6185 6188 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 15) { … … 6194 6197 case IEMMODE_64BIT: 6195 6198 IEMOP_MNEMONIC(cdqe, "cdqe"); 6196 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );6199 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 6197 6200 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6198 6201 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 31) { … … 6219 6222 case IEMMODE_16BIT: 6220 6223 IEMOP_MNEMONIC(cwd, "cwd"); 6221 IEM_MC_BEGIN(0, 1, 0 );6224 IEM_MC_BEGIN(0, 1, 0, 0); 6222 6225 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6223 6226 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 15) { … … 6232 6235 case IEMMODE_32BIT: 6233 6236 IEMOP_MNEMONIC(cdq, "cdq"); 6234 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );6237 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 6235 6238 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6236 6239 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 31) { … … 6245 6248 case IEMMODE_64BIT: 6246 6249 IEMOP_MNEMONIC(cqo, "cqo"); 6247 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );6250 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 6248 6251 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6249 6252 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 63) { … … 6287 6290 { 6288 6291 IEMOP_MNEMONIC(wait, "wait"); 6289 IEM_MC_BEGIN(0, 0, 0 );6292 IEM_MC_BEGIN(0, 0, 0, 0); 6290 6293 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6291 6294 IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE(); … … 6330 6333 && !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLahfSahf) 6331 6334 IEMOP_RAISE_INVALID_OPCODE_RET(); 6332 IEM_MC_BEGIN(0, 2, 0 );6335 IEM_MC_BEGIN(0, 2, 0, 0); 6333 6336 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6334 6337 IEM_MC_LOCAL(uint32_t, u32Flags); … … 6355 6358 && !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLahfSahf) 6356 6359 IEMOP_RAISE_INVALID_OPCODE_RET(); 6357 IEM_MC_BEGIN(0, 1, 0 );6360 IEM_MC_BEGIN(0, 1, 0, 0); 6358 6361 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6359 6362 IEM_MC_LOCAL(uint8_t, u8Flags); … … 6404 6407 * Fetch AL. 6405 6408 */ 6406 IEM_MC_BEGIN(0, 1, 0 );6409 IEM_MC_BEGIN(0, 1, 0, 0); 6407 6410 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6408 6411 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 6432 6435 { 6433 6436 case IEMMODE_16BIT: 6434 IEM_MC_BEGIN(0, 1, 0 );6437 IEM_MC_BEGIN(0, 1, 0, 0); 6435 6438 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6436 6439 IEM_MC_LOCAL(uint16_t, u16Tmp); … … 6442 6445 6443 6446 case IEMMODE_32BIT: 6444 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );6447 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 6445 6448 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6446 6449 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6452 6455 6453 6456 case IEMMODE_64BIT: 6454 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );6457 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 6455 6458 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6456 6459 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6481 6484 * Store AL. 6482 6485 */ 6483 IEM_MC_BEGIN(0, 1, 0 );6486 IEM_MC_BEGIN(0, 1, 0, 0); 6484 6487 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6485 6488 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 6509 6512 { 6510 6513 case IEMMODE_16BIT: 6511 IEM_MC_BEGIN(0, 1, 0 );6514 IEM_MC_BEGIN(0, 1, 0, 0); 6512 6515 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6513 6516 IEM_MC_LOCAL(uint16_t, u16Tmp); … … 6519 6522 6520 6523 case IEMMODE_32BIT: 6521 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );6524 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 6522 6525 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6523 6526 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6529 6532 6530 6533 case IEMMODE_64BIT: 6531 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );6534 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 6532 6535 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6533 6536 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6544 6547 /** Macro used by iemOp_movsb_Xb_Yb and iemOp_movswd_Xv_Yv */ 6545 6548 #define IEM_MOVS_CASE(ValBits, AddrBits, a_fMcFlags) \ 6546 IEM_MC_BEGIN(0, 2, a_fMcFlags ); \6549 IEM_MC_BEGIN(0, 2, a_fMcFlags, 0); \ 6547 6550 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 6548 6551 IEM_MC_LOCAL(uint##ValBits##_t, uValue); \ … … 6685 6688 /** Macro used by iemOp_cmpsb_Xb_Yb and iemOp_cmpswd_Xv_Yv */ 6686 6689 #define IEM_CMPS_CASE(ValBits, AddrBits, a_fMcFlags) \ 6687 IEM_MC_BEGIN(3, 3, a_fMcFlags ); \6690 IEM_MC_BEGIN(3, 3, a_fMcFlags, 0); \ 6688 6691 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 6689 6692 IEM_MC_ARG(uint##ValBits##_t *, puValue1, 0); \ … … 6903 6906 /** Macro used by iemOp_stosb_Yb_AL and iemOp_stoswd_Yv_eAX */ 6904 6907 #define IEM_STOS_CASE(ValBits, AddrBits, a_fMcFlags) \ 6905 IEM_MC_BEGIN(0, 2, a_fMcFlags ); \6908 IEM_MC_BEGIN(0, 2, a_fMcFlags, 0); \ 6906 6909 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 6907 6910 IEM_MC_LOCAL(uint##ValBits##_t, uValue); \ … … 7040 7043 /** Macro used by iemOp_lodsb_AL_Xb and iemOp_lodswd_eAX_Xv */ 7041 7044 #define IEM_LODS_CASE(ValBits, AddrBits, a_fMcFlags) \ 7042 IEM_MC_BEGIN(0, 2, a_fMcFlags ); \7045 IEM_MC_BEGIN(0, 2, a_fMcFlags, 0); \ 7043 7046 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 7044 7047 IEM_MC_LOCAL(uint##ValBits##_t, uValue); \ … … 7177 7180 /** Macro used by iemOp_scasb_AL_Xb and iemOp_scaswd_eAX_Xv */ 7178 7181 #define IEM_SCAS_CASE(ValBits, AddrBits, a_fMcFlags) \ 7179 IEM_MC_BEGIN(3, 2, a_fMcFlags ); \7182 IEM_MC_BEGIN(3, 2, a_fMcFlags, 0); \ 7180 7183 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 7181 7184 IEM_MC_ARG(uint##ValBits##_t *, puRax, 0); \ … … 7370 7373 { 7371 7374 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 7372 IEM_MC_BEGIN(0, 1, 0 );7375 IEM_MC_BEGIN(0, 1, 0, 0); 7373 7376 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7374 7377 IEM_MC_LOCAL_CONST(uint8_t, u8Value,/*=*/ u8Imm); … … 7467 7470 { 7468 7471 case IEMMODE_16BIT: 7469 IEM_MC_BEGIN(0, 1, 0 );7472 IEM_MC_BEGIN(0, 1, 0, 0); 7470 7473 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 7471 7474 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7477 7480 7478 7481 case IEMMODE_32BIT: 7479 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );7482 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 7480 7483 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 7481 7484 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7487 7490 7488 7491 case IEMMODE_64BIT: 7489 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );7492 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 7490 7493 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_U64(&u64Imm); /* 64-bit immediate! */ 7491 7494 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7606 7609 /* register */ 7607 7610 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift); 7608 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186 );7611 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186, 0); 7609 7612 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7610 7613 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 7620 7623 { 7621 7624 /* memory */ 7622 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_186 );7625 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_186, 0); 7623 7626 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 7624 7627 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7672 7675 { 7673 7676 case IEMMODE_16BIT: 7674 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186 );7677 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186, 0); 7675 7678 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7676 7679 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 7685 7688 7686 7689 case IEMMODE_32BIT: 7687 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );7690 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 7688 7691 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7689 7692 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 7699 7702 7700 7703 case IEMMODE_64BIT: 7701 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );7704 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 7702 7705 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7703 7706 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 7720 7723 { 7721 7724 case IEMMODE_16BIT: 7722 IEM_MC_BEGIN(3, 3, 0 );7725 IEM_MC_BEGIN(3, 3, 0, 0); 7723 7726 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 7724 7727 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7742 7745 7743 7746 case IEMMODE_32BIT: 7744 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 );7747 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); 7745 7748 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 7746 7749 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7764 7767 7765 7768 case IEMMODE_64BIT: 7766 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT );7769 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); 7767 7770 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 7768 7771 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7964 7967 /* register access */ 7965 7968 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 7966 IEM_MC_BEGIN(0, 0, 0 );7969 IEM_MC_BEGIN(0, 0, 0, 0); 7967 7970 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7968 7971 IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm); … … 7973 7976 { 7974 7977 /* memory access. */ 7975 IEM_MC_BEGIN(0, 1, 0 );7978 IEM_MC_BEGIN(0, 1, 0, 0); 7976 7979 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 7977 7980 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); … … 8001 8004 { 8002 8005 case IEMMODE_16BIT: 8003 IEM_MC_BEGIN(0, 0, 0 );8006 IEM_MC_BEGIN(0, 0, 0, 0); 8004 8007 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 8005 8008 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8010 8013 8011 8014 case IEMMODE_32BIT: 8012 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8015 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8013 8016 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 8014 8017 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8019 8022 8020 8023 case IEMMODE_64BIT: 8021 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );8024 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 8022 8025 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 8023 8026 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8036 8039 { 8037 8040 case IEMMODE_16BIT: 8038 IEM_MC_BEGIN(0, 1, 0 );8041 IEM_MC_BEGIN(0, 1, 0, 0); 8039 8042 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8040 8043 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); … … 8047 8050 8048 8051 case IEMMODE_32BIT: 8049 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8052 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8050 8053 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8051 8054 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); … … 8058 8061 8059 8062 case IEMMODE_64BIT: 8060 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );8063 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 8061 8064 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8062 8065 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); … … 8206 8209 { 8207 8210 /* register */ 8208 IEM_MC_BEGIN(3, 0, 0 );8211 IEM_MC_BEGIN(3, 0, 0, 0); 8209 8212 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8210 8213 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 8220 8223 { 8221 8224 /* memory */ 8222 IEM_MC_BEGIN(3, 3, 0 );8225 IEM_MC_BEGIN(3, 3, 0, 0); 8223 8226 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 8224 8227 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=*/1, 1); … … 8269 8272 { 8270 8273 case IEMMODE_16BIT: 8271 IEM_MC_BEGIN(3, 0, 0 );8274 IEM_MC_BEGIN(3, 0, 0, 0); 8272 8275 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8273 8276 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 8282 8285 8283 8286 case IEMMODE_32BIT: 8284 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );8287 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 8285 8288 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8286 8289 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 8296 8299 8297 8300 case IEMMODE_64BIT: 8298 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );8301 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 8299 8302 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8300 8303 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 8317 8320 { 8318 8321 case IEMMODE_16BIT: 8319 IEM_MC_BEGIN(3, 3, 0 );8322 IEM_MC_BEGIN(3, 3, 0, 0); 8320 8323 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 8321 8324 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); … … 8337 8340 8338 8341 case IEMMODE_32BIT: 8339 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 );8342 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); 8340 8343 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 8341 8344 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); … … 8357 8360 8358 8361 case IEMMODE_64BIT: 8359 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT );8362 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); 8360 8363 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 8361 8364 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); … … 8406 8409 { 8407 8410 /* register */ 8408 IEM_MC_BEGIN(3, 0, 0 );8411 IEM_MC_BEGIN(3, 0, 0, 0); 8409 8412 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8410 8413 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 8421 8424 { 8422 8425 /* memory */ 8423 IEM_MC_BEGIN(3, 3, 0 );8426 IEM_MC_BEGIN(3, 3, 0, 0); 8424 8427 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 8425 8428 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8470 8473 { 8471 8474 case IEMMODE_16BIT: 8472 IEM_MC_BEGIN(3, 0, 0 );8475 IEM_MC_BEGIN(3, 0, 0, 0); 8473 8476 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8474 8477 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 8484 8487 8485 8488 case IEMMODE_32BIT: 8486 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );8489 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 8487 8490 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8488 8491 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 8499 8502 8500 8503 case IEMMODE_64BIT: 8501 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );8504 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 8502 8505 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8503 8506 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 8521 8524 { 8522 8525 case IEMMODE_16BIT: 8523 IEM_MC_BEGIN(3, 3, 0 );8526 IEM_MC_BEGIN(3, 3, 0, 0); 8524 8527 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 8525 8528 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8542 8545 8543 8546 case IEMMODE_32BIT: 8544 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 );8547 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); 8545 8548 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 8546 8549 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8563 8566 8564 8567 case IEMMODE_64BIT: 8565 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT );8568 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); 8566 8569 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 8567 8570 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8624 8627 IEMOP_HLP_NO_64BIT(); 8625 8628 8626 IEM_MC_BEGIN(0, 0, 0 );8629 IEM_MC_BEGIN(0, 0, 0, 0); 8627 8630 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8628 8631 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 8645 8648 { 8646 8649 case IEMMODE_16BIT: 8647 IEM_MC_BEGIN(2, 0, 0 );8650 IEM_MC_BEGIN(2, 0, 0, 0); 8648 8651 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8649 8652 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 8658 8661 8659 8662 case IEMMODE_32BIT: 8660 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 );8663 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); 8661 8664 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8662 8665 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 8671 8674 8672 8675 case IEMMODE_64BIT: 8673 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );8676 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 8674 8677 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8675 8678 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 8697 8700 FNIEMOP_DEF_2(iemOpHlpFpu_st0_stN, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl) 8698 8701 { 8699 IEM_MC_BEGIN(3, 1, 0 );8702 IEM_MC_BEGIN(3, 1, 0, 0); 8700 8703 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8701 8704 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 8728 8731 FNIEMOP_DEF_2(iemOpHlpFpuNoStore_st0_stN, uint8_t, bRm, PFNIEMAIMPLFPUR80FSW, pfnAImpl) 8729 8732 { 8730 IEM_MC_BEGIN(3, 1, 0 );8733 IEM_MC_BEGIN(3, 1, 0, 0); 8731 8734 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8732 8735 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 8759 8762 FNIEMOP_DEF_2(iemOpHlpFpuNoStore_st0_stN_pop, uint8_t, bRm, PFNIEMAIMPLFPUR80FSW, pfnAImpl) 8760 8763 { 8761 IEM_MC_BEGIN(3, 1, 0 );8764 IEM_MC_BEGIN(3, 1, 0, 0); 8762 8765 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8763 8766 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 8854 8857 FNIEMOP_DEF_2(iemOpHlpFpu_st0_m32r, uint8_t, bRm, PFNIEMAIMPLFPUR32, pfnAImpl) 8855 8858 { 8856 IEM_MC_BEGIN(3, 3, 0 );8859 IEM_MC_BEGIN(3, 3, 0, 0); 8857 8860 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 8858 8861 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 8903 8906 IEMOP_MNEMONIC(fcom_st0_m32r, "fcom st0,m32r"); 8904 8907 8905 IEM_MC_BEGIN(3, 3, 0 );8908 IEM_MC_BEGIN(3, 3, 0, 0); 8906 8909 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 8907 8910 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 8936 8939 IEMOP_MNEMONIC(fcomp_st0_m32r, "fcomp st0,m32r"); 8937 8940 8938 IEM_MC_BEGIN(3, 3, 0 );8941 IEM_MC_BEGIN(3, 3, 0, 0); 8939 8942 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 8940 8943 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9043 9046 IEMOP_MNEMONIC(fld_m32r, "fld m32r"); 9044 9047 9045 IEM_MC_BEGIN(2, 3, 0 );9048 IEM_MC_BEGIN(2, 3, 0, 0); 9046 9049 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 9047 9050 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9073 9076 { 9074 9077 IEMOP_MNEMONIC(fst_m32r, "fst m32r"); 9075 IEM_MC_BEGIN(3, 2, 0 );9078 IEM_MC_BEGIN(3, 2, 0, 0); 9076 9079 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 9077 9080 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9108 9111 { 9109 9112 IEMOP_MNEMONIC(fstp_m32r, "fstp m32r"); 9110 IEM_MC_BEGIN(3, 2, 0 );9113 IEM_MC_BEGIN(3, 2, 0, 0); 9111 9114 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 9112 9115 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9143 9146 { 9144 9147 IEMOP_MNEMONIC(fldenv, "fldenv m14/28byte"); 9145 IEM_MC_BEGIN(3, 0, 0 );9148 IEM_MC_BEGIN(3, 0, 0, 0); 9146 9149 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9147 9150 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 9161 9164 { 9162 9165 IEMOP_MNEMONIC(fldcw_m2byte, "fldcw m2byte"); 9163 IEM_MC_BEGIN(1, 1, 0 );9166 IEM_MC_BEGIN(1, 1, 0, 0); 9164 9167 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 9165 9168 IEM_MC_ARG(uint16_t, u16Fsw, 0); … … 9178 9181 { 9179 9182 IEMOP_MNEMONIC(fstenv, "fstenv m14/m28byte"); 9180 IEM_MC_BEGIN(3, 0, 0 );9183 IEM_MC_BEGIN(3, 0, 0, 0); 9181 9184 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9182 9185 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 9196 9199 { 9197 9200 IEMOP_MNEMONIC(fnstcw_m2byte, "fnstcw m2byte"); 9198 IEM_MC_BEGIN(2, 0, 0 );9201 IEM_MC_BEGIN(2, 0, 0, 0); 9199 9202 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 9200 9203 IEM_MC_LOCAL(uint16_t, u16Fcw); … … 9214 9217 { 9215 9218 IEMOP_MNEMONIC(fnop, "fnop"); 9216 IEM_MC_BEGIN(0, 0, 0 );9219 IEM_MC_BEGIN(0, 0, 0, 0); 9217 9220 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9218 9221 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 9233 9236 /** @todo Testcase: Check if this raises \#MF? Intel mentioned it not. AMD 9234 9237 * indicates that it does. */ 9235 IEM_MC_BEGIN(0, 2, 0 );9238 IEM_MC_BEGIN(0, 2, 0, 0); 9236 9239 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9237 9240 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value); … … 9259 9262 /** @todo Testcase: Check if this raises \#MF? Intel mentioned it not. AMD 9260 9263 * indicates that it does. */ 9261 IEM_MC_BEGIN(2, 3, 0 );9264 IEM_MC_BEGIN(2, 3, 0, 0); 9262 9265 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9263 9266 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value1); … … 9292 9295 if (!iDstReg) 9293 9296 { 9294 IEM_MC_BEGIN(0, 1, 0 );9297 IEM_MC_BEGIN(0, 1, 0, 0); 9295 9298 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9296 9299 IEM_MC_LOCAL_CONST(uint16_t, u16Fsw, /*=*/ 0); … … 9310 9313 else 9311 9314 { 9312 IEM_MC_BEGIN(0, 2, 0 );9315 IEM_MC_BEGIN(0, 2, 0, 0); 9313 9316 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9314 9317 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value); … … 9339 9342 FNIEMOP_DEF_1(iemOpHlpFpu_st0, PFNIEMAIMPLFPUR80UNARY, pfnAImpl) 9340 9343 { 9341 IEM_MC_BEGIN(2, 1, 0 );9344 IEM_MC_BEGIN(2, 1, 0, 0); 9342 9345 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9343 9346 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9380 9383 { 9381 9384 IEMOP_MNEMONIC(ftst_st0, "ftst st0"); 9382 IEM_MC_BEGIN(2, 1, 0 );9385 IEM_MC_BEGIN(2, 1, 0, 0); 9383 9386 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9384 9387 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9405 9408 { 9406 9409 IEMOP_MNEMONIC(fxam_st0, "fxam st0"); 9407 IEM_MC_BEGIN(2, 1, 0 );9410 IEM_MC_BEGIN(2, 1, 0, 0); 9408 9411 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9409 9412 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9430 9433 FNIEMOP_DEF_1(iemOpHlpFpuPushConstant, PFNIEMAIMPLFPUR80LDCONST, pfnAImpl) 9431 9434 { 9432 IEM_MC_BEGIN(1, 1, 0 );9435 IEM_MC_BEGIN(1, 1, 0, 0); 9433 9436 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9434 9437 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9528 9531 FNIEMOP_DEF_2(iemOpHlpFpu_stN_st0_pop, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl) 9529 9532 { 9530 IEM_MC_BEGIN(3, 1, 0 );9533 IEM_MC_BEGIN(3, 1, 0, 0); 9531 9534 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9532 9535 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9567 9570 FNIEMOP_DEF_1(iemOpHlpFpuReplace_st0_push, PFNIEMAIMPLFPUR80UNARYTWO, pfnAImpl) 9568 9571 { 9569 IEM_MC_BEGIN(2, 1, 0 );9572 IEM_MC_BEGIN(2, 1, 0, 0); 9570 9573 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9571 9574 IEM_MC_LOCAL(IEMFPURESULTTWO, FpuResTwo); … … 9627 9630 /** @todo Testcase: Check whether FOP, FPUIP and FPUCS are affected by 9628 9631 * FINCSTP and FDECSTP. */ 9629 IEM_MC_BEGIN(0, 0, 0 );9632 IEM_MC_BEGIN(0, 0, 0, 0); 9630 9633 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9631 9634 … … 9649 9652 /** @todo Testcase: Check whether FOP, FPUIP and FPUCS are affected by 9650 9653 * FINCSTP and FDECSTP. */ 9651 IEM_MC_BEGIN(0, 0, 0 );9654 IEM_MC_BEGIN(0, 0, 0, 0); 9652 9655 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9653 9656 … … 9816 9819 { 9817 9820 IEMOP_MNEMONIC(fcmovb_st0_stN, "fcmovb st0,stN"); 9818 IEM_MC_BEGIN(0, 1, 0 );9821 IEM_MC_BEGIN(0, 1, 0, 0); 9819 9822 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9820 9823 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9842 9845 { 9843 9846 IEMOP_MNEMONIC(fcmove_st0_stN, "fcmove st0,stN"); 9844 IEM_MC_BEGIN(0, 1, 0 );9847 IEM_MC_BEGIN(0, 1, 0, 0); 9845 9848 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9846 9849 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9868 9871 { 9869 9872 IEMOP_MNEMONIC(fcmovbe_st0_stN, "fcmovbe st0,stN"); 9870 IEM_MC_BEGIN(0, 1, 0 );9873 IEM_MC_BEGIN(0, 1, 0, 0); 9871 9874 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9872 9875 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9894 9897 { 9895 9898 IEMOP_MNEMONIC(fcmovu_st0_stN, "fcmovu st0,stN"); 9896 IEM_MC_BEGIN(0, 1, 0 );9899 IEM_MC_BEGIN(0, 1, 0, 0); 9897 9900 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9898 9901 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9924 9927 FNIEMOP_DEF_1(iemOpHlpFpuNoStore_st0_st1_pop_pop, PFNIEMAIMPLFPUR80FSW, pfnAImpl) 9925 9928 { 9926 IEM_MC_BEGIN(3, 1, 0 );9929 IEM_MC_BEGIN(3, 1, 0, 0); 9927 9930 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9928 9931 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9964 9967 FNIEMOP_DEF_2(iemOpHlpFpu_st0_m32i, uint8_t, bRm, PFNIEMAIMPLFPUI32, pfnAImpl) 9965 9968 { 9966 IEM_MC_BEGIN(3, 3, 0 );9969 IEM_MC_BEGIN(3, 3, 0, 0); 9967 9970 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 9968 9971 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10013 10016 IEMOP_MNEMONIC(ficom_st0_m32i, "ficom st0,m32i"); 10014 10017 10015 IEM_MC_BEGIN(3, 3, 0 );10018 IEM_MC_BEGIN(3, 3, 0, 0); 10016 10019 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10017 10020 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10046 10049 IEMOP_MNEMONIC(ficomp_st0_m32i, "ficomp st0,m32i"); 10047 10050 10048 IEM_MC_BEGIN(3, 3, 0 );10051 IEM_MC_BEGIN(3, 3, 0, 0); 10049 10052 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10050 10053 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10154 10157 IEMOP_MNEMONIC(fild_m32i, "fild m32i"); 10155 10158 10156 IEM_MC_BEGIN(2, 3, 0 );10159 IEM_MC_BEGIN(2, 3, 0, 0); 10157 10160 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10158 10161 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10185 10188 { 10186 10189 IEMOP_MNEMONIC(fisttp_m32i, "fisttp m32i"); 10187 IEM_MC_BEGIN(3, 2, 0 );10190 IEM_MC_BEGIN(3, 2, 0, 0); 10188 10191 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10189 10192 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10220 10223 { 10221 10224 IEMOP_MNEMONIC(fist_m32i, "fist m32i"); 10222 IEM_MC_BEGIN(3, 2, 0 );10225 IEM_MC_BEGIN(3, 2, 0, 0); 10223 10226 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10224 10227 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10255 10258 { 10256 10259 IEMOP_MNEMONIC(fistp_m32i, "fistp m32i"); 10257 IEM_MC_BEGIN(3, 2, 0 );10260 IEM_MC_BEGIN(3, 2, 0, 0); 10258 10261 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10259 10262 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10291 10294 IEMOP_MNEMONIC(fld_m80r, "fld m80r"); 10292 10295 10293 IEM_MC_BEGIN(2, 3, 0 );10296 IEM_MC_BEGIN(2, 3, 0, 0); 10294 10297 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10295 10298 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10322 10325 { 10323 10326 IEMOP_MNEMONIC(fstp_m80r, "fstp m80r"); 10324 IEM_MC_BEGIN(3, 2, 0 );10327 IEM_MC_BEGIN(3, 2, 0, 0); 10325 10328 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10326 10329 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10357 10360 { 10358 10361 IEMOP_MNEMONIC(fcmovnb_st0_stN, "fcmovnb st0,stN"); 10359 IEM_MC_BEGIN(0, 1, 0 );10362 IEM_MC_BEGIN(0, 1, 0, 0); 10360 10363 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10361 10364 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10383 10386 { 10384 10387 IEMOP_MNEMONIC(fcmovne_st0_stN, "fcmovne st0,stN"); 10385 IEM_MC_BEGIN(0, 1, 0 );10388 IEM_MC_BEGIN(0, 1, 0, 0); 10386 10389 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10387 10390 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10409 10412 { 10410 10413 IEMOP_MNEMONIC(fcmovnbe_st0_stN, "fcmovnbe st0,stN"); 10411 IEM_MC_BEGIN(0, 1, 0 );10414 IEM_MC_BEGIN(0, 1, 0, 0); 10412 10415 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10413 10416 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10435 10438 { 10436 10439 IEMOP_MNEMONIC(fcmovnnu_st0_stN, "fcmovnnu st0,stN"); 10437 IEM_MC_BEGIN(0, 1, 0 );10440 IEM_MC_BEGIN(0, 1, 0, 0); 10438 10441 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10439 10442 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10461 10464 { 10462 10465 IEMOP_MNEMONIC(fneni, "fneni (8087/ign)"); 10463 IEM_MC_BEGIN(0, 0, 0 );10466 IEM_MC_BEGIN(0, 0, 0, 0); 10464 10467 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10465 10468 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10473 10476 { 10474 10477 IEMOP_MNEMONIC(fndisi, "fndisi (8087/ign)"); 10475 IEM_MC_BEGIN(0, 0, 0 );10478 IEM_MC_BEGIN(0, 0, 0, 0); 10476 10479 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10477 10480 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10485 10488 { 10486 10489 IEMOP_MNEMONIC(fnclex, "fnclex"); 10487 IEM_MC_BEGIN(0, 0, 0 );10490 IEM_MC_BEGIN(0, 0, 0, 0); 10488 10491 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10489 10492 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10508 10511 { 10509 10512 IEMOP_MNEMONIC(fnsetpm, "fnsetpm (80287/ign)"); /* set protected mode on fpu. */ 10510 IEM_MC_BEGIN(0, 0, 0 );10513 IEM_MC_BEGIN(0, 0, 0, 0); 10511 10514 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10512 10515 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10521 10524 IEMOP_MNEMONIC(frstpm, "frstpm (80287XL/ign)"); /* reset pm, back to real mode. */ 10522 10525 #if 0 /* #UDs on newer CPUs */ 10523 IEM_MC_BEGIN(0, 0, 0 );10526 IEM_MC_BEGIN(0, 0, 0, 0); 10524 10527 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10525 10528 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10615 10618 FNIEMOP_DEF_2(iemOpHlpFpu_stN_st0, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl) 10616 10619 { 10617 IEM_MC_BEGIN(3, 1, 0 );10620 IEM_MC_BEGIN(3, 1, 0, 0); 10618 10621 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10619 10622 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10695 10698 FNIEMOP_DEF_2(iemOpHlpFpu_ST0_m64r, uint8_t, bRm, PFNIEMAIMPLFPUR64, pfnImpl) 10696 10699 { 10697 IEM_MC_BEGIN(3, 3, 0 );10700 IEM_MC_BEGIN(3, 3, 0, 0); 10698 10701 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10699 10702 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10743 10746 IEMOP_MNEMONIC(fcom_st0_m64r, "fcom st0,m64r"); 10744 10747 10745 IEM_MC_BEGIN(3, 3, 0 );10748 IEM_MC_BEGIN(3, 3, 0, 0); 10746 10749 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10747 10750 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10776 10779 IEMOP_MNEMONIC(fcomp_st0_m64r, "fcomp st0,m64r"); 10777 10780 10778 IEM_MC_BEGIN(3, 3, 0 );10781 IEM_MC_BEGIN(3, 3, 0, 0); 10779 10782 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10780 10783 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10882 10885 IEMOP_MNEMONIC(fld_m64r, "fld m64r"); 10883 10886 10884 IEM_MC_BEGIN(2, 3, 0 );10887 IEM_MC_BEGIN(2, 3, 0, 0); 10885 10888 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10886 10889 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10912 10915 { 10913 10916 IEMOP_MNEMONIC(fisttp_m64i, "fisttp m64i"); 10914 IEM_MC_BEGIN(3, 2, 0 );10917 IEM_MC_BEGIN(3, 2, 0, 0); 10915 10918 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10916 10919 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10947 10950 { 10948 10951 IEMOP_MNEMONIC(fst_m64r, "fst m64r"); 10949 IEM_MC_BEGIN(3, 2, 0 );10952 IEM_MC_BEGIN(3, 2, 0, 0); 10950 10953 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10951 10954 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10984 10987 { 10985 10988 IEMOP_MNEMONIC(fstp_m64r, "fstp m64r"); 10986 IEM_MC_BEGIN(3, 2, 0 );10989 IEM_MC_BEGIN(3, 2, 0, 0); 10987 10990 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10988 10991 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11019 11022 { 11020 11023 IEMOP_MNEMONIC(frstor, "frstor m94/108byte"); 11021 IEM_MC_BEGIN(3, 0, 0 );11024 IEM_MC_BEGIN(3, 0, 0, 0); 11022 11025 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11023 11026 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 11037 11040 { 11038 11041 IEMOP_MNEMONIC(fnsave, "fnsave m94/108byte"); 11039 IEM_MC_BEGIN(3, 0, 0 );11042 IEM_MC_BEGIN(3, 0, 0, 0); 11040 11043 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11041 11044 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 11055 11058 IEMOP_MNEMONIC(fnstsw_m16, "fnstsw m16"); 11056 11059 11057 IEM_MC_BEGIN(0, 2, 0 );11060 IEM_MC_BEGIN(0, 2, 0, 0); 11058 11061 IEM_MC_LOCAL(uint16_t, u16Tmp); 11059 11062 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11081 11084 /* Note! C0, C1, C2 and C3 are documented as undefined, we leave the 11082 11085 unmodified. */ 11083 IEM_MC_BEGIN(0, 0, 0 );11086 IEM_MC_BEGIN(0, 0, 0, 0); 11084 11087 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11085 11088 … … 11100 11103 { 11101 11104 IEMOP_MNEMONIC(fst_st0_stN, "fst st0,stN"); 11102 IEM_MC_BEGIN(0, 2, 0 );11105 IEM_MC_BEGIN(0, 2, 0, 0); 11103 11106 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11104 11107 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value); … … 11241 11244 FNIEMOP_DEF_2(iemOpHlpFpu_st0_m16i, uint8_t, bRm, PFNIEMAIMPLFPUI16, pfnAImpl) 11242 11245 { 11243 IEM_MC_BEGIN(3, 3, 0 );11246 IEM_MC_BEGIN(3, 3, 0, 0); 11244 11247 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11245 11248 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11290 11293 IEMOP_MNEMONIC(ficom_st0_m16i, "ficom st0,m16i"); 11291 11294 11292 IEM_MC_BEGIN(3, 3, 0 );11295 IEM_MC_BEGIN(3, 3, 0, 0); 11293 11296 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11294 11297 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11323 11326 IEMOP_MNEMONIC(ficomp_st0_m16i, "ficomp st0,m16i"); 11324 11327 11325 IEM_MC_BEGIN(3, 3, 0 );11328 IEM_MC_BEGIN(3, 3, 0, 0); 11326 11329 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11327 11330 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11430 11433 { 11431 11434 IEMOP_MNEMONIC(ffreep_stN, "ffreep stN"); 11432 IEM_MC_BEGIN(0, 0, 0 );11435 IEM_MC_BEGIN(0, 0, 0, 0); 11433 11436 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11434 11437 … … 11450 11453 { 11451 11454 IEMOP_MNEMONIC(fnstsw_ax, "fnstsw ax"); 11452 IEM_MC_BEGIN(0, 1, 0 );11455 IEM_MC_BEGIN(0, 1, 0, 0); 11453 11456 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11454 11457 IEM_MC_LOCAL(uint16_t, u16Tmp); … … 11487 11490 IEMOP_MNEMONIC(fild_m16i, "fild m16i"); 11488 11491 11489 IEM_MC_BEGIN(2, 3, 0 );11492 IEM_MC_BEGIN(2, 3, 0, 0); 11490 11493 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11491 11494 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11518 11521 { 11519 11522 IEMOP_MNEMONIC(fisttp_m16i, "fisttp m16i"); 11520 IEM_MC_BEGIN(3, 2, 0 );11523 IEM_MC_BEGIN(3, 2, 0, 0); 11521 11524 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11522 11525 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11553 11556 { 11554 11557 IEMOP_MNEMONIC(fist_m16i, "fist m16i"); 11555 IEM_MC_BEGIN(3, 2, 0 );11558 IEM_MC_BEGIN(3, 2, 0, 0); 11556 11559 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11557 11560 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11588 11591 { 11589 11592 IEMOP_MNEMONIC(fistp_m16i, "fistp m16i"); 11590 IEM_MC_BEGIN(3, 2, 0 );11593 IEM_MC_BEGIN(3, 2, 0, 0); 11591 11594 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11592 11595 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11624 11627 IEMOP_MNEMONIC(fbld_m80d, "fbld m80d"); 11625 11628 11626 IEM_MC_BEGIN(2, 3, 0 );11629 IEM_MC_BEGIN(2, 3, 0, 0); 11627 11630 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11628 11631 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11656 11659 IEMOP_MNEMONIC(fild_m64i, "fild m64i"); 11657 11660 11658 IEM_MC_BEGIN(2, 3, 0 );11661 IEM_MC_BEGIN(2, 3, 0, 0); 11659 11662 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11660 11663 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11687 11690 { 11688 11691 IEMOP_MNEMONIC(fbstp_m80d, "fbstp m80d"); 11689 IEM_MC_BEGIN(3, 2, 0 );11692 IEM_MC_BEGIN(3, 2, 0, 0); 11690 11693 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11691 11694 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11722 11725 { 11723 11726 IEMOP_MNEMONIC(fistp_m64i, "fistp m64i"); 11724 IEM_MC_BEGIN(3, 2, 0 );11727 IEM_MC_BEGIN(3, 2, 0, 0); 11725 11728 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11726 11729 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11807 11810 { 11808 11811 case IEMMODE_16BIT: 11809 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT );11812 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0); 11810 11813 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11811 11814 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); … … 11819 11822 11820 11823 case IEMMODE_32BIT: 11821 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );11824 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 11822 11825 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11823 11826 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); … … 11831 11834 11832 11835 case IEMMODE_64BIT: 11833 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );11836 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 11834 11837 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11835 11838 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); … … 11859 11862 { 11860 11863 case IEMMODE_16BIT: 11861 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT );11864 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0); 11862 11865 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11863 11866 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); … … 11871 11874 11872 11875 case IEMMODE_32BIT: 11873 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );11876 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 11874 11877 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11875 11878 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); … … 11883 11886 11884 11887 case IEMMODE_64BIT: 11885 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );11888 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 11886 11889 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11887 11890 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); … … 11921 11924 { 11922 11925 case IEMMODE_16BIT: 11923 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT );11926 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0); 11924 11927 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11925 11928 IEM_MC_STORE_GREG_U16_CONST(X86_GREG_xCX, 0); … … 11929 11932 11930 11933 case IEMMODE_32BIT: 11931 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );11934 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 11932 11935 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11933 11936 IEM_MC_STORE_GREG_U32_CONST(X86_GREG_xCX, 0); … … 11937 11940 11938 11941 case IEMMODE_64BIT: 11939 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );11942 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 11940 11943 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11941 11944 IEM_MC_STORE_GREG_U64_CONST(X86_GREG_xCX, 0); … … 11951 11954 { 11952 11955 case IEMMODE_16BIT: 11953 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT );11956 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0); 11954 11957 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11955 11958 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); … … 11963 11966 11964 11967 case IEMMODE_32BIT: 11965 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );11968 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 11966 11969 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11967 11970 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); … … 11975 11978 11976 11979 case IEMMODE_64BIT: 11977 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );11980 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 11978 11981 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11979 11982 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); … … 12003 12006 { 12004 12007 case IEMMODE_16BIT: 12005 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT );12008 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0); 12006 12009 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12007 12010 IEM_MC_IF_CX_IS_NZ() { … … 12014 12017 12015 12018 case IEMMODE_32BIT: 12016 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );12019 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 12017 12020 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12018 12021 IEM_MC_IF_ECX_IS_NZ() { … … 12025 12028 12026 12029 case IEMMODE_64BIT: 12027 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT );12030 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0); 12028 12031 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12029 12032 IEM_MC_IF_RCX_IS_NZ() { … … 12128 12131 { 12129 12132 case IEMMODE_16BIT: 12130 IEM_MC_BEGIN(0, 0, 0 );12133 IEM_MC_BEGIN(0, 0, 0, 0); 12131 12134 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 12132 12135 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 12137 12140 case IEMMODE_64BIT: 12138 12141 case IEMMODE_32BIT: 12139 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );12142 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 12140 12143 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 12141 12144 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 12180 12183 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 12181 12184 12182 IEM_MC_BEGIN(0, 0, 0 );12185 IEM_MC_BEGIN(0, 0, 0, 0); 12183 12186 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12184 12187 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); … … 12315 12318 { 12316 12319 IEMOP_MNEMONIC(cmc, "cmc"); 12317 IEM_MC_BEGIN(0, 0, 0 );12320 IEM_MC_BEGIN(0, 0, 0, 0); 12318 12321 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12319 12322 IEM_MC_FLIP_EFL_BIT(X86_EFL_CF); … … 12330 12333 { \ 12331 12334 /* register access */ \ 12332 IEM_MC_BEGIN(2, 0, 0 ); \12335 IEM_MC_BEGIN(2, 0, 0, 0); \ 12333 12336 IEMOP_HLP_DONE_DECODING(); \ 12334 12337 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 12345 12348 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 12346 12349 { \ 12347 IEM_MC_BEGIN(2, 2, 0 ); \12350 IEM_MC_BEGIN(2, 2, 0, 0); \ 12348 12351 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 12349 12352 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12364 12367 else \ 12365 12368 { \ 12366 IEM_MC_BEGIN(2, 2, 0 ); \12369 IEM_MC_BEGIN(2, 2, 0, 0); \ 12367 12370 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 12368 12371 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12397 12400 { \ 12398 12401 case IEMMODE_16BIT: \ 12399 IEM_MC_BEGIN(2, 0, 0 ); \12402 IEM_MC_BEGIN(2, 0, 0, 0); \ 12400 12403 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 12401 12404 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 12409 12412 \ 12410 12413 case IEMMODE_32BIT: \ 12411 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 ); \12414 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); \ 12412 12415 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 12413 12416 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 12422 12425 \ 12423 12426 case IEMMODE_64BIT: \ 12424 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT ); \12427 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); \ 12425 12428 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 12426 12429 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 12446 12449 { \ 12447 12450 case IEMMODE_16BIT: \ 12448 IEM_MC_BEGIN(2, 3, 0 ); \12451 IEM_MC_BEGIN(2, 3, 0, 0); \ 12449 12452 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 12450 12453 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12465 12468 \ 12466 12469 case IEMMODE_32BIT: \ 12467 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386 ); \12470 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \ 12468 12471 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 12469 12472 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12484 12487 \ 12485 12488 case IEMMODE_64BIT: \ 12486 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT ); \12489 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \ 12487 12490 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 12488 12491 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12513 12516 { \ 12514 12517 case IEMMODE_16BIT: \ 12515 IEM_MC_BEGIN(2, 3, 0 ); \12518 IEM_MC_BEGIN(2, 3, 0, 0); \ 12516 12519 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 12517 12520 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12532 12535 \ 12533 12536 case IEMMODE_32BIT: \ 12534 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386 ); \12537 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \ 12535 12538 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 12536 12539 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12551 12554 \ 12552 12555 case IEMMODE_64BIT: \ 12553 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT ); \12556 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \ 12554 12557 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 12555 12558 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12590 12593 /* register access */ 12591 12594 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 12592 IEM_MC_BEGIN(3, 0, 0 );12595 IEM_MC_BEGIN(3, 0, 0, 0); 12593 12596 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12594 12597 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 12604 12607 { 12605 12608 /* memory access. */ 12606 IEM_MC_BEGIN(3, 3, 0 );12609 IEM_MC_BEGIN(3, 3, 0, 0); 12607 12610 IEM_MC_ARG(uint8_t const *, pu8Dst, 0); 12608 12611 IEM_MC_ARG(uint8_t, u8Src, 1); … … 12633 12636 { 12634 12637 /* register access */ 12635 IEM_MC_BEGIN(3, 1, 0 );12638 IEM_MC_BEGIN(3, 1, 0, 0); 12636 12639 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12637 12640 IEM_MC_ARG(uint16_t *, pu16AX, 0); … … 12655 12658 { 12656 12659 /* memory access. */ 12657 IEM_MC_BEGIN(3, 2, 0 );12660 IEM_MC_BEGIN(3, 2, 0, 0); 12658 12661 IEM_MC_ARG(uint16_t *, pu16AX, 0); 12659 12662 IEM_MC_ARG(uint8_t, u8Value, 1); … … 12690 12693 { 12691 12694 case IEMMODE_16BIT: 12692 IEM_MC_BEGIN(4, 1, 0 );12695 IEM_MC_BEGIN(4, 1, 0, 0); 12693 12696 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12694 12697 IEM_MC_ARG(uint16_t *, pu16AX, 0); … … 12713 12716 12714 12717 case IEMMODE_32BIT: 12715 IEM_MC_BEGIN(4, 1, IEM_MC_F_MIN_386 );12718 IEM_MC_BEGIN(4, 1, IEM_MC_F_MIN_386, 0); 12716 12719 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12717 12720 IEM_MC_ARG(uint32_t *, pu32AX, 0); … … 12738 12741 12739 12742 case IEMMODE_64BIT: 12740 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT );12743 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0); 12741 12744 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12742 12745 IEM_MC_ARG(uint64_t *, pu64AX, 0); … … 12769 12772 { 12770 12773 case IEMMODE_16BIT: 12771 IEM_MC_BEGIN(4, 2, 0 );12774 IEM_MC_BEGIN(4, 2, 0, 0); 12772 12775 IEM_MC_ARG(uint16_t *, pu16AX, 0); 12773 12776 IEM_MC_ARG(uint16_t *, pu16DX, 1); … … 12794 12797 12795 12798 case IEMMODE_32BIT: 12796 IEM_MC_BEGIN(4, 2, IEM_MC_F_MIN_386 );12799 IEM_MC_BEGIN(4, 2, IEM_MC_F_MIN_386, 0); 12797 12800 IEM_MC_ARG(uint32_t *, pu32AX, 0); 12798 12801 IEM_MC_ARG(uint32_t *, pu32DX, 1); … … 12821 12824 12822 12825 case IEMMODE_64BIT: 12823 IEM_MC_BEGIN(4, 2, IEM_MC_F_64BIT );12826 IEM_MC_BEGIN(4, 2, IEM_MC_F_64BIT, 0); 12824 12827 IEM_MC_ARG(uint64_t *, pu64AX, 0); 12825 12828 IEM_MC_ARG(uint64_t *, pu64DX, 1); … … 12918 12921 { 12919 12922 case IEMMODE_16BIT: 12920 IEM_MC_BEGIN(3, 0, 0 );12923 IEM_MC_BEGIN(3, 0, 0, 0); 12921 12924 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 12922 12925 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 12932 12935 12933 12936 case IEMMODE_32BIT: 12934 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );12937 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 12935 12938 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 12936 12939 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 12947 12950 12948 12951 case IEMMODE_64BIT: 12949 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );12952 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 12950 12953 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 12951 12954 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 12969 12972 { 12970 12973 case IEMMODE_16BIT: 12971 IEM_MC_BEGIN(3, 3, 0 );12974 IEM_MC_BEGIN(3, 3, 0, 0); 12972 12975 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); 12973 12976 IEM_MC_ARG(uint16_t, u16Src, 1); … … 12991 12994 12992 12995 case IEMMODE_32BIT: 12993 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 );12996 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); 12994 12997 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); 12995 12998 IEM_MC_ARG(uint32_t, u32Src, 1); … … 13013 13016 13014 13017 case IEMMODE_64BIT: 13015 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT );13018 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); 13016 13019 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); 13017 13020 IEM_MC_ARG(uint64_t, u64Src, 1); … … 13097 13100 { 13098 13101 IEMOP_MNEMONIC(clc, "clc"); 13099 IEM_MC_BEGIN(0, 0, 0 );13102 IEM_MC_BEGIN(0, 0, 0, 0); 13100 13103 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13101 13104 IEM_MC_CLEAR_EFL_BIT(X86_EFL_CF); … … 13111 13114 { 13112 13115 IEMOP_MNEMONIC(stc, "stc"); 13113 IEM_MC_BEGIN(0, 0, 0 );13116 IEM_MC_BEGIN(0, 0, 0, 0); 13114 13117 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13115 13118 IEM_MC_SET_EFL_BIT(X86_EFL_CF); … … 13134 13137 IEMOP_MNEMONIC(sti, "sti"); 13135 13138 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13136 IEM_MC_DEFER_TO_CIMPL_0_RET(IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_CHECK_IRQ_AFTER | IEM_CIMPL_F_VMEXIT, iemCImpl_sti); 13139 IEM_MC_DEFER_TO_CIMPL_0_RET( IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_CHECK_IRQ_AFTER 13140 | IEM_CIMPL_F_VMEXIT | IEM_CIMPL_F_INHIBIT_SHADOW, iemCImpl_sti); 13137 13141 } 13138 13142 … … 13144 13148 { 13145 13149 IEMOP_MNEMONIC(cld, "cld"); 13146 IEM_MC_BEGIN(0, 0, 0 );13150 IEM_MC_BEGIN(0, 0, 0, 0); 13147 13151 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13148 13152 IEM_MC_CLEAR_EFL_BIT(X86_EFL_DF); … … 13158 13162 { 13159 13163 IEMOP_MNEMONIC(std, "std"); 13160 IEM_MC_BEGIN(0, 0, 0 );13164 IEM_MC_BEGIN(0, 0, 0, 0); 13161 13165 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13162 13166 IEM_MC_SET_EFL_BIT(X86_EFL_DF); … … 13238 13242 { 13239 13243 case IEMMODE_16BIT: 13240 IEM_MC_BEGIN(1, 0, 0 );13244 IEM_MC_BEGIN(1, 0, 0, 0); 13241 13245 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13242 13246 IEM_MC_ARG(uint16_t, u16Target, 0); … … 13247 13251 13248 13252 case IEMMODE_32BIT: 13249 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_386 );13253 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_386, 0); 13250 13254 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13251 13255 IEM_MC_ARG(uint32_t, u32Target, 0); … … 13256 13260 13257 13261 case IEMMODE_64BIT: 13258 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT );13262 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0); 13259 13263 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13260 13264 IEM_MC_ARG(uint64_t, u64Target, 0); … … 13273 13277 { 13274 13278 case IEMMODE_16BIT: 13275 IEM_MC_BEGIN(1, 1, 0 );13279 IEM_MC_BEGIN(1, 1, 0, 0); 13276 13280 IEM_MC_ARG(uint16_t, u16Target, 0); 13277 13281 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13284 13288 13285 13289 case IEMMODE_32BIT: 13286 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386 );13290 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386, 0); 13287 13291 IEM_MC_ARG(uint32_t, u32Target, 0); 13288 13292 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13295 13299 13296 13300 case IEMMODE_64BIT: 13297 IEM_MC_BEGIN(1, 1, IEM_MC_F_64BIT );13301 IEM_MC_BEGIN(1, 1, IEM_MC_F_64BIT, 0); 13298 13302 IEM_MC_ARG(uint64_t, u64Target, 0); 13299 13303 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13328 13332 { \ 13329 13333 case IEMMODE_16BIT: \ 13330 IEM_MC_BEGIN(3, 1, 0 ); \13334 IEM_MC_BEGIN(3, 1, 0, 0); \ 13331 13335 IEM_MC_ARG(uint16_t, u16Sel, 0); \ 13332 13336 IEM_MC_ARG(uint16_t, offSeg, 1); \ … … 13344 13348 \ 13345 13349 case IEMMODE_32BIT: \ 13346 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 ); \13350 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \ 13347 13351 IEM_MC_ARG(uint16_t, u16Sel, 0); \ 13348 13352 IEM_MC_ARG(uint32_t, offSeg, 1); \ … … 13361 13365 case IEMMODE_64BIT: \ 13362 13366 Assert(!IEM_IS_GUEST_CPU_AMD(pVCpu)); \ 13363 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT ); \13367 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \ 13364 13368 IEM_MC_ARG(uint16_t, u16Sel, 0); \ 13365 13369 IEM_MC_ARG(uint64_t, offSeg, 1); \ … … 13405 13409 { 13406 13410 case IEMMODE_16BIT: 13407 IEM_MC_BEGIN(0, 1, 0 );13411 IEM_MC_BEGIN(0, 1, 0, 0); 13408 13412 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13409 13413 IEM_MC_LOCAL(uint16_t, u16Target); … … 13414 13418 13415 13419 case IEMMODE_32BIT: 13416 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );13420 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 13417 13421 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13418 13422 IEM_MC_LOCAL(uint32_t, u32Target); … … 13423 13427 13424 13428 case IEMMODE_64BIT: 13425 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );13429 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 13426 13430 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13427 13431 IEM_MC_LOCAL(uint64_t, u64Target); … … 13440 13444 { 13441 13445 case IEMMODE_16BIT: 13442 IEM_MC_BEGIN(0, 2, 0 );13446 IEM_MC_BEGIN(0, 2, 0, 0); 13443 13447 IEM_MC_LOCAL(uint16_t, u16Target); 13444 13448 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13451 13455 13452 13456 case IEMMODE_32BIT: 13453 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );13457 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 13454 13458 IEM_MC_LOCAL(uint32_t, u32Target); 13455 13459 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13462 13466 13463 13467 case IEMMODE_64BIT: 13464 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );13468 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 13465 13469 IEM_MC_LOCAL(uint64_t, u64Target); 13466 13470 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13506 13510 { 13507 13511 case IEMMODE_16BIT: 13508 IEM_MC_BEGIN(0, 2, 0 );13512 IEM_MC_BEGIN(0, 2, 0, 0); 13509 13513 IEM_MC_LOCAL(uint16_t, u16Src); 13510 13514 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13518 13522 13519 13523 case IEMMODE_32BIT: 13520 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT );13524 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); 13521 13525 IEM_MC_LOCAL(uint32_t, u32Src); 13522 13526 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13530 13534 13531 13535 case IEMMODE_64BIT: 13532 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );13536 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 13533 13537 IEM_MC_LOCAL(uint64_t, u64Src); 13534 13538 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r101370 r101387 1371 1371 def __init__(self, oInstr): # type: (InstructionTest, Instruction) 1372 1372 self.oInstr = oInstr # type: InstructionTest 1373 self.aoInputs = [] # type: list(TestInOut)1374 self.aoOutputs = [] # type: list(TestInOut)1375 self.aoSelectors = [] # type: list(TestSelector)1373 self.aoInputs = [] # type: List[TestInOut] 1374 self.aoOutputs = [] # type: List[TestInOut] 1375 self.aoSelectors = [] # type: List[TestSelector] 1376 1376 1377 1377 def toString(self, fRepr = False): … … 1433 1433 self.sMnemonic = None; 1434 1434 self.sBrief = None; 1435 self.asDescSections = [] # type: list(str)1436 self.aoMaps = [] # type: list(InstructionMap)1437 self.aoOperands = [] # type: list(Operand)1435 self.asDescSections = [] # type: List[str] 1436 self.aoMaps = [] # type: List[InstructionMap] 1437 self.aoOperands = [] # type: List[Operand] 1438 1438 self.sPrefix = None; ##< Single prefix: None, 'none', 0x66, 0xf3, 0xf2 1439 1439 self.sOpcode = None # type: str … … 1449 1449 self.asCpuIds = []; ##< The CPUID feature bit names for this instruction. If multiple, assume AND. 1450 1450 self.asReqFeatures = []; ##< Which features are required to be enabled to run this instruction. 1451 self.aoTests = [] # type: list(InstructionTest)1451 self.aoTests = [] # type: List[InstructionTest] 1452 1452 self.sMinCpu = None; ##< Indicates the minimum CPU required for the instruction. Not set when oCpuExpr is. 1453 1453 self.oCpuExpr = None; ##< Some CPU restriction expression... … … 1664 1664 1665 1665 ## All the instructions. 1666 g_aoAllInstructions = [] # type: list(Instruction)1666 g_aoAllInstructions = [] # type: List[Instruction] 1667 1667 1668 1668 ## All the instructions indexed by statistics name (opstat). 1669 g_dAllInstructionsByStat = {} # type: dict(Instruction)1669 g_dAllInstructionsByStat = {} # type: Dict[Instruction] 1670 1670 1671 1671 ## All the instructions indexed by function name (opfunction). 1672 g_dAllInstructionsByFunction = {} # type: dict(list(Instruction))1672 g_dAllInstructionsByFunction = {} # type: Dict[List[Instruction]] 1673 1673 1674 1674 ## Instructions tagged by oponlytest 1675 g_aoOnlyTestInstructions = [] # type: list(Instruction)1675 g_aoOnlyTestInstructions = [] # type: List[Instruction] 1676 1676 1677 1677 ## Instruction maps. … … 1759 1759 self.iBeginLine = iBeginLine; ##< The start line. 1760 1760 self.iEndLine = -1; ##< The line the function (probably) ends on. 1761 self.asLines = [] # type: list(str)##< The raw lines the function is made up of.1761 self.asLines = [] # type: List[str] ##< The raw lines the function is made up of. 1762 1762 1763 1763 def complete(self, iEndLine, asLines): … … 1949 1949 'IEM_MC_F_64BIT': ('IEM_MC_F_NOT_286_OR_OLDER',), 1950 1950 'IEM_MC_F_NOT_64BIT': (), 1951 }; 1952 ## IEM_MC_F_XXX values. 1953 g_kdCImplFlags = { 1954 'IEM_CIMPL_F_BRANCH_DIRECT': (), 1955 'IEM_CIMPL_F_BRANCH_INDIRECT': (), 1956 'IEM_CIMPL_F_BRANCH_RELATIVE': (), 1957 'IEM_CIMPL_F_BRANCH_CONDITIONAL': (), 1958 'IEM_CIMPL_F_BRANCH_FAR': (), 1959 'IEM_CIMPL_F_BRANCH_ANY': ('IEM_CIMPL_F_BRANCH_DIRECT', 'IEM_CIMPL_F_BRANCH_INDIRECT', 1960 'IEM_CIMPL_F_BRANCH_RELATIVE',), 1961 'IEM_CIMPL_F_MODE': (), 1962 'IEM_CIMPL_F_RFLAGS': (), 1963 'IEM_CIMPL_F_INHIBIT_SHADOW': (), 1964 'IEM_CIMPL_F_STATUS_FLAGS': (), 1965 'IEM_CIMPL_F_CHECK_IRQ_AFTER': (), 1966 'IEM_CIMPL_F_CHECK_IRQ_BEFORE': (), 1967 'IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER': ('IEM_CIMPL_F_CHECK_IRQ_BEFORE', 'IEM_CIMPL_F_CHECK_IRQ_AFTER',), 1968 'IEM_CIMPL_F_VMEXIT': (), 1969 'IEM_CIMPL_F_FPU': (), 1970 'IEM_CIMPL_F_REP': (), 1971 'IEM_CIMPL_F_IO': (), 1972 'IEM_CIMPL_F_END_TB': (), 1973 'IEM_CIMPL_F_XCPT': ('IEM_CIMPL_F_BRANCH_INDIRECT', 'IEM_CIMPL_F_BRANCH_FAR', 1974 'IEM_CIMPL_F_MODE', 'IEM_CIMPL_F_RFLAGS', 'IEM_CIMPL_F_VMEXIT', ), 1951 1975 }; 1952 1976 class McBlock(object): … … 1976 2000 self.cchIndent = cchIndent if cchIndent else offBeginLine; 1977 2001 ##< The raw lines the block is made up of. 1978 self.asLines = [] # type: list(str)2002 self.asLines = [] # type: List[str] 1979 2003 ## IEM_MC_BEGIN: Argument count. 1980 2004 self.cArgs = -1; … … 1982 2006 self.cLocals = -1; 1983 2007 ## IEM_MC_BEGIN: IEM_MC_F_XXX dictionary 1984 self.dMcFlags = {} # type: dict(str) 2008 self.dsMcFlags = {} # type: Dict[str, bool] 2009 ## IEM_MC_[DEFER_TO|CALL]_CIMPL_XXX: IEM_CIMPL_F_XXX dictionary 2010 self.dsCImplFlags = {} # type: Dict[str, bool] 1985 2011 ## Decoded statements in the block. 1986 self.aoStmts = [] # type: list(McStmt)2012 self.aoStmts = [] # type: List[McStmt] 1987 2013 1988 2014 def complete(self, iEndLine, offEndLine, offAfterEnd, asLines): … … 2029 2055 def parseMcBegin(oSelf, sName, asParams): 2030 2056 """ IEM_MC_BEGIN """ 2031 oSelf.checkStmtParamCount(sName, asParams, 3);2032 if oSelf.cArgs != -1 or oSelf.cLocals != -1 or oSelf.d McFlags:2057 oSelf.checkStmtParamCount(sName, asParams, 4); 2058 if oSelf.cArgs != -1 or oSelf.cLocals != -1 or oSelf.dsMcFlags: 2033 2059 oSelf.raiseStmtError(sName, 'Used more than once!'); 2034 2060 oSelf.cArgs = int(asParams[0]); 2035 2061 oSelf.cLocals = int(asParams[1]); 2062 2036 2063 if asParams[2] != '0': 2037 2064 for sFlag in asParams[2].split('|'): 2038 2065 sFlag = sFlag.strip(); 2039 if sFlag in g_kdMcFlags: 2040 oSelf.dMcFlags[sFlag] = True; 2041 for sFlag2 in g_kdMcFlags[sFlag]: 2042 oSelf.dMcFlags[sFlag2] = True; 2043 else: 2066 if sFlag not in g_kdMcFlags: 2044 2067 oSelf.raiseStmtError(sName, 'Unknown flag: %s' % (sFlag, )); 2068 oSelf.dsMcFlags[sFlag] = True; 2069 for sFlag2 in g_kdMcFlags[sFlag]: 2070 oSelf.dsMcFlags[sFlag2] = True; 2071 2072 if asParams[3] != '0': 2073 oSelf.parseCImplFlags(sName, asParams[3]); 2045 2074 2046 2075 return McBlock.parseMcGeneric(oSelf, sName, asParams); … … 2129 2158 return McStmtCall(sName, asParams, 0); 2130 2159 2160 def parseCImplFlags(self, sName, sFlags): 2161 """ 2162 Helper for parseMcCallCImpl and parseMcDeferToCImpl to validate and 2163 merge a bunch of IEM_CIMPL_F_XXX value into dsCImplFlags. 2164 """ 2165 if sFlags != '0': 2166 sFlags = self.stripComments(sFlags); 2167 #print('debug: %s: %s' % (self.oFunction.sName,' | '.join(''.join(sFlags.split()).split('|')),)); 2168 for sFlag in sFlags.split('|'): 2169 sFlag = sFlag.strip(); 2170 #print('debug: %s' % sFlag) 2171 if sFlag not in g_kdCImplFlags: 2172 self.raiseStmtError(sName, 'Unknown flag: %s' % (sFlag, )); 2173 self.dsCImplFlags[sFlag] = True; 2174 for sFlag2 in g_kdCImplFlags[sFlag]: 2175 self.dsCImplFlags[sFlag2] = True; 2176 return None; 2177 2131 2178 @staticmethod 2132 2179 def parseMcCallCImpl(oSelf, sName, asParams): … … 2134 2181 cArgs = int(sName[-1]); 2135 2182 oSelf.checkStmtParamCount(sName, asParams, 2 + cArgs); 2183 oSelf.parseCImplFlags(sName, asParams[0]); 2184 return McStmtCall(sName, asParams, 1); 2185 2186 @staticmethod 2187 def parseMcDeferToCImpl(oSelf, sName, asParams): 2188 """ IEM_MC_DEFER_TO_CIMPL_[0|1|2|3]_RET """ 2189 #print('debug: %s, %s,...' % (sName, asParams[0],)); 2190 cArgs = int(sName[-5]); 2191 oSelf.checkStmtParamCount(sName, asParams, 2 + cArgs); 2192 oSelf.parseCImplFlags(sName, asParams[0]); 2136 2193 return McStmtCall(sName, asParams, 1); 2137 2194 … … 2601 2658 ## IEM_MC_XXX -> parser + info dictionary. 2602 2659 # 2603 # The info is currently a single boolean entry indicating whether the 2604 # statement modifies state and must not be used before IEMOP_HL_DONE_*. 2660 # The info columns: 2661 # - col 0: boolean entry indicating whether the statement modifies state and 2662 # must not be used before IEMOP_HL_DONE_*. 2663 # - col 1: boolean entry indicating native recompiler support. 2605 2664 # 2606 2665 # The raw table was generated via the following command … … 2608 2667 # | sort | uniq | gawk "{printf """ %%-60s (%%s, True)\n""", $1, $2}" 2609 2668 g_dMcStmtParsers = { 2610 'IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE': (McBlock.parseMcGeneric, False ),2611 'IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ': (McBlock.parseMcGeneric, False ),2612 'IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE': (McBlock.parseMcGeneric, False ),2613 'IEM_MC_ACTUALIZE_FPU_STATE_FOR_READ': (McBlock.parseMcGeneric, False ),2614 'IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE': (McBlock.parseMcGeneric, False ),2615 'IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ': (McBlock.parseMcGeneric, False ),2616 'IEM_MC_ADD_GREG_U16': (McBlock.parseMcGeneric, True ),2617 'IEM_MC_ADD_GREG_U16_TO_LOCAL': (McBlock.parseMcGeneric, False ),2618 'IEM_MC_ADD_GREG_U32': (McBlock.parseMcGeneric, True ),2619 'IEM_MC_ADD_GREG_U32_TO_LOCAL': (McBlock.parseMcGeneric, False ),2620 'IEM_MC_ADD_GREG_U64': (McBlock.parseMcGeneric, True ),2621 'IEM_MC_ADD_GREG_U64_TO_LOCAL': (McBlock.parseMcGeneric, False ),2622 'IEM_MC_ADD_GREG_U8': (McBlock.parseMcGeneric, True ),2623 'IEM_MC_ADD_GREG_U8_TO_LOCAL': (McBlock.parseMcGeneric, False ),2624 'IEM_MC_ADD_LOCAL_S16_TO_EFF_ADDR': (McBlock.parseMcGeneric, True ),2625 'IEM_MC_ADD_LOCAL_S32_TO_EFF_ADDR': (McBlock.parseMcGeneric, True ),2626 'IEM_MC_ADD_LOCAL_S64_TO_EFF_ADDR': (McBlock.parseMcGeneric, True ),2627 'IEM_MC_ADVANCE_RIP_AND_FINISH': (McBlock.parseMcGeneric, True ),2628 'IEM_MC_AND_2LOCS_U32': (McBlock.parseMcGeneric, False ),2629 'IEM_MC_AND_ARG_U16': (McBlock.parseMcGeneric, False ),2630 'IEM_MC_AND_ARG_U32': (McBlock.parseMcGeneric, False ),2631 'IEM_MC_AND_ARG_U64': (McBlock.parseMcGeneric, False ),2632 'IEM_MC_AND_GREG_U16': (McBlock.parseMcGeneric, True ),2633 'IEM_MC_AND_GREG_U32': (McBlock.parseMcGeneric, True ),2634 'IEM_MC_AND_GREG_U64': (McBlock.parseMcGeneric, True ),2635 'IEM_MC_AND_GREG_U8': (McBlock.parseMcGeneric, True ),2636 'IEM_MC_AND_LOCAL_U16': (McBlock.parseMcGeneric, False ),2637 'IEM_MC_AND_LOCAL_U32': (McBlock.parseMcGeneric, False ),2638 'IEM_MC_AND_LOCAL_U64': (McBlock.parseMcGeneric, False ),2639 'IEM_MC_AND_LOCAL_U8': (McBlock.parseMcGeneric, False ),2640 'IEM_MC_ARG': (McBlock.parseMcArg, False ),2641 'IEM_MC_ARG_CONST': (McBlock.parseMcArgConst, False ),2642 'IEM_MC_ARG_LOCAL_EFLAGS': (McBlock.parseMcArgLocalEFlags, False ),2643 'IEM_MC_ARG_LOCAL_REF': (McBlock.parseMcArgLocalRef, False ),2644 'IEM_MC_ASSIGN': (McBlock.parseMcGeneric, False ),2645 'IEM_MC_ASSIGN_TO_SMALLER': (McBlock.parseMcGeneric, False ),2646 'IEM_MC_ASSIGN_U8_SX_U64': (McBlock.parseMcGeneric, False ),2647 'IEM_MC_ASSIGN_U32_SX_U64': (McBlock.parseMcGeneric, False ),2648 'IEM_MC_BEGIN': (McBlock.parseMcBegin, False ),2649 'IEM_MC_BROADCAST_XREG_U16_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2650 'IEM_MC_BROADCAST_XREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2651 'IEM_MC_BROADCAST_XREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2652 'IEM_MC_BROADCAST_XREG_U8_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2653 'IEM_MC_BROADCAST_YREG_U128_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2654 'IEM_MC_BROADCAST_YREG_U16_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2655 'IEM_MC_BROADCAST_YREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2656 'IEM_MC_BROADCAST_YREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2657 'IEM_MC_BROADCAST_YREG_U8_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2658 'IEM_MC_BSWAP_LOCAL_U16': (McBlock.parseMcGeneric, False ),2659 'IEM_MC_BSWAP_LOCAL_U32': (McBlock.parseMcGeneric, False ),2660 'IEM_MC_BSWAP_LOCAL_U64': (McBlock.parseMcGeneric, False ),2661 'IEM_MC_CALC_RM_EFF_ADDR': (McBlock.parseMcGeneric, False ),2662 'IEM_MC_CALL_AIMPL_3': (McBlock.parseMcCallAImpl, True ),2663 'IEM_MC_CALL_AIMPL_4': (McBlock.parseMcCallAImpl, True ),2664 'IEM_MC_CALL_AVX_AIMPL_2': (McBlock.parseMcCallAvxAImpl, True ),2665 'IEM_MC_CALL_AVX_AIMPL_3': (McBlock.parseMcCallAvxAImpl, True ),2666 'IEM_MC_CALL_CIMPL_0': (McBlock.parseMcCallCImpl, True ),2667 'IEM_MC_CALL_CIMPL_1': (McBlock.parseMcCallCImpl, True ),2668 'IEM_MC_CALL_CIMPL_2': (McBlock.parseMcCallCImpl, True ),2669 'IEM_MC_CALL_CIMPL_3': (McBlock.parseMcCallCImpl, True ),2670 'IEM_MC_CALL_CIMPL_4': (McBlock.parseMcCallCImpl, True ),2671 'IEM_MC_CALL_CIMPL_5': (McBlock.parseMcCallCImpl, True ),2672 'IEM_MC_CALL_FPU_AIMPL_1': (McBlock.parseMcCallFpuAImpl, True ),2673 'IEM_MC_CALL_FPU_AIMPL_2': (McBlock.parseMcCallFpuAImpl, True ),2674 'IEM_MC_CALL_FPU_AIMPL_3': (McBlock.parseMcCallFpuAImpl, True ),2675 'IEM_MC_CALL_MMX_AIMPL_2': (McBlock.parseMcCallMmxAImpl, True ),2676 'IEM_MC_CALL_MMX_AIMPL_3': (McBlock.parseMcCallMmxAImpl, True ),2677 'IEM_MC_CALL_SSE_AIMPL_2': (McBlock.parseMcCallSseAImpl, True ),2678 'IEM_MC_CALL_SSE_AIMPL_3': (McBlock.parseMcCallSseAImpl, True ),2679 'IEM_MC_CALL_VOID_AIMPL_0': (McBlock.parseMcCallVoidAImpl, True ),2680 'IEM_MC_CALL_VOID_AIMPL_1': (McBlock.parseMcCallVoidAImpl, True ),2681 'IEM_MC_CALL_VOID_AIMPL_2': (McBlock.parseMcCallVoidAImpl, True ),2682 'IEM_MC_CALL_VOID_AIMPL_3': (McBlock.parseMcCallVoidAImpl, True ),2683 'IEM_MC_CALL_VOID_AIMPL_4': (McBlock.parseMcCallVoidAImpl, True ),2684 'IEM_MC_CLEAR_EFL_BIT': (McBlock.parseMcGeneric, True ),2685 'IEM_MC_CLEAR_FSW_EX': (McBlock.parseMcGeneric, True ),2686 'IEM_MC_CLEAR_HIGH_GREG_U64': (McBlock.parseMcGeneric, True ),2687 'IEM_MC_CLEAR_HIGH_GREG_U64_BY_REF': (McBlock.parseMcGeneric, True ),2688 'IEM_MC_CLEAR_XREG_U32_MASK': (McBlock.parseMcGeneric, True ),2689 'IEM_MC_CLEAR_YREG_128_UP': (McBlock.parseMcGeneric, True ),2690 'IEM_MC_COMMIT_EFLAGS': (McBlock.parseMcGeneric, True ),2691 'IEM_MC_COPY_XREG_U128': (McBlock.parseMcGeneric, True ),2692 'IEM_MC_COPY_YREG_U128_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2693 'IEM_MC_COPY_YREG_U256_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2694 'IEM_MC_COPY_YREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2695 'IEM_MC_DEFER_TO_CIMPL_0_RET': (McBlock.parseMc Generic, False),2696 'IEM_MC_DEFER_TO_CIMPL_1_RET': (McBlock.parseMc Generic, False),2697 'IEM_MC_DEFER_TO_CIMPL_2_RET': (McBlock.parseMc Generic, False),2698 'IEM_MC_DEFER_TO_CIMPL_3_RET': (McBlock.parseMc Generic, False),2699 'IEM_MC_END': (McBlock.parseMcGeneric, True ),2700 'IEM_MC_FETCH_EFLAGS': (McBlock.parseMcGeneric, False ),2701 'IEM_MC_FETCH_EFLAGS_U8': (McBlock.parseMcGeneric, False ),2702 'IEM_MC_FETCH_FCW': (McBlock.parseMcGeneric, False ),2703 'IEM_MC_FETCH_FSW': (McBlock.parseMcGeneric, False ),2704 'IEM_MC_FETCH_GREG_U16': (McBlock.parseMcGeneric, False ),2705 'IEM_MC_FETCH_GREG_U16_SX_U32': (McBlock.parseMcGeneric, False ),2706 'IEM_MC_FETCH_GREG_U16_SX_U64': (McBlock.parseMcGeneric, False ),2707 'IEM_MC_FETCH_GREG_U16_ZX_U32': (McBlock.parseMcGeneric, False ),2708 'IEM_MC_FETCH_GREG_U16_ZX_U64': (McBlock.parseMcGeneric, False ),2709 'IEM_MC_FETCH_GREG_U32': (McBlock.parseMcGeneric, False ),2710 'IEM_MC_FETCH_GREG_U32_SX_U64': (McBlock.parseMcGeneric, False ),2711 'IEM_MC_FETCH_GREG_U32_ZX_U64': (McBlock.parseMcGeneric, False ),2712 'IEM_MC_FETCH_GREG_U64': (McBlock.parseMcGeneric, False ),2713 'IEM_MC_FETCH_GREG_U64_ZX_U64': (McBlock.parseMcGeneric, False ),2714 'IEM_MC_FETCH_GREG_U8': (McBlock.parseMcGeneric, False ),2715 'IEM_MC_FETCH_GREG_U8_SX_U16': (McBlock.parseMcGeneric, False ),2716 'IEM_MC_FETCH_GREG_U8_SX_U32': (McBlock.parseMcGeneric, False ),2717 'IEM_MC_FETCH_GREG_U8_SX_U64': (McBlock.parseMcGeneric, False ),2718 'IEM_MC_FETCH_GREG_U8_ZX_U16': (McBlock.parseMcGeneric, False ),2719 'IEM_MC_FETCH_GREG_U8_ZX_U32': (McBlock.parseMcGeneric, False ),2720 'IEM_MC_FETCH_GREG_U8_ZX_U64': (McBlock.parseMcGeneric, False ),2721 'IEM_MC_FETCH_MEM_D80': (McBlock.parseMcGeneric, True ),2722 'IEM_MC_FETCH_MEM_I16': (McBlock.parseMcGeneric, True ),2723 'IEM_MC_FETCH_MEM_I32': (McBlock.parseMcGeneric, True ),2724 'IEM_MC_FETCH_MEM_I64': (McBlock.parseMcGeneric, True ),2725 'IEM_MC_FETCH_MEM_R32': (McBlock.parseMcGeneric, True ),2726 'IEM_MC_FETCH_MEM_R64': (McBlock.parseMcGeneric, True ),2727 'IEM_MC_FETCH_MEM_R80': (McBlock.parseMcGeneric, True ),2728 'IEM_MC_FETCH_MEM_S32_SX_U64': (McBlock.parseMcGeneric, True ),2729 'IEM_MC_FETCH_MEM_U128': (McBlock.parseMcGeneric, True ),2730 'IEM_MC_FETCH_MEM_U128_ALIGN_SSE': (McBlock.parseMcGeneric, True ),2731 'IEM_MC_FETCH_MEM_U128_NO_AC': (McBlock.parseMcGeneric, True ),2732 'IEM_MC_FETCH_MEM_U16': (McBlock.parseMcGeneric, True ),2733 'IEM_MC_FETCH_MEM_U16_DISP': (McBlock.parseMcGeneric, True ),2734 'IEM_MC_FETCH_MEM_U16_SX_U32': (McBlock.parseMcGeneric, True ),2735 'IEM_MC_FETCH_MEM_U16_SX_U64': (McBlock.parseMcGeneric, True ),2736 'IEM_MC_FETCH_MEM_U16_ZX_U32': (McBlock.parseMcGeneric, True ),2737 'IEM_MC_FETCH_MEM_U16_ZX_U64': (McBlock.parseMcGeneric, True ),2738 'IEM_MC_FETCH_MEM_U256': (McBlock.parseMcGeneric, True ),2739 'IEM_MC_FETCH_MEM_U256_ALIGN_AVX': (McBlock.parseMcGeneric, True ),2740 'IEM_MC_FETCH_MEM_U256_NO_AC': (McBlock.parseMcGeneric, True ),2741 'IEM_MC_FETCH_MEM_U32': (McBlock.parseMcGeneric, True ),2742 'IEM_MC_FETCH_MEM_U32_DISP': (McBlock.parseMcGeneric, True ),2743 'IEM_MC_FETCH_MEM_U32_SX_U64': (McBlock.parseMcGeneric, True ),2744 'IEM_MC_FETCH_MEM_U32_ZX_U64': (McBlock.parseMcGeneric, True ),2745 'IEM_MC_FETCH_MEM_U64': (McBlock.parseMcGeneric, True ),2746 'IEM_MC_FETCH_MEM_U64_ALIGN_U128': (McBlock.parseMcGeneric, True ),2747 'IEM_MC_FETCH_MEM_U64_DISP': (McBlock.parseMcGeneric, True ),2748 'IEM_MC_FETCH_MEM_U8': (McBlock.parseMcGeneric, True ),2749 'IEM_MC_FETCH_MEM_U8_SX_U16': (McBlock.parseMcGeneric, True ),2750 'IEM_MC_FETCH_MEM_U8_SX_U32': (McBlock.parseMcGeneric, True ),2751 'IEM_MC_FETCH_MEM_U8_SX_U64': (McBlock.parseMcGeneric, True ),2752 'IEM_MC_FETCH_MEM_U8_ZX_U16': (McBlock.parseMcGeneric, True ),2753 'IEM_MC_FETCH_MEM_U8_ZX_U32': (McBlock.parseMcGeneric, True ),2754 'IEM_MC_FETCH_MEM_U8_ZX_U64': (McBlock.parseMcGeneric, True ),2755 'IEM_MC_FETCH_MEM_XMM': (McBlock.parseMcGeneric, True ),2756 'IEM_MC_FETCH_MEM_XMM_ALIGN_SSE': (McBlock.parseMcGeneric, True ),2757 'IEM_MC_FETCH_MEM_XMM_NO_AC': (McBlock.parseMcGeneric, True ),2758 'IEM_MC_FETCH_MEM_XMM_U32': (McBlock.parseMcGeneric, True ),2759 'IEM_MC_FETCH_MEM_XMM_U64': (McBlock.parseMcGeneric, True ),2760 'IEM_MC_FETCH_MEM_YMM': (McBlock.parseMcGeneric, True ),2761 'IEM_MC_FETCH_MEM_YMM_ALIGN_AVX': (McBlock.parseMcGeneric, True ),2762 'IEM_MC_FETCH_MEM_YMM_NO_AC': (McBlock.parseMcGeneric, True ),2763 'IEM_MC_FETCH_MEM16_U8': (McBlock.parseMcGeneric, True ),2764 'IEM_MC_FETCH_MEM32_U8': (McBlock.parseMcGeneric, True ),2765 'IEM_MC_FETCH_MREG_U32': (McBlock.parseMcGeneric, False ),2766 'IEM_MC_FETCH_MREG_U64': (McBlock.parseMcGeneric, False ),2767 'IEM_MC_FETCH_SREG_BASE_U32': (McBlock.parseMcGeneric, False ),2768 'IEM_MC_FETCH_SREG_BASE_U64': (McBlock.parseMcGeneric, False ),2769 'IEM_MC_FETCH_SREG_U16': (McBlock.parseMcGeneric, False ),2770 'IEM_MC_FETCH_SREG_ZX_U32': (McBlock.parseMcGeneric, False ),2771 'IEM_MC_FETCH_SREG_ZX_U64': (McBlock.parseMcGeneric, False ),2772 'IEM_MC_FETCH_XREG_U128': (McBlock.parseMcGeneric, False ),2773 'IEM_MC_FETCH_XREG_U16': (McBlock.parseMcGeneric, False ),2774 'IEM_MC_FETCH_XREG_U32': (McBlock.parseMcGeneric, False ),2775 'IEM_MC_FETCH_XREG_U64': (McBlock.parseMcGeneric, False ),2776 'IEM_MC_FETCH_XREG_U8': (McBlock.parseMcGeneric, False ),2777 'IEM_MC_FETCH_XREG_XMM': (McBlock.parseMcGeneric, False ),2778 'IEM_MC_FETCH_YREG_2ND_U64': (McBlock.parseMcGeneric, False ),2779 'IEM_MC_FETCH_YREG_U128': (McBlock.parseMcGeneric, False ),2780 'IEM_MC_FETCH_YREG_U256': (McBlock.parseMcGeneric, False ),2781 'IEM_MC_FETCH_YREG_U32': (McBlock.parseMcGeneric, False ),2782 'IEM_MC_FETCH_YREG_U64': (McBlock.parseMcGeneric, False ),2783 'IEM_MC_FLIP_EFL_BIT': (McBlock.parseMcGeneric, True ),2784 'IEM_MC_FPU_FROM_MMX_MODE': (McBlock.parseMcGeneric, True ),2785 'IEM_MC_FPU_STACK_DEC_TOP': (McBlock.parseMcGeneric, True ),2786 'IEM_MC_FPU_STACK_FREE': (McBlock.parseMcGeneric, True ),2787 'IEM_MC_FPU_STACK_INC_TOP': (McBlock.parseMcGeneric, True ),2788 'IEM_MC_FPU_STACK_PUSH_OVERFLOW': (McBlock.parseMcGeneric, True ),2789 'IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP': (McBlock.parseMcGeneric, True ),2790 'IEM_MC_FPU_STACK_PUSH_UNDERFLOW': (McBlock.parseMcGeneric, True ),2791 'IEM_MC_FPU_STACK_PUSH_UNDERFLOW_TWO': (McBlock.parseMcGeneric, True ),2792 'IEM_MC_FPU_STACK_UNDERFLOW': (McBlock.parseMcGeneric, True ),2793 'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP': (McBlock.parseMcGeneric, True ),2794 'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP': (McBlock.parseMcGeneric, True ),2795 'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP': (McBlock.parseMcGeneric, True ),2796 'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP_POP': (McBlock.parseMcGeneric, True ),2797 'IEM_MC_FPU_TO_MMX_MODE': (McBlock.parseMcGeneric, True ),2798 'IEM_MC_IF_CX_IS_NZ': (McBlock.parseMcGenericCond, True ),2799 'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True ),2800 'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_SET': (McBlock.parseMcGenericCond, True ),2801 'IEM_MC_IF_ECX_IS_NZ': (McBlock.parseMcGenericCond, True ),2802 'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True ),2803 'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_SET': (McBlock.parseMcGenericCond, True ),2804 'IEM_MC_IF_EFL_ANY_BITS_SET': (McBlock.parseMcGenericCond, True ),2805 'IEM_MC_IF_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True ),2806 'IEM_MC_IF_EFL_BIT_NOT_SET_AND_BITS_EQ': (McBlock.parseMcGenericCond, True ),2807 'IEM_MC_IF_EFL_BIT_SET': (McBlock.parseMcGenericCond, True ),2808 'IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE': (McBlock.parseMcGenericCond, True ),2809 'IEM_MC_IF_EFL_BITS_EQ': (McBlock.parseMcGenericCond, True ),2810 'IEM_MC_IF_EFL_BITS_NE': (McBlock.parseMcGenericCond, True ),2811 'IEM_MC_IF_EFL_NO_BITS_SET': (McBlock.parseMcGenericCond, True ),2812 'IEM_MC_IF_FCW_IM': (McBlock.parseMcGenericCond, True ),2813 'IEM_MC_IF_FPUREG_IS_EMPTY': (McBlock.parseMcGenericCond, True ),2814 'IEM_MC_IF_FPUREG_NOT_EMPTY': (McBlock.parseMcGenericCond, True ),2815 'IEM_MC_IF_FPUREG_NOT_EMPTY_REF_R80': (McBlock.parseMcGenericCond, True ),2816 'IEM_MC_IF_GREG_BIT_SET': (McBlock.parseMcGenericCond, True ),2817 'IEM_MC_IF_LOCAL_IS_Z': (McBlock.parseMcGenericCond, True ),2818 'IEM_MC_IF_MXCSR_XCPT_PENDING': (McBlock.parseMcGenericCond, True ),2819 'IEM_MC_IF_RCX_IS_NZ': (McBlock.parseMcGenericCond, True ),2820 'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True ),2821 'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_SET': (McBlock.parseMcGenericCond, True ),2822 'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80': (McBlock.parseMcGenericCond, True ),2823 'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80_FIRST': (McBlock.parseMcGenericCond, True ),2824 'IEM_MC_IMPLICIT_AVX_AIMPL_ARGS': (McBlock.parseMcGeneric, False ),2825 'IEM_MC_INT_CLEAR_ZMM_256_UP': (McBlock.parseMcGeneric, True ),2826 'IEM_MC_LOCAL': (McBlock.parseMcLocal, False ),2827 'IEM_MC_LOCAL_CONST': (McBlock.parseMcLocalConst, False ),2828 'IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT': (McBlock.parseMcGeneric, True ),2829 'IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE': (McBlock.parseMcGeneric, True ),2830 'IEM_MC_MAYBE_RAISE_FPU_XCPT': (McBlock.parseMcGeneric, True ),2831 'IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT': (McBlock.parseMcGeneric, True ),2832 'IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT': (McBlock.parseMcGeneric, True ),2833 'IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0': (McBlock.parseMcGeneric, True ),2834 'IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT': (McBlock.parseMcGeneric, True ),2835 'IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT': (McBlock.parseMcGeneric, True ),2836 'IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE': (McBlock.parseMcGeneric, True ),2837 'IEM_MC_MEM_COMMIT_AND_UNMAP': (McBlock.parseMcGeneric, True ),2838 'IEM_MC_MEM_COMMIT_AND_UNMAP_RW': (McBlock.parseMcGeneric, True ),2839 'IEM_MC_MEM_COMMIT_AND_UNMAP_RO': (McBlock.parseMcGeneric, True ),2840 'IEM_MC_MEM_COMMIT_AND_UNMAP_WO': (McBlock.parseMcGeneric, True ),2841 'IEM_MC_MEM_COMMIT_AND_UNMAP_FOR_FPU_STORE': (McBlock.parseMcGeneric, True ),2842 'IEM_MC_MEM_MAP': (McBlock.parseMcGeneric, True ),2843 'IEM_MC_MEM_MAP_EX': (McBlock.parseMcGeneric, True ),2844 'IEM_MC_MEM_MAP_U8_RW': (McBlock.parseMcGeneric, True ),2845 'IEM_MC_MEM_MAP_U8_RO': (McBlock.parseMcGeneric, True ),2846 'IEM_MC_MEM_MAP_U8_WO': (McBlock.parseMcGeneric, True ),2847 'IEM_MC_MEM_MAP_U16_RW': (McBlock.parseMcGeneric, True ),2848 'IEM_MC_MEM_MAP_U16_RO': (McBlock.parseMcGeneric, True ),2849 'IEM_MC_MEM_MAP_U16_WO': (McBlock.parseMcGeneric, True ),2850 'IEM_MC_MEM_MAP_U32_RW': (McBlock.parseMcGeneric, True ),2851 'IEM_MC_MEM_MAP_U32_RO': (McBlock.parseMcGeneric, True ),2852 'IEM_MC_MEM_MAP_U32_WO': (McBlock.parseMcGeneric, True ),2853 'IEM_MC_MEM_MAP_U64_RW': (McBlock.parseMcGeneric, True ),2854 'IEM_MC_MEM_MAP_U64_RO': (McBlock.parseMcGeneric, True ),2855 'IEM_MC_MEM_MAP_U64_WO': (McBlock.parseMcGeneric, True ),2856 'IEM_MC_MERGE_YREG_U32_U96_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2857 'IEM_MC_MERGE_YREG_U64_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2858 'IEM_MC_MERGE_YREG_U64HI_U64HI_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2859 'IEM_MC_MERGE_YREG_U64LO_U64LO_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2860 'IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2861 'IEM_MC_MERGE_YREG_U64LOCAL_U64HI_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2862 'IEM_MC_MODIFIED_MREG': (McBlock.parseMcGeneric, True ),2863 'IEM_MC_MODIFIED_MREG_BY_REF': (McBlock.parseMcGeneric, True ),2864 'IEM_MC_OR_2LOCS_U32': (McBlock.parseMcGeneric, False ),2865 'IEM_MC_OR_GREG_U16': (McBlock.parseMcGeneric, True ),2866 'IEM_MC_OR_GREG_U32': (McBlock.parseMcGeneric, True ),2867 'IEM_MC_OR_GREG_U64': (McBlock.parseMcGeneric, True ),2868 'IEM_MC_OR_GREG_U8': (McBlock.parseMcGeneric, True ),2869 'IEM_MC_OR_LOCAL_U16': (McBlock.parseMcGeneric, False ),2870 'IEM_MC_OR_LOCAL_U32': (McBlock.parseMcGeneric, False ),2871 'IEM_MC_OR_LOCAL_U8': (McBlock.parseMcGeneric, False ),2872 'IEM_MC_POP_U16': (McBlock.parseMcGeneric, True ),2873 'IEM_MC_POP_U32': (McBlock.parseMcGeneric, True ),2874 'IEM_MC_POP_U64': (McBlock.parseMcGeneric, True ),2875 'IEM_MC_PREPARE_AVX_USAGE': (McBlock.parseMcGeneric, False ),2876 'IEM_MC_PREPARE_FPU_USAGE': (McBlock.parseMcGeneric, False ),2877 'IEM_MC_PREPARE_SSE_USAGE': (McBlock.parseMcGeneric, False ),2878 'IEM_MC_PUSH_FPU_RESULT': (McBlock.parseMcGeneric, True ),2879 'IEM_MC_PUSH_FPU_RESULT_MEM_OP': (McBlock.parseMcGeneric, True ),2880 'IEM_MC_PUSH_FPU_RESULT_TWO': (McBlock.parseMcGeneric, True ),2881 'IEM_MC_PUSH_U16': (McBlock.parseMcGeneric, True ),2882 'IEM_MC_PUSH_U32': (McBlock.parseMcGeneric, True ),2883 'IEM_MC_PUSH_U32_SREG': (McBlock.parseMcGeneric, True ),2884 'IEM_MC_PUSH_U64': (McBlock.parseMcGeneric, True ),2885 'IEM_MC_RAISE_DIVIDE_ERROR': (McBlock.parseMcGeneric, True ),2886 'IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO': (McBlock.parseMcGeneric, True ),2887 'IEM_MC_RAISE_GP0_IF_EFF_ADDR_UNALIGNED': (McBlock.parseMcGeneric, True ),2888 'IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT': (McBlock.parseMcGeneric, True ),2889 'IEM_MC_REF_EFLAGS': (McBlock.parseMcGeneric, False ),2890 'IEM_MC_REF_FPUREG': (McBlock.parseMcGeneric, False ),2891 'IEM_MC_REF_GREG_I32': (McBlock.parseMcGeneric, False ),2892 'IEM_MC_REF_GREG_I32_CONST': (McBlock.parseMcGeneric, False ),2893 'IEM_MC_REF_GREG_I64': (McBlock.parseMcGeneric, False ),2894 'IEM_MC_REF_GREG_I64_CONST': (McBlock.parseMcGeneric, False ),2895 'IEM_MC_REF_GREG_U16': (McBlock.parseMcGeneric, False ),2896 'IEM_MC_REF_GREG_U16_CONST': (McBlock.parseMcGeneric, False ),2897 'IEM_MC_REF_GREG_U32': (McBlock.parseMcGeneric, False ),2898 'IEM_MC_REF_GREG_U32_CONST': (McBlock.parseMcGeneric, False ),2899 'IEM_MC_REF_GREG_U64': (McBlock.parseMcGeneric, False ),2900 'IEM_MC_REF_GREG_U64_CONST': (McBlock.parseMcGeneric, False ),2901 'IEM_MC_REF_GREG_U8': (McBlock.parseMcGeneric, False ),2902 'IEM_MC_REF_GREG_U8_CONST': (McBlock.parseMcGeneric, False ),2903 'IEM_MC_REF_LOCAL': (McBlock.parseMcGeneric, False ),2904 'IEM_MC_REF_MREG_U32_CONST': (McBlock.parseMcGeneric, False ),2905 'IEM_MC_REF_MREG_U64': (McBlock.parseMcGeneric, False ),2906 'IEM_MC_REF_MREG_U64_CONST': (McBlock.parseMcGeneric, False ),2907 'IEM_MC_REF_MXCSR': (McBlock.parseMcGeneric, False ),2908 'IEM_MC_REF_XREG_R32_CONST': (McBlock.parseMcGeneric, False ),2909 'IEM_MC_REF_XREG_R64_CONST': (McBlock.parseMcGeneric, False ),2910 'IEM_MC_REF_XREG_U128': (McBlock.parseMcGeneric, False ),2911 'IEM_MC_REF_XREG_U128_CONST': (McBlock.parseMcGeneric, False ),2912 'IEM_MC_REF_XREG_U32_CONST': (McBlock.parseMcGeneric, False ),2913 'IEM_MC_REF_XREG_U64_CONST': (McBlock.parseMcGeneric, False ),2914 'IEM_MC_REF_XREG_XMM_CONST': (McBlock.parseMcGeneric, False ),2915 'IEM_MC_REF_YREG_U128': (McBlock.parseMcGeneric, False ),2916 'IEM_MC_REF_YREG_U128_CONST': (McBlock.parseMcGeneric, False ),2917 'IEM_MC_REF_YREG_U64_CONST': (McBlock.parseMcGeneric, False ),2918 'IEM_MC_REL_JMP_S16_AND_FINISH': (McBlock.parseMcGeneric, True ),2919 'IEM_MC_REL_JMP_S32_AND_FINISH': (McBlock.parseMcGeneric, True ),2920 'IEM_MC_REL_JMP_S8_AND_FINISH': (McBlock.parseMcGeneric, True ),2921 'IEM_MC_RETURN_ON_FAILURE': (McBlock.parseMcGeneric, False ),2922 'IEM_MC_SAR_LOCAL_S16': (McBlock.parseMcGeneric, False ),2923 'IEM_MC_SAR_LOCAL_S32': (McBlock.parseMcGeneric, False ),2924 'IEM_MC_SAR_LOCAL_S64': (McBlock.parseMcGeneric, False ),2925 'IEM_MC_SET_EFL_BIT': (McBlock.parseMcGeneric, True ),2926 'IEM_MC_SET_FPU_RESULT': (McBlock.parseMcGeneric, True ),2927 'IEM_MC_SET_RIP_U16_AND_FINISH': (McBlock.parseMcGeneric, True ),2928 'IEM_MC_SET_RIP_U32_AND_FINISH': (McBlock.parseMcGeneric, True ),2929 'IEM_MC_SET_RIP_U64_AND_FINISH': (McBlock.parseMcGeneric, True ),2930 'IEM_MC_SHL_LOCAL_S16': (McBlock.parseMcGeneric, False ),2931 'IEM_MC_SHL_LOCAL_S32': (McBlock.parseMcGeneric, False ),2932 'IEM_MC_SHL_LOCAL_S64': (McBlock.parseMcGeneric, False ),2933 'IEM_MC_SHR_LOCAL_U8': (McBlock.parseMcGeneric, False ),2934 'IEM_MC_SSE_UPDATE_MXCSR': (McBlock.parseMcGeneric, True ),2935 'IEM_MC_STORE_FPU_RESULT': (McBlock.parseMcGeneric, True ),2936 'IEM_MC_STORE_FPU_RESULT_MEM_OP': (McBlock.parseMcGeneric, True ),2937 'IEM_MC_STORE_FPU_RESULT_THEN_POP': (McBlock.parseMcGeneric, True ),2938 'IEM_MC_STORE_FPU_RESULT_WITH_MEM_OP_THEN_POP': (McBlock.parseMcGeneric, True ),2939 'IEM_MC_STORE_FPUREG_R80_SRC_REF': (McBlock.parseMcGeneric, True ),2940 'IEM_MC_STORE_GREG_I64': (McBlock.parseMcGeneric, True ),2941 'IEM_MC_STORE_GREG_U16': (McBlock.parseMcGeneric, True ),2942 'IEM_MC_STORE_GREG_U16_CONST': (McBlock.parseMcGeneric, True ),2943 'IEM_MC_STORE_GREG_U32': (McBlock.parseMcGeneric, True ),2944 'IEM_MC_STORE_GREG_U32_CONST': (McBlock.parseMcGeneric, True ),2945 'IEM_MC_STORE_GREG_U64': (McBlock.parseMcGeneric, True ),2946 'IEM_MC_STORE_GREG_U64_CONST': (McBlock.parseMcGeneric, True ),2947 'IEM_MC_STORE_GREG_U8': (McBlock.parseMcGeneric, True ),2948 'IEM_MC_STORE_GREG_U8_CONST': (McBlock.parseMcGeneric, True ),2949 'IEM_MC_STORE_MEM_I16_CONST_BY_REF': (McBlock.parseMcGeneric, True ),2950 'IEM_MC_STORE_MEM_I32_CONST_BY_REF': (McBlock.parseMcGeneric, True ),2951 'IEM_MC_STORE_MEM_I64_CONST_BY_REF': (McBlock.parseMcGeneric, True ),2952 'IEM_MC_STORE_MEM_I8_CONST_BY_REF': (McBlock.parseMcGeneric, True ),2953 'IEM_MC_STORE_MEM_INDEF_D80_BY_REF': (McBlock.parseMcGeneric, True ),2954 'IEM_MC_STORE_MEM_NEG_QNAN_R32_BY_REF': (McBlock.parseMcGeneric, True ),2955 'IEM_MC_STORE_MEM_NEG_QNAN_R64_BY_REF': (McBlock.parseMcGeneric, True ),2956 'IEM_MC_STORE_MEM_NEG_QNAN_R80_BY_REF': (McBlock.parseMcGeneric, True ),2957 'IEM_MC_STORE_MEM_U128': (McBlock.parseMcGeneric, True ),2958 'IEM_MC_STORE_MEM_U128_ALIGN_SSE': (McBlock.parseMcGeneric, True ),2959 'IEM_MC_STORE_MEM_U16': (McBlock.parseMcGeneric, True ),2960 'IEM_MC_STORE_MEM_U16_CONST': (McBlock.parseMcGeneric, True ),2961 'IEM_MC_STORE_MEM_U256': (McBlock.parseMcGeneric, True ),2962 'IEM_MC_STORE_MEM_U256_ALIGN_AVX': (McBlock.parseMcGeneric, True ),2963 'IEM_MC_STORE_MEM_U32': (McBlock.parseMcGeneric, True ),2964 'IEM_MC_STORE_MEM_U32_CONST': (McBlock.parseMcGeneric, True ),2965 'IEM_MC_STORE_MEM_U64': (McBlock.parseMcGeneric, True ),2966 'IEM_MC_STORE_MEM_U64_CONST': (McBlock.parseMcGeneric, True ),2967 'IEM_MC_STORE_MEM_U8': (McBlock.parseMcGeneric, True ),2968 'IEM_MC_STORE_MEM_U8_CONST': (McBlock.parseMcGeneric, True ),2969 'IEM_MC_STORE_MREG_U32_ZX_U64': (McBlock.parseMcGeneric, True ),2970 'IEM_MC_STORE_MREG_U64': (McBlock.parseMcGeneric, True ),2971 'IEM_MC_STORE_SREG_BASE_U32': (McBlock.parseMcGeneric, True ),2972 'IEM_MC_STORE_SREG_BASE_U64': (McBlock.parseMcGeneric, True ),2973 'IEM_MC_STORE_SSE_RESULT': (McBlock.parseMcGeneric, True ),2974 'IEM_MC_STORE_XREG_HI_U64': (McBlock.parseMcGeneric, True ),2975 'IEM_MC_STORE_XREG_R32': (McBlock.parseMcGeneric, True ),2976 'IEM_MC_STORE_XREG_R64': (McBlock.parseMcGeneric, True ),2977 'IEM_MC_STORE_XREG_U128': (McBlock.parseMcGeneric, True ),2978 'IEM_MC_STORE_XREG_U16': (McBlock.parseMcGeneric, True ),2979 'IEM_MC_STORE_XREG_U32': (McBlock.parseMcGeneric, True ),2980 'IEM_MC_STORE_XREG_U32_U128': (McBlock.parseMcGeneric, True ),2981 'IEM_MC_STORE_XREG_U32_ZX_U128': (McBlock.parseMcGeneric, True ),2982 'IEM_MC_STORE_XREG_U64': (McBlock.parseMcGeneric, True ),2983 'IEM_MC_STORE_XREG_U64_ZX_U128': (McBlock.parseMcGeneric, True ),2984 'IEM_MC_STORE_XREG_U8': (McBlock.parseMcGeneric, True ),2985 'IEM_MC_STORE_XREG_XMM': (McBlock.parseMcGeneric, True ),2986 'IEM_MC_STORE_XREG_XMM_U32': (McBlock.parseMcGeneric, True ),2987 'IEM_MC_STORE_XREG_XMM_U64': (McBlock.parseMcGeneric, True ),2988 'IEM_MC_STORE_YREG_U128': (McBlock.parseMcGeneric, True ),2989 'IEM_MC_STORE_YREG_U128_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2990 'IEM_MC_STORE_YREG_U256_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2991 'IEM_MC_STORE_YREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2992 'IEM_MC_STORE_YREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True ),2993 'IEM_MC_SUB_GREG_U16': (McBlock.parseMcGeneric, True ),2994 'IEM_MC_SUB_GREG_U32': (McBlock.parseMcGeneric, True ),2995 'IEM_MC_SUB_GREG_U64': (McBlock.parseMcGeneric, True ),2996 'IEM_MC_SUB_GREG_U8': (McBlock.parseMcGeneric, True ),2997 'IEM_MC_SUB_LOCAL_U16': (McBlock.parseMcGeneric, False ),2998 'IEM_MC_UPDATE_FPU_OPCODE_IP': (McBlock.parseMcGeneric, True ),2999 'IEM_MC_UPDATE_FSW': (McBlock.parseMcGeneric, True ),3000 'IEM_MC_UPDATE_FSW_CONST': (McBlock.parseMcGeneric, True ),3001 'IEM_MC_UPDATE_FSW_THEN_POP': (McBlock.parseMcGeneric, True ),3002 'IEM_MC_UPDATE_FSW_THEN_POP_POP': (McBlock.parseMcGeneric, True ),3003 'IEM_MC_UPDATE_FSW_WITH_MEM_OP': (McBlock.parseMcGeneric, True ),3004 'IEM_MC_UPDATE_FSW_WITH_MEM_OP_THEN_POP': (McBlock.parseMcGeneric, True ),2669 'IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE': (McBlock.parseMcGeneric, False, False, ), 2670 'IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ': (McBlock.parseMcGeneric, False, False, ), 2671 'IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE': (McBlock.parseMcGeneric, False, False, ), 2672 'IEM_MC_ACTUALIZE_FPU_STATE_FOR_READ': (McBlock.parseMcGeneric, False, False, ), 2673 'IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE': (McBlock.parseMcGeneric, False, False, ), 2674 'IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ': (McBlock.parseMcGeneric, False, False, ), 2675 'IEM_MC_ADD_GREG_U16': (McBlock.parseMcGeneric, True, False, ), 2676 'IEM_MC_ADD_GREG_U16_TO_LOCAL': (McBlock.parseMcGeneric, False, False, ), 2677 'IEM_MC_ADD_GREG_U32': (McBlock.parseMcGeneric, True, False, ), 2678 'IEM_MC_ADD_GREG_U32_TO_LOCAL': (McBlock.parseMcGeneric, False, False, ), 2679 'IEM_MC_ADD_GREG_U64': (McBlock.parseMcGeneric, True, False, ), 2680 'IEM_MC_ADD_GREG_U64_TO_LOCAL': (McBlock.parseMcGeneric, False, False, ), 2681 'IEM_MC_ADD_GREG_U8': (McBlock.parseMcGeneric, True, False, ), 2682 'IEM_MC_ADD_GREG_U8_TO_LOCAL': (McBlock.parseMcGeneric, False, False, ), 2683 'IEM_MC_ADD_LOCAL_S16_TO_EFF_ADDR': (McBlock.parseMcGeneric, True, False, ), 2684 'IEM_MC_ADD_LOCAL_S32_TO_EFF_ADDR': (McBlock.parseMcGeneric, True, False, ), 2685 'IEM_MC_ADD_LOCAL_S64_TO_EFF_ADDR': (McBlock.parseMcGeneric, True, False, ), 2686 'IEM_MC_ADVANCE_RIP_AND_FINISH': (McBlock.parseMcGeneric, True, True, ), 2687 'IEM_MC_AND_2LOCS_U32': (McBlock.parseMcGeneric, False, False, ), 2688 'IEM_MC_AND_ARG_U16': (McBlock.parseMcGeneric, False, False, ), 2689 'IEM_MC_AND_ARG_U32': (McBlock.parseMcGeneric, False, False, ), 2690 'IEM_MC_AND_ARG_U64': (McBlock.parseMcGeneric, False, False, ), 2691 'IEM_MC_AND_GREG_U16': (McBlock.parseMcGeneric, True, False, ), 2692 'IEM_MC_AND_GREG_U32': (McBlock.parseMcGeneric, True, False, ), 2693 'IEM_MC_AND_GREG_U64': (McBlock.parseMcGeneric, True, False, ), 2694 'IEM_MC_AND_GREG_U8': (McBlock.parseMcGeneric, True, False, ), 2695 'IEM_MC_AND_LOCAL_U16': (McBlock.parseMcGeneric, False, False, ), 2696 'IEM_MC_AND_LOCAL_U32': (McBlock.parseMcGeneric, False, False, ), 2697 'IEM_MC_AND_LOCAL_U64': (McBlock.parseMcGeneric, False, False, ), 2698 'IEM_MC_AND_LOCAL_U8': (McBlock.parseMcGeneric, False, False, ), 2699 'IEM_MC_ARG': (McBlock.parseMcArg, False, False, ), 2700 'IEM_MC_ARG_CONST': (McBlock.parseMcArgConst, False, False, ), 2701 'IEM_MC_ARG_LOCAL_EFLAGS': (McBlock.parseMcArgLocalEFlags, False, False, ), 2702 'IEM_MC_ARG_LOCAL_REF': (McBlock.parseMcArgLocalRef, False, False, ), 2703 'IEM_MC_ASSIGN': (McBlock.parseMcGeneric, False, False, ), 2704 'IEM_MC_ASSIGN_TO_SMALLER': (McBlock.parseMcGeneric, False, False, ), 2705 'IEM_MC_ASSIGN_U8_SX_U64': (McBlock.parseMcGeneric, False, False, ), 2706 'IEM_MC_ASSIGN_U32_SX_U64': (McBlock.parseMcGeneric, False, False, ), 2707 'IEM_MC_BEGIN': (McBlock.parseMcBegin, False, True, ), 2708 'IEM_MC_BROADCAST_XREG_U16_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2709 'IEM_MC_BROADCAST_XREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2710 'IEM_MC_BROADCAST_XREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2711 'IEM_MC_BROADCAST_XREG_U8_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2712 'IEM_MC_BROADCAST_YREG_U128_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2713 'IEM_MC_BROADCAST_YREG_U16_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2714 'IEM_MC_BROADCAST_YREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2715 'IEM_MC_BROADCAST_YREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2716 'IEM_MC_BROADCAST_YREG_U8_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2717 'IEM_MC_BSWAP_LOCAL_U16': (McBlock.parseMcGeneric, False, False, ), 2718 'IEM_MC_BSWAP_LOCAL_U32': (McBlock.parseMcGeneric, False, False, ), 2719 'IEM_MC_BSWAP_LOCAL_U64': (McBlock.parseMcGeneric, False, False, ), 2720 'IEM_MC_CALC_RM_EFF_ADDR': (McBlock.parseMcGeneric, False, False, ), 2721 'IEM_MC_CALL_AIMPL_3': (McBlock.parseMcCallAImpl, True, False, ), 2722 'IEM_MC_CALL_AIMPL_4': (McBlock.parseMcCallAImpl, True, False, ), 2723 'IEM_MC_CALL_AVX_AIMPL_2': (McBlock.parseMcCallAvxAImpl, True, False, ), 2724 'IEM_MC_CALL_AVX_AIMPL_3': (McBlock.parseMcCallAvxAImpl, True, False, ), 2725 'IEM_MC_CALL_CIMPL_0': (McBlock.parseMcCallCImpl, True, False, ), 2726 'IEM_MC_CALL_CIMPL_1': (McBlock.parseMcCallCImpl, True, False, ), 2727 'IEM_MC_CALL_CIMPL_2': (McBlock.parseMcCallCImpl, True, False, ), 2728 'IEM_MC_CALL_CIMPL_3': (McBlock.parseMcCallCImpl, True, False, ), 2729 'IEM_MC_CALL_CIMPL_4': (McBlock.parseMcCallCImpl, True, False, ), 2730 'IEM_MC_CALL_CIMPL_5': (McBlock.parseMcCallCImpl, True, False, ), 2731 'IEM_MC_CALL_FPU_AIMPL_1': (McBlock.parseMcCallFpuAImpl, True, False, ), 2732 'IEM_MC_CALL_FPU_AIMPL_2': (McBlock.parseMcCallFpuAImpl, True, False, ), 2733 'IEM_MC_CALL_FPU_AIMPL_3': (McBlock.parseMcCallFpuAImpl, True, False, ), 2734 'IEM_MC_CALL_MMX_AIMPL_2': (McBlock.parseMcCallMmxAImpl, True, False, ), 2735 'IEM_MC_CALL_MMX_AIMPL_3': (McBlock.parseMcCallMmxAImpl, True, False, ), 2736 'IEM_MC_CALL_SSE_AIMPL_2': (McBlock.parseMcCallSseAImpl, True, False, ), 2737 'IEM_MC_CALL_SSE_AIMPL_3': (McBlock.parseMcCallSseAImpl, True, False, ), 2738 'IEM_MC_CALL_VOID_AIMPL_0': (McBlock.parseMcCallVoidAImpl, True, False, ), 2739 'IEM_MC_CALL_VOID_AIMPL_1': (McBlock.parseMcCallVoidAImpl, True, False, ), 2740 'IEM_MC_CALL_VOID_AIMPL_2': (McBlock.parseMcCallVoidAImpl, True, False, ), 2741 'IEM_MC_CALL_VOID_AIMPL_3': (McBlock.parseMcCallVoidAImpl, True, False, ), 2742 'IEM_MC_CALL_VOID_AIMPL_4': (McBlock.parseMcCallVoidAImpl, True, False, ), 2743 'IEM_MC_CLEAR_EFL_BIT': (McBlock.parseMcGeneric, True, False, ), 2744 'IEM_MC_CLEAR_FSW_EX': (McBlock.parseMcGeneric, True, False, ), 2745 'IEM_MC_CLEAR_HIGH_GREG_U64': (McBlock.parseMcGeneric, True, False, ), 2746 'IEM_MC_CLEAR_HIGH_GREG_U64_BY_REF': (McBlock.parseMcGeneric, True, False, ), 2747 'IEM_MC_CLEAR_XREG_U32_MASK': (McBlock.parseMcGeneric, True, False, ), 2748 'IEM_MC_CLEAR_YREG_128_UP': (McBlock.parseMcGeneric, True, False, ), 2749 'IEM_MC_COMMIT_EFLAGS': (McBlock.parseMcGeneric, True, False, ), 2750 'IEM_MC_COPY_XREG_U128': (McBlock.parseMcGeneric, True, False, ), 2751 'IEM_MC_COPY_YREG_U128_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2752 'IEM_MC_COPY_YREG_U256_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2753 'IEM_MC_COPY_YREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2754 'IEM_MC_DEFER_TO_CIMPL_0_RET': (McBlock.parseMcDeferToCImpl, False, False, ), 2755 'IEM_MC_DEFER_TO_CIMPL_1_RET': (McBlock.parseMcDeferToCImpl, False, False, ), 2756 'IEM_MC_DEFER_TO_CIMPL_2_RET': (McBlock.parseMcDeferToCImpl, False, False, ), 2757 'IEM_MC_DEFER_TO_CIMPL_3_RET': (McBlock.parseMcDeferToCImpl, False, False, ), 2758 'IEM_MC_END': (McBlock.parseMcGeneric, True, True, ), 2759 'IEM_MC_FETCH_EFLAGS': (McBlock.parseMcGeneric, False, False, ), 2760 'IEM_MC_FETCH_EFLAGS_U8': (McBlock.parseMcGeneric, False, False, ), 2761 'IEM_MC_FETCH_FCW': (McBlock.parseMcGeneric, False, False, ), 2762 'IEM_MC_FETCH_FSW': (McBlock.parseMcGeneric, False, False, ), 2763 'IEM_MC_FETCH_GREG_U16': (McBlock.parseMcGeneric, False, False, ), 2764 'IEM_MC_FETCH_GREG_U16_SX_U32': (McBlock.parseMcGeneric, False, False, ), 2765 'IEM_MC_FETCH_GREG_U16_SX_U64': (McBlock.parseMcGeneric, False, False, ), 2766 'IEM_MC_FETCH_GREG_U16_ZX_U32': (McBlock.parseMcGeneric, False, False, ), 2767 'IEM_MC_FETCH_GREG_U16_ZX_U64': (McBlock.parseMcGeneric, False, False, ), 2768 'IEM_MC_FETCH_GREG_U32': (McBlock.parseMcGeneric, False, False, ), 2769 'IEM_MC_FETCH_GREG_U32_SX_U64': (McBlock.parseMcGeneric, False, False, ), 2770 'IEM_MC_FETCH_GREG_U32_ZX_U64': (McBlock.parseMcGeneric, False, False, ), 2771 'IEM_MC_FETCH_GREG_U64': (McBlock.parseMcGeneric, False, False, ), 2772 'IEM_MC_FETCH_GREG_U64_ZX_U64': (McBlock.parseMcGeneric, False, False, ), 2773 'IEM_MC_FETCH_GREG_U8': (McBlock.parseMcGeneric, False, False, ), 2774 'IEM_MC_FETCH_GREG_U8_SX_U16': (McBlock.parseMcGeneric, False, False, ), 2775 'IEM_MC_FETCH_GREG_U8_SX_U32': (McBlock.parseMcGeneric, False, False, ), 2776 'IEM_MC_FETCH_GREG_U8_SX_U64': (McBlock.parseMcGeneric, False, False, ), 2777 'IEM_MC_FETCH_GREG_U8_ZX_U16': (McBlock.parseMcGeneric, False, False, ), 2778 'IEM_MC_FETCH_GREG_U8_ZX_U32': (McBlock.parseMcGeneric, False, False, ), 2779 'IEM_MC_FETCH_GREG_U8_ZX_U64': (McBlock.parseMcGeneric, False, False, ), 2780 'IEM_MC_FETCH_MEM_D80': (McBlock.parseMcGeneric, True, False, ), 2781 'IEM_MC_FETCH_MEM_I16': (McBlock.parseMcGeneric, True, False, ), 2782 'IEM_MC_FETCH_MEM_I32': (McBlock.parseMcGeneric, True, False, ), 2783 'IEM_MC_FETCH_MEM_I64': (McBlock.parseMcGeneric, True, False, ), 2784 'IEM_MC_FETCH_MEM_R32': (McBlock.parseMcGeneric, True, False, ), 2785 'IEM_MC_FETCH_MEM_R64': (McBlock.parseMcGeneric, True, False, ), 2786 'IEM_MC_FETCH_MEM_R80': (McBlock.parseMcGeneric, True, False, ), 2787 'IEM_MC_FETCH_MEM_S32_SX_U64': (McBlock.parseMcGeneric, True, False, ), 2788 'IEM_MC_FETCH_MEM_U128': (McBlock.parseMcGeneric, True, False, ), 2789 'IEM_MC_FETCH_MEM_U128_ALIGN_SSE': (McBlock.parseMcGeneric, True, False, ), 2790 'IEM_MC_FETCH_MEM_U128_NO_AC': (McBlock.parseMcGeneric, True, False, ), 2791 'IEM_MC_FETCH_MEM_U16': (McBlock.parseMcGeneric, True, False, ), 2792 'IEM_MC_FETCH_MEM_U16_DISP': (McBlock.parseMcGeneric, True, False, ), 2793 'IEM_MC_FETCH_MEM_U16_SX_U32': (McBlock.parseMcGeneric, True, False, ), 2794 'IEM_MC_FETCH_MEM_U16_SX_U64': (McBlock.parseMcGeneric, True, False, ), 2795 'IEM_MC_FETCH_MEM_U16_ZX_U32': (McBlock.parseMcGeneric, True, False, ), 2796 'IEM_MC_FETCH_MEM_U16_ZX_U64': (McBlock.parseMcGeneric, True, False, ), 2797 'IEM_MC_FETCH_MEM_U256': (McBlock.parseMcGeneric, True, False, ), 2798 'IEM_MC_FETCH_MEM_U256_ALIGN_AVX': (McBlock.parseMcGeneric, True, False, ), 2799 'IEM_MC_FETCH_MEM_U256_NO_AC': (McBlock.parseMcGeneric, True, False, ), 2800 'IEM_MC_FETCH_MEM_U32': (McBlock.parseMcGeneric, True, False, ), 2801 'IEM_MC_FETCH_MEM_U32_DISP': (McBlock.parseMcGeneric, True, False, ), 2802 'IEM_MC_FETCH_MEM_U32_SX_U64': (McBlock.parseMcGeneric, True, False, ), 2803 'IEM_MC_FETCH_MEM_U32_ZX_U64': (McBlock.parseMcGeneric, True, False, ), 2804 'IEM_MC_FETCH_MEM_U64': (McBlock.parseMcGeneric, True, False, ), 2805 'IEM_MC_FETCH_MEM_U64_ALIGN_U128': (McBlock.parseMcGeneric, True, False, ), 2806 'IEM_MC_FETCH_MEM_U64_DISP': (McBlock.parseMcGeneric, True, False, ), 2807 'IEM_MC_FETCH_MEM_U8': (McBlock.parseMcGeneric, True, False, ), 2808 'IEM_MC_FETCH_MEM_U8_SX_U16': (McBlock.parseMcGeneric, True, False, ), 2809 'IEM_MC_FETCH_MEM_U8_SX_U32': (McBlock.parseMcGeneric, True, False, ), 2810 'IEM_MC_FETCH_MEM_U8_SX_U64': (McBlock.parseMcGeneric, True, False, ), 2811 'IEM_MC_FETCH_MEM_U8_ZX_U16': (McBlock.parseMcGeneric, True, False, ), 2812 'IEM_MC_FETCH_MEM_U8_ZX_U32': (McBlock.parseMcGeneric, True, False, ), 2813 'IEM_MC_FETCH_MEM_U8_ZX_U64': (McBlock.parseMcGeneric, True, False, ), 2814 'IEM_MC_FETCH_MEM_XMM': (McBlock.parseMcGeneric, True, False, ), 2815 'IEM_MC_FETCH_MEM_XMM_ALIGN_SSE': (McBlock.parseMcGeneric, True, False, ), 2816 'IEM_MC_FETCH_MEM_XMM_NO_AC': (McBlock.parseMcGeneric, True, False, ), 2817 'IEM_MC_FETCH_MEM_XMM_U32': (McBlock.parseMcGeneric, True, False, ), 2818 'IEM_MC_FETCH_MEM_XMM_U64': (McBlock.parseMcGeneric, True, False, ), 2819 'IEM_MC_FETCH_MEM_YMM': (McBlock.parseMcGeneric, True, False, ), 2820 'IEM_MC_FETCH_MEM_YMM_ALIGN_AVX': (McBlock.parseMcGeneric, True, False, ), 2821 'IEM_MC_FETCH_MEM_YMM_NO_AC': (McBlock.parseMcGeneric, True, False, ), 2822 'IEM_MC_FETCH_MEM16_U8': (McBlock.parseMcGeneric, True, False, ), 2823 'IEM_MC_FETCH_MEM32_U8': (McBlock.parseMcGeneric, True, False, ), 2824 'IEM_MC_FETCH_MREG_U32': (McBlock.parseMcGeneric, False, False, ), 2825 'IEM_MC_FETCH_MREG_U64': (McBlock.parseMcGeneric, False, False, ), 2826 'IEM_MC_FETCH_SREG_BASE_U32': (McBlock.parseMcGeneric, False, False, ), 2827 'IEM_MC_FETCH_SREG_BASE_U64': (McBlock.parseMcGeneric, False, False, ), 2828 'IEM_MC_FETCH_SREG_U16': (McBlock.parseMcGeneric, False, False, ), 2829 'IEM_MC_FETCH_SREG_ZX_U32': (McBlock.parseMcGeneric, False, False, ), 2830 'IEM_MC_FETCH_SREG_ZX_U64': (McBlock.parseMcGeneric, False, False, ), 2831 'IEM_MC_FETCH_XREG_U128': (McBlock.parseMcGeneric, False, False, ), 2832 'IEM_MC_FETCH_XREG_U16': (McBlock.parseMcGeneric, False, False, ), 2833 'IEM_MC_FETCH_XREG_U32': (McBlock.parseMcGeneric, False, False, ), 2834 'IEM_MC_FETCH_XREG_U64': (McBlock.parseMcGeneric, False, False, ), 2835 'IEM_MC_FETCH_XREG_U8': (McBlock.parseMcGeneric, False, False, ), 2836 'IEM_MC_FETCH_XREG_XMM': (McBlock.parseMcGeneric, False, False, ), 2837 'IEM_MC_FETCH_YREG_2ND_U64': (McBlock.parseMcGeneric, False, False, ), 2838 'IEM_MC_FETCH_YREG_U128': (McBlock.parseMcGeneric, False, False, ), 2839 'IEM_MC_FETCH_YREG_U256': (McBlock.parseMcGeneric, False, False, ), 2840 'IEM_MC_FETCH_YREG_U32': (McBlock.parseMcGeneric, False, False, ), 2841 'IEM_MC_FETCH_YREG_U64': (McBlock.parseMcGeneric, False, False, ), 2842 'IEM_MC_FLIP_EFL_BIT': (McBlock.parseMcGeneric, True, False, ), 2843 'IEM_MC_FPU_FROM_MMX_MODE': (McBlock.parseMcGeneric, True, False, ), 2844 'IEM_MC_FPU_STACK_DEC_TOP': (McBlock.parseMcGeneric, True, False, ), 2845 'IEM_MC_FPU_STACK_FREE': (McBlock.parseMcGeneric, True, False, ), 2846 'IEM_MC_FPU_STACK_INC_TOP': (McBlock.parseMcGeneric, True, False, ), 2847 'IEM_MC_FPU_STACK_PUSH_OVERFLOW': (McBlock.parseMcGeneric, True, False, ), 2848 'IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP': (McBlock.parseMcGeneric, True, False, ), 2849 'IEM_MC_FPU_STACK_PUSH_UNDERFLOW': (McBlock.parseMcGeneric, True, False, ), 2850 'IEM_MC_FPU_STACK_PUSH_UNDERFLOW_TWO': (McBlock.parseMcGeneric, True, False, ), 2851 'IEM_MC_FPU_STACK_UNDERFLOW': (McBlock.parseMcGeneric, True, False, ), 2852 'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP': (McBlock.parseMcGeneric, True, False, ), 2853 'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP': (McBlock.parseMcGeneric, True, False, ), 2854 'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP': (McBlock.parseMcGeneric, True, False, ), 2855 'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP_POP': (McBlock.parseMcGeneric, True, False, ), 2856 'IEM_MC_FPU_TO_MMX_MODE': (McBlock.parseMcGeneric, True, False, ), 2857 'IEM_MC_IF_CX_IS_NZ': (McBlock.parseMcGenericCond, True, False, ), 2858 'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True, False, ), 2859 'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), 2860 'IEM_MC_IF_ECX_IS_NZ': (McBlock.parseMcGenericCond, True, False, ), 2861 'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True, False, ), 2862 'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), 2863 'IEM_MC_IF_EFL_ANY_BITS_SET': (McBlock.parseMcGenericCond, True, False, ), 2864 'IEM_MC_IF_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True, False, ), 2865 'IEM_MC_IF_EFL_BIT_NOT_SET_AND_BITS_EQ': (McBlock.parseMcGenericCond, True, False, ), 2866 'IEM_MC_IF_EFL_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), 2867 'IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE': (McBlock.parseMcGenericCond, True, False, ), 2868 'IEM_MC_IF_EFL_BITS_EQ': (McBlock.parseMcGenericCond, True, False, ), 2869 'IEM_MC_IF_EFL_BITS_NE': (McBlock.parseMcGenericCond, True, False, ), 2870 'IEM_MC_IF_EFL_NO_BITS_SET': (McBlock.parseMcGenericCond, True, False, ), 2871 'IEM_MC_IF_FCW_IM': (McBlock.parseMcGenericCond, True, False, ), 2872 'IEM_MC_IF_FPUREG_IS_EMPTY': (McBlock.parseMcGenericCond, True, False, ), 2873 'IEM_MC_IF_FPUREG_NOT_EMPTY': (McBlock.parseMcGenericCond, True, False, ), 2874 'IEM_MC_IF_FPUREG_NOT_EMPTY_REF_R80': (McBlock.parseMcGenericCond, True, False, ), 2875 'IEM_MC_IF_GREG_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), 2876 'IEM_MC_IF_LOCAL_IS_Z': (McBlock.parseMcGenericCond, True, False, ), 2877 'IEM_MC_IF_MXCSR_XCPT_PENDING': (McBlock.parseMcGenericCond, True, False, ), 2878 'IEM_MC_IF_RCX_IS_NZ': (McBlock.parseMcGenericCond, True, False, ), 2879 'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_NOT_SET': (McBlock.parseMcGenericCond, True, False, ), 2880 'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_SET': (McBlock.parseMcGenericCond, True, False, ), 2881 'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80': (McBlock.parseMcGenericCond, True, False, ), 2882 'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80_FIRST': (McBlock.parseMcGenericCond, True, False, ), 2883 'IEM_MC_IMPLICIT_AVX_AIMPL_ARGS': (McBlock.parseMcGeneric, False, False, ), 2884 'IEM_MC_INT_CLEAR_ZMM_256_UP': (McBlock.parseMcGeneric, True, False, ), 2885 'IEM_MC_LOCAL': (McBlock.parseMcLocal, False, False, ), 2886 'IEM_MC_LOCAL_CONST': (McBlock.parseMcLocalConst, False, False, ), 2887 'IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT': (McBlock.parseMcGeneric, True, False, ), 2888 'IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE': (McBlock.parseMcGeneric, True, False, ), 2889 'IEM_MC_MAYBE_RAISE_FPU_XCPT': (McBlock.parseMcGeneric, True, False, ), 2890 'IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT': (McBlock.parseMcGeneric, True, False, ), 2891 'IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT': (McBlock.parseMcGeneric, True, False, ), 2892 'IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0': (McBlock.parseMcGeneric, True, False, ), 2893 'IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT': (McBlock.parseMcGeneric, True, False, ), 2894 'IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT': (McBlock.parseMcGeneric, True, False, ), 2895 'IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE': (McBlock.parseMcGeneric, True, False, ), 2896 'IEM_MC_MEM_COMMIT_AND_UNMAP': (McBlock.parseMcGeneric, True, False, ), 2897 'IEM_MC_MEM_COMMIT_AND_UNMAP_RW': (McBlock.parseMcGeneric, True, False, ), 2898 'IEM_MC_MEM_COMMIT_AND_UNMAP_RO': (McBlock.parseMcGeneric, True, False, ), 2899 'IEM_MC_MEM_COMMIT_AND_UNMAP_WO': (McBlock.parseMcGeneric, True, False, ), 2900 'IEM_MC_MEM_COMMIT_AND_UNMAP_FOR_FPU_STORE': (McBlock.parseMcGeneric, True, False, ), 2901 'IEM_MC_MEM_MAP': (McBlock.parseMcGeneric, True, False, ), 2902 'IEM_MC_MEM_MAP_EX': (McBlock.parseMcGeneric, True, False, ), 2903 'IEM_MC_MEM_MAP_U8_RW': (McBlock.parseMcGeneric, True, False, ), 2904 'IEM_MC_MEM_MAP_U8_RO': (McBlock.parseMcGeneric, True, False, ), 2905 'IEM_MC_MEM_MAP_U8_WO': (McBlock.parseMcGeneric, True, False, ), 2906 'IEM_MC_MEM_MAP_U16_RW': (McBlock.parseMcGeneric, True, False, ), 2907 'IEM_MC_MEM_MAP_U16_RO': (McBlock.parseMcGeneric, True, False, ), 2908 'IEM_MC_MEM_MAP_U16_WO': (McBlock.parseMcGeneric, True, False, ), 2909 'IEM_MC_MEM_MAP_U32_RW': (McBlock.parseMcGeneric, True, False, ), 2910 'IEM_MC_MEM_MAP_U32_RO': (McBlock.parseMcGeneric, True, False, ), 2911 'IEM_MC_MEM_MAP_U32_WO': (McBlock.parseMcGeneric, True, False, ), 2912 'IEM_MC_MEM_MAP_U64_RW': (McBlock.parseMcGeneric, True, False, ), 2913 'IEM_MC_MEM_MAP_U64_RO': (McBlock.parseMcGeneric, True, False, ), 2914 'IEM_MC_MEM_MAP_U64_WO': (McBlock.parseMcGeneric, True, False, ), 2915 'IEM_MC_MERGE_YREG_U32_U96_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2916 'IEM_MC_MERGE_YREG_U64_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2917 'IEM_MC_MERGE_YREG_U64HI_U64HI_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2918 'IEM_MC_MERGE_YREG_U64LO_U64LO_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2919 'IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2920 'IEM_MC_MERGE_YREG_U64LOCAL_U64HI_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 2921 'IEM_MC_MODIFIED_MREG': (McBlock.parseMcGeneric, True, False, ), 2922 'IEM_MC_MODIFIED_MREG_BY_REF': (McBlock.parseMcGeneric, True, False, ), 2923 'IEM_MC_OR_2LOCS_U32': (McBlock.parseMcGeneric, False, False, ), 2924 'IEM_MC_OR_GREG_U16': (McBlock.parseMcGeneric, True, False, ), 2925 'IEM_MC_OR_GREG_U32': (McBlock.parseMcGeneric, True, False, ), 2926 'IEM_MC_OR_GREG_U64': (McBlock.parseMcGeneric, True, False, ), 2927 'IEM_MC_OR_GREG_U8': (McBlock.parseMcGeneric, True, False, ), 2928 'IEM_MC_OR_LOCAL_U16': (McBlock.parseMcGeneric, False, False, ), 2929 'IEM_MC_OR_LOCAL_U32': (McBlock.parseMcGeneric, False, False, ), 2930 'IEM_MC_OR_LOCAL_U8': (McBlock.parseMcGeneric, False, False, ), 2931 'IEM_MC_POP_U16': (McBlock.parseMcGeneric, True, False, ), 2932 'IEM_MC_POP_U32': (McBlock.parseMcGeneric, True, False, ), 2933 'IEM_MC_POP_U64': (McBlock.parseMcGeneric, True, False, ), 2934 'IEM_MC_PREPARE_AVX_USAGE': (McBlock.parseMcGeneric, False, False, ), 2935 'IEM_MC_PREPARE_FPU_USAGE': (McBlock.parseMcGeneric, False, False, ), 2936 'IEM_MC_PREPARE_SSE_USAGE': (McBlock.parseMcGeneric, False, False, ), 2937 'IEM_MC_PUSH_FPU_RESULT': (McBlock.parseMcGeneric, True, False, ), 2938 'IEM_MC_PUSH_FPU_RESULT_MEM_OP': (McBlock.parseMcGeneric, True, False, ), 2939 'IEM_MC_PUSH_FPU_RESULT_TWO': (McBlock.parseMcGeneric, True, False, ), 2940 'IEM_MC_PUSH_U16': (McBlock.parseMcGeneric, True, False, ), 2941 'IEM_MC_PUSH_U32': (McBlock.parseMcGeneric, True, False, ), 2942 'IEM_MC_PUSH_U32_SREG': (McBlock.parseMcGeneric, True, False, ), 2943 'IEM_MC_PUSH_U64': (McBlock.parseMcGeneric, True, False, ), 2944 'IEM_MC_RAISE_DIVIDE_ERROR': (McBlock.parseMcGeneric, True, False, ), 2945 'IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO': (McBlock.parseMcGeneric, True, False, ), 2946 'IEM_MC_RAISE_GP0_IF_EFF_ADDR_UNALIGNED': (McBlock.parseMcGeneric, True, False, ), 2947 'IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT': (McBlock.parseMcGeneric, True, False, ), 2948 'IEM_MC_REF_EFLAGS': (McBlock.parseMcGeneric, False, False, ), 2949 'IEM_MC_REF_FPUREG': (McBlock.parseMcGeneric, False, False, ), 2950 'IEM_MC_REF_GREG_I32': (McBlock.parseMcGeneric, False, False, ), 2951 'IEM_MC_REF_GREG_I32_CONST': (McBlock.parseMcGeneric, False, False, ), 2952 'IEM_MC_REF_GREG_I64': (McBlock.parseMcGeneric, False, False, ), 2953 'IEM_MC_REF_GREG_I64_CONST': (McBlock.parseMcGeneric, False, False, ), 2954 'IEM_MC_REF_GREG_U16': (McBlock.parseMcGeneric, False, False, ), 2955 'IEM_MC_REF_GREG_U16_CONST': (McBlock.parseMcGeneric, False, False, ), 2956 'IEM_MC_REF_GREG_U32': (McBlock.parseMcGeneric, False, False, ), 2957 'IEM_MC_REF_GREG_U32_CONST': (McBlock.parseMcGeneric, False, False, ), 2958 'IEM_MC_REF_GREG_U64': (McBlock.parseMcGeneric, False, False, ), 2959 'IEM_MC_REF_GREG_U64_CONST': (McBlock.parseMcGeneric, False, False, ), 2960 'IEM_MC_REF_GREG_U8': (McBlock.parseMcGeneric, False, False, ), 2961 'IEM_MC_REF_GREG_U8_CONST': (McBlock.parseMcGeneric, False, False, ), 2962 'IEM_MC_REF_LOCAL': (McBlock.parseMcGeneric, False, False, ), 2963 'IEM_MC_REF_MREG_U32_CONST': (McBlock.parseMcGeneric, False, False, ), 2964 'IEM_MC_REF_MREG_U64': (McBlock.parseMcGeneric, False, False, ), 2965 'IEM_MC_REF_MREG_U64_CONST': (McBlock.parseMcGeneric, False, False, ), 2966 'IEM_MC_REF_MXCSR': (McBlock.parseMcGeneric, False, False, ), 2967 'IEM_MC_REF_XREG_R32_CONST': (McBlock.parseMcGeneric, False, False, ), 2968 'IEM_MC_REF_XREG_R64_CONST': (McBlock.parseMcGeneric, False, False, ), 2969 'IEM_MC_REF_XREG_U128': (McBlock.parseMcGeneric, False, False, ), 2970 'IEM_MC_REF_XREG_U128_CONST': (McBlock.parseMcGeneric, False, False, ), 2971 'IEM_MC_REF_XREG_U32_CONST': (McBlock.parseMcGeneric, False, False, ), 2972 'IEM_MC_REF_XREG_U64_CONST': (McBlock.parseMcGeneric, False, False, ), 2973 'IEM_MC_REF_XREG_XMM_CONST': (McBlock.parseMcGeneric, False, False, ), 2974 'IEM_MC_REF_YREG_U128': (McBlock.parseMcGeneric, False, False, ), 2975 'IEM_MC_REF_YREG_U128_CONST': (McBlock.parseMcGeneric, False, False, ), 2976 'IEM_MC_REF_YREG_U64_CONST': (McBlock.parseMcGeneric, False, False, ), 2977 'IEM_MC_REL_JMP_S16_AND_FINISH': (McBlock.parseMcGeneric, True, False, ), 2978 'IEM_MC_REL_JMP_S32_AND_FINISH': (McBlock.parseMcGeneric, True, False, ), 2979 'IEM_MC_REL_JMP_S8_AND_FINISH': (McBlock.parseMcGeneric, True, False, ), 2980 'IEM_MC_RETURN_ON_FAILURE': (McBlock.parseMcGeneric, False, False, ), 2981 'IEM_MC_SAR_LOCAL_S16': (McBlock.parseMcGeneric, False, False, ), 2982 'IEM_MC_SAR_LOCAL_S32': (McBlock.parseMcGeneric, False, False, ), 2983 'IEM_MC_SAR_LOCAL_S64': (McBlock.parseMcGeneric, False, False, ), 2984 'IEM_MC_SET_EFL_BIT': (McBlock.parseMcGeneric, True, False, ), 2985 'IEM_MC_SET_FPU_RESULT': (McBlock.parseMcGeneric, True, False, ), 2986 'IEM_MC_SET_RIP_U16_AND_FINISH': (McBlock.parseMcGeneric, True, False, ), 2987 'IEM_MC_SET_RIP_U32_AND_FINISH': (McBlock.parseMcGeneric, True, False, ), 2988 'IEM_MC_SET_RIP_U64_AND_FINISH': (McBlock.parseMcGeneric, True, False, ), 2989 'IEM_MC_SHL_LOCAL_S16': (McBlock.parseMcGeneric, False, False, ), 2990 'IEM_MC_SHL_LOCAL_S32': (McBlock.parseMcGeneric, False, False, ), 2991 'IEM_MC_SHL_LOCAL_S64': (McBlock.parseMcGeneric, False, False, ), 2992 'IEM_MC_SHR_LOCAL_U8': (McBlock.parseMcGeneric, False, False, ), 2993 'IEM_MC_SSE_UPDATE_MXCSR': (McBlock.parseMcGeneric, True, False, ), 2994 'IEM_MC_STORE_FPU_RESULT': (McBlock.parseMcGeneric, True, False, ), 2995 'IEM_MC_STORE_FPU_RESULT_MEM_OP': (McBlock.parseMcGeneric, True, False, ), 2996 'IEM_MC_STORE_FPU_RESULT_THEN_POP': (McBlock.parseMcGeneric, True, False, ), 2997 'IEM_MC_STORE_FPU_RESULT_WITH_MEM_OP_THEN_POP': (McBlock.parseMcGeneric, True, False, ), 2998 'IEM_MC_STORE_FPUREG_R80_SRC_REF': (McBlock.parseMcGeneric, True, False, ), 2999 'IEM_MC_STORE_GREG_I64': (McBlock.parseMcGeneric, True, False, ), 3000 'IEM_MC_STORE_GREG_U16': (McBlock.parseMcGeneric, True, False, ), 3001 'IEM_MC_STORE_GREG_U16_CONST': (McBlock.parseMcGeneric, True, False, ), 3002 'IEM_MC_STORE_GREG_U32': (McBlock.parseMcGeneric, True, False, ), 3003 'IEM_MC_STORE_GREG_U32_CONST': (McBlock.parseMcGeneric, True, False, ), 3004 'IEM_MC_STORE_GREG_U64': (McBlock.parseMcGeneric, True, False, ), 3005 'IEM_MC_STORE_GREG_U64_CONST': (McBlock.parseMcGeneric, True, False, ), 3006 'IEM_MC_STORE_GREG_U8': (McBlock.parseMcGeneric, True, False, ), 3007 'IEM_MC_STORE_GREG_U8_CONST': (McBlock.parseMcGeneric, True, False, ), 3008 'IEM_MC_STORE_MEM_I16_CONST_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3009 'IEM_MC_STORE_MEM_I32_CONST_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3010 'IEM_MC_STORE_MEM_I64_CONST_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3011 'IEM_MC_STORE_MEM_I8_CONST_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3012 'IEM_MC_STORE_MEM_INDEF_D80_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3013 'IEM_MC_STORE_MEM_NEG_QNAN_R32_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3014 'IEM_MC_STORE_MEM_NEG_QNAN_R64_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3015 'IEM_MC_STORE_MEM_NEG_QNAN_R80_BY_REF': (McBlock.parseMcGeneric, True, False, ), 3016 'IEM_MC_STORE_MEM_U128': (McBlock.parseMcGeneric, True, False, ), 3017 'IEM_MC_STORE_MEM_U128_ALIGN_SSE': (McBlock.parseMcGeneric, True, False, ), 3018 'IEM_MC_STORE_MEM_U16': (McBlock.parseMcGeneric, True, False, ), 3019 'IEM_MC_STORE_MEM_U16_CONST': (McBlock.parseMcGeneric, True, False, ), 3020 'IEM_MC_STORE_MEM_U256': (McBlock.parseMcGeneric, True, False, ), 3021 'IEM_MC_STORE_MEM_U256_ALIGN_AVX': (McBlock.parseMcGeneric, True, False, ), 3022 'IEM_MC_STORE_MEM_U32': (McBlock.parseMcGeneric, True, False, ), 3023 'IEM_MC_STORE_MEM_U32_CONST': (McBlock.parseMcGeneric, True, False, ), 3024 'IEM_MC_STORE_MEM_U64': (McBlock.parseMcGeneric, True, False, ), 3025 'IEM_MC_STORE_MEM_U64_CONST': (McBlock.parseMcGeneric, True, False, ), 3026 'IEM_MC_STORE_MEM_U8': (McBlock.parseMcGeneric, True, False, ), 3027 'IEM_MC_STORE_MEM_U8_CONST': (McBlock.parseMcGeneric, True, False, ), 3028 'IEM_MC_STORE_MREG_U32_ZX_U64': (McBlock.parseMcGeneric, True, False, ), 3029 'IEM_MC_STORE_MREG_U64': (McBlock.parseMcGeneric, True, False, ), 3030 'IEM_MC_STORE_SREG_BASE_U32': (McBlock.parseMcGeneric, True, False, ), 3031 'IEM_MC_STORE_SREG_BASE_U64': (McBlock.parseMcGeneric, True, False, ), 3032 'IEM_MC_STORE_SSE_RESULT': (McBlock.parseMcGeneric, True, False, ), 3033 'IEM_MC_STORE_XREG_HI_U64': (McBlock.parseMcGeneric, True, False, ), 3034 'IEM_MC_STORE_XREG_R32': (McBlock.parseMcGeneric, True, False, ), 3035 'IEM_MC_STORE_XREG_R64': (McBlock.parseMcGeneric, True, False, ), 3036 'IEM_MC_STORE_XREG_U128': (McBlock.parseMcGeneric, True, False, ), 3037 'IEM_MC_STORE_XREG_U16': (McBlock.parseMcGeneric, True, False, ), 3038 'IEM_MC_STORE_XREG_U32': (McBlock.parseMcGeneric, True, False, ), 3039 'IEM_MC_STORE_XREG_U32_U128': (McBlock.parseMcGeneric, True, False, ), 3040 'IEM_MC_STORE_XREG_U32_ZX_U128': (McBlock.parseMcGeneric, True, False, ), 3041 'IEM_MC_STORE_XREG_U64': (McBlock.parseMcGeneric, True, False, ), 3042 'IEM_MC_STORE_XREG_U64_ZX_U128': (McBlock.parseMcGeneric, True, False, ), 3043 'IEM_MC_STORE_XREG_U8': (McBlock.parseMcGeneric, True, False, ), 3044 'IEM_MC_STORE_XREG_XMM': (McBlock.parseMcGeneric, True, False, ), 3045 'IEM_MC_STORE_XREG_XMM_U32': (McBlock.parseMcGeneric, True, False, ), 3046 'IEM_MC_STORE_XREG_XMM_U64': (McBlock.parseMcGeneric, True, False, ), 3047 'IEM_MC_STORE_YREG_U128': (McBlock.parseMcGeneric, True, False, ), 3048 'IEM_MC_STORE_YREG_U128_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 3049 'IEM_MC_STORE_YREG_U256_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 3050 'IEM_MC_STORE_YREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 3051 'IEM_MC_STORE_YREG_U64_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), 3052 'IEM_MC_SUB_GREG_U16': (McBlock.parseMcGeneric, True, False, ), 3053 'IEM_MC_SUB_GREG_U32': (McBlock.parseMcGeneric, True, False, ), 3054 'IEM_MC_SUB_GREG_U64': (McBlock.parseMcGeneric, True, False, ), 3055 'IEM_MC_SUB_GREG_U8': (McBlock.parseMcGeneric, True, False, ), 3056 'IEM_MC_SUB_LOCAL_U16': (McBlock.parseMcGeneric, False, False, ), 3057 'IEM_MC_UPDATE_FPU_OPCODE_IP': (McBlock.parseMcGeneric, True, False, ), 3058 'IEM_MC_UPDATE_FSW': (McBlock.parseMcGeneric, True, False, ), 3059 'IEM_MC_UPDATE_FSW_CONST': (McBlock.parseMcGeneric, True, False, ), 3060 'IEM_MC_UPDATE_FSW_THEN_POP': (McBlock.parseMcGeneric, True, False, ), 3061 'IEM_MC_UPDATE_FSW_THEN_POP_POP': (McBlock.parseMcGeneric, True, False, ), 3062 'IEM_MC_UPDATE_FSW_WITH_MEM_OP': (McBlock.parseMcGeneric, True, False, ), 3063 'IEM_MC_UPDATE_FSW_WITH_MEM_OP_THEN_POP': (McBlock.parseMcGeneric, True, False, ), 3005 3064 }; 3006 3065 3007 3066 ## List of microcode blocks. 3008 g_aoMcBlocks = [] # type: list(McBlock)3067 g_aoMcBlocks = [] # type: List[McBlock] 3009 3068 3010 3069 … … 3077 3136 self.sComment = ''; 3078 3137 self.iCommentLine = 0; 3079 self.aoCurInstrs = [] # type: list(Instruction)3138 self.aoCurInstrs = [] # type: List[Instruction] 3080 3139 self.oCurFunction = None # type: DecoderFunction 3081 3140 self.iMcBlockInFunc = 0; 3082 3141 self.oCurMcBlock = None # type: McBlock 3083 self.dMacros = {} # type: Dict[str, SimpleParser.Macro]3142 self.dMacros = {} # type: Dict[str, SimpleParser.Macro] 3084 3143 self.oReMacros = None # type: re ##< Regular expression matching invocations of anything in self.dMacros. 3085 3144 if oInheritMacrosFrom: … … 4874 4933 % (sStmt, len(asArgs), cParams + 3,)); 4875 4934 4876 oMcBlock.aoStmts = [ McStmtCall(asArgs[0], asArgs[1:], 1),];4935 oMcBlock.aoStmts = [ McBlock.parseMcDeferToCImpl(oMcBlock, asArgs[0], asArgs[1:]), ]; 4877 4936 4878 4937 # These MCs are not typically part of macro expansions, but let's get -
trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f38.cpp.h
r100856 r101387 49 49 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 50 50 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 51 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );51 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 52 52 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3); 53 53 IEM_MC_ARG(uint64_t *, pDst, 0); … … 70 70 * MMX, [mem64]. 71 71 */ 72 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );72 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 73 73 IEM_MC_ARG(uint64_t *, pDst, 0); 74 74 IEM_MC_LOCAL(uint64_t, uSrc); … … 111 111 * Register, register. 112 112 */ 113 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );113 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 114 114 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3); 115 115 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 128 128 * Register, memory. 129 129 */ 130 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );130 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 131 131 IEM_MC_ARG(PRTUINT128U, puDst, 0); 132 132 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 167 167 * Register, register. 168 168 */ 169 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );169 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 170 170 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 171 171 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 184 184 * Register, memory. 185 185 */ 186 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );186 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 187 187 IEM_MC_ARG(PRTUINT128U, puDst, 0); 188 188 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 226 226 * Register, register. 227 227 */ 228 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );228 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 229 229 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 230 230 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 243 243 * Register, memory. 244 244 */ 245 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );245 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 246 246 IEM_MC_ARG(PRTUINT128U, puDst, 0); 247 247 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 282 282 * Register, register. 283 283 */ 284 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );284 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 285 285 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 286 286 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 299 299 * Register, memory. 300 300 */ 301 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );301 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 302 302 IEM_MC_ARG(PRTUINT128U, puDst, 0); 303 303 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 342 342 * Register, register. 343 343 */ 344 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );344 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 345 345 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi); 346 346 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 359 359 * Register, memory. 360 360 */ 361 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );361 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 362 362 IEM_MC_ARG(PRTUINT128U, puDst, 0); 363 363 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 402 402 * Register, register. 403 403 */ 404 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );404 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 405 405 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 406 406 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 419 419 * Register, memory. 420 420 */ 421 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );421 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 422 422 IEM_MC_ARG(PRTUINT128U, puDst, 0); 423 423 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 690 690 * Register, register. \ 691 691 */ \ 692 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER ); \692 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 693 693 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \ 694 694 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 712 712 * Register, memory. \ 713 713 */ \ 714 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER ); \714 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 715 715 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 716 716 IEM_MC_LOCAL(RTUINT128U, uSrc); \ … … 785 785 * Register, register. 786 786 */ 787 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );787 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 788 788 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 789 789 IEM_MC_ARG(PCRTUINT128U, puSrc1, 0); … … 804 804 * Register, memory. 805 805 */ 806 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );806 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 807 807 IEM_MC_ARG(PCRTUINT128U, puSrc1, 0); 808 808 IEM_MC_LOCAL(RTUINT128U, uSrc2); … … 906 906 * Register, register. \ 907 907 */ \ 908 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER ); \908 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 909 909 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \ 910 910 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 926 926 * Register, memory. \ 927 927 */ \ 928 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER ); \928 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 929 929 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 930 930 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 1039 1039 { 1040 1040 /* Register, memory. */ 1041 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1041 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1042 1042 IEM_MC_LOCAL(RTUINT128U, uSrc); 1043 1043 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1317 1317 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 1318 1318 { 1319 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );1319 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 1320 1320 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1321 1321 IEM_MC_ARG(RTGCPTR, GCPtrInveptDesc, 1); … … 1333 1333 else 1334 1334 { 1335 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1335 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1336 1336 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1337 1337 IEM_MC_ARG(RTGCPTR, GCPtrInveptDesc, 1); … … 1368 1368 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 1369 1369 { 1370 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );1370 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 1371 1371 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1372 1372 IEM_MC_ARG(RTGCPTR, GCPtrInvvpidDesc, 1); … … 1384 1384 else 1385 1385 { 1386 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1386 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1387 1387 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1388 1388 IEM_MC_ARG(RTGCPTR, GCPtrInvvpidDesc, 1); … … 1417 1417 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 1418 1418 { 1419 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );1419 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 1420 1420 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1421 1421 IEM_MC_ARG(RTGCPTR, GCPtrInvpcidDesc, 1); … … 1430 1430 else 1431 1431 { 1432 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1432 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1433 1433 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1434 1434 IEM_MC_ARG(RTGCPTR, GCPtrInvpcidDesc, 1); … … 1577 1577 * Register, register. 1578 1578 */ 1579 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1579 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1580 1580 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1581 1581 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1597 1597 * Register, memory. 1598 1598 */ 1599 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1599 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1600 1600 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1601 1601 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1742 1742 { 1743 1743 case IEMMODE_16BIT: 1744 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1744 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1745 1745 IEM_MC_LOCAL(uint16_t, uSrc); 1746 1746 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1758 1758 1759 1759 case IEMMODE_32BIT: 1760 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );1760 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 1761 1761 IEM_MC_LOCAL(uint32_t, uSrc); 1762 1762 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1774 1774 1775 1775 case IEMMODE_64BIT: 1776 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );1776 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 1777 1777 IEM_MC_LOCAL(uint64_t, uSrc); 1778 1778 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1816 1816 * Register, register. 1817 1817 */ 1818 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );1818 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1819 1819 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1820 1820 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1832 1832 * Register, memory. 1833 1833 */ 1834 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER );1834 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1835 1835 IEM_MC_ARG(uint32_t *, puDst, 0); 1836 1836 IEM_MC_ARG(uint8_t, uSrc, 1); … … 1867 1867 { 1868 1868 case IEMMODE_16BIT: 1869 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1869 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1870 1870 IEM_MC_LOCAL(uint16_t, u16Value); 1871 1871 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 1880 1880 1881 1881 case IEMMODE_32BIT: 1882 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );1882 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 1883 1883 IEM_MC_LOCAL(uint32_t, u32Value); 1884 1884 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 1893 1893 1894 1894 case IEMMODE_64BIT: 1895 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );1895 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 1896 1896 IEM_MC_LOCAL(uint64_t, u64Value); 1897 1897 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 1935 1935 { 1936 1936 case IEMMODE_16BIT: 1937 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );1937 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1938 1938 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1939 1939 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1949 1949 1950 1950 case IEMMODE_32BIT: 1951 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 );1951 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); 1952 1952 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1953 1953 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1963 1963 1964 1964 case IEMMODE_64BIT: 1965 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );1965 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 1966 1966 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1967 1967 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1987 1987 { 1988 1988 case IEMMODE_16BIT: 1989 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER );1989 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1990 1990 IEM_MC_ARG(uint32_t *, puDst, 0); 1991 1991 IEM_MC_ARG(uint16_t, uSrc, 1); … … 2006 2006 2007 2007 case IEMMODE_32BIT: 2008 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_386 );2008 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_386, 0); 2009 2009 IEM_MC_ARG(uint32_t *, puDst, 0); 2010 2010 IEM_MC_ARG(uint32_t, uSrc, 1); … … 2025 2025 2026 2026 case IEMMODE_64BIT: 2027 IEM_MC_BEGIN(2, 1, IEM_MC_F_64BIT );2027 IEM_MC_BEGIN(2, 1, IEM_MC_F_64BIT, 0); 2028 2028 IEM_MC_ARG(uint32_t *, puDst, 0); 2029 2029 IEM_MC_ARG(uint64_t, uSrc, 1); … … 2081 2081 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 2082 2082 { \ 2083 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \2083 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 2084 2084 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 2085 2085 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 2096 2096 else \ 2097 2097 { \ 2098 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT ); \2098 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \ 2099 2099 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 2100 2100 IEM_MC_ARG(uint32_t *, pEFlags, 1); \ … … 2116 2116 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 2117 2117 { \ 2118 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER ); \2118 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 2119 2119 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 2120 2120 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 2131 2131 else \ 2132 2132 { \ 2133 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER ); \2133 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 2134 2134 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 2135 2135 IEM_MC_ARG(uint32_t *, pEFlags, 1); \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f3a.cpp.h
r100856 r101387 52 52 */ 53 53 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 54 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );54 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 55 55 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3); 56 56 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 70 70 * Register, memory. 71 71 */ 72 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );72 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 73 73 IEM_MC_ARG(PRTUINT128U, puDst, 0); 74 74 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 111 111 */ 112 112 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 113 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );113 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 114 114 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 115 115 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 129 129 * XMM, [mem128], imm8. 130 130 */ 131 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );131 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 132 132 IEM_MC_ARG(PRTUINT128U, puDst, 0); 133 133 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 171 171 */ 172 172 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 173 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );173 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 174 174 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 175 175 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 196 196 * XMM, [mem128], imm8. 197 197 */ 198 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );198 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 199 199 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 200 200 IEM_MC_LOCAL(X86XMMREG, Dst); … … 243 243 */ 244 244 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 245 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );245 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 246 246 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi); 247 247 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 261 261 * Register, memory. 262 262 */ 263 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );263 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 264 264 IEM_MC_ARG(PRTUINT128U, puDst, 0); 265 265 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 323 323 */ 324 324 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 325 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );325 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 326 326 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 327 327 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 348 348 * XMM32, [mem32]. 349 349 */ 350 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );350 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 351 351 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 352 352 IEM_MC_LOCAL(X86XMMREG, Dst); … … 388 388 */ 389 389 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 390 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );390 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 391 391 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 392 392 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 413 413 * XMM64, [mem64], imm8. 414 414 */ 415 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );415 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 416 416 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 417 417 IEM_MC_LOCAL(X86XMMREG, Dst); … … 481 481 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 482 482 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 483 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );483 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 484 484 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3); 485 485 IEM_MC_ARG(uint64_t *, pDst, 0); … … 502 502 * Register, memory. 503 503 */ 504 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );504 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 505 505 IEM_MC_ARG(uint64_t *, pDst, 0); 506 506 IEM_MC_ARG(uint64_t, uSrc, 1); … … 553 553 */ 554 554 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 555 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );555 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 556 556 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 557 557 IEM_MC_LOCAL(uint8_t, uValue); … … 568 568 * [mem8], XMM. 569 569 */ 570 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );570 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 571 571 IEM_MC_LOCAL(uint8_t, uValue); 572 572 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 597 597 */ 598 598 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 599 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );599 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 600 600 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 601 601 IEM_MC_LOCAL(uint16_t, uValue); … … 612 612 * [mem16], XMM. 613 613 */ 614 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );614 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 615 615 IEM_MC_LOCAL(uint16_t, uValue); 616 616 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 648 648 */ 649 649 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 650 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );650 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 651 651 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 652 652 IEM_MC_LOCAL(uint64_t, uSrc); … … 663 663 * [mem64], XMM. 664 664 */ 665 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );665 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 666 666 IEM_MC_LOCAL(uint64_t, uSrc); 667 667 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 695 695 */ 696 696 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 697 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );697 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 698 698 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 699 699 IEM_MC_LOCAL(uint32_t, uSrc); … … 710 710 * [mem32], XMM. 711 711 */ 712 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );712 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 713 713 IEM_MC_LOCAL(uint32_t, uSrc); 714 714 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 739 739 */ 740 740 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 741 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );741 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 742 742 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 743 743 IEM_MC_LOCAL(uint32_t, uSrc); … … 754 754 * [mem32], XMM. 755 755 */ 756 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );756 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 757 757 IEM_MC_LOCAL(uint32_t, uSrc); 758 758 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 792 792 */ 793 793 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 794 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );794 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 795 795 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 796 796 IEM_MC_LOCAL(uint8_t, uSrc); … … 807 807 * XMM, [mem8]. 808 808 */ 809 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );809 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 810 810 IEM_MC_LOCAL(uint8_t, uSrc); 811 811 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 835 835 */ 836 836 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 837 IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER );837 IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 838 838 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 839 839 IEM_MC_LOCAL(uint32_t, uSrc); … … 859 859 * XMM, [mem32]. 860 860 */ 861 IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER );861 IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 862 862 IEM_MC_LOCAL(uint32_t, uSrc); 863 863 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 899 899 */ 900 900 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 901 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );901 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 902 902 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 903 903 IEM_MC_LOCAL(uint64_t, uSrc); … … 914 914 * XMM, [mem64]. 915 915 */ 916 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );916 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 917 917 IEM_MC_LOCAL(uint64_t, uSrc); 918 918 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 946 946 */ 947 947 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 948 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );948 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 949 949 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); 950 950 IEM_MC_LOCAL(uint32_t, uSrc); … … 961 961 * XMM, [mem32]. 962 962 */ 963 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );963 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 964 964 IEM_MC_LOCAL(uint32_t, uSrc); 965 965 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1055 1055 */ 1056 1056 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1057 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1057 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1058 1058 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fPclMul); 1059 1059 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1076 1076 * Register, memory. 1077 1077 */ 1078 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1078 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1079 1079 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1080 1080 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1147 1147 */ 1148 1148 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1149 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT );1149 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0); 1150 1150 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1151 1151 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1174 1174 * Register, memory. 1175 1175 */ 1176 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT );1176 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0); 1177 1177 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); 1178 1178 IEM_MC_ARG(uint32_t *, pEFlags, 1); … … 1211 1211 */ 1212 1212 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1213 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );1213 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1214 1214 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1215 1215 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1238 1238 * Register, memory. 1239 1239 */ 1240 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );1240 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1241 1241 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); 1242 1242 IEM_MC_ARG(uint32_t *, pEFlags, 1); … … 1283 1283 */ 1284 1284 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1285 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT );1285 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0); 1286 1286 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1287 1287 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); … … 1311 1311 * Register, memory. 1312 1312 */ 1313 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT );1313 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0); 1314 1314 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); 1315 1315 IEM_MC_ARG(uint32_t *, pEFlags, 1); … … 1348 1348 */ 1349 1349 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1350 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );1350 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1351 1351 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1352 1352 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); … … 1376 1376 * Register, memory. 1377 1377 */ 1378 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );1378 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1379 1379 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); 1380 1380 IEM_MC_ARG(uint32_t *, pEFlags, 1); … … 1420 1420 */ 1421 1421 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1422 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );1422 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1423 1423 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1424 1424 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1445 1445 * Register, memory. 1446 1446 */ 1447 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );1447 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1448 1448 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); 1449 1449 IEM_MC_ARG(uint32_t *, pEFlags, 1); … … 1485 1485 */ 1486 1486 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1487 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );1487 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1488 1488 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42); 1489 1489 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); … … 1511 1511 * Register, memory. 1512 1512 */ 1513 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );1513 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1514 1514 IEM_MC_ARG(uint32_t *, pu32Ecx, 0); 1515 1515 IEM_MC_ARG(uint32_t *, pEFlags, 1); … … 1582 1582 */ 1583 1583 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 1584 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1584 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1585 1585 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1586 1586 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1603 1603 * XMM, [mem128], imm8. 1604 1604 */ 1605 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1605 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1606 1606 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1607 1607 IEM_MC_LOCAL(RTUINT128U, uSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r100864 r101387 50 50 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 51 51 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 52 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );52 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 53 53 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 54 54 IEM_MC_ARG(uint64_t *, pDst, 0); … … 71 71 * MMX, [mem64]. 72 72 */ 73 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );73 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 74 74 IEM_MC_ARG(uint64_t *, pDst, 0); 75 75 IEM_MC_LOCAL(uint64_t, uSrc); … … 112 112 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 113 113 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 114 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );114 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 115 115 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 116 116 IEM_MC_ARG(uint64_t *, pDst, 0); … … 133 133 * MMX, [mem64]. 134 134 */ 135 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );135 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 136 136 IEM_MC_ARG(uint64_t *, pDst, 0); 137 137 IEM_MC_LOCAL(uint64_t, uSrc); … … 172 172 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 173 173 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 174 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );174 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 175 175 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 176 176 IEM_MC_ARG(uint64_t *, pDst, 0); … … 193 193 * MMX, [mem64]. 194 194 */ 195 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );195 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 196 196 IEM_MC_ARG(uint64_t *, pDst, 0); 197 197 IEM_MC_LOCAL(uint64_t, uSrc); … … 235 235 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 236 236 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 237 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );237 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 238 238 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 239 239 IEM_MC_ARG(uint64_t *, pDst, 0); … … 256 256 * MMX, [mem64]. 257 257 */ 258 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );258 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 259 259 IEM_MC_ARG(uint64_t *, pDst, 0); 260 260 IEM_MC_LOCAL(uint64_t, uSrc); … … 295 295 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 296 296 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 297 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );297 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 298 298 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 299 299 IEM_MC_ARG(uint64_t *, pDst, 0); … … 316 316 * MMX, [mem64]. 317 317 */ 318 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );318 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 319 319 IEM_MC_ARG(uint64_t *, pDst, 0); 320 320 IEM_MC_LOCAL(uint64_t, uSrc); … … 357 357 * XMM, XMM. 358 358 */ 359 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );359 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 360 360 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 361 361 IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 374 374 * XMM, [mem128]. 375 375 */ 376 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );376 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 377 377 IEM_MC_ARG(PRTUINT128U, pDst, 0); 378 378 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 412 412 * XMM, XMM. 413 413 */ 414 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );414 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 415 415 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 416 416 IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 429 429 * XMM, [mem128]. 430 430 */ 431 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );431 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 432 432 IEM_MC_ARG(PRTUINT128U, pDst, 0); 433 433 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 470 470 * XMM, XMM. 471 471 */ 472 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );472 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 473 473 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 474 474 IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 487 487 * XMM, [mem128]. 488 488 */ 489 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );489 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 490 490 IEM_MC_ARG(PRTUINT128U, pDst, 0); 491 491 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 523 523 * MMX, MMX. 524 524 */ 525 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );525 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 526 526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 527 527 IEM_MC_ARG(uint64_t *, puDst, 0); … … 544 544 * MMX, [mem32]. 545 545 */ 546 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );546 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 547 547 IEM_MC_ARG(uint64_t *, puDst, 0); 548 548 IEM_MC_LOCAL(uint64_t, uSrc); … … 585 585 * XMM, XMM. 586 586 */ 587 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );587 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 588 588 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 589 589 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 602 602 * XMM, [mem128]. 603 603 */ 604 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );604 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 605 605 IEM_MC_ARG(PRTUINT128U, puDst, 0); 606 606 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 645 645 * XMM, XMM. 646 646 */ 647 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );647 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 648 648 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 649 649 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 662 662 * XMM, [mem128]. 663 663 */ 664 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );664 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 665 665 IEM_MC_ARG(PRTUINT128U, puDst, 0); 666 666 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 705 705 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 706 706 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 707 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );707 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 708 708 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 709 709 IEM_MC_ARG(uint64_t *, puDst, 0); … … 726 726 * MMX, [mem64]. 727 727 */ 728 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );728 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 729 729 IEM_MC_ARG(uint64_t *, puDst, 0); 730 730 IEM_MC_LOCAL(uint64_t, uSrc); … … 767 767 * XMM, XMM. 768 768 */ 769 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );769 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 770 770 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 771 771 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 784 784 * XMM, [mem128]. 785 785 */ 786 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );786 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 787 787 IEM_MC_ARG(PRTUINT128U, puDst, 0); 788 788 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 827 827 * XMM128, XMM128. 828 828 */ 829 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );829 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 830 830 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 831 831 IEM_MC_LOCAL(IEMSSERESULT, SseRes); … … 849 849 * XMM128, [mem128]. 850 850 */ 851 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );851 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 852 852 IEM_MC_LOCAL(IEMSSERESULT, SseRes); 853 853 IEM_MC_LOCAL(X86XMMREG, uSrc2); … … 891 891 * XMM128, XMM32. 892 892 */ 893 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );893 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 894 894 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 895 895 IEM_MC_LOCAL(IEMSSERESULT, SseRes); … … 913 913 * XMM128, [mem32]. 914 914 */ 915 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );915 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 916 916 IEM_MC_LOCAL(IEMSSERESULT, SseRes); 917 917 IEM_MC_LOCAL(RTFLOAT32U, r32Src2); … … 955 955 * XMM128, XMM128. 956 956 */ 957 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );957 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 958 958 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 959 959 IEM_MC_LOCAL(IEMSSERESULT, SseRes); … … 977 977 * XMM128, [mem128]. 978 978 */ 979 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );979 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 980 980 IEM_MC_LOCAL(IEMSSERESULT, SseRes); 981 981 IEM_MC_LOCAL(X86XMMREG, uSrc2); … … 1019 1019 * XMM, XMM. 1020 1020 */ 1021 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );1021 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1022 1022 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 1023 1023 IEM_MC_LOCAL(IEMSSERESULT, SseRes); … … 1041 1041 * XMM, [mem64]. 1042 1042 */ 1043 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1043 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1044 1044 IEM_MC_LOCAL(IEMSSERESULT, SseRes); 1045 1045 IEM_MC_LOCAL(RTFLOAT64U, r64Src2); … … 1083 1083 * XMM, XMM. 1084 1084 */ 1085 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );1085 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1086 1086 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 1087 1087 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1100 1100 * XMM, [mem128]. 1101 1101 */ 1102 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );1102 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1103 1103 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1104 1104 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1143 1143 * XMM, XMM. 1144 1144 */ 1145 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );1145 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1146 1146 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 1147 1147 IEM_MC_LOCAL(IEMSSERESULT, SseRes); … … 1165 1165 * XMM, [mem128]. 1166 1166 */ 1167 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1167 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1168 1168 IEM_MC_LOCAL(IEMSSERESULT, SseRes); 1169 1169 IEM_MC_LOCAL(X86XMMREG, uSrc2); … … 1204 1204 1205 1205 /* Ignore operand size here, memory refs are always 16-bit. */ 1206 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286 );1206 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0); 1207 1207 IEM_MC_ARG(uint16_t, iEffSeg, 0); 1208 1208 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 1230 1230 1231 1231 /* Ignore operand size here, memory refs are always 16-bit. */ 1232 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286 );1232 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0); 1233 1233 IEM_MC_ARG(uint16_t, iEffSeg, 0); 1234 1234 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 1250 1250 if (IEM_IS_MODRM_REG_MODE(bRm)) 1251 1251 { 1252 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286 );1252 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286, 0); 1253 1253 IEMOP_HLP_DECODED_NL_1(OP_LLDT, IEMOPFORM_M_REG, OP_PARM_Ew, DISOPTYPE_DANGEROUS); 1254 1254 IEM_MC_ARG(uint16_t, u16Sel, 0); … … 1259 1259 else 1260 1260 { 1261 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286 );1261 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286, 0); 1262 1262 IEM_MC_ARG(uint16_t, u16Sel, 0); 1263 1263 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1281 1281 if (IEM_IS_MODRM_REG_MODE(bRm)) 1282 1282 { 1283 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286 );1283 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286, 0); 1284 1284 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1285 1285 IEM_MC_ARG(uint16_t, u16Sel, 0); … … 1290 1290 else 1291 1291 { 1292 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286 );1292 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286, 0); 1293 1293 IEM_MC_ARG(uint16_t, u16Sel, 0); 1294 1294 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1311 1311 if (IEM_IS_MODRM_REG_MODE(bRm)) 1312 1312 { 1313 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286 );1313 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0); 1314 1314 IEMOP_HLP_DECODED_NL_1(fWrite ? OP_VERW : OP_VERR, IEMOPFORM_M_MEM, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 1315 1315 IEM_MC_ARG(uint16_t, u16Sel, 0); … … 1321 1321 else 1322 1322 { 1323 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286 );1323 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286, 0); 1324 1324 IEM_MC_ARG(uint16_t, u16Sel, 0); 1325 1325 IEM_MC_ARG_CONST(bool, fWriteArg, fWrite, 1); … … 1379 1379 IEMOP_HLP_MIN_286(); 1380 1380 IEMOP_HLP_64BIT_OP_SIZE(); 1381 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286 );1381 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286, 0); 1382 1382 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1383 1383 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1471 1471 IEMOP_HLP_MIN_286(); 1472 1472 IEMOP_HLP_64BIT_OP_SIZE(); 1473 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286 );1473 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286, 0); 1474 1474 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1475 1475 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1505 1505 IEMOP_MNEMONIC(lgdt, "lgdt"); 1506 1506 IEMOP_HLP_64BIT_OP_SIZE(); 1507 IEM_MC_BEGIN(3, 1, 0 );1507 IEM_MC_BEGIN(3, 1, 0, 0); 1508 1508 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1509 1509 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1558 1558 IEMOP_MNEMONIC(lidt, "lidt"); 1559 1559 IEMMODE enmEffOpSize = IEM_IS_64BIT_CODE(pVCpu) ? IEMMODE_64BIT : pVCpu->iem.s.enmEffOpSize; 1560 IEM_MC_BEGIN(3, 1, 0 );1560 IEM_MC_BEGIN(3, 1, 0, 0); 1561 1561 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1562 1562 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1690 1690 1691 1691 /* Ignore operand size here, memory refs are always 16-bit. */ 1692 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286 );1692 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0); 1693 1693 IEM_MC_ARG(uint16_t, iEffSeg, 0); 1694 1694 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 1710 1710 if (IEM_IS_MODRM_REG_MODE(bRm)) 1711 1711 { 1712 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286 );1712 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0); 1713 1713 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1714 1714 IEM_MC_ARG(uint16_t, u16Tmp, 0); … … 1720 1720 else 1721 1721 { 1722 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286 );1722 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0); 1723 1723 IEM_MC_ARG(uint16_t, u16Tmp, 0); 1724 1724 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 1737 1737 IEMOP_MNEMONIC(invlpg, "invlpg"); 1738 1738 IEMOP_HLP_MIN_486(); 1739 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386 );1739 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386, 0); 1740 1740 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 0); 1741 1741 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 1862 1862 { 1863 1863 case IEMMODE_16BIT: 1864 IEM_MC_BEGIN(3, 0, 0 );1864 IEM_MC_BEGIN(3, 0, 0, 0); 1865 1865 IEMOP_HLP_DECODED_NL_2(fIsLar ? OP_LAR : OP_LSL, IEMOPFORM_RM_REG, OP_PARM_Gv, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 1866 1866 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 1877 1877 case IEMMODE_32BIT: 1878 1878 case IEMMODE_64BIT: 1879 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );1879 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 1880 1880 IEMOP_HLP_DECODED_NL_2(fIsLar ? OP_LAR : OP_LSL, IEMOPFORM_RM_REG, OP_PARM_Gv, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 1881 1881 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 1898 1898 { 1899 1899 case IEMMODE_16BIT: 1900 IEM_MC_BEGIN(3, 1, 0 );1900 IEM_MC_BEGIN(3, 1, 0, 0); 1901 1901 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 1902 1902 IEM_MC_ARG(uint16_t, u16Sel, 1); … … 1916 1916 case IEMMODE_32BIT: 1917 1917 case IEMMODE_64BIT: 1918 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 );1918 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); 1919 1919 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 1920 1920 IEM_MC_ARG(uint16_t, u16Sel, 1); … … 2044 2044 } 2045 2045 2046 IEM_MC_BEGIN(0, 1, 0 );2046 IEM_MC_BEGIN(0, 1, 0, 0); 2047 2047 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2048 2048 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 2060 2060 IEMOP_MNEMONIC(femms, "femms"); 2061 2061 2062 IEM_MC_BEGIN(0, 0, 0 );2062 IEM_MC_BEGIN(0, 0, 0, 0); 2063 2063 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2064 2064 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 2109 2109 * XMM128, XMM128. 2110 2110 */ 2111 IEM_MC_BEGIN(0, 0, 0 );2111 IEM_MC_BEGIN(0, 0, 0, 0); 2112 2112 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2113 2113 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2123 2123 * XMM128, [mem128]. 2124 2124 */ 2125 IEM_MC_BEGIN(0, 2, 0 );2125 IEM_MC_BEGIN(0, 2, 0, 0); 2126 2126 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2127 2127 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2160 2160 * XMM128, XMM128. 2161 2161 */ 2162 IEM_MC_BEGIN(0, 0, 0 );2162 IEM_MC_BEGIN(0, 0, 0, 0); 2163 2163 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2164 2164 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2174 2174 * XMM128, [mem128]. 2175 2175 */ 2176 IEM_MC_BEGIN(0, 2, 0 );2176 IEM_MC_BEGIN(0, 2, 0, 0); 2177 2177 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2178 2178 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2210 2210 * XMM32, XMM32. 2211 2211 */ 2212 IEM_MC_BEGIN(0, 1, 0 );2212 IEM_MC_BEGIN(0, 1, 0, 0); 2213 2213 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2214 2214 IEM_MC_LOCAL(uint32_t, uSrc); … … 2227 2227 * XMM128, [mem32]. 2228 2228 */ 2229 IEM_MC_BEGIN(0, 2, 0 );2229 IEM_MC_BEGIN(0, 2, 0, 0); 2230 2230 IEM_MC_LOCAL(uint32_t, uSrc); 2231 2231 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2263 2263 * XMM64, XMM64. 2264 2264 */ 2265 IEM_MC_BEGIN(0, 1, 0 );2265 IEM_MC_BEGIN(0, 1, 0, 0); 2266 2266 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2267 2267 IEM_MC_LOCAL(uint64_t, uSrc); … … 2280 2280 * XMM128, [mem64]. 2281 2281 */ 2282 IEM_MC_BEGIN(0, 2, 0 );2282 IEM_MC_BEGIN(0, 2, 0, 0); 2283 2283 IEM_MC_LOCAL(uint64_t, uSrc); 2284 2284 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2316 2316 * XMM128, XMM128. 2317 2317 */ 2318 IEM_MC_BEGIN(0, 0, 0 );2318 IEM_MC_BEGIN(0, 0, 0, 0); 2319 2319 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2320 2320 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2330 2330 * [mem128], XMM128. 2331 2331 */ 2332 IEM_MC_BEGIN(0, 2, 0 );2332 IEM_MC_BEGIN(0, 2, 0, 0); 2333 2333 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2334 2334 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2366 2366 * XMM128, XMM128. 2367 2367 */ 2368 IEM_MC_BEGIN(0, 0, 0 );2368 IEM_MC_BEGIN(0, 0, 0, 0); 2369 2369 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2370 2370 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2380 2380 * [mem128], XMM128. 2381 2381 */ 2382 IEM_MC_BEGIN(0, 2, 0 );2382 IEM_MC_BEGIN(0, 2, 0, 0); 2383 2383 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2384 2384 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2416 2416 * XMM32, XMM32. 2417 2417 */ 2418 IEM_MC_BEGIN(0, 1, 0 );2418 IEM_MC_BEGIN(0, 1, 0, 0); 2419 2419 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2420 2420 IEM_MC_LOCAL(uint32_t, uSrc); … … 2433 2433 * [mem32], XMM32. 2434 2434 */ 2435 IEM_MC_BEGIN(0, 2, 0 );2435 IEM_MC_BEGIN(0, 2, 0, 0); 2436 2436 IEM_MC_LOCAL(uint32_t, uSrc); 2437 2437 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2469 2469 * XMM64, XMM64. 2470 2470 */ 2471 IEM_MC_BEGIN(0, 1, 0 );2471 IEM_MC_BEGIN(0, 1, 0, 0); 2472 2472 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2473 2473 IEM_MC_LOCAL(uint64_t, uSrc); … … 2486 2486 * [mem64], XMM64. 2487 2487 */ 2488 IEM_MC_BEGIN(0, 2, 0 );2488 IEM_MC_BEGIN(0, 2, 0, 0); 2489 2489 IEM_MC_LOCAL(uint64_t, uSrc); 2490 2490 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2521 2521 IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq_WO, UqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2522 2522 2523 IEM_MC_BEGIN(0, 1, 0 );2523 IEM_MC_BEGIN(0, 1, 0, 0); 2524 2524 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2525 2525 IEM_MC_LOCAL(uint64_t, uSrc); … … 2549 2549 IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2550 2550 2551 IEM_MC_BEGIN(0, 2, 0 );2551 IEM_MC_BEGIN(0, 2, 0, 0); 2552 2552 IEM_MC_LOCAL(uint64_t, uSrc); 2553 2553 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2584 2584 IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2585 2585 2586 IEM_MC_BEGIN(0, 2, 0 );2586 IEM_MC_BEGIN(0, 2, 0, 0); 2587 2587 IEM_MC_LOCAL(uint64_t, uSrc); 2588 2588 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2633 2633 * XMM, XMM. 2634 2634 */ 2635 IEM_MC_BEGIN(0, 1, 0 );2635 IEM_MC_BEGIN(0, 1, 0, 0); 2636 2636 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 2637 2637 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 2654 2654 * XMM, [mem128]. 2655 2655 */ 2656 IEM_MC_BEGIN(0, 2, 0 );2656 IEM_MC_BEGIN(0, 2, 0, 0); 2657 2657 IEM_MC_LOCAL(RTUINT128U, uSrc); 2658 2658 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2693 2693 * XMM128, XMM64. 2694 2694 */ 2695 IEM_MC_BEGIN(1, 0, 0 );2695 IEM_MC_BEGIN(1, 0, 0, 0); 2696 2696 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 2697 2697 IEM_MC_ARG(uint64_t, uSrc, 0); … … 2712 2712 * XMM128, [mem64]. 2713 2713 */ 2714 IEM_MC_BEGIN(1, 1, 0 );2714 IEM_MC_BEGIN(1, 1, 0, 0); 2715 2715 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2716 2716 IEM_MC_ARG(uint64_t, uSrc, 0); … … 2748 2748 IEMOP_MNEMONIC2(MR_MEM, MOVLPS, movlps, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2749 2749 2750 IEM_MC_BEGIN(0, 2, 0 );2750 IEM_MC_BEGIN(0, 2, 0, 0); 2751 2751 IEM_MC_LOCAL(uint64_t, uSrc); 2752 2752 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2796 2796 IEMOP_MNEMONIC2(MR_MEM, MOVLPD, movlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2797 2797 2798 IEM_MC_BEGIN(0, 2, 0 );2798 IEM_MC_BEGIN(0, 2, 0, 0); 2799 2799 IEM_MC_LOCAL(uint64_t, uSrc); 2800 2800 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2941 2941 IEMOP_MNEMONIC2(RM_REG, MOVLHPS, movlhps, VqHi_WO, Uq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2942 2942 2943 IEM_MC_BEGIN(0, 1, 0 );2943 IEM_MC_BEGIN(0, 1, 0, 0); 2944 2944 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2945 2945 IEM_MC_LOCAL(uint64_t, uSrc); … … 2969 2969 IEMOP_MNEMONIC2(RM_MEM, MOVHPS, movhps, VqHi_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2970 2970 2971 IEM_MC_BEGIN(0, 2, 0 );2971 IEM_MC_BEGIN(0, 2, 0, 0); 2972 2972 IEM_MC_LOCAL(uint64_t, uSrc); 2973 2973 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3004 3004 IEMOP_MNEMONIC2(RM_MEM, MOVHPD, movhpd, VqHi_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 3005 3005 3006 IEM_MC_BEGIN(0, 2, 0 );3006 IEM_MC_BEGIN(0, 2, 0, 0); 3007 3007 IEM_MC_LOCAL(uint64_t, uSrc); 3008 3008 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3053 3053 * XMM128, XMM128. 3054 3054 */ 3055 IEM_MC_BEGIN(0, 1, 0 );3055 IEM_MC_BEGIN(0, 1, 0, 0); 3056 3056 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 3057 3057 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 3074 3074 * XMM128, [mem128]. 3075 3075 */ 3076 IEM_MC_BEGIN(0, 2, 0 );3076 IEM_MC_BEGIN(0, 2, 0, 0); 3077 3077 IEM_MC_LOCAL(RTUINT128U, uSrc); 3078 3078 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3123 3123 IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 3124 3124 3125 IEM_MC_BEGIN(0, 2, 0 );3125 IEM_MC_BEGIN(0, 2, 0, 0); 3126 3126 IEM_MC_LOCAL(uint64_t, uSrc); 3127 3127 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3171 3171 IEMOP_MNEMONIC2(MR_MEM, MOVHPD, movhpd, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 3172 3172 3173 IEM_MC_BEGIN(0, 2, 0 );3173 IEM_MC_BEGIN(0, 2, 0, 0); 3174 3174 IEM_MC_LOCAL(uint64_t, uSrc); 3175 3175 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3243 3243 } 3244 3244 3245 IEM_MC_BEGIN(0, 1, 0 );3245 IEM_MC_BEGIN(0, 1, 0, 0); 3246 3246 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3247 3247 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 3264 3264 if (IEM_IS_MODRM_REG_MODE(bRm)) 3265 3265 { 3266 IEM_MC_BEGIN(0, 0, 0 );3266 IEM_MC_BEGIN(0, 0, 0, 0); 3267 3267 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3268 3268 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 3271 3271 else 3272 3272 { 3273 IEM_MC_BEGIN(0, 1, 0 );3273 IEM_MC_BEGIN(0, 1, 0, 0); 3274 3274 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3275 3275 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 3425 3425 * Register, register. 3426 3426 */ 3427 IEM_MC_BEGIN(0, 0, 0 );3427 IEM_MC_BEGIN(0, 0, 0, 0); 3428 3428 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 3429 3429 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3439 3439 * Register, memory. 3440 3440 */ 3441 IEM_MC_BEGIN(0, 2, 0 );3441 IEM_MC_BEGIN(0, 2, 0, 0); 3442 3442 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3443 3443 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3474 3474 * Register, register. 3475 3475 */ 3476 IEM_MC_BEGIN(0, 0, 0 );3476 IEM_MC_BEGIN(0, 0, 0, 0); 3477 3477 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3478 3478 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3488 3488 * Register, memory. 3489 3489 */ 3490 IEM_MC_BEGIN(0, 2, 0 );3490 IEM_MC_BEGIN(0, 2, 0, 0); 3491 3491 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3492 3492 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3526 3526 * Register, register. 3527 3527 */ 3528 IEM_MC_BEGIN(0, 0, 0 );3528 IEM_MC_BEGIN(0, 0, 0, 0); 3529 3529 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 3530 3530 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3540 3540 * Memory, register. 3541 3541 */ 3542 IEM_MC_BEGIN(0, 2, 0 );3542 IEM_MC_BEGIN(0, 2, 0, 0); 3543 3543 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3544 3544 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3575 3575 * Register, register. 3576 3576 */ 3577 IEM_MC_BEGIN(0, 0, 0 );3577 IEM_MC_BEGIN(0, 0, 0, 0); 3578 3578 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3579 3579 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3589 3589 * Memory, register. 3590 3590 */ 3591 IEM_MC_BEGIN(0, 2, 0 );3591 IEM_MC_BEGIN(0, 2, 0, 0); 3592 3592 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3593 3593 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3620 3620 * XMM, MMX 3621 3621 */ 3622 IEM_MC_BEGIN(3, 1, 0 );3622 IEM_MC_BEGIN(3, 1, 0, 0); 3623 3623 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3624 3624 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 3650 3650 * XMM, [mem64] 3651 3651 */ 3652 IEM_MC_BEGIN(3, 2, 0 );3652 IEM_MC_BEGIN(3, 2, 0, 0); 3653 3653 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 3654 3654 IEM_MC_LOCAL(X86XMMREG, Dst); … … 3690 3690 * XMM, MMX 3691 3691 */ 3692 IEM_MC_BEGIN(3, 1, 0 );3692 IEM_MC_BEGIN(3, 1, 0, 0); 3693 3693 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3694 3694 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 3719 3719 * XMM, [mem64] 3720 3720 */ 3721 IEM_MC_BEGIN(3, 3, 0 );3721 IEM_MC_BEGIN(3, 3, 0, 0); 3722 3722 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 3723 3723 IEM_MC_LOCAL(X86XMMREG, Dst); … … 3760 3760 { 3761 3761 /* XMM, greg64 */ 3762 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );3762 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 3763 3763 IEM_MC_LOCAL(uint32_t, fMxcsr); 3764 3764 IEM_MC_LOCAL(RTFLOAT32U, r32Dst); … … 3786 3786 { 3787 3787 /* XMM, [mem64] */ 3788 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );3788 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 3789 3789 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3790 3790 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 3818 3818 { 3819 3819 /* greg, XMM */ 3820 IEM_MC_BEGIN(3, 2, 0 );3820 IEM_MC_BEGIN(3, 2, 0, 0); 3821 3821 IEM_MC_LOCAL(uint32_t, fMxcsr); 3822 3822 IEM_MC_LOCAL(RTFLOAT32U, r32Dst); … … 3844 3844 { 3845 3845 /* greg, [mem32] */ 3846 IEM_MC_BEGIN(3, 4, 0 );3846 IEM_MC_BEGIN(3, 4, 0, 0); 3847 3847 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3848 3848 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 3885 3885 { 3886 3886 /* XMM, greg64 */ 3887 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );3887 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 3888 3888 IEM_MC_LOCAL(uint32_t, fMxcsr); 3889 3889 IEM_MC_LOCAL(RTFLOAT64U, r64Dst); … … 3911 3911 { 3912 3912 /* XMM, [mem64] */ 3913 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );3913 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 3914 3914 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3915 3915 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 3943 3943 { 3944 3944 /* XMM, greg32 */ 3945 IEM_MC_BEGIN(3, 2, 0 );3945 IEM_MC_BEGIN(3, 2, 0, 0); 3946 3946 IEM_MC_LOCAL(uint32_t, fMxcsr); 3947 3947 IEM_MC_LOCAL(RTFLOAT64U, r64Dst); … … 3969 3969 { 3970 3970 /* XMM, [mem32] */ 3971 IEM_MC_BEGIN(3, 4, 0 );3971 IEM_MC_BEGIN(3, 4, 0, 0); 3972 3972 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3973 3973 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4018 4018 * memory, register. 4019 4019 */ 4020 IEM_MC_BEGIN(0, 2, 0 );4020 IEM_MC_BEGIN(0, 2, 0, 0); 4021 4021 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 4022 4022 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4057 4057 * memory, register. 4058 4058 */ 4059 IEM_MC_BEGIN(0, 2, 0 );4059 IEM_MC_BEGIN(0, 2, 0, 0); 4060 4060 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 4061 4061 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4090 4090 * Register, register. 4091 4091 */ 4092 IEM_MC_BEGIN(3, 1, 0 );4092 IEM_MC_BEGIN(3, 1, 0, 0); 4093 4093 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4094 4094 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4118 4118 * Register, memory. 4119 4119 */ 4120 IEM_MC_BEGIN(3, 2, 0 );4120 IEM_MC_BEGIN(3, 2, 0, 0); 4121 4121 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4122 4122 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4157 4157 * Register, register. 4158 4158 */ 4159 IEM_MC_BEGIN(3, 1, 0 );4159 IEM_MC_BEGIN(3, 1, 0, 0); 4160 4160 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4161 4161 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4185 4185 * Register, memory. 4186 4186 */ 4187 IEM_MC_BEGIN(3, 3, 0 );4187 IEM_MC_BEGIN(3, 3, 0, 0); 4188 4188 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4189 4189 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4227 4227 { 4228 4228 /* greg64, XMM */ 4229 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );4229 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 4230 4230 IEM_MC_LOCAL(uint32_t, fMxcsr); 4231 4231 IEM_MC_LOCAL(int64_t, i64Dst); … … 4253 4253 { 4254 4254 /* greg64, [mem64] */ 4255 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );4255 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 4256 4256 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4257 4257 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4285 4285 { 4286 4286 /* greg, XMM */ 4287 IEM_MC_BEGIN(3, 2, 0 );4287 IEM_MC_BEGIN(3, 2, 0, 0); 4288 4288 IEM_MC_LOCAL(uint32_t, fMxcsr); 4289 4289 IEM_MC_LOCAL(int32_t, i32Dst); … … 4311 4311 { 4312 4312 /* greg, [mem] */ 4313 IEM_MC_BEGIN(3, 4, 0 );4313 IEM_MC_BEGIN(3, 4, 0, 0); 4314 4314 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4315 4315 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4352 4352 { 4353 4353 /* greg64, XMM */ 4354 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );4354 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 4355 4355 IEM_MC_LOCAL(uint32_t, fMxcsr); 4356 4356 IEM_MC_LOCAL(int64_t, i64Dst); … … 4378 4378 { 4379 4379 /* greg64, [mem64] */ 4380 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );4380 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 4381 4381 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4382 4382 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4410 4410 { 4411 4411 /* greg, XMM */ 4412 IEM_MC_BEGIN(3, 2, 0 );4412 IEM_MC_BEGIN(3, 2, 0, 0); 4413 4413 IEM_MC_LOCAL(uint32_t, fMxcsr); 4414 4414 IEM_MC_LOCAL(int32_t, i32Dst); … … 4436 4436 { 4437 4437 /* greg32, [mem32] */ 4438 IEM_MC_BEGIN(3, 4, 0 );4438 IEM_MC_BEGIN(3, 4, 0, 0); 4439 4439 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4440 4440 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4476 4476 * Register, register. 4477 4477 */ 4478 IEM_MC_BEGIN(3, 1, 0 );4478 IEM_MC_BEGIN(3, 1, 0, 0); 4479 4479 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4480 4480 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4505 4505 * Register, memory. 4506 4506 */ 4507 IEM_MC_BEGIN(3, 2, 0 );4507 IEM_MC_BEGIN(3, 2, 0, 0); 4508 4508 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4509 4509 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4544 4544 * Register, register. 4545 4545 */ 4546 IEM_MC_BEGIN(3, 1, 0 );4546 IEM_MC_BEGIN(3, 1, 0, 0); 4547 4547 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4548 4548 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4573 4573 * Register, memory. 4574 4574 */ 4575 IEM_MC_BEGIN(3, 3, 0 );4575 IEM_MC_BEGIN(3, 3, 0, 0); 4576 4576 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4577 4577 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4615 4615 { 4616 4616 /* greg64, XMM */ 4617 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );4617 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 4618 4618 IEM_MC_LOCAL(uint32_t, fMxcsr); 4619 4619 IEM_MC_LOCAL(int64_t, i64Dst); … … 4641 4641 { 4642 4642 /* greg64, [mem64] */ 4643 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );4643 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 4644 4644 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4645 4645 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4673 4673 { 4674 4674 /* greg, XMM */ 4675 IEM_MC_BEGIN(3, 2, 0 );4675 IEM_MC_BEGIN(3, 2, 0, 0); 4676 4676 IEM_MC_LOCAL(uint32_t, fMxcsr); 4677 4677 IEM_MC_LOCAL(int32_t, i32Dst); … … 4699 4699 { 4700 4700 /* greg, [mem] */ 4701 IEM_MC_BEGIN(3, 4, 0 );4701 IEM_MC_BEGIN(3, 4, 0, 0); 4702 4702 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4703 4703 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4740 4740 { 4741 4741 /* greg64, XMM */ 4742 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT );4742 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0); 4743 4743 IEM_MC_LOCAL(uint32_t, fMxcsr); 4744 4744 IEM_MC_LOCAL(int64_t, i64Dst); … … 4766 4766 { 4767 4767 /* greg64, [mem64] */ 4768 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );4768 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 4769 4769 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4770 4770 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4798 4798 { 4799 4799 /* greg32, XMM */ 4800 IEM_MC_BEGIN(3, 2, 0 );4800 IEM_MC_BEGIN(3, 2, 0, 0); 4801 4801 IEM_MC_LOCAL(uint32_t, fMxcsr); 4802 4802 IEM_MC_LOCAL(int32_t, i32Dst); … … 4824 4824 { 4825 4825 /* greg32, [mem64] */ 4826 IEM_MC_BEGIN(3, 4, 0 );4826 IEM_MC_BEGIN(3, 4, 0, 0); 4827 4827 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4828 4828 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4864 4864 * Register, register. 4865 4865 */ 4866 IEM_MC_BEGIN(4, 1, 0 );4866 IEM_MC_BEGIN(4, 1, 0, 0); 4867 4867 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 4868 4868 IEM_MC_LOCAL(uint32_t, fEFlags); … … 4892 4892 * Register, memory. 4893 4893 */ 4894 IEM_MC_BEGIN(4, 3, 0 );4894 IEM_MC_BEGIN(4, 3, 0, 0); 4895 4895 IEM_MC_LOCAL(uint32_t, fEFlags); 4896 4896 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4933 4933 * Register, register. 4934 4934 */ 4935 IEM_MC_BEGIN(4, 1, 0 );4935 IEM_MC_BEGIN(4, 1, 0, 0); 4936 4936 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4937 4937 IEM_MC_LOCAL(uint32_t, fEFlags); … … 4961 4961 * Register, memory. 4962 4962 */ 4963 IEM_MC_BEGIN(4, 3, 0 );4963 IEM_MC_BEGIN(4, 3, 0, 0); 4964 4964 IEM_MC_LOCAL(uint32_t, fEFlags); 4965 4965 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 5006 5006 * Register, register. 5007 5007 */ 5008 IEM_MC_BEGIN(4, 1, 0 );5008 IEM_MC_BEGIN(4, 1, 0, 0); 5009 5009 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 5010 5010 IEM_MC_LOCAL(uint32_t, fEFlags); … … 5034 5034 * Register, memory. 5035 5035 */ 5036 IEM_MC_BEGIN(4, 3, 0 );5036 IEM_MC_BEGIN(4, 3, 0, 0); 5037 5037 IEM_MC_LOCAL(uint32_t, fEFlags); 5038 5038 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 5075 5075 * Register, register. 5076 5076 */ 5077 IEM_MC_BEGIN(4, 1, 0 );5077 IEM_MC_BEGIN(4, 1, 0, 0); 5078 5078 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 5079 5079 IEM_MC_LOCAL(uint32_t, fEFlags); … … 5103 5103 * Register, memory. 5104 5104 */ 5105 IEM_MC_BEGIN(4, 3, 0 );5105 IEM_MC_BEGIN(4, 3, 0, 0); 5106 5106 IEM_MC_LOCAL(uint32_t, fEFlags); 5107 5107 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 5238 5238 { \ 5239 5239 case IEMMODE_16BIT: \ 5240 IEM_MC_BEGIN(0, 1, 0 ); \5240 IEM_MC_BEGIN(0, 1, 0, 0); \ 5241 5241 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5242 5242 IEM_MC_LOCAL(uint16_t, u16Tmp); \ … … 5250 5250 \ 5251 5251 case IEMMODE_32BIT: \ 5252 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 ); \5252 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); \ 5253 5253 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5254 5254 IEM_MC_LOCAL(uint32_t, u32Tmp); \ … … 5264 5264 \ 5265 5265 case IEMMODE_64BIT: \ 5266 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT ); \5266 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); \ 5267 5267 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5268 5268 IEM_MC_LOCAL(uint64_t, u64Tmp); \ … … 5283 5283 { \ 5284 5284 case IEMMODE_16BIT: \ 5285 IEM_MC_BEGIN(0, 2, 0 ); \5285 IEM_MC_BEGIN(0, 2, 0, 0); \ 5286 5286 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 5287 5287 IEM_MC_LOCAL(uint16_t, u16Tmp); \ … … 5297 5297 \ 5298 5298 case IEMMODE_32BIT: \ 5299 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 ); \5299 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); \ 5300 5300 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 5301 5301 IEM_MC_LOCAL(uint32_t, u32Tmp); \ … … 5313 5313 \ 5314 5314 case IEMMODE_64BIT: \ 5315 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT ); \5315 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); \ 5316 5316 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 5317 5317 IEM_MC_LOCAL(uint64_t, u64Tmp); \ … … 5471 5471 * Register, register. 5472 5472 */ 5473 IEM_MC_BEGIN(2, 1, 0 );5473 IEM_MC_BEGIN(2, 1, 0, 0); 5474 5474 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 5475 5475 IEM_MC_LOCAL(uint8_t, u8Dst); … … 5500 5500 * Register, register. 5501 5501 */ 5502 IEM_MC_BEGIN(2, 1, 0 );5502 IEM_MC_BEGIN(2, 1, 0, 0); 5503 5503 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 5504 5504 IEM_MC_LOCAL(uint8_t, u8Dst); … … 6203 6203 { 6204 6204 /* MMX, greg64 */ 6205 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );6205 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 6206 6206 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6207 6207 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6220 6220 { 6221 6221 /* MMX, [mem64] */ 6222 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );6222 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 6223 6223 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6224 6224 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6255 6255 { 6256 6256 /* MMX, greg32 */ 6257 IEM_MC_BEGIN(0, 1, 0 );6257 IEM_MC_BEGIN(0, 1, 0, 0); 6258 6258 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6259 6259 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6272 6272 { 6273 6273 /* MMX, [mem32] */ 6274 IEM_MC_BEGIN(0, 2, 0 );6274 IEM_MC_BEGIN(0, 2, 0, 0); 6275 6275 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6276 6276 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6310 6310 { 6311 6311 /* XMM, greg64 */ 6312 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );6312 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 6313 6313 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6314 6314 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6326 6326 { 6327 6327 /* XMM, [mem64] */ 6328 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );6328 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 6329 6329 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6330 6330 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6360 6360 { 6361 6361 /* XMM, greg32 */ 6362 IEM_MC_BEGIN(0, 1, 0 );6362 IEM_MC_BEGIN(0, 1, 0, 0); 6363 6363 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6364 6364 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6376 6376 { 6377 6377 /* XMM, [mem32] */ 6378 IEM_MC_BEGIN(0, 2, 0 );6378 IEM_MC_BEGIN(0, 2, 0, 0); 6379 6379 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6380 6380 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6415 6415 * Register, register. 6416 6416 */ 6417 IEM_MC_BEGIN(0, 1, 0 );6417 IEM_MC_BEGIN(0, 1, 0, 0); 6418 6418 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6419 6419 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6434 6434 * Register, memory. 6435 6435 */ 6436 IEM_MC_BEGIN(0, 2, 0 );6436 IEM_MC_BEGIN(0, 2, 0, 0); 6437 6437 IEM_MC_LOCAL(uint64_t, u64Tmp); 6438 6438 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 6470 6470 * Register, register. 6471 6471 */ 6472 IEM_MC_BEGIN(0, 0, 0 );6472 IEM_MC_BEGIN(0, 0, 0, 0); 6473 6473 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6474 6474 … … 6486 6486 * Register, memory. 6487 6487 */ 6488 IEM_MC_BEGIN(0, 2, 0 );6488 IEM_MC_BEGIN(0, 2, 0, 0); 6489 6489 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 6490 6490 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 6521 6521 * Register, register. 6522 6522 */ 6523 IEM_MC_BEGIN(0, 0, 0 );6523 IEM_MC_BEGIN(0, 0, 0, 0); 6524 6524 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6525 6525 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 6535 6535 * Register, memory. 6536 6536 */ 6537 IEM_MC_BEGIN(0, 2, 0 );6537 IEM_MC_BEGIN(0, 2, 0, 0); 6538 6538 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 6539 6539 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 6562 6562 * Register, register. 6563 6563 */ 6564 IEM_MC_BEGIN(3, 0, 0 );6564 IEM_MC_BEGIN(3, 0, 0, 0); 6565 6565 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6566 6566 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); … … 6585 6585 * Register, memory. 6586 6586 */ 6587 IEM_MC_BEGIN(3, 2, 0 );6587 IEM_MC_BEGIN(3, 2, 0, 0); 6588 6588 IEM_MC_ARG(uint64_t *, pDst, 0); 6589 6589 IEM_MC_LOCAL(uint64_t, uSrc); … … 6628 6628 * Register, register. 6629 6629 */ 6630 IEM_MC_BEGIN(3, 0, 0 );6630 IEM_MC_BEGIN(3, 0, 0, 0); 6631 6631 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6632 6632 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 6647 6647 * Register, memory. 6648 6648 */ 6649 IEM_MC_BEGIN(3, 2, 0 );6649 IEM_MC_BEGIN(3, 2, 0, 0); 6650 6650 IEM_MC_ARG(PRTUINT128U, puDst, 0); 6651 6651 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 6713 6713 * Register, immediate. 6714 6714 */ 6715 IEM_MC_BEGIN(2, 0, 0 );6715 IEM_MC_BEGIN(2, 0, 0, 0); 6716 6716 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6717 6717 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); … … 6759 6759 * Register, immediate. 6760 6760 */ 6761 IEM_MC_BEGIN(2, 0, 0 );6761 IEM_MC_BEGIN(2, 0, 0, 0); 6762 6762 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6763 6763 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 7074 7074 { 7075 7075 IEMOP_MNEMONIC(emms, "emms"); 7076 IEM_MC_BEGIN(0, 0, 0 );7076 IEM_MC_BEGIN(0, 0, 0, 0); 7077 7077 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7078 7078 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 7105 7105 if (enmEffOpSize == IEMMODE_64BIT) 7106 7106 { 7107 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );7107 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 7108 7108 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7109 7109 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 7116 7116 else 7117 7117 { 7118 IEM_MC_BEGIN(2, 0, 0 );7118 IEM_MC_BEGIN(2, 0, 0, 0); 7119 7119 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7120 7120 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 7133 7133 if (enmEffOpSize == IEMMODE_64BIT) 7134 7134 { 7135 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );7135 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 7136 7136 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7137 7137 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7147 7147 else 7148 7148 { 7149 IEM_MC_BEGIN(3, 0, 0 );7149 IEM_MC_BEGIN(3, 0, 0, 0); 7150 7150 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7151 7151 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7187 7187 if (enmEffOpSize == IEMMODE_64BIT) 7188 7188 { 7189 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );7189 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 7190 7190 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7191 7191 IEM_MC_ARG(uint64_t, u64Val, 0); … … 7198 7198 else 7199 7199 { 7200 IEM_MC_BEGIN(2, 0, 0 );7200 IEM_MC_BEGIN(2, 0, 0, 0); 7201 7201 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7202 7202 IEM_MC_ARG(uint32_t, u32Val, 0); … … 7215 7215 if (enmEffOpSize == IEMMODE_64BIT) 7216 7216 { 7217 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );7217 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 7218 7218 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7219 7219 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7229 7229 else 7230 7230 { 7231 IEM_MC_BEGIN(3, 0, 0 );7231 IEM_MC_BEGIN(3, 0, 0, 0); 7232 7232 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7233 7233 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7324 7324 { 7325 7325 /* greg64, MMX */ 7326 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );7326 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 7327 7327 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 7328 7328 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7341 7341 { 7342 7342 /* [mem64], MMX */ 7343 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );7343 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 7344 7344 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7345 7345 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7376 7376 { 7377 7377 /* greg32, MMX */ 7378 IEM_MC_BEGIN(0, 1, 0 );7378 IEM_MC_BEGIN(0, 1, 0, 0); 7379 7379 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 7380 7380 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7393 7393 { 7394 7394 /* [mem32], MMX */ 7395 IEM_MC_BEGIN(0, 2, 0 );7395 IEM_MC_BEGIN(0, 2, 0, 0); 7396 7396 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7397 7397 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7432 7432 { 7433 7433 /* greg64, XMM */ 7434 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );7434 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 7435 7435 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7436 7436 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7448 7448 { 7449 7449 /* [mem64], XMM */ 7450 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );7450 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 7451 7451 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7452 7452 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7482 7482 { 7483 7483 /* greg32, XMM */ 7484 IEM_MC_BEGIN(0, 1, 0 );7484 IEM_MC_BEGIN(0, 1, 0, 0); 7485 7485 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7486 7486 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7498 7498 { 7499 7499 /* [mem32], XMM */ 7500 IEM_MC_BEGIN(0, 2, 0 );7500 IEM_MC_BEGIN(0, 2, 0, 0); 7501 7501 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7502 7502 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7534 7534 * XMM128, XMM64. 7535 7535 */ 7536 IEM_MC_BEGIN(0, 2, 0 );7536 IEM_MC_BEGIN(0, 2, 0, 0); 7537 7537 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7538 7538 IEM_MC_LOCAL(uint64_t, uSrc); … … 7552 7552 * XMM128, [mem64]. 7553 7553 */ 7554 IEM_MC_BEGIN(0, 2, 0 );7554 IEM_MC_BEGIN(0, 2, 0, 0); 7555 7555 IEM_MC_LOCAL(uint64_t, uSrc); 7556 7556 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7584 7584 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 7585 7585 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 7586 IEM_MC_BEGIN(0, 1, 0 );7586 IEM_MC_BEGIN(0, 1, 0, 0); 7587 7587 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 7588 7588 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7602 7602 * [mem64], MMX. 7603 7603 */ 7604 IEM_MC_BEGIN(0, 2, 0 );7604 IEM_MC_BEGIN(0, 2, 0, 0); 7605 7605 IEM_MC_LOCAL(uint64_t, u64Tmp); 7606 7606 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7630 7630 * XMM, XMM. 7631 7631 */ 7632 IEM_MC_BEGIN(0, 0, 0 );7632 IEM_MC_BEGIN(0, 0, 0, 0); 7633 7633 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7634 7634 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 7644 7644 * [mem128], XMM. 7645 7645 */ 7646 IEM_MC_BEGIN(0, 2, 0 );7646 IEM_MC_BEGIN(0, 2, 0, 0); 7647 7647 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 7648 7648 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7671 7671 * XMM, XMM. 7672 7672 */ 7673 IEM_MC_BEGIN(0, 0, 0 );7673 IEM_MC_BEGIN(0, 0, 0, 0); 7674 7674 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7675 7675 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 7685 7685 * [mem128], XMM. 7686 7686 */ 7687 IEM_MC_BEGIN(0, 2, 0 );7687 IEM_MC_BEGIN(0, 2, 0, 0); 7688 7688 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 7689 7689 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7714 7714 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7715 7715 { 7716 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7716 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7717 7717 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7718 7718 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7726 7726 else 7727 7727 { 7728 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7728 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7729 7729 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7730 7730 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7747 7747 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7748 7748 { 7749 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7749 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7750 7750 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7751 7751 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7759 7759 else 7760 7760 { 7761 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7761 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7762 7762 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7763 7763 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7780 7780 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7781 7781 { 7782 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7782 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7783 7783 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7784 7784 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7792 7792 else 7793 7793 { 7794 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7794 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7795 7795 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7796 7796 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7813 7813 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7814 7814 { 7815 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7815 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7816 7816 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7817 7817 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7825 7825 else 7826 7826 { 7827 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7827 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7828 7828 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7829 7829 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7846 7846 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7847 7847 { 7848 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7848 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7849 7849 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7850 7850 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7858 7858 else 7859 7859 { 7860 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7860 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7861 7861 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7862 7862 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7879 7879 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7880 7880 { 7881 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7881 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7882 7882 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7883 7883 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7891 7891 else 7892 7892 { 7893 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7893 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7894 7894 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7895 7895 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7912 7912 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7913 7913 { 7914 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7914 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7915 7915 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7916 7916 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7924 7924 else 7925 7925 { 7926 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7926 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7927 7927 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7928 7928 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7945 7945 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7946 7946 { 7947 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7947 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7948 7948 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7949 7949 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7957 7957 else 7958 7958 { 7959 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7959 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7960 7960 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7961 7961 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7978 7978 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7979 7979 { 7980 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7980 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7981 7981 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7982 7982 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 7990 7990 else 7991 7991 { 7992 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );7992 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 7993 7993 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7994 7994 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8011 8011 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8012 8012 { 8013 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8013 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8014 8014 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8015 8015 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8023 8023 else 8024 8024 { 8025 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8025 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8026 8026 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8027 8027 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8044 8044 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8045 8045 { 8046 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8046 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8047 8047 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8048 8048 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8056 8056 else 8057 8057 { 8058 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8058 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8059 8059 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8060 8060 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8077 8077 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8078 8078 { 8079 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8079 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8080 8080 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8081 8081 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8089 8089 else 8090 8090 { 8091 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8091 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8092 8092 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8093 8093 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8110 8110 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8111 8111 { 8112 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8112 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8113 8113 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8114 8114 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8122 8122 else 8123 8123 { 8124 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8124 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8125 8125 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8126 8126 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8143 8143 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8144 8144 { 8145 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8145 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8146 8146 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8147 8147 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8155 8155 else 8156 8156 { 8157 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8157 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8158 8158 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8159 8159 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8176 8176 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8177 8177 { 8178 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8178 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8179 8179 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8180 8180 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8188 8188 else 8189 8189 { 8190 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8190 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8191 8191 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8192 8192 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8209 8209 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8210 8210 { 8211 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8211 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8212 8212 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8213 8213 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8221 8221 else 8222 8222 { 8223 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8223 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8224 8224 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8225 8225 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8247 8247 { 8248 8248 /* register target */ 8249 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8249 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8250 8250 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8251 8251 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 8260 8260 { 8261 8261 /* memory target */ 8262 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8262 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8263 8263 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8264 8264 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8288 8288 { 8289 8289 /* register target */ 8290 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8290 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8291 8291 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8292 8292 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 8301 8301 { 8302 8302 /* memory target */ 8303 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8303 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8304 8304 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8305 8305 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8329 8329 { 8330 8330 /* register target */ 8331 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8331 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8332 8332 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8333 8333 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 8342 8342 { 8343 8343 /* memory target */ 8344 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8344 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8345 8345 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8346 8346 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8370 8370 { 8371 8371 /* register target */ 8372 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8372 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8373 8373 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8374 8374 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 8383 8383 { 8384 8384 /* memory target */ 8385 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8385 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8386 8386 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8387 8387 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8411 8411 { 8412 8412 /* register target */ 8413 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8413 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8414 8414 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8415 8415 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 8424 8424 { 8425 8425 /* memory target */ 8426 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8426 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8427 8427 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8428 8428 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8452 8452 { 8453 8453 /* register target */ 8454 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8454 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8455 8455 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8456 8456 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 8465 8465 { 8466 8466 /* memory target */ 8467 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8467 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8468 8468 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8469 8469 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8493 8493 { 8494 8494 /* register target */ 8495 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8495 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8496 8496 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8497 8497 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 8506 8506 { 8507 8507 /* memory target */ 8508 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8508 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8509 8509 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8510 8510 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8534 8534 { 8535 8535 /* register target */ 8536 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8536 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8537 8537 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8538 8538 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 8547 8547 { 8548 8548 /* memory target */ 8549 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8549 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8550 8550 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8551 8551 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8575 8575 { 8576 8576 /* register target */ 8577 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8577 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8578 8578 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8579 8579 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8588 8588 { 8589 8589 /* memory target */ 8590 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8590 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8591 8591 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8592 8592 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8616 8616 { 8617 8617 /* register target */ 8618 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8618 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8619 8619 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8620 8620 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8629 8629 { 8630 8630 /* memory target */ 8631 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8631 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8632 8632 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8633 8633 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8657 8657 { 8658 8658 /* register target */ 8659 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8659 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8660 8660 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8661 8661 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8670 8670 { 8671 8671 /* memory target */ 8672 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8672 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8673 8673 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8674 8674 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8698 8698 { 8699 8699 /* register target */ 8700 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8700 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8701 8701 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8702 8702 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8711 8711 { 8712 8712 /* memory target */ 8713 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8713 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8714 8714 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8715 8715 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8739 8739 { 8740 8740 /* register target */ 8741 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8741 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8742 8742 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8743 8743 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8752 8752 { 8753 8753 /* memory target */ 8754 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8754 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8755 8755 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8756 8756 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8780 8780 { 8781 8781 /* register target */ 8782 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8782 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8783 8783 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8784 8784 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8793 8793 { 8794 8794 /* memory target */ 8795 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8795 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8796 8796 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8797 8797 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8821 8821 { 8822 8822 /* register target */ 8823 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8823 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8824 8824 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8825 8825 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8834 8834 { 8835 8835 /* memory target */ 8836 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8836 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8837 8837 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8838 8838 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8862 8862 { 8863 8863 /* register target */ 8864 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 );8864 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0); 8865 8865 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8866 8866 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8875 8875 { 8876 8876 /* memory target */ 8877 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );8877 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 8878 8878 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8879 8879 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8935 8935 { \ 8936 8936 case IEMMODE_16BIT: \ 8937 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \8937 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 8938 8938 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8939 8939 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 8952 8952 \ 8953 8953 case IEMMODE_32BIT: \ 8954 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \8954 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 8955 8955 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8956 8956 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 8970 8970 \ 8971 8971 case IEMMODE_64BIT: \ 8972 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \8972 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 8973 8973 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8974 8974 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 8998 8998 { \ 8999 8999 case IEMMODE_16BIT: \ 9000 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386 ); \9000 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \ 9001 9001 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 9002 9002 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 9026 9026 \ 9027 9027 case IEMMODE_32BIT: \ 9028 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386 ); \9028 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \ 9029 9029 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 9030 9030 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 9054 9054 \ 9055 9055 case IEMMODE_64BIT: \ 9056 IEM_MC_BEGIN(3, 5, IEM_MC_F_64BIT ); \9056 IEM_MC_BEGIN(3, 5, IEM_MC_F_64BIT, 0); \ 9057 9057 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 9058 9058 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 9092 9092 { \ 9093 9093 case IEMMODE_16BIT: \ 9094 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386 ); \9094 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \ 9095 9095 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 9096 9096 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 9120 9120 \ 9121 9121 case IEMMODE_32BIT: \ 9122 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386 ); \9122 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \ 9123 9123 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 9124 9124 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 9148 9148 \ 9149 9149 case IEMMODE_64BIT: \ 9150 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT ); \9150 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); \ 9151 9151 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 9152 9152 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 9192 9192 { \ 9193 9193 case IEMMODE_16BIT: \ 9194 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \9194 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 9195 9195 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9196 9196 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ … … 9209 9209 \ 9210 9210 case IEMMODE_32BIT: \ 9211 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \9211 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 9212 9212 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9213 9213 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ … … 9226 9226 \ 9227 9227 case IEMMODE_64BIT: \ 9228 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \9228 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 9229 9229 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9230 9230 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ … … 9254 9254 { \ 9255 9255 case IEMMODE_16BIT: \ 9256 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386 ); \9256 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \ 9257 9257 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 9258 9258 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 9282 9282 \ 9283 9283 case IEMMODE_32BIT: \ 9284 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386 ); \9284 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \ 9285 9285 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 9286 9286 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 9310 9310 \ 9311 9311 case IEMMODE_64BIT: \ 9312 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT ); \9312 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); \ 9313 9313 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 9314 9314 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 9373 9373 { 9374 9374 case IEMMODE_16BIT: 9375 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386 );9375 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0); 9376 9376 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9377 9377 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 9390 9390 9391 9391 case IEMMODE_32BIT: 9392 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386 );9392 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0); 9393 9393 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9394 9394 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 9408 9408 9409 9409 case IEMMODE_64BIT: 9410 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT );9410 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0); 9411 9411 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9412 9412 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 9432 9432 { 9433 9433 case IEMMODE_16BIT: 9434 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386 );9434 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0); 9435 9435 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 9436 9436 IEM_MC_ARG(uint16_t, u16Src, 1); … … 9456 9456 9457 9457 case IEMMODE_32BIT: 9458 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386 );9458 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0); 9459 9459 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 9460 9460 IEM_MC_ARG(uint32_t, u32Src, 1); … … 9480 9480 9481 9481 case IEMMODE_64BIT: 9482 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT );9482 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0); 9483 9483 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 9484 9484 IEM_MC_ARG(uint64_t, u64Src, 1); … … 9522 9522 { 9523 9523 case IEMMODE_16BIT: 9524 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386 );9524 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0); 9525 9525 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9526 9526 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 9540 9540 9541 9541 case IEMMODE_32BIT: 9542 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386 );9542 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0); 9543 9543 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9544 9544 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 9559 9559 9560 9560 case IEMMODE_64BIT: 9561 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT );9561 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0); 9562 9562 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9563 9563 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 9584 9584 { 9585 9585 case IEMMODE_16BIT: 9586 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386 );9586 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0); 9587 9587 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 9588 9588 IEM_MC_ARG(uint16_t, u16Src, 1); … … 9607 9607 9608 9608 case IEMMODE_32BIT: 9609 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386 );9609 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0); 9610 9610 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 9611 9611 IEM_MC_ARG(uint32_t, u32Src, 1); … … 9630 9630 9631 9631 case IEMMODE_64BIT: 9632 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT );9632 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0); 9633 9633 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 9634 9634 IEM_MC_ARG(uint64_t, u64Src, 1); … … 9745 9745 IEMOP_RAISE_INVALID_OPCODE_RET(); 9746 9746 9747 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II );9747 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II, 0); 9748 9748 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9749 9749 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9765 9765 IEMOP_RAISE_INVALID_OPCODE_RET(); 9766 9766 9767 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II );9767 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II, 0); 9768 9768 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9769 9769 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9803 9803 IEMOP_RAISE_INVALID_OPCODE_RET(); 9804 9804 9805 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II );9805 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II, 0); 9806 9806 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9807 9807 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9839 9839 IEMOP_RAISE_INVALID_OPCODE_RET(); 9840 9840 9841 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II );9841 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II, 0); 9842 9842 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9843 9843 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9865 9865 IEMOP_RAISE_INVALID_OPCODE_RET(); 9866 9866 9867 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE );9867 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE, 0); 9868 9868 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9869 9869 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9892 9892 IEMOP_RAISE_INVALID_OPCODE_RET(); 9893 9893 9894 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE );9894 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE, 0); 9895 9895 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9896 9896 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9921 9921 return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm); 9922 9922 9923 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );9923 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 9924 9924 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9925 9925 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9945 9945 return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm); 9946 9946 9947 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );9947 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 9948 9948 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9949 9949 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9961 9961 RT_NOREF_PV(bRm); 9962 9962 IEMOP_MNEMONIC(lfence, "lfence"); 9963 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );9963 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 9964 9964 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 9965 9965 #ifdef RT_ARCH_ARM64 … … 9981 9981 RT_NOREF_PV(bRm); 9982 9982 IEMOP_MNEMONIC(mfence, "mfence"); 9983 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );9983 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 9984 9984 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 9985 9985 #ifdef RT_ARCH_ARM64 … … 10001 10001 RT_NOREF_PV(bRm); 10002 10002 IEMOP_MNEMONIC(sfence, "sfence"); 10003 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );10003 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 10004 10004 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 10005 10005 #ifdef RT_ARCH_ARM64 … … 10022 10022 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10023 10023 { 10024 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT );10024 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0); 10025 10025 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10026 10026 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10033 10033 else 10034 10034 { 10035 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );10035 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 10036 10036 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10037 10037 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10051 10051 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10052 10052 { 10053 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT );10053 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0); 10054 10054 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10055 10055 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10062 10062 else 10063 10063 { 10064 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );10064 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 10065 10065 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10066 10066 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10080 10080 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10081 10081 { 10082 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT );10082 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0); 10083 10083 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10084 10084 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10092 10092 else 10093 10093 { 10094 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );10094 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 10095 10095 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10096 10096 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10110 10110 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10111 10111 { 10112 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT );10112 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0); 10113 10113 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10114 10114 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10122 10122 else 10123 10123 { 10124 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );10124 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 10125 10125 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10126 10126 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10203 10203 if (IEM_IS_MODRM_REG_MODE(bRm)) 10204 10204 { 10205 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486 );10205 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486, 0); 10206 10206 IEMOP_HLP_DONE_DECODING(); 10207 10207 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 10224 10224 else 10225 10225 { 10226 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486 );10226 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486, 0); 10227 10227 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 10228 10228 IEM_MC_ARG(uint8_t *, pu8Al, 1); … … 10265 10265 { 10266 10266 case IEMMODE_16BIT: 10267 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486 );10267 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486, 0); 10268 10268 IEMOP_HLP_DONE_DECODING(); 10269 10269 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 10286 10286 10287 10287 case IEMMODE_32BIT: 10288 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486 );10288 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486, 0); 10289 10289 IEMOP_HLP_DONE_DECODING(); 10290 10290 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 10313 10313 10314 10314 case IEMMODE_64BIT: 10315 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT );10315 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0); 10316 10316 IEMOP_HLP_DONE_DECODING(); 10317 10317 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 10353 10353 { 10354 10354 case IEMMODE_16BIT: 10355 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486 );10355 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486, 0); 10356 10356 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 10357 10357 IEM_MC_ARG(uint16_t *, pu16Ax, 1); … … 10382 10382 10383 10383 case IEMMODE_32BIT: 10384 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486 );10384 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486, 0); 10385 10385 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 10386 10386 IEM_MC_ARG(uint32_t *, pu32Eax, 1); … … 10415 10415 10416 10416 case IEMMODE_64BIT: 10417 IEM_MC_BEGIN(4, 4, IEM_MC_F_64BIT );10417 IEM_MC_BEGIN(4, 4, IEM_MC_F_64BIT, 0); 10418 10418 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 10419 10419 IEM_MC_ARG(uint64_t *, pu64Rax, 1); … … 10523 10523 { 10524 10524 case IEMMODE_16BIT: 10525 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );10525 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 10526 10526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10527 10527 IEM_MC_LOCAL(uint16_t, u16Value); … … 10533 10533 10534 10534 case IEMMODE_32BIT: 10535 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );10535 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 10536 10536 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10537 10537 IEM_MC_LOCAL(uint32_t, u32Value); … … 10543 10543 10544 10544 case IEMMODE_64BIT: 10545 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );10545 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 10546 10546 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10547 10547 IEM_MC_LOCAL(uint64_t, u64Value); … … 10563 10563 { 10564 10564 case IEMMODE_16BIT: 10565 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );10565 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 10566 10566 IEM_MC_LOCAL(uint16_t, u16Value); 10567 10567 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10575 10575 10576 10576 case IEMMODE_32BIT: 10577 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );10577 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 10578 10578 IEM_MC_LOCAL(uint32_t, u32Value); 10579 10579 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10587 10587 10588 10588 case IEMMODE_64BIT: 10589 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );10589 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 10590 10590 IEM_MC_LOCAL(uint64_t, u64Value); 10591 10591 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10622 10622 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 10623 10623 { 10624 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );10624 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 10625 10625 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10626 10626 IEM_MC_LOCAL(uint32_t, u32Value); … … 10632 10632 else 10633 10633 { 10634 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );10634 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 10635 10635 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10636 10636 IEM_MC_LOCAL(uint64_t, u64Value); … … 10648 10648 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 10649 10649 { 10650 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );10650 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 10651 10651 IEM_MC_LOCAL(uint32_t, u32Value); 10652 10652 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10660 10660 else 10661 10661 { 10662 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );10662 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 10663 10663 IEM_MC_LOCAL(uint64_t, u64Value); 10664 10664 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10728 10728 { \ 10729 10729 case IEMMODE_16BIT: \ 10730 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \10730 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 10731 10731 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10732 10732 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 10743 10743 \ 10744 10744 case IEMMODE_32BIT: \ 10745 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \10745 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 10746 10746 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10747 10747 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 10759 10759 \ 10760 10760 case IEMMODE_64BIT: \ 10761 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \10761 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 10762 10762 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10763 10763 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 10785 10785 { \ 10786 10786 case IEMMODE_16BIT: \ 10787 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \10787 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 10788 10788 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10789 10789 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 10807 10807 \ 10808 10808 case IEMMODE_32BIT: \ 10809 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \10809 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 10810 10810 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 10811 10811 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 10829 10829 \ 10830 10830 case IEMMODE_64BIT: \ 10831 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \10831 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 10832 10832 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 10833 10833 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 10861 10861 { \ 10862 10862 case IEMMODE_16BIT: \ 10863 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \10863 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 10864 10864 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10865 10865 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 10883 10883 \ 10884 10884 case IEMMODE_32BIT: \ 10885 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \10885 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 10886 10886 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 10887 10887 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 10905 10905 \ 10906 10906 case IEMMODE_64BIT: \ 10907 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \10907 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 10908 10908 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 10909 10909 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 10944 10944 { \ 10945 10945 case IEMMODE_16BIT: \ 10946 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \10946 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 10947 10947 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10948 10948 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ … … 10959 10959 \ 10960 10960 case IEMMODE_32BIT: \ 10961 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 ); \10961 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \ 10962 10962 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10963 10963 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ … … 10974 10974 \ 10975 10975 case IEMMODE_64BIT: \ 10976 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \10976 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 10977 10977 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10978 10978 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ … … 11000 11000 { \ 11001 11001 case IEMMODE_16BIT: \ 11002 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \11002 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 11003 11003 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 11004 11004 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 11022 11022 \ 11023 11023 case IEMMODE_32BIT: \ 11024 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386 ); \11024 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \ 11025 11025 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 11026 11026 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 11044 11044 \ 11045 11045 case IEMMODE_64BIT: \ 11046 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT ); \11046 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \ 11047 11047 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 11048 11048 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 11164 11164 { 11165 11165 case IEMMODE_16BIT: 11166 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );11166 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 11167 11167 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11168 11168 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 11180 11180 11181 11181 case IEMMODE_32BIT: 11182 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386 );11182 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); 11183 11183 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11184 11184 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 11198 11198 11199 11199 case IEMMODE_64BIT: 11200 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );11200 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 11201 11201 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11202 11202 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 11224 11224 { 11225 11225 case IEMMODE_16BIT: 11226 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 );11226 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); 11227 11227 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 11228 11228 IEM_MC_ARG(uint16_t, u16Src, 1); … … 11242 11242 11243 11243 case IEMMODE_32BIT: 11244 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 );11244 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); 11245 11245 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 11246 11246 IEM_MC_ARG(uint32_t, u32Src, 1); … … 11263 11263 11264 11264 case IEMMODE_64BIT: 11265 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT );11265 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); 11266 11266 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 11267 11267 IEM_MC_ARG(uint64_t, u64Src, 1); … … 11377 11377 { 11378 11378 case IEMMODE_16BIT: 11379 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );11379 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 11380 11380 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11381 11381 IEM_MC_LOCAL(uint16_t, u16Value); … … 11387 11387 11388 11388 case IEMMODE_32BIT: 11389 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );11389 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 11390 11390 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11391 11391 IEM_MC_LOCAL(uint32_t, u32Value); … … 11397 11397 11398 11398 case IEMMODE_64BIT: 11399 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );11399 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 11400 11400 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11401 11401 IEM_MC_LOCAL(uint64_t, u64Value); … … 11417 11417 { 11418 11418 case IEMMODE_16BIT: 11419 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );11419 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 11420 11420 IEM_MC_LOCAL(uint16_t, u16Value); 11421 11421 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11429 11429 11430 11430 case IEMMODE_32BIT: 11431 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );11431 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 11432 11432 IEM_MC_LOCAL(uint32_t, u32Value); 11433 11433 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11441 11441 11442 11442 case IEMMODE_64BIT: 11443 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );11443 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 11444 11444 IEM_MC_LOCAL(uint64_t, u64Value); 11445 11445 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11476 11476 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 11477 11477 { 11478 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 );11478 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); 11479 11479 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11480 11480 IEM_MC_LOCAL(uint32_t, u32Value); … … 11486 11486 else 11487 11487 { 11488 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );11488 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 11489 11489 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11490 11490 IEM_MC_LOCAL(uint64_t, u64Value); … … 11502 11502 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 11503 11503 { 11504 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );11504 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 11505 11505 IEM_MC_LOCAL(uint32_t, u32Value); 11506 11506 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11514 11514 else 11515 11515 { 11516 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );11516 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 11517 11517 IEM_MC_LOCAL(uint64_t, u64Value); 11518 11518 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11540 11540 if (IEM_IS_MODRM_REG_MODE(bRm)) 11541 11541 { 11542 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486 );11542 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486, 0); 11543 11543 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11544 11544 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 11559 11559 * We're accessing memory. 11560 11560 */ 11561 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486 );11561 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486, 0); 11562 11562 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 11563 11563 IEM_MC_ARG(uint8_t *, pu8Reg, 1); … … 11602 11602 { 11603 11603 case IEMMODE_16BIT: 11604 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486 );11604 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486, 0); 11605 11605 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11606 11606 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 11618 11618 11619 11619 case IEMMODE_32BIT: 11620 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486 );11620 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486, 0); 11621 11621 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11622 11622 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 11636 11636 11637 11637 case IEMMODE_64BIT: 11638 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );11638 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 11639 11639 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11640 11640 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 11662 11662 { 11663 11663 case IEMMODE_16BIT: 11664 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486 );11664 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486, 0); 11665 11665 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 11666 11666 IEM_MC_ARG(uint16_t *, pu16Reg, 1); … … 11689 11689 11690 11690 case IEMMODE_32BIT: 11691 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486 );11691 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486, 0); 11692 11692 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 11693 11693 IEM_MC_ARG(uint32_t *, pu32Reg, 1); … … 11716 11716 11717 11717 case IEMMODE_64BIT: 11718 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT );11718 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); 11719 11719 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 11720 11720 IEM_MC_ARG(uint64_t *, pu64Reg, 1); … … 11759 11759 * XMM, XMM. 11760 11760 */ 11761 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );11761 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 11762 11762 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11763 11763 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); … … 11788 11788 * XMM, [mem128]. 11789 11789 */ 11790 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );11790 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 11791 11791 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 11792 11792 IEM_MC_LOCAL(X86XMMREG, Dst); … … 11830 11830 * XMM, XMM. 11831 11831 */ 11832 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );11832 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 11833 11833 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11834 11834 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 11859 11859 * XMM, [mem128]. 11860 11860 */ 11861 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );11861 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 11862 11862 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 11863 11863 IEM_MC_LOCAL(X86XMMREG, Dst); … … 11901 11901 * XMM32, XMM32. 11902 11902 */ 11903 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );11903 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 11904 11904 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11905 11905 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 11930 11930 * XMM32, [mem32]. 11931 11931 */ 11932 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );11932 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 11933 11933 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 11934 11934 IEM_MC_LOCAL(X86XMMREG, Dst); … … 11972 11972 * XMM64, XMM64. 11973 11973 */ 11974 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );11974 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 11975 11975 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11976 11976 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 12001 12001 * XMM64, [mem64]. 12002 12002 */ 12003 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );12003 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 12004 12004 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 12005 12005 IEM_MC_LOCAL(X86XMMREG, Dst); … … 12045 12045 { 12046 12046 case IEMMODE_32BIT: 12047 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 );12047 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); 12048 12048 IEM_MC_LOCAL(uint32_t, u32Value); 12049 12049 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 12059 12059 12060 12060 case IEMMODE_64BIT: 12061 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );12061 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 12062 12062 IEM_MC_LOCAL(uint64_t, u64Value); 12063 12063 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 12099 12099 * Register, register. 12100 12100 */ 12101 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );12101 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12102 12102 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12103 12103 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); … … 12120 12120 * Register, memory. 12121 12121 */ 12122 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );12122 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 12123 12123 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 12124 12124 IEM_MC_ARG(uint16_t, u16Src, 1); … … 12153 12153 * Register, register. 12154 12154 */ 12155 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );12155 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12156 12156 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12157 12157 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 12172 12172 * Register, memory. 12173 12173 */ 12174 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );12174 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 12175 12175 IEM_MC_ARG(PRTUINT128U, puDst, 0); 12176 12176 IEM_MC_ARG(uint16_t, u16Src, 1); … … 12207 12207 * Greg32, MMX, imm8. 12208 12208 */ 12209 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );12209 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 12210 12210 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12211 12211 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); … … 12239 12239 * Greg32, XMM, imm8. 12240 12240 */ 12241 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );12241 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 12242 12242 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12243 12243 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 12274 12274 * XMM, XMM, imm8. 12275 12275 */ 12276 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );12276 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12277 12277 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12278 12278 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); … … 12293 12293 * XMM, [mem128], imm8. 12294 12294 */ 12295 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );12295 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 12296 12296 IEM_MC_ARG(PRTUINT128U, pDst, 0); 12297 12297 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 12326 12326 * XMM, XMM, imm8. 12327 12327 */ 12328 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );12328 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12329 12329 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12330 12330 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); … … 12345 12345 * XMM, [mem128], imm8. 12346 12346 */ 12347 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );12347 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 12348 12348 IEM_MC_ARG(PRTUINT128U, pDst, 0); 12349 12349 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 12377 12377 IEMOP_MNEMONIC(cmpxchg8b, "cmpxchg8b Mq"); 12378 12378 12379 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER );12379 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER, 0); 12380 12380 IEM_MC_ARG(uint64_t *, pu64MemDst, 0); 12381 12381 IEM_MC_ARG(PRTUINT64U, pu64EaxEdx, 1); … … 12424 12424 if (IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fCmpXchg16b) 12425 12425 { 12426 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT );12426 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0); 12427 12427 IEM_MC_ARG(PRTUINT128U, pu128MemDst, 0); 12428 12428 IEM_MC_ARG(PRTUINT128U, pu128RaxRdx, 1); … … 12522 12522 { 12523 12523 case IEMMODE_16BIT: 12524 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );12524 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12525 12525 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12526 12526 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 12537 12537 12538 12538 case IEMMODE_32BIT: 12539 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 );12539 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); 12540 12540 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12541 12541 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12553 12553 12554 12554 case IEMMODE_64BIT: 12555 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );12555 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 12556 12556 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12557 12557 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 12582 12582 IEMOP_HLP_IN_VMX_OPERATION("vmptrld", kVmxVDiag_Vmptrld); 12583 12583 IEMOP_HLP_VMX_INSTR("vmptrld", kVmxVDiag_Vmptrld); 12584 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );12584 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12585 12585 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12586 12586 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 12602 12602 IEMOP_HLP_IN_VMX_OPERATION("vmclear", kVmxVDiag_Vmclear); 12603 12603 IEMOP_HLP_VMX_INSTR("vmclear", kVmxVDiag_Vmclear); 12604 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );12604 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12605 12605 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12606 12606 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 12621 12621 IEMOP_MNEMONIC(vmxon, "vmxon"); 12622 12622 IEMOP_HLP_VMX_INSTR("vmxon", kVmxVDiag_Vmxon); 12623 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );12623 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12624 12624 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12625 12625 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 12641 12641 IEMOP_HLP_IN_VMX_OPERATION("vmptrst", kVmxVDiag_Vmptrst); 12642 12642 IEMOP_HLP_VMX_INSTR("vmptrst", kVmxVDiag_Vmptrst); 12643 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );12643 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12644 12644 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12645 12645 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 12666 12666 { 12667 12667 case IEMMODE_16BIT: 12668 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );12668 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 12669 12669 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12670 12670 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 12681 12681 12682 12682 case IEMMODE_32BIT: 12683 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 );12683 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); 12684 12684 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12685 12685 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12697 12697 12698 12698 case IEMMODE_64BIT: 12699 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT );12699 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); 12700 12700 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12701 12701 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 12775 12775 { 12776 12776 case IEMMODE_16BIT: 12777 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486 );12777 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486, 0); 12778 12778 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12779 12779 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12785 12785 12786 12786 case IEMMODE_32BIT: 12787 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486 );12787 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486, 0); 12788 12788 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12789 12789 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12796 12796 12797 12797 case IEMMODE_64BIT: 12798 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT );12798 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0); 12799 12799 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12800 12800 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 13021 13021 * Register, register. 13022 13022 */ 13023 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );13023 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 13024 13024 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13025 13025 IEM_MC_LOCAL(uint64_t, uSrc); … … 13039 13039 * Memory, register. 13040 13040 */ 13041 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );13041 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 13042 13042 IEM_MC_LOCAL(uint64_t, uSrc); 13043 13043 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13075 13075 */ 13076 13076 IEMOP_MNEMONIC2(RM_REG, MOVQ2DQ, movq2dq, VqZx_WO, Nq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 13077 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );13077 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 13078 13078 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13079 13079 IEM_MC_LOCAL(uint64_t, uSrc); … … 13127 13127 */ 13128 13128 IEMOP_MNEMONIC2(RM_REG, MOVDQ2Q, movdq2q, Pq_WO, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 13129 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );13129 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 13130 13130 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13131 13131 IEM_MC_LOCAL(uint64_t, uSrc); … … 13166 13166 /* Note! Taking the lazy approch here wrt the high 32-bits of the GREG. */ 13167 13167 IEMOP_MNEMONIC2(RM_REG, PMOVMSKB, pmovmskb, Gd, Nq, DISOPTYPE_X86_MMX | DISOPTYPE_HARMLESS, 0); 13168 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );13168 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 13169 13169 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 13170 13170 IEM_MC_ARG(uint64_t *, puDst, 0); … … 13195 13195 /* Note! Taking the lazy approch here wrt the high 32-bits of the GREG. */ 13196 13196 IEMOP_MNEMONIC2(RM_REG, PMOVMSKB, pmovmskb, Gd, Ux, DISOPTYPE_X86_SSE | DISOPTYPE_HARMLESS, 0); 13197 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );13197 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 13198 13198 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13199 13199 IEM_MC_ARG(uint64_t *, puDst, 0); … … 13524 13524 { 13525 13525 /* Register, memory. */ 13526 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );13526 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 13527 13527 IEM_MC_LOCAL(uint64_t, uSrc); 13528 13528 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13571 13571 { 13572 13572 /* Register, memory. */ 13573 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );13573 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 13574 13574 IEM_MC_LOCAL(RTUINT128U, uSrc); 13575 13575 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13782 13782 * Register, memory. 13783 13783 */ 13784 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );13784 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 13785 13785 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 13786 13786 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r100854 r101387 51 51 if (pVCpu->iem.s.uVexLength) 52 52 { 53 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );53 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 54 54 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 55 55 IEM_MC_LOCAL(RTUINT256U, uDst); … … 71 71 else 72 72 { 73 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );73 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 74 74 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 75 75 IEM_MC_IMPLICIT_AVX_AIMPL_ARGS(); … … 95 95 if (pVCpu->iem.s.uVexLength) 96 96 { 97 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER );97 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 98 98 IEM_MC_LOCAL(RTUINT256U, uDst); 99 99 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 120 120 else 121 121 { 122 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );122 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 123 123 IEM_MC_LOCAL(RTUINT128U, uSrc2); 124 124 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 165 165 if (pVCpu->iem.s.uVexLength) 166 166 { 167 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );167 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 168 168 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 169 169 IEM_MC_LOCAL(RTUINT256U, uDst); … … 184 184 else 185 185 { 186 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );186 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 187 187 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 188 188 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 207 207 if (pVCpu->iem.s.uVexLength) 208 208 { 209 IEM_MC_BEGIN(3, 4, IEM_MC_F_NOT_286_OR_OLDER );209 IEM_MC_BEGIN(3, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 210 210 IEM_MC_LOCAL(RTUINT256U, uDst); 211 211 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 231 231 else 232 232 { 233 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );233 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 234 234 IEM_MC_LOCAL(RTUINT128U, uSrc2); 235 235 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 307 307 if (pVCpu->iem.s.uVexLength) 308 308 { 309 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );309 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 310 310 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 311 311 IEM_MC_LOCAL(RTUINT256U, uDst); … … 323 323 else 324 324 { 325 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );325 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 326 326 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 327 327 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 344 344 if (pVCpu->iem.s.uVexLength) 345 345 { 346 IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER );346 IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 347 347 IEM_MC_LOCAL(RTUINT256U, uDst); 348 348 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 365 365 else 366 366 { 367 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );367 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 368 368 IEM_MC_LOCAL(RTUINT128U, uSrc); 369 369 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 432 432 * Register, register. 433 433 */ 434 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );434 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 435 435 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 436 436 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); … … 450 450 * 128-bit: Register, Memory 451 451 */ 452 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );452 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 453 453 IEM_MC_LOCAL(RTUINT128U, uSrc); 454 454 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 470 470 * 256-bit: Register, Memory 471 471 */ 472 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );472 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 473 473 IEM_MC_LOCAL(RTUINT256U, uSrc); 474 474 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 507 507 * Register, register. 508 508 */ 509 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );509 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 510 510 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 511 511 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); … … 525 525 * 128-bit: Memory, register. 526 526 */ 527 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );527 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 528 528 IEM_MC_LOCAL(RTUINT128U, uSrc); 529 529 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 545 545 * 256-bit: Memory, register. 546 546 */ 547 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );547 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 548 548 IEM_MC_LOCAL(RTUINT256U, uSrc); 549 549 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 583 583 */ 584 584 IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVSS, vmovss, Vss_WO, HssHi, Uss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 585 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );585 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 586 586 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 587 587 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); … … 608 608 */ 609 609 IEMOP_MNEMONIC2(VEX_RM_MEM, VMOVSS, vmovss, VssZx_WO, Md, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 610 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );610 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 611 611 IEM_MC_LOCAL(uint32_t, uSrc); 612 612 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 646 646 */ 647 647 IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVSD, vmovsd, Vsd_WO, HsdHi, Usd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 648 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );648 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 649 649 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 650 650 … … 672 672 */ 673 673 IEMOP_MNEMONIC2(VEX_RM_MEM, VMOVSD, vmovsd, VsdZx_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 674 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );674 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 675 675 IEM_MC_LOCAL(uint64_t, uSrc); 676 676 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 709 709 * Register, register. 710 710 */ 711 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );711 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 712 712 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 713 713 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); … … 727 727 * 128-bit: Memory, register. 728 728 */ 729 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );729 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 730 730 IEM_MC_LOCAL(RTUINT128U, uSrc); 731 731 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 747 747 * 256-bit: Memory, register. 748 748 */ 749 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );749 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 750 750 IEM_MC_LOCAL(RTUINT256U, uSrc); 751 751 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 784 784 * Register, register. 785 785 */ 786 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );786 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 787 787 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 788 788 IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT(); … … 802 802 * 128-bit: Memory, register. 803 803 */ 804 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );804 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 805 805 IEM_MC_LOCAL(RTUINT128U, uSrc); 806 806 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 822 822 * 256-bit: Memory, register. 823 823 */ 824 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );824 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 825 825 IEM_MC_LOCAL(RTUINT256U, uSrc); 826 826 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 859 859 */ 860 860 IEMOP_MNEMONIC3(VEX_MVR_REG, VMOVSS, vmovss, Uss_WO, HssHi, Vss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 861 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );861 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 862 862 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 863 863 … … 885 885 */ 886 886 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVSS, vmovss, Md_WO, Vss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 887 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );887 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 888 888 IEM_MC_LOCAL(uint32_t, uSrc); 889 889 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 923 923 */ 924 924 IEMOP_MNEMONIC3(VEX_MVR_REG, VMOVSD, vmovsd, Usd_WO, HsdHi, Vsd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 925 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );925 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 926 926 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 927 927 … … 949 949 */ 950 950 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVSD, vmovsd, Mq_WO, Vsd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED); 951 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );951 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 952 952 IEM_MC_LOCAL(uint64_t, uSrc); 953 953 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 986 986 */ 987 987 IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVHLPS, vmovhlps, Vq_WO, HqHi, UqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 988 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );988 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 989 989 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); 990 990 … … 1016 1016 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPS, vmovlps, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1017 1017 1018 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1018 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1019 1019 IEM_MC_LOCAL(uint64_t, uSrc); 1020 1020 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1055 1055 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPD, vmovlpd, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1056 1056 1057 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1057 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1058 1058 IEM_MC_LOCAL(uint64_t, uSrc); 1059 1059 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1112 1112 if (pVCpu->iem.s.uVexLength == 0) 1113 1113 { 1114 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1114 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1115 1115 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1116 1116 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1131 1131 else 1132 1132 { 1133 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1133 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1134 1134 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1135 1135 IEM_MC_IMPLICIT_AVX_AIMPL_ARGS(); … … 1152 1152 if (pVCpu->iem.s.uVexLength == 0) 1153 1153 { 1154 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1154 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1155 1155 IEM_MC_LOCAL(RTUINT128U, uSrc); 1156 1156 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1173 1173 else 1174 1174 { 1175 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1175 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1176 1176 IEM_MC_LOCAL(RTUINT256U, uSrc); 1177 1177 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1217 1217 if (pVCpu->iem.s.uVexLength == 0) 1218 1218 { 1219 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );1219 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1220 1220 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1221 1221 IEM_MC_ARG(uint64_t, uSrc, 0); … … 1234 1234 else 1235 1235 { 1236 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1236 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1237 1237 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1238 1238 IEM_MC_IMPLICIT_AVX_AIMPL_ARGS(); … … 1255 1255 if (pVCpu->iem.s.uVexLength == 0) 1256 1256 { 1257 IEM_MC_BEGIN(1, 1, IEM_MC_F_NOT_286_OR_OLDER );1257 IEM_MC_BEGIN(1, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1258 1258 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1259 1259 IEM_MC_ARG(uint64_t, uSrc, 0); … … 1274 1274 else 1275 1275 { 1276 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1276 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1277 1277 IEM_MC_LOCAL(RTUINT256U, uSrc); 1278 1278 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1313 1313 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVLPS, vmovlps, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1314 1314 1315 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1315 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1316 1316 IEM_MC_LOCAL(uint64_t, uSrc); 1317 1317 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1360 1360 { 1361 1361 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVLPD, vmovlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1362 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1362 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1363 1363 IEM_MC_LOCAL(uint64_t, uSrc); 1364 1364 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1452 1452 IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVLHPS, vmovlhps, Vq_WO, Hq, Uq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1453 1453 1454 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );1454 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1455 1455 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); 1456 1456 … … 1478 1478 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVHPS, vmovhps, Vq_WO, Hq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1479 1479 1480 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1480 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1481 1481 IEM_MC_LOCAL(uint64_t, uSrc); 1482 1482 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1513 1513 IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVHPD, vmovhpd, Vq_WO, Hq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1514 1514 1515 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1515 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1516 1516 IEM_MC_LOCAL(uint64_t, uSrc); 1517 1517 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1566 1566 if (pVCpu->iem.s.uVexLength == 0) 1567 1567 { 1568 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1568 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1569 1569 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1570 1570 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1585 1585 else 1586 1586 { 1587 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1587 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1588 1588 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1589 1589 IEM_MC_IMPLICIT_AVX_AIMPL_ARGS(); … … 1606 1606 if (pVCpu->iem.s.uVexLength == 0) 1607 1607 { 1608 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1608 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1609 1609 IEM_MC_LOCAL(RTUINT128U, uSrc); 1610 1610 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1627 1627 else 1628 1628 { 1629 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );1629 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1630 1630 IEM_MC_LOCAL(RTUINT256U, uSrc); 1631 1631 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1667 1667 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVHPS, vmovhps, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1668 1668 1669 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1669 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1670 1670 IEM_MC_LOCAL(uint64_t, uSrc); 1671 1671 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1713 1713 IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVHPD, vmovhpd, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 1714 1714 1715 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1715 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1716 1716 IEM_MC_LOCAL(uint64_t, uSrc); 1717 1717 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1786 1786 * Register, register. 1787 1787 */ 1788 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );1788 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1789 1789 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1790 1790 … … 1807 1807 if (pVCpu->iem.s.uVexLength == 0) 1808 1808 { 1809 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1809 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1810 1810 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1811 1811 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1824 1824 else 1825 1825 { 1826 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1826 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1827 1827 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1828 1828 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 1863 1863 * Register, register. 1864 1864 */ 1865 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );1865 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1866 1866 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1867 1867 … … 1884 1884 if (pVCpu->iem.s.uVexLength == 0) 1885 1885 { 1886 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1886 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1887 1887 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1888 1888 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1901 1901 else 1902 1902 { 1903 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1903 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1904 1904 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1905 1905 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 1959 1959 * Register, register. 1960 1960 */ 1961 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );1961 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1962 1962 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1963 1963 … … 1980 1980 if (pVCpu->iem.s.uVexLength == 0) 1981 1981 { 1982 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1982 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1983 1983 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1984 1984 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1997 1997 else 1998 1998 { 1999 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1999 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2000 2000 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2001 2001 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 2035 2035 * Register, register. 2036 2036 */ 2037 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER );2037 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 2038 2038 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 2039 2039 … … 2056 2056 if (pVCpu->iem.s.uVexLength == 0) 2057 2057 { 2058 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );2058 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2059 2059 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2060 2060 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 2073 2073 else 2074 2074 { 2075 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );2075 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2076 2076 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2077 2077 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 2144 2144 if (pVCpu->iem.s.uVexLength == 0) 2145 2145 { 2146 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );2146 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2147 2147 IEM_MC_LOCAL(RTUINT128U, uSrc); 2148 2148 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2161 2161 else 2162 2162 { 2163 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );2163 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2164 2164 IEM_MC_LOCAL(RTUINT256U, uSrc); 2165 2165 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2205 2205 if (pVCpu->iem.s.uVexLength == 0) 2206 2206 { 2207 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );2207 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2208 2208 IEM_MC_LOCAL(RTUINT128U, uSrc); 2209 2209 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2222 2222 else 2223 2223 { 2224 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );2224 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2225 2225 IEM_MC_LOCAL(RTUINT256U, uSrc); 2226 2226 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2289 2289 * Register, register. 2290 2290 */ 2291 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );2291 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2292 2292 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2293 2293 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2318 2318 * Register, memory. 2319 2319 */ 2320 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );2320 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 2321 2321 IEM_MC_LOCAL(uint32_t, fEFlags); 2322 2322 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2360 2360 * Register, register. 2361 2361 */ 2362 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );2362 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2363 2363 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2364 2364 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2389 2389 * Register, memory. 2390 2390 */ 2391 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );2391 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 2392 2392 IEM_MC_LOCAL(uint32_t, fEFlags); 2393 2393 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2434 2434 * Register, register. 2435 2435 */ 2436 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );2436 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2437 2437 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2438 2438 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2463 2463 * Register, memory. 2464 2464 */ 2465 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );2465 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 2466 2466 IEM_MC_LOCAL(uint32_t, fEFlags); 2467 2467 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2505 2505 * Register, register. 2506 2506 */ 2507 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );2507 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2508 2508 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2509 2509 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2534 2534 * Register, memory. 2535 2535 */ 2536 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );2536 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 2537 2537 IEM_MC_LOCAL(uint32_t, fEFlags); 2538 2538 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2615 2615 if (pVCpu->iem.s.uVexLength == 0) 2616 2616 { 2617 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER );2617 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2618 2618 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 2619 2619 IEM_MC_LOCAL(uint8_t, u8Dst); … … 2631 2631 else 2632 2632 { 2633 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );2633 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2634 2634 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 2635 2635 IEM_MC_LOCAL(uint8_t, u8Dst); … … 2666 2666 if (pVCpu->iem.s.uVexLength == 0) 2667 2667 { 2668 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER );2668 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2669 2669 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 2670 2670 IEM_MC_LOCAL(uint8_t, u8Dst); … … 2682 2682 else 2683 2683 { 2684 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );2684 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 2685 2685 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 2686 2686 IEM_MC_LOCAL(uint8_t, u8Dst); … … 3024 3024 // * Register, register. 3025 3025 // */ 3026 // IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );3026 // IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 3027 3027 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3028 3028 // IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 3041 3041 // * Register, memory. 3042 3042 // */ 3043 // IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );3043 // IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3044 3044 // IEM_MC_ARG(PRTUINT128U, pDst, 0); 3045 3045 // IEM_MC_LOCAL(RTUINT128U, uSrc); … … 3174 3174 { 3175 3175 /* XMM, greg64 */ 3176 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );3176 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 3177 3177 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3178 3178 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3190 3190 { 3191 3191 /* XMM, [mem64] */ 3192 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3192 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3193 3193 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3194 3194 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3224 3224 { 3225 3225 /* XMM, greg32 */ 3226 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );3226 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 3227 3227 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3228 3228 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3240 3240 { 3241 3241 /* XMM, [mem32] */ 3242 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3242 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3243 3243 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3244 3244 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3283 3283 * Register, register. 3284 3284 */ 3285 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );3285 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 3286 3286 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3287 3287 … … 3302 3302 * Register, memory128. 3303 3303 */ 3304 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3304 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3305 3305 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 3306 3306 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3322 3322 * Register, memory256. 3323 3323 */ 3324 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3324 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3325 3325 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 3326 3326 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3358 3358 * Register, register. 3359 3359 */ 3360 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );3360 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 3361 3361 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3362 3362 … … 3377 3377 * Register, memory128. 3378 3378 */ 3379 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3379 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3380 3380 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 3381 3381 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3397 3397 * Register, memory256. 3398 3398 */ 3399 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3399 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3400 3400 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 3401 3401 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3436 3436 if (pVCpu->iem.s.uVexLength) 3437 3437 { 3438 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );3438 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3439 3439 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 3440 3440 IEM_MC_LOCAL(RTUINT256U, uDst); … … 3453 3453 else 3454 3454 { 3455 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );3455 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 3456 3456 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3457 3457 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 3475 3475 if (pVCpu->iem.s.uVexLength) 3476 3476 { 3477 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );3477 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 3478 3478 IEM_MC_LOCAL(RTUINT256U, uDst); 3479 3479 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 3498 3498 else 3499 3499 { 3500 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );3500 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 3501 3501 IEM_MC_LOCAL(RTUINT128U, uSrc); 3502 3502 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3735 3735 */ 3736 3736 IEMOP_MNEMONIC(vzeroupper, "vzeroupper"); 3737 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );3737 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 3738 3738 3739 3739 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); … … 3771 3771 */ 3772 3772 IEMOP_MNEMONIC(vzeroall, "vzeroall"); 3773 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );3773 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 3774 3774 IEM_MC_LOCAL(uint32_t, uZero); 3775 3775 … … 3866 3866 { 3867 3867 /* greg64, XMM */ 3868 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT );3868 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); 3869 3869 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3870 3870 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3882 3882 { 3883 3883 /* [mem64], XMM */ 3884 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT );3884 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); 3885 3885 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3886 3886 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3916 3916 { 3917 3917 /* greg32, XMM */ 3918 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );3918 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 3919 3919 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3920 3920 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3932 3932 { 3933 3933 /* [mem32], XMM */ 3934 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3934 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3935 3935 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3936 3936 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3969 3969 * Register, register. 3970 3970 */ 3971 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );3971 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 3972 3972 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3973 3973 … … 3985 3985 * Memory, register. 3986 3986 */ 3987 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );3987 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 3988 3988 IEM_MC_LOCAL(uint64_t, uSrc); 3989 3989 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4026 4026 * Register, register. 4027 4027 */ 4028 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );4028 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4029 4029 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 4030 4030 … … 4045 4045 * Register, memory128. 4046 4046 */ 4047 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );4047 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 4048 4048 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 4049 4049 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4065 4065 * Register, memory256. 4066 4066 */ 4067 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );4067 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 4068 4068 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 4069 4069 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4102 4102 * Register, register. 4103 4103 */ 4104 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );4104 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4105 4105 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 4106 4106 … … 4121 4121 * Register, memory128. 4122 4122 */ 4123 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );4123 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 4124 4124 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 4125 4125 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4141 4141 * Register, memory256. 4142 4142 */ 4143 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );4143 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 4144 4144 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 4145 4145 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4235 4235 //{ 4236 4236 // IEMOP_MNEMONIC1(M_MEM, VLDMXCSR, vldmxcsr, MdRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 4237 // IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );4237 // IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4238 4238 // IEM_MC_ARG(uint8_t, iEffSeg, 0); 4239 4239 // IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 4289 4289 { 4290 4290 IEMOP_MNEMONIC1(VEX_M_MEM, VSTMXCSR, vstmxcsr, Md_WO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 4291 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );4291 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4292 4292 IEM_MC_ARG(uint8_t, iEffSeg, 0); 4293 4293 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 4402 4402 * Register, register. 4403 4403 */ 4404 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );4404 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4405 4405 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 4406 4406 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); … … 4425 4425 * Register, memory. 4426 4426 */ 4427 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );4427 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 4428 4428 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4429 4429 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 4468 4468 */ 4469 4469 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 4470 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );4470 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 4471 4471 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); 4472 4472 IEM_MC_LOCAL(uint16_t, u16Dst); … … 4503 4503 { \ 4504 4504 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); \ 4505 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER ); \4505 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 4506 4506 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); \ 4507 4507 IEM_MC_LOCAL(RTUINT256U, uDst); \ … … 4525 4525 { \ 4526 4526 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); \ 4527 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER ); \4527 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 4528 4528 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); \ 4529 4529 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 4550 4550 if (pVCpu->iem.s.uVexLength) \ 4551 4551 { \ 4552 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER ); \4552 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 4553 4553 IEM_MC_LOCAL(RTUINT256U, uDst); \ 4554 4554 IEM_MC_LOCAL(RTUINT256U, uSrc1); \ … … 4574 4574 else \ 4575 4575 { \ 4576 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER ); \4576 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 4577 4577 IEM_MC_LOCAL(RTUINT128U, uSrc2); \ 4578 4578 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ … … 4708 4708 * Register, register. 4709 4709 */ 4710 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER );4710 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4711 4711 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 4712 4712 … … 4724 4724 * Memory, register. 4725 4725 */ 4726 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );4726 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 4727 4727 IEM_MC_LOCAL(uint64_t, uSrc); 4728 4728 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4758 4758 if (pVCpu->iem.s.uVexLength) 4759 4759 { 4760 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER );4760 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 4761 4761 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 4762 4762 IEM_MC_ARG(uint64_t *, puDst, 0); … … 4774 4774 else 4775 4775 { 4776 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );4776 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 4777 4777 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 4778 4778 IEM_MC_ARG(uint64_t *, puDst, 0); … … 5020 5020 * 128-bit: Memory, register. 5021 5021 */ 5022 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );5022 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 5023 5023 IEM_MC_LOCAL(RTUINT128U, uSrc); 5024 5024 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 5040 5040 * 256-bit: Memory, register. 5041 5041 */ 5042 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );5042 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 5043 5043 IEM_MC_LOCAL(RTUINT256U, uSrc); 5044 5044 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 5218 5218 * Register, memory128. 5219 5219 */ 5220 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );5220 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 5221 5221 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 5222 5222 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 5238 5238 * Register, memory256. 5239 5239 */ 5240 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );5240 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 5241 5241 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 5242 5242 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap2.cpp.h
r100854 r101387 221 221 if (pVCpu->iem.s.uVexLength) 222 222 { 223 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );223 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 224 224 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 225 225 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 240 240 else 241 241 { 242 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );242 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 243 243 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 244 244 IEM_MC_ARG(PCRTUINT128U, puSrc1, 0); … … 262 262 if (pVCpu->iem.s.uVexLength) 263 263 { 264 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );264 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 265 265 IEM_MC_LOCAL(RTUINT256U, uSrc1); 266 266 IEM_MC_LOCAL(RTUINT256U, uSrc2); … … 286 286 else 287 287 { 288 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER );288 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 289 289 IEM_MC_LOCAL(RTUINT128U, uSrc2); 290 290 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 325 325 if (pVCpu->iem.s.uVexLength) 326 326 { 327 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );327 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 328 328 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 329 329 IEM_MC_LOCAL(uint32_t, uSrc); … … 340 340 else 341 341 { 342 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );342 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 343 343 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 344 344 IEM_MC_LOCAL(uint32_t, uSrc); … … 360 360 if (pVCpu->iem.s.uVexLength) 361 361 { 362 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );362 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 363 363 IEM_MC_LOCAL(uint32_t, uSrc); 364 364 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 377 377 else 378 378 { 379 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );379 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 380 380 IEM_MC_LOCAL(uint32_t, uSrc); 381 381 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 411 411 if (pVCpu->iem.s.uVexLength) 412 412 { 413 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );413 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 414 414 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 415 415 IEM_MC_LOCAL(uint64_t, uSrc); … … 426 426 else 427 427 { 428 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );428 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 429 429 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 430 430 IEM_MC_LOCAL(uint64_t, uSrc); … … 444 444 * Register, memory. 445 445 */ 446 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );446 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 447 447 IEM_MC_LOCAL(uint64_t, uSrc); 448 448 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 482 482 * Register, memory. 483 483 */ 484 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );484 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 485 485 IEM_MC_LOCAL(RTUINT128U, uSrc); 486 486 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 551 551 if (pVCpu->iem.s.uVexLength) \ 552 552 { \ 553 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER ); \553 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 554 554 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); \ 555 555 IEM_MC_LOCAL(RTUINT256U, uDst); \ … … 568 568 else \ 569 569 { \ 570 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER ); \570 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 571 571 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); \ 572 572 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 591 591 if (pVCpu->iem.s.uVexLength) \ 592 592 { \ 593 IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER ); \593 IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 594 594 IEM_MC_LOCAL(RTUINT256U, uDst); \ 595 595 IEM_MC_LOCAL(RTUINT128U, uSrc); \ … … 611 611 else \ 612 612 { \ 613 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER ); \613 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 614 614 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 615 615 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 728 728 IEMOP_MNEMONIC2EX(vmovntdqa_Vdq_WO_Mdq_L0, "vmovntdqa, Vdq_WO, Mdq", VEX_RM_MEM, VMOVNTDQA, vmovntdqa, Vx_WO, Mx, 729 729 DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES); 730 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );730 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 731 731 IEM_MC_LOCAL(RTUINT128U, uSrc); 732 732 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 759 759 IEMOP_MNEMONIC2EX(vmovntdqa_Vqq_WO_Mqq_L1, "vmovntdqa, Vqq_WO,Mqq", VEX_RM_MEM, VMOVNTDQA, vmovntdqa, Vx_WO, Mx, 760 760 DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES); 761 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );761 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 762 762 IEM_MC_LOCAL(RTUINT256U, uSrc); 763 763 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 968 968 * Register, register. 969 969 */ 970 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER );970 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 971 971 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); 972 972 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 987 987 * Register, memory. 988 988 */ 989 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER );989 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 990 990 IEM_MC_LOCAL(RTUINT128U, uSrc); 991 991 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1050 1050 if (pVCpu->iem.s.uVexLength) 1051 1051 { 1052 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1052 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1053 1053 IEM_MC_LOCAL(uint32_t, uSrc); 1054 1054 … … 1065 1065 else 1066 1066 { 1067 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1067 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1068 1068 IEM_MC_LOCAL(uint32_t, uSrc); 1069 1069 … … 1085 1085 if (pVCpu->iem.s.uVexLength) 1086 1086 { 1087 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1087 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1088 1088 IEM_MC_LOCAL(uint32_t, uSrc); 1089 1089 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1102 1102 else 1103 1103 { 1104 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );1104 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1105 1105 IEM_MC_LOCAL(uint32_t, uSrc); 1106 1106 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1133 1133 if (pVCpu->iem.s.uVexLength) 1134 1134 { 1135 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1135 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1136 1136 IEM_MC_LOCAL(uint64_t, uSrc); 1137 1137 … … 1148 1148 else 1149 1149 { 1150 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1150 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1151 1151 IEM_MC_LOCAL(uint64_t, uSrc); 1152 1152 … … 1168 1168 if (pVCpu->iem.s.uVexLength) 1169 1169 { 1170 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1170 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1171 1171 IEM_MC_LOCAL(uint64_t, uSrc); 1172 1172 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1185 1185 else 1186 1186 { 1187 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );1187 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1188 1188 IEM_MC_LOCAL(uint64_t, uSrc); 1189 1189 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1221 1221 * Register, memory. 1222 1222 */ 1223 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1223 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1224 1224 IEM_MC_LOCAL(RTUINT128U, uSrc); 1225 1225 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1284 1284 if (pVCpu->iem.s.uVexLength) 1285 1285 { 1286 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1286 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1287 1287 IEM_MC_LOCAL(uint8_t, uSrc); 1288 1288 … … 1299 1299 else 1300 1300 { 1301 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1301 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1302 1302 IEM_MC_LOCAL(uint8_t, uSrc); 1303 1303 … … 1319 1319 if (pVCpu->iem.s.uVexLength) 1320 1320 { 1321 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1321 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1322 1322 IEM_MC_LOCAL(uint8_t, uSrc); 1323 1323 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1336 1336 else 1337 1337 { 1338 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );1338 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1339 1339 IEM_MC_LOCAL(uint8_t, uSrc); 1340 1340 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1367 1367 if (pVCpu->iem.s.uVexLength) 1368 1368 { 1369 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1369 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1370 1370 IEM_MC_LOCAL(uint16_t, uSrc); 1371 1371 … … 1382 1382 else 1383 1383 { 1384 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );1384 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1385 1385 IEM_MC_LOCAL(uint16_t, uSrc); 1386 1386 … … 1402 1402 if (pVCpu->iem.s.uVexLength) 1403 1403 { 1404 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );1404 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 1405 1405 IEM_MC_LOCAL(uint16_t, uSrc); 1406 1406 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1419 1419 else 1420 1420 { 1421 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER );1421 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 1422 1422 IEM_MC_LOCAL(uint16_t, uSrc); 1423 1423 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1645 1645 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1646 1646 { 1647 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );1647 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1648 1648 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1); 1649 1649 IEM_MC_ARG(uint64_t *, pDst, 0); … … 1662 1662 else 1663 1663 { 1664 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );1664 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1665 1665 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1); 1666 1666 IEM_MC_ARG(uint32_t *, pDst, 0); … … 1686 1686 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1687 1687 { 1688 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );1688 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1689 1689 IEM_MC_ARG(uint64_t *, pDst, 0); 1690 1690 IEM_MC_ARG(uint64_t, uSrc1, 1); … … 1705 1705 else 1706 1706 { 1707 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );1707 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1708 1708 IEM_MC_ARG(uint32_t *, pDst, 0); 1709 1709 IEM_MC_ARG(uint32_t, uSrc1, 1); … … 1746 1746 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 1747 1747 { \ 1748 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \1748 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 1749 1749 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1); \ 1750 1750 IEM_MC_ARG(uint64_t *, pDst, 0); \ … … 1761 1761 else \ 1762 1762 { \ 1763 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER ); \1763 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 1764 1764 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1); \ 1765 1765 IEM_MC_ARG(uint32_t *, pDst, 0); \ … … 1783 1783 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 1784 1784 { \ 1785 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT ); \1785 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \ 1786 1786 IEM_MC_ARG(uint64_t *, pDst, 0); \ 1787 1787 IEM_MC_ARG(uint64_t, uSrc, 1); \ … … 1800 1800 else \ 1801 1801 { \ 1802 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER ); \1802 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 1803 1803 IEM_MC_ARG(uint32_t *, pDst, 0); \ 1804 1804 IEM_MC_ARG(uint32_t, uSrc, 1); \ … … 1897 1897 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 1898 1898 { \ 1899 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT ); \1899 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0); \ 1900 1900 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \ 1901 1901 IEM_MC_ARG(uint64_t *, pDst, 0); \ … … 1915 1915 else \ 1916 1916 { \ 1917 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER ); \1917 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 1918 1918 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \ 1919 1919 IEM_MC_ARG(uint32_t *, pDst, 0); \ … … 1940 1940 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 1941 1941 { \ 1942 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT ); \1942 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0); \ 1943 1943 IEM_MC_ARG(uint64_t *, pDst, 0); \ 1944 1944 IEM_MC_ARG(uint64_t, uSrc1, 1); \ … … 1960 1960 else \ 1961 1961 { \ 1962 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER ); \1962 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 1963 1963 IEM_MC_ARG(uint32_t *, pDst, 0); \ 1964 1964 IEM_MC_ARG(uint32_t, uSrc1, 1); \ … … 1993 1993 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 1994 1994 { \ 1995 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \1995 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 1996 1996 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \ 1997 1997 IEM_MC_ARG(uint64_t *, pDst, 0); \ … … 2008 2008 else \ 2009 2009 { \ 2010 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER ); \2010 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 2011 2011 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \ 2012 2012 IEM_MC_ARG(uint32_t *, pDst, 0); \ … … 2030 2030 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 2031 2031 { \ 2032 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT ); \2032 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \ 2033 2033 IEM_MC_ARG(uint64_t *, pDst, 0); \ 2034 2034 IEM_MC_ARG(uint64_t, uSrc1, 1); \ … … 2047 2047 else \ 2048 2048 { \ 2049 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER ); \2049 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 2050 2050 IEM_MC_ARG(uint32_t *, pDst, 0); \ 2051 2051 IEM_MC_ARG(uint32_t, uSrc1, 1); \ … … 2085 2085 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 2086 2086 { \ 2087 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT ); \2087 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \ 2088 2088 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \ 2089 2089 IEM_MC_ARG(uint64_t *, pDst, 0); \ … … 2101 2101 else \ 2102 2102 { \ 2103 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER ); \2103 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 2104 2104 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \ 2105 2105 IEM_MC_ARG(uint32_t *, pDst, 0); \ … … 2124 2124 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \ 2125 2125 { \ 2126 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT ); \2126 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \ 2127 2127 IEM_MC_ARG(uint64_t *, pDst, 0); \ 2128 2128 IEM_MC_ARG(uint64_t, uSrc1, 1); \ … … 2142 2142 else \ 2143 2143 { \ 2144 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER ); \2144 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \ 2145 2145 IEM_MC_ARG(uint32_t *, pDst, 0); \ 2146 2146 IEM_MC_ARG(uint32_t, uSrc1, 1); \ … … 2196 2196 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 2197 2197 { 2198 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT );2198 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0); 2199 2199 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi2); 2200 2200 IEM_MC_ARG(uint64_t *, pDst1, 0); … … 2213 2213 else 2214 2214 { 2215 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );2215 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 2216 2216 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi2); 2217 2217 IEM_MC_ARG(uint32_t *, pDst1, 0); … … 2238 2238 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 2239 2239 { 2240 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT );2240 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0); 2241 2241 IEM_MC_ARG(uint64_t *, pDst1, 0); 2242 2242 IEM_MC_ARG(uint64_t *, pDst2, 1); … … 2257 2257 else 2258 2258 { 2259 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER );2259 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 2260 2260 IEM_MC_ARG(uint32_t *, pDst1, 0); 2261 2261 IEM_MC_ARG(uint32_t *, pDst2, 1); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h
r101386 r101387 53 53 if (pVCpu->iem.s.uVexLength) 54 54 { 55 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );55 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 56 56 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 57 57 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); … … 74 74 else 75 75 { 76 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );76 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 77 77 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 78 78 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); … … 99 99 if (pVCpu->iem.s.uVexLength) 100 100 { 101 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER );101 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 102 102 IEM_MC_LOCAL(RTUINT256U, uDst); 103 103 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 125 125 else 126 126 { 127 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );127 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 128 128 IEM_MC_LOCAL(RTUINT128U, uSrc2); 129 129 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 172 172 if (pVCpu->iem.s.uVexLength) 173 173 { 174 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );174 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 175 175 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 176 176 IEM_MC_LOCAL(RTUINT256U, uDst); … … 192 192 else 193 193 { 194 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );194 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 195 195 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 196 196 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 216 216 if (pVCpu->iem.s.uVexLength) 217 217 { 218 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER );218 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 219 219 IEM_MC_LOCAL(RTUINT256U, uDst); 220 220 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 242 242 else 243 243 { 244 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );244 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 245 245 IEM_MC_LOCAL(RTUINT128U, uSrc2); 246 246 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 293 293 * Register, register. 294 294 */ 295 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );295 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 296 296 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 297 297 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); … … 318 318 * Register, memory. 319 319 */ 320 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );320 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 321 321 IEM_MC_LOCAL(RTUINT256U, uDst); 322 322 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 424 424 * Register, register. 425 425 */ 426 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );426 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 427 427 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 428 428 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); … … 444 444 * Register, memory. 445 445 */ 446 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );446 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 447 447 IEM_MC_LOCAL(RTUINT128U, uSrc); 448 448 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 516 516 * Register, register. 517 517 */ 518 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER );518 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 519 519 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 520 520 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); … … 536 536 * Register, memory. 537 537 */ 538 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER );538 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 539 539 IEM_MC_LOCAL(RTUINT128U, uSrc); 540 540 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 595 595 * Register, register. 596 596 */ 597 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );597 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 598 598 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 599 599 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fPclMul); … … 618 618 * Register, memory. 619 619 */ 620 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );620 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 621 621 IEM_MC_LOCAL(RTUINT128U, uSrc2); 622 622 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 659 659 * Register, register. 660 660 */ 661 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER );661 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); 662 662 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 663 663 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); … … 684 684 * Register, memory. 685 685 */ 686 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );686 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 687 687 IEM_MC_LOCAL(RTUINT256U, uDst); 688 688 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 737 737 if (pVCpu->iem.s.uVexLength) 738 738 { 739 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER );739 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 740 740 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 741 741 IEM_MC_LOCAL(RTUINT256U, uDst); … … 759 759 else 760 760 { 761 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );761 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 762 762 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 763 763 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 784 784 if (pVCpu->iem.s.uVexLength) 785 785 { 786 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER );786 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER, 0); 787 787 IEM_MC_LOCAL(RTUINT256U, uDst); 788 788 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 814 814 else 815 815 { 816 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );816 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 817 817 IEM_MC_LOCAL(RTUINT128U, uSrc2); 818 818 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 881 881 if (pVCpu->iem.s.uVexLength) 882 882 { 883 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER );883 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); 884 884 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 885 885 IEM_MC_LOCAL(RTUINT256U, uDst); … … 903 903 else 904 904 { 905 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER );905 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 906 906 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 907 907 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 928 928 if (pVCpu->iem.s.uVexLength) 929 929 { 930 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER );930 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER, 0); 931 931 IEM_MC_LOCAL(RTUINT256U, uDst); 932 932 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 958 958 else 959 959 { 960 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER );960 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); 961 961 IEM_MC_LOCAL(RTUINT128U, uSrc2); 962 962 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1131 1131 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1132 1132 { 1133 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT );1133 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); 1134 1134 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fBmi2); 1135 1135 IEM_MC_ARG(uint64_t *, pDst, 0); … … 1144 1144 else 1145 1145 { 1146 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER );1146 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); 1147 1147 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fBmi2); 1148 1148 IEM_MC_ARG(uint32_t *, pDst, 0); … … 1164 1164 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1165 1165 { 1166 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT );1166 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); 1167 1167 IEM_MC_ARG(uint64_t *, pDst, 0); 1168 1168 IEM_MC_ARG(uint64_t, uSrc1, 1); … … 1180 1180 else 1181 1181 { 1182 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER );1182 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); 1183 1183 IEM_MC_ARG(uint32_t *, pDst, 0); 1184 1184 IEM_MC_ARG(uint32_t, uSrc1, 1); -
trunk/src/VBox/VMM/VMMAll/IEMAllN8vePython.py
r101370 r101387 44 44 45 45 46 ## Supplememnts g_dMcStmtParsers. 47 g_dMcStmtThreaded = { 48 'IEM_MC_DEFER_TO_CIMPL_0_RET_THREADED': (None, True, True, ), 49 'IEM_MC_DEFER_TO_CIMPL_1_RET_THREADED': (None, True, True, ), 50 'IEM_MC_DEFER_TO_CIMPL_2_RET_THREADED': (None, True, True, ), 51 'IEM_MC_DEFER_TO_CIMPL_3_RET_THREADED': (None, True, True, ), 52 53 'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16': (None, True, False, ), 54 'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32': (None, True, False, ), # True ), 55 'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64': (None, True, False, ), 56 57 'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16_WITH_FLAGS': (None, True, False, ), 58 'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS': (None, True, False, ), 59 'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64_WITH_FLAGS': (None, True, False, ), 60 61 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_ADDR32': (None, False, False, ), 62 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_PRE386': (None, False, False, ), 63 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16': (None, False, False, ), 64 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_ADDR16': (None, False, False, ), 65 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_FLAT': (None, False, False, ), 66 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32': (None, False, False, ), 67 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_ADDR32': (None, False, False, ), 68 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_FSGS': (None, False, False, ), 69 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64': (None, False, False, ), 70 71 'IEM_MC_CALL_CIMPL_1_THREADED': (None, True, False, ), 72 'IEM_MC_CALL_CIMPL_2_THREADED': (None, True, False, ), 73 'IEM_MC_CALL_CIMPL_3_THREADED': (None, True, False, ), 74 'IEM_MC_CALL_CIMPL_4_THREADED': (None, True, False, ), 75 'IEM_MC_CALL_CIMPL_5_THREADED': (None, True, False, ), 76 77 'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16': (None, True, False, ), 78 'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32': (None, True, False, ), 79 'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64': (None, True, False, ), 80 'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16': (None, True, False, ), 81 'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32': (None, True, False, ), 82 'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64': (None, True, False, ), 83 'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32': (None, True, False, ), 84 'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64': (None, True, False, ), 85 86 'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16_WITH_FLAGS': (None, True, False, ), 87 'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32_WITH_FLAGS': (None, True, False, ), 88 'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64_WITH_FLAGS': (None, True, False, ), 89 'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16_WITH_FLAGS': (None, True, False, ), 90 'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32_WITH_FLAGS': (None, True, False, ), 91 'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64_WITH_FLAGS': (None, True, False, ), 92 'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32_WITH_FLAGS': (None, True, False, ), 93 'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64_WITH_FLAGS': (None, True, False, ), 94 95 'IEM_MC_STORE_GREG_U8_THREADED': (None, True, False, ), 96 'IEM_MC_STORE_GREG_U8_CONST_THREADED': (None, True, False, ), 97 'IEM_MC_FETCH_GREG_U8_THREADED': (None, False, False, ), 98 'IEM_MC_FETCH_GREG_U8_SX_U16_THREADED': (None, False, False, ), 99 'IEM_MC_FETCH_GREG_U8_SX_U32_THREADED': (None, False, False, ), 100 'IEM_MC_FETCH_GREG_U8_SX_U64_THREADED': (None, False, False, ), 101 'IEM_MC_FETCH_GREG_U8_ZX_U16_THREADED': (None, False, False, ), 102 'IEM_MC_FETCH_GREG_U8_ZX_U32_THREADED': (None, False, False, ), 103 'IEM_MC_FETCH_GREG_U8_ZX_U64_THREADED': (None, False, False, ), 104 'IEM_MC_REF_GREG_U8_THREADED': (None, True, False, ), 105 106 # Flat Mem: 107 'IEM_MC_FETCH_MEM16_FLAT_U8': (None, True, False, ), 108 'IEM_MC_FETCH_MEM32_FLAT_U8': (None, True, False, ), 109 'IEM_MC_FETCH_MEM_FLAT_D80': (None, True, False, ), 110 'IEM_MC_FETCH_MEM_FLAT_I16': (None, True, False, ), 111 'IEM_MC_FETCH_MEM_FLAT_I32': (None, True, False, ), 112 'IEM_MC_FETCH_MEM_FLAT_I64': (None, True, False, ), 113 'IEM_MC_FETCH_MEM_FLAT_R32': (None, True, False, ), 114 'IEM_MC_FETCH_MEM_FLAT_R64': (None, True, False, ), 115 'IEM_MC_FETCH_MEM_FLAT_R80': (None, True, False, ), 116 'IEM_MC_FETCH_MEM_FLAT_U128_ALIGN_SSE': (None, True, False, ), 117 'IEM_MC_FETCH_MEM_FLAT_U128_NO_AC': (None, True, False, ), 118 'IEM_MC_FETCH_MEM_FLAT_U128': (None, True, False, ), 119 'IEM_MC_FETCH_MEM_FLAT_U16_DISP': (None, True, False, ), 120 'IEM_MC_FETCH_MEM_FLAT_U16_SX_U32': (None, True, False, ), 121 'IEM_MC_FETCH_MEM_FLAT_U16_SX_U64': (None, True, False, ), 122 'IEM_MC_FETCH_MEM_FLAT_U16': (None, True, False, ), 123 'IEM_MC_FETCH_MEM_FLAT_U16_ZX_U32': (None, True, False, ), 124 'IEM_MC_FETCH_MEM_FLAT_U16_ZX_U64': (None, True, False, ), 125 'IEM_MC_FETCH_MEM_FLAT_U256_ALIGN_AVX': (None, True, False, ), 126 'IEM_MC_FETCH_MEM_FLAT_U256_NO_AC': (None, True, False, ), 127 'IEM_MC_FETCH_MEM_FLAT_U256': (None, True, False, ), 128 'IEM_MC_FETCH_MEM_FLAT_U32_DISP': (None, True, False, ), 129 'IEM_MC_FETCH_MEM_FLAT_U32_SX_U64': (None, True, False, ), 130 'IEM_MC_FETCH_MEM_FLAT_U32': (None, True, False, ), 131 'IEM_MC_FETCH_MEM_FLAT_U32_ZX_U64': (None, True, False, ), 132 'IEM_MC_FETCH_MEM_FLAT_U64': (None, True, False, ), 133 'IEM_MC_FETCH_MEM_FLAT_U8_SX_U16': (None, True, False, ), 134 'IEM_MC_FETCH_MEM_FLAT_U8_SX_U32': (None, True, False, ), 135 'IEM_MC_FETCH_MEM_FLAT_U8_SX_U64': (None, True, False, ), 136 'IEM_MC_FETCH_MEM_FLAT_U8': (None, True, False, ), 137 'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U16': (None, True, False, ), 138 'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U32': (None, True, False, ), 139 'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U64': (None, True, False, ), 140 'IEM_MC_FETCH_MEM_FLAT_XMM_ALIGN_SSE': (None, True, False, ), 141 'IEM_MC_FETCH_MEM_FLAT_XMM_U32': (None, True, False, ), 142 'IEM_MC_FETCH_MEM_FLAT_XMM_U64': (None, True, False, ), 143 'IEM_MC_MEM_FLAT_MAP_EX': (None, True, False, ), 144 'IEM_MC_MEM_FLAT_MAP': (None, True, False, ), 145 'IEM_MC_MEM_FLAT_MAP_U16_RO': (None, True, False, ), 146 'IEM_MC_MEM_FLAT_MAP_U16_RW': (None, True, False, ), 147 'IEM_MC_MEM_FLAT_MAP_U32_RO': (None, True, False, ), 148 'IEM_MC_MEM_FLAT_MAP_U32_RW': (None, True, False, ), 149 'IEM_MC_MEM_FLAT_MAP_U64_RO': (None, True, False, ), 150 'IEM_MC_MEM_FLAT_MAP_U64_RW': (None, True, False, ), 151 'IEM_MC_MEM_FLAT_MAP_U8_RO': (None, True, False, ), 152 'IEM_MC_MEM_FLAT_MAP_U8_RW': (None, True, False, ), 153 'IEM_MC_STORE_MEM_FLAT_U128_ALIGN_SSE': (None, True, False, ), 154 'IEM_MC_STORE_MEM_FLAT_U128': (None, True, False, ), 155 'IEM_MC_STORE_MEM_FLAT_U16': (None, True, False, ), 156 'IEM_MC_STORE_MEM_FLAT_U256_ALIGN_AVX': (None, True, False, ), 157 'IEM_MC_STORE_MEM_FLAT_U256': (None, True, False, ), 158 'IEM_MC_STORE_MEM_FLAT_U32': (None, True, False, ), 159 'IEM_MC_STORE_MEM_FLAT_U64': (None, True, False, ), 160 'IEM_MC_STORE_MEM_FLAT_U8_CONST': (None, True, False, ), 161 'IEM_MC_STORE_MEM_FLAT_U8': (None, True, False, ), 162 163 # Flat Stack: 164 'IEM_MC_FLAT64_PUSH_U16': (None, True, False, ), 165 'IEM_MC_FLAT64_PUSH_U64': (None, True, False, ), 166 'IEM_MC_FLAT64_PUSH_U16': (None, True, False, ), 167 'IEM_MC_FLAT64_PUSH_U64': (None, True, False, ), 168 'IEM_MC_FLAT64_POP_U16': (None, True, False, ), 169 'IEM_MC_FLAT64_POP_U64': (None, True, False, ), 170 'IEM_MC_FLAT64_POP_U16': (None, True, False, ), 171 'IEM_MC_FLAT64_POP_U64': (None, True, False, ), 172 'IEM_MC_FLAT64_PUSH_U16': (None, True, False, ), 173 'IEM_MC_FLAT64_PUSH_U64': (None, True, False, ), 174 'IEM_MC_FLAT64_PUSH_U16': (None, True, False, ), 175 'IEM_MC_FLAT64_PUSH_U64': (None, True, False, ), 176 'IEM_MC_FLAT32_PUSH_U16': (None, True, False, ), 177 'IEM_MC_FLAT64_PUSH_U16': (None, True, False, ), 178 'IEM_MC_FLAT32_PUSH_U32': (None, True, False, ), 179 'IEM_MC_FLAT64_PUSH_U64': (None, True, False, ), 180 }; 181 46 182 class NativeRecompFunctionVariation(object): 47 183 """ … … 70 206 aoStmts = self.oVariation.aoStmtsForThreadedFunction # type: list(McStmt) 71 207 return iai.McStmt.renderCodeForList(aoStmts, cchIndent); 208 209 @staticmethod 210 def checkStatements(aoStmts, sHostArch): 211 """ 212 Checks that all the given statements are supported by the native recompiler. 213 """ 214 _ = sHostArch; 215 for oStmt in aoStmts: # type: McStmt 216 if not oStmt.isCppStmt(): 217 aInfo = iai.g_dMcStmtParsers.get(oStmt.sName); 218 if not aInfo: 219 aInfo = g_dMcStmtThreaded.get(oStmt.sName); 220 if not aInfo: 221 raise Exception('Unknown statement: %s' % (oStmt.sName, )); 222 if aInfo[2] is False: 223 return False; 224 if aInfo[2] is not True: 225 if isinstance(aInfo[2], str): 226 if aInfo[2] != sHostArch: 227 return False; 228 elif sHostArch not in aInfo[2]: 229 return False; 230 #elif not self.fDecode: 231 232 if isinstance(oStmt, iai.McStmtCond): 233 if not NativeRecompFunctionVariation.checkStatements(oStmt.aoIfBranch, sHostArch): 234 return False; 235 if not NativeRecompFunctionVariation.checkStatements(oStmt.aoElseBranch, sHostArch): 236 return False; 237 return True; 72 238 73 239 … … 87 253 # 88 254 aoStmts = oVariation.aoStmtsForThreadedFunction # type: list(McStmt) 255 if NativeRecompFunctionVariation.checkStatements(aoStmts, sHostArch): 256 return NativeRecompFunctionVariation(oVariation, sHostArch); 89 257 90 258 # The simplest case are the IEM_MC_DEFER_TO_CIMPL_*_RET_THREADED ones, just pass them thru: 91 if ( len(aoStmts) == 1 92 and aoStmts[0].sName.startswith('IEM_MC_DEFER_TO_CIMPL_') 93 and aoStmts[0].sName.endswith('_RET_THREADED')): 94 return NativeRecompFunctionVariation(oVariation, sHostArch); 259 #if ( len(aoStmts) == 1 260 # and aoStmts[0].sName.startswith('IEM_MC_DEFER_TO_CIMPL_') 261 # and aoStmts[0].sName.endswith('_RET_THREADED')): 262 # return NativeRecompFunctionVariation(oVariation, sHostArch); 263 264 265 # g_dMcStmtParsers 266 95 267 96 268 return None; -
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r101370 r101387 48 48 #define IEM_WITH_OPAQUE_DECODER_STATE 49 49 #define VMCPU_INCL_CPUM_GST_CTX 50 #define VMM_INCLUDED_SRC_include_IEMMc_h /* block IEMMc.h inclusion. */ 50 51 #include <VBox/vmm/iem.h> 51 52 #include <VBox/vmm/cpum.h> … … 1126 1127 * Called before starting a new recompile job. 1127 1128 */ 1128 static PIEMRECOMPILERSTATE iemNativeReInit(PIEMRECOMPILERSTATE pReNative )1129 static PIEMRECOMPILERSTATE iemNativeReInit(PIEMRECOMPILERSTATE pReNative, PCIEMTB pTb) 1129 1130 { 1130 1131 pReNative->cLabels = 0; 1131 1132 pReNative->cFixups = 0; 1133 pReNative->pTbOrg = pTb; 1132 1134 return pReNative; 1133 1135 } … … 1142 1144 * @param pVCpu The cross context virtual CPU structure of the calling 1143 1145 * thread. 1146 * @param pTb The TB that's about to be recompiled. 1144 1147 * @thread EMT(pVCpu) 1145 1148 */ 1146 static PIEMRECOMPILERSTATE iemNativeInit(PVMCPUCC pVCpu )1149 static PIEMRECOMPILERSTATE iemNativeInit(PVMCPUCC pVCpu, PCIEMTB pTb) 1147 1150 { 1148 1151 VMCPU_ASSERT_EMT(pVCpu); … … 1172 1175 */ 1173 1176 pVCpu->iem.s.pNativeRecompilerStateR3 = pReNative; 1174 return iemNativeReInit(pReNative );1177 return iemNativeReInit(pReNative, pTb); 1175 1178 } 1176 1179 … … 1906 1909 1907 1910 1911 #if 0 1912 /** Same as iemRegFinishClearingRF. */ 1913 DECLINLINE(uint32_t) iemNativeEmitFinishClearingRF(PIEMRECOMPILERSTATE pReNative, uint32_t off) 1914 { 1915 RT_NOREF(pReNative, off); 1916 #if 0 1917 uint32_t const fFlags = pReNative->pTbOrg->fFlags; 1918 if (fFlags & IEMTB_F_INHIBIT_SHADOW) 1919 { 1920 } 1921 IEMTB_F_IEM_F_MASK 1922 1923 // 1924 if (RT_LIKELY(!( pVCpu->cpum.GstCtx.eflags.uBoth 1925 & (X86_EFL_TF | X86_EFL_RF | CPUMCTX_INHIBIT_SHADOW | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) )) 1926 return VINF_SUCCESS; 1927 return iemFinishInstructionWithFlagsSet(pVCpu); 1928 #else 1929 return UINT32_MAX; 1930 #endif 1931 } 1932 1933 1934 /** Same as iemRegAddToEip32AndFinishingClearingRF. */ 1935 DECLINLINE(uint32_t) iemNativeEmitAddToEip32AndFinishingClearingRF(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t cbInstr) 1936 { 1937 /* Increment RIP. */ 1938 pVCpu->cpum.GstCtx.rip = (uint32_t)(pVCpu->cpum.GstCtx.eip + cbInstr); 1939 1940 /* Consider flags. */ 1941 return iemNativeEmitFinishClearingRF(pReNative, off); 1942 } 1943 #endif 1944 1908 1945 /* 1909 1946 * MC definitions for the native recompiler. … … 1921 1958 #define IEM_MC_DEFER_TO_CIMPL_3_RET_THREADED(a_cbInstr, a_fFlags, a_pfnCImpl, a0, a1, a2) \ 1922 1959 return iemNativeEmitCImplCall3(pReNative, off, pCallEntry->idxInstr, (uintptr_t)a_pfnCImpl, a_cbInstr, a0, a1, a2) 1960 1961 1962 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fFlags) { 1963 1964 #define IEM_MC_END() } AssertFailedReturn(UINT32_MAX /* shouldn't be reached! */) 1965 1966 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16(a_cbInstr) \ 1967 return iemNativeEmitAddToIp16AndFinishingClearingRF(pReNative, off, a_cbInstr) 1968 1969 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32(a_cbInstr) \ 1970 return iemNativeEmitAddToEip32AndFinishingClearingRF(pReNative, off, a_cbInstr) 1971 1972 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64(a_cbInstr) \ 1973 return iemNativeEmitAddToRip64AndFinishingClearingRF(pReNative, off, a_cbInstr) 1974 1923 1975 1924 1976 /* … … 1965 2017 PIEMRECOMPILERSTATE pReNative = pVCpu->iem.s.pNativeRecompilerStateR3; 1966 2018 if (RT_LIKELY(pReNative)) 1967 iemNativeReInit(pReNative );2019 iemNativeReInit(pReNative, pTb); 1968 2020 else 1969 2021 { 1970 pReNative = iemNativeInit(pVCpu );2022 pReNative = iemNativeInit(pVCpu, pTb); 1971 2023 AssertReturn(pReNative, pTb); 1972 2024 } -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdFuncs.cpp
r100811 r101387 80 80 * and only used when we're in 16-bit code on a pre-386 CPU. */ 81 81 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16(a_cbInstr) \ 82 return iemRegAddToIp16AndFinishing ClearingRF(pVCpu, a_cbInstr)82 return iemRegAddToIp16AndFinishingNoFlags(pVCpu, a_cbInstr) 83 83 84 84 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 85 85 * and used for 16-bit and 32-bit code on 386 and later CPUs. */ 86 86 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32(a_cbInstr) \ 87 return iemRegAddToEip32AndFinishing ClearingRF(pVCpu, a_cbInstr)87 return iemRegAddToEip32AndFinishingNoFlags(pVCpu, a_cbInstr) 88 88 89 89 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 90 90 * and only used when we're in 64-bit code. */ 91 91 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64(a_cbInstr) \ 92 return iemRegAddToRip64AndFinishingNoFlags(pVCpu, a_cbInstr) 93 94 95 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 96 * and only used when we're in 16-bit code on a pre-386 CPU and we need to 97 * check and clear flags. */ 98 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_cbInstr) \ 99 return iemRegAddToIp16AndFinishingClearingRF(pVCpu, a_cbInstr) 100 101 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 102 * and used for 16-bit and 32-bit code on 386 and later CPUs and we need to 103 * check and clear flags. */ 104 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_cbInstr) \ 105 return iemRegAddToEip32AndFinishingClearingRF(pVCpu, a_cbInstr) 106 107 /** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param 108 * and only used when we're in 64-bit code and we need to check and clear 109 * flags. */ 110 #define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_cbInstr) \ 92 111 return iemRegAddToRip64AndFinishingClearingRF(pVCpu, a_cbInstr) 93 112 … … 98 117 * parameter, for use in 16-bit code on a pre-386 CPU. */ 99 118 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16(a_i8, a_cbInstr) \ 100 return iemRegIp16RelativeJumpS8AndFinish ClearingRF(pVCpu, a_cbInstr, (a_i8))119 return iemRegIp16RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8)) 101 120 102 121 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand … … 104 123 * later CPUs. */ 105 124 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32(a_i8, a_cbInstr, a_enmEffOpSize) \ 106 return iemRegEip32RelativeJumpS8AndFinish ClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)125 return iemRegEip32RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize) 107 126 108 127 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 109 128 * size as extra parameters, for use in 64-bit code. */ 110 129 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64(a_i8, a_cbInstr, a_enmEffOpSize) \ 130 return iemRegRip64RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize) 131 132 133 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length as extra 134 * parameter, for use in 16-bit code on a pre-386 CPU and we need to check and 135 * clear flags. */ 136 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i8, a_cbInstr) \ 137 return iemRegIp16RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8)) 138 139 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 140 * size as extra parameters, for use in 16-bit and 32-bit code on 386 and 141 * later CPUs and we need to check and clear flags. */ 142 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize) \ 143 return iemRegEip32RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize) 144 145 /** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand 146 * size as extra parameters, for use in 64-bit code and we need to check and 147 * clear flags. */ 148 #define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize) \ 111 149 return iemRegRip64RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize) 112 150 … … 117 155 * param, for use in 16-bit code on a pre-386 CPU. */ 118 156 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16(a_i16, a_cbInstr) \ 119 return iemRegEip32RelativeJumpS16AndFinish ClearingRF(pVCpu, a_cbInstr, (a_i16))157 return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16)) 120 158 121 159 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 122 160 * param, for use in 16-bit and 32-bit code on 386 and later CPUs. */ 123 161 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32(a_i16, a_cbInstr) \ 124 return iemRegEip32RelativeJumpS16AndFinish ClearingRF(pVCpu, a_cbInstr, (a_i16))162 return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16)) 125 163 126 164 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 127 165 * param, for use in 64-bit code. */ 128 166 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64(a_i16, a_cbInstr) \ 167 return iemRegRip64RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16)) 168 169 170 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 171 * param, for use in 16-bit code on a pre-386 CPU and we need to check and 172 * clear flags. */ 173 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i16, a_cbInstr) \ 174 return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16)) 175 176 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 177 * param, for use in 16-bit and 32-bit code on 386 and later CPUs and we need 178 * to check and clear flags. */ 179 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i16, a_cbInstr) \ 180 return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16)) 181 182 /** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as 183 * param, for use in 64-bit code and we need to check and clear flags. */ 184 #define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i16, a_cbInstr) \ 129 185 return iemRegRip64RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16)) 130 186 … … 141 197 * an extra parameter, for use in 16-bit and 32-bit code on 386+. */ 142 198 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32(a_i32, a_cbInstr) \ 143 return iemRegEip32RelativeJumpS32AndFinish ClearingRF(pVCpu, a_cbInstr, (a_i32))199 return iemRegEip32RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32)) 144 200 145 201 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 146 202 * an extra parameter, for use in 64-bit code. */ 147 203 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64(a_i32, a_cbInstr) \ 204 return iemRegRip64RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32)) 205 206 207 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 208 * an extra parameter - dummy for pre-386 variations not eliminated by the 209 * python script. */ 210 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i32, a_cbInstr) \ 211 do { RT_NOREF(pVCpu, a_i32, a_cbInstr); AssertFailedReturn(VERR_IEM_IPE_9); } while (0) 212 213 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 214 * an extra parameter, for use in 16-bit and 32-bit code on 386+ and we need 215 * to check and clear flags. */ 216 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i32, a_cbInstr) \ 217 return iemRegEip32RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32)) 218 219 /** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as 220 * an extra parameter, for use in 64-bit codeand we need to check and clear 221 * flags. */ 222 #define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i32, a_cbInstr) \ 148 223 return iemRegRip64RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32)) 149 224 … … 155 230 (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr16(pVCpu, a_bRm, a_u16Disp) 156 231 157 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, pre-386 16-bit. */158 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_PRE386(a_GCPtrEff, a_bRm, a_u16Disp) \159 IEM_MC_CALC_RM_EFF_ADDR_THREADED_16(a_GCPtrEff, a_bRm, a_u16Disp)160 161 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 32-bit with address prefix. */162 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_ADDR16(a_GCPtrEff, a_bRm, a_u16Disp) \163 IEM_MC_CALC_RM_EFF_ADDR_THREADED_16(a_GCPtrEff, a_bRm, a_u16Disp)164 165 166 232 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 32-bit. */ 167 233 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_32(a_GCPtrEff, a_bRm, a_uSibAndRspOffset, a_u32Disp) \ 168 234 (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr32(pVCpu, a_bRm, a_uSibAndRspOffset, a_u32Disp) 169 170 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 32-bit flat. */171 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_FLAT(a_GCPtrEff, a_bRm, a_uSibAndRspOffset, a_u32Disp) \172 (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr32(pVCpu, a_bRm, a_uSibAndRspOffset, a_u32Disp)173 174 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 16-bit with address prefix. */175 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_ADDR32(a_GCPtrEff, a_bRm, a_uSibAndRspOffset, a_u32Disp) \176 (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr32(pVCpu, a_bRm, a_uSibAndRspOffset, a_u32Disp)177 178 235 179 236 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters. */ -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py
r101305 r101387 41 41 import sys; 42 42 import argparse; 43 from typing import Dict, List; 43 44 44 45 import IEMAllInstPython as iai; … … 134 135 ksVariation_Default = ''; ##< No variations - only used by IEM_MC_DEFER_TO_CIMPL_X_RET. 135 136 ksVariation_16 = '_16'; ##< 16-bit mode code (386+). 137 ksVariation_16f = '_16f'; ##< 16-bit mode code (386+), check+clear eflags. 136 138 ksVariation_16_Addr32 = '_16_Addr32'; ##< 16-bit mode code (386+), address size prefixed to 32-bit addressing. 139 ksVariation_16f_Addr32 = '_16f_Addr32'; ##< 16-bit mode code (386+), address size prefixed to 32-bit addressing, eflags. 137 140 ksVariation_16_Pre386 = '_16_Pre386'; ##< 16-bit mode code, pre-386 CPU target. 141 ksVariation_16f_Pre386 = '_16f_Pre386'; ##< 16-bit mode code, pre-386 CPU target, check+clear eflags. 138 142 ksVariation_32 = '_32'; ##< 32-bit mode code (386+). 143 ksVariation_32f = '_32f'; ##< 32-bit mode code (386+), check+clear eflags. 139 144 ksVariation_32_Flat = '_32_Flat'; ##< 32-bit mode code (386+) with CS, DS, E,S and SS flat and 4GB wide. 145 ksVariation_32f_Flat = '_32f_Flat'; ##< 32-bit mode code (386+) with CS, DS, E,S and SS flat and 4GB wide, eflags. 140 146 ksVariation_32_Addr16 = '_32_Addr16'; ##< 32-bit mode code (386+), address size prefixed to 16-bit addressing. 147 ksVariation_32f_Addr16 = '_32f_Addr16'; ##< 32-bit mode code (386+), address size prefixed to 16-bit addressing, eflags. 141 148 ksVariation_64 = '_64'; ##< 64-bit mode code. 149 ksVariation_64f = '_64f'; ##< 64-bit mode code, check+clear eflags. 142 150 ksVariation_64_FsGs = '_64_FsGs'; ##< 64-bit mode code, with memory accesses via FS or GS. 151 ksVariation_64f_FsGs = '_64f_FsGs'; ##< 64-bit mode code, with memory accesses via FS or GS, check+clear eflags. 143 152 ksVariation_64_Addr32 = '_64_Addr32'; ##< 64-bit mode code, address size prefixed to 32-bit addressing. 153 ksVariation_64f_Addr32 = '_64f_Addr32'; ##< 64-bit mode code, address size prefixed to 32-bit addressing, c+c eflags. 144 154 kasVariations = ( 145 155 ksVariation_Default, 146 156 ksVariation_16, 157 ksVariation_16f, 147 158 ksVariation_16_Addr32, 159 ksVariation_16f_Addr32, 148 160 ksVariation_16_Pre386, 161 ksVariation_16f_Pre386, 149 162 ksVariation_32, 163 ksVariation_32f, 150 164 ksVariation_32_Flat, 165 ksVariation_32f_Flat, 151 166 ksVariation_32_Addr16, 167 ksVariation_32f_Addr16, 152 168 ksVariation_64, 169 ksVariation_64f, 153 170 ksVariation_64_FsGs, 171 ksVariation_64f_FsGs, 154 172 ksVariation_64_Addr32, 173 ksVariation_64f_Addr32, 155 174 ); 156 175 kasVariationsWithoutAddress = ( 157 176 ksVariation_16, 177 ksVariation_16f, 158 178 ksVariation_16_Pre386, 179 ksVariation_16f_Pre386, 159 180 ksVariation_32, 181 ksVariation_32f, 160 182 ksVariation_64, 183 ksVariation_64f, 161 184 ); 162 185 kasVariationsWithoutAddressNot286 = ( 163 186 ksVariation_16, 187 ksVariation_16f, 164 188 ksVariation_32, 189 ksVariation_32f, 165 190 ksVariation_64, 191 ksVariation_64f, 166 192 ); 167 193 kasVariationsWithoutAddressNot286Not64 = ( 168 194 ksVariation_16, 195 ksVariation_16f, 169 196 ksVariation_32, 197 ksVariation_32f, 170 198 ); 171 199 kasVariationsWithoutAddressNot64 = ( 172 200 ksVariation_16, 201 ksVariation_16f, 173 202 ksVariation_16_Pre386, 203 ksVariation_16f_Pre386, 174 204 ksVariation_32, 205 ksVariation_32f, 175 206 ); 176 207 kasVariationsWithoutAddressOnly64 = ( 177 208 ksVariation_64, 209 ksVariation_64f, 178 210 ); 179 211 kasVariationsWithAddress = ( 180 212 ksVariation_16, 213 ksVariation_16f, 181 214 ksVariation_16_Addr32, 215 ksVariation_16f_Addr32, 182 216 ksVariation_16_Pre386, 217 ksVariation_16f_Pre386, 183 218 ksVariation_32, 219 ksVariation_32f, 184 220 ksVariation_32_Flat, 221 ksVariation_32f_Flat, 185 222 ksVariation_32_Addr16, 223 ksVariation_32f_Addr16, 186 224 ksVariation_64, 225 ksVariation_64f, 187 226 ksVariation_64_FsGs, 227 ksVariation_64f_FsGs, 188 228 ksVariation_64_Addr32, 229 ksVariation_64f_Addr32, 189 230 ); 190 231 kasVariationsWithAddressNot286 = ( 191 232 ksVariation_16, 233 ksVariation_16f, 192 234 ksVariation_16_Addr32, 235 ksVariation_16f_Addr32, 193 236 ksVariation_32, 237 ksVariation_32f, 194 238 ksVariation_32_Flat, 239 ksVariation_32f_Flat, 195 240 ksVariation_32_Addr16, 241 ksVariation_32f_Addr16, 196 242 ksVariation_64, 243 ksVariation_64f, 197 244 ksVariation_64_FsGs, 245 ksVariation_64f_FsGs, 198 246 ksVariation_64_Addr32, 247 ksVariation_64f_Addr32, 199 248 ); 200 249 kasVariationsWithAddressNot286Not64 = ( 201 250 ksVariation_16, 251 ksVariation_16f, 202 252 ksVariation_16_Addr32, 253 ksVariation_16f_Addr32, 203 254 ksVariation_32, 255 ksVariation_32f, 204 256 ksVariation_32_Flat, 257 ksVariation_32f_Flat, 205 258 ksVariation_32_Addr16, 259 ksVariation_32f_Addr16, 206 260 ); 207 261 kasVariationsWithAddressNot64 = ( 208 262 ksVariation_16, 263 ksVariation_16f, 209 264 ksVariation_16_Addr32, 265 ksVariation_16f_Addr32, 210 266 ksVariation_16_Pre386, 267 ksVariation_16f_Pre386, 211 268 ksVariation_32, 269 ksVariation_32f, 212 270 ksVariation_32_Flat, 271 ksVariation_32f_Flat, 213 272 ksVariation_32_Addr16, 273 ksVariation_32f_Addr16, 214 274 ); 215 275 kasVariationsWithAddressOnly64 = ( 216 276 ksVariation_64, 277 ksVariation_64f, 217 278 ksVariation_64_FsGs, 279 ksVariation_64f_FsGs, 218 280 ksVariation_64_Addr32, 281 ksVariation_64f_Addr32, 282 ); 283 kasVariationsOnlyPre386 = ( 284 ksVariation_16_Pre386, 285 ksVariation_16f_Pre386, 219 286 ); 220 287 kasVariationsEmitOrder = ( 221 288 ksVariation_Default, 222 289 ksVariation_64, 290 ksVariation_64f, 223 291 ksVariation_64_FsGs, 292 ksVariation_64f_FsGs, 224 293 ksVariation_32_Flat, 294 ksVariation_32f_Flat, 225 295 ksVariation_32, 296 ksVariation_32f, 226 297 ksVariation_16, 298 ksVariation_16f, 227 299 ksVariation_16_Addr32, 300 ksVariation_16f_Addr32, 228 301 ksVariation_16_Pre386, 302 ksVariation_16f_Pre386, 229 303 ksVariation_32_Addr16, 304 ksVariation_32f_Addr16, 230 305 ksVariation_64_Addr32, 306 ksVariation_64f_Addr32, 231 307 ); 232 308 kdVariationNames = { 233 309 ksVariation_Default: 'defer-to-cimpl', 234 310 ksVariation_16: '16-bit', 311 ksVariation_16f: '16-bit w/ eflag checking and clearing', 235 312 ksVariation_16_Addr32: '16-bit w/ address prefix (Addr32)', 313 ksVariation_16f_Addr32: '16-bit w/ address prefix (Addr32) and eflag checking and clearing', 236 314 ksVariation_16_Pre386: '16-bit on pre-386 CPU', 315 ksVariation_16f_Pre386: '16-bit on pre-386 CPU w/ eflag checking and clearing', 237 316 ksVariation_32: '32-bit', 317 ksVariation_32f: '32-bit w/ eflag checking and clearing', 238 318 ksVariation_32_Flat: '32-bit flat and wide open CS, SS, DS and ES', 319 ksVariation_32f_Flat: '32-bit flat and wide open CS, SS, DS and ES w/ eflag checking and clearing', 239 320 ksVariation_32_Addr16: '32-bit w/ address prefix (Addr16)', 321 ksVariation_32f_Addr16: '32-bit w/ address prefix (Addr16) and eflag checking and clearing', 240 322 ksVariation_64: '64-bit', 323 ksVariation_64f: '64-bit w/ eflag checking and clearing', 241 324 ksVariation_64_FsGs: '64-bit with memory accessed via FS or GS', 325 ksVariation_64f_FsGs: '64-bit with memory accessed via FS or GS and eflag checking and clearing', 242 326 ksVariation_64_Addr32: '64-bit w/ address prefix (Addr32)', 243 327 ksVariation_64f_Addr32: '64-bit w/ address prefix (Addr32) and eflag checking and clearing', 328 }; 329 kdVariationsWithEflagsCheckingAndClearing = { 330 ksVariation_16f: True, 331 ksVariation_16f_Addr32: True, 332 ksVariation_16f_Pre386: True, 333 ksVariation_32f: True, 334 ksVariation_32f_Flat: True, 335 ksVariation_32f_Addr16: True, 336 ksVariation_64f: True, 337 ksVariation_64f_FsGs: True, 338 ksVariation_64f_Addr32: True, 339 }; 340 kdVariationsWithFlatAddress = { 341 ksVariation_32_Flat: True, 342 ksVariation_32f_Flat: True, 343 ksVariation_64: True, 344 ksVariation_64f: True, 345 }; 346 kdVariationsWithFlatAddr16 = { 347 ksVariation_16: True, 348 ksVariation_16f: True, 349 ksVariation_16_Pre386: True, 350 ksVariation_16f_Pre386: True, 351 ksVariation_32_Addr16: True, 352 ksVariation_32f_Addr16: True, 353 }; 354 kdVariationsWithFlatAddr32No64 = { 355 ksVariation_16_Addr32: True, 356 ksVariation_16f_Addr32: True, 357 ksVariation_32: True, 358 ksVariation_32f: True, 359 ksVariation_32_Flat: True, 360 ksVariation_32f_Flat: True, 244 361 }; 245 362 ## @} … … 251 368 ## @note iemThreadedRecompilerMcDeferToCImpl0 duplicates info found here. 252 369 kdCImplFlags = { 253 'IEM_CIMPL_F_MODE': False, 254 'IEM_CIMPL_F_BRANCH_DIRECT': False, 255 'IEM_CIMPL_F_BRANCH_INDIRECT': False, 256 'IEM_CIMPL_F_BRANCH_RELATIVE': False, 257 'IEM_CIMPL_F_BRANCH_FAR': True, 258 'IEM_CIMPL_F_BRANCH_CONDITIONAL': False, 259 'IEM_CIMPL_F_RFLAGS': False, 260 'IEM_CIMPL_F_CHECK_IRQ_AFTER': False, 261 'IEM_CIMPL_F_CHECK_IRQ_BEFORE': False, 262 'IEM_CIMPL_F_STATUS_FLAGS': False, 263 'IEM_CIMPL_F_VMEXIT': False, 264 'IEM_CIMPL_F_FPU': False, 265 'IEM_CIMPL_F_REP': False, 266 'IEM_CIMPL_F_IO': False, 267 'IEM_CIMPL_F_END_TB': True, 268 'IEM_CIMPL_F_XCPT': True, 370 'IEM_CIMPL_F_MODE': False, 371 'IEM_CIMPL_F_BRANCH_DIRECT': False, 372 'IEM_CIMPL_F_BRANCH_INDIRECT': False, 373 'IEM_CIMPL_F_BRANCH_RELATIVE': False, 374 'IEM_CIMPL_F_BRANCH_FAR': True, 375 'IEM_CIMPL_F_BRANCH_CONDITIONAL': False, 376 # IEM_CIMPL_F_BRANCH_ANY should only be used for testing, so not included here. 377 'IEM_CIMPL_F_RFLAGS': False, 378 'IEM_CIMPL_F_INHIBIT_SHADOW': False, 379 'IEM_CIMPL_F_CHECK_IRQ_AFTER': False, 380 'IEM_CIMPL_F_CHECK_IRQ_BEFORE': False, 381 'IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER': False, # (ignore) 382 'IEM_CIMPL_F_STATUS_FLAGS': False, 383 'IEM_CIMPL_F_VMEXIT': False, 384 'IEM_CIMPL_F_FPU': False, 385 'IEM_CIMPL_F_REP': False, 386 'IEM_CIMPL_F_IO': False, 387 'IEM_CIMPL_F_END_TB': True, 388 'IEM_CIMPL_F_XCPT': True, 269 389 }; 270 390 … … 275 395 276 396 ## Threaded function parameter references. 277 self.aoParamRefs = [] # type: list(ThreadedParamRef)397 self.aoParamRefs = [] # type: List[ThreadedParamRef] 278 398 ## Unique parameter references. 279 self.dParamRefs = {} # type: dict(str,list(ThreadedParamRef))399 self.dParamRefs = {} # type: Dict[str, List[ThreadedParamRef]] 280 400 ## Minimum number of parameters to the threaded function. 281 401 self.cMinParams = 0; 282 402 283 403 ## List/tree of statements for the threaded function. 284 self.aoStmtsForThreadedFunction = [] # type: list(McStmt) 285 286 ## Dictionary with any IEM_CIMPL_F_XXX flags associated to the code block. 287 self.dsCImplFlags = { } # type: dict(str, bool) 404 self.aoStmtsForThreadedFunction = [] # type: List[McStmt] 288 405 289 406 ## Function enum number, for verification. Set by generateThreadedFunctionsHeader. … … 554 671 }; 555 672 673 kdThreadedCalcRmEffAddrMcByVariation = { 674 ksVariation_16: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16', 675 ksVariation_16f: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16', 676 ksVariation_16_Pre386: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16', 677 ksVariation_16f_Pre386: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16', 678 ksVariation_32_Addr16: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16', 679 ksVariation_32f_Addr16: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16', 680 ksVariation_16_Addr32: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32', 681 ksVariation_16f_Addr32: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32', 682 ksVariation_32: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32', 683 ksVariation_32f: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32', 684 ksVariation_32_Flat: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32', 685 ksVariation_32f_Flat: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32', 686 ksVariation_64: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64', 687 ksVariation_64f: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64', 688 ksVariation_64_FsGs: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_FSGS', 689 ksVariation_64f_FsGs: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_FSGS', 690 ksVariation_64_Addr32: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_ADDR32', ## @todo How did this work again... 691 ksVariation_64f_Addr32: 'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_ADDR32', 692 }; 693 556 694 def analyzeMorphStmtForThreaded(self, aoStmts, iParamRef = 0): 557 695 """ … … 602 740 # Morph IEM_MC_CALC_RM_EFF_ADDR into IEM_MC_CALC_RM_EFF_ADDR_THREADED ... 603 741 if oNewStmt.sName == 'IEM_MC_CALC_RM_EFF_ADDR': 604 assert self.sVariation != self.ksVariation_Default; 605 oNewStmt.sName = 'IEM_MC_CALC_RM_EFF_ADDR_THREADED' + self.sVariation.upper(); 742 oNewStmt.sName = self.kdThreadedCalcRmEffAddrMcByVariation[self.sVariation]; 606 743 assert len(oNewStmt.asParams) == 3; 607 744 608 if self.sVariation in (self.ksVariation_16, self.ksVariation_16_Pre386, self.ksVariation_32_Addr16):745 if self.sVariation in self.kdVariationsWithFlatAddr16: 609 746 oNewStmt.asParams = [ 610 747 oNewStmt.asParams[0], oNewStmt.asParams[1], self.dParamRefs['u16Disp'][0].sNewName, … … 615 752 sSibAndMore = '(%s) | ((%s) & 0x0f00)' % (self.dParamRefs['bSib'][0].sNewName, oStmt.asParams[2]); 616 753 617 if self.sVariation in (self.ksVariation_32, self.ksVariation_32_Flat, self.ksVariation_16_Addr32):754 if self.sVariation in self.kdVariationsWithFlatAddr32No64: 618 755 oNewStmt.asParams = [ 619 756 oNewStmt.asParams[0], oNewStmt.asParams[1], sSibAndMore, self.dParamRefs['u32Disp'][0].sNewName, … … 624 761 self.dParamRefs['u32Disp'][0].sNewName, self.dParamRefs['cbInstr'][0].sNewName, 625 762 ]; 626 # ... and IEM_MC_ADVANCE_RIP_AND_FINISH into *_THREADED and maybe *_LM64/_NOT64...763 # ... and IEM_MC_ADVANCE_RIP_AND_FINISH into *_THREADED_PCxx[_WITH_FLAGS] ... 627 764 elif oNewStmt.sName in ('IEM_MC_ADVANCE_RIP_AND_FINISH', 'IEM_MC_REL_JMP_S8_AND_FINISH', 628 765 'IEM_MC_REL_JMP_S16_AND_FINISH', 'IEM_MC_REL_JMP_S32_AND_FINISH'): 629 766 oNewStmt.asParams.append(self.dParamRefs['cbInstr'][0].sNewName); 630 767 if ( oNewStmt.sName in ('IEM_MC_REL_JMP_S8_AND_FINISH', ) 631 and self.sVariation != self.ksVariation_16_Pre386):768 and self.sVariation not in (self.ksVariation_16_Pre386, self.ksVariation_16f_Pre386,)): 632 769 oNewStmt.asParams.append(self.dParamRefs['pVCpu->iem.s.enmEffOpSize'][0].sNewName); 633 770 oNewStmt.sName += '_THREADED'; 634 if self.sVariation in (self.ksVariation_64, self.ksVariation_64_FsGs,self.ksVariation_64_Addr32):771 if self.sVariation in (self.ksVariation_64, self.ksVariation_64_FsGs, self.ksVariation_64_Addr32): 635 772 oNewStmt.sName += '_PC64'; 773 elif self.sVariation in (self.ksVariation_64f, self.ksVariation_64f_FsGs, self.ksVariation_64f_Addr32): 774 oNewStmt.sName += '_PC64_WITH_FLAGS'; 636 775 elif self.sVariation == self.ksVariation_16_Pre386: 637 776 oNewStmt.sName += '_PC16'; 638 elif self.sVariation != self.ksVariation_Default: 777 elif self.sVariation == self.ksVariation_16f_Pre386: 778 oNewStmt.sName += '_PC16_WITH_FLAGS'; 779 elif self.sVariation not in self.kdVariationsWithEflagsCheckingAndClearing: 780 assert self.sVariation != self.ksVariation_Default; 639 781 oNewStmt.sName += '_PC32'; 782 else: 783 oNewStmt.sName += '_PC32_WITH_FLAGS'; 640 784 641 785 # ... and IEM_MC_*_GREG_U8 into *_THREADED w/ reworked index taking REX into account … … 651 795 652 796 # ... and in FLAT modes we must morph memory access into FLAT accesses ... 653 elif ( self.sVariation in (self.ksVariation_64, self.ksVariation_32_Flat,)797 elif ( self.sVariation in self.kdVariationsWithFlatAddress 654 798 and ( oNewStmt.sName.startswith('IEM_MC_FETCH_MEM') 655 799 or (oNewStmt.sName.startswith('IEM_MC_STORE_MEM_') and oNewStmt.sName.find('_BY_REF') < 0) … … 665 809 666 810 # ... PUSH and POP also needs flat variants, but these differ a little. 667 elif ( self.sVariation in (self.ksVariation_64, self.ksVariation_32_Flat,)811 elif ( self.sVariation in self.kdVariationsWithFlatAddress 668 812 and ( (oNewStmt.sName.startswith('IEM_MC_PUSH') and oNewStmt.sName.find('_FPU') < 0) 669 813 or oNewStmt.sName.startswith('IEM_MC_POP'))): 670 oNewStmt.sName = self.kdMemMcToFlatInfoStack[oNewStmt.sName][int(self.sVariation == self.ksVariation_64)]; 814 oNewStmt.sName = self.kdMemMcToFlatInfoStack[oNewStmt.sName][int(self.sVariation in (self.ksVariation_64, 815 self.ksVariation_64f,))]; 671 816 672 817 … … 678 823 679 824 return (aoThreadedStmts, iParamRef); 680 681 682 def analyzeCodeOperation(self, aoStmts, fSeenConditional = False):683 """684 Analyzes the code looking clues as to additional side-effects.685 686 Currently this is simply looking for any IEM_IMPL_C_F_XXX flags and687 collecting these in self.dsCImplFlags.688 """689 for oStmt in aoStmts:690 # Pick up hints from CIMPL calls and deferals.691 if oStmt.sName.startswith('IEM_MC_CALL_CIMPL_') or oStmt.sName.startswith('IEM_MC_DEFER_TO_CIMPL_'):692 sFlagsSansComments = iai.McBlock.stripComments(oStmt.asParams[0]);693 for sFlag in sFlagsSansComments.split('|'):694 sFlag = sFlag.strip();695 if sFlag != '0':696 if sFlag in self.kdCImplFlags:697 self.dsCImplFlags[sFlag] = True;698 elif sFlag == 'IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER':699 self.dsCImplFlags['IEM_CIMPL_F_CHECK_IRQ_BEFORE'] = True;700 self.dsCImplFlags['IEM_CIMPL_F_CHECK_IRQ_AFTER'] = True;701 else:702 self.raiseProblem('Unknown CIMPL flag value: %s' % (sFlag,));703 704 # Set IEM_IMPL_C_F_BRANCH if we see any branching MCs.705 elif oStmt.sName.startswith('IEM_MC_SET_RIP'):706 assert not fSeenConditional;707 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_INDIRECT'] = True;708 elif oStmt.sName.startswith('IEM_MC_REL_JMP'):709 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_RELATIVE'] = True;710 if fSeenConditional:711 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_CONDITIONAL'] = True;712 713 # Process branches of conditionals recursively.714 if isinstance(oStmt, iai.McStmtCond):715 self.analyzeCodeOperation(oStmt.aoIfBranch, True);716 if oStmt.aoElseBranch:717 self.analyzeCodeOperation(oStmt.aoElseBranch, True);718 719 return True;720 825 721 826 … … 760 865 761 866 # Organize them by size too for the purpose of optimize them. 762 dBySize = {} # type: dict(str,str)867 dBySize = {} # type: Dict[str, str] 763 868 for sStdRef, aoRefs in self.dParamRefs.items(): 764 869 if aoRefs[0].sType[0] != 'P': … … 829 934 830 935 if ( oStmt.sName in ('IEM_MC_REL_JMP_S8_AND_FINISH',) 831 and self.sVariation != self.ksVariation_16_Pre386):936 and self.sVariation not in (self.ksVariation_16_Pre386, self.ksVariation_16f_Pre386,)): 832 937 self.aoParamRefs.append(ThreadedParamRef('pVCpu->iem.s.enmEffOpSize', 'IEMMODE', oStmt)); 833 938 … … 837 942 assert oStmt.asParams[1] == 'bRm'; 838 943 839 if self.sVariation in (self.ksVariation_16, self.ksVariation_16_Pre386, self.ksVariation_32_Addr16):944 if self.sVariation in self.kdVariationsWithFlatAddr16: 840 945 self.aoParamRefs.append(ThreadedParamRef('bRm', 'uint8_t', oStmt)); 841 946 self.aoParamRefs.append(ThreadedParamRef('(uint16_t)uEffAddrInfo' , 842 947 'uint16_t', oStmt, sStdRef = 'u16Disp')); 843 elif self.sVariation in (self.ksVariation_32, self.ksVariation_32_Flat, self.ksVariation_16_Addr32):948 elif self.sVariation in self.kdVariationsWithFlatAddr32No64: 844 949 self.aoParamRefs.append(ThreadedParamRef('bRm', 'uint8_t', oStmt)); 845 950 self.aoParamRefs.append(ThreadedParamRef('(uint8_t)(uEffAddrInfo >> 32)', … … 848 953 'uint32_t', oStmt, sStdRef = 'u32Disp')); 849 954 else: 850 assert self.sVariation in (self.ksVariation_64, self.ksVariation_64_FsGs, self.ksVariation_64_Addr32);955 assert self.sVariation in self.kasVariationsWithAddressOnly64; 851 956 self.aoParamRefs.append(ThreadedParamRef('IEM_GET_MODRM_EX(pVCpu, bRm)', 852 957 'uint8_t', oStmt, sStdRef = 'bRmEx')); … … 866 971 867 972 # If in flat mode variation, ignore the effective segment parameter to memory MCs. 868 if ( self.sVariation in (self.ksVariation_64, self.ksVariation_32_Flat,)973 if ( self.sVariation in self.kdVariationsWithFlatAddress 869 974 and oStmt.sName in self.kdMemMcToFlatInfo 870 975 and self.kdMemMcToFlatInfo[oStmt.sName][0] != -1): … … 1042 1147 self.analyzeConsolidateThreadedParamRefs(); 1043 1148 1044 # Scan the code for IEM_CIMPL_F_ and other clues.1045 self.analyzeCodeOperation(aoStmts);1046 1047 1149 # Morph the statement stream for the block into what we'll be using in the threaded function. 1048 1150 (self.aoStmtsForThreadedFunction, iParamRef) = self.analyzeMorphStmtForThreaded(aoStmts); … … 1060 1162 """ 1061 1163 aoStmts = [ 1062 iai.McCppCall('IEM_MC2_BEGIN_EMIT_CALLS', ['1' if 'IEM_CIMPL_F_CHECK_IRQ_BEFORE' in self.dsCImplFlags else '0'], 1164 iai.McCppCall('IEM_MC2_BEGIN_EMIT_CALLS', 1165 ['1' if 'IEM_CIMPL_F_CHECK_IRQ_BEFORE' in self.oParent.dsCImplFlags else '0'], 1063 1166 cchIndent = cchIndent), # Scope and a hook for various stuff. 1064 1167 ]; … … 1085 1188 # For CIMPL stuff, we need to consult the associated IEM_CIMPL_F_XXX 1086 1189 # mask and maybe emit additional checks. 1087 if ( 'IEM_CIMPL_F_MODE' in self. dsCImplFlags1088 or 'IEM_CIMPL_F_XCPT' in self. dsCImplFlags1089 or 'IEM_CIMPL_F_VMEXIT' in self. dsCImplFlags):1190 if ( 'IEM_CIMPL_F_MODE' in self.oParent.dsCImplFlags 1191 or 'IEM_CIMPL_F_XCPT' in self.oParent.dsCImplFlags 1192 or 'IEM_CIMPL_F_VMEXIT' in self.oParent.dsCImplFlags): 1090 1193 aoStmts.append(iai.McCppCall('IEM_MC2_EMIT_CALL_1', ( 'kIemThreadedFunc_BltIn_CheckMode', 'pVCpu->iem.s.fExec', ), 1091 1194 cchIndent = cchIndent)); 1092 1195 1093 sCImplFlags = ' | '.join(self. dsCImplFlags.keys());1196 sCImplFlags = ' | '.join(self.oParent.dsCImplFlags.keys()); 1094 1197 if not sCImplFlags: 1095 1198 sCImplFlags = '0' … … 1101 1204 asEndTbFlags = []; 1102 1205 asTbBranchedFlags = []; 1103 for sFlag in self. dsCImplFlags:1206 for sFlag in self.oParent.dsCImplFlags: 1104 1207 if self.kdCImplFlags[sFlag] is True: 1105 1208 asEndTbFlags.append(sFlag); … … 1114 1217 cchIndent = cchIndent)); 1115 1218 1116 if 'IEM_CIMPL_F_CHECK_IRQ_AFTER' in self. dsCImplFlags:1219 if 'IEM_CIMPL_F_CHECK_IRQ_AFTER' in self.oParent.dsCImplFlags: 1117 1220 aoStmts.append(iai.McCppGeneric('pVCpu->iem.s.cInstrTillIrqCheck = 0;', cchIndent = cchIndent)); 1118 1221 … … 1125 1228 """ 1126 1229 1127 def __init__(self, oMcBlock): 1128 self.oMcBlock = oMcBlock # type: IEMAllInstPython.McBlock 1230 def __init__(self, oMcBlock: iai.McBlock) -> None: 1231 self.oMcBlock = oMcBlock # type: iai.McBlock 1232 # The remaining fields are only useful after analyze() has been called: 1129 1233 ## Variations for this block. There is at least one. 1130 self.aoVariations = [] # type: list(ThreadedFunctionVariation)1234 self.aoVariations = [] # type: List[ThreadedFunctionVariation] 1131 1235 ## Variation dictionary containing the same as aoVariations. 1132 self.dVariations = {} # type: dict(str,ThreadedFunctionVariation)1236 self.dVariations = {} # type: Dict[str, ThreadedFunctionVariation] 1133 1237 ## Dictionary of local variables (IEM_MC_LOCAL[_CONST]) and call arguments (IEM_MC_ARG*). 1134 self.dVariables = {} # type: dict(str,McStmtVar) 1238 self.dVariables = {} # type: Dict[str, iai.McStmtVar] 1239 ## Dictionary with any IEM_CIMPL_F_XXX flags explicitly advertised in the code block 1240 ## and those determined by analyzeCodeOperation(). 1241 self.dsCImplFlags = {} # type: Dict[str, bool] 1135 1242 1136 1243 @staticmethod … … 1148 1255 print('%s:%s: warning: %s' % (self.oMcBlock.sSrcFile, self.oMcBlock.iBeginLine, sMessage, )); 1149 1256 1150 def analyzeFindVariablesAndCallArgs(self, aoStmts ):1257 def analyzeFindVariablesAndCallArgs(self, aoStmts: List[iai.McStmt]) -> bool: 1151 1258 """ Scans the statements for MC variables and call arguments. """ 1152 1259 for oStmt in aoStmts: … … 1166 1273 return True; 1167 1274 1275 def analyzeCodeOperation(self, aoStmts: List[iai.McStmt], fSeenConditional = False) -> bool: 1276 """ 1277 Analyzes the code looking clues as to additional side-effects. 1278 1279 Currently this is simply looking for branching and adding the relevant 1280 branch flags to dsCImplFlags. ASSUMES the caller pre-populates the 1281 dictionary with a copy of self.oMcBlock.dsCImplFlags. 1282 """ 1283 for oStmt in aoStmts: 1284 # Set IEM_IMPL_C_F_BRANCH if we see any branching MCs. 1285 if oStmt.sName.startswith('IEM_MC_SET_RIP'): 1286 assert not fSeenConditional; 1287 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_INDIRECT'] = True; 1288 elif oStmt.sName.startswith('IEM_MC_REL_JMP'): 1289 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_RELATIVE'] = True; 1290 if fSeenConditional: 1291 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_CONDITIONAL'] = True; 1292 1293 # Process branches of conditionals recursively. 1294 if isinstance(oStmt, iai.McStmtCond): 1295 self.analyzeCodeOperation(oStmt.aoIfBranch, True); 1296 if oStmt.aoElseBranch: 1297 self.analyzeCodeOperation(oStmt.aoElseBranch, True); 1298 1299 return True; 1300 1168 1301 def analyze(self): 1169 1302 """ … … 1184 1317 # Scan the statements for local variables and call arguments (self.dVariables). 1185 1318 self.analyzeFindVariablesAndCallArgs(aoStmts); 1319 1320 # Scan the code for IEM_CIMPL_F_ and other clues. 1321 self.dsCImplFlags = self.oMcBlock.dsCImplFlags.copy(); 1322 self.analyzeCodeOperation(aoStmts); 1186 1323 1187 1324 # Create variations as needed. … … 1191 1328 'IEM_MC_DEFER_TO_CIMPL_2_RET': True, 1192 1329 'IEM_MC_DEFER_TO_CIMPL_3_RET': True, }): 1193 asVariations = [ThreadedFunctionVariation.ksVariation_Default,];1330 asVariations = (ThreadedFunctionVariation.ksVariation_Default,); 1194 1331 1195 1332 elif iai.McStmt.findStmtByNames(aoStmts, {'IEM_MC_CALC_RM_EFF_ADDR' : True,}): 1196 if 'IEM_MC_F_64BIT' in self.oMcBlock.d McFlags:1333 if 'IEM_MC_F_64BIT' in self.oMcBlock.dsMcFlags: 1197 1334 asVariations = ThreadedFunctionVariation.kasVariationsWithAddressOnly64; 1198 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.d McFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dMcFlags:1335 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags: 1199 1336 asVariations = ThreadedFunctionVariation.kasVariationsWithAddressNot286Not64; 1200 elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.d McFlags:1337 elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags: 1201 1338 asVariations = ThreadedFunctionVariation.kasVariationsWithAddressNot286; 1202 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.d McFlags:1339 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags: 1203 1340 asVariations = ThreadedFunctionVariation.kasVariationsWithAddressNot64; 1204 elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.d McFlags:1205 asVariations = [ThreadedFunctionVariation.ksVariation_16_Pre386,];1341 elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.dsMcFlags: 1342 asVariations = ThreadedFunctionVariation.kasVariationsOnlyPre386; 1206 1343 else: 1207 1344 asVariations = ThreadedFunctionVariation.kasVariationsWithAddress; 1208 1345 else: 1209 if 'IEM_MC_F_64BIT' in self.oMcBlock.d McFlags:1346 if 'IEM_MC_F_64BIT' in self.oMcBlock.dsMcFlags: 1210 1347 asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressOnly64; 1211 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.d McFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dMcFlags:1348 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags: 1212 1349 asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressNot286Not64; 1213 elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.d McFlags:1350 elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags: 1214 1351 asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressNot286; 1215 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.d McFlags:1352 elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags: 1216 1353 asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressNot64; 1217 elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.d McFlags:1218 asVariations = [ThreadedFunctionVariation.ksVariation_16_Pre386,];1354 elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.dsMcFlags: 1355 asVariations = ThreadedFunctionVariation.kasVariationsOnlyPre386; 1219 1356 else: 1220 1357 asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddress; 1358 1359 if not iai.McStmt.findStmtByNames(aoStmts, 1360 { 'IEM_MC_ADVANCE_RIP_AND_FINISH': True, 1361 'IEM_MC_REL_JMP_S8_AND_FINISH': True, 1362 'IEM_MC_REL_JMP_S16_AND_FINISH': True, 1363 'IEM_MC_REL_JMP_S32_AND_FINISH': True, 1364 }): 1365 asVariations = [sVariation for sVariation in asVariations 1366 if sVariation not in ThreadedFunctionVariation.kdVariationsWithEflagsCheckingAndClearing]; 1221 1367 1222 1368 self.aoVariations = [ThreadedFunctionVariation(self, sVar) for sVar in asVariations]; … … 1230 1376 1231 1377 return True; 1378 1379 ## Used by emitThreadedCallStmts. 1380 kdVariationsWithNeedForPrefixCheck = { 1381 ThreadedFunctionVariation.ksVariation_64_Addr32: True, 1382 ThreadedFunctionVariation.ksVariation_64f_Addr32: True, 1383 ThreadedFunctionVariation.ksVariation_64_FsGs: True, 1384 ThreadedFunctionVariation.ksVariation_64f_FsGs: True, 1385 ThreadedFunctionVariation.ksVariation_32_Addr16: True, 1386 ThreadedFunctionVariation.ksVariation_32f_Addr16: True, 1387 ThreadedFunctionVariation.ksVariation_32_Flat: True, 1388 ThreadedFunctionVariation.ksVariation_32f_Flat: True, 1389 ThreadedFunctionVariation.ksVariation_16_Addr32: True, 1390 ThreadedFunctionVariation.ksVariation_16f_Addr32: True, 1391 }; 1232 1392 1233 1393 def emitThreadedCallStmts(self): … … 1305 1465 fSimple = True; 1306 1466 sSwitchValue = '(pVCpu->iem.s.fExec & (IEM_F_MODE_CPUMODE_MASK | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK))'; 1307 if ( ThrdFnVar.ksVariation_64_Addr32 in dByVari 1308 or ThrdFnVar.ksVariation_64_FsGs in dByVari 1309 or ThrdFnVar.ksVariation_32_Addr16 in dByVari 1310 or ThrdFnVar.ksVariation_32_Flat in dByVari 1311 or ThrdFnVar.ksVariation_16_Addr32 in dByVari): 1467 if dByVari.keys() & self.kdVariationsWithNeedForPrefixCheck.keys(): 1312 1468 sSwitchValue += ' | (pVCpu->iem.s.enmEffAddrMode == (pVCpu->iem.s.fExec & IEM_F_MODE_CPUMODE_MASK) ? 0 : 8)'; 1313 1469 # Accesses via FS and GS and CS goes thru non-FLAT functions. (CS … … 1316 1472 sSwitchValue += ' | (pVCpu->iem.s.iEffSeg < X86_SREG_FS && pVCpu->iem.s.iEffSeg != X86_SREG_CS ? 0 : 16)'; 1317 1473 fSimple = False; # threaded functions. 1474 if dByVari.keys() & ThreadedFunctionVariation.kdVariationsWithEflagsCheckingAndClearing: 1475 sSwitchValue += ' | ((pVCpu->iem.s.fTbPrevInstr & (IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_INHIBIT_SHADOW)) || ' \ 1476 + '(pVCpu->iem.s.fExec & IEM_F_PENDING_BRK_MASK) ? 32 : 0)'; 1318 1477 1319 1478 # … … 1330 1489 Case('IEMMODE_64BIT | 8', ThrdFnVar.ksVariation_64_Addr32), 1331 1490 ]); 1491 if ThreadedFunctionVariation.ksVariation_64f_Addr32 in dByVari: 1492 aoCases.extend([ 1493 Case('IEMMODE_64BIT | 32', ThrdFnVar.ksVariation_64f), 1494 Case('IEMMODE_64BIT | 32 | 16', ThrdFnVar.ksVariation_64f_FsGs), 1495 Case('IEMMODE_64BIT | 32 | 8 | 16', None), # fall thru 1496 Case('IEMMODE_64BIT | 32 | 8', ThrdFnVar.ksVariation_64f_Addr32), 1497 ]); 1332 1498 elif ThrdFnVar.ksVariation_64 in dByVari: 1333 1499 assert fSimple; 1334 1500 aoCases.append(Case('IEMMODE_64BIT', ThrdFnVar.ksVariation_64)); 1501 if ThreadedFunctionVariation.ksVariation_64f in dByVari: 1502 aoCases.append(Case('IEMMODE_64BIT | 32', ThrdFnVar.ksVariation_64f)); 1335 1503 1336 1504 if ThrdFnVar.ksVariation_32_Addr16 in dByVari: … … 1339 1507 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK', ThrdFnVar.ksVariation_32_Flat), 1340 1508 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 16', None), # fall thru 1341 Case('IEMMODE_32BIT | 16',None), # fall thru1509 Case('IEMMODE_32BIT | 16', None), # fall thru 1342 1510 Case('IEMMODE_32BIT', ThrdFnVar.ksVariation_32), 1343 1511 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 8', None), # fall thru … … 1346 1514 Case('IEMMODE_32BIT | 8', ThrdFnVar.ksVariation_32_Addr16), 1347 1515 ]); 1516 if ThrdFnVar.ksVariation_32f_Addr16 in dByVari: 1517 aoCases.extend([ 1518 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32', ThrdFnVar.ksVariation_32f_Flat), 1519 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32 | 16', None), # fall thru 1520 Case('IEMMODE_32BIT | 32 | 16', None), # fall thru 1521 Case('IEMMODE_32BIT | 32', ThrdFnVar.ksVariation_32f), 1522 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32 | 8', None), # fall thru 1523 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32 | 8 | 16',None), # fall thru 1524 Case('IEMMODE_32BIT | 32 | 8 | 16',None), # fall thru 1525 Case('IEMMODE_32BIT | 32 | 8', ThrdFnVar.ksVariation_32f_Addr16), 1526 ]); 1348 1527 elif ThrdFnVar.ksVariation_32 in dByVari: 1349 1528 assert fSimple; … … 1352 1531 Case('IEMMODE_32BIT', ThrdFnVar.ksVariation_32), 1353 1532 ]); 1533 if ThrdFnVar.ksVariation_32f in dByVari: 1534 aoCases.extend([ 1535 Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32', None), # fall thru 1536 Case('IEMMODE_32BIT | 32', ThrdFnVar.ksVariation_32f), 1537 ]); 1354 1538 1355 1539 if ThrdFnVar.ksVariation_16_Addr32 in dByVari: … … 1361 1545 Case('IEMMODE_16BIT | 8', ThrdFnVar.ksVariation_16_Addr32), 1362 1546 ]); 1547 if ThrdFnVar.ksVariation_16f_Addr32 in dByVari: 1548 aoCases.extend([ 1549 Case('IEMMODE_16BIT | 32 | 16', None), # fall thru 1550 Case('IEMMODE_16BIT | 32', ThrdFnVar.ksVariation_16f), 1551 Case('IEMMODE_16BIT | 32 | 8 | 16', None), # fall thru 1552 Case('IEMMODE_16BIT | 32 | 8', ThrdFnVar.ksVariation_16f_Addr32), 1553 ]); 1363 1554 elif ThrdFnVar.ksVariation_16 in dByVari: 1364 1555 assert fSimple; 1365 1556 aoCases.append(Case('IEMMODE_16BIT', ThrdFnVar.ksVariation_16)); 1557 if ThrdFnVar.ksVariation_16f in dByVari: 1558 aoCases.append(Case('IEMMODE_16BIT | 32', ThrdFnVar.ksVariation_16f)); 1366 1559 1367 1560 if ThrdFnVar.ksVariation_16_Pre386 in dByVari: 1368 1561 aoCases.append(Case('IEMMODE_16BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK', ThrdFnVar.ksVariation_16_Pre386)); 1562 if ThrdFnVar.ksVariation_16f_Pre386 in dByVari: # should be nested under previous if, but line too long. 1563 aoCases.append(Case('IEMMODE_16BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32', ThrdFnVar.ksVariation_16f_Pre386)); 1369 1564 1370 1565 # … … 1427 1622 aoDecoderStmts.append(oNewStmt); 1428 1623 #print('oNewStmt %s %s' % (oNewStmt.sName, len(oNewStmt.asParams),)); 1624 if oNewStmt.sName == 'IEM_MC_BEGIN' and self.dsCImplFlags: 1625 oNewStmt.asParams[3] = ' | '.join(sorted(self.dsCImplFlags.keys())); 1429 1626 1430 1627 # If we haven't emitted the threaded function call yet, look for … … 1470 1667 if len(self.oMcBlock.aoStmts) == 1: 1471 1668 # IEM_MC_DEFER_TO_CIMPL_X_RET - need to wrap in {} to make it safe to insert into random code. 1472 sCode = iai.McStmt.renderCodeForList(self.morphInputCode(self.oMcBlock.aoStmts)[0], 1473 cchIndent = cchIndent).replace('\n', ' /* gen */\n', 1); 1474 sCode = ' ' * (min(cchIndent, 2) - 2) + '{\n' \ 1475 + sCode \ 1476 + ' ' * (min(cchIndent, 2) - 2) + '}\n'; 1669 sCode = ' ' * cchIndent + 'pVCpu->iem.s.fTbCurInstr = '; 1670 if self.dsCImplFlags: 1671 sCode += ' | '.join(sorted(self.dsCImplFlags.keys())) + ';\n'; 1672 else: 1673 sCode += '0;\n'; 1674 sCode += iai.McStmt.renderCodeForList(self.morphInputCode(self.oMcBlock.aoStmts)[0], 1675 cchIndent = cchIndent).replace('\n', ' /* gen */\n', 1); 1676 sIndent = ' ' * (min(cchIndent, 2) - 2); 1677 sCode = sIndent + '{\n' + sCode + sIndent + '}\n'; 1477 1678 return sCode; 1478 1679 … … 1492 1693 1493 1694 def __init__(self): 1494 self.aoThreadedFuncs = [] # type: list(ThreadedFunction)1695 self.aoThreadedFuncs = [] # type: List[ThreadedFunction] 1495 1696 self.oOptions = None # type: argparse.Namespace 1496 self.aoParsers = [] # type: list(IEMAllInstPython.SimpleParser)1497 self.aidxFirstFunctions = [] # type: list(int)##< Runs parallel to aoParser giving the index of the first function.1697 self.aoParsers = [] # type: List[IEMAllInstPython.SimpleParser] 1698 self.aidxFirstFunctions = [] # type: List[int] ##< Runs parallel to aoParser giving the index of the first function. 1498 1699 1499 1700 # … … 2070 2271 or (sModified.find('IEM_MC_DEFER_TO_CIMPL_') > 0 and sModified.strip().startswith('{\n')) 2071 2272 or sModified.startswith('pVCpu->iem.s.fEndTb = true') 2273 or sModified.startswith('pVCpu->iem.s.fTbCurInstr = ') 2072 2274 ), 'sModified="%s"' % (sModified,); 2073 2275 oOut.write(sModified); -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdRecompiler.cpp
r101261 r101387 10 10 * - Level 4 (Log4) : Decoding mnemonics w/ EIP. [same as IEM] 11 11 * - Level 5 (Log5) : Decoding details. [same as IEM] 12 * - Level 6 (Log6) : 12 * - Level 6 (Log6) : TB opcode range management. 13 13 * - Level 7 (Log7) : TB obsoletion. 14 14 * - Level 8 (Log8) : TB compilation. … … 1369 1369 * @param pVCpu The cross context virtual CPU structure of the calling EMT. 1370 1370 * @param pszFunction The IEM function doing the execution. 1371 */ 1372 static void iemThreadedLogCurInstr(PVMCPUCC pVCpu, const char *pszFunction) RT_NOEXCEPT 1371 * @param idxInstr The instruction number in the block. 1372 */ 1373 static void iemThreadedLogCurInstr(PVMCPUCC pVCpu, const char *pszFunction, uint32_t idxInstr) RT_NOEXCEPT 1373 1374 { 1374 1375 # ifdef IN_RING3 … … 1382 1383 1383 1384 PCX86FXSTATE pFpuCtx = &pVCpu->cpum.GstCtx.XState.x87; 1384 Log2(("**** %s fExec=%x pTb=%p \n"1385 Log2(("**** %s fExec=%x pTb=%p #%u\n" 1385 1386 " eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n" 1386 1387 " eip=%08x esp=%08x ebp=%08x iopl=%d tr=%04x\n" … … 1388 1389 " fsw=%04x fcw=%04x ftw=%02x mxcsr=%04x/%04x\n" 1389 1390 " %s\n" 1390 , pszFunction, pVCpu->iem.s.fExec, pVCpu->iem.s.pCurTbR3, 1391 , pszFunction, pVCpu->iem.s.fExec, pVCpu->iem.s.pCurTbR3, idxInstr, 1391 1392 pVCpu->cpum.GstCtx.eax, pVCpu->cpum.GstCtx.ebx, pVCpu->cpum.GstCtx.ecx, pVCpu->cpum.GstCtx.edx, pVCpu->cpum.GstCtx.esi, pVCpu->cpum.GstCtx.edi, 1392 1393 pVCpu->cpum.GstCtx.eip, pVCpu->cpum.GstCtx.esp, pVCpu->cpum.GstCtx.ebp, pVCpu->cpum.GstCtx.eflags.Bits.u2IOPL, pVCpu->cpum.GstCtx.tr.Sel, … … 1477 1478 pVCpu->iem.s.cInstrTillIrqCheck = !(fExtraFlags & IEMTB_F_INHIBIT_SHADOW) ? 32 : 0; 1478 1479 pVCpu->iem.s.fTbCurInstrIsSti = false; 1480 /* Force RF clearing and TF checking on first instruction in the block 1481 as we don't really know what came before and should assume the worst: */ 1482 pVCpu->iem.s.fTbPrevInstr = IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_END_TB; 1479 1483 } 1480 1484 else … … 1484 1488 Assert(pVCpu->iem.s.fEndTb == false); 1485 1489 Assert(pVCpu->iem.s.fTbCrossedPage == false); 1486 } 1490 pVCpu->iem.s.fTbPrevInstr = pVCpu->iem.s.fTbCurInstr; 1491 } 1492 pVCpu->iem.s.fTbCurInstr = 0; 1487 1493 1488 1494 #ifdef DBGFTRACE_ENABLED … … 1609 1615 bool iemThreadedCompileBeginEmitCallsComplications(PVMCPUCC pVCpu, PIEMTB pTb) 1610 1616 { 1617 Log6(("%04x:%08RX64: iemThreadedCompileBeginEmitCallsComplications\n", pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip)); 1611 1618 Assert((pVCpu->iem.s.GCPhysInstrBuf & GUEST_PAGE_OFFSET_MASK) == 0); 1612 1619 #if 0 … … 1693 1700 * GDT/LDT entry's base address can be modified independently from 1694 1701 * the code. */ 1695 if (pVCpu->iem.s.fTbBranched != 0)1702 if (pVCpu->iem.s.fTbBranched != IEMBRANCHED_F_NO) 1696 1703 { 1697 1704 if ( !pVCpu->iem.s.fTbCrossedPage /* 1a */ … … 1746 1753 pTb->aRanges[idxRange].u2Unused = 0; 1747 1754 pTb->cRanges++; 1755 Log6(("%04x:%08RX64: new range #%u same page: offPhysPage=%#x offOpcodes=%#x\n", 1756 pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, idxRange, pTb->aRanges[idxRange].offPhysPage, 1757 pTb->aRanges[idxRange].offOpcodes)); 1748 1758 } 1749 1759 else … … 1875 1885 pTb->aRanges[idxRange].u2Unused = 0; 1876 1886 pTb->cRanges++; 1887 Log6(("%04x:%08RX64: new range #%u new page (a) %u/%RGp: offPhysPage=%#x offOpcodes=%#x\n", 1888 pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, idxRange, pTb->aRanges[idxRange].idxPhysPage, GCPhysNew, 1889 pTb->aRanges[idxRange].offPhysPage, pTb->aRanges[idxRange].offOpcodes)); 1877 1890 1878 1891 /* Determin which function we need to load & check. */ … … 1898 1911 pTb->aRanges[idxRange].u2Unused = 0; 1899 1912 pTb->cRanges++; 1913 Log6(("%04x:%08RX64: new range #%u new page (b) %u/%RGp: offPhysPage=%#x offOpcodes=%#x\n", 1914 pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, idxRange, pTb->aRanges[idxRange].idxPhysPage, GCPhysNew, 1915 pTb->aRanges[idxRange].offPhysPage, pTb->aRanges[idxRange].offOpcodes)); 1900 1916 1901 1917 /* Determin which function we need to load & check. */ … … 2137 2153 /* Process the next instruction. */ 2138 2154 #ifdef LOG_ENABLED 2139 iemThreadedLogCurInstr(pVCpu, "CC" );2155 iemThreadedLogCurInstr(pVCpu, "CC", pTb->cInstructions); 2140 2156 uint16_t const uCsLog = pVCpu->cpum.GstCtx.cs.Sel; 2141 2157 uint64_t const uRipLog = pVCpu->cpum.GstCtx.rip; … … 2251 2267 pVCpu->iem.s.cTbExecNative++; 2252 2268 # ifdef LOG_ENABLED 2253 iemThreadedLogCurInstr(pVCpu, "EXn" );2269 iemThreadedLogCurInstr(pVCpu, "EXn", 0); 2254 2270 # endif 2255 2271 VBOXSTRICTRC const rcStrict = ((PFNIEMTBNATIVE)pTb->Native.paInstructions)(pVCpu); … … 2288 2304 { 2289 2305 uRipPrev = pVCpu->cpum.GstCtx.rip; 2290 iemThreadedLogCurInstr(pVCpu, "EXt" );2306 iemThreadedLogCurInstr(pVCpu, "EXt", pTb->Thrd.cCalls - cCallsLeft - 1); 2291 2307 } 2292 2308 Log9(("%04x:%08RX64: #%d/%d - %d %s\n", pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdTables.h
r100829 r101387 113 113 #define g_apfnVexMap3 g_apfnIemThreadedRecompilerVecMap3 114 114 115 116 /* 117 * Override IEM_MC_BEGIN to take down the IEM_CIMPL_F_XXX flags. 118 */ 119 #undef IEM_MC_BEGIN 120 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fMcFlags, a_fCImplFlags) \ 121 { \ 122 pVCpu->iem.s.fTbCurInstr = (a_fCImplFlags) /*| ((a_fMcFlags) << 20*/ 115 123 116 124 /* … … 300 308 Log8(("CImpl0: %04x:%08RX64 LB %#x: %#x %p\n", 301 309 pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, IEM_GET_INSTR_LEN(pVCpu), fFlags, pfnCImpl)); 310 pVCpu->iem.s.fTbCurInstr = fFlags; 302 311 303 312 IEM_MC2_BEGIN_EMIT_CALLS(fFlags & IEM_CIMPL_F_CHECK_IRQ_BEFORE); -
trunk/src/VBox/VMM/include/IEMInline.h
r101163 r101387 2189 2189 2190 2190 /** 2191 * Tail method for a finish function that does't clear flags or raise \#DB. 2192 * 2193 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2194 */ 2195 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegFinishNoFlags(PVMCPUCC pVCpu) RT_NOEXCEPT 2196 { 2197 AssertCompile(CPUMCTX_INHIBIT_SHADOW < UINT32_MAX); 2198 Assert(!( pVCpu->cpum.GstCtx.eflags.uBoth 2199 & (X86_EFL_TF | X86_EFL_RF | CPUMCTX_INHIBIT_SHADOW | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) ); 2200 RT_NOREF(pVCpu); 2201 return VINF_SUCCESS; 2202 } 2203 2204 2205 /** 2206 * Updates the RIP to point to the next instruction, but does not need to clear 2207 * EFLAGS.RF or CPUMCTX_INHIBIT_SHADOW nor check for debug flags. 2208 * 2209 * Only called from 64-bit code. 2210 * 2211 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2212 * @param cbInstr The number of bytes to add. 2213 */ 2214 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegAddToRip64AndFinishingNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr) RT_NOEXCEPT 2215 { 2216 pVCpu->cpum.GstCtx.rip = pVCpu->cpum.GstCtx.rip + cbInstr; 2217 return iemRegFinishNoFlags(pVCpu); 2218 } 2219 2220 2221 /** 2222 * Updates the EIP to point to the next instruction, but does not need to clear 2223 * EFLAGS.RF or CPUMCTX_INHIBIT_SHADOW nor check for debug flags. 2224 * 2225 * This is never from 64-bit code. 2226 * 2227 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2228 * @param cbInstr The number of bytes to add. 2229 */ 2230 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegAddToEip32AndFinishingNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr) RT_NOEXCEPT 2231 { 2232 pVCpu->cpum.GstCtx.rip = (uint32_t)(pVCpu->cpum.GstCtx.eip + cbInstr); 2233 return iemRegFinishNoFlags(pVCpu); 2234 } 2235 2236 2237 /** 2238 * Updates the IP to point to the next instruction, but does not need to clear 2239 * EFLAGS.RF or CPUMCTX_INHIBIT_SHADOW nor check for debug flags. 2240 * 2241 * This is only ever used from 16-bit code on a pre-386 CPU. 2242 * 2243 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2244 * @param cbInstr The number of bytes to add. 2245 */ 2246 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegAddToIp16AndFinishingNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr) RT_NOEXCEPT 2247 { 2248 pVCpu->cpum.GstCtx.rip = (uint16_t)(pVCpu->cpum.GstCtx.ip + cbInstr); 2249 return iemRegFinishNoFlags(pVCpu); 2250 } 2251 2252 2253 /** 2191 2254 * Adds a 8-bit signed jump offset to RIP from 64-bit code. 2192 2255 * … … 2295 2358 2296 2359 /** 2360 * Adds a 8-bit signed jump offset to RIP from 64-bit code, no checking or 2361 * clearing of flags. 2362 * 2363 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code 2364 * segment limit. 2365 * 2366 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2367 * @param cbInstr Instruction size. 2368 * @param offNextInstr The offset of the next instruction. 2369 * @param enmEffOpSize Effective operand size. 2370 */ 2371 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegRip64RelativeJumpS8AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, int8_t offNextInstr, 2372 IEMMODE enmEffOpSize) RT_NOEXCEPT 2373 { 2374 Assert(IEM_IS_64BIT_CODE(pVCpu)); 2375 Assert(enmEffOpSize == IEMMODE_64BIT || enmEffOpSize == IEMMODE_16BIT); 2376 2377 uint64_t uNewRip = pVCpu->cpum.GstCtx.rip + cbInstr + (int64_t)offNextInstr; 2378 if (enmEffOpSize == IEMMODE_16BIT) 2379 uNewRip &= UINT16_MAX; 2380 2381 if (RT_LIKELY(IEM_IS_CANONICAL(uNewRip))) 2382 pVCpu->cpum.GstCtx.rip = uNewRip; 2383 else 2384 return iemRaiseGeneralProtectionFault0(pVCpu); 2385 2386 #ifndef IEM_WITH_CODE_TLB 2387 iemOpcodeFlushLight(pVCpu, cbInstr); 2388 #endif 2389 return iemRegFinishNoFlags(pVCpu); 2390 } 2391 2392 2393 /** 2394 * Adds a 8-bit signed jump offset to EIP, on 386 or later from 16-bit or 32-bit 2395 * code (never 64-bit), no checking or clearing of flags. 2396 * 2397 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code 2398 * segment limit. 2399 * 2400 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2401 * @param cbInstr Instruction size. 2402 * @param offNextInstr The offset of the next instruction. 2403 * @param enmEffOpSize Effective operand size. 2404 */ 2405 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegEip32RelativeJumpS8AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, int8_t offNextInstr, 2406 IEMMODE enmEffOpSize) RT_NOEXCEPT 2407 { 2408 Assert(!IEM_IS_64BIT_CODE(pVCpu)); 2409 Assert(enmEffOpSize == IEMMODE_32BIT || enmEffOpSize == IEMMODE_16BIT); 2410 2411 uint32_t uNewEip = pVCpu->cpum.GstCtx.eip + cbInstr + (int32_t)offNextInstr; 2412 if (enmEffOpSize == IEMMODE_16BIT) 2413 uNewEip &= UINT16_MAX; 2414 if (RT_LIKELY(uNewEip <= pVCpu->cpum.GstCtx.cs.u32Limit)) 2415 pVCpu->cpum.GstCtx.rip = uNewEip; 2416 else 2417 return iemRaiseGeneralProtectionFault0(pVCpu); 2418 2419 #ifndef IEM_WITH_CODE_TLB 2420 iemOpcodeFlushLight(pVCpu, cbInstr); 2421 #endif 2422 return iemRegFinishNoFlags(pVCpu); 2423 } 2424 2425 2426 /** 2427 * Adds a 8-bit signed jump offset to IP, on a pre-386 CPU, no checking or 2428 * clearing of flags. 2429 * 2430 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code 2431 * segment limit. 2432 * 2433 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2434 * @param cbInstr Instruction size. 2435 * @param offNextInstr The offset of the next instruction. 2436 */ 2437 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegIp16RelativeJumpS8AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, 2438 int8_t offNextInstr) RT_NOEXCEPT 2439 { 2440 Assert(!IEM_IS_64BIT_CODE(pVCpu)); 2441 2442 uint16_t const uNewIp = pVCpu->cpum.GstCtx.ip + cbInstr + (int16_t)offNextInstr; 2443 if (RT_LIKELY(uNewIp <= pVCpu->cpum.GstCtx.cs.u32Limit)) 2444 pVCpu->cpum.GstCtx.rip = uNewIp; 2445 else 2446 return iemRaiseGeneralProtectionFault0(pVCpu); 2447 2448 #ifndef IEM_WITH_CODE_TLB 2449 iemOpcodeFlushLight(pVCpu, cbInstr); 2450 #endif 2451 return iemRegFinishNoFlags(pVCpu); 2452 } 2453 2454 2455 /** 2297 2456 * Adds a 16-bit signed jump offset to RIP from 64-bit code. 2298 2457 * … … 2357 2516 2358 2517 /** 2518 * Adds a 16-bit signed jump offset to RIP from 64-bit code, no checking or 2519 * clearing of flags. 2520 * 2521 * @returns Strict VBox status code. 2522 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2523 * @param cbInstr Instruction size. 2524 * @param offNextInstr The offset of the next instruction. 2525 */ 2526 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegRip64RelativeJumpS16AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, 2527 int16_t offNextInstr) RT_NOEXCEPT 2528 { 2529 Assert(IEM_IS_64BIT_CODE(pVCpu)); 2530 2531 pVCpu->cpum.GstCtx.rip = (uint16_t)(pVCpu->cpum.GstCtx.ip + cbInstr + offNextInstr); 2532 2533 #ifndef IEM_WITH_CODE_TLB 2534 iemOpcodeFlushLight(pVCpu, cbInstr); 2535 #endif 2536 return iemRegFinishNoFlags(pVCpu); 2537 } 2538 2539 2540 /** 2541 * Adds a 16-bit signed jump offset to EIP from 16-bit or 32-bit code, 2542 * no checking or clearing of flags. 2543 * 2544 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code 2545 * segment limit. 2546 * 2547 * @returns Strict VBox status code. 2548 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2549 * @param cbInstr Instruction size. 2550 * @param offNextInstr The offset of the next instruction. 2551 * 2552 * @note This is also used by 16-bit code in pre-386 mode, as the code is 2553 * identical. 2554 */ 2555 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegEip32RelativeJumpS16AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, 2556 int16_t offNextInstr) RT_NOEXCEPT 2557 { 2558 Assert(!IEM_IS_64BIT_CODE(pVCpu)); 2559 2560 uint16_t const uNewIp = pVCpu->cpum.GstCtx.ip + cbInstr + offNextInstr; 2561 if (RT_LIKELY(uNewIp <= pVCpu->cpum.GstCtx.cs.u32Limit)) 2562 pVCpu->cpum.GstCtx.rip = uNewIp; 2563 else 2564 return iemRaiseGeneralProtectionFault0(pVCpu); 2565 2566 #ifndef IEM_WITH_CODE_TLB 2567 iemOpcodeFlushLight(pVCpu, cbInstr); 2568 #endif 2569 return iemRegFinishNoFlags(pVCpu); 2570 } 2571 2572 2573 /** 2359 2574 * Adds a 32-bit signed jump offset to RIP from 64-bit code. 2360 2575 * … … 2428 2643 */ 2429 2644 return iemRegFinishClearingRF(pVCpu); 2645 } 2646 2647 2648 /** 2649 * Adds a 32-bit signed jump offset to RIP from 64-bit code, no checking or 2650 * clearing of flags. 2651 * 2652 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code 2653 * segment limit. 2654 * 2655 * We ASSUME that the effective operand size is 64-bit here, as 16-bit is the 2656 * only alternative for relative jumps in 64-bit code and that is already 2657 * handled in the decoder stage. 2658 * 2659 * @returns Strict VBox status code. 2660 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2661 * @param cbInstr Instruction size. 2662 * @param offNextInstr The offset of the next instruction. 2663 */ 2664 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegRip64RelativeJumpS32AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, 2665 int32_t offNextInstr) RT_NOEXCEPT 2666 { 2667 Assert(IEM_IS_64BIT_CODE(pVCpu)); 2668 2669 uint64_t const uNewRip = pVCpu->cpum.GstCtx.rip + cbInstr + (int64_t)offNextInstr; 2670 if (RT_LIKELY(IEM_IS_CANONICAL(uNewRip))) 2671 pVCpu->cpum.GstCtx.rip = uNewRip; 2672 else 2673 return iemRaiseGeneralProtectionFault0(pVCpu); 2674 2675 #ifndef IEM_WITH_CODE_TLB 2676 iemOpcodeFlushLight(pVCpu, cbInstr); 2677 #endif 2678 return iemRegFinishNoFlags(pVCpu); 2679 } 2680 2681 2682 /** 2683 * Adds a 32-bit signed jump offset to RIP from 64-bit code, no checking or 2684 * clearing of flags. 2685 * 2686 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code 2687 * segment limit. 2688 * 2689 * We ASSUME that the effective operand size is 32-bit here, as 16-bit is the 2690 * only alternative for relative jumps in 32-bit code and that is already 2691 * handled in the decoder stage. 2692 * 2693 * @returns Strict VBox status code. 2694 * @param pVCpu The cross context virtual CPU structure of the calling thread. 2695 * @param cbInstr Instruction size. 2696 * @param offNextInstr The offset of the next instruction. 2697 */ 2698 DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegEip32RelativeJumpS32AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, 2699 int32_t offNextInstr) RT_NOEXCEPT 2700 { 2701 Assert(!IEM_IS_64BIT_CODE(pVCpu)); 2702 Assert(pVCpu->cpum.GstCtx.rip <= UINT32_MAX); 2703 2704 uint32_t const uNewEip = pVCpu->cpum.GstCtx.eip + cbInstr + offNextInstr; 2705 if (RT_LIKELY(uNewEip <= pVCpu->cpum.GstCtx.cs.u32Limit)) 2706 pVCpu->cpum.GstCtx.rip = uNewEip; 2707 else 2708 return iemRaiseGeneralProtectionFault0(pVCpu); 2709 2710 #ifndef IEM_WITH_CODE_TLB 2711 iemOpcodeFlushLight(pVCpu, cbInstr); 2712 #endif 2713 return iemRegFinishNoFlags(pVCpu); 2430 2714 } 2431 2715 -
trunk/src/VBox/VMM/include/IEMInternal.h
r101376 r101387 1427 1427 /** The virtual sync time at the last timer poll call. */ 1428 1428 uint32_t msRecompilerPollNow; 1429 /** The IEM_CIMPL_F_XXX mask for the current instruction. */ 1430 uint32_t fTbCurInstr; 1431 /** The IEM_CIMPL_F_XXX mask for the previous instruction. */ 1432 uint32_t fTbPrevInstr; 1429 1433 /** Previous GCPhysInstrBuf value - only valid if fTbCrossedPage is set. */ 1430 1434 RTGCPHYS GCPhysInstrBufPrev; … … 1443 1447 R3PTRTYPE(struct IEMRECOMPILERSTATE *) pNativeRecompilerStateR3; 1444 1448 /** Alignment padding. */ 1445 uint64_t auAlignment10[ 5];1449 uint64_t auAlignment10[4]; 1446 1450 /** Statistics: Times TB execution was broken off before reaching the end. */ 1447 1451 STAMCOUNTER StatTbExecBreaks; -
trunk/src/VBox/VMM/include/IEMMc.h
r100889 r101387 41 41 */ 42 42 43 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_f Flags){44 #define IEM_MC_END() }43 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fMcFlags, a_fCImplFlags) { 44 #define IEM_MC_END() } 45 45 46 46 /** Internal macro. */ … … 2003 2003 /** May change significant portions of RFLAGS. */ 2004 2004 #define IEM_CIMPL_F_RFLAGS RT_BIT_32(6) 2005 /** May change the status bits (X86_EFL_STATUS_BITS) in RFLAGS 2005 /** May change the status bits (X86_EFL_STATUS_BITS) in RFLAGS. */ 2006 2006 #define IEM_CIMPL_F_STATUS_FLAGS RT_BIT_32(7) 2007 /** May trigger interrupt shadowing. */ 2008 #define IEM_CIMPL_F_INHIBIT_SHADOW RT_BIT_32(8) 2007 2009 /** May enable interrupts, so recheck IRQ immediately afterwards executing 2008 2010 * the instruction. */ 2009 #define IEM_CIMPL_F_CHECK_IRQ_AFTER RT_BIT_32( 8)2011 #define IEM_CIMPL_F_CHECK_IRQ_AFTER RT_BIT_32(9) 2010 2012 /** May disable interrupts, so recheck IRQ immediately before executing the 2011 2013 * instruction. */ 2012 #define IEM_CIMPL_F_CHECK_IRQ_BEFORE RT_BIT_32( 9)2014 #define IEM_CIMPL_F_CHECK_IRQ_BEFORE RT_BIT_32(10) 2013 2015 /** Convenience: Check for IRQ both before and after an instruction. */ 2014 2016 #define IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER (IEM_CIMPL_F_CHECK_IRQ_BEFORE | IEM_CIMPL_F_CHECK_IRQ_AFTER) 2015 2017 /** May trigger a VM exit (treated like IEM_CIMPL_F_MODE atm). */ 2016 #define IEM_CIMPL_F_VMEXIT RT_BIT_32(1 0)2018 #define IEM_CIMPL_F_VMEXIT RT_BIT_32(11) 2017 2019 /** May modify FPU state. 2018 2020 * @todo Not sure if this is useful yet. */ 2019 #define IEM_CIMPL_F_FPU RT_BIT_32(1 1)2021 #define IEM_CIMPL_F_FPU RT_BIT_32(12) 2020 2022 /** REP prefixed instruction which may yield before updating PC. 2021 2023 * @todo Not sure if this is useful, REP functions now return non-zero 2022 2024 * status if they don't update the PC. */ 2023 #define IEM_CIMPL_F_REP RT_BIT_32(1 2)2025 #define IEM_CIMPL_F_REP RT_BIT_32(13) 2024 2026 /** I/O instruction. 2025 2027 * @todo Not sure if this is useful yet. */ 2026 #define IEM_CIMPL_F_IO RT_BIT_32(1 3)2028 #define IEM_CIMPL_F_IO RT_BIT_32(14) 2027 2029 /** Force end of TB after the instruction. */ 2028 #define IEM_CIMPL_F_END_TB RT_BIT_32(1 4)2030 #define IEM_CIMPL_F_END_TB RT_BIT_32(15) 2029 2031 /** Convenience: Raise exception (technically unnecessary, since it shouldn't return VINF_SUCCESS). */ 2030 2032 #define IEM_CIMPL_F_XCPT \ -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r101370 r101387 257 257 /** Buffer used by the recompiler for recording fixups when generating code. */ 258 258 PIEMNATIVEFIXUP paFixups; 259 260 /** The translation block being recompiled. */ 261 PCIEMTB pTbOrg; 259 262 } IEMRECOMPILERSTATE; 260 263 /** Pointer to a native recompiler state. */ -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r100854 r101387 558 558 559 559 #define IEM_ARG_CHECK_CALLBACK(a_idx, a_User) int RT_CONCAT(iArgCheck_,a_idx); NOREF(RT_CONCAT(iArgCheck_,a_idx)) 560 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_f Flags) \560 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fMcFlags, a_fCImplFlags) \ 561 561 { \ 562 562 const uint8_t cArgs = (a_cArgs); NOREF(cArgs); \ 563 563 const uint8_t cLocals = (a_cLocals); NOREF(cLocals); \ 564 const uint32_t fMcBegin = (((a_cArgs) + (a_cLocals)) << 23) + (a_f Flags); \564 const uint32_t fMcBegin = (((a_cArgs) + (a_cLocals)) << 23) + (a_fMcFlags) + (a_fCImplFlags); \ 565 565 IEM_REPEAT(a_cArgs, IEM_ARG_CHECK, 0); \ 566 566
Note:
See TracChangeset
for help on using the changeset viewer.