Changeset 100854 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Aug 11, 2023 1:29:04 AM (18 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/CPUMAllCpuId.cpp
r99814 r100854 1448 1448 pFeatures->fHypervisorPresent = RT_BOOL(pStd1Leaf->uEcx & X86_CPUID_FEATURE_ECX_HVP); 1449 1449 pFeatures->fMonitorMWait = RT_BOOL(pStd1Leaf->uEcx & X86_CPUID_FEATURE_ECX_MONITOR); 1450 pFeatures->fMovCmpXchg16b = RT_BOOL(pStd1Leaf->uEcx & X86_CPUID_FEATURE_ECX_CX16); 1450 pFeatures->fCmpXchg8b = RT_BOOL(pStd1Leaf->uEdx & X86_CPUID_FEATURE_EDX_CX8); 1451 pFeatures->fCmpXchg16b = RT_BOOL(pStd1Leaf->uEcx & X86_CPUID_FEATURE_ECX_CX16); 1451 1452 pFeatures->fClFlush = RT_BOOL(pStd1Leaf->uEdx & X86_CPUID_FEATURE_EDX_CLFSH); 1452 1453 pFeatures->fPcid = RT_BOOL(pStd1Leaf->uEcx & X86_CPUID_FEATURE_ECX_PCID); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstCommon.cpp.h
r100740 r100854 897 897 { 898 898 case IEMMODE_16BIT: 899 IEM_MC_BEGIN(0, 1 );899 IEM_MC_BEGIN(0, 1, 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 );909 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 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 );919 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 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 );941 IEM_MC_BEGIN(5, 1, 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 );959 IEM_MC_BEGIN(5, 1, IEM_MC_F_MIN_386); 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 );977 IEM_MC_BEGIN(5, 1, IEM_MC_F_64BIT); 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
r100733 r100854 50 50 { \ 51 51 case IEMMODE_16BIT: \ 52 IEM_MC_BEGIN(3, 0 ); \52 IEM_MC_BEGIN(3, 0, 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 ); \68 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 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 ); \86 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 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 ); \112 IEM_MC_BEGIN(3, 1, 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 ); \130 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); \ 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 ); \150 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \ 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
r100846 r100854 71 71 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 72 72 { \ 73 IEM_MC_BEGIN(3, 0 ); \73 IEM_MC_BEGIN(3, 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 ); \96 IEM_MC_BEGIN(3, 3, 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 ); \133 IEM_MC_BEGIN(3, 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 ); \156 IEM_MC_BEGIN(3, 3, 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 ); \187 IEM_MC_BEGIN(3, 3, 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 ); \221 IEM_MC_BEGIN(3, 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 ); \240 IEM_MC_BEGIN(3, 1, 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 ); \274 IEM_MC_BEGIN(3, 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 ); \290 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 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 ); \307 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 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 ); \337 IEM_MC_BEGIN(3, 3, 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 ); \358 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 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 ); \379 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 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 ); \410 IEM_MC_BEGIN(3, 3, 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 ); \431 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 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 ); \452 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 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 ); \493 IEM_MC_BEGIN(3, 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 ); \509 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 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 ); \525 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 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 ); \555 IEM_MC_BEGIN(3, 3, 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 ); \576 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 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 ); \597 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 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 ); \636 IEM_MC_BEGIN(3, 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 ); \660 IEM_MC_BEGIN(3, 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 ); \678 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 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 ); \698 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 699 699 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 700 700 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 1768 1768 { \ 1769 1769 case IEMMODE_16BIT: \ 1770 IEM_MC_BEGIN(2, 0 ); \1770 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_64BIT); \ 1771 1771 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 1772 1772 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 1780 1780 \ 1781 1781 case IEMMODE_32BIT: \ 1782 IEM_MC_BEGIN(2, 0 ); \1782 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); \ 1783 1783 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 1784 1784 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 2195 2195 { 2196 2196 case IEMMODE_16BIT: 2197 IEM_MC_BEGIN(0, 1 );2197 IEM_MC_BEGIN(0, 1, 0); 2198 2198 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2199 2199 IEM_MC_LOCAL(uint16_t, u16Value); … … 2205 2205 2206 2206 case IEMMODE_32BIT: 2207 IEM_MC_BEGIN(0, 1 );2207 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 2208 2208 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2209 2209 IEM_MC_LOCAL(uint32_t, u32Value); … … 2215 2215 2216 2216 case IEMMODE_64BIT: 2217 IEM_MC_BEGIN(0, 1 );2217 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 2218 2218 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2219 2219 IEM_MC_LOCAL(uint64_t, u64Value); … … 2277 2277 if (IEM_GET_TARGET_CPU(pVCpu) == IEMTARGETCPU_8086) 2278 2278 { 2279 IEM_MC_BEGIN(0, 1 );2279 IEM_MC_BEGIN(0, 1, IEM_MC_F_ONLY_8086); 2280 2280 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2281 2281 IEM_MC_LOCAL(uint16_t, u16Value); … … 2335 2335 { 2336 2336 case IEMMODE_16BIT: 2337 IEM_MC_BEGIN(0, 1 );2337 IEM_MC_BEGIN(0, 1, 0); 2338 2338 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2339 2339 IEM_MC_LOCAL(uint16_t *, pu16Dst); … … 2345 2345 2346 2346 case IEMMODE_32BIT: 2347 IEM_MC_BEGIN(0, 1 );2347 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 2348 2348 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2349 2349 IEM_MC_LOCAL(uint32_t *, pu32Dst); … … 2356 2356 2357 2357 case IEMMODE_64BIT: 2358 IEM_MC_BEGIN(0, 1 );2358 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 2359 2359 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2360 2360 IEM_MC_LOCAL(uint64_t *, pu64Dst); … … 2428 2428 { 2429 2429 case IEMMODE_16BIT: 2430 IEM_MC_BEGIN(0, 1 );2430 IEM_MC_BEGIN(0, 1, 0); 2431 2431 IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP, 2432 2432 DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG); … … 2439 2439 2440 2440 case IEMMODE_32BIT: 2441 IEM_MC_BEGIN(0, 1 );2441 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 2442 2442 IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP, 2443 2443 DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG); … … 2450 2450 2451 2451 case IEMMODE_64BIT: 2452 IEM_MC_BEGIN(0, 1 );2452 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 2453 2453 IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP, 2454 2454 DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG); … … 2605 2605 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 2606 2606 { 2607 IEM_MC_BEGIN(3, 1 );2607 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_64BIT); 2608 2608 IEM_MC_ARG(uint16_t, u16Index, 0); /* Note! All operands are actually signed. Lazy unsigned bird. */ 2609 2609 IEM_MC_ARG(uint16_t, u16LowerBounds, 1); … … 2623 2623 else /* 32-bit operands */ 2624 2624 { 2625 IEM_MC_BEGIN(3, 1 );2625 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); 2626 2626 IEM_MC_ARG(uint32_t, u32Index, 0); /* Note! All operands are actually signed. Lazy unsigned bird. */ 2627 2627 IEM_MC_ARG(uint32_t, u32LowerBounds, 1); … … 2683 2683 { 2684 2684 /* Register */ 2685 IEM_MC_BEGIN(3, 0 );2685 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_64BIT); 2686 2686 IEMOP_HLP_DECODED_NL_2(OP_ARPL, IEMOPFORM_MR_REG, OP_PARM_Ew, OP_PARM_Gw, DISOPTYPE_HARMLESS); 2687 2687 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 2700 2700 { 2701 2701 /* Memory */ 2702 IEM_MC_BEGIN(3, 3 );2702 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_64BIT); 2703 2703 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 2704 2704 IEM_MC_ARG(uint16_t, u16Src, 1); … … 2742 2742 * Register to register. 2743 2743 */ 2744 IEM_MC_BEGIN(0, 1 );2744 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 2745 2745 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2746 2746 IEM_MC_LOCAL(uint64_t, u64Value); … … 2755 2755 * We're loading a register from memory. 2756 2756 */ 2757 IEM_MC_BEGIN(0, 2 );2757 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 2758 2758 IEM_MC_LOCAL(uint64_t, u64Value); 2759 2759 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 2875 2875 { 2876 2876 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 2877 IEM_MC_BEGIN(0, 0);2877 IEM_MC_BEGIN(0, 0, 0); 2878 2878 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2879 2879 IEM_MC_PUSH_U16(u16Imm); … … 2886 2886 { 2887 2887 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 2888 IEM_MC_BEGIN(0, 0);2888 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 2889 2889 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2890 2890 IEM_MC_PUSH_U32(u32Imm); … … 2897 2897 { 2898 2898 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 2899 IEM_MC_BEGIN(0, 0);2899 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 2900 2900 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2901 2901 IEM_MC_PUSH_U64(u64Imm); … … 2929 2929 /* register operand */ 2930 2930 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 2931 IEM_MC_BEGIN(3, 1 );2931 IEM_MC_BEGIN(3, 1, 0); 2932 2932 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2933 2933 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 2948 2948 { 2949 2949 /* memory operand */ 2950 IEM_MC_BEGIN(3, 2 );2950 IEM_MC_BEGIN(3, 2, 0); 2951 2951 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 2952 2952 IEM_MC_ARG(uint16_t, u16Src, 1); … … 2978 2978 /* register operand */ 2979 2979 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 2980 IEM_MC_BEGIN(3, 1 );2980 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); 2981 2981 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2982 2982 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 2997 2997 { 2998 2998 /* memory operand */ 2999 IEM_MC_BEGIN(3, 2 );2999 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386); 3000 3000 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 3001 3001 IEM_MC_ARG(uint32_t, u32Src, 1); … … 3027 3027 /* register operand */ 3028 3028 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 3029 IEM_MC_BEGIN(3, 1 );3029 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); 3030 3030 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3031 3031 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 3046 3046 { 3047 3047 /* memory operand */ 3048 IEM_MC_BEGIN(3, 2 );3048 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 3049 3049 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3050 3050 IEM_MC_ARG(uint64_t, u64Src, 1); … … 3087 3087 { 3088 3088 case IEMMODE_16BIT: 3089 IEM_MC_BEGIN(0, 0);3089 IEM_MC_BEGIN(0, 0, 0); 3090 3090 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3091 3091 IEM_MC_PUSH_U16(i8Imm); … … 3094 3094 break; 3095 3095 case IEMMODE_32BIT: 3096 IEM_MC_BEGIN(0, 0);3096 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 3097 3097 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3098 3098 IEM_MC_PUSH_U32(i8Imm); … … 3101 3101 break; 3102 3102 case IEMMODE_64BIT: 3103 IEM_MC_BEGIN(0, 0);3103 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 3104 3104 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3105 3105 IEM_MC_PUSH_U64(i8Imm); … … 3131 3131 /* register operand */ 3132 3132 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 3133 IEM_MC_BEGIN(3, 1 );3133 IEM_MC_BEGIN(3, 1, 0); 3134 3134 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3135 3135 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 3150 3150 { 3151 3151 /* memory operand */ 3152 IEM_MC_BEGIN(3, 2 );3152 IEM_MC_BEGIN(3, 2, 0); 3153 3153 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 3154 3154 IEM_MC_ARG(uint16_t, u16Src, 1); … … 3180 3180 /* register operand */ 3181 3181 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 3182 IEM_MC_BEGIN(3, 1 );3182 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); 3183 3183 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3184 3184 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 3199 3199 { 3200 3200 /* memory operand */ 3201 IEM_MC_BEGIN(3, 2 );3201 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386); 3202 3202 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 3203 3203 IEM_MC_ARG(uint32_t, u32Src, 1); … … 3229 3229 /* register operand */ 3230 3230 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 3231 IEM_MC_BEGIN(3, 1 );3231 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); 3232 3232 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3233 3233 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 3248 3248 { 3249 3249 /* memory operand */ 3250 IEM_MC_BEGIN(3, 2 );3250 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 3251 3251 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 3252 3252 IEM_MC_ARG(uint64_t, u64Src, 1); … … 3537 3537 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3538 3538 3539 IEM_MC_BEGIN(0, 0 );3539 IEM_MC_BEGIN(0, 0, 0); 3540 3540 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3541 3541 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 3557 3557 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3558 3558 3559 IEM_MC_BEGIN(0, 0 );3559 IEM_MC_BEGIN(0, 0, 0); 3560 3560 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3561 3561 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 3576 3576 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3577 3577 3578 IEM_MC_BEGIN(0, 0 );3578 IEM_MC_BEGIN(0, 0, 0); 3579 3579 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3580 3580 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 3596 3596 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3597 3597 3598 IEM_MC_BEGIN(0, 0 );3598 IEM_MC_BEGIN(0, 0, 0); 3599 3599 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3600 3600 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 3616 3616 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3617 3617 3618 IEM_MC_BEGIN(0, 0 );3618 IEM_MC_BEGIN(0, 0, 0); 3619 3619 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3620 3620 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 3636 3636 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3637 3637 3638 IEM_MC_BEGIN(0, 0 );3638 IEM_MC_BEGIN(0, 0, 0); 3639 3639 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3640 3640 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 3656 3656 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3657 3657 3658 IEM_MC_BEGIN(0, 0 );3658 IEM_MC_BEGIN(0, 0, 0); 3659 3659 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3660 3660 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 3676 3676 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3677 3677 3678 IEM_MC_BEGIN(0, 0 );3678 IEM_MC_BEGIN(0, 0, 0); 3679 3679 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3680 3680 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 3696 3696 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3697 3697 3698 IEM_MC_BEGIN(0, 0 );3698 IEM_MC_BEGIN(0, 0, 0); 3699 3699 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3700 3700 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 3716 3716 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3717 3717 3718 IEM_MC_BEGIN(0, 0 );3718 IEM_MC_BEGIN(0, 0, 0); 3719 3719 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3720 3720 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 3736 3736 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3737 3737 3738 IEM_MC_BEGIN(0, 0 );3738 IEM_MC_BEGIN(0, 0, 0); 3739 3739 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3740 3740 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 3756 3756 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3757 3757 3758 IEM_MC_BEGIN(0, 0 );3758 IEM_MC_BEGIN(0, 0, 0); 3759 3759 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3760 3760 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 3776 3776 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3777 3777 3778 IEM_MC_BEGIN(0, 0 );3778 IEM_MC_BEGIN(0, 0, 0); 3779 3779 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3780 3780 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 3796 3796 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3797 3797 3798 IEM_MC_BEGIN(0, 0 );3798 IEM_MC_BEGIN(0, 0, 0); 3799 3799 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3800 3800 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 3816 3816 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3817 3817 3818 IEM_MC_BEGIN(0, 0 );3818 IEM_MC_BEGIN(0, 0, 0); 3819 3819 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3820 3820 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 3836 3836 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 3837 3837 3838 IEM_MC_BEGIN(0, 0 );3838 IEM_MC_BEGIN(0, 0, 0); 3839 3839 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3840 3840 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 3856 3856 /* register target */ \ 3857 3857 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 3858 IEM_MC_BEGIN(3, 0 ); \3858 IEM_MC_BEGIN(3, 0, 0); \ 3859 3859 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 3860 3860 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 3874 3874 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 3875 3875 { \ 3876 IEM_MC_BEGIN(3, 3 ); \3876 IEM_MC_BEGIN(3, 3, 0); \ 3877 3877 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 3878 3878 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ … … 3899 3899 3900 3900 #define IEMOP_BODY_BINARY_Eb_Ib_LOCKED(a_fnLockedU8) \ 3901 IEM_MC_BEGIN(3, 3 ); \3901 IEM_MC_BEGIN(3, 3, 0); \ 3902 3902 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 3903 3903 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ … … 3927 3927 /* register target */ \ 3928 3928 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \ 3929 IEM_MC_BEGIN(3, 0 ); \3929 IEM_MC_BEGIN(3, 0, 0); \ 3930 3930 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 3931 3931 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 3945 3945 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 3946 3946 { \ 3947 IEM_MC_BEGIN(3, 3 ); \3947 IEM_MC_BEGIN(3, 3, 0); \ 3948 3948 IEM_MC_ARG(uint8_t const *, pu8Dst, 0); \ 3949 3949 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ … … 4107 4107 { \ 4108 4108 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4109 IEM_MC_BEGIN(3, 0 ); \4109 IEM_MC_BEGIN(3, 0, 0); \ 4110 4110 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4111 4111 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4125 4125 { \ 4126 4126 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4127 IEM_MC_BEGIN(3, 0 ); \4127 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 4128 4128 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4129 4129 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4144 4144 { \ 4145 4145 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4146 IEM_MC_BEGIN(3, 0 ); \4146 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 4147 4147 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4148 4148 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4171 4171 case IEMMODE_16BIT: \ 4172 4172 { \ 4173 IEM_MC_BEGIN(3, 3 ); \4173 IEM_MC_BEGIN(3, 3, 0); \ 4174 4174 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4175 4175 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4195 4195 case IEMMODE_32BIT: \ 4196 4196 { \ 4197 IEM_MC_BEGIN(3, 3 ); \4197 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 4198 4198 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4199 4199 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4219 4219 case IEMMODE_64BIT: \ 4220 4220 { \ 4221 IEM_MC_BEGIN(3, 3 ); \4221 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 4222 4222 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4223 4223 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4253 4253 case IEMMODE_16BIT: \ 4254 4254 { \ 4255 IEM_MC_BEGIN(3, 3 ); \4255 IEM_MC_BEGIN(3, 3, 0); \ 4256 4256 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4257 4257 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4277 4277 case IEMMODE_32BIT: \ 4278 4278 { \ 4279 IEM_MC_BEGIN(3, 3 ); \4279 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 4280 4280 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4281 4281 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4301 4301 case IEMMODE_64BIT: \ 4302 4302 { \ 4303 IEM_MC_BEGIN(3, 3 ); \4303 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 4304 4304 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4305 4305 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4339 4339 { \ 4340 4340 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \ 4341 IEM_MC_BEGIN(3, 0 ); \4341 IEM_MC_BEGIN(3, 0, 0); \ 4342 4342 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4343 4343 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4357 4357 { \ 4358 4358 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \ 4359 IEM_MC_BEGIN(3, 0 ); \4359 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 4360 4360 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4361 4361 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4375 4375 { \ 4376 4376 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \ 4377 IEM_MC_BEGIN(3, 0 ); \4377 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 4378 4378 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4379 4379 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4402 4402 case IEMMODE_16BIT: \ 4403 4403 { \ 4404 IEM_MC_BEGIN(3, 3 ); \4404 IEM_MC_BEGIN(3, 3, 0); \ 4405 4405 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 4406 4406 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4426 4426 case IEMMODE_32BIT: \ 4427 4427 { \ 4428 IEM_MC_BEGIN(3, 3 ); \4428 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 4429 4429 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 4430 4430 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4450 4450 case IEMMODE_64BIT: \ 4451 4451 { \ 4452 IEM_MC_BEGIN(3, 3 ); \4452 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 4453 4453 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 4454 4454 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4626 4626 { \ 4627 4627 case IEMMODE_16BIT: \ 4628 { \ 4629 IEM_MC_BEGIN(3, 0); \ 4628 IEM_MC_BEGIN(3, 0, 0); \ 4630 4629 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4631 4630 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4640 4639 IEM_MC_END(); \ 4641 4640 break; \ 4642 } \4643 4641 \ 4644 4642 case IEMMODE_32BIT: \ 4645 { \ 4646 IEM_MC_BEGIN(3, 0); \ 4643 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 4647 4644 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4648 4645 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4658 4655 IEM_MC_END(); \ 4659 4656 break; \ 4660 } \4661 4657 \ 4662 4658 case IEMMODE_64BIT: \ 4663 { \ 4664 IEM_MC_BEGIN(3, 0); \ 4659 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 4665 4660 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4666 4661 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4675 4670 IEM_MC_END(); \ 4676 4671 break; \ 4677 } \4678 4672 \ 4679 4673 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ … … 4690 4684 { \ 4691 4685 case IEMMODE_16BIT: \ 4692 { \ 4693 IEM_MC_BEGIN(3, 3); \ 4686 IEM_MC_BEGIN(3, 3, 0); \ 4694 4687 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4695 4688 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4711 4704 IEM_MC_END(); \ 4712 4705 break; \ 4713 } \4714 4706 \ 4715 4707 case IEMMODE_32BIT: \ 4716 { \ 4717 IEM_MC_BEGIN(3, 3); \ 4708 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 4718 4709 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4719 4710 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4735 4726 IEM_MC_END(); \ 4736 4727 break; \ 4737 } \4738 4728 \ 4739 4729 case IEMMODE_64BIT: \ 4740 { \ 4741 IEM_MC_BEGIN(3, 3); \ 4730 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 4742 4731 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4743 4732 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4759 4748 IEM_MC_END(); \ 4760 4749 break; \ 4761 } \4762 4750 \ 4763 4751 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ … … 4772 4760 { \ 4773 4761 case IEMMODE_16BIT: \ 4774 { \ 4775 IEM_MC_BEGIN(3, 3); \ 4762 IEM_MC_BEGIN(3, 3, 0); \ 4776 4763 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 4777 4764 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4793 4780 IEM_MC_END(); \ 4794 4781 break; \ 4795 } \4796 4782 \ 4797 4783 case IEMMODE_32BIT: \ 4798 { \ 4799 IEM_MC_BEGIN(3, 3); \ 4784 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 4800 4785 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 4801 4786 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4817 4802 IEM_MC_END(); \ 4818 4803 break; \ 4819 } \4820 4804 \ 4821 4805 case IEMMODE_64BIT: \ 4822 { \ 4823 IEM_MC_BEGIN(3, 3); \ 4806 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 4824 4807 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 4825 4808 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4841 4824 IEM_MC_END(); \ 4842 4825 break; \ 4843 } \4844 4826 \ 4845 4827 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ … … 4860 4842 { \ 4861 4843 case IEMMODE_16BIT: \ 4862 { \ 4863 IEM_MC_BEGIN(3, 0); \ 4844 IEM_MC_BEGIN(3, 0, 0); \ 4864 4845 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4865 4846 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 4874 4855 IEM_MC_END(); \ 4875 4856 break; \ 4876 } \4877 4857 \ 4878 4858 case IEMMODE_32BIT: \ 4879 { \ 4880 IEM_MC_BEGIN(3, 0); \ 4859 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 4881 4860 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4882 4861 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 4891 4870 IEM_MC_END(); \ 4892 4871 break; \ 4893 } \4894 4872 \ 4895 4873 case IEMMODE_64BIT: \ 4896 { \ 4897 IEM_MC_BEGIN(3, 0); \ 4874 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 4898 4875 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 4899 4876 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 4908 4885 IEM_MC_END(); \ 4909 4886 break; \ 4910 } \4911 4887 \ 4912 4888 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ … … 4923 4899 { \ 4924 4900 case IEMMODE_16BIT: \ 4925 { \ 4926 IEM_MC_BEGIN(3, 3); \ 4901 IEM_MC_BEGIN(3, 3, 0); \ 4927 4902 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 4928 4903 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 4944 4919 IEM_MC_END(); \ 4945 4920 break; \ 4946 } \4947 4921 \ 4948 4922 case IEMMODE_32BIT: \ 4949 { \ 4950 IEM_MC_BEGIN(3, 3); \ 4923 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 4951 4924 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 4952 4925 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 4968 4941 IEM_MC_END(); \ 4969 4942 break; \ 4970 } \4971 4943 \ 4972 4944 case IEMMODE_64BIT: \ 4973 { \ 4974 IEM_MC_BEGIN(3, 3); \ 4945 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 4975 4946 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 4976 4947 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 4992 4963 IEM_MC_END(); \ 4993 4964 break; \ 4994 } \4995 4965 \ 4996 4966 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ … … 5160 5130 if (IEM_IS_MODRM_REG_MODE(bRm)) 5161 5131 { 5162 IEM_MC_BEGIN(0, 2 );5132 IEM_MC_BEGIN(0, 2, 0); 5163 5133 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5164 5134 IEM_MC_LOCAL(uint8_t, uTmp1); … … 5178 5148 * We're accessing memory. 5179 5149 */ 5180 IEM_MC_BEGIN(2, 4 );5150 IEM_MC_BEGIN(2, 4, 0); 5181 5151 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5182 5152 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5218 5188 { 5219 5189 case IEMMODE_16BIT: 5220 IEM_MC_BEGIN(0, 2 );5190 IEM_MC_BEGIN(0, 2, 0); 5221 5191 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5222 5192 IEM_MC_LOCAL(uint16_t, uTmp1); … … 5233 5203 5234 5204 case IEMMODE_32BIT: 5235 IEM_MC_BEGIN(0, 2 );5205 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 5236 5206 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5237 5207 IEM_MC_LOCAL(uint32_t, uTmp1); … … 5248 5218 5249 5219 case IEMMODE_64BIT: 5250 IEM_MC_BEGIN(0, 2 );5220 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 5251 5221 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5252 5222 IEM_MC_LOCAL(uint64_t, uTmp1); … … 5273 5243 { 5274 5244 case IEMMODE_16BIT: 5275 IEM_MC_BEGIN(2, 4 );5245 IEM_MC_BEGIN(2, 4, 0); 5276 5246 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5277 5247 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5296 5266 5297 5267 case IEMMODE_32BIT: 5298 IEM_MC_BEGIN(2, 4 );5268 IEM_MC_BEGIN(2, 4, IEM_MC_F_MIN_386); 5299 5269 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5300 5270 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5319 5289 5320 5290 case IEMMODE_64BIT: 5321 IEM_MC_BEGIN(2, 4 );5291 IEM_MC_BEGIN(2, 4, IEM_MC_F_64BIT); 5322 5292 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 5323 5293 IEM_MC_LOCAL(uint8_t, bUnmapInfo); … … 5362 5332 if (IEM_IS_MODRM_REG_MODE(bRm)) 5363 5333 { 5364 IEM_MC_BEGIN(0, 1 );5334 IEM_MC_BEGIN(0, 1, 0); 5365 5335 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5366 5336 IEM_MC_LOCAL(uint8_t, u8Value); … … 5375 5345 * We're writing a register to memory. 5376 5346 */ 5377 IEM_MC_BEGIN(0, 2 );5347 IEM_MC_BEGIN(0, 2, 0); 5378 5348 IEM_MC_LOCAL(uint8_t, u8Value); 5379 5349 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5405 5375 { 5406 5376 case IEMMODE_16BIT: 5407 IEM_MC_BEGIN(0, 1 );5377 IEM_MC_BEGIN(0, 1, 0); 5408 5378 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5409 5379 IEM_MC_LOCAL(uint16_t, u16Value); … … 5415 5385 5416 5386 case IEMMODE_32BIT: 5417 IEM_MC_BEGIN(0, 1 );5387 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 5418 5388 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5419 5389 IEM_MC_LOCAL(uint32_t, u32Value); … … 5425 5395 5426 5396 case IEMMODE_64BIT: 5427 IEM_MC_BEGIN(0, 1 );5397 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 5428 5398 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5429 5399 IEM_MC_LOCAL(uint64_t, u64Value); … … 5445 5415 { 5446 5416 case IEMMODE_16BIT: 5447 IEM_MC_BEGIN(0, 2 );5417 IEM_MC_BEGIN(0, 2, 0); 5448 5418 IEM_MC_LOCAL(uint16_t, u16Value); 5449 5419 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5457 5427 5458 5428 case IEMMODE_32BIT: 5459 IEM_MC_BEGIN(0, 2 );5429 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 5460 5430 IEM_MC_LOCAL(uint32_t, u32Value); 5461 5431 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5469 5439 5470 5440 case IEMMODE_64BIT: 5471 IEM_MC_BEGIN(0, 2 );5441 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 5472 5442 IEM_MC_LOCAL(uint64_t, u64Value); 5473 5443 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5500 5470 if (IEM_IS_MODRM_REG_MODE(bRm)) 5501 5471 { 5502 IEM_MC_BEGIN(0, 1 );5472 IEM_MC_BEGIN(0, 1, 0); 5503 5473 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5504 5474 IEM_MC_LOCAL(uint8_t, u8Value); … … 5513 5483 * We're loading a register from memory. 5514 5484 */ 5515 IEM_MC_BEGIN(0, 2 );5485 IEM_MC_BEGIN(0, 2, 0); 5516 5486 IEM_MC_LOCAL(uint8_t, u8Value); 5517 5487 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5543 5513 { 5544 5514 case IEMMODE_16BIT: 5545 IEM_MC_BEGIN(0, 1 );5515 IEM_MC_BEGIN(0, 1, 0); 5546 5516 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5547 5517 IEM_MC_LOCAL(uint16_t, u16Value); … … 5553 5523 5554 5524 case IEMMODE_32BIT: 5555 IEM_MC_BEGIN(0, 1 );5525 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 5556 5526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5557 5527 IEM_MC_LOCAL(uint32_t, u32Value); … … 5563 5533 5564 5534 case IEMMODE_64BIT: 5565 IEM_MC_BEGIN(0, 1 );5535 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 5566 5536 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5567 5537 IEM_MC_LOCAL(uint64_t, u64Value); … … 5583 5553 { 5584 5554 case IEMMODE_16BIT: 5585 IEM_MC_BEGIN(0, 2 );5555 IEM_MC_BEGIN(0, 2, 0); 5586 5556 IEM_MC_LOCAL(uint16_t, u16Value); 5587 5557 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5595 5565 5596 5566 case IEMMODE_32BIT: 5597 IEM_MC_BEGIN(0, 2 );5567 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 5598 5568 IEM_MC_LOCAL(uint32_t, u32Value); 5599 5569 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5607 5577 5608 5578 case IEMMODE_64BIT: 5609 IEM_MC_BEGIN(0, 2 );5579 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 5610 5580 IEM_MC_LOCAL(uint64_t, u64Value); 5611 5581 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5664 5634 { 5665 5635 case IEMMODE_16BIT: 5666 IEM_MC_BEGIN(0, 1 );5636 IEM_MC_BEGIN(0, 1, 0); 5667 5637 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5668 5638 IEM_MC_LOCAL(uint16_t, u16Value); … … 5674 5644 5675 5645 case IEMMODE_32BIT: 5676 IEM_MC_BEGIN(0, 1 );5646 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 5677 5647 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5678 5648 IEM_MC_LOCAL(uint32_t, u32Value); … … 5684 5654 5685 5655 case IEMMODE_64BIT: 5686 IEM_MC_BEGIN(0, 1 );5656 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 5687 5657 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5688 5658 IEM_MC_LOCAL(uint64_t, u64Value); … … 5705 5675 pVCpu->iem.s.enmEffOpSize = pVCpu->iem.s.enmDefOpSize = IEMMODE_16BIT; 5706 5676 #endif 5707 IEM_MC_BEGIN(0, 2 );5677 IEM_MC_BEGIN(0, 2, 0); 5708 5678 IEM_MC_LOCAL(uint16_t, u16Value); 5709 5679 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 5733 5703 { 5734 5704 case IEMMODE_16BIT: 5735 IEM_MC_BEGIN(0, 2 );5705 IEM_MC_BEGIN(0, 2, 0); 5736 5706 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5737 5707 IEM_MC_LOCAL(uint16_t, u16Cast); … … 5745 5715 5746 5716 case IEMMODE_32BIT: 5747 IEM_MC_BEGIN(0, 2 );5717 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 5748 5718 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5749 5719 IEM_MC_LOCAL(uint32_t, u32Cast); … … 5757 5727 5758 5728 case IEMMODE_64BIT: 5759 IEM_MC_BEGIN(0, 1 );5729 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 5760 5730 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 5761 5731 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 5802 5772 if (IEM_IS_MODRM_REG_MODE(bRm)) 5803 5773 { 5804 IEM_MC_BEGIN(2, 0 );5774 IEM_MC_BEGIN(2, 0, 0); 5805 5775 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 5806 5776 IEM_MC_ARG_CONST(uint8_t, iSRegArg, iSegReg, 0); … … 5819 5789 * regardless of operand size prefixes. 5820 5790 */ 5821 IEM_MC_BEGIN(2, 1 );5791 IEM_MC_BEGIN(2, 1, 0); 5822 5792 IEM_MC_ARG_CONST(uint8_t, iSRegArg, iSegReg, 0); 5823 5793 IEM_MC_ARG(uint16_t, u16Value, 1); … … 5871 5841 { 5872 5842 case IEMMODE_16BIT: 5873 { 5874 IEM_MC_BEGIN(2, 0); 5843 IEM_MC_BEGIN(2, 0, 0); 5875 5844 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5876 5845 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 5880 5849 IEM_MC_CALL_CIMPL_2(0, iemCImpl_pop_mem16, iEffSeg, GCPtrEffDst); 5881 5850 IEM_MC_END(); 5882 }5851 break; 5883 5852 5884 5853 case IEMMODE_32BIT: 5885 { 5886 IEM_MC_BEGIN(2, 0); 5854 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); 5887 5855 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5888 5856 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 5892 5860 IEM_MC_CALL_CIMPL_2(0, iemCImpl_pop_mem32, iEffSeg, GCPtrEffDst); 5893 5861 IEM_MC_END(); 5894 }5862 break; 5895 5863 5896 5864 case IEMMODE_64BIT: 5897 { 5898 IEM_MC_BEGIN(2, 0); 5865 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 5899 5866 IEM_MC_ARG(uint8_t, iEffSeg, 0); 5900 5867 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 5904 5871 IEM_MC_CALL_CIMPL_2(0, iemCImpl_pop_mem64, iEffSeg, GCPtrEffDst); 5905 5872 IEM_MC_END(); 5906 }5873 break; 5907 5874 5908 5875 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 6047 6014 { 6048 6015 case IEMMODE_16BIT: 6049 IEM_MC_BEGIN(0, 2 );6016 IEM_MC_BEGIN(0, 2, 0); 6050 6017 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6051 6018 IEM_MC_LOCAL(uint16_t, u16Tmp1); … … 6060 6027 6061 6028 case IEMMODE_32BIT: 6062 IEM_MC_BEGIN(0, 2 );6029 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 6063 6030 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6064 6031 IEM_MC_LOCAL(uint32_t, u32Tmp1); … … 6073 6040 6074 6041 case IEMMODE_64BIT: 6075 IEM_MC_BEGIN(0, 2 );6042 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 6076 6043 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6077 6044 IEM_MC_LOCAL(uint64_t, u64Tmp1); … … 6121 6088 IEMOP_MNEMONIC(nop, "nop"); 6122 6089 /** @todo testcase: lock nop; lock pause */ 6123 IEM_MC_BEGIN(0, 0 );6090 IEM_MC_BEGIN(0, 0, 0); 6124 6091 IEMOP_HLP_DONE_DECODING(); 6125 6092 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 6207 6174 case IEMMODE_16BIT: 6208 6175 IEMOP_MNEMONIC(cbw, "cbw"); 6209 IEM_MC_BEGIN(0, 1 );6176 IEM_MC_BEGIN(0, 1, 0); 6210 6177 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6211 6178 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 7) { … … 6220 6187 case IEMMODE_32BIT: 6221 6188 IEMOP_MNEMONIC(cwde, "cwde"); 6222 IEM_MC_BEGIN(0, 1 );6189 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 6223 6190 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6224 6191 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 15) { … … 6233 6200 case IEMMODE_64BIT: 6234 6201 IEMOP_MNEMONIC(cdqe, "cdqe"); 6235 IEM_MC_BEGIN(0, 1 );6202 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 6236 6203 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6237 6204 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 31) { … … 6258 6225 case IEMMODE_16BIT: 6259 6226 IEMOP_MNEMONIC(cwd, "cwd"); 6260 IEM_MC_BEGIN(0, 1 );6227 IEM_MC_BEGIN(0, 1, 0); 6261 6228 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6262 6229 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 15) { … … 6271 6238 case IEMMODE_32BIT: 6272 6239 IEMOP_MNEMONIC(cdq, "cdq"); 6273 IEM_MC_BEGIN(0, 1 );6240 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 6274 6241 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6275 6242 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 31) { … … 6284 6251 case IEMMODE_64BIT: 6285 6252 IEMOP_MNEMONIC(cqo, "cqo"); 6286 IEM_MC_BEGIN(0, 1 );6253 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 6287 6254 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6288 6255 IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 63) { … … 6326 6293 { 6327 6294 IEMOP_MNEMONIC(wait, "wait"); 6328 IEM_MC_BEGIN(0, 0 );6295 IEM_MC_BEGIN(0, 0, 0); 6329 6296 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6330 6297 IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE(); … … 6369 6336 && !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLahfSahf) 6370 6337 IEMOP_RAISE_INVALID_OPCODE_RET(); 6371 IEM_MC_BEGIN(0, 2 );6338 IEM_MC_BEGIN(0, 2, 0); 6372 6339 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6373 6340 IEM_MC_LOCAL(uint32_t, u32Flags); … … 6394 6361 && !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLahfSahf) 6395 6362 IEMOP_RAISE_INVALID_OPCODE_RET(); 6396 IEM_MC_BEGIN(0, 1 );6363 IEM_MC_BEGIN(0, 1, 0); 6397 6364 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6398 6365 IEM_MC_LOCAL(uint8_t, u8Flags); … … 6443 6410 * Fetch AL. 6444 6411 */ 6445 IEM_MC_BEGIN(0, 1);6412 IEM_MC_BEGIN(0, 1, 0); 6446 6413 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6447 6414 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 6471 6438 { 6472 6439 case IEMMODE_16BIT: 6473 IEM_MC_BEGIN(0, 1);6440 IEM_MC_BEGIN(0, 1, 0); 6474 6441 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6475 6442 IEM_MC_LOCAL(uint16_t, u16Tmp); … … 6481 6448 6482 6449 case IEMMODE_32BIT: 6483 IEM_MC_BEGIN(0, 1);6450 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 6484 6451 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6485 6452 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6491 6458 6492 6459 case IEMMODE_64BIT: 6493 IEM_MC_BEGIN(0, 1);6460 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 6494 6461 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6495 6462 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6520 6487 * Store AL. 6521 6488 */ 6522 IEM_MC_BEGIN(0, 1);6489 IEM_MC_BEGIN(0, 1, 0); 6523 6490 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6524 6491 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 6548 6515 { 6549 6516 case IEMMODE_16BIT: 6550 IEM_MC_BEGIN(0, 1);6517 IEM_MC_BEGIN(0, 1, 0); 6551 6518 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6552 6519 IEM_MC_LOCAL(uint16_t, u16Tmp); … … 6558 6525 6559 6526 case IEMMODE_32BIT: 6560 IEM_MC_BEGIN(0, 1);6527 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 6561 6528 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6562 6529 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6568 6535 6569 6536 case IEMMODE_64BIT: 6570 IEM_MC_BEGIN(0, 1);6537 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 6571 6538 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6572 6539 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6582 6549 6583 6550 /** Macro used by iemOp_movsb_Xb_Yb and iemOp_movswd_Xv_Yv */ 6584 #define IEM_MOVS_CASE(ValBits, AddrBits ) \6585 IEM_MC_BEGIN(0, 2 ); \6551 #define IEM_MOVS_CASE(ValBits, AddrBits, a_fMcFlags) \ 6552 IEM_MC_BEGIN(0, 2, a_fMcFlags); \ 6586 6553 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 6587 6554 IEM_MC_LOCAL(uint##ValBits##_t, uValue); \ … … 6628 6595 switch (pVCpu->iem.s.enmEffAddrMode) 6629 6596 { 6630 case IEMMODE_16BIT: IEM_MOVS_CASE(8, 16 ); break;6631 case IEMMODE_32BIT: IEM_MOVS_CASE(8, 32 ); break;6632 case IEMMODE_64BIT: IEM_MOVS_CASE(8, 64 ); break;6597 case IEMMODE_16BIT: IEM_MOVS_CASE(8, 16, IEM_MC_F_NOT_64BIT); break; 6598 case IEMMODE_32BIT: IEM_MOVS_CASE(8, 32, IEM_MC_F_MIN_386); break; 6599 case IEMMODE_64BIT: IEM_MOVS_CASE(8, 64, IEM_MC_F_64BIT); break; 6633 6600 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6634 6601 } … … 6690 6657 switch (pVCpu->iem.s.enmEffAddrMode) 6691 6658 { 6692 case IEMMODE_16BIT: IEM_MOVS_CASE(16, 16 ); break;6693 case IEMMODE_32BIT: IEM_MOVS_CASE(16, 32 ); break;6694 case IEMMODE_64BIT: IEM_MOVS_CASE(16, 64 ); break;6659 case IEMMODE_16BIT: IEM_MOVS_CASE(16, 16, IEM_MC_F_NOT_64BIT); break; 6660 case IEMMODE_32BIT: IEM_MOVS_CASE(16, 32, IEM_MC_F_MIN_386); break; 6661 case IEMMODE_64BIT: IEM_MOVS_CASE(16, 64, IEM_MC_F_64BIT); break; 6695 6662 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6696 6663 } … … 6700 6667 switch (pVCpu->iem.s.enmEffAddrMode) 6701 6668 { 6702 case IEMMODE_16BIT: IEM_MOVS_CASE(32, 16 ); break;6703 case IEMMODE_32BIT: IEM_MOVS_CASE(32, 32 ); break;6704 case IEMMODE_64BIT: IEM_MOVS_CASE(32, 64 ); break;6669 case IEMMODE_16BIT: IEM_MOVS_CASE(32, 16, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); break; 6670 case IEMMODE_32BIT: IEM_MOVS_CASE(32, 32, IEM_MC_F_MIN_386); break; 6671 case IEMMODE_64BIT: IEM_MOVS_CASE(32, 64, IEM_MC_F_64BIT); break; 6705 6672 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6706 6673 } … … 6711 6678 { 6712 6679 case IEMMODE_16BIT: AssertFailedReturn(VERR_IEM_IPE_1); /* cannot be encoded */ break; 6713 case IEMMODE_32BIT: IEM_MOVS_CASE(64, 32 ); break;6714 case IEMMODE_64BIT: IEM_MOVS_CASE(64, 64 ); break;6680 case IEMMODE_32BIT: IEM_MOVS_CASE(64, 32, IEM_MC_F_64BIT); break; 6681 case IEMMODE_64BIT: IEM_MOVS_CASE(64, 64, IEM_MC_F_64BIT); break; 6715 6682 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6716 6683 } … … 6723 6690 6724 6691 /** Macro used by iemOp_cmpsb_Xb_Yb and iemOp_cmpswd_Xv_Yv */ 6725 #define IEM_CMPS_CASE(ValBits, AddrBits ) \6726 IEM_MC_BEGIN(3, 3 ); \6692 #define IEM_CMPS_CASE(ValBits, AddrBits, a_fMcFlags) \ 6693 IEM_MC_BEGIN(3, 3, a_fMcFlags); \ 6727 6694 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 6728 6695 IEM_MC_ARG(uint##ValBits##_t *, puValue1, 0); \ … … 6790 6757 switch (pVCpu->iem.s.enmEffAddrMode) 6791 6758 { 6792 case IEMMODE_16BIT: IEM_CMPS_CASE(8, 16 ); break;6793 case IEMMODE_32BIT: IEM_CMPS_CASE(8, 32 ); break;6794 case IEMMODE_64BIT: IEM_CMPS_CASE(8, 64 ); break;6759 case IEMMODE_16BIT: IEM_CMPS_CASE(8, 16, IEM_MC_F_NOT_64BIT); break; 6760 case IEMMODE_32BIT: IEM_CMPS_CASE(8, 32, IEM_MC_F_MIN_386); break; 6761 case IEMMODE_64BIT: IEM_CMPS_CASE(8, 64, IEM_MC_F_64BIT); break; 6795 6762 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6796 6763 } … … 6886 6853 switch (pVCpu->iem.s.enmEffAddrMode) 6887 6854 { 6888 case IEMMODE_16BIT: IEM_CMPS_CASE(16, 16 ); break;6889 case IEMMODE_32BIT: IEM_CMPS_CASE(16, 32 ); break;6890 case IEMMODE_64BIT: IEM_CMPS_CASE(16, 64 ); break;6855 case IEMMODE_16BIT: IEM_CMPS_CASE(16, 16, IEM_MC_F_NOT_64BIT); break; 6856 case IEMMODE_32BIT: IEM_CMPS_CASE(16, 32, IEM_MC_F_MIN_386); break; 6857 case IEMMODE_64BIT: IEM_CMPS_CASE(16, 64, IEM_MC_F_64BIT); break; 6891 6858 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6892 6859 } … … 6896 6863 switch (pVCpu->iem.s.enmEffAddrMode) 6897 6864 { 6898 case IEMMODE_16BIT: IEM_CMPS_CASE(32, 16 ); break;6899 case IEMMODE_32BIT: IEM_CMPS_CASE(32, 32 ); break;6900 case IEMMODE_64BIT: IEM_CMPS_CASE(32, 64 ); break;6865 case IEMMODE_16BIT: IEM_CMPS_CASE(32, 16, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); break; 6866 case IEMMODE_32BIT: IEM_CMPS_CASE(32, 32, IEM_MC_F_MIN_386); break; 6867 case IEMMODE_64BIT: IEM_CMPS_CASE(32, 64, IEM_MC_F_64BIT); break; 6901 6868 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6902 6869 } … … 6907 6874 { 6908 6875 case IEMMODE_16BIT: AssertFailedReturn(VERR_IEM_IPE_1); /* cannot be encoded */ break; 6909 case IEMMODE_32BIT: IEM_CMPS_CASE(64, 32 ); break;6910 case IEMMODE_64BIT: IEM_CMPS_CASE(64, 64 ); break;6876 case IEMMODE_32BIT: IEM_CMPS_CASE(64, 32, IEM_MC_F_MIN_386); break; 6877 case IEMMODE_64BIT: IEM_CMPS_CASE(64, 64, IEM_MC_F_64BIT); break; 6911 6878 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6912 6879 } … … 6941 6908 6942 6909 /** Macro used by iemOp_stosb_Yb_AL and iemOp_stoswd_Yv_eAX */ 6943 #define IEM_STOS_CASE(ValBits, AddrBits ) \6944 IEM_MC_BEGIN(0, 2 ); \6910 #define IEM_STOS_CASE(ValBits, AddrBits, a_fMcFlags) \ 6911 IEM_MC_BEGIN(0, 2, a_fMcFlags); \ 6945 6912 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 6946 6913 IEM_MC_LOCAL(uint##ValBits##_t, uValue); \ … … 6984 6951 switch (pVCpu->iem.s.enmEffAddrMode) 6985 6952 { 6986 case IEMMODE_16BIT: IEM_STOS_CASE(8, 16 ); break;6987 case IEMMODE_32BIT: IEM_STOS_CASE(8, 32 ); break;6988 case IEMMODE_64BIT: IEM_STOS_CASE(8, 64 ); break;6953 case IEMMODE_16BIT: IEM_STOS_CASE(8, 16, IEM_MC_F_NOT_64BIT); break; 6954 case IEMMODE_32BIT: IEM_STOS_CASE(8, 32, IEM_MC_F_MIN_386); break; 6955 case IEMMODE_64BIT: IEM_STOS_CASE(8, 64, IEM_MC_F_64BIT); break; 6989 6956 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 6990 6957 } … … 7045 7012 switch (pVCpu->iem.s.enmEffAddrMode) 7046 7013 { 7047 case IEMMODE_16BIT: IEM_STOS_CASE(16, 16 ); break;7048 case IEMMODE_32BIT: IEM_STOS_CASE(16, 32 ); break;7049 case IEMMODE_64BIT: IEM_STOS_CASE(16, 64 ); break;7014 case IEMMODE_16BIT: IEM_STOS_CASE(16, 16, IEM_MC_F_NOT_64BIT); break; 7015 case IEMMODE_32BIT: IEM_STOS_CASE(16, 32, IEM_MC_F_MIN_386); break; 7016 case IEMMODE_64BIT: IEM_STOS_CASE(16, 64, IEM_MC_F_64BIT); break; 7050 7017 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7051 7018 } … … 7055 7022 switch (pVCpu->iem.s.enmEffAddrMode) 7056 7023 { 7057 case IEMMODE_16BIT: IEM_STOS_CASE(32, 16 ); break;7058 case IEMMODE_32BIT: IEM_STOS_CASE(32, 32 ); break;7059 case IEMMODE_64BIT: IEM_STOS_CASE(32, 64 ); break;7024 case IEMMODE_16BIT: IEM_STOS_CASE(32, 16, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); break; 7025 case IEMMODE_32BIT: IEM_STOS_CASE(32, 32, IEM_MC_F_MIN_386); break; 7026 case IEMMODE_64BIT: IEM_STOS_CASE(32, 64, IEM_MC_F_64BIT); break; 7060 7027 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7061 7028 } … … 7066 7033 { 7067 7034 case IEMMODE_16BIT: AssertFailedReturn(VERR_IEM_IPE_1); /* cannot be encoded */ break; 7068 case IEMMODE_32BIT: IEM_STOS_CASE(64, 32 ); break;7069 case IEMMODE_64BIT: IEM_STOS_CASE(64, 64 ); break;7035 case IEMMODE_32BIT: IEM_STOS_CASE(64, 32, IEM_MC_F_64BIT); break; 7036 case IEMMODE_64BIT: IEM_STOS_CASE(64, 64, IEM_MC_F_64BIT); break; 7070 7037 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7071 7038 } … … 7078 7045 7079 7046 /** Macro used by iemOp_lodsb_AL_Xb and iemOp_lodswd_eAX_Xv */ 7080 #define IEM_LODS_CASE(ValBits, AddrBits ) \7081 IEM_MC_BEGIN(0, 2 ); \7047 #define IEM_LODS_CASE(ValBits, AddrBits, a_fMcFlags) \ 7048 IEM_MC_BEGIN(0, 2, a_fMcFlags); \ 7082 7049 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 7083 7050 IEM_MC_LOCAL(uint##ValBits##_t, uValue); \ … … 7121 7088 switch (pVCpu->iem.s.enmEffAddrMode) 7122 7089 { 7123 case IEMMODE_16BIT: IEM_LODS_CASE(8, 16 ); break;7124 case IEMMODE_32BIT: IEM_LODS_CASE(8, 32 ); break;7125 case IEMMODE_64BIT: IEM_LODS_CASE(8, 64 ); break;7090 case IEMMODE_16BIT: IEM_LODS_CASE(8, 16, IEM_MC_F_NOT_64BIT); break; 7091 case IEMMODE_32BIT: IEM_LODS_CASE(8, 32, IEM_MC_F_MIN_386); break; 7092 case IEMMODE_64BIT: IEM_LODS_CASE(8, 64, IEM_MC_F_64BIT); break; 7126 7093 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7127 7094 } … … 7182 7149 switch (pVCpu->iem.s.enmEffAddrMode) 7183 7150 { 7184 case IEMMODE_16BIT: IEM_LODS_CASE(16, 16 ); break;7185 case IEMMODE_32BIT: IEM_LODS_CASE(16, 32 ); break;7186 case IEMMODE_64BIT: IEM_LODS_CASE(16, 64 ); break;7151 case IEMMODE_16BIT: IEM_LODS_CASE(16, 16, IEM_MC_F_NOT_64BIT); break; 7152 case IEMMODE_32BIT: IEM_LODS_CASE(16, 32, IEM_MC_F_MIN_386); break; 7153 case IEMMODE_64BIT: IEM_LODS_CASE(16, 64, IEM_MC_F_64BIT); break; 7187 7154 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7188 7155 } … … 7192 7159 switch (pVCpu->iem.s.enmEffAddrMode) 7193 7160 { 7194 case IEMMODE_16BIT: IEM_LODS_CASE(32, 16 ); break;7195 case IEMMODE_32BIT: IEM_LODS_CASE(32, 32 ); break;7196 case IEMMODE_64BIT: IEM_LODS_CASE(32, 64 ); break;7161 case IEMMODE_16BIT: IEM_LODS_CASE(32, 16, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); break; 7162 case IEMMODE_32BIT: IEM_LODS_CASE(32, 32, IEM_MC_F_MIN_386); break; 7163 case IEMMODE_64BIT: IEM_LODS_CASE(32, 64, IEM_MC_F_64BIT); break; 7197 7164 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7198 7165 } … … 7203 7170 { 7204 7171 case IEMMODE_16BIT: AssertFailedReturn(VERR_IEM_IPE_1); /* cannot be encoded */ break; 7205 case IEMMODE_32BIT: IEM_LODS_CASE(64, 32 ); break;7206 case IEMMODE_64BIT: IEM_LODS_CASE(64, 64 ); break;7172 case IEMMODE_32BIT: IEM_LODS_CASE(64, 32, IEM_MC_F_64BIT); break; 7173 case IEMMODE_64BIT: IEM_LODS_CASE(64, 64, IEM_MC_F_64BIT); break; 7207 7174 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7208 7175 } … … 7215 7182 7216 7183 /** Macro used by iemOp_scasb_AL_Xb and iemOp_scaswd_eAX_Xv */ 7217 #define IEM_SCAS_CASE(ValBits, AddrBits ) \7218 IEM_MC_BEGIN(3, 2 ); \7184 #define IEM_SCAS_CASE(ValBits, AddrBits, a_fMcFlags) \ 7185 IEM_MC_BEGIN(3, 2, a_fMcFlags); \ 7219 7186 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 7220 7187 IEM_MC_ARG(uint##ValBits##_t *, puRax, 0); \ … … 7276 7243 switch (pVCpu->iem.s.enmEffAddrMode) 7277 7244 { 7278 case IEMMODE_16BIT: IEM_SCAS_CASE(8, 16 ); break;7279 case IEMMODE_32BIT: IEM_SCAS_CASE(8, 32 ); break;7280 case IEMMODE_64BIT: IEM_SCAS_CASE(8, 64 ); break;7245 case IEMMODE_16BIT: IEM_SCAS_CASE(8, 16, IEM_MC_F_NOT_64BIT); break; 7246 case IEMMODE_32BIT: IEM_SCAS_CASE(8, 32, IEM_MC_F_MIN_386); break; 7247 case IEMMODE_64BIT: IEM_SCAS_CASE(8, 64, IEM_MC_F_64BIT); break; 7281 7248 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7282 7249 } … … 7371 7338 switch (pVCpu->iem.s.enmEffAddrMode) 7372 7339 { 7373 case IEMMODE_16BIT: IEM_SCAS_CASE(16, 16 ); break;7374 case IEMMODE_32BIT: IEM_SCAS_CASE(16, 32 ); break;7375 case IEMMODE_64BIT: IEM_SCAS_CASE(16, 64 ); break;7340 case IEMMODE_16BIT: IEM_SCAS_CASE(16, 16, IEM_MC_F_NOT_64BIT); break; 7341 case IEMMODE_32BIT: IEM_SCAS_CASE(16, 32, IEM_MC_F_MIN_386); break; 7342 case IEMMODE_64BIT: IEM_SCAS_CASE(16, 64, IEM_MC_F_64BIT); break; 7376 7343 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7377 7344 } … … 7381 7348 switch (pVCpu->iem.s.enmEffAddrMode) 7382 7349 { 7383 case IEMMODE_16BIT: IEM_SCAS_CASE(32, 16 ); break;7384 case IEMMODE_32BIT: IEM_SCAS_CASE(32, 32 ); break;7385 case IEMMODE_64BIT: IEM_SCAS_CASE(32, 64 ); break;7350 case IEMMODE_16BIT: IEM_SCAS_CASE(32, 16, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); break; 7351 case IEMMODE_32BIT: IEM_SCAS_CASE(32, 32, IEM_MC_F_MIN_386); break; 7352 case IEMMODE_64BIT: IEM_SCAS_CASE(32, 64, IEM_MC_F_64BIT); break; 7386 7353 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7387 7354 } … … 7392 7359 { 7393 7360 case IEMMODE_16BIT: AssertFailedReturn(VERR_IEM_IPE_1); /* cannot be encoded */ break; 7394 case IEMMODE_32BIT: IEM_SCAS_CASE(64, 32 ); break;7395 case IEMMODE_64BIT: IEM_SCAS_CASE(64, 64 ); break;7361 case IEMMODE_32BIT: IEM_SCAS_CASE(64, 32, IEM_MC_F_64BIT); break; 7362 case IEMMODE_64BIT: IEM_SCAS_CASE(64, 64, IEM_MC_F_64BIT); break; 7396 7363 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7397 7364 } … … 7409 7376 { 7410 7377 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 7411 IEM_MC_BEGIN(0, 1 );7378 IEM_MC_BEGIN(0, 1, 0); 7412 7379 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7413 7380 IEM_MC_LOCAL_CONST(uint8_t, u8Value,/*=*/ u8Imm); … … 7506 7473 { 7507 7474 case IEMMODE_16BIT: 7508 {7475 IEM_MC_BEGIN(0, 1, 0); 7509 7476 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 7510 IEM_MC_BEGIN(0, 1);7511 7477 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7512 7478 IEM_MC_LOCAL_CONST(uint16_t, u16Value,/*=*/ u16Imm); … … 7515 7481 IEM_MC_END(); 7516 7482 break; 7517 }7518 7483 7519 7484 case IEMMODE_32BIT: 7520 {7485 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 7521 7486 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 7522 IEM_MC_BEGIN(0, 1);7523 7487 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7524 7488 IEM_MC_LOCAL_CONST(uint32_t, u32Value,/*=*/ u32Imm); … … 7527 7491 IEM_MC_END(); 7528 7492 break; 7529 } 7493 7530 7494 case IEMMODE_64BIT: 7531 {7495 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 7532 7496 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_U64(&u64Imm); /* 64-bit immediate! */ 7533 IEM_MC_BEGIN(0, 1);7534 7497 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7535 7498 IEM_MC_LOCAL_CONST(uint64_t, u64Value,/*=*/ u64Imm); … … 7538 7501 IEM_MC_END(); 7539 7502 break; 7540 }7541 7503 IEM_NOT_REACHED_DEFAULT_CASE_RET(); 7542 7504 } … … 7650 7612 /* register */ 7651 7613 uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift); 7652 IEM_MC_BEGIN(3, 0 );7614 IEM_MC_BEGIN(3, 0, 0); 7653 7615 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7654 7616 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 7664 7626 { 7665 7627 /* memory */ 7666 IEM_MC_BEGIN(3, 3 );7628 IEM_MC_BEGIN(3, 3, 0); 7667 7629 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 7668 7630 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7716 7678 { 7717 7679 case IEMMODE_16BIT: 7718 IEM_MC_BEGIN(3, 0 );7680 IEM_MC_BEGIN(3, 0, 0); 7719 7681 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7720 7682 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 7729 7691 7730 7692 case IEMMODE_32BIT: 7731 IEM_MC_BEGIN(3, 0 );7693 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 7732 7694 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7733 7695 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 7743 7705 7744 7706 case IEMMODE_64BIT: 7745 IEM_MC_BEGIN(3, 0 );7707 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 7746 7708 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7747 7709 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 7764 7726 { 7765 7727 case IEMMODE_16BIT: 7766 IEM_MC_BEGIN(3, 3 );7728 IEM_MC_BEGIN(3, 3, 0); 7767 7729 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 7768 7730 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7786 7748 7787 7749 case IEMMODE_32BIT: 7788 IEM_MC_BEGIN(3, 3 );7750 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); 7789 7751 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 7790 7752 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 7808 7770 7809 7771 case IEMMODE_64BIT: 7810 IEM_MC_BEGIN(3, 3 );7772 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); 7811 7773 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 7812 7774 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8008 7970 /* register access */ 8009 7971 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 8010 IEM_MC_BEGIN(0, 0 );7972 IEM_MC_BEGIN(0, 0, 0); 8011 7973 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8012 7974 IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm); … … 8017 7979 { 8018 7980 /* memory access. */ 8019 IEM_MC_BEGIN(0, 1 );7981 IEM_MC_BEGIN(0, 1, 0); 8020 7982 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8021 7983 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1); … … 8045 8007 { 8046 8008 case IEMMODE_16BIT: 8047 IEM_MC_BEGIN(0, 0 );8009 IEM_MC_BEGIN(0, 0, 0); 8048 8010 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 8049 8011 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8054 8016 8055 8017 case IEMMODE_32BIT: 8056 IEM_MC_BEGIN(0, 0 );8018 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8057 8019 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 8058 8020 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8063 8025 8064 8026 case IEMMODE_64BIT: 8065 IEM_MC_BEGIN(0, 0 );8027 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 8066 8028 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 8067 8029 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); … … 8080 8042 { 8081 8043 case IEMMODE_16BIT: 8082 IEM_MC_BEGIN(0, 1 );8044 IEM_MC_BEGIN(0, 1, 0); 8083 8045 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8084 8046 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2); … … 8091 8053 8092 8054 case IEMMODE_32BIT: 8093 IEM_MC_BEGIN(0, 1 );8055 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8094 8056 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8095 8057 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); … … 8102 8064 8103 8065 case IEMMODE_64BIT: 8104 IEM_MC_BEGIN(0, 1 );8066 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 8105 8067 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8106 8068 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4); … … 8250 8212 { 8251 8213 /* register */ 8252 IEM_MC_BEGIN(3, 0 );8214 IEM_MC_BEGIN(3, 0, 0); 8253 8215 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8254 8216 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 8264 8226 { 8265 8227 /* memory */ 8266 IEM_MC_BEGIN(3, 3 );8228 IEM_MC_BEGIN(3, 3, 0); 8267 8229 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 8268 8230 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=*/1, 1); … … 8313 8275 { 8314 8276 case IEMMODE_16BIT: 8315 IEM_MC_BEGIN(3, 0 );8277 IEM_MC_BEGIN(3, 0, 0); 8316 8278 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8317 8279 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 8326 8288 8327 8289 case IEMMODE_32BIT: 8328 IEM_MC_BEGIN(3, 0 );8290 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 8329 8291 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8330 8292 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 8340 8302 8341 8303 case IEMMODE_64BIT: 8342 IEM_MC_BEGIN(3, 0 );8304 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 8343 8305 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8344 8306 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 8361 8323 { 8362 8324 case IEMMODE_16BIT: 8363 IEM_MC_BEGIN(3, 3 );8325 IEM_MC_BEGIN(3, 3, 0); 8364 8326 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 8365 8327 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); … … 8381 8343 8382 8344 case IEMMODE_32BIT: 8383 IEM_MC_BEGIN(3, 3 );8345 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); 8384 8346 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 8385 8347 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); … … 8401 8363 8402 8364 case IEMMODE_64BIT: 8403 IEM_MC_BEGIN(3, 3 );8365 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); 8404 8366 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 8405 8367 IEM_MC_ARG_CONST(uint8_t, cShiftArg,/*=1*/1, 1); … … 8450 8412 { 8451 8413 /* register */ 8452 IEM_MC_BEGIN(3, 0 );8414 IEM_MC_BEGIN(3, 0, 0); 8453 8415 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8454 8416 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 8465 8427 { 8466 8428 /* memory */ 8467 IEM_MC_BEGIN(3, 3 );8429 IEM_MC_BEGIN(3, 3, 0); 8468 8430 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 8469 8431 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8514 8476 { 8515 8477 case IEMMODE_16BIT: 8516 IEM_MC_BEGIN(3, 0 );8478 IEM_MC_BEGIN(3, 0, 0); 8517 8479 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8518 8480 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 8528 8490 8529 8491 case IEMMODE_32BIT: 8530 IEM_MC_BEGIN(3, 0 );8492 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 8531 8493 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8532 8494 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 8543 8505 8544 8506 case IEMMODE_64BIT: 8545 IEM_MC_BEGIN(3, 0 );8507 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 8546 8508 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8547 8509 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 8565 8527 { 8566 8528 case IEMMODE_16BIT: 8567 IEM_MC_BEGIN(3, 3 );8529 IEM_MC_BEGIN(3, 3, 0); 8568 8530 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 8569 8531 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8586 8548 8587 8549 case IEMMODE_32BIT: 8588 IEM_MC_BEGIN(3, 3 );8550 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); 8589 8551 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 8590 8552 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8607 8569 8608 8570 case IEMMODE_64BIT: 8609 IEM_MC_BEGIN(3, 3 );8571 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); 8610 8572 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 8611 8573 IEM_MC_ARG(uint8_t, cShiftArg, 1); … … 8668 8630 IEMOP_HLP_NO_64BIT(); 8669 8631 8670 IEM_MC_BEGIN(0, 0 );8632 IEM_MC_BEGIN(0, 0, 0); 8671 8633 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8672 8634 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 8689 8651 { 8690 8652 case IEMMODE_16BIT: 8691 IEM_MC_BEGIN(2, 0 );8653 IEM_MC_BEGIN(2, 0, 0); 8692 8654 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8693 8655 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 8702 8664 8703 8665 case IEMMODE_32BIT: 8704 IEM_MC_BEGIN(2, 0 );8666 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); 8705 8667 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8706 8668 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 8715 8677 8716 8678 case IEMMODE_64BIT: 8717 IEM_MC_BEGIN(2, 0 );8679 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 8718 8680 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8719 8681 IEM_MC_LOCAL(uint8_t, u8Tmp); … … 8741 8703 FNIEMOP_DEF_2(iemOpHlpFpu_st0_stN, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl) 8742 8704 { 8743 IEM_MC_BEGIN(3, 1 );8705 IEM_MC_BEGIN(3, 1, 0); 8744 8706 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8745 8707 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 8772 8734 FNIEMOP_DEF_2(iemOpHlpFpuNoStore_st0_stN, uint8_t, bRm, PFNIEMAIMPLFPUR80FSW, pfnAImpl) 8773 8735 { 8774 IEM_MC_BEGIN(3, 1 );8736 IEM_MC_BEGIN(3, 1, 0); 8775 8737 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8776 8738 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 8803 8765 FNIEMOP_DEF_2(iemOpHlpFpuNoStore_st0_stN_pop, uint8_t, bRm, PFNIEMAIMPLFPUR80FSW, pfnAImpl) 8804 8766 { 8805 IEM_MC_BEGIN(3, 1 );8767 IEM_MC_BEGIN(3, 1, 0); 8806 8768 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8807 8769 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 8898 8860 FNIEMOP_DEF_2(iemOpHlpFpu_st0_m32r, uint8_t, bRm, PFNIEMAIMPLFPUR32, pfnAImpl) 8899 8861 { 8900 IEM_MC_BEGIN(3, 3 );8862 IEM_MC_BEGIN(3, 3, 0); 8901 8863 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 8902 8864 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 8947 8909 IEMOP_MNEMONIC(fcom_st0_m32r, "fcom st0,m32r"); 8948 8910 8949 IEM_MC_BEGIN(3, 3 );8911 IEM_MC_BEGIN(3, 3, 0); 8950 8912 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 8951 8913 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 8980 8942 IEMOP_MNEMONIC(fcomp_st0_m32r, "fcomp st0,m32r"); 8981 8943 8982 IEM_MC_BEGIN(3, 3 );8944 IEM_MC_BEGIN(3, 3, 0); 8983 8945 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 8984 8946 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9087 9049 IEMOP_MNEMONIC(fld_m32r, "fld m32r"); 9088 9050 9089 IEM_MC_BEGIN(2, 3 );9051 IEM_MC_BEGIN(2, 3, 0); 9090 9052 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 9091 9053 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9117 9079 { 9118 9080 IEMOP_MNEMONIC(fst_m32r, "fst m32r"); 9119 IEM_MC_BEGIN(3, 2 );9081 IEM_MC_BEGIN(3, 2, 0); 9120 9082 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 9121 9083 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9152 9114 { 9153 9115 IEMOP_MNEMONIC(fstp_m32r, "fstp m32r"); 9154 IEM_MC_BEGIN(3, 2 );9116 IEM_MC_BEGIN(3, 2, 0); 9155 9117 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 9156 9118 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9187 9149 { 9188 9150 IEMOP_MNEMONIC(fldenv, "fldenv m14/28byte"); 9189 IEM_MC_BEGIN(3, 0 );9151 IEM_MC_BEGIN(3, 0, 0); 9190 9152 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9191 9153 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 9205 9167 { 9206 9168 IEMOP_MNEMONIC(fldcw_m2byte, "fldcw m2byte"); 9207 IEM_MC_BEGIN(1, 1 );9169 IEM_MC_BEGIN(1, 1, 0); 9208 9170 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 9209 9171 IEM_MC_ARG(uint16_t, u16Fsw, 0); … … 9222 9184 { 9223 9185 IEMOP_MNEMONIC(fstenv, "fstenv m14/m28byte"); 9224 IEM_MC_BEGIN(3, 0 );9186 IEM_MC_BEGIN(3, 0, 0); 9225 9187 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 9226 9188 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 9240 9202 { 9241 9203 IEMOP_MNEMONIC(fnstcw_m2byte, "fnstcw m2byte"); 9242 IEM_MC_BEGIN(2, 0 );9204 IEM_MC_BEGIN(2, 0, 0); 9243 9205 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 9244 9206 IEM_MC_LOCAL(uint16_t, u16Fcw); … … 9258 9220 { 9259 9221 IEMOP_MNEMONIC(fnop, "fnop"); 9260 IEM_MC_BEGIN(0, 0 );9222 IEM_MC_BEGIN(0, 0, 0); 9261 9223 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9262 9224 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 9277 9239 /** @todo Testcase: Check if this raises \#MF? Intel mentioned it not. AMD 9278 9240 * indicates that it does. */ 9279 IEM_MC_BEGIN(0, 2 );9241 IEM_MC_BEGIN(0, 2, 0); 9280 9242 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9281 9243 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value); … … 9303 9265 /** @todo Testcase: Check if this raises \#MF? Intel mentioned it not. AMD 9304 9266 * indicates that it does. */ 9305 IEM_MC_BEGIN(2, 3 );9267 IEM_MC_BEGIN(2, 3, 0); 9306 9268 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9307 9269 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value1); … … 9336 9298 if (!iDstReg) 9337 9299 { 9338 IEM_MC_BEGIN(0, 1 );9300 IEM_MC_BEGIN(0, 1, 0); 9339 9301 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9340 9302 IEM_MC_LOCAL_CONST(uint16_t, u16Fsw, /*=*/ 0); … … 9354 9316 else 9355 9317 { 9356 IEM_MC_BEGIN(0, 2 );9318 IEM_MC_BEGIN(0, 2, 0); 9357 9319 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9358 9320 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value); … … 9383 9345 FNIEMOP_DEF_1(iemOpHlpFpu_st0, PFNIEMAIMPLFPUR80UNARY, pfnAImpl) 9384 9346 { 9385 IEM_MC_BEGIN(2, 1 );9347 IEM_MC_BEGIN(2, 1, 0); 9386 9348 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9387 9349 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9424 9386 { 9425 9387 IEMOP_MNEMONIC(ftst_st0, "ftst st0"); 9426 IEM_MC_BEGIN(2, 1 );9388 IEM_MC_BEGIN(2, 1, 0); 9427 9389 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9428 9390 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9449 9411 { 9450 9412 IEMOP_MNEMONIC(fxam_st0, "fxam st0"); 9451 IEM_MC_BEGIN(2, 1 );9413 IEM_MC_BEGIN(2, 1, 0); 9452 9414 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9453 9415 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 9474 9436 FNIEMOP_DEF_1(iemOpHlpFpuPushConstant, PFNIEMAIMPLFPUR80LDCONST, pfnAImpl) 9475 9437 { 9476 IEM_MC_BEGIN(1, 1 );9438 IEM_MC_BEGIN(1, 1, 0); 9477 9439 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9478 9440 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9572 9534 FNIEMOP_DEF_2(iemOpHlpFpu_stN_st0_pop, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl) 9573 9535 { 9574 IEM_MC_BEGIN(3, 1 );9536 IEM_MC_BEGIN(3, 1, 0); 9575 9537 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9576 9538 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 9611 9573 FNIEMOP_DEF_1(iemOpHlpFpuReplace_st0_push, PFNIEMAIMPLFPUR80UNARYTWO, pfnAImpl) 9612 9574 { 9613 IEM_MC_BEGIN(2, 1 );9575 IEM_MC_BEGIN(2, 1, 0); 9614 9576 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9615 9577 IEM_MC_LOCAL(IEMFPURESULTTWO, FpuResTwo); … … 9671 9633 /** @todo Testcase: Check whether FOP, FPUIP and FPUCS are affected by 9672 9634 * FINCSTP and FDECSTP. */ 9673 IEM_MC_BEGIN(0, 0);9635 IEM_MC_BEGIN(0, 0, 0); 9674 9636 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9675 9637 … … 9693 9655 /** @todo Testcase: Check whether FOP, FPUIP and FPUCS are affected by 9694 9656 * FINCSTP and FDECSTP. */ 9695 IEM_MC_BEGIN(0, 0);9657 IEM_MC_BEGIN(0, 0, 0); 9696 9658 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9697 9659 … … 9860 9822 { 9861 9823 IEMOP_MNEMONIC(fcmovb_st0_stN, "fcmovb st0,stN"); 9862 IEM_MC_BEGIN(0, 1 );9824 IEM_MC_BEGIN(0, 1, 0); 9863 9825 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9864 9826 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9886 9848 { 9887 9849 IEMOP_MNEMONIC(fcmove_st0_stN, "fcmove st0,stN"); 9888 IEM_MC_BEGIN(0, 1 );9850 IEM_MC_BEGIN(0, 1, 0); 9889 9851 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9890 9852 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9912 9874 { 9913 9875 IEMOP_MNEMONIC(fcmovbe_st0_stN, "fcmovbe st0,stN"); 9914 IEM_MC_BEGIN(0, 1 );9876 IEM_MC_BEGIN(0, 1, 0); 9915 9877 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9916 9878 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9938 9900 { 9939 9901 IEMOP_MNEMONIC(fcmovu_st0_stN, "fcmovu st0,stN"); 9940 IEM_MC_BEGIN(0, 1 );9902 IEM_MC_BEGIN(0, 1, 0); 9941 9903 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9942 9904 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 9968 9930 FNIEMOP_DEF_1(iemOpHlpFpuNoStore_st0_st1_pop_pop, PFNIEMAIMPLFPUR80FSW, pfnAImpl) 9969 9931 { 9970 IEM_MC_BEGIN(3, 1 );9932 IEM_MC_BEGIN(3, 1, 0); 9971 9933 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9972 9934 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10008 9970 FNIEMOP_DEF_2(iemOpHlpFpu_st0_m32i, uint8_t, bRm, PFNIEMAIMPLFPUI32, pfnAImpl) 10009 9971 { 10010 IEM_MC_BEGIN(3, 3 );9972 IEM_MC_BEGIN(3, 3, 0); 10011 9973 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10012 9974 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10057 10019 IEMOP_MNEMONIC(ficom_st0_m32i, "ficom st0,m32i"); 10058 10020 10059 IEM_MC_BEGIN(3, 3 );10021 IEM_MC_BEGIN(3, 3, 0); 10060 10022 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10061 10023 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10090 10052 IEMOP_MNEMONIC(ficomp_st0_m32i, "ficomp st0,m32i"); 10091 10053 10092 IEM_MC_BEGIN(3, 3 );10054 IEM_MC_BEGIN(3, 3, 0); 10093 10055 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10094 10056 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10198 10160 IEMOP_MNEMONIC(fild_m32i, "fild m32i"); 10199 10161 10200 IEM_MC_BEGIN(2, 3 );10162 IEM_MC_BEGIN(2, 3, 0); 10201 10163 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10202 10164 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10229 10191 { 10230 10192 IEMOP_MNEMONIC(fisttp_m32i, "fisttp m32i"); 10231 IEM_MC_BEGIN(3, 2 );10193 IEM_MC_BEGIN(3, 2, 0); 10232 10194 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10233 10195 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10264 10226 { 10265 10227 IEMOP_MNEMONIC(fist_m32i, "fist m32i"); 10266 IEM_MC_BEGIN(3, 2 );10228 IEM_MC_BEGIN(3, 2, 0); 10267 10229 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10268 10230 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10299 10261 { 10300 10262 IEMOP_MNEMONIC(fistp_m32i, "fistp m32i"); 10301 IEM_MC_BEGIN(3, 2 );10263 IEM_MC_BEGIN(3, 2, 0); 10302 10264 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10303 10265 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10335 10297 IEMOP_MNEMONIC(fld_m80r, "fld m80r"); 10336 10298 10337 IEM_MC_BEGIN(2, 3 );10299 IEM_MC_BEGIN(2, 3, 0); 10338 10300 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10339 10301 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10366 10328 { 10367 10329 IEMOP_MNEMONIC(fstp_m80r, "fstp m80r"); 10368 IEM_MC_BEGIN(3, 2 );10330 IEM_MC_BEGIN(3, 2, 0); 10369 10331 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10370 10332 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10401 10363 { 10402 10364 IEMOP_MNEMONIC(fcmovnb_st0_stN, "fcmovnb st0,stN"); 10403 IEM_MC_BEGIN(0, 1 );10365 IEM_MC_BEGIN(0, 1, 0); 10404 10366 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10405 10367 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10427 10389 { 10428 10390 IEMOP_MNEMONIC(fcmovne_st0_stN, "fcmovne st0,stN"); 10429 IEM_MC_BEGIN(0, 1 );10391 IEM_MC_BEGIN(0, 1, 0); 10430 10392 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10431 10393 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10453 10415 { 10454 10416 IEMOP_MNEMONIC(fcmovnbe_st0_stN, "fcmovnbe st0,stN"); 10455 IEM_MC_BEGIN(0, 1 );10417 IEM_MC_BEGIN(0, 1, 0); 10456 10418 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10457 10419 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10479 10441 { 10480 10442 IEMOP_MNEMONIC(fcmovnnu_st0_stN, "fcmovnnu st0,stN"); 10481 IEM_MC_BEGIN(0, 1 );10443 IEM_MC_BEGIN(0, 1, 0); 10482 10444 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10483 10445 IEM_MC_LOCAL(PCRTFLOAT80U, pr80ValueN); … … 10505 10467 { 10506 10468 IEMOP_MNEMONIC(fneni, "fneni (8087/ign)"); 10507 IEM_MC_BEGIN(0, 0);10469 IEM_MC_BEGIN(0, 0, 0); 10508 10470 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10509 10471 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10517 10479 { 10518 10480 IEMOP_MNEMONIC(fndisi, "fndisi (8087/ign)"); 10519 IEM_MC_BEGIN(0, 0);10481 IEM_MC_BEGIN(0, 0, 0); 10520 10482 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10521 10483 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10529 10491 { 10530 10492 IEMOP_MNEMONIC(fnclex, "fnclex"); 10531 IEM_MC_BEGIN(0, 0);10493 IEM_MC_BEGIN(0, 0, 0); 10532 10494 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10533 10495 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10552 10514 { 10553 10515 IEMOP_MNEMONIC(fnsetpm, "fnsetpm (80287/ign)"); /* set protected mode on fpu. */ 10554 IEM_MC_BEGIN(0, 0);10516 IEM_MC_BEGIN(0, 0, 0); 10555 10517 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10556 10518 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10565 10527 IEMOP_MNEMONIC(frstpm, "frstpm (80287XL/ign)"); /* reset pm, back to real mode. */ 10566 10528 #if 0 /* #UDs on newer CPUs */ 10567 IEM_MC_BEGIN(0, 0);10529 IEM_MC_BEGIN(0, 0, 0); 10568 10530 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10569 10531 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 10659 10621 FNIEMOP_DEF_2(iemOpHlpFpu_stN_st0, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl) 10660 10622 { 10661 IEM_MC_BEGIN(3, 1 );10623 IEM_MC_BEGIN(3, 1, 0); 10662 10624 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10663 10625 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10739 10701 FNIEMOP_DEF_2(iemOpHlpFpu_ST0_m64r, uint8_t, bRm, PFNIEMAIMPLFPUR64, pfnImpl) 10740 10702 { 10741 IEM_MC_BEGIN(3, 3 );10703 IEM_MC_BEGIN(3, 3, 0); 10742 10704 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10743 10705 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10787 10749 IEMOP_MNEMONIC(fcom_st0_m64r, "fcom st0,m64r"); 10788 10750 10789 IEM_MC_BEGIN(3, 3 );10751 IEM_MC_BEGIN(3, 3, 0); 10790 10752 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10791 10753 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10820 10782 IEMOP_MNEMONIC(fcomp_st0_m64r, "fcomp st0,m64r"); 10821 10783 10822 IEM_MC_BEGIN(3, 3 );10784 IEM_MC_BEGIN(3, 3, 0); 10823 10785 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10824 10786 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10926 10888 IEMOP_MNEMONIC(fld_m64r, "fld m64r"); 10927 10889 10928 IEM_MC_BEGIN(2, 3 );10890 IEM_MC_BEGIN(2, 3, 0); 10929 10891 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 10930 10892 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 10956 10918 { 10957 10919 IEMOP_MNEMONIC(fisttp_m64i, "fisttp m64i"); 10958 IEM_MC_BEGIN(3, 2 );10920 IEM_MC_BEGIN(3, 2, 0); 10959 10921 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10960 10922 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 10991 10953 { 10992 10954 IEMOP_MNEMONIC(fst_m64r, "fst m64r"); 10993 IEM_MC_BEGIN(3, 2 );10955 IEM_MC_BEGIN(3, 2, 0); 10994 10956 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 10995 10957 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11028 10990 { 11029 10991 IEMOP_MNEMONIC(fstp_m64r, "fstp m64r"); 11030 IEM_MC_BEGIN(3, 2 );10992 IEM_MC_BEGIN(3, 2, 0); 11031 10993 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11032 10994 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11063 11025 { 11064 11026 IEMOP_MNEMONIC(frstor, "frstor m94/108byte"); 11065 IEM_MC_BEGIN(3, 0 );11027 IEM_MC_BEGIN(3, 0, 0); 11066 11028 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11067 11029 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 11081 11043 { 11082 11044 IEMOP_MNEMONIC(fnsave, "fnsave m94/108byte"); 11083 IEM_MC_BEGIN(3, 0 );11045 IEM_MC_BEGIN(3, 0, 0); 11084 11046 IEM_MC_ARG_CONST(IEMMODE, enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize, 0); 11085 11047 IEM_MC_ARG(uint8_t, iEffSeg, 1); … … 11099 11061 IEMOP_MNEMONIC(fnstsw_m16, "fnstsw m16"); 11100 11062 11101 IEM_MC_BEGIN(0, 2 );11063 IEM_MC_BEGIN(0, 2, 0); 11102 11064 IEM_MC_LOCAL(uint16_t, u16Tmp); 11103 11065 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11125 11087 /* Note! C0, C1, C2 and C3 are documented as undefined, we leave the 11126 11088 unmodified. */ 11127 IEM_MC_BEGIN(0, 0 );11089 IEM_MC_BEGIN(0, 0, 0); 11128 11090 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11129 11091 … … 11144 11106 { 11145 11107 IEMOP_MNEMONIC(fst_st0_stN, "fst st0,stN"); 11146 IEM_MC_BEGIN(0, 2 );11108 IEM_MC_BEGIN(0, 2, 0); 11147 11109 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11148 11110 IEM_MC_LOCAL(PCRTFLOAT80U, pr80Value); … … 11285 11247 FNIEMOP_DEF_2(iemOpHlpFpu_st0_m16i, uint8_t, bRm, PFNIEMAIMPLFPUI16, pfnAImpl) 11286 11248 { 11287 IEM_MC_BEGIN(3, 3 );11249 IEM_MC_BEGIN(3, 3, 0); 11288 11250 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11289 11251 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11334 11296 IEMOP_MNEMONIC(ficom_st0_m16i, "ficom st0,m16i"); 11335 11297 11336 IEM_MC_BEGIN(3, 3 );11298 IEM_MC_BEGIN(3, 3, 0); 11337 11299 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11338 11300 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11367 11329 IEMOP_MNEMONIC(ficomp_st0_m16i, "ficomp st0,m16i"); 11368 11330 11369 IEM_MC_BEGIN(3, 3 );11331 IEM_MC_BEGIN(3, 3, 0); 11370 11332 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11371 11333 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11474 11436 { 11475 11437 IEMOP_MNEMONIC(ffreep_stN, "ffreep stN"); 11476 IEM_MC_BEGIN(0, 0 );11438 IEM_MC_BEGIN(0, 0, 0); 11477 11439 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11478 11440 … … 11494 11456 { 11495 11457 IEMOP_MNEMONIC(fnstsw_ax, "fnstsw ax"); 11496 IEM_MC_BEGIN(0, 1 );11458 IEM_MC_BEGIN(0, 1, 0); 11497 11459 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11498 11460 IEM_MC_LOCAL(uint16_t, u16Tmp); … … 11531 11493 IEMOP_MNEMONIC(fild_m16i, "fild m16i"); 11532 11494 11533 IEM_MC_BEGIN(2, 3 );11495 IEM_MC_BEGIN(2, 3, 0); 11534 11496 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11535 11497 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11562 11524 { 11563 11525 IEMOP_MNEMONIC(fisttp_m16i, "fisttp m16i"); 11564 IEM_MC_BEGIN(3, 2 );11526 IEM_MC_BEGIN(3, 2, 0); 11565 11527 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11566 11528 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11597 11559 { 11598 11560 IEMOP_MNEMONIC(fist_m16i, "fist m16i"); 11599 IEM_MC_BEGIN(3, 2 );11561 IEM_MC_BEGIN(3, 2, 0); 11600 11562 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11601 11563 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11632 11594 { 11633 11595 IEMOP_MNEMONIC(fistp_m16i, "fistp m16i"); 11634 IEM_MC_BEGIN(3, 2 );11596 IEM_MC_BEGIN(3, 2, 0); 11635 11597 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11636 11598 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11668 11630 IEMOP_MNEMONIC(fbld_m80d, "fbld m80d"); 11669 11631 11670 IEM_MC_BEGIN(2, 3 );11632 IEM_MC_BEGIN(2, 3, 0); 11671 11633 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11672 11634 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11700 11662 IEMOP_MNEMONIC(fild_m64i, "fild m64i"); 11701 11663 11702 IEM_MC_BEGIN(2, 3 );11664 IEM_MC_BEGIN(2, 3, 0); 11703 11665 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 11704 11666 IEM_MC_LOCAL(IEMFPURESULT, FpuRes); … … 11731 11693 { 11732 11694 IEMOP_MNEMONIC(fbstp_m80d, "fbstp m80d"); 11733 IEM_MC_BEGIN(3, 2 );11695 IEM_MC_BEGIN(3, 2, 0); 11734 11696 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11735 11697 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11766 11728 { 11767 11729 IEMOP_MNEMONIC(fistp_m64i, "fistp m64i"); 11768 IEM_MC_BEGIN(3, 2 );11730 IEM_MC_BEGIN(3, 2, 0); 11769 11731 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 11770 11732 IEM_MC_LOCAL(uint16_t, u16Fsw); … … 11851 11813 { 11852 11814 case IEMMODE_16BIT: 11853 IEM_MC_BEGIN(0, 0);11815 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT); 11854 11816 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11855 11817 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); … … 11863 11825 11864 11826 case IEMMODE_32BIT: 11865 IEM_MC_BEGIN(0, 0);11827 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 11866 11828 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11867 11829 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); … … 11875 11837 11876 11838 case IEMMODE_64BIT: 11877 IEM_MC_BEGIN(0, 0);11839 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 11878 11840 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11879 11841 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); … … 11903 11865 { 11904 11866 case IEMMODE_16BIT: 11905 IEM_MC_BEGIN(0, 0);11867 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT); 11906 11868 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11907 11869 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); … … 11915 11877 11916 11878 case IEMMODE_32BIT: 11917 IEM_MC_BEGIN(0, 0);11879 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 11918 11880 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11919 11881 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); … … 11927 11889 11928 11890 case IEMMODE_64BIT: 11929 IEM_MC_BEGIN(0, 0);11891 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 11930 11892 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11931 11893 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); … … 11965 11927 { 11966 11928 case IEMMODE_16BIT: 11967 IEM_MC_BEGIN(0, 0);11929 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT); 11968 11930 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11969 11931 IEM_MC_STORE_GREG_U16_CONST(X86_GREG_xCX, 0); … … 11973 11935 11974 11936 case IEMMODE_32BIT: 11975 IEM_MC_BEGIN(0, 0);11937 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 11976 11938 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11977 11939 IEM_MC_STORE_GREG_U32_CONST(X86_GREG_xCX, 0); … … 11981 11943 11982 11944 case IEMMODE_64BIT: 11983 IEM_MC_BEGIN(0, 0);11945 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 11984 11946 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11985 11947 IEM_MC_STORE_GREG_U64_CONST(X86_GREG_xCX, 0); … … 11995 11957 { 11996 11958 case IEMMODE_16BIT: 11997 IEM_MC_BEGIN(0, 0);11959 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT); 11998 11960 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11999 11961 IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1); … … 12007 11969 12008 11970 case IEMMODE_32BIT: 12009 IEM_MC_BEGIN(0, 0);11971 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 12010 11972 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12011 11973 IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1); … … 12019 11981 12020 11982 case IEMMODE_64BIT: 12021 IEM_MC_BEGIN(0, 0);11983 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 12022 11984 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12023 11985 IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1); … … 12047 12009 { 12048 12010 case IEMMODE_16BIT: 12049 IEM_MC_BEGIN(0, 0);12011 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT); 12050 12012 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12051 12013 IEM_MC_IF_CX_IS_NZ() { … … 12058 12020 12059 12021 case IEMMODE_32BIT: 12060 IEM_MC_BEGIN(0, 0);12022 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 12061 12023 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12062 12024 IEM_MC_IF_ECX_IS_NZ() { … … 12069 12031 12070 12032 case IEMMODE_64BIT: 12071 IEM_MC_BEGIN(0, 0);12033 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT); 12072 12034 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12073 12035 IEM_MC_IF_RCX_IS_NZ() { … … 12172 12134 { 12173 12135 case IEMMODE_16BIT: 12174 {12136 IEM_MC_BEGIN(0, 0, 0); 12175 12137 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 12176 IEM_MC_BEGIN(0, 0);12177 12138 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12178 12139 IEM_MC_REL_JMP_S16_AND_FINISH(i16Imm); 12179 12140 IEM_MC_END(); 12180 12141 break; 12181 }12182 12142 12183 12143 case IEMMODE_64BIT: 12184 12144 case IEMMODE_32BIT: 12185 {12145 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 12186 12146 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 12187 IEM_MC_BEGIN(0, 0);12188 12147 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12189 12148 IEM_MC_REL_JMP_S32_AND_FINISH(i32Imm); 12190 12149 IEM_MC_END(); 12191 12150 break; 12192 }12193 12151 12194 12152 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 12228 12186 IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX(); 12229 12187 12230 IEM_MC_BEGIN(0, 0 );12188 IEM_MC_BEGIN(0, 0, 0); 12231 12189 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12232 12190 IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm); … … 12363 12321 { 12364 12322 IEMOP_MNEMONIC(cmc, "cmc"); 12365 IEM_MC_BEGIN(0, 0 );12323 IEM_MC_BEGIN(0, 0, 0); 12366 12324 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12367 12325 IEM_MC_FLIP_EFL_BIT(X86_EFL_CF); … … 12378 12336 { \ 12379 12337 /* register access */ \ 12380 IEM_MC_BEGIN(2, 0 ); \12338 IEM_MC_BEGIN(2, 0, 0); \ 12381 12339 IEMOP_HLP_DONE_DECODING(); \ 12382 12340 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ … … 12393 12351 if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \ 12394 12352 { \ 12395 IEM_MC_BEGIN(2, 2 ); \12353 IEM_MC_BEGIN(2, 2, 0); \ 12396 12354 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 12397 12355 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12412 12370 else \ 12413 12371 { \ 12414 IEM_MC_BEGIN(2, 2 ); \12372 IEM_MC_BEGIN(2, 2, 0); \ 12415 12373 IEM_MC_ARG(uint8_t *, pu8Dst, 0); \ 12416 12374 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12445 12403 { \ 12446 12404 case IEMMODE_16BIT: \ 12447 IEM_MC_BEGIN(2, 0 ); \12405 IEM_MC_BEGIN(2, 0, 0); \ 12448 12406 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 12449 12407 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 12457 12415 \ 12458 12416 case IEMMODE_32BIT: \ 12459 IEM_MC_BEGIN(2, 0 ); \12417 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); \ 12460 12418 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 12461 12419 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 12470 12428 \ 12471 12429 case IEMMODE_64BIT: \ 12472 IEM_MC_BEGIN(2, 0 ); \12430 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); \ 12473 12431 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 12474 12432 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 12494 12452 { \ 12495 12453 case IEMMODE_16BIT: \ 12496 IEM_MC_BEGIN(2, 3 ); \12454 IEM_MC_BEGIN(2, 3, 0); \ 12497 12455 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 12498 12456 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12513 12471 \ 12514 12472 case IEMMODE_32BIT: \ 12515 IEM_MC_BEGIN(2, 3 ); \12473 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386); \ 12516 12474 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 12517 12475 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12532 12490 \ 12533 12491 case IEMMODE_64BIT: \ 12534 IEM_MC_BEGIN(2, 3 ); \12492 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT); \ 12535 12493 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 12536 12494 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12561 12519 { \ 12562 12520 case IEMMODE_16BIT: \ 12563 IEM_MC_BEGIN(2, 3 ); \12521 IEM_MC_BEGIN(2, 3, 0); \ 12564 12522 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 12565 12523 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12580 12538 \ 12581 12539 case IEMMODE_32BIT: \ 12582 IEM_MC_BEGIN(2, 3 ); \12540 IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386); \ 12583 12541 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 12584 12542 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12599 12557 \ 12600 12558 case IEMMODE_64BIT: \ 12601 IEM_MC_BEGIN(2, 3 ); \12559 IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT); \ 12602 12560 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 12603 12561 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 1); \ … … 12638 12596 /* register access */ 12639 12597 uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); 12640 IEM_MC_BEGIN(3, 0 );12598 IEM_MC_BEGIN(3, 0, 0); 12641 12599 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12642 12600 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 12652 12610 { 12653 12611 /* memory access. */ 12654 IEM_MC_BEGIN(3, 3 );12612 IEM_MC_BEGIN(3, 3, 0); 12655 12613 IEM_MC_ARG(uint8_t const *, pu8Dst, 0); 12656 12614 IEM_MC_ARG(uint8_t, u8Src, 1); … … 12681 12639 { 12682 12640 /* register access */ 12683 IEM_MC_BEGIN(3, 1 );12641 IEM_MC_BEGIN(3, 1, 0); 12684 12642 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12685 12643 IEM_MC_ARG(uint16_t *, pu16AX, 0); … … 12703 12661 { 12704 12662 /* memory access. */ 12705 IEM_MC_BEGIN(3, 2 );12663 IEM_MC_BEGIN(3, 2, 0); 12706 12664 IEM_MC_ARG(uint16_t *, pu16AX, 0); 12707 12665 IEM_MC_ARG(uint8_t, u8Value, 1); … … 12738 12696 { 12739 12697 case IEMMODE_16BIT: 12740 { 12741 IEM_MC_BEGIN(4, 1); 12698 IEM_MC_BEGIN(4, 1, 0); 12742 12699 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12743 12700 IEM_MC_ARG(uint16_t *, pu16AX, 0); … … 12760 12717 IEM_MC_END(); 12761 12718 break; 12762 }12763 12719 12764 12720 case IEMMODE_32BIT: 12765 { 12766 IEM_MC_BEGIN(4, 1); 12721 IEM_MC_BEGIN(4, 1, IEM_MC_F_MIN_386); 12767 12722 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12768 12723 IEM_MC_ARG(uint32_t *, pu32AX, 0); … … 12787 12742 IEM_MC_END(); 12788 12743 break; 12789 }12790 12744 12791 12745 case IEMMODE_64BIT: 12792 { 12793 IEM_MC_BEGIN(4, 1); 12746 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT); 12794 12747 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12795 12748 IEM_MC_ARG(uint64_t *, pu64AX, 0); … … 12812 12765 IEM_MC_END(); 12813 12766 break; 12814 }12815 12767 12816 12768 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 12823 12775 { 12824 12776 case IEMMODE_16BIT: 12825 { 12826 IEM_MC_BEGIN(4, 2); 12777 IEM_MC_BEGIN(4, 2, 0); 12827 12778 IEM_MC_ARG(uint16_t *, pu16AX, 0); 12828 12779 IEM_MC_ARG(uint16_t *, pu16DX, 1); … … 12847 12798 IEM_MC_END(); 12848 12799 break; 12849 }12850 12800 12851 12801 case IEMMODE_32BIT: 12852 { 12853 IEM_MC_BEGIN(4, 2); 12802 IEM_MC_BEGIN(4, 2, IEM_MC_F_MIN_386); 12854 12803 IEM_MC_ARG(uint32_t *, pu32AX, 0); 12855 12804 IEM_MC_ARG(uint32_t *, pu32DX, 1); … … 12876 12825 IEM_MC_END(); 12877 12826 break; 12878 }12879 12827 12880 12828 case IEMMODE_64BIT: 12881 { 12882 IEM_MC_BEGIN(4, 2); 12829 IEM_MC_BEGIN(4, 2, IEM_MC_F_64BIT); 12883 12830 IEM_MC_ARG(uint64_t *, pu64AX, 0); 12884 12831 IEM_MC_ARG(uint64_t *, pu64DX, 1); … … 12903 12850 IEM_MC_END(); 12904 12851 break; 12905 }12906 12852 12907 12853 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 12978 12924 { 12979 12925 case IEMMODE_16BIT: 12980 {12926 IEM_MC_BEGIN(3, 0, 0); 12981 12927 uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); 12982 IEM_MC_BEGIN(3, 0);12983 12928 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12984 12929 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 12991 12936 IEM_MC_END(); 12992 12937 break; 12993 }12994 12938 12995 12939 case IEMMODE_32BIT: 12996 {12940 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 12997 12941 uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); 12998 IEM_MC_BEGIN(3, 0);12999 12942 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13000 12943 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 13008 12951 IEM_MC_END(); 13009 12952 break; 13010 }13011 12953 13012 12954 case IEMMODE_64BIT: 13013 {12955 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 13014 12956 uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); 13015 IEM_MC_BEGIN(3, 0);13016 12957 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13017 12958 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 13024 12965 IEM_MC_END(); 13025 12966 break; 13026 }13027 12967 13028 12968 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 13035 12975 { 13036 12976 case IEMMODE_16BIT: 13037 { 13038 IEM_MC_BEGIN(3, 3); 12977 IEM_MC_BEGIN(3, 3, 0); 13039 12978 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); 13040 12979 IEM_MC_ARG(uint16_t, u16Src, 1); … … 13056 12995 IEM_MC_END(); 13057 12996 break; 13058 }13059 12997 13060 12998 case IEMMODE_32BIT: 13061 { 13062 IEM_MC_BEGIN(3, 3); 12999 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); 13063 13000 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); 13064 13001 IEM_MC_ARG(uint32_t, u32Src, 1); … … 13080 13017 IEM_MC_END(); 13081 13018 break; 13082 }13083 13019 13084 13020 case IEMMODE_64BIT: 13085 { 13086 IEM_MC_BEGIN(3, 3); 13021 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); 13087 13022 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); 13088 13023 IEM_MC_ARG(uint64_t, u64Src, 1); … … 13104 13039 IEM_MC_END(); 13105 13040 break; 13106 }13107 13041 13108 13042 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 13169 13103 { 13170 13104 IEMOP_MNEMONIC(clc, "clc"); 13171 IEM_MC_BEGIN(0, 0 );13105 IEM_MC_BEGIN(0, 0, 0); 13172 13106 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13173 13107 IEM_MC_CLEAR_EFL_BIT(X86_EFL_CF); … … 13183 13117 { 13184 13118 IEMOP_MNEMONIC(stc, "stc"); 13185 IEM_MC_BEGIN(0, 0 );13119 IEM_MC_BEGIN(0, 0, 0); 13186 13120 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13187 13121 IEM_MC_SET_EFL_BIT(X86_EFL_CF); … … 13216 13150 { 13217 13151 IEMOP_MNEMONIC(cld, "cld"); 13218 IEM_MC_BEGIN(0, 0 );13152 IEM_MC_BEGIN(0, 0, 0); 13219 13153 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13220 13154 IEM_MC_CLEAR_EFL_BIT(X86_EFL_DF); … … 13230 13164 { 13231 13165 IEMOP_MNEMONIC(std, "std"); 13232 IEM_MC_BEGIN(0, 0 );13166 IEM_MC_BEGIN(0, 0, 0); 13233 13167 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13234 13168 IEM_MC_SET_EFL_BIT(X86_EFL_DF); … … 13310 13244 { 13311 13245 case IEMMODE_16BIT: 13312 IEM_MC_BEGIN(1, 0 );13246 IEM_MC_BEGIN(1, 0, 0); 13313 13247 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13314 13248 IEM_MC_ARG(uint16_t, u16Target, 0); … … 13319 13253 13320 13254 case IEMMODE_32BIT: 13321 IEM_MC_BEGIN(1, 0 );13255 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_386); 13322 13256 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13323 13257 IEM_MC_ARG(uint32_t, u32Target, 0); … … 13328 13262 13329 13263 case IEMMODE_64BIT: 13330 IEM_MC_BEGIN(1, 0 );13264 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT); 13331 13265 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13332 13266 IEM_MC_ARG(uint64_t, u64Target, 0); … … 13345 13279 { 13346 13280 case IEMMODE_16BIT: 13347 IEM_MC_BEGIN(1, 1 );13281 IEM_MC_BEGIN(1, 1, 0); 13348 13282 IEM_MC_ARG(uint16_t, u16Target, 0); 13349 13283 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13356 13290 13357 13291 case IEMMODE_32BIT: 13358 IEM_MC_BEGIN(1, 1 );13292 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386); 13359 13293 IEM_MC_ARG(uint32_t, u32Target, 0); 13360 13294 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13367 13301 13368 13302 case IEMMODE_64BIT: 13369 IEM_MC_BEGIN(1, 1 );13303 IEM_MC_BEGIN(1, 1, IEM_MC_F_64BIT); 13370 13304 IEM_MC_ARG(uint64_t, u64Target, 0); 13371 13305 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13400 13334 { \ 13401 13335 case IEMMODE_16BIT: \ 13402 IEM_MC_BEGIN(3, 1 ); \13336 IEM_MC_BEGIN(3, 1, 0); \ 13403 13337 IEM_MC_ARG(uint16_t, u16Sel, 0); \ 13404 13338 IEM_MC_ARG(uint16_t, offSeg, 1); \ … … 13416 13350 \ 13417 13351 case IEMMODE_32BIT: \ 13418 IEM_MC_BEGIN(3, 1 ); \13352 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); \ 13419 13353 IEM_MC_ARG(uint16_t, u16Sel, 0); \ 13420 13354 IEM_MC_ARG(uint32_t, offSeg, 1); \ … … 13433 13367 case IEMMODE_64BIT: \ 13434 13368 Assert(!IEM_IS_GUEST_CPU_AMD(pVCpu)); \ 13435 IEM_MC_BEGIN(3, 1 ); \13369 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \ 13436 13370 IEM_MC_ARG(uint16_t, u16Sel, 0); \ 13437 13371 IEM_MC_ARG(uint64_t, offSeg, 1); \ … … 13477 13411 { 13478 13412 case IEMMODE_16BIT: 13479 IEM_MC_BEGIN(0, 1 );13413 IEM_MC_BEGIN(0, 1, 0); 13480 13414 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13481 13415 IEM_MC_LOCAL(uint16_t, u16Target); … … 13486 13420 13487 13421 case IEMMODE_32BIT: 13488 IEM_MC_BEGIN(0, 1 );13422 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 13489 13423 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13490 13424 IEM_MC_LOCAL(uint32_t, u32Target); … … 13495 13429 13496 13430 case IEMMODE_64BIT: 13497 IEM_MC_BEGIN(0, 1 );13431 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 13498 13432 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 13499 13433 IEM_MC_LOCAL(uint64_t, u64Target); … … 13512 13446 { 13513 13447 case IEMMODE_16BIT: 13514 IEM_MC_BEGIN(0, 2 );13448 IEM_MC_BEGIN(0, 2, 0); 13515 13449 IEM_MC_LOCAL(uint16_t, u16Target); 13516 13450 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13523 13457 13524 13458 case IEMMODE_32BIT: 13525 IEM_MC_BEGIN(0, 2 );13459 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 13526 13460 IEM_MC_LOCAL(uint32_t, u32Target); 13527 13461 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13534 13468 13535 13469 case IEMMODE_64BIT: 13536 IEM_MC_BEGIN(0, 2 );13470 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 13537 13471 IEM_MC_LOCAL(uint64_t, u64Target); 13538 13472 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13578 13512 { 13579 13513 case IEMMODE_16BIT: 13580 IEM_MC_BEGIN(0, 2 );13514 IEM_MC_BEGIN(0, 2, 0); 13581 13515 IEM_MC_LOCAL(uint16_t, u16Src); 13582 13516 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13590 13524 13591 13525 case IEMMODE_32BIT: 13592 IEM_MC_BEGIN(0, 2 );13526 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 13593 13527 IEM_MC_LOCAL(uint32_t, u32Src); 13594 13528 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13602 13536 13603 13537 case IEMMODE_64BIT: 13604 IEM_MC_BEGIN(0, 2 );13538 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 13605 13539 IEM_MC_LOCAL(uint64_t, u64Src); 13606 13540 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r100840 r100854 1936 1936 1937 1937 1938 ## IEM_MC_F_XXX values. 1939 g_kdMcFlags = { 1940 'IEM_MC_F_ONLY_8086': True, 1941 'IEM_MC_F_NOT_286_OR_OLDER': True, 1942 'IEM_MC_F_MIN_386': True, 1943 'IEM_MC_F_MIN_486': True, 1944 'IEM_MC_F_MIN_PENTIUM': True, 1945 'IEM_MC_F_MIN_PENTIUM_II': True, 1946 'IEM_MC_F_MIN_CORE': True, 1947 'IEM_MC_F_64BIT': True, 1948 'IEM_MC_F_NOT_64BIT': True, 1949 }; 1938 1950 class McBlock(object): 1939 1951 """ … … 1961 1973 self.iInFunction = iInFunction; 1962 1974 self.cchIndent = cchIndent if cchIndent else offBeginLine; 1963 self.asLines = [] # type: list(str) ##< The raw lines the block is made up of. 1975 ##< The raw lines the block is made up of. 1976 self.asLines = [] # type: list(str) 1977 ## IEM_MC_BEGIN: Argument count. 1978 self.cArgs = -1; 1979 ## IEM_MC_BEGIN: Locals count. 1980 self.cLocals = -1; 1981 ## IEM_MC_BEGIN: IEM_MC_F_XXX dictionary 1982 self.dMcFlags = {} # type: dict(str) 1964 1983 ## Decoded statements in the block. 1965 1984 self.aoStmts = [] # type: list(McStmt) … … 2008 2027 def parseMcBegin(oSelf, sName, asParams): 2009 2028 """ IEM_MC_BEGIN """ 2010 oSelf.checkStmtParamCount(sName, asParams, 2); 2029 oSelf.checkStmtParamCount(sName, asParams, 3); 2030 if oSelf.cArgs != -1 or oSelf.cLocals != -1 or oSelf.dMcFlags: 2031 oSelf.raiseStmtError(sName, 'Used more than once!'); 2032 oSelf.cArgs = int(asParams[0]); 2033 oSelf.cLocals = int(asParams[1]); 2034 if asParams[2] != '0': 2035 for sFlag in asParams[2].split('|'): 2036 sFlag = sFlag.strip(); 2037 if sFlag in g_kdMcFlags: 2038 oSelf.dMcFlags[sFlag] = True; 2039 else: 2040 oSelf.raiseStmtError(sName, 'Unknown flag: %s' % (sFlag, )); 2041 2011 2042 return McBlock.parseMcGeneric(oSelf, sName, asParams); 2012 2043 … … 2611 2642 'IEM_MC_ASSIGN_U8_SX_U64': (McBlock.parseMcGeneric, False), 2612 2643 'IEM_MC_ASSIGN_U32_SX_U64': (McBlock.parseMcGeneric, False), 2613 'IEM_MC_BEGIN': (McBlock.parseMc Generic,False),2644 'IEM_MC_BEGIN': (McBlock.parseMcBegin, False), 2614 2645 'IEM_MC_BROADCAST_XREG_U16_ZX_VLMAX': (McBlock.parseMcGeneric, True), 2615 2646 'IEM_MC_BROADCAST_XREG_U32_ZX_VLMAX': (McBlock.parseMcGeneric, True), -
trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f38.cpp.h
r100740 r100854 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 );51 IEM_MC_BEGIN(2, 0, 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 );72 IEM_MC_BEGIN(2, 2, 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 );113 IEM_MC_BEGIN(2, 0, 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 );130 IEM_MC_BEGIN(2, 2, 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 );169 IEM_MC_BEGIN(2, 0, 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 );186 IEM_MC_BEGIN(2, 2, 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 );228 IEM_MC_BEGIN(2, 0, 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 );245 IEM_MC_BEGIN(2, 2, 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 );284 IEM_MC_BEGIN(2, 0, 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 );301 IEM_MC_BEGIN(2, 2, 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 );344 IEM_MC_BEGIN(2, 0, 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 );361 IEM_MC_BEGIN(2, 2, 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 );404 IEM_MC_BEGIN(2, 0, 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 );421 IEM_MC_BEGIN(2, 2, 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 ); \692 IEM_MC_BEGIN(3, 0, 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 ); \714 IEM_MC_BEGIN(3, 2, 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 );787 IEM_MC_BEGIN(3, 0, 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 );806 IEM_MC_BEGIN(3, 2, 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 ); \908 IEM_MC_BEGIN(2, 0, 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 ); \928 IEM_MC_BEGIN(2, 2, 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 );1041 IEM_MC_BEGIN(0, 2, 0); 1042 1042 IEM_MC_LOCAL(RTUINT128U, uSrc); 1043 1043 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1314 1314 { 1315 1315 /* Register, memory. */ 1316 IEMOP_HLP_NO_REAL_OR_V86_MODE(); 1316 1317 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 1317 1318 { 1318 IEM_MC_BEGIN(3, 0 );1319 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 1319 1320 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1320 1321 IEM_MC_ARG(RTGCPTR, GCPtrInveptDesc, 1); … … 1332 1333 else 1333 1334 { 1334 IEM_MC_BEGIN(3, 0 );1335 IEM_MC_BEGIN(3, 0, 0); 1335 1336 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1336 1337 IEM_MC_ARG(RTGCPTR, GCPtrInveptDesc, 1); … … 1364 1365 { 1365 1366 /* Register, memory. */ 1367 IEMOP_HLP_NO_REAL_OR_V86_MODE(); 1366 1368 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 1367 1369 { 1368 IEM_MC_BEGIN(3, 0 );1370 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 1369 1371 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1370 1372 IEM_MC_ARG(RTGCPTR, GCPtrInvvpidDesc, 1); … … 1382 1384 else 1383 1385 { 1384 IEM_MC_BEGIN(3, 0 );1386 IEM_MC_BEGIN(3, 0, 0); 1385 1387 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1386 1388 IEM_MC_ARG(RTGCPTR, GCPtrInvvpidDesc, 1); … … 1415 1417 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 1416 1418 { 1417 IEM_MC_BEGIN(3, 0 );1419 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 1418 1420 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1419 1421 IEM_MC_ARG(RTGCPTR, GCPtrInvpcidDesc, 1); … … 1428 1430 else 1429 1431 { 1430 IEM_MC_BEGIN(3, 0 );1432 IEM_MC_BEGIN(3, 0, 0); 1431 1433 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1432 1434 IEM_MC_ARG(RTGCPTR, GCPtrInvpcidDesc, 1); … … 1575 1577 * Register, register. 1576 1578 */ 1577 IEM_MC_BEGIN(3, 0 );1579 IEM_MC_BEGIN(3, 0, 0); 1578 1580 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha); 1579 1581 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 1595 1597 * Register, memory. 1596 1598 */ 1597 IEM_MC_BEGIN(3, 2 );1599 IEM_MC_BEGIN(3, 2, 0); 1598 1600 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1599 1601 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1740 1742 { 1741 1743 case IEMMODE_16BIT: 1742 IEM_MC_BEGIN(0, 2 );1744 IEM_MC_BEGIN(0, 2, 0); 1743 1745 IEM_MC_LOCAL(uint16_t, uSrc); 1744 1746 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1756 1758 1757 1759 case IEMMODE_32BIT: 1758 IEM_MC_BEGIN(0, 2 );1760 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 1759 1761 IEM_MC_LOCAL(uint32_t, uSrc); 1760 1762 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1772 1774 1773 1775 case IEMMODE_64BIT: 1774 IEM_MC_BEGIN(0, 2 );1776 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 1775 1777 IEM_MC_LOCAL(uint64_t, uSrc); 1776 1778 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1814 1816 * Register, register. 1815 1817 */ 1816 IEM_MC_BEGIN(2, 0 );1818 IEM_MC_BEGIN(2, 0, 0); 1817 1819 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1818 1820 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1830 1832 * Register, memory. 1831 1833 */ 1832 IEM_MC_BEGIN(2, 1 );1834 IEM_MC_BEGIN(2, 1, 0); 1833 1835 IEM_MC_ARG(uint32_t *, puDst, 0); 1834 1836 IEM_MC_ARG(uint8_t, uSrc, 1); … … 1865 1867 { 1866 1868 case IEMMODE_16BIT: 1867 IEM_MC_BEGIN(0, 2 );1869 IEM_MC_BEGIN(0, 2, 0); 1868 1870 IEM_MC_LOCAL(uint16_t, u16Value); 1869 1871 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 1878 1880 1879 1881 case IEMMODE_32BIT: 1880 IEM_MC_BEGIN(0, 2 );1882 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 1881 1883 IEM_MC_LOCAL(uint32_t, u32Value); 1882 1884 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 1891 1893 1892 1894 case IEMMODE_64BIT: 1893 IEM_MC_BEGIN(0, 2 );1895 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 1894 1896 IEM_MC_LOCAL(uint64_t, u64Value); 1895 1897 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 1933 1935 { 1934 1936 case IEMMODE_16BIT: 1935 IEM_MC_BEGIN(2, 0 );1937 IEM_MC_BEGIN(2, 0, 0); 1936 1938 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1937 1939 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1947 1949 1948 1950 case IEMMODE_32BIT: 1949 IEM_MC_BEGIN(2, 0 );1951 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); 1950 1952 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1951 1953 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1961 1963 1962 1964 case IEMMODE_64BIT: 1963 IEM_MC_BEGIN(2, 0 );1965 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 1964 1966 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1965 1967 IEM_MC_ARG(uint32_t *, puDst, 0); … … 1985 1987 { 1986 1988 case IEMMODE_16BIT: 1987 IEM_MC_BEGIN(2, 1 );1989 IEM_MC_BEGIN(2, 1, 0); 1988 1990 IEM_MC_ARG(uint32_t *, puDst, 0); 1989 1991 IEM_MC_ARG(uint16_t, uSrc, 1); … … 2004 2006 2005 2007 case IEMMODE_32BIT: 2006 IEM_MC_BEGIN(2, 1 );2008 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_386); 2007 2009 IEM_MC_ARG(uint32_t *, puDst, 0); 2008 2010 IEM_MC_ARG(uint32_t, uSrc, 1); … … 2023 2025 2024 2026 case IEMMODE_64BIT: 2025 IEM_MC_BEGIN(2, 1 );2027 IEM_MC_BEGIN(2, 1, IEM_MC_F_64BIT); 2026 2028 IEM_MC_ARG(uint32_t *, puDst, 0); 2027 2029 IEM_MC_ARG(uint64_t, uSrc, 1); … … 2079 2081 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 2080 2082 { \ 2081 IEM_MC_BEGIN(3, 0 ); \2083 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 2082 2084 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 2083 2085 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 2094 2096 else \ 2095 2097 { \ 2096 IEM_MC_BEGIN(3, 1 ); \2098 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \ 2097 2099 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 2098 2100 IEM_MC_ARG(uint32_t *, pEFlags, 1); \ … … 2114 2116 if (IEM_IS_MODRM_REG_MODE(bRm)) \ 2115 2117 { \ 2116 IEM_MC_BEGIN(3, 0 ); \2118 IEM_MC_BEGIN(3, 0, 0); \ 2117 2119 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 2118 2120 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 2129 2131 else \ 2130 2132 { \ 2131 IEM_MC_BEGIN(3, 1 ); \2133 IEM_MC_BEGIN(3, 1, 0); \ 2132 2134 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 2133 2135 IEM_MC_ARG(uint32_t *, pEFlags, 1); \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f3a.cpp.h
r100740 r100854 52 52 */ 53 53 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 54 IEM_MC_BEGIN(3, 0 );54 IEM_MC_BEGIN(3, 0, 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 );72 IEM_MC_BEGIN(3, 2, 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 );113 IEM_MC_BEGIN(3, 0, 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 );131 IEM_MC_BEGIN(3, 2, 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 );173 IEM_MC_BEGIN(4, 2, 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 );198 IEM_MC_BEGIN(4, 3, 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 );245 IEM_MC_BEGIN(3, 0, 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 );263 IEM_MC_BEGIN(3, 2, 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 );325 IEM_MC_BEGIN(4, 2, 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 );350 IEM_MC_BEGIN(4, 3, 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 );390 IEM_MC_BEGIN(4, 2, 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 );415 IEM_MC_BEGIN(4, 3, 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 );483 IEM_MC_BEGIN(3, 0, 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 );504 IEM_MC_BEGIN(3, 1, 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 );555 IEM_MC_BEGIN(0, 1, 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 );570 IEM_MC_BEGIN(0, 2, 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 );599 IEM_MC_BEGIN(0, 1, 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 );614 IEM_MC_BEGIN(0, 2, 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 );650 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 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 );665 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 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 );697 IEM_MC_BEGIN(0, 1, 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 );712 IEM_MC_BEGIN(0, 2, 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 );741 IEM_MC_BEGIN(0, 1, 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 );756 IEM_MC_BEGIN(0, 2, 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 );794 IEM_MC_BEGIN(0, 1, 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 );809 IEM_MC_BEGIN(0, 2, 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 );837 IEM_MC_BEGIN(0, 3, 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 );861 IEM_MC_BEGIN(0, 3, 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 );901 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 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 );916 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 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 );948 IEM_MC_BEGIN(0, 1, 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 );963 IEM_MC_BEGIN(0, 2, 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 );1057 IEM_MC_BEGIN(3, 0, 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 );1078 IEM_MC_BEGIN(3, 2, 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 );1149 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT); 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 );1176 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT); 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 );1213 IEM_MC_BEGIN(4, 1, 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 );1240 IEM_MC_BEGIN(4, 3, 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 );1285 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT); 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 );1313 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT); 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 );1350 IEM_MC_BEGIN(4, 1, 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 );1378 IEM_MC_BEGIN(4, 3, 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 );1422 IEM_MC_BEGIN(4, 1, 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 );1447 IEM_MC_BEGIN(4, 3, 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 );1487 IEM_MC_BEGIN(4, 1, 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 );1513 IEM_MC_BEGIN(4, 3, 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 );1584 IEM_MC_BEGIN(3, 0, 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 );1605 IEM_MC_BEGIN(3, 2, 0); 1606 1606 IEM_MC_ARG(PRTUINT128U, puDst, 0); 1607 1607 IEM_MC_LOCAL(RTUINT128U, uSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r100844 r100854 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 );52 IEM_MC_BEGIN(2, 0, 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 );73 IEM_MC_BEGIN(2, 2, 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 );114 IEM_MC_BEGIN(2, 0, 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 );135 IEM_MC_BEGIN(2, 2, 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 );174 IEM_MC_BEGIN(2, 0, 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 );195 IEM_MC_BEGIN(2, 2, 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 );237 IEM_MC_BEGIN(2, 0, 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 );258 IEM_MC_BEGIN(2, 2, 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 );297 IEM_MC_BEGIN(2, 0, 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 );318 IEM_MC_BEGIN(2, 2, 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 );359 IEM_MC_BEGIN(2, 0, 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 );376 IEM_MC_BEGIN(2, 2, 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 );414 IEM_MC_BEGIN(2, 0, 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 );431 IEM_MC_BEGIN(2, 2, 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 );472 IEM_MC_BEGIN(2, 0, 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 );489 IEM_MC_BEGIN(2, 2, 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 );525 IEM_MC_BEGIN(2, 0, 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 );546 IEM_MC_BEGIN(2, 2, 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 );587 IEM_MC_BEGIN(2, 0, 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 );604 IEM_MC_BEGIN(2, 2, 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 );647 IEM_MC_BEGIN(2, 0, 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 );664 IEM_MC_BEGIN(2, 2, 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 );707 IEM_MC_BEGIN(2, 0, 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 );728 IEM_MC_BEGIN(2, 2, 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 );769 IEM_MC_BEGIN(2, 0, 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 );786 IEM_MC_BEGIN(2, 2, 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 );829 IEM_MC_BEGIN(3, 1, 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 );851 IEM_MC_BEGIN(3, 2, 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 );893 IEM_MC_BEGIN(3, 1, 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 );915 IEM_MC_BEGIN(3, 2, 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 );957 IEM_MC_BEGIN(3, 1, 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 );979 IEM_MC_BEGIN(3, 2, 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 );1021 IEM_MC_BEGIN(3, 1, 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 );1043 IEM_MC_BEGIN(3, 2, 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 );1085 IEM_MC_BEGIN(2, 0, 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 );1102 IEM_MC_BEGIN(2, 2, 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 );1145 IEM_MC_BEGIN(3, 1, 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 );1167 IEM_MC_BEGIN(3, 2, 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 );1206 IEM_MC_BEGIN(2, 0, 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 );1232 IEM_MC_BEGIN(2, 0, 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 );1252 IEM_MC_BEGIN(1, 0, 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 );1261 IEM_MC_BEGIN(1, 1, 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 );1283 IEM_MC_BEGIN(1, 0, 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 );1292 IEM_MC_BEGIN(1, 1, 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 );1313 IEM_MC_BEGIN(2, 0, 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 );1323 IEM_MC_BEGIN(2, 1, 0); 1324 1324 IEM_MC_ARG(uint16_t, u16Sel, 0); 1325 1325 IEM_MC_ARG_CONST(bool, fWriteArg, fWrite, 1); … … 1381 1381 IEMOP_HLP_MIN_286(); 1382 1382 IEMOP_HLP_64BIT_OP_SIZE(); 1383 IEM_MC_BEGIN(2, 1 );1383 IEM_MC_BEGIN(2, 1, 0); 1384 1384 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1385 1385 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1473 1473 IEMOP_HLP_MIN_286(); 1474 1474 IEMOP_HLP_64BIT_OP_SIZE(); 1475 IEM_MC_BEGIN(2, 1 );1475 IEM_MC_BEGIN(2, 1, 0); 1476 1476 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1477 1477 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1507 1507 IEMOP_MNEMONIC(lgdt, "lgdt"); 1508 1508 IEMOP_HLP_64BIT_OP_SIZE(); 1509 IEM_MC_BEGIN(3, 1 );1509 IEM_MC_BEGIN(3, 1, 0); 1510 1510 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1511 1511 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1560 1560 IEMOP_MNEMONIC(lidt, "lidt"); 1561 1561 IEMMODE enmEffOpSize = IEM_IS_64BIT_CODE(pVCpu) ? IEMMODE_64BIT : pVCpu->iem.s.enmEffOpSize; 1562 IEM_MC_BEGIN(3, 1 );1562 IEM_MC_BEGIN(3, 1, 0); 1563 1563 IEM_MC_ARG(uint8_t, iEffSeg, 0); 1564 1564 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 1692 1692 1693 1693 /* Ignore operand size here, memory refs are always 16-bit. */ 1694 IEM_MC_BEGIN(2, 0 );1694 IEM_MC_BEGIN(2, 0, 0); 1695 1695 IEM_MC_ARG(uint16_t, iEffSeg, 0); 1696 1696 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 1712 1712 if (IEM_IS_MODRM_REG_MODE(bRm)) 1713 1713 { 1714 IEM_MC_BEGIN(2, 0 );1714 IEM_MC_BEGIN(2, 0, 0); 1715 1715 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1716 1716 IEM_MC_ARG(uint16_t, u16Tmp, 0); … … 1722 1722 else 1723 1723 { 1724 IEM_MC_BEGIN(2, 0 );1724 IEM_MC_BEGIN(2, 0, 0); 1725 1725 IEM_MC_ARG(uint16_t, u16Tmp, 0); 1726 1726 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 1739 1739 IEMOP_MNEMONIC(invlpg, "invlpg"); 1740 1740 IEMOP_HLP_MIN_486(); 1741 IEM_MC_BEGIN(1, 1 );1741 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386); 1742 1742 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 0); 1743 1743 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 1864 1864 { 1865 1865 case IEMMODE_16BIT: 1866 { 1867 IEM_MC_BEGIN(3, 0); 1866 IEM_MC_BEGIN(3, 0, 0); 1868 1867 IEMOP_HLP_DECODED_NL_2(fIsLar ? OP_LAR : OP_LSL, IEMOPFORM_RM_REG, OP_PARM_Gv, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 1869 1868 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 1876 1875 1877 1876 IEM_MC_END(); 1878 }1877 break; 1879 1878 1880 1879 case IEMMODE_32BIT: 1881 1880 case IEMMODE_64BIT: 1882 { 1883 IEM_MC_BEGIN(3, 0); 1881 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 1884 1882 IEMOP_HLP_DECODED_NL_2(fIsLar ? OP_LAR : OP_LSL, IEMOPFORM_RM_REG, OP_PARM_Gv, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 1885 1883 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 1892 1890 1893 1891 IEM_MC_END(); 1894 }1892 break; 1895 1893 1896 1894 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 1902 1900 { 1903 1901 case IEMMODE_16BIT: 1904 { 1905 IEM_MC_BEGIN(3, 1); 1902 IEM_MC_BEGIN(3, 1, 0); 1906 1903 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 1907 1904 IEM_MC_ARG(uint16_t, u16Sel, 1); … … 1917 1914 1918 1915 IEM_MC_END(); 1919 }1916 break; 1920 1917 1921 1918 case IEMMODE_32BIT: 1922 1919 case IEMMODE_64BIT: 1923 { 1924 IEM_MC_BEGIN(3, 1); 1920 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); 1925 1921 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 1926 1922 IEM_MC_ARG(uint16_t, u16Sel, 1); … … 1937 1933 1938 1934 IEM_MC_END(); 1939 }1935 break; 1940 1936 1941 1937 IEM_NOT_REACHED_DEFAULT_CASE_RET(); … … 2050 2046 } 2051 2047 2052 IEM_MC_BEGIN(0, 1 );2048 IEM_MC_BEGIN(0, 1, 0); 2053 2049 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2054 2050 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 2066 2062 IEMOP_MNEMONIC(femms, "femms"); 2067 2063 2068 IEM_MC_BEGIN(0, 0);2064 IEM_MC_BEGIN(0, 0, 0); 2069 2065 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 2070 2066 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 2115 2111 * XMM128, XMM128. 2116 2112 */ 2117 IEM_MC_BEGIN(0, 0 );2113 IEM_MC_BEGIN(0, 0, 0); 2118 2114 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2119 2115 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2129 2125 * XMM128, [mem128]. 2130 2126 */ 2131 IEM_MC_BEGIN(0, 2 );2127 IEM_MC_BEGIN(0, 2, 0); 2132 2128 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2133 2129 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2166 2162 * XMM128, XMM128. 2167 2163 */ 2168 IEM_MC_BEGIN(0, 0 );2164 IEM_MC_BEGIN(0, 0, 0); 2169 2165 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2170 2166 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2180 2176 * XMM128, [mem128]. 2181 2177 */ 2182 IEM_MC_BEGIN(0, 2 );2178 IEM_MC_BEGIN(0, 2, 0); 2183 2179 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2184 2180 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2216 2212 * XMM32, XMM32. 2217 2213 */ 2218 IEM_MC_BEGIN(0, 1 );2214 IEM_MC_BEGIN(0, 1, 0); 2219 2215 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2220 2216 IEM_MC_LOCAL(uint32_t, uSrc); … … 2233 2229 * XMM128, [mem32]. 2234 2230 */ 2235 IEM_MC_BEGIN(0, 2 );2231 IEM_MC_BEGIN(0, 2, 0); 2236 2232 IEM_MC_LOCAL(uint32_t, uSrc); 2237 2233 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2269 2265 * XMM64, XMM64. 2270 2266 */ 2271 IEM_MC_BEGIN(0, 1 );2267 IEM_MC_BEGIN(0, 1, 0); 2272 2268 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2273 2269 IEM_MC_LOCAL(uint64_t, uSrc); … … 2286 2282 * XMM128, [mem64]. 2287 2283 */ 2288 IEM_MC_BEGIN(0, 2 );2284 IEM_MC_BEGIN(0, 2, 0); 2289 2285 IEM_MC_LOCAL(uint64_t, uSrc); 2290 2286 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2322 2318 * XMM128, XMM128. 2323 2319 */ 2324 IEM_MC_BEGIN(0, 0 );2320 IEM_MC_BEGIN(0, 0, 0); 2325 2321 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2326 2322 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2336 2332 * [mem128], XMM128. 2337 2333 */ 2338 IEM_MC_BEGIN(0, 2 );2334 IEM_MC_BEGIN(0, 2, 0); 2339 2335 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2340 2336 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2372 2368 * XMM128, XMM128. 2373 2369 */ 2374 IEM_MC_BEGIN(0, 0 );2370 IEM_MC_BEGIN(0, 0, 0); 2375 2371 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2376 2372 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 2386 2382 * [mem128], XMM128. 2387 2383 */ 2388 IEM_MC_BEGIN(0, 2 );2384 IEM_MC_BEGIN(0, 2, 0); 2389 2385 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 2390 2386 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2422 2418 * XMM32, XMM32. 2423 2419 */ 2424 IEM_MC_BEGIN(0, 1 );2420 IEM_MC_BEGIN(0, 1, 0); 2425 2421 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2426 2422 IEM_MC_LOCAL(uint32_t, uSrc); … … 2439 2435 * [mem32], XMM32. 2440 2436 */ 2441 IEM_MC_BEGIN(0, 2 );2437 IEM_MC_BEGIN(0, 2, 0); 2442 2438 IEM_MC_LOCAL(uint32_t, uSrc); 2443 2439 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2475 2471 * XMM64, XMM64. 2476 2472 */ 2477 IEM_MC_BEGIN(0, 1 );2473 IEM_MC_BEGIN(0, 1, 0); 2478 2474 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 2479 2475 IEM_MC_LOCAL(uint64_t, uSrc); … … 2492 2488 * [mem64], XMM64. 2493 2489 */ 2494 IEM_MC_BEGIN(0, 2 );2490 IEM_MC_BEGIN(0, 2, 0); 2495 2491 IEM_MC_LOCAL(uint64_t, uSrc); 2496 2492 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2527 2523 IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq_WO, UqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2528 2524 2529 IEM_MC_BEGIN(0, 1 );2525 IEM_MC_BEGIN(0, 1, 0); 2530 2526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2531 2527 IEM_MC_LOCAL(uint64_t, uSrc); … … 2555 2551 IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2556 2552 2557 IEM_MC_BEGIN(0, 2 );2553 IEM_MC_BEGIN(0, 2, 0); 2558 2554 IEM_MC_LOCAL(uint64_t, uSrc); 2559 2555 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2590 2586 IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2591 2587 2592 IEM_MC_BEGIN(0, 2 );2588 IEM_MC_BEGIN(0, 2, 0); 2593 2589 IEM_MC_LOCAL(uint64_t, uSrc); 2594 2590 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2639 2635 * XMM, XMM. 2640 2636 */ 2641 IEM_MC_BEGIN(0, 1 );2637 IEM_MC_BEGIN(0, 1, 0); 2642 2638 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 2643 2639 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 2660 2656 * XMM, [mem128]. 2661 2657 */ 2662 IEM_MC_BEGIN(0, 2 );2658 IEM_MC_BEGIN(0, 2, 0); 2663 2659 IEM_MC_LOCAL(RTUINT128U, uSrc); 2664 2660 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2699 2695 * XMM128, XMM64. 2700 2696 */ 2701 IEM_MC_BEGIN(1, 0 );2697 IEM_MC_BEGIN(1, 0, 0); 2702 2698 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 2703 2699 IEM_MC_ARG(uint64_t, uSrc, 0); … … 2718 2714 * XMM128, [mem64]. 2719 2715 */ 2720 IEM_MC_BEGIN(1, 1 );2716 IEM_MC_BEGIN(1, 1, 0); 2721 2717 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2722 2718 IEM_MC_ARG(uint64_t, uSrc, 0); … … 2754 2750 IEMOP_MNEMONIC2(MR_MEM, MOVLPS, movlps, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2755 2751 2756 IEM_MC_BEGIN(0, 2 );2752 IEM_MC_BEGIN(0, 2, 0); 2757 2753 IEM_MC_LOCAL(uint64_t, uSrc); 2758 2754 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2801 2797 { 2802 2798 IEMOP_MNEMONIC2(MR_MEM, MOVLPD, movlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2803 IEM_MC_BEGIN(0, 2); 2799 2800 IEM_MC_BEGIN(0, 2, 0); 2804 2801 IEM_MC_LOCAL(uint64_t, uSrc); 2805 2802 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2946 2943 IEMOP_MNEMONIC2(RM_REG, MOVLHPS, movlhps, VqHi_WO, Uq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2947 2944 2948 IEM_MC_BEGIN(0, 1 );2945 IEM_MC_BEGIN(0, 1, 0); 2949 2946 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 2950 2947 IEM_MC_LOCAL(uint64_t, uSrc); … … 2974 2971 IEMOP_MNEMONIC2(RM_MEM, MOVHPS, movhps, VqHi_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 2975 2972 2976 IEM_MC_BEGIN(0, 2 );2973 IEM_MC_BEGIN(0, 2, 0); 2977 2974 IEM_MC_LOCAL(uint64_t, uSrc); 2978 2975 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3008 3005 { 3009 3006 IEMOP_MNEMONIC2(RM_MEM, MOVHPD, movhpd, VqHi_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 3010 IEM_MC_BEGIN(0, 2); 3007 3008 IEM_MC_BEGIN(0, 2, 0); 3011 3009 IEM_MC_LOCAL(uint64_t, uSrc); 3012 3010 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3057 3055 * XMM128, XMM128. 3058 3056 */ 3059 IEM_MC_BEGIN(0, 1 );3057 IEM_MC_BEGIN(0, 1, 0); 3060 3058 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3); 3061 3059 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 3078 3076 * XMM128, [mem128]. 3079 3077 */ 3080 IEM_MC_BEGIN(0, 2 );3078 IEM_MC_BEGIN(0, 2, 0); 3081 3079 IEM_MC_LOCAL(RTUINT128U, uSrc); 3082 3080 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3127 3125 IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 3128 3126 3129 IEM_MC_BEGIN(0, 2 );3127 IEM_MC_BEGIN(0, 2, 0); 3130 3128 IEM_MC_LOCAL(uint64_t, uSrc); 3131 3129 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3175 3173 IEMOP_MNEMONIC2(MR_MEM, MOVHPD, movhpd, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES); 3176 3174 3177 IEM_MC_BEGIN(0, 2 );3175 IEM_MC_BEGIN(0, 2, 0); 3178 3176 IEM_MC_LOCAL(uint64_t, uSrc); 3179 3177 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3247 3245 } 3248 3246 3249 IEM_MC_BEGIN(0, 1 );3247 IEM_MC_BEGIN(0, 1, 0); 3250 3248 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3251 3249 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 3268 3266 if (IEM_IS_MODRM_REG_MODE(bRm)) 3269 3267 { 3270 IEM_MC_BEGIN(0, 0 );3268 IEM_MC_BEGIN(0, 0, 0); 3271 3269 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 3272 3270 IEM_MC_ADVANCE_RIP_AND_FINISH(); … … 3275 3273 else 3276 3274 { 3277 IEM_MC_BEGIN(0, 1 );3275 IEM_MC_BEGIN(0, 1, 0); 3278 3276 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3279 3277 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); … … 3428 3426 * Register, register. 3429 3427 */ 3430 IEM_MC_BEGIN(0, 0 );3428 IEM_MC_BEGIN(0, 0, 0); 3431 3429 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 3432 3430 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3442 3440 * Register, memory. 3443 3441 */ 3444 IEM_MC_BEGIN(0, 2 );3442 IEM_MC_BEGIN(0, 2, 0); 3445 3443 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3446 3444 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3477 3475 * Register, register. 3478 3476 */ 3479 IEM_MC_BEGIN(0, 0 );3477 IEM_MC_BEGIN(0, 0, 0); 3480 3478 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3481 3479 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3491 3489 * Register, memory. 3492 3490 */ 3493 IEM_MC_BEGIN(0, 2 );3491 IEM_MC_BEGIN(0, 2, 0); 3494 3492 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3495 3493 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3529 3527 * Register, register. 3530 3528 */ 3531 IEM_MC_BEGIN(0, 0 );3529 IEM_MC_BEGIN(0, 0, 0); 3532 3530 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 3533 3531 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3543 3541 * Memory, register. 3544 3542 */ 3545 IEM_MC_BEGIN(0, 2 );3543 IEM_MC_BEGIN(0, 2, 0); 3546 3544 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3547 3545 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3578 3576 * Register, register. 3579 3577 */ 3580 IEM_MC_BEGIN(0, 0 );3578 IEM_MC_BEGIN(0, 0, 0); 3581 3579 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3582 3580 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 3592 3590 * Memory, register. 3593 3591 */ 3594 IEM_MC_BEGIN(0, 2 );3592 IEM_MC_BEGIN(0, 2, 0); 3595 3593 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 3596 3594 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3623 3621 * XMM, MMX 3624 3622 */ 3625 IEM_MC_BEGIN(3, 1 );3623 IEM_MC_BEGIN(3, 1, 0); 3626 3624 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3627 3625 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 3653 3651 * XMM, [mem64] 3654 3652 */ 3655 IEM_MC_BEGIN(3, 2 );3653 IEM_MC_BEGIN(3, 2, 0); 3656 3654 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 3657 3655 IEM_MC_LOCAL(X86XMMREG, Dst); … … 3693 3691 * XMM, MMX 3694 3692 */ 3695 IEM_MC_BEGIN(3, 1 );3693 IEM_MC_BEGIN(3, 1, 0); 3696 3694 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3697 3695 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 3722 3720 * XMM, [mem64] 3723 3721 */ 3724 IEM_MC_BEGIN(3, 3 );3722 IEM_MC_BEGIN(3, 3, 0); 3725 3723 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 3726 3724 IEM_MC_LOCAL(X86XMMREG, Dst); … … 3763 3761 { 3764 3762 /* XMM, greg64 */ 3765 IEM_MC_BEGIN(3, 2 );3763 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 3766 3764 IEM_MC_LOCAL(uint32_t, fMxcsr); 3767 3765 IEM_MC_LOCAL(RTFLOAT32U, r32Dst); … … 3789 3787 { 3790 3788 /* XMM, [mem64] */ 3791 IEM_MC_BEGIN(3, 4 );3789 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 3792 3790 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3793 3791 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 3821 3819 { 3822 3820 /* greg, XMM */ 3823 IEM_MC_BEGIN(3, 2 );3821 IEM_MC_BEGIN(3, 2, 0); 3824 3822 IEM_MC_LOCAL(uint32_t, fMxcsr); 3825 3823 IEM_MC_LOCAL(RTFLOAT32U, r32Dst); … … 3847 3845 { 3848 3846 /* greg, [mem32] */ 3849 IEM_MC_BEGIN(3, 4 );3847 IEM_MC_BEGIN(3, 4, 0); 3850 3848 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3851 3849 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 3888 3886 { 3889 3887 /* XMM, greg64 */ 3890 IEM_MC_BEGIN(3, 2 );3888 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 3891 3889 IEM_MC_LOCAL(uint32_t, fMxcsr); 3892 3890 IEM_MC_LOCAL(RTFLOAT64U, r64Dst); … … 3914 3912 { 3915 3913 /* XMM, [mem64] */ 3916 IEM_MC_BEGIN(3, 4 );3914 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 3917 3915 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3918 3916 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 3946 3944 { 3947 3945 /* XMM, greg32 */ 3948 IEM_MC_BEGIN(3, 2 );3946 IEM_MC_BEGIN(3, 2, 0); 3949 3947 IEM_MC_LOCAL(uint32_t, fMxcsr); 3950 3948 IEM_MC_LOCAL(RTFLOAT64U, r64Dst); … … 3972 3970 { 3973 3971 /* XMM, [mem32] */ 3974 IEM_MC_BEGIN(3, 4 );3972 IEM_MC_BEGIN(3, 4, 0); 3975 3973 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3976 3974 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4021 4019 * memory, register. 4022 4020 */ 4023 IEM_MC_BEGIN(0, 2 );4021 IEM_MC_BEGIN(0, 2, 0); 4024 4022 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 4025 4023 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4060 4058 * memory, register. 4061 4059 */ 4062 IEM_MC_BEGIN(0, 2 );4060 IEM_MC_BEGIN(0, 2, 0); 4063 4061 IEM_MC_LOCAL(RTUINT128U, uSrc); /** @todo optimize this one day... */ 4064 4062 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4093 4091 * Register, register. 4094 4092 */ 4095 IEM_MC_BEGIN(3, 1 );4093 IEM_MC_BEGIN(3, 1, 0); 4096 4094 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4097 4095 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4121 4119 * Register, memory. 4122 4120 */ 4123 IEM_MC_BEGIN(3, 2 );4121 IEM_MC_BEGIN(3, 2, 0); 4124 4122 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4125 4123 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4160 4158 * Register, register. 4161 4159 */ 4162 IEM_MC_BEGIN(3, 1 );4160 IEM_MC_BEGIN(3, 1, 0); 4163 4161 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4164 4162 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4188 4186 * Register, memory. 4189 4187 */ 4190 IEM_MC_BEGIN(3, 3 );4188 IEM_MC_BEGIN(3, 3, 0); 4191 4189 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4192 4190 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4230 4228 { 4231 4229 /* greg64, XMM */ 4232 IEM_MC_BEGIN(3, 2 );4230 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 4233 4231 IEM_MC_LOCAL(uint32_t, fMxcsr); 4234 4232 IEM_MC_LOCAL(int64_t, i64Dst); … … 4256 4254 { 4257 4255 /* greg64, [mem64] */ 4258 IEM_MC_BEGIN(3, 4 );4256 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 4259 4257 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4260 4258 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4288 4286 { 4289 4287 /* greg, XMM */ 4290 IEM_MC_BEGIN(3, 2 );4288 IEM_MC_BEGIN(3, 2, 0); 4291 4289 IEM_MC_LOCAL(uint32_t, fMxcsr); 4292 4290 IEM_MC_LOCAL(int32_t, i32Dst); … … 4314 4312 { 4315 4313 /* greg, [mem] */ 4316 IEM_MC_BEGIN(3, 4 );4314 IEM_MC_BEGIN(3, 4, 0); 4317 4315 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4318 4316 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4355 4353 { 4356 4354 /* greg64, XMM */ 4357 IEM_MC_BEGIN(3, 2 );4355 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 4358 4356 IEM_MC_LOCAL(uint32_t, fMxcsr); 4359 4357 IEM_MC_LOCAL(int64_t, i64Dst); … … 4381 4379 { 4382 4380 /* greg64, [mem64] */ 4383 IEM_MC_BEGIN(3, 4 );4381 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 4384 4382 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4385 4383 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4413 4411 { 4414 4412 /* greg, XMM */ 4415 IEM_MC_BEGIN(3, 2 );4413 IEM_MC_BEGIN(3, 2, 0); 4416 4414 IEM_MC_LOCAL(uint32_t, fMxcsr); 4417 4415 IEM_MC_LOCAL(int32_t, i32Dst); … … 4439 4437 { 4440 4438 /* greg32, [mem32] */ 4441 IEM_MC_BEGIN(3, 4 );4439 IEM_MC_BEGIN(3, 4, 0); 4442 4440 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4443 4441 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4479 4477 * Register, register. 4480 4478 */ 4481 IEM_MC_BEGIN(3, 1 );4479 IEM_MC_BEGIN(3, 1, 0); 4482 4480 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4483 4481 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4508 4506 * Register, memory. 4509 4507 */ 4510 IEM_MC_BEGIN(3, 2 );4508 IEM_MC_BEGIN(3, 2, 0); 4511 4509 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4512 4510 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4547 4545 * Register, register. 4548 4546 */ 4549 IEM_MC_BEGIN(3, 1 );4547 IEM_MC_BEGIN(3, 1, 0); 4550 4548 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4551 4549 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4576 4574 * Register, memory. 4577 4575 */ 4578 IEM_MC_BEGIN(3, 3 );4576 IEM_MC_BEGIN(3, 3, 0); 4579 4577 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); 4580 4578 IEM_MC_LOCAL(uint64_t, u64Dst); … … 4618 4616 { 4619 4617 /* greg64, XMM */ 4620 IEM_MC_BEGIN(3, 2 );4618 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 4621 4619 IEM_MC_LOCAL(uint32_t, fMxcsr); 4622 4620 IEM_MC_LOCAL(int64_t, i64Dst); … … 4644 4642 { 4645 4643 /* greg64, [mem64] */ 4646 IEM_MC_BEGIN(3, 4 );4644 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 4647 4645 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4648 4646 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4676 4674 { 4677 4675 /* greg, XMM */ 4678 IEM_MC_BEGIN(3, 2 );4676 IEM_MC_BEGIN(3, 2, 0); 4679 4677 IEM_MC_LOCAL(uint32_t, fMxcsr); 4680 4678 IEM_MC_LOCAL(int32_t, i32Dst); … … 4702 4700 { 4703 4701 /* greg, [mem] */ 4704 IEM_MC_BEGIN(3, 4 );4702 IEM_MC_BEGIN(3, 4, 0); 4705 4703 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4706 4704 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4743 4741 { 4744 4742 /* greg64, XMM */ 4745 IEM_MC_BEGIN(3, 2 );4743 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT); 4746 4744 IEM_MC_LOCAL(uint32_t, fMxcsr); 4747 4745 IEM_MC_LOCAL(int64_t, i64Dst); … … 4769 4767 { 4770 4768 /* greg64, [mem64] */ 4771 IEM_MC_BEGIN(3, 4 );4769 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 4772 4770 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4773 4771 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4801 4799 { 4802 4800 /* greg32, XMM */ 4803 IEM_MC_BEGIN(3, 2 );4801 IEM_MC_BEGIN(3, 2, 0); 4804 4802 IEM_MC_LOCAL(uint32_t, fMxcsr); 4805 4803 IEM_MC_LOCAL(int32_t, i32Dst); … … 4827 4825 { 4828 4826 /* greg32, [mem64] */ 4829 IEM_MC_BEGIN(3, 4 );4827 IEM_MC_BEGIN(3, 4, 0); 4830 4828 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4831 4829 IEM_MC_LOCAL(uint32_t, fMxcsr); … … 4867 4865 * Register, register. 4868 4866 */ 4869 IEM_MC_BEGIN(4, 1 );4867 IEM_MC_BEGIN(4, 1, 0); 4870 4868 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 4871 4869 IEM_MC_LOCAL(uint32_t, fEFlags); … … 4895 4893 * Register, memory. 4896 4894 */ 4897 IEM_MC_BEGIN(4, 3 );4895 IEM_MC_BEGIN(4, 3, 0); 4898 4896 IEM_MC_LOCAL(uint32_t, fEFlags); 4899 4897 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 4936 4934 * Register, register. 4937 4935 */ 4938 IEM_MC_BEGIN(4, 1 );4936 IEM_MC_BEGIN(4, 1, 0); 4939 4937 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 4940 4938 IEM_MC_LOCAL(uint32_t, fEFlags); … … 4964 4962 * Register, memory. 4965 4963 */ 4966 IEM_MC_BEGIN(4, 3 );4964 IEM_MC_BEGIN(4, 3, 0); 4967 4965 IEM_MC_LOCAL(uint32_t, fEFlags); 4968 4966 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 5009 5007 * Register, register. 5010 5008 */ 5011 IEM_MC_BEGIN(4, 1 );5009 IEM_MC_BEGIN(4, 1, 0); 5012 5010 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 5013 5011 IEM_MC_LOCAL(uint32_t, fEFlags); … … 5037 5035 * Register, memory. 5038 5036 */ 5039 IEM_MC_BEGIN(4, 3 );5037 IEM_MC_BEGIN(4, 3, 0); 5040 5038 IEM_MC_LOCAL(uint32_t, fEFlags); 5041 5039 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 5078 5076 * Register, register. 5079 5077 */ 5080 IEM_MC_BEGIN(4, 1 );5078 IEM_MC_BEGIN(4, 1, 0); 5081 5079 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 5082 5080 IEM_MC_LOCAL(uint32_t, fEFlags); … … 5106 5104 * Register, memory. 5107 5105 */ 5108 IEM_MC_BEGIN(4, 3 );5106 IEM_MC_BEGIN(4, 3, 0); 5109 5107 IEM_MC_LOCAL(uint32_t, fEFlags); 5110 5108 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 5241 5239 { \ 5242 5240 case IEMMODE_16BIT: \ 5243 IEM_MC_BEGIN(0, 1 ); \5241 IEM_MC_BEGIN(0, 1, 0); \ 5244 5242 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5245 5243 IEM_MC_LOCAL(uint16_t, u16Tmp); \ … … 5251 5249 IEM_MC_END(); \ 5252 5250 break; \ 5253 \5251 \ 5254 5252 case IEMMODE_32BIT: \ 5255 IEM_MC_BEGIN(0, 1 ); \5253 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); \ 5256 5254 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5257 5255 IEM_MC_LOCAL(uint32_t, u32Tmp); \ … … 5265 5263 IEM_MC_END(); \ 5266 5264 break; \ 5267 \5265 \ 5268 5266 case IEMMODE_64BIT: \ 5269 IEM_MC_BEGIN(0, 1 ); \5267 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); \ 5270 5268 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 5271 5269 IEM_MC_LOCAL(uint64_t, u64Tmp); \ … … 5277 5275 IEM_MC_END(); \ 5278 5276 break; \ 5279 \5277 \ 5280 5278 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ 5281 5279 } \ … … 5286 5284 { \ 5287 5285 case IEMMODE_16BIT: \ 5288 IEM_MC_BEGIN(0, 2 ); \5286 IEM_MC_BEGIN(0, 2, 0); \ 5289 5287 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 5290 5288 IEM_MC_LOCAL(uint16_t, u16Tmp); \ … … 5298 5296 IEM_MC_END(); \ 5299 5297 break; \ 5300 \5298 \ 5301 5299 case IEMMODE_32BIT: \ 5302 IEM_MC_BEGIN(0, 2 ); \5300 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); \ 5303 5301 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 5304 5302 IEM_MC_LOCAL(uint32_t, u32Tmp); \ … … 5314 5312 IEM_MC_END(); \ 5315 5313 break; \ 5316 \5314 \ 5317 5315 case IEMMODE_64BIT: \ 5318 IEM_MC_BEGIN(0, 2 ); \5316 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); \ 5319 5317 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ 5320 5318 IEM_MC_LOCAL(uint64_t, u64Tmp); \ … … 5328 5326 IEM_MC_END(); \ 5329 5327 break; \ 5330 \5328 \ 5331 5329 IEM_NOT_REACHED_DEFAULT_CASE_RET(); \ 5332 5330 } \ … … 5474 5472 * Register, register. 5475 5473 */ 5476 IEM_MC_BEGIN(2, 1 );5474 IEM_MC_BEGIN(2, 1, 0); 5477 5475 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 5478 5476 IEM_MC_LOCAL(uint8_t, u8Dst); … … 5503 5501 * Register, register. 5504 5502 */ 5505 IEM_MC_BEGIN(2, 1 );5503 IEM_MC_BEGIN(2, 1, 0); 5506 5504 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 5507 5505 IEM_MC_LOCAL(uint8_t, u8Dst); … … 6206 6204 { 6207 6205 /* MMX, greg64 */ 6208 IEM_MC_BEGIN(0, 1 );6206 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 6209 6207 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6210 6208 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6223 6221 { 6224 6222 /* MMX, [mem64] */ 6225 IEM_MC_BEGIN(0, 2 );6223 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 6226 6224 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6227 6225 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6258 6256 { 6259 6257 /* MMX, greg32 */ 6260 IEM_MC_BEGIN(0, 1 );6258 IEM_MC_BEGIN(0, 1, 0); 6261 6259 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6262 6260 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6275 6273 { 6276 6274 /* MMX, [mem32] */ 6277 IEM_MC_BEGIN(0, 2 );6275 IEM_MC_BEGIN(0, 2, 0); 6278 6276 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6279 6277 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6313 6311 { 6314 6312 /* XMM, greg64 */ 6315 IEM_MC_BEGIN(0, 1 );6313 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 6316 6314 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6317 6315 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6329 6327 { 6330 6328 /* XMM, [mem64] */ 6331 IEM_MC_BEGIN(0, 2 );6329 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 6332 6330 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6333 6331 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6363 6361 { 6364 6362 /* XMM, greg32 */ 6365 IEM_MC_BEGIN(0, 1 );6363 IEM_MC_BEGIN(0, 1, 0); 6366 6364 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6367 6365 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6379 6377 { 6380 6378 /* XMM, [mem32] */ 6381 IEM_MC_BEGIN(0, 2 );6379 IEM_MC_BEGIN(0, 2, 0); 6382 6380 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 6383 6381 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 6418 6416 * Register, register. 6419 6417 */ 6420 IEM_MC_BEGIN(0, 1 );6418 IEM_MC_BEGIN(0, 1, 0); 6421 6419 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6422 6420 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 6437 6435 * Register, memory. 6438 6436 */ 6439 IEM_MC_BEGIN(0, 2 );6437 IEM_MC_BEGIN(0, 2, 0); 6440 6438 IEM_MC_LOCAL(uint64_t, u64Tmp); 6441 6439 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 6473 6471 * Register, register. 6474 6472 */ 6475 IEM_MC_BEGIN(0, 0 );6473 IEM_MC_BEGIN(0, 0, 0); 6476 6474 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6477 6475 … … 6489 6487 * Register, memory. 6490 6488 */ 6491 IEM_MC_BEGIN(0, 2 );6489 IEM_MC_BEGIN(0, 2, 0); 6492 6490 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 6493 6491 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 6524 6522 * Register, register. 6525 6523 */ 6526 IEM_MC_BEGIN(0, 0 );6524 IEM_MC_BEGIN(0, 0, 0); 6527 6525 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6528 6526 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 6538 6536 * Register, memory. 6539 6537 */ 6540 IEM_MC_BEGIN(0, 2 );6538 IEM_MC_BEGIN(0, 2, 0); 6541 6539 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 6542 6540 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 6565 6563 * Register, register. 6566 6564 */ 6565 IEM_MC_BEGIN(3, 0, 0); 6567 6566 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6568 IEM_MC_BEGIN(3, 0);6569 6567 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 6570 6568 IEM_MC_ARG(uint64_t *, pDst, 0); … … 6588 6586 * Register, memory. 6589 6587 */ 6590 IEM_MC_BEGIN(3, 2 );6588 IEM_MC_BEGIN(3, 2, 0); 6591 6589 IEM_MC_ARG(uint64_t *, pDst, 0); 6592 6590 IEM_MC_LOCAL(uint64_t, uSrc); … … 6631 6629 * Register, register. 6632 6630 */ 6631 IEM_MC_BEGIN(3, 0, 0); 6633 6632 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6634 IEM_MC_BEGIN(3, 0);6635 6633 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6636 6634 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 6650 6648 * Register, memory. 6651 6649 */ 6652 IEM_MC_BEGIN(3, 2 );6650 IEM_MC_BEGIN(3, 2, 0); 6653 6651 IEM_MC_ARG(PRTUINT128U, puDst, 0); 6654 6652 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 6716 6714 * Register, immediate. 6717 6715 */ 6716 IEM_MC_BEGIN(2, 0, 0); 6718 6717 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6719 IEM_MC_BEGIN(2, 0);6720 6718 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 6721 6719 IEM_MC_ARG(uint64_t *, pDst, 0); … … 6762 6760 * Register, immediate. 6763 6761 */ 6762 IEM_MC_BEGIN(2, 0, 0); 6764 6763 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 6765 IEM_MC_BEGIN(2, 0);6766 6764 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 6767 6765 IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 7077 7075 { 7078 7076 IEMOP_MNEMONIC(emms, "emms"); 7079 IEM_MC_BEGIN(0, 0);7077 IEM_MC_BEGIN(0, 0, 0); 7080 7078 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7081 7079 IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE(); … … 7108 7106 if (enmEffOpSize == IEMMODE_64BIT) 7109 7107 { 7110 IEM_MC_BEGIN(2, 0 );7108 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 7111 7109 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7112 7110 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 7119 7117 else 7120 7118 { 7121 IEM_MC_BEGIN(2, 0 );7119 IEM_MC_BEGIN(2, 0, 0); 7122 7120 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7123 7121 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 7136 7134 if (enmEffOpSize == IEMMODE_64BIT) 7137 7135 { 7138 IEM_MC_BEGIN(3, 0 );7136 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 7139 7137 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7140 7138 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7150 7148 else 7151 7149 { 7152 IEM_MC_BEGIN(3, 0 );7150 IEM_MC_BEGIN(3, 0, 0); 7153 7151 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7154 7152 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7190 7188 if (enmEffOpSize == IEMMODE_64BIT) 7191 7189 { 7192 IEM_MC_BEGIN(2, 0 );7190 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 7193 7191 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7194 7192 IEM_MC_ARG(uint64_t, u64Val, 0); … … 7201 7199 else 7202 7200 { 7203 IEM_MC_BEGIN(2, 0 );7201 IEM_MC_BEGIN(2, 0, 0); 7204 7202 IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES(); 7205 7203 IEM_MC_ARG(uint32_t, u32Val, 0); … … 7218 7216 if (enmEffOpSize == IEMMODE_64BIT) 7219 7217 { 7220 IEM_MC_BEGIN(3, 0 );7218 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 7221 7219 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7222 7220 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7232 7230 else 7233 7231 { 7234 IEM_MC_BEGIN(3, 0 );7232 IEM_MC_BEGIN(3, 0, 0); 7235 7233 IEM_MC_ARG(uint8_t, iEffSeg, 0); 7236 7234 IEM_MC_ARG(RTGCPTR, GCPtrVal, 1); … … 7327 7325 { 7328 7326 /* greg64, MMX */ 7329 IEM_MC_BEGIN(0, 1 );7327 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 7330 7328 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 7331 7329 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7344 7342 { 7345 7343 /* [mem64], MMX */ 7346 IEM_MC_BEGIN(0, 2 );7344 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 7347 7345 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7348 7346 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7379 7377 { 7380 7378 /* greg32, MMX */ 7381 IEM_MC_BEGIN(0, 1 );7379 IEM_MC_BEGIN(0, 1, 0); 7382 7380 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 7383 7381 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7396 7394 { 7397 7395 /* [mem32], MMX */ 7398 IEM_MC_BEGIN(0, 2 );7396 IEM_MC_BEGIN(0, 2, 0); 7399 7397 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7400 7398 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7435 7433 { 7436 7434 /* greg64, XMM */ 7437 IEM_MC_BEGIN(0, 1 );7435 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 7438 7436 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7439 7437 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7451 7449 { 7452 7450 /* [mem64], XMM */ 7453 IEM_MC_BEGIN(0, 2 );7451 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 7454 7452 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7455 7453 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7485 7483 { 7486 7484 /* greg32, XMM */ 7487 IEM_MC_BEGIN(0, 1 );7485 IEM_MC_BEGIN(0, 1, 0); 7488 7486 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7489 7487 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7501 7499 { 7502 7500 /* [mem32], XMM */ 7503 IEM_MC_BEGIN(0, 2 );7501 IEM_MC_BEGIN(0, 2, 0); 7504 7502 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 7505 7503 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 7537 7535 * XMM128, XMM64. 7538 7536 */ 7539 IEM_MC_BEGIN(0, 2 );7537 IEM_MC_BEGIN(0, 2, 0); 7540 7538 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7541 7539 IEM_MC_LOCAL(uint64_t, uSrc); … … 7555 7553 * XMM128, [mem64]. 7556 7554 */ 7557 IEM_MC_BEGIN(0, 2 );7555 IEM_MC_BEGIN(0, 2, 0); 7558 7556 IEM_MC_LOCAL(uint64_t, uSrc); 7559 7557 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7587 7585 /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */ 7588 7586 /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */ 7589 IEM_MC_BEGIN(0, 1 );7587 IEM_MC_BEGIN(0, 1, 0); 7590 7588 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx); 7591 7589 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 7605 7603 * [mem64], MMX. 7606 7604 */ 7607 IEM_MC_BEGIN(0, 2 );7605 IEM_MC_BEGIN(0, 2, 0); 7608 7606 IEM_MC_LOCAL(uint64_t, u64Tmp); 7609 7607 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7633 7631 * XMM, XMM. 7634 7632 */ 7635 IEM_MC_BEGIN(0, 0 );7633 IEM_MC_BEGIN(0, 0, 0); 7636 7634 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7637 7635 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 7647 7645 * [mem128], XMM. 7648 7646 */ 7649 IEM_MC_BEGIN(0, 2 );7647 IEM_MC_BEGIN(0, 2, 0); 7650 7648 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 7651 7649 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7674 7672 * XMM, XMM. 7675 7673 */ 7676 IEM_MC_BEGIN(0, 0 );7674 IEM_MC_BEGIN(0, 0, 0); 7677 7675 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 7678 7676 IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT(); … … 7688 7686 * [mem128], XMM. 7689 7687 */ 7690 IEM_MC_BEGIN(0, 2 );7688 IEM_MC_BEGIN(0, 2, 0); 7691 7689 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 7692 7690 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 7717 7715 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7718 7716 { 7717 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7719 7718 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7720 IEM_MC_BEGIN(0, 0);7721 7719 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7722 7720 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 7729 7727 else 7730 7728 { 7729 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7731 7730 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7732 IEM_MC_BEGIN(0, 0);7733 7731 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7734 7732 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 7750 7748 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7751 7749 { 7750 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7752 7751 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7753 IEM_MC_BEGIN(0, 0);7754 7752 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7755 7753 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 7762 7760 else 7763 7761 { 7762 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7764 7763 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7765 IEM_MC_BEGIN(0, 0);7766 7764 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7767 7765 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 7783 7781 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7784 7782 { 7783 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7785 7784 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7786 IEM_MC_BEGIN(0, 0);7787 7785 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7788 7786 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 7795 7793 else 7796 7794 { 7795 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7797 7796 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7798 IEM_MC_BEGIN(0, 0);7799 7797 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7800 7798 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 7816 7814 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7817 7815 { 7816 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7818 7817 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7819 IEM_MC_BEGIN(0, 0);7820 7818 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7821 7819 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 7828 7826 else 7829 7827 { 7828 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7830 7829 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7831 IEM_MC_BEGIN(0, 0);7832 7830 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7833 7831 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 7849 7847 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7850 7848 { 7849 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7851 7850 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7852 IEM_MC_BEGIN(0, 0);7853 7851 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7854 7852 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 7861 7859 else 7862 7860 { 7861 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7863 7862 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7864 IEM_MC_BEGIN(0, 0);7865 7863 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7866 7864 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 7882 7880 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7883 7881 { 7882 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7884 7883 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7885 IEM_MC_BEGIN(0, 0);7886 7884 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7887 7885 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 7894 7892 else 7895 7893 { 7894 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7896 7895 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7897 IEM_MC_BEGIN(0, 0);7898 7896 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7899 7897 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 7915 7913 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7916 7914 { 7915 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7917 7916 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7918 IEM_MC_BEGIN(0, 0);7919 7917 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7920 7918 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 7927 7925 else 7928 7926 { 7927 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7929 7928 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7930 IEM_MC_BEGIN(0, 0);7931 7929 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7932 7930 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 7948 7946 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7949 7947 { 7948 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7950 7949 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7951 IEM_MC_BEGIN(0, 0);7952 7950 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7953 7951 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 7960 7958 else 7961 7959 { 7960 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7962 7961 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7963 IEM_MC_BEGIN(0, 0);7964 7962 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7965 7963 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 7981 7979 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 7982 7980 { 7981 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7983 7982 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 7984 IEM_MC_BEGIN(0, 0);7985 7983 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7986 7984 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 7993 7991 else 7994 7992 { 7993 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 7995 7994 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 7996 IEM_MC_BEGIN(0, 0);7997 7995 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 7998 7996 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8014 8012 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8015 8013 { 8014 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8016 8015 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8017 IEM_MC_BEGIN(0, 0);8018 8016 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8019 8017 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8026 8024 else 8027 8025 { 8026 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8028 8027 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8029 IEM_MC_BEGIN(0, 0);8030 8028 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8031 8029 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8047 8045 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8048 8046 { 8047 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8049 8048 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8050 IEM_MC_BEGIN(0, 0);8051 8049 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8052 8050 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8059 8057 else 8060 8058 { 8059 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8061 8060 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8062 IEM_MC_BEGIN(0, 0);8063 8061 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8064 8062 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8080 8078 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8081 8079 { 8080 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8082 8081 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8083 IEM_MC_BEGIN(0, 0);8084 8082 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8085 8083 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8092 8090 else 8093 8091 { 8092 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8094 8093 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8095 IEM_MC_BEGIN(0, 0);8096 8094 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8097 8095 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8113 8111 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8114 8112 { 8113 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8115 8114 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8116 IEM_MC_BEGIN(0, 0);8117 8115 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8118 8116 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8125 8123 else 8126 8124 { 8125 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8127 8126 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8128 IEM_MC_BEGIN(0, 0);8129 8127 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8130 8128 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8146 8144 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8147 8145 { 8146 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8148 8147 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8149 IEM_MC_BEGIN(0, 0);8150 8148 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8151 8149 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8158 8156 else 8159 8157 { 8158 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8160 8159 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8161 IEM_MC_BEGIN(0, 0);8162 8160 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8163 8161 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8179 8177 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8180 8178 { 8179 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8181 8180 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8182 IEM_MC_BEGIN(0, 0);8183 8181 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8184 8182 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8191 8189 else 8192 8190 { 8191 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8193 8192 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8194 IEM_MC_BEGIN(0, 0);8195 8193 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8196 8194 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8212 8210 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT) 8213 8211 { 8212 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8214 8213 int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm); 8215 IEM_MC_BEGIN(0, 0);8216 8214 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8217 8215 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8224 8222 else 8225 8223 { 8224 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8226 8225 int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm); 8227 IEM_MC_BEGIN(0, 0);8228 8226 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8229 8227 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8250 8248 { 8251 8249 /* register target */ 8252 IEM_MC_BEGIN(0, 0 );8250 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8253 8251 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8254 8252 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 8263 8261 { 8264 8262 /* memory target */ 8265 IEM_MC_BEGIN(0, 1 );8263 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8266 8264 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8267 8265 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8291 8289 { 8292 8290 /* register target */ 8293 IEM_MC_BEGIN(0, 0 );8291 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8294 8292 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8295 8293 IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) { … … 8304 8302 { 8305 8303 /* memory target */ 8306 IEM_MC_BEGIN(0, 1 );8304 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8307 8305 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8308 8306 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8332 8330 { 8333 8331 /* register target */ 8334 IEM_MC_BEGIN(0, 0 );8332 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8335 8333 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8336 8334 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 8345 8343 { 8346 8344 /* memory target */ 8347 IEM_MC_BEGIN(0, 1 );8345 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8348 8346 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8349 8347 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8373 8371 { 8374 8372 /* register target */ 8375 IEM_MC_BEGIN(0, 0 );8373 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8376 8374 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8377 8375 IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) { … … 8386 8384 { 8387 8385 /* memory target */ 8388 IEM_MC_BEGIN(0, 1 );8386 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8389 8387 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8390 8388 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8414 8412 { 8415 8413 /* register target */ 8416 IEM_MC_BEGIN(0, 0 );8414 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8417 8415 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8418 8416 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 8427 8425 { 8428 8426 /* memory target */ 8429 IEM_MC_BEGIN(0, 1 );8427 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8430 8428 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8431 8429 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8455 8453 { 8456 8454 /* register target */ 8457 IEM_MC_BEGIN(0, 0 );8455 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8458 8456 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8459 8457 IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) { … … 8468 8466 { 8469 8467 /* memory target */ 8470 IEM_MC_BEGIN(0, 1 );8468 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8471 8469 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8472 8470 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8496 8494 { 8497 8495 /* register target */ 8498 IEM_MC_BEGIN(0, 0 );8496 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8499 8497 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8500 8498 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 8509 8507 { 8510 8508 /* memory target */ 8511 IEM_MC_BEGIN(0, 1 );8509 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8512 8510 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8513 8511 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8537 8535 { 8538 8536 /* register target */ 8539 IEM_MC_BEGIN(0, 0 );8537 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8540 8538 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8541 8539 IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) { … … 8550 8548 { 8551 8549 /* memory target */ 8552 IEM_MC_BEGIN(0, 1 );8550 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8553 8551 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8554 8552 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8578 8576 { 8579 8577 /* register target */ 8580 IEM_MC_BEGIN(0, 0 );8578 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8581 8579 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8582 8580 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8591 8589 { 8592 8590 /* memory target */ 8593 IEM_MC_BEGIN(0, 1 );8591 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8594 8592 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8595 8593 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8619 8617 { 8620 8618 /* register target */ 8621 IEM_MC_BEGIN(0, 0 );8619 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8622 8620 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8623 8621 IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) { … … 8632 8630 { 8633 8631 /* memory target */ 8634 IEM_MC_BEGIN(0, 1 );8632 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8635 8633 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8636 8634 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8660 8658 { 8661 8659 /* register target */ 8662 IEM_MC_BEGIN(0, 0 );8660 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8663 8661 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8664 8662 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8673 8671 { 8674 8672 /* memory target */ 8675 IEM_MC_BEGIN(0, 1 );8673 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8676 8674 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8677 8675 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8701 8699 { 8702 8700 /* register target */ 8703 IEM_MC_BEGIN(0, 0 );8701 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8704 8702 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8705 8703 IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) { … … 8714 8712 { 8715 8713 /* memory target */ 8716 IEM_MC_BEGIN(0, 1 );8714 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8717 8715 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8718 8716 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8742 8740 { 8743 8741 /* register target */ 8744 IEM_MC_BEGIN(0, 0 );8742 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8745 8743 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8746 8744 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8755 8753 { 8756 8754 /* memory target */ 8757 IEM_MC_BEGIN(0, 1 );8755 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8758 8756 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8759 8757 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8783 8781 { 8784 8782 /* register target */ 8785 IEM_MC_BEGIN(0, 0 );8783 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8786 8784 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8787 8785 IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) { … … 8796 8794 { 8797 8795 /* memory target */ 8798 IEM_MC_BEGIN(0, 1 );8796 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8799 8797 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8800 8798 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8824 8822 { 8825 8823 /* register target */ 8826 IEM_MC_BEGIN(0, 0 );8824 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8827 8825 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8828 8826 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8837 8835 { 8838 8836 /* memory target */ 8839 IEM_MC_BEGIN(0, 1 );8837 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8840 8838 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8841 8839 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8865 8863 { 8866 8864 /* register target */ 8867 IEM_MC_BEGIN(0, 0 );8865 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386); 8868 8866 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 8869 8867 IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) { … … 8878 8876 { 8879 8877 /* memory target */ 8880 IEM_MC_BEGIN(0, 1 );8878 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 8881 8879 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 8882 8880 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); … … 8938 8936 { \ 8939 8937 case IEMMODE_16BIT: \ 8940 IEM_MC_BEGIN(3, 0 ); \8938 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 8941 8939 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8942 8940 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 8955 8953 \ 8956 8954 case IEMMODE_32BIT: \ 8957 IEM_MC_BEGIN(3, 0 ); \8955 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 8958 8956 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8959 8957 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 8973 8971 \ 8974 8972 case IEMMODE_64BIT: \ 8975 IEM_MC_BEGIN(3, 0 ); \8973 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 8976 8974 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 8977 8975 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 9001 8999 { \ 9002 9000 case IEMMODE_16BIT: \ 9003 IEM_MC_BEGIN(3, 4 ); \9001 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \ 9004 9002 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 9005 9003 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 9029 9027 \ 9030 9028 case IEMMODE_32BIT: \ 9031 IEM_MC_BEGIN(3, 4 ); \9029 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \ 9032 9030 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 9033 9031 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 9057 9055 \ 9058 9056 case IEMMODE_64BIT: \ 9059 IEM_MC_BEGIN(3, 5 ); \9057 IEM_MC_BEGIN(3, 5, IEM_MC_F_64BIT); \ 9060 9058 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 9061 9059 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 9095 9093 { \ 9096 9094 case IEMMODE_16BIT: \ 9097 IEM_MC_BEGIN(3, 4 ); \9095 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \ 9098 9096 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 9099 9097 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 9123 9121 \ 9124 9122 case IEMMODE_32BIT: \ 9125 IEM_MC_BEGIN(3, 4 ); \9123 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \ 9126 9124 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 9127 9125 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 9151 9149 \ 9152 9150 case IEMMODE_64BIT: \ 9153 IEM_MC_BEGIN(3, 4 ); \9151 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); \ 9154 9152 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 9155 9153 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 9195 9193 { \ 9196 9194 case IEMMODE_16BIT: \ 9197 IEM_MC_BEGIN(3, 0 ); \9195 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 9198 9196 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9199 9197 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ … … 9212 9210 \ 9213 9211 case IEMMODE_32BIT: \ 9214 IEM_MC_BEGIN(3, 0 ); \9212 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 9215 9213 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9216 9214 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ … … 9229 9227 \ 9230 9228 case IEMMODE_64BIT: \ 9231 IEM_MC_BEGIN(3, 0 ); \9229 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 9232 9230 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 9233 9231 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ … … 9257 9255 { \ 9258 9256 case IEMMODE_16BIT: \ 9259 IEM_MC_BEGIN(3, 4 ); \9257 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \ 9260 9258 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 9261 9259 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 9285 9283 \ 9286 9284 case IEMMODE_32BIT: \ 9287 IEM_MC_BEGIN(3, 4 ); \9285 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \ 9288 9286 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 9289 9287 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 9313 9311 \ 9314 9312 case IEMMODE_64BIT: \ 9315 IEM_MC_BEGIN(3, 4 ); \9313 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); \ 9316 9314 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 9317 9315 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 9376 9374 { 9377 9375 case IEMMODE_16BIT: 9378 IEM_MC_BEGIN(4, 0 );9376 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386); 9379 9377 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9380 9378 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 9393 9391 9394 9392 case IEMMODE_32BIT: 9395 IEM_MC_BEGIN(4, 0 );9393 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386); 9396 9394 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9397 9395 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 9411 9409 9412 9410 case IEMMODE_64BIT: 9413 IEM_MC_BEGIN(4, 0 );9411 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT); 9414 9412 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9415 9413 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 9435 9433 { 9436 9434 case IEMMODE_16BIT: 9437 IEM_MC_BEGIN(4, 3 );9435 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386); 9438 9436 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 9439 9437 IEM_MC_ARG(uint16_t, u16Src, 1); … … 9459 9457 9460 9458 case IEMMODE_32BIT: 9461 IEM_MC_BEGIN(4, 3 );9459 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386); 9462 9460 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 9463 9461 IEM_MC_ARG(uint32_t, u32Src, 1); … … 9483 9481 9484 9482 case IEMMODE_64BIT: 9485 IEM_MC_BEGIN(4, 3 );9483 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT); 9486 9484 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 9487 9485 IEM_MC_ARG(uint64_t, u64Src, 1); … … 9525 9523 { 9526 9524 case IEMMODE_16BIT: 9527 IEM_MC_BEGIN(4, 0 );9525 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386); 9528 9526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9529 9527 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 9543 9541 9544 9542 case IEMMODE_32BIT: 9545 IEM_MC_BEGIN(4, 0 );9543 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386); 9546 9544 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9547 9545 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 9562 9560 9563 9561 case IEMMODE_64BIT: 9564 IEM_MC_BEGIN(4, 0 );9562 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT); 9565 9563 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 9566 9564 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 9587 9585 { 9588 9586 case IEMMODE_16BIT: 9589 IEM_MC_BEGIN(4, 3 );9587 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386); 9590 9588 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 9591 9589 IEM_MC_ARG(uint16_t, u16Src, 1); … … 9610 9608 9611 9609 case IEMMODE_32BIT: 9612 IEM_MC_BEGIN(4, 3 );9610 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386); 9613 9611 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 9614 9612 IEM_MC_ARG(uint32_t, u32Src, 1); … … 9633 9631 9634 9632 case IEMMODE_64BIT: 9635 IEM_MC_BEGIN(4, 3 );9633 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT); 9636 9634 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 9637 9635 IEM_MC_ARG(uint64_t, u64Src, 1); … … 9748 9746 IEMOP_RAISE_INVALID_OPCODE_RET(); 9749 9747 9750 IEM_MC_BEGIN(3, 1 );9748 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II); 9751 9749 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9752 9750 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9768 9766 IEMOP_RAISE_INVALID_OPCODE_RET(); 9769 9767 9770 IEM_MC_BEGIN(3, 1 );9768 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II); 9771 9769 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9772 9770 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9806 9804 IEMOP_RAISE_INVALID_OPCODE_RET(); 9807 9805 9808 IEM_MC_BEGIN(2, 0 );9806 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II); 9809 9807 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9810 9808 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9842 9840 IEMOP_RAISE_INVALID_OPCODE_RET(); 9843 9841 9844 IEM_MC_BEGIN(2, 0 );9842 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II); 9845 9843 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9846 9844 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9868 9866 IEMOP_RAISE_INVALID_OPCODE_RET(); 9869 9867 9870 IEM_MC_BEGIN(3, 0 );9868 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE); 9871 9869 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9872 9870 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9895 9893 IEMOP_RAISE_INVALID_OPCODE_RET(); 9896 9894 9897 IEM_MC_BEGIN(3, 0 );9895 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE); 9898 9896 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9899 9897 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9924 9922 return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm); 9925 9923 9926 IEM_MC_BEGIN(2, 0 );9924 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 9927 9925 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9928 9926 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9948 9946 return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm); 9949 9947 9950 IEM_MC_BEGIN(2, 0 );9948 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 9951 9949 IEM_MC_ARG(uint8_t, iEffSeg, 0); 9952 9950 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 9964 9962 RT_NOREF_PV(bRm); 9965 9963 IEMOP_MNEMONIC(lfence, "lfence"); 9966 IEM_MC_BEGIN(0, 0 );9964 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 9967 9965 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 9968 9966 #ifdef RT_ARCH_ARM64 … … 9984 9982 RT_NOREF_PV(bRm); 9985 9983 IEMOP_MNEMONIC(mfence, "mfence"); 9986 IEM_MC_BEGIN(0, 0 );9984 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 9987 9985 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 9988 9986 #ifdef RT_ARCH_ARM64 … … 10004 10002 RT_NOREF_PV(bRm); 10005 10003 IEMOP_MNEMONIC(sfence, "sfence"); 10006 IEM_MC_BEGIN(0, 0 );10004 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 10007 10005 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 10008 10006 #ifdef RT_ARCH_ARM64 … … 10025 10023 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10026 10024 { 10027 IEM_MC_BEGIN(1, 0 );10025 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT); 10028 10026 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10029 10027 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10036 10034 else 10037 10035 { 10038 IEM_MC_BEGIN(1, 0 );10036 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 10039 10037 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10040 10038 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10054 10052 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10055 10053 { 10056 IEM_MC_BEGIN(1, 0 );10054 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT); 10057 10055 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10058 10056 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10065 10063 else 10066 10064 { 10067 IEM_MC_BEGIN(1, 0 );10065 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 10068 10066 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10069 10067 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10083 10081 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10084 10082 { 10085 IEM_MC_BEGIN(1, 0 );10083 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT); 10086 10084 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10087 10085 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10095 10093 else 10096 10094 { 10097 IEM_MC_BEGIN(1, 0 );10095 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 10098 10096 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10099 10097 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10113 10111 if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT) 10114 10112 { 10115 IEM_MC_BEGIN(1, 0 );10113 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT); 10116 10114 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10117 10115 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10125 10123 else 10126 10124 { 10127 IEM_MC_BEGIN(1, 0 );10125 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 10128 10126 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase); 10129 10127 IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT(); … … 10206 10204 if (IEM_IS_MODRM_REG_MODE(bRm)) 10207 10205 { 10208 IEM_MC_BEGIN(4, 0 );10206 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486); 10209 10207 IEMOP_HLP_DONE_DECODING(); 10210 10208 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 10227 10225 else 10228 10226 { 10229 IEM_MC_BEGIN(4, 4 );10227 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486); 10230 10228 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 10231 10229 IEM_MC_ARG(uint8_t *, pu8Al, 1); … … 10268 10266 { 10269 10267 case IEMMODE_16BIT: 10270 IEM_MC_BEGIN(4, 0 );10268 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486); 10271 10269 IEMOP_HLP_DONE_DECODING(); 10272 10270 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 10289 10287 10290 10288 case IEMMODE_32BIT: 10291 IEM_MC_BEGIN(4, 0 );10289 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486); 10292 10290 IEMOP_HLP_DONE_DECODING(); 10293 10291 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 10316 10314 10317 10315 case IEMMODE_64BIT: 10318 IEM_MC_BEGIN(4, 0 );10316 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT); 10319 10317 IEMOP_HLP_DONE_DECODING(); 10320 10318 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 10356 10354 { 10357 10355 case IEMMODE_16BIT: 10358 IEM_MC_BEGIN(4, 4 );10356 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486); 10359 10357 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 10360 10358 IEM_MC_ARG(uint16_t *, pu16Ax, 1); … … 10385 10383 10386 10384 case IEMMODE_32BIT: 10387 IEM_MC_BEGIN(4, 4 );10385 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486); 10388 10386 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 10389 10387 IEM_MC_ARG(uint32_t *, pu32Eax, 1); … … 10418 10416 10419 10417 case IEMMODE_64BIT: 10420 IEM_MC_BEGIN(4, 4 );10418 IEM_MC_BEGIN(4, 4, IEM_MC_F_64BIT); 10421 10419 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 10422 10420 IEM_MC_ARG(uint64_t *, pu64Rax, 1); … … 10526 10524 { 10527 10525 case IEMMODE_16BIT: 10528 IEM_MC_BEGIN(0, 1 );10526 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 10529 10527 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10530 10528 IEM_MC_LOCAL(uint16_t, u16Value); … … 10536 10534 10537 10535 case IEMMODE_32BIT: 10538 IEM_MC_BEGIN(0, 1 );10536 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 10539 10537 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10540 10538 IEM_MC_LOCAL(uint32_t, u32Value); … … 10546 10544 10547 10545 case IEMMODE_64BIT: 10548 IEM_MC_BEGIN(0, 1 );10546 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 10549 10547 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10550 10548 IEM_MC_LOCAL(uint64_t, u64Value); … … 10566 10564 { 10567 10565 case IEMMODE_16BIT: 10568 IEM_MC_BEGIN(0, 2 );10566 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 10569 10567 IEM_MC_LOCAL(uint16_t, u16Value); 10570 10568 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10578 10576 10579 10577 case IEMMODE_32BIT: 10580 IEM_MC_BEGIN(0, 2 );10578 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 10581 10579 IEM_MC_LOCAL(uint32_t, u32Value); 10582 10580 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10590 10588 10591 10589 case IEMMODE_64BIT: 10592 IEM_MC_BEGIN(0, 2 );10590 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 10593 10591 IEM_MC_LOCAL(uint64_t, u64Value); 10594 10592 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10625 10623 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 10626 10624 { 10627 IEM_MC_BEGIN(0, 1 );10625 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 10628 10626 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10629 10627 IEM_MC_LOCAL(uint32_t, u32Value); … … 10635 10633 else 10636 10634 { 10637 IEM_MC_BEGIN(0, 1 );10635 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 10638 10636 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 10639 10637 IEM_MC_LOCAL(uint64_t, u64Value); … … 10651 10649 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 10652 10650 { 10653 IEM_MC_BEGIN(0, 2 );10651 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 10654 10652 IEM_MC_LOCAL(uint32_t, u32Value); 10655 10653 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10663 10661 else 10664 10662 { 10665 IEM_MC_BEGIN(0, 2 );10663 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 10666 10664 IEM_MC_LOCAL(uint64_t, u64Value); 10667 10665 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 10731 10729 { \ 10732 10730 case IEMMODE_16BIT: \ 10733 IEM_MC_BEGIN(3, 0 ); \10731 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 10734 10732 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10735 10733 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ … … 10746 10744 \ 10747 10745 case IEMMODE_32BIT: \ 10748 IEM_MC_BEGIN(3, 0 ); \10746 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 10749 10747 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10750 10748 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ … … 10762 10760 \ 10763 10761 case IEMMODE_64BIT: \ 10764 IEM_MC_BEGIN(3, 0 ); \10762 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 10765 10763 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10766 10764 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ … … 10788 10786 { \ 10789 10787 case IEMMODE_16BIT: \ 10790 IEM_MC_BEGIN(3, 3 ); \10788 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 10791 10789 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10792 10790 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 10810 10808 \ 10811 10809 case IEMMODE_32BIT: \ 10812 IEM_MC_BEGIN(3, 3 ); \10810 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 10813 10811 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 10814 10812 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 10832 10830 \ 10833 10831 case IEMMODE_64BIT: \ 10834 IEM_MC_BEGIN(3, 3 ); \10832 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 10835 10833 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 10836 10834 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 10864 10862 { \ 10865 10863 case IEMMODE_16BIT: \ 10866 IEM_MC_BEGIN(3, 3 ); \10864 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 10867 10865 IEM_MC_ARG(uint16_t *, pu16Dst, 0); \ 10868 10866 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 10886 10884 \ 10887 10885 case IEMMODE_32BIT: \ 10888 IEM_MC_BEGIN(3, 3 ); \10886 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 10889 10887 IEM_MC_ARG(uint32_t *, pu32Dst, 0); \ 10890 10888 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 10908 10906 \ 10909 10907 case IEMMODE_64BIT: \ 10910 IEM_MC_BEGIN(3, 3 ); \10908 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 10911 10909 IEM_MC_ARG(uint64_t *, pu64Dst, 0); \ 10912 10910 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 10947 10945 { \ 10948 10946 case IEMMODE_16BIT: \ 10949 IEM_MC_BEGIN(3, 0 ); \10947 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 10950 10948 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10951 10949 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ … … 10962 10960 \ 10963 10961 case IEMMODE_32BIT: \ 10964 IEM_MC_BEGIN(3, 0 ); \10962 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \ 10965 10963 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10966 10964 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ … … 10977 10975 \ 10978 10976 case IEMMODE_64BIT: \ 10979 IEM_MC_BEGIN(3, 0 ); \10977 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 10980 10978 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \ 10981 10979 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ … … 11003 11001 { \ 11004 11002 case IEMMODE_16BIT: \ 11005 IEM_MC_BEGIN(3, 3 ); \11003 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 11006 11004 IEM_MC_ARG(uint16_t const *, pu16Dst, 0); \ 11007 11005 IEM_MC_ARG(uint16_t, u16Src, 1); \ … … 11025 11023 \ 11026 11024 case IEMMODE_32BIT: \ 11027 IEM_MC_BEGIN(3, 3 ); \11025 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \ 11028 11026 IEM_MC_ARG(uint32_t const *, pu32Dst, 0); \ 11029 11027 IEM_MC_ARG(uint32_t, u32Src, 1); \ … … 11047 11045 \ 11048 11046 case IEMMODE_64BIT: \ 11049 IEM_MC_BEGIN(3, 3 ); \11047 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \ 11050 11048 IEM_MC_ARG(uint64_t const *, pu64Dst, 0); \ 11051 11049 IEM_MC_ARG(uint64_t, u64Src, 1); \ … … 11167 11165 { 11168 11166 case IEMMODE_16BIT: 11169 IEM_MC_BEGIN(3, 0 );11167 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 11170 11168 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11171 11169 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 11183 11181 11184 11182 case IEMMODE_32BIT: 11185 IEM_MC_BEGIN(3, 0 );11183 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); 11186 11184 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11187 11185 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 11201 11199 11202 11200 case IEMMODE_64BIT: 11203 IEM_MC_BEGIN(3, 0 );11201 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 11204 11202 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11205 11203 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 11227 11225 { 11228 11226 case IEMMODE_16BIT: 11229 IEM_MC_BEGIN(3, 1 );11227 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); 11230 11228 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 11231 11229 IEM_MC_ARG(uint16_t, u16Src, 1); … … 11245 11243 11246 11244 case IEMMODE_32BIT: 11247 IEM_MC_BEGIN(3, 1 );11245 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); 11248 11246 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 11249 11247 IEM_MC_ARG(uint32_t, u32Src, 1); … … 11266 11264 11267 11265 case IEMMODE_64BIT: 11268 IEM_MC_BEGIN(3, 1 );11266 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); 11269 11267 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 11270 11268 IEM_MC_ARG(uint64_t, u64Src, 1); … … 11380 11378 { 11381 11379 case IEMMODE_16BIT: 11382 IEM_MC_BEGIN(0, 1 );11380 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 11383 11381 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11384 11382 IEM_MC_LOCAL(uint16_t, u16Value); … … 11390 11388 11391 11389 case IEMMODE_32BIT: 11392 IEM_MC_BEGIN(0, 1 );11390 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 11393 11391 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11394 11392 IEM_MC_LOCAL(uint32_t, u32Value); … … 11400 11398 11401 11399 case IEMMODE_64BIT: 11402 IEM_MC_BEGIN(0, 1 );11400 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 11403 11401 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11404 11402 IEM_MC_LOCAL(uint64_t, u64Value); … … 11420 11418 { 11421 11419 case IEMMODE_16BIT: 11422 IEM_MC_BEGIN(0, 2 );11420 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 11423 11421 IEM_MC_LOCAL(uint16_t, u16Value); 11424 11422 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11432 11430 11433 11431 case IEMMODE_32BIT: 11434 IEM_MC_BEGIN(0, 2 );11432 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 11435 11433 IEM_MC_LOCAL(uint32_t, u32Value); 11436 11434 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11444 11442 11445 11443 case IEMMODE_64BIT: 11446 IEM_MC_BEGIN(0, 2 );11444 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 11447 11445 IEM_MC_LOCAL(uint64_t, u64Value); 11448 11446 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11479 11477 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 11480 11478 { 11481 IEM_MC_BEGIN(0, 1 );11479 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); 11482 11480 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11483 11481 IEM_MC_LOCAL(uint32_t, u32Value); … … 11489 11487 else 11490 11488 { 11491 IEM_MC_BEGIN(0, 1 );11489 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 11492 11490 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11493 11491 IEM_MC_LOCAL(uint64_t, u64Value); … … 11505 11503 if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT) 11506 11504 { 11507 IEM_MC_BEGIN(0, 2 );11505 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 11508 11506 IEM_MC_LOCAL(uint32_t, u32Value); 11509 11507 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11517 11515 else 11518 11516 { 11519 IEM_MC_BEGIN(0, 2 );11517 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 11520 11518 IEM_MC_LOCAL(uint64_t, u64Value); 11521 11519 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 11543 11541 if (IEM_IS_MODRM_REG_MODE(bRm)) 11544 11542 { 11545 IEM_MC_BEGIN(3, 0 );11543 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486); 11546 11544 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11547 11545 IEM_MC_ARG(uint8_t *, pu8Dst, 0); … … 11562 11560 * We're accessing memory. 11563 11561 */ 11564 IEM_MC_BEGIN(3, 4 );11562 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486); 11565 11563 IEM_MC_ARG(uint8_t *, pu8Dst, 0); 11566 11564 IEM_MC_ARG(uint8_t *, pu8Reg, 1); … … 11605 11603 { 11606 11604 case IEMMODE_16BIT: 11607 IEM_MC_BEGIN(3, 0 );11605 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486); 11608 11606 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11609 11607 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 11621 11619 11622 11620 case IEMMODE_32BIT: 11623 IEM_MC_BEGIN(3, 0 );11621 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486); 11624 11622 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11625 11623 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 11639 11637 11640 11638 case IEMMODE_64BIT: 11641 IEM_MC_BEGIN(3, 0 );11639 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 11642 11640 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 11643 11641 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 11665 11663 { 11666 11664 case IEMMODE_16BIT: 11667 IEM_MC_BEGIN(3, 4 );11665 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486); 11668 11666 IEM_MC_ARG(uint16_t *, pu16Dst, 0); 11669 11667 IEM_MC_ARG(uint16_t *, pu16Reg, 1); … … 11692 11690 11693 11691 case IEMMODE_32BIT: 11694 IEM_MC_BEGIN(3, 4 );11692 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486); 11695 11693 IEM_MC_ARG(uint32_t *, pu32Dst, 0); 11696 11694 IEM_MC_ARG(uint32_t *, pu32Reg, 1); … … 11719 11717 11720 11718 case IEMMODE_64BIT: 11721 IEM_MC_BEGIN(3, 4 );11719 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); 11722 11720 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 11723 11721 IEM_MC_ARG(uint64_t *, pu64Reg, 1); … … 11762 11760 * XMM, XMM. 11763 11761 */ 11762 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 11764 11763 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11765 IEM_MC_BEGIN(4, 2);11766 11764 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 11767 11765 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 11791 11789 * XMM, [mem128]. 11792 11790 */ 11793 IEM_MC_BEGIN(4, 3 );11791 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 11794 11792 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 11795 11793 IEM_MC_LOCAL(X86XMMREG, Dst); … … 11833 11831 * XMM, XMM. 11834 11832 */ 11833 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 11835 11834 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11836 IEM_MC_BEGIN(4, 2);11837 11835 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 11838 11836 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 11862 11860 * XMM, [mem128]. 11863 11861 */ 11864 IEM_MC_BEGIN(4, 3 );11862 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 11865 11863 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 11866 11864 IEM_MC_LOCAL(X86XMMREG, Dst); … … 11904 11902 * XMM32, XMM32. 11905 11903 */ 11904 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 11906 11905 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11907 IEM_MC_BEGIN(4, 2);11908 11906 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 11909 11907 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 11933 11931 * XMM32, [mem32]. 11934 11932 */ 11935 IEM_MC_BEGIN(4, 3 );11933 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 11936 11934 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 11937 11935 IEM_MC_LOCAL(X86XMMREG, Dst); … … 11975 11973 * XMM64, XMM64. 11976 11974 */ 11975 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 11977 11976 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 11978 IEM_MC_BEGIN(4, 2);11979 11977 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 11980 11978 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); … … 12004 12002 * XMM64, [mem64]. 12005 12003 */ 12006 IEM_MC_BEGIN(4, 3 );12004 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 12007 12005 IEM_MC_LOCAL(IEMMEDIAF2XMMSRC, Src); 12008 12006 IEM_MC_LOCAL(X86XMMREG, Dst); … … 12048 12046 { 12049 12047 case IEMMODE_32BIT: 12050 IEM_MC_BEGIN(0, 2 );12048 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); 12051 12049 IEM_MC_LOCAL(uint32_t, u32Value); 12052 12050 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 12062 12060 12063 12061 case IEMMODE_64BIT: 12064 IEM_MC_BEGIN(0, 2 );12062 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 12065 12063 IEM_MC_LOCAL(uint64_t, u64Value); 12066 12064 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); … … 12102 12100 * Register, register. 12103 12101 */ 12102 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 12104 12103 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12105 IEM_MC_BEGIN(3, 0);12106 12104 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 12107 12105 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 12123 12121 * Register, memory. 12124 12122 */ 12125 IEM_MC_BEGIN(3, 1 );12123 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); 12126 12124 IEM_MC_ARG(uint64_t *, pu64Dst, 0); 12127 12125 IEM_MC_ARG(uint16_t, u16Src, 1); … … 12156 12154 * Register, register. 12157 12155 */ 12156 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 12158 12157 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12159 IEM_MC_BEGIN(3, 0);12160 12158 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 12161 12159 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 12175 12173 * Register, memory. 12176 12174 */ 12177 IEM_MC_BEGIN(3, 2 );12175 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 12178 12176 IEM_MC_ARG(PRTUINT128U, puDst, 0); 12179 12177 IEM_MC_ARG(uint16_t, u16Src, 1); … … 12210 12208 * Greg32, MMX, imm8. 12211 12209 */ 12210 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); 12212 12211 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12213 IEM_MC_BEGIN(3, 1);12214 12212 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 12215 12213 IEM_MC_LOCAL(uint16_t, u16Dst); … … 12242 12240 * Greg32, XMM, imm8. 12243 12241 */ 12242 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); 12244 12243 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12245 IEM_MC_BEGIN(3, 1);12246 12244 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 12247 12245 IEM_MC_LOCAL(uint16_t, u16Dst); … … 12277 12275 * XMM, XMM, imm8. 12278 12276 */ 12277 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 12279 12278 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12280 IEM_MC_BEGIN(3, 0);12281 12279 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse); 12282 12280 IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 12296 12294 * XMM, [mem128], imm8. 12297 12295 */ 12298 IEM_MC_BEGIN(3, 2 );12296 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 12299 12297 IEM_MC_ARG(PRTUINT128U, pDst, 0); 12300 12298 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 12329 12327 * XMM, XMM, imm8. 12330 12328 */ 12329 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 12331 12330 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 12332 IEM_MC_BEGIN(3, 0);12333 12331 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 12334 12332 IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 12348 12346 * XMM, [mem128], imm8. 12349 12347 */ 12350 IEM_MC_BEGIN(3, 2 );12348 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 12351 12349 IEM_MC_ARG(PRTUINT128U, pDst, 0); 12352 12350 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 12380 12378 IEMOP_MNEMONIC(cmpxchg8b, "cmpxchg8b Mq"); 12381 12379 12382 IEM_MC_BEGIN(4, 5 );12380 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER); 12383 12381 IEM_MC_ARG(uint64_t *, pu64MemDst, 0); 12384 12382 IEM_MC_ARG(PRTUINT64U, pu64EaxEdx, 1); … … 12391 12389 12392 12390 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 12393 IEMOP_HLP_DONE_DECODING ();12391 IEMOP_HLP_DONE_DECODING_EX(fCmpXchg8b); 12394 12392 IEM_MC_MEM_MAP_U64_RW(pu64MemDst, bUnmapInfo, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 12395 12393 … … 12425 12423 { 12426 12424 IEMOP_MNEMONIC(cmpxchg16b, "cmpxchg16b Mdq"); 12427 if (IEM_GET_GUEST_CPU_FEATURES(pVCpu)->f MovCmpXchg16b)12428 { 12429 IEM_MC_BEGIN(4, 3 );12425 if (IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fCmpXchg16b) 12426 { 12427 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT); 12430 12428 IEM_MC_ARG(PRTUINT128U, pu128MemDst, 0); 12431 12429 IEM_MC_ARG(PRTUINT128U, pu128RaxRdx, 1); … … 12452 12450 12453 12451 #ifdef RT_ARCH_AMD64 /* some code duplication here because IEMAllInstPython.py cannot parse if/else/#if spaghetti. */ 12454 if (IEM_GET_HOST_CPU_FEATURES(pVCpu)->f MovCmpXchg16b)12452 if (IEM_GET_HOST_CPU_FEATURES(pVCpu)->fCmpXchg16b) 12455 12453 { 12456 12454 if ( !(pVCpu->iem.s.fExec & IEM_F_X86_DISREGARD_LOCK) … … 12525 12523 { 12526 12524 case IEMMODE_16BIT: 12527 IEM_MC_BEGIN(2, 0 );12525 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 12528 12526 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12529 12527 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 12540 12538 12541 12539 case IEMMODE_32BIT: 12542 IEM_MC_BEGIN(2, 0 );12540 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); 12543 12541 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12544 12542 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12556 12554 12557 12555 case IEMMODE_64BIT: 12558 IEM_MC_BEGIN(2, 0 );12556 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 12559 12557 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12560 12558 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 12585 12583 IEMOP_HLP_IN_VMX_OPERATION("vmptrld", kVmxVDiag_Vmptrld); 12586 12584 IEMOP_HLP_VMX_INSTR("vmptrld", kVmxVDiag_Vmptrld); 12587 IEM_MC_BEGIN(2, 0 );12585 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 12588 12586 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12589 12587 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 12605 12603 IEMOP_HLP_IN_VMX_OPERATION("vmclear", kVmxVDiag_Vmclear); 12606 12604 IEMOP_HLP_VMX_INSTR("vmclear", kVmxVDiag_Vmclear); 12607 IEM_MC_BEGIN(2, 0 );12605 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 12608 12606 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12609 12607 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 12624 12622 IEMOP_MNEMONIC(vmxon, "vmxon"); 12625 12623 IEMOP_HLP_VMX_INSTR("vmxon", kVmxVDiag_Vmxon); 12626 IEM_MC_BEGIN(2, 0 );12624 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 12627 12625 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12628 12626 IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1); … … 12644 12642 IEMOP_HLP_IN_VMX_OPERATION("vmptrst", kVmxVDiag_Vmptrst); 12645 12643 IEMOP_HLP_VMX_INSTR("vmptrst", kVmxVDiag_Vmptrst); 12646 IEM_MC_BEGIN(2, 0 );12644 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 12647 12645 IEM_MC_ARG(uint8_t, iEffSeg, 0); 12648 12646 IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1); … … 12669 12667 { 12670 12668 case IEMMODE_16BIT: 12671 IEM_MC_BEGIN(2, 0 );12669 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 12672 12670 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12673 12671 IEM_MC_ARG(uint16_t *, pu16Dst, 0); … … 12684 12682 12685 12683 case IEMMODE_32BIT: 12686 IEM_MC_BEGIN(2, 0 );12684 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); 12687 12685 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12688 12686 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12700 12698 12701 12699 case IEMMODE_64BIT: 12702 IEM_MC_BEGIN(2, 0 );12700 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); 12703 12701 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12704 12702 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 12778 12776 { 12779 12777 case IEMMODE_16BIT: 12780 IEM_MC_BEGIN(1, 0 );12778 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486); 12781 12779 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12782 12780 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12788 12786 12789 12787 case IEMMODE_32BIT: 12790 IEM_MC_BEGIN(1, 0 );12788 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486); 12791 12789 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12792 12790 IEM_MC_ARG(uint32_t *, pu32Dst, 0); … … 12799 12797 12800 12798 case IEMMODE_64BIT: 12801 IEM_MC_BEGIN(1, 0 );12799 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT); 12802 12800 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 12803 12801 IEM_MC_ARG(uint64_t *, pu64Dst, 0); … … 13024 13022 * Register, register. 13025 13023 */ 13026 IEM_MC_BEGIN(0, 2 );13024 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 13027 13025 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13028 13026 IEM_MC_LOCAL(uint64_t, uSrc); … … 13042 13040 * Memory, register. 13043 13041 */ 13044 IEM_MC_BEGIN(0, 2 );13042 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 13045 13043 IEM_MC_LOCAL(uint64_t, uSrc); 13046 13044 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13078 13076 */ 13079 13077 IEMOP_MNEMONIC2(RM_REG, MOVQ2DQ, movq2dq, VqZx_WO, Nq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 13080 IEM_MC_BEGIN(0, 1 );13078 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 13081 13079 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13082 13080 IEM_MC_LOCAL(uint64_t, uSrc); … … 13130 13128 */ 13131 13129 IEMOP_MNEMONIC2(RM_REG, MOVDQ2Q, movdq2q, Pq_WO, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 13132 IEM_MC_BEGIN(0, 1 );13130 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 13133 13131 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13134 13132 IEM_MC_LOCAL(uint64_t, uSrc); … … 13169 13167 /* Note! Taking the lazy approch here wrt the high 32-bits of the GREG. */ 13170 13168 IEMOP_MNEMONIC2(RM_REG, PMOVMSKB, pmovmskb, Gd, Nq, DISOPTYPE_X86_MMX | DISOPTYPE_HARMLESS, 0); 13171 IEM_MC_BEGIN(2, 0 );13169 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 13172 13170 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts); 13173 13171 IEM_MC_ARG(uint64_t *, puDst, 0); … … 13198 13196 /* Note! Taking the lazy approch here wrt the high 32-bits of the GREG. */ 13199 13197 IEMOP_MNEMONIC2(RM_REG, PMOVMSKB, pmovmskb, Gd, Ux, DISOPTYPE_X86_SSE | DISOPTYPE_HARMLESS, 0); 13200 IEM_MC_BEGIN(2, 0 );13198 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 13201 13199 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 13202 13200 IEM_MC_ARG(uint64_t *, puDst, 0); … … 13527 13525 { 13528 13526 /* Register, memory. */ 13529 IEM_MC_BEGIN(0, 2 );13527 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 13530 13528 IEM_MC_LOCAL(uint64_t, uSrc); 13531 13529 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13574 13572 { 13575 13573 /* Register, memory. */ 13576 IEM_MC_BEGIN(0, 2 );13574 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 13577 13575 IEM_MC_LOCAL(RTUINT128U, uSrc); 13578 13576 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 13785 13783 * Register, memory. 13786 13784 */ 13787 IEM_MC_BEGIN(0, 2 );13785 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 13788 13786 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 13789 13787 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h
r100740 r100854 51 51 if (pVCpu->iem.s.uVexLength) 52 52 { 53 IEM_MC_BEGIN(4, 3 );53 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );73 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );97 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); 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 );122 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );167 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );186 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );209 IEM_MC_BEGIN(3, 4, IEM_MC_F_NOT_286_OR_OLDER); 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 );233 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );309 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );325 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );346 IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );367 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );434 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );452 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );472 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );509 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );527 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );547 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );585 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );610 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );648 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );674 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );711 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );729 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );749 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );786 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );804 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );824 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );861 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );887 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );925 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );951 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );988 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1018 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1057 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1114 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1133 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1154 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1175 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1219 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1236 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1257 IEM_MC_BEGIN(1, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1276 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1315 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1362 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1454 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1480 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1515 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1568 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1587 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1608 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1629 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1669 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1670 1670 IEM_MC_LOCAL(uint64_t, uSrc); 1671 1671 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1712 1712 { 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 IEM_MC_BEGIN(0, 2); 1714 1715 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1715 1716 IEM_MC_LOCAL(uint64_t, uSrc); 1716 1717 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1785 1786 * Register, register. 1786 1787 */ 1787 IEM_MC_BEGIN(1, 0 );1788 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 1788 1789 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1789 1790 … … 1806 1807 if (pVCpu->iem.s.uVexLength == 0) 1807 1808 { 1808 IEM_MC_BEGIN(0, 2 );1809 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1809 1810 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1810 1811 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1823 1824 else 1824 1825 { 1825 IEM_MC_BEGIN(0, 2 );1826 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1826 1827 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1827 1828 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 1862 1863 * Register, register. 1863 1864 */ 1864 IEM_MC_BEGIN(1, 0 );1865 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 1865 1866 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1866 1867 … … 1883 1884 if (pVCpu->iem.s.uVexLength == 0) 1884 1885 { 1885 IEM_MC_BEGIN(0, 2 );1886 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1886 1887 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1887 1888 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1900 1901 else 1901 1902 { 1902 IEM_MC_BEGIN(0, 2 );1903 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1903 1904 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1904 1905 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 1958 1959 * Register, register. 1959 1960 */ 1960 IEM_MC_BEGIN(1, 0 );1961 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 1961 1962 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 1962 1963 … … 1979 1980 if (pVCpu->iem.s.uVexLength == 0) 1980 1981 { 1981 IEM_MC_BEGIN(0, 2 );1982 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1982 1983 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 1983 1984 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 1996 1997 else 1997 1998 { 1998 IEM_MC_BEGIN(0, 2 );1999 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 1999 2000 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2000 2001 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 2034 2035 * Register, register. 2035 2036 */ 2036 IEM_MC_BEGIN(1, 0 );2037 IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER); 2037 2038 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 2038 2039 … … 2055 2056 if (pVCpu->iem.s.uVexLength == 0) 2056 2057 { 2057 IEM_MC_BEGIN(0, 2 );2058 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 2058 2059 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2059 2060 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 2072 2073 else 2073 2074 { 2074 IEM_MC_BEGIN(0, 2 );2075 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 2075 2076 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 2076 2077 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 2143 2144 if (pVCpu->iem.s.uVexLength == 0) 2144 2145 { 2145 IEM_MC_BEGIN(0, 2 );2146 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 2146 2147 IEM_MC_LOCAL(RTUINT128U, uSrc); 2147 2148 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2160 2161 else 2161 2162 { 2162 IEM_MC_BEGIN(0, 2 );2163 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 2163 2164 IEM_MC_LOCAL(RTUINT256U, uSrc); 2164 2165 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2204 2205 if (pVCpu->iem.s.uVexLength == 0) 2205 2206 { 2206 IEM_MC_BEGIN(0, 2 );2207 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 2207 2208 IEM_MC_LOCAL(RTUINT128U, uSrc); 2208 2209 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2221 2222 else 2222 2223 { 2223 IEM_MC_BEGIN(0, 2 );2224 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 2224 2225 IEM_MC_LOCAL(RTUINT256U, uSrc); 2225 2226 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 2288 2289 * Register, register. 2289 2290 */ 2290 IEM_MC_BEGIN(4, 1 );2291 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 2291 2292 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2292 2293 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2317 2318 * Register, memory. 2318 2319 */ 2319 IEM_MC_BEGIN(4, 3 );2320 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 2320 2321 IEM_MC_LOCAL(uint32_t, fEFlags); 2321 2322 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2359 2360 * Register, register. 2360 2361 */ 2361 IEM_MC_BEGIN(4, 1 );2362 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 2362 2363 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2363 2364 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2388 2389 * Register, memory. 2389 2390 */ 2390 IEM_MC_BEGIN(4, 3 );2391 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 2391 2392 IEM_MC_LOCAL(uint32_t, fEFlags); 2392 2393 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2433 2434 * Register, register. 2434 2435 */ 2435 IEM_MC_BEGIN(4, 1 );2436 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 2436 2437 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2437 2438 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2462 2463 * Register, memory. 2463 2464 */ 2464 IEM_MC_BEGIN(4, 3 );2465 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 2465 2466 IEM_MC_LOCAL(uint32_t, fEFlags); 2466 2467 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2504 2505 * Register, register. 2505 2506 */ 2506 IEM_MC_BEGIN(4, 1 );2507 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 2507 2508 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 2508 2509 IEM_MC_LOCAL(uint32_t, fEFlags); … … 2533 2534 * Register, memory. 2534 2535 */ 2535 IEM_MC_BEGIN(4, 3 );2536 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 2536 2537 IEM_MC_LOCAL(uint32_t, fEFlags); 2537 2538 IEM_MC_ARG(uint32_t *, pfMxcsr, 0); … … 2614 2615 if (pVCpu->iem.s.uVexLength == 0) 2615 2616 { 2616 IEM_MC_BEGIN(2, 1 );2617 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); 2617 2618 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 2618 2619 IEM_MC_LOCAL(uint8_t, u8Dst); … … 2630 2631 else 2631 2632 { 2632 IEM_MC_BEGIN(2, 2 );2633 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); 2633 2634 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 2634 2635 IEM_MC_LOCAL(uint8_t, u8Dst); … … 2665 2666 if (pVCpu->iem.s.uVexLength == 0) 2666 2667 { 2667 IEM_MC_BEGIN(2, 1 );2668 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); 2668 2669 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 2669 2670 IEM_MC_LOCAL(uint8_t, u8Dst); … … 2681 2682 else 2682 2683 { 2683 IEM_MC_BEGIN(2, 2 );2684 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); 2684 2685 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 2685 2686 IEM_MC_LOCAL(uint8_t, u8Dst); … … 3023 3024 // * Register, register. 3024 3025 // */ 3025 // IEM_MC_BEGIN(2, 0 );3026 // IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 3026 3027 // IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2); 3027 3028 // IEM_MC_ARG(PRTUINT128U, pDst, 0); … … 3040 3041 // * Register, memory. 3041 3042 // */ 3042 // IEM_MC_BEGIN(2, 2 );3043 // IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); 3043 3044 // IEM_MC_ARG(PRTUINT128U, pDst, 0); 3044 3045 // IEM_MC_LOCAL(RTUINT128U, uSrc); … … 3173 3174 { 3174 3175 /* XMM, greg64 */ 3175 IEM_MC_BEGIN(0, 1 );3176 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 3176 3177 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3177 3178 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3189 3190 { 3190 3191 /* XMM, [mem64] */ 3191 IEM_MC_BEGIN(0, 2 );3192 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3192 3193 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3193 3194 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3223 3224 { 3224 3225 /* XMM, greg32 */ 3225 IEM_MC_BEGIN(0, 1 );3226 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 3226 3227 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3227 3228 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3239 3240 { 3240 3241 /* XMM, [mem32] */ 3241 IEM_MC_BEGIN(0, 2 );3242 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3242 3243 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3243 3244 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3282 3283 * Register, register. 3283 3284 */ 3284 IEM_MC_BEGIN(0, 0 );3285 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 3285 3286 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3286 3287 … … 3301 3302 * Register, memory128. 3302 3303 */ 3303 IEM_MC_BEGIN(0, 2 );3304 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3304 3305 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 3305 3306 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3321 3322 * Register, memory256. 3322 3323 */ 3323 IEM_MC_BEGIN(0, 2 );3324 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3324 3325 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 3325 3326 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3357 3358 * Register, register. 3358 3359 */ 3359 IEM_MC_BEGIN(0, 0 );3360 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 3360 3361 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3361 3362 … … 3376 3377 * Register, memory128. 3377 3378 */ 3378 IEM_MC_BEGIN(0, 2 );3379 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3379 3380 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 3380 3381 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3396 3397 * Register, memory256. 3397 3398 */ 3398 IEM_MC_BEGIN(0, 2 );3399 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3399 3400 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 3400 3401 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3435 3436 if (pVCpu->iem.s.uVexLength) 3436 3437 { 3437 IEM_MC_BEGIN(3, 2 );3438 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 3438 3439 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 3439 3440 IEM_MC_LOCAL(RTUINT256U, uDst); … … 3452 3453 else 3453 3454 { 3454 IEM_MC_BEGIN(3, 0 );3455 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 3455 3456 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 3456 3457 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 3474 3475 if (pVCpu->iem.s.uVexLength) 3475 3476 { 3476 IEM_MC_BEGIN(3, 3 );3477 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 3477 3478 IEM_MC_LOCAL(RTUINT256U, uDst); 3478 3479 IEM_MC_LOCAL(RTUINT256U, uSrc); … … 3497 3498 else 3498 3499 { 3499 IEM_MC_BEGIN(3, 1 );3500 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); 3500 3501 IEM_MC_LOCAL(RTUINT128U, uSrc); 3501 3502 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 3734 3735 */ 3735 3736 IEMOP_MNEMONIC(vzeroupper, "vzeroupper"); 3736 IEM_MC_BEGIN(0, 0 );3737 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 3737 3738 3738 3739 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); … … 3770 3771 */ 3771 3772 IEMOP_MNEMONIC(vzeroall, "vzeroall"); 3772 IEM_MC_BEGIN(0, 1 );3773 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 3773 3774 IEM_MC_LOCAL(uint32_t, uZero); 3774 3775 … … 3865 3866 { 3866 3867 /* greg64, XMM */ 3867 IEM_MC_BEGIN(0, 1 );3868 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); 3868 3869 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3869 3870 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3881 3882 { 3882 3883 /* [mem64], XMM */ 3883 IEM_MC_BEGIN(0, 2 );3884 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); 3884 3885 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3885 3886 IEM_MC_LOCAL(uint64_t, u64Tmp); … … 3915 3916 { 3916 3917 /* greg32, XMM */ 3917 IEM_MC_BEGIN(0, 1 );3918 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 3918 3919 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3919 3920 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3931 3932 { 3932 3933 /* [mem32], XMM */ 3933 IEM_MC_BEGIN(0, 2 );3934 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3934 3935 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 3935 3936 IEM_MC_LOCAL(uint32_t, u32Tmp); … … 3968 3969 * Register, register. 3969 3970 */ 3970 IEM_MC_BEGIN(0, 0 );3971 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 3971 3972 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 3972 3973 … … 3984 3985 * Memory, register. 3985 3986 */ 3986 IEM_MC_BEGIN(0, 2 );3987 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 3987 3988 IEM_MC_LOCAL(uint64_t, uSrc); 3988 3989 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4025 4026 * Register, register. 4026 4027 */ 4027 IEM_MC_BEGIN(0, 0 );4028 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 4028 4029 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 4029 4030 … … 4044 4045 * Register, memory128. 4045 4046 */ 4046 IEM_MC_BEGIN(0, 2 );4047 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 4047 4048 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 4048 4049 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4064 4065 * Register, memory256. 4065 4066 */ 4066 IEM_MC_BEGIN(0, 2 );4067 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 4067 4068 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 4068 4069 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4101 4102 * Register, register. 4102 4103 */ 4103 IEM_MC_BEGIN(0, 0 );4104 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 4104 4105 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 4105 4106 … … 4120 4121 * Register, memory128. 4121 4122 */ 4122 IEM_MC_BEGIN(0, 2 );4123 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 4123 4124 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 4124 4125 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4140 4141 * Register, memory256. 4141 4142 */ 4142 IEM_MC_BEGIN(0, 2 );4143 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 4143 4144 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 4144 4145 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4234 4235 //{ 4235 4236 // IEMOP_MNEMONIC1(M_MEM, VLDMXCSR, vldmxcsr, MdRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES); 4236 // IEM_MC_BEGIN(2, 0 );4237 // IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 4237 4238 // IEM_MC_ARG(uint8_t, iEffSeg, 0); 4238 4239 // IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 4288 4289 { 4289 4290 IEMOP_MNEMONIC1(VEX_M_MEM, VSTMXCSR, vstmxcsr, Md_WO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO); 4290 IEM_MC_BEGIN(2, 0 );4291 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 4291 4292 IEM_MC_ARG(uint8_t, iEffSeg, 0); 4292 4293 IEM_MC_ARG(RTGCPTR, GCPtrEff, 1); … … 4401 4402 * Register, register. 4402 4403 */ 4404 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 4403 4405 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 4404 IEM_MC_BEGIN(4, 0);4405 4406 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); 4406 4407 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 4424 4425 * Register, memory. 4425 4426 */ 4426 IEM_MC_BEGIN(4, 1 );4427 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 4427 4428 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); 4428 4429 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 4467 4468 */ 4468 4469 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 4469 IEM_MC_BEGIN(3, 1 );4470 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); 4470 4471 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx); 4471 4472 IEM_MC_LOCAL(uint16_t, u16Dst); … … 4502 4503 { \ 4503 4504 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); \ 4504 IEM_MC_BEGIN(4, 3 ); \4505 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); \ 4505 4506 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); \ 4506 4507 IEM_MC_LOCAL(RTUINT256U, uDst); \ … … 4524 4525 { \ 4525 4526 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); \ 4526 IEM_MC_BEGIN(4, 0 ); \4527 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); \ 4527 4528 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); \ 4528 4529 IEM_MC_ARG(PRTUINT128U, puDst, 0); \ … … 4549 4550 if (pVCpu->iem.s.uVexLength) \ 4550 4551 { \ 4551 IEM_MC_BEGIN(4, 4 ); \4552 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); \ 4552 4553 IEM_MC_LOCAL(RTUINT256U, uDst); \ 4553 4554 IEM_MC_LOCAL(RTUINT256U, uSrc1); \ … … 4573 4574 else \ 4574 4575 { \ 4575 IEM_MC_BEGIN(4, 2 ); \4576 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); \ 4576 4577 IEM_MC_LOCAL(RTUINT128U, uSrc2); \ 4577 4578 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); \ … … 4707 4708 * Register, register. 4708 4709 */ 4709 IEM_MC_BEGIN(0, 0 );4710 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER); 4710 4711 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx); 4711 4712 … … 4723 4724 * Memory, register. 4724 4725 */ 4725 IEM_MC_BEGIN(0, 2 );4726 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 4726 4727 IEM_MC_LOCAL(uint64_t, uSrc); 4727 4728 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 4757 4758 if (pVCpu->iem.s.uVexLength) 4758 4759 { 4759 IEM_MC_BEGIN(2, 1 );4760 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); 4760 4761 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); 4761 4762 IEM_MC_ARG(uint64_t *, puDst, 0); … … 4773 4774 else 4774 4775 { 4775 IEM_MC_BEGIN(2, 0 );4776 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 4776 4777 IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); 4777 4778 IEM_MC_ARG(uint64_t *, puDst, 0); … … 5019 5020 * 128-bit: Memory, register. 5020 5021 */ 5021 IEM_MC_BEGIN(0, 2 );5022 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 5022 5023 IEM_MC_LOCAL(RTUINT128U, uSrc); 5023 5024 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 5039 5040 * 256-bit: Memory, register. 5040 5041 */ 5041 IEM_MC_BEGIN(0, 2 );5042 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 5042 5043 IEM_MC_LOCAL(RTUINT256U, uSrc); 5043 5044 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 5217 5218 * Register, memory128. 5218 5219 */ 5219 IEM_MC_BEGIN(0, 2 );5220 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 5220 5221 IEM_MC_LOCAL(RTUINT128U, u128Tmp); 5221 5222 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 5237 5238 * Register, memory256. 5238 5239 */ 5239 IEM_MC_BEGIN(0, 2 );5240 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 5240 5241 IEM_MC_LOCAL(RTUINT256U, u256Tmp); 5241 5242 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); -
trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap2.cpp.h
r100740 r100854 221 221 if (pVCpu->iem.s.uVexLength) 222 222 { 223 IEM_MC_BEGIN(3, 2 );223 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );242 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );264 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );288 IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );327 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );342 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );362 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );379 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );413 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );428 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );446 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );484 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 ); \553 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \570 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \593 IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \613 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); \ 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 );730 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );761 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );970 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );989 IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1052 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 1053 1053 IEM_MC_LOCAL(uint32_t, uSrc); 1054 1054 … … 1065 1065 else 1066 1066 { 1067 IEM_MC_BEGIN(0, 1 );1067 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1087 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1104 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );1135 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 1136 1136 IEM_MC_LOCAL(uint64_t, uSrc); 1137 1137 … … 1148 1148 else 1149 1149 { 1150 IEM_MC_BEGIN(0, 1 );1150 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1170 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1187 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );1223 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1286 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 1287 1287 IEM_MC_LOCAL(uint8_t, uSrc); 1288 1288 … … 1299 1299 else 1300 1300 { 1301 IEM_MC_BEGIN(0, 1 );1301 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1321 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1338 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );1369 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 1370 1370 IEM_MC_LOCAL(uint16_t, uSrc); 1371 1371 … … 1382 1382 else 1383 1383 { 1384 IEM_MC_BEGIN(0, 1 );1384 IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1404 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );1421 IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );1647 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1664 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );1688 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 );1707 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 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 ); \1748 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 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 ); \1763 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \1785 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \ 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 ); \1802 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \1899 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT); \ 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 ); \1917 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \1942 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT); \ 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 ); \1962 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \1995 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 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 ); \2010 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \2032 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \ 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 ); \2049 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \2087 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \ 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 ); \2103 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \ 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 ); \2126 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \ 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 ); \2144 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \ 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 );2198 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT); 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 );2215 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );2240 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT); 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 );2259 IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); 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
r100740 r100854 53 53 if (pVCpu->iem.s.uVexLength) 54 54 { 55 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 55 56 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 56 IEM_MC_BEGIN(4, 3);57 57 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 58 58 IEM_MC_LOCAL(RTUINT256U, uDst); … … 74 74 else 75 75 { 76 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 76 77 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 77 IEM_MC_BEGIN(4, 0);78 78 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 79 79 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 99 99 if (pVCpu->iem.s.uVexLength) 100 100 { 101 IEM_MC_BEGIN(4, 4 );101 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); 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 );127 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 );174 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 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 );194 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 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 );218 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); 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 );244 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 296 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 296 IEM_MC_BEGIN(4, 3);297 297 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); 298 298 IEM_MC_LOCAL(RTUINT256U, uDst); … … 318 318 * Register, memory. 319 319 */ 320 IEM_MC_BEGIN(4, 2 );320 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 427 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 427 IEM_MC_BEGIN(0, 1);428 428 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); 429 429 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 444 444 * Register, memory. 445 445 */ 446 IEM_MC_BEGIN(0, 2 );446 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 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 519 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 519 IEM_MC_BEGIN(0, 1);520 520 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); 521 521 IEM_MC_LOCAL(RTUINT128U, uSrc); … … 536 536 * Register, memory. 537 537 */ 538 IEM_MC_BEGIN(0, 2 );538 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER); 539 539 IEM_MC_LOCAL(RTUINT128U, uSrc); 540 540 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 586 586 * Register, register. 587 587 */ 588 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 588 589 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 589 IEM_MC_BEGIN(4, 0);590 590 IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fPclMul); 591 591 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 609 609 * Register, memory. 610 610 */ 611 IEM_MC_BEGIN(4, 2 );611 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 612 612 IEM_MC_LOCAL(RTUINT128U, uSrc2); 613 613 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 650 650 * Register, register. 651 651 */ 652 IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); 652 653 uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); 653 IEM_MC_BEGIN(4, 3);654 654 IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2); 655 655 IEM_MC_LOCAL(RTUINT256U, uDst); … … 675 675 * Register, memory. 676 676 */ 677 IEM_MC_BEGIN(4, 2 );677 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 678 678 IEM_MC_LOCAL(RTUINT256U, uDst); 679 679 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 728 728 if (pVCpu->iem.s.uVexLength) 729 729 { 730 IEM_MC_BEGIN(4, 4 );730 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); 731 731 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 732 732 IEM_MC_LOCAL(RTUINT256U, uDst); … … 750 750 else 751 751 { 752 IEM_MC_BEGIN(4, 0 );752 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 753 753 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 754 754 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 775 775 if (pVCpu->iem.s.uVexLength) 776 776 { 777 IEM_MC_BEGIN(4, 5 );777 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER); 778 778 IEM_MC_LOCAL(RTUINT256U, uDst); 779 779 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 805 805 else 806 806 { 807 IEM_MC_BEGIN(4, 2 );807 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 808 808 IEM_MC_LOCAL(RTUINT128U, uSrc2); 809 809 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 872 872 if (pVCpu->iem.s.uVexLength) 873 873 { 874 IEM_MC_BEGIN(4, 4 );874 IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); 875 875 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); 876 876 IEM_MC_LOCAL(RTUINT256U, uDst); … … 894 894 else 895 895 { 896 IEM_MC_BEGIN(4, 0 );896 IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); 897 897 IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); 898 898 IEM_MC_ARG(PRTUINT128U, puDst, 0); … … 919 919 if (pVCpu->iem.s.uVexLength) 920 920 { 921 IEM_MC_BEGIN(4, 5 );921 IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER); 922 922 IEM_MC_LOCAL(RTUINT256U, uDst); 923 923 IEM_MC_LOCAL(RTUINT256U, uSrc1); … … 949 949 else 950 950 { 951 IEM_MC_BEGIN(4, 2 );951 IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); 952 952 IEM_MC_LOCAL(RTUINT128U, uSrc2); 953 953 IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc); … … 1122 1122 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1123 1123 { 1124 IEM_MC_BEGIN(3, 0 );1124 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); 1125 1125 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fBmi2); 1126 1126 IEM_MC_ARG(uint64_t *, pDst, 0); … … 1135 1135 else 1136 1136 { 1137 IEM_MC_BEGIN(3, 0 );1137 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); 1138 1138 IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fBmi2); 1139 1139 IEM_MC_ARG(uint32_t *, pDst, 0); … … 1155 1155 if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) 1156 1156 { 1157 IEM_MC_BEGIN(3, 1 );1157 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); 1158 1158 IEM_MC_ARG(uint64_t *, pDst, 0); 1159 1159 IEM_MC_ARG(uint64_t, uSrc1, 1); … … 1171 1171 else 1172 1172 { 1173 IEM_MC_BEGIN(3, 1 );1173 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); 1174 1174 IEM_MC_ARG(uint32_t *, pDst, 0); 1175 1175 IEM_MC_ARG(uint32_t, uSrc1, 1); -
trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py
r100829 r100854 504 504 }; 505 505 506 kdMemMcToFlatInfoStack = { 507 'IEM_MC_PUSH_U16': ( 'IEM_MC_PUSH_FLAT32_U16', 'IEM_MC_PUSH_FLAT64_U16', ), 508 'IEM_MC_PUSH_U32': ( 'IEM_MC_PUSH_FLAT32_U32', 'IEM_MC_PUSH_FLAT64_U32', ), 509 'IEM_MC_PUSH_U64': ( 'IEM_MC_PUSH_U64', 'IEM_MC_PUSH_FLAT64_U64', ), 510 'IEM_MC_POP_U16': ( 'IEM_MC_POP_FLAT32_U16', 'IEM_MC_POP_FLAT64_U16', ), 511 'IEM_MC_POP_U32': ( 'IEM_MC_POP_FLAT32_U32', 'IEM_MC_POP_FLAT64_U32', ), 512 'IEM_MC_POP_U64': ( 'IEM_MC_POP_U64', 'IEM_MC_POP_FLAT64_U64', ), 513 }; 514 506 515 def analyzeMorphStmtForThreaded(self, aoStmts, iParamRef = 0): 507 516 """ … … 754 763 continue; 755 764 if oStmt.isCppStmt() and oStmt.fDecode: 765 continue; 766 if oStmt.sName in ('IEM_MC_BEGIN',): 756 767 continue; 757 768 … … 1811 1822 # 1812 1823 elif oThreadedFunction.oMcBlock.iBeginLine != oThreadedFunction.oMcBlock.iEndLine: 1813 assert sLine.count('IEM_MC_') == 1;1824 assert sLine.count('IEM_MC_') - sLine.count('IEM_MC_F_') == 1, 'sLine="%s"' % (sLine,); 1814 1825 oOut.write(sLine[:oThreadedFunction.oMcBlock.offBeginLine]); 1815 1826 sModified = oThreadedFunction.generateInputCode().strip(); … … 1818 1829 iLine = oThreadedFunction.oMcBlock.iEndLine; 1819 1830 sLine = oParser.asLines[iLine - 1]; 1820 assert sLine.count('IEM_MC_') == 1 or len(oThreadedFunction.oMcBlock.aoStmts) == 1;1831 assert sLine.count('IEM_MC_') - sLine.count('IEM_MC_F_') == 1 or len(oThreadedFunction.oMcBlock.aoStmts) == 1; 1821 1832 oOut.write(sLine[oThreadedFunction.oMcBlock.offAfterEnd : ]); 1822 1833 -
trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp
r100625 r100854 1393 1393 //| X86_CPUID_FEATURE_ECX_CNTXID - no L1 context id (MSR++). 1394 1394 //| X86_CPUID_FEATURE_ECX_FMA - not implemented yet. 1395 | PASSTHRU_FEATURE(pConfig->enmCmpXchg16b, pHstFeat->f MovCmpXchg16b, X86_CPUID_FEATURE_ECX_CX16)1395 | PASSTHRU_FEATURE(pConfig->enmCmpXchg16b, pHstFeat->fCmpXchg16b, X86_CPUID_FEATURE_ECX_CX16) 1396 1396 /* ECX Bit 14 - xTPR Update Control. Processor supports changing IA32_MISC_ENABLES[bit 23]. */ 1397 1397 //| X86_CPUID_FEATURE_ECX_TPRUPDATE -
trunk/src/VBox/VMM/include/IEMInternal.h
r100851 r100854 539 539 */ 540 540 #define IEMTLB_TAG_TO_ENTRY(a_pTlb, a_uTag) ( &(a_pTlb)->aEntries[IEMTLB_TAG_TO_INDEX(a_uTag)] ) 541 542 543 /** @name IEM_MC_F_XXX - MC block flags/clues. 544 * @{ */ 545 #define IEM_MC_F_ONLY_8086 RT_BIT_32(0) 546 #define IEM_MC_F_NOT_286_OR_OLDER IEM_MC_F_MIN_386 547 #define IEM_MC_F_MIN_386 RT_BIT_32(3) 548 #define IEM_MC_F_MIN_486 RT_BIT_32(4) 549 #define IEM_MC_F_MIN_PENTIUM RT_BIT_32(5) 550 #define IEM_MC_F_MIN_PENTIUM_II IEM_MC_F_MIN_PENTIUM 551 #define IEM_MC_F_MIN_CORE IEM_MC_F_MIN_PENTIUM 552 #define IEM_MC_F_64BIT RT_BIT_32(6) 553 #define IEM_MC_F_NOT_64BIT RT_BIT_32(7) 554 /** @} */ 541 555 542 556 -
trunk/src/VBox/VMM/include/IEMMc.h
r100847 r100854 40 40 * @{ 41 41 */ 42 #define IEM_MC_BEGIN(a_cArgs, a_cLocals) { 42 43 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fFlags) { 43 44 #define IEM_MC_END() } 44 45 … … 142 143 } while (0) 143 144 AssertCompile(!((X86_CR0_EM | X86_CR0_TS) & X86_FSW_ES)); 145 /** @todo recomp: this one is slightly problematic as the recompiler doesn't 146 * count the CPL into the TB key. However it is safe enough for now, as 147 * it calls iemRaiseGeneralProtectionFault0 directly so no calls will be 148 * emitted for it. */ 144 149 #define IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO() \ 145 150 do { \ -
trunk/src/VBox/VMM/include/IEMOpHlp.h
r100731 r100854 420 420 } while (0) 421 421 422 #define IEMOP_HLP_DONE_DECODING_EX(a_fFeature) \ 423 do \ 424 { \ 425 if (RT_LIKELY(IEM_GET_GUEST_CPU_FEATURES(pVCpu)->a_fFeature)) \ 426 { /* likely */ } \ 427 else \ 428 IEMOP_RAISE_INVALID_LOCK_PREFIX_RET(); \ 429 } while (0) 430 422 431 /** 423 432 * Done decoding, raise \#UD exception if lock prefix present. -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r100840 r100854 182 182 183 183 #define IEMOP_HLP_DONE_DECODING() do { } while (0) 184 #define IEMOP_HLP_DONE_DECODING_EX(a_fFeature) do { } while (0) 184 185 185 186 #define IEMOP_HLP_DECODED_NL_1(a_uDisOpNo, a_fIemOpFlags, a_uDisParam0, a_fDisOpType) do { } while (0) … … 557 558 558 559 #define IEM_ARG_CHECK_CALLBACK(a_idx, a_User) int RT_CONCAT(iArgCheck_,a_idx); NOREF(RT_CONCAT(iArgCheck_,a_idx)) 559 #define IEM_MC_BEGIN(a_cArgs, a_cLocals ) \560 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fFlags) \ 560 561 { \ 561 const uint8_t cArgs= (a_cArgs); NOREF(cArgs); \562 const uint8_t cLocals= (a_cLocals); NOREF(cLocals); \563 const uint 8_t fMcBegin = (a_cArgs) + (a_cLocals); \562 const uint8_t cArgs = (a_cArgs); NOREF(cArgs); \ 563 const uint8_t cLocals = (a_cLocals); NOREF(cLocals); \ 564 const uint32_t fMcBegin = (((a_cArgs) + (a_cLocals)) << 23) + (a_fFlags); \ 564 565 IEM_REPEAT(a_cArgs, IEM_ARG_CHECK, 0); \ 565 566
Note:
See TracChangeset
for help on using the changeset viewer.