VirtualBox

Changeset 101387 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Oct 7, 2023 11:34:54 PM (16 months ago)
Author:
vboxsync
Message:

VMM/IEM: Added a new class of threaded function variants, the 16f/32f/64f variants that will clear RF (and vbox internal friends) and check for TF (and vbox internal friends). The variants w/o the 'f' after the bitcount will skip this test+branch. The motivation of this was to deal with this issue that the threaded recompiler level rather than try optimize away the test+branch++ code when generating native code, make the IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32 a very simple place to start emitting native code (compared to IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS). bugref:10371

Location:
trunk/src/VBox/VMM
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstCommon.cpp.h

    r100854 r101387  
    897897    {
    898898        case IEMMODE_16BIT:
    899             IEM_MC_BEGIN(0, 1, 0);
     899            IEM_MC_BEGIN(0, 1, 0, 0);
    900900            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    901901            IEM_MC_LOCAL(uint16_t, u16Value);
     
    907907
    908908        case IEMMODE_32BIT:
    909             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     909            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    910910            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    911911            IEM_MC_LOCAL(uint32_t, u32Value);
     
    917917
    918918        case IEMMODE_64BIT:
    919             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     919            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    920920            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    921921            IEM_MC_LOCAL(uint64_t, u64Value);
     
    939939    {
    940940        case IEMMODE_16BIT:
    941             IEM_MC_BEGIN(5, 1, 0);
     941            IEM_MC_BEGIN(5, 1, 0, 0);
    942942            IEM_MC_ARG(uint16_t,        uSel,                                    0);
    943943            IEM_MC_ARG(uint16_t,        offSeg,                                  1);
     
    957957
    958958        case IEMMODE_32BIT:
    959             IEM_MC_BEGIN(5, 1, IEM_MC_F_MIN_386);
     959            IEM_MC_BEGIN(5, 1, IEM_MC_F_MIN_386, 0);
    960960            IEM_MC_ARG(uint16_t,        uSel,                                    0);
    961961            IEM_MC_ARG(uint32_t,        offSeg,                                  1);
     
    975975
    976976        case IEMMODE_64BIT:
    977             IEM_MC_BEGIN(5, 1, IEM_MC_F_64BIT);
     977            IEM_MC_BEGIN(5, 1, IEM_MC_F_64BIT, 0);
    978978            IEM_MC_ARG(uint16_t,        uSel,                                    0);
    979979            IEM_MC_ARG(uint64_t,        offSeg,                                  1);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstCommonBodyMacros.h

    r100856 r101387  
    5050        { \
    5151            case IEMMODE_16BIT: \
    52                 IEM_MC_BEGIN(3, 0, a_f16BitMcFlag); \
     52                IEM_MC_BEGIN(3, 0, a_f16BitMcFlag, 0); \
    5353                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    5454                IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     
    6666            \
    6767            case IEMMODE_32BIT: \
    68                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     68                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    6969                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    7070                IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     
    8484            \
    8585            case IEMMODE_64BIT: \
    86                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     86                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    8787                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    8888                IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
     
    110110        { \
    111111            case IEMMODE_16BIT: \
    112                 IEM_MC_BEGIN(3, 1, a_f16BitMcFlag); \
     112                IEM_MC_BEGIN(3, 1, a_f16BitMcFlag, 0); \
    113113                IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
    114114                IEM_MC_ARG(uint16_t,   u16Src,  1); \
     
    128128            \
    129129            case IEMMODE_32BIT: \
    130                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); \
     130                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \
    131131                IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
    132132                IEM_MC_ARG(uint32_t,   u32Src,  1); \
     
    148148            \
    149149            case IEMMODE_64BIT: \
    150                 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \
     150                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
    151151                IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
    152152                IEM_MC_ARG(uint64_t,   u64Src,  1); \
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h

    r101304 r101387  
    7171    if (IEM_IS_MODRM_REG_MODE(bRm)) \
    7272    { \
    73         IEM_MC_BEGIN(3, 0, 0); \
     73        IEM_MC_BEGIN(3, 0, 0, 0); \
    7474        IEM_MC_ARG(uint8_t *,  pu8Dst,  0); \
    7575        IEM_MC_ARG(uint8_t,    u8Src,   1); \
     
    9494        if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \
    9595        { \
    96             IEM_MC_BEGIN(3, 3, 0); \
     96            IEM_MC_BEGIN(3, 3, 0, 0); \
    9797            IEM_MC_ARG(uint8_t *,  pu8Dst,           0); \
    9898            IEM_MC_ARG(uint8_t,    u8Src,            1); \
     
    131131    if (IEM_IS_MODRM_REG_MODE(bRm)) \
    132132    { \
    133         IEM_MC_BEGIN(3, 0, 0); \
     133        IEM_MC_BEGIN(3, 0, 0, 0); \
    134134        IEM_MC_ARG(uint8_t *,  pu8Dst,  0); \
    135135        IEM_MC_ARG(uint8_t,    u8Src,   1); \
     
    154154        if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \
    155155        { \
    156             IEM_MC_BEGIN(3, 3, 0); \
     156            IEM_MC_BEGIN(3, 3, 0, 0); \
    157157            IEM_MC_ARG(uint8_t const *, pu8Dst,          0); \
    158158            IEM_MC_ARG(uint8_t,         u8Src,           1); \
     
    185185
    186186#define IEMOP_BODY_BINARY_rm_r8_LOCKED(a_fnLockedU8) \
    187             IEM_MC_BEGIN(3, 3, 0); \
     187            IEM_MC_BEGIN(3, 3, 0, 0); \
    188188            IEM_MC_ARG(uint8_t *,  pu8Dst,           0); \
    189189            IEM_MC_ARG(uint8_t,    u8Src,            1); \
     
    219219    if (IEM_IS_MODRM_REG_MODE(bRm)) \
    220220    { \
    221         IEM_MC_BEGIN(3, 0, 0); \
     221        IEM_MC_BEGIN(3, 0, 0, 0); \
    222222        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    223223        IEM_MC_ARG(uint8_t *,  pu8Dst,  0); \
     
    238238         * We're accessing memory. \
    239239         */ \
    240         IEM_MC_BEGIN(3, 1, 0); \
     240        IEM_MC_BEGIN(3, 1, 0, 0); \
    241241        IEM_MC_ARG(uint8_t *,  pu8Dst,  0); \
    242242        IEM_MC_ARG(uint8_t,    u8Src,   1); \
     
    272272        { \
    273273            case IEMMODE_16BIT: \
    274                 IEM_MC_BEGIN(3, 0, 0); \
     274                IEM_MC_BEGIN(3, 0, 0, 0); \
    275275                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    276276                IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     
    288288            \
    289289            case IEMMODE_32BIT: \
    290                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     290                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    291291                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    292292                IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     
    305305            \
    306306            case IEMMODE_64BIT: \
    307                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     307                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    308308                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    309309                IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
     
    335335            { \
    336336                case IEMMODE_16BIT: \
    337                     IEM_MC_BEGIN(3, 3, 0); \
     337                    IEM_MC_BEGIN(3, 3, 0, 0); \
    338338                    IEM_MC_ARG(uint16_t *, pu16Dst,          0); \
    339339                    IEM_MC_ARG(uint16_t,   u16Src,           1); \
     
    356356                \
    357357                case IEMMODE_32BIT: \
    358                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     358                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    359359                    IEM_MC_ARG(uint32_t *, pu32Dst,          0); \
    360360                    IEM_MC_ARG(uint32_t,   u32Src,           1); \
     
    377377                \
    378378                case IEMMODE_64BIT: \
    379                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     379                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    380380                    IEM_MC_ARG(uint64_t *, pu64Dst,          0); \
    381381                    IEM_MC_ARG(uint64_t,   u64Src,           1); \
     
    408408            { \
    409409                case IEMMODE_16BIT: \
    410                     IEM_MC_BEGIN(3, 3, 0); \
     410                    IEM_MC_BEGIN(3, 3, 0, 0); \
    411411                    IEM_MC_ARG(uint16_t *, pu16Dst,          0); \
    412412                    IEM_MC_ARG(uint16_t,   u16Src,           1); \
     
    429429                \
    430430                case IEMMODE_32BIT: \
    431                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     431                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    432432                    IEM_MC_ARG(uint32_t *, pu32Dst,          0); \
    433433                    IEM_MC_ARG(uint32_t,   u32Src,           1); \
     
    450450                \
    451451                case IEMMODE_64BIT: \
    452                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     452                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    453453                    IEM_MC_ARG(uint64_t *, pu64Dst,          0); \
    454454                    IEM_MC_ARG(uint64_t,   u64Src,           1); \
     
    491491        { \
    492492            case IEMMODE_16BIT: \
    493                 IEM_MC_BEGIN(3, 0, 0); \
     493                IEM_MC_BEGIN(3, 0, 0, 0); \
    494494                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    495495                IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     
    507507            \
    508508            case IEMMODE_32BIT: \
    509                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     509                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    510510                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    511511                IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     
    523523            \
    524524            case IEMMODE_64BIT: \
    525                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     525                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    526526                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    527527                IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
     
    553553            { \
    554554                case IEMMODE_16BIT: \
    555                     IEM_MC_BEGIN(3, 3, 0); \
     555                    IEM_MC_BEGIN(3, 3, 0, 0); \
    556556                    IEM_MC_ARG(uint16_t const *, pu16Dst,         0); \
    557557                    IEM_MC_ARG(uint16_t,         u16Src,          1); \
     
    574574                \
    575575                case IEMMODE_32BIT: \
    576                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     576                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    577577                    IEM_MC_ARG(uint32_t const *, pu32Dst,         0); \
    578578                    IEM_MC_ARG(uint32_t,         u32Src,          1); \
     
    595595                \
    596596                case IEMMODE_64BIT: \
    597                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     597                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    598598                    IEM_MC_ARG(uint64_t const *, pu64Dst,         0); \
    599599                    IEM_MC_ARG(uint64_t,         u64Src,          1); \
     
    634634    uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \
    635635    \
    636     IEM_MC_BEGIN(3, 0, 0); \
     636    IEM_MC_BEGIN(3, 0, 0, 0); \
    637637    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    638638    IEM_MC_ARG(uint8_t *,       pu8Dst,             0); \
     
    658658            uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \
    659659            \
    660             IEM_MC_BEGIN(3, 0, 0); \
     660            IEM_MC_BEGIN(3, 0, 0, 0); \
    661661            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    662662            IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
     
    676676            uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \
    677677            \
    678             IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     678            IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    679679            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    680680            IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
     
    696696            uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \
    697697            \
    698             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     698            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    699699            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    700700            IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
     
    11231123    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11241124    IEMOP_HLP_NO_64BIT();
    1125     IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_MODE, iemCImpl_pop_Sreg, X86_SREG_SS, pVCpu->iem.s.enmEffOpSize);
     1125    IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_MODE | IEM_CIMPL_F_INHIBIT_SHADOW,
     1126                                iemCImpl_pop_Sreg, X86_SREG_SS, pVCpu->iem.s.enmEffOpSize);
    11261127}
    11271128
     
    17681769    { \
    17691770        case IEMMODE_16BIT: \
    1770             IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_64BIT); \
     1771            IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_64BIT, 0); \
    17711772            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    17721773            IEM_MC_ARG(uint16_t *,  pu16Dst, 0); \
     
    17801781            \
    17811782        case IEMMODE_32BIT: \
    1782             IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT); \
     1783            IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0); \
    17831784            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    17841785            IEM_MC_ARG(uint32_t *,  pu32Dst, 0); \
     
    21952196    {
    21962197        case IEMMODE_16BIT:
    2197             IEM_MC_BEGIN(0, 1, 0);
     2198            IEM_MC_BEGIN(0, 1, 0, 0);
    21982199            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    21992200            IEM_MC_LOCAL(uint16_t, u16Value);
     
    22052206
    22062207        case IEMMODE_32BIT:
    2207             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT);
     2208            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0);
    22082209            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    22092210            IEM_MC_LOCAL(uint32_t, u32Value);
     
    22152216
    22162217        case IEMMODE_64BIT:
    2217             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     2218            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    22182219            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    22192220            IEM_MC_LOCAL(uint64_t, u64Value);
     
    22772278    if (IEM_GET_TARGET_CPU(pVCpu) == IEMTARGETCPU_8086)
    22782279    {
    2279         IEM_MC_BEGIN(0, 1, IEM_MC_F_ONLY_8086);
     2280        IEM_MC_BEGIN(0, 1, IEM_MC_F_ONLY_8086, 0);
    22802281        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    22812282        IEM_MC_LOCAL(uint16_t, u16Value);
     
    23352336    {
    23362337        case IEMMODE_16BIT:
    2337             IEM_MC_BEGIN(0, 1, 0);
     2338            IEM_MC_BEGIN(0, 1, 0, 0);
    23382339            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    23392340            IEM_MC_LOCAL(uint16_t *, pu16Dst);
     
    23452346
    23462347        case IEMMODE_32BIT:
    2347             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT);
     2348            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0);
    23482349            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    23492350            IEM_MC_LOCAL(uint32_t *, pu32Dst);
     
    23562357
    23572358        case IEMMODE_64BIT:
    2358             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     2359            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    23592360            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    23602361            IEM_MC_LOCAL(uint64_t *, pu64Dst);
     
    24282429    {
    24292430        case IEMMODE_16BIT:
    2430             IEM_MC_BEGIN(0, 1, 0);
     2431            IEM_MC_BEGIN(0, 1, 0, 0);
    24312432            IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP,
    24322433                                   DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG);
     
    24392440
    24402441        case IEMMODE_32BIT:
    2441             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     2442            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    24422443            IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP,
    24432444                                   DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG);
     
    24502451
    24512452        case IEMMODE_64BIT:
    2452             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     2453            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    24532454            IEMOP_HLP_DECODED_NL_1(OP_POP, IEMOPFORM_FIXED, OP_PARM_REG_ESP,
    24542455                                   DISOPTYPE_HARMLESS | DISOPTYPE_X86_DEFAULT_64_OP_SIZE | DISOPTYPE_X86_REXB_EXTENDS_OPREG);
     
    26052606            if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    26062607            {
    2607                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186 | IEM_MC_F_NOT_64BIT);
     2608                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186 | IEM_MC_F_NOT_64BIT, 0);
    26082609                IEM_MC_ARG(uint16_t,    u16Index,       0); /* Note! All operands are actually signed. Lazy unsigned bird. */
    26092610                IEM_MC_ARG(uint16_t,    u16LowerBounds, 1);
     
    26232624            else /* 32-bit operands */
    26242625            {
    2625                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT);
     2626                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0);
    26262627                IEM_MC_ARG(uint32_t,    u32Index,       0); /* Note! All operands are actually signed. Lazy unsigned bird. */
    26272628                IEM_MC_ARG(uint32_t,    u32LowerBounds, 1);
     
    26832684    {
    26842685        /* Register */
    2685         IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT);
     2686        IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT, 0);
    26862687        IEMOP_HLP_DECODED_NL_2(OP_ARPL, IEMOPFORM_MR_REG, OP_PARM_Ew, OP_PARM_Gw, DISOPTYPE_HARMLESS);
    26872688        IEM_MC_ARG(uint16_t *,      pu16Dst,    0);
     
    27002701    {
    27012702        /* Memory */
    2702         IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT);
     2703        IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_286 | IEM_MC_F_NOT_64BIT, 0);
    27032704        IEM_MC_ARG(uint16_t *, pu16Dst,          0);
    27042705        IEM_MC_ARG(uint16_t,   u16Src,           1);
     
    27422743             * Register to register.
    27432744             */
    2744             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     2745            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    27452746            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    27462747            IEM_MC_LOCAL(uint64_t, u64Value);
     
    27552756             * We're loading a register from memory.
    27562757             */
    2757             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     2758            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    27582759            IEM_MC_LOCAL(uint64_t, u64Value);
    27592760            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    28732874    {
    28742875        case IEMMODE_16BIT:
    2875             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186);
     2876            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186, 0);
    28762877            uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    28772878            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    28822883
    28832884        case IEMMODE_32BIT:
    2884             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT);
     2885            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0);
    28852886            uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    28862887            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    28912892
    28922893        case IEMMODE_64BIT:
    2893             IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     2894            IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    28942895            uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    28952896            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    29232924                /* register operand */
    29242925                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    2925                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186);
     2926                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186, 0);
    29262927                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    29272928                IEM_MC_ARG(uint16_t *,      pu16Dst,            0);
     
    29422943            {
    29432944                /* memory operand */
    2944                 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186);
     2945                IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186, 0);
    29452946                IEM_MC_ARG(uint16_t *,      pu16Dst,            0);
    29462947                IEM_MC_ARG(uint16_t,        u16Src,             1);
     
    29722973                /* register operand */
    29732974                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    2974                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386);
     2975                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    29752976                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    29762977                IEM_MC_ARG(uint32_t *,      pu32Dst,            0);
     
    29912992            {
    29922993                /* memory operand */
    2993                 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386);
     2994                IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386, 0);
    29942995                IEM_MC_ARG(uint32_t *,      pu32Dst,            0);
    29952996                IEM_MC_ARG(uint32_t,        u32Src,             1);
     
    30213022                /* register operand */
    30223023                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    3023                 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT);
     3024                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0);
    30243025                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    30253026                IEM_MC_ARG(uint64_t *,      pu64Dst,            0);
     
    30403041            {
    30413042                /* memory operand */
    3042                 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     3043                IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    30433044                IEM_MC_ARG(uint64_t *,      pu64Dst,            0);
    30443045                IEM_MC_ARG(uint64_t,        u64Src,             1);
     
    30813082    {
    30823083        case IEMMODE_16BIT:
    3083             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186);
     3084            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_186, 0);
    30843085            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    30853086            IEM_MC_PUSH_U16(i8Imm);
     
    30883089            break;
    30893090        case IEMMODE_32BIT:
    3090             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT);
     3091            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0);
    30913092            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    30923093            IEM_MC_PUSH_U32(i8Imm);
     
    30953096            break;
    30963097        case IEMMODE_64BIT:
    3097             IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     3098            IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    30983099            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    30993100            IEM_MC_PUSH_U64(i8Imm);
     
    31243125            {
    31253126                /* register operand */
    3126                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186);
     3127                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_186, 0);
    31273128                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    31283129                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    31443145            {
    31453146                /* memory operand */
    3146                 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186);
     3147                IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_186, 0);
    31473148                IEM_MC_ARG(uint16_t *,      pu16Dst,                    0);
    31483149                IEM_MC_ARG(uint16_t,        u16Src,                     1);
     
    31743175                /* register operand */
    31753176                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    3176                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386);
     3177                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    31773178                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    31783179                IEM_MC_ARG(uint32_t *,      pu32Dst,                    0);
     
    31933194            {
    31943195                /* memory operand */
    3195                 IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386);
     3196                IEM_MC_BEGIN(3, 2, IEM_MC_F_MIN_386, 0);
    31963197                IEM_MC_ARG(uint32_t *,      pu32Dst,                    0);
    31973198                IEM_MC_ARG(uint32_t,        u32Src,                     1);
     
    32233224                /* register operand */
    32243225                uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    3225                 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT);
     3226                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0);
    32263227                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    32273228                IEM_MC_ARG(uint64_t *,      pu64Dst,                    0);
     
    32423243            {
    32433244                /* memory operand */
    3244                 IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     3245                IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    32453246                IEM_MC_ARG(uint64_t *,      pu64Dst,                    0);
    32463247                IEM_MC_ARG(uint64_t,        u64Src,                     1);
     
    35313532    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    35323533
    3533     IEM_MC_BEGIN(0, 0, 0);
     3534    IEM_MC_BEGIN(0, 0, 0, 0);
    35343535    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    35353536    IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) {
     
    35513552    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    35523553
    3553     IEM_MC_BEGIN(0, 0, 0);
     3554    IEM_MC_BEGIN(0, 0, 0, 0);
    35543555    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    35553556    IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) {
     
    35703571    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    35713572
    3572     IEM_MC_BEGIN(0, 0, 0);
     3573    IEM_MC_BEGIN(0, 0, 0, 0);
    35733574    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    35743575    IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
     
    35903591    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    35913592
    3592     IEM_MC_BEGIN(0, 0, 0);
     3593    IEM_MC_BEGIN(0, 0, 0, 0);
    35933594    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    35943595    IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
     
    36103611    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    36113612
    3612     IEM_MC_BEGIN(0, 0, 0);
     3613    IEM_MC_BEGIN(0, 0, 0, 0);
    36133614    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    36143615    IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) {
     
    36303631    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    36313632
    3632     IEM_MC_BEGIN(0, 0, 0);
     3633    IEM_MC_BEGIN(0, 0, 0, 0);
    36333634    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    36343635    IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) {
     
    36503651    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    36513652
    3652     IEM_MC_BEGIN(0, 0, 0);
     3653    IEM_MC_BEGIN(0, 0, 0, 0);
    36533654    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    36543655    IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) {
     
    36703671    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    36713672
    3672     IEM_MC_BEGIN(0, 0, 0);
     3673    IEM_MC_BEGIN(0, 0, 0, 0);
    36733674    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    36743675    IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) {
     
    36903691    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    36913692
    3692     IEM_MC_BEGIN(0, 0, 0);
     3693    IEM_MC_BEGIN(0, 0, 0, 0);
    36933694    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    36943695    IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) {
     
    37103711    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    37113712
    3712     IEM_MC_BEGIN(0, 0, 0);
     3713    IEM_MC_BEGIN(0, 0, 0, 0);
    37133714    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    37143715    IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) {
     
    37303731    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    37313732
    3732     IEM_MC_BEGIN(0, 0, 0);
     3733    IEM_MC_BEGIN(0, 0, 0, 0);
    37333734    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    37343735    IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) {
     
    37503751    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    37513752
    3752     IEM_MC_BEGIN(0, 0, 0);
     3753    IEM_MC_BEGIN(0, 0, 0, 0);
    37533754    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    37543755    IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) {
     
    37703771    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    37713772
    3772     IEM_MC_BEGIN(0, 0, 0);
     3773    IEM_MC_BEGIN(0, 0, 0, 0);
    37733774    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    37743775    IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) {
     
    37903791    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    37913792
    3792     IEM_MC_BEGIN(0, 0, 0);
     3793    IEM_MC_BEGIN(0, 0, 0, 0);
    37933794    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    37943795    IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) {
     
    38103811    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    38113812
    3812     IEM_MC_BEGIN(0, 0, 0);
     3813    IEM_MC_BEGIN(0, 0, 0, 0);
    38133814    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    38143815    IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) {
     
    38303831    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    38313832
    3832     IEM_MC_BEGIN(0, 0, 0);
     3833    IEM_MC_BEGIN(0, 0, 0, 0);
    38333834    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    38343835    IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) {
     
    38503851        /* register target */ \
    38513852        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \
    3852         IEM_MC_BEGIN(3, 0, 0); \
     3853        IEM_MC_BEGIN(3, 0, 0, 0); \
    38533854        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    38543855        IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
     
    38683869        if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \
    38693870        { \
    3870             IEM_MC_BEGIN(3, 3, 0); \
     3871            IEM_MC_BEGIN(3, 3, 0, 0); \
    38713872            IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
    38723873            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
     
    38933894
    38943895#define IEMOP_BODY_BINARY_Eb_Ib_LOCKED(a_fnLockedU8) \
    3895             IEM_MC_BEGIN(3, 3, 0); \
     3896            IEM_MC_BEGIN(3, 3, 0, 0); \
    38963897            IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
    38973898            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
     
    39213922        /* register target */ \
    39223923        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm); \
    3923         IEM_MC_BEGIN(3, 0, 0); \
     3924        IEM_MC_BEGIN(3, 0, 0, 0); \
    39243925        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    39253926        IEM_MC_ARG(uint8_t *,       pu8Dst,                 0); \
     
    39393940        if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \
    39403941        { \
    3941             IEM_MC_BEGIN(3, 3, 0); \
     3942            IEM_MC_BEGIN(3, 3, 0, 0); \
    39423943            IEM_MC_ARG(uint8_t const *, pu8Dst,                 0); \
    39433944            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags,        2); \
     
    41014102            { \
    41024103                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \
    4103                 IEM_MC_BEGIN(3, 0, 0); \
     4104                IEM_MC_BEGIN(3, 0, 0, 0); \
    41044105                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    41054106                IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
     
    41194120            { \
    41204121                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \
    4121                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     4122                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    41224123                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    41234124                IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
     
    41384139            { \
    41394140                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \
    4140                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     4141                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    41414142                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    41424143                IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
     
    41654166                case IEMMODE_16BIT: \
    41664167                { \
    4167                     IEM_MC_BEGIN(3, 3, 0); \
     4168                    IEM_MC_BEGIN(3, 3, 0, 0); \
    41684169                    IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
    41694170                    IEM_MC_ARG(uint16_t,        u16Src,                 1); \
     
    41894190                case IEMMODE_32BIT: \
    41904191                { \
    4191                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     4192                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    41924193                    IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
    41934194                    IEM_MC_ARG(uint32_t,        u32Src,                 1); \
     
    42134214                case IEMMODE_64BIT: \
    42144215                { \
    4215                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     4216                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    42164217                    IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
    42174218                    IEM_MC_ARG(uint64_t,        u64Src,                 1); \
     
    42474248                case IEMMODE_16BIT: \
    42484249                { \
    4249                     IEM_MC_BEGIN(3, 3, 0); \
     4250                    IEM_MC_BEGIN(3, 3, 0, 0); \
    42504251                    IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
    42514252                    IEM_MC_ARG(uint16_t,        u16Src,                 1); \
     
    42714272                case IEMMODE_32BIT: \
    42724273                { \
    4273                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     4274                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    42744275                    IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
    42754276                    IEM_MC_ARG(uint32_t,        u32Src,                 1); \
     
    42954296                case IEMMODE_64BIT: \
    42964297                { \
    4297                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     4298                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    42984299                    IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
    42994300                    IEM_MC_ARG(uint64_t,        u64Src,                 1); \
     
    43334334            { \
    43344335                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm); \
    4335                 IEM_MC_BEGIN(3, 0, 0); \
     4336                IEM_MC_BEGIN(3, 0, 0, 0); \
    43364337                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    43374338                IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
     
    43514352            { \
    43524353                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm); \
    4353                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     4354                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    43544355                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    43554356                IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
     
    43694370            { \
    43704371                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm); \
    4371                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     4372                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    43724373                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    43734374                IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
     
    43964397                case IEMMODE_16BIT: \
    43974398                { \
    4398                     IEM_MC_BEGIN(3, 3, 0); \
     4399                    IEM_MC_BEGIN(3, 3, 0, 0); \
    43994400                    IEM_MC_ARG(uint16_t const *, pu16Dst,               0); \
    44004401                    IEM_MC_ARG(uint16_t,         u16Src,                1); \
     
    44204421                case IEMMODE_32BIT: \
    44214422                { \
    4422                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     4423                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    44234424                    IEM_MC_ARG(uint32_t const *, pu32Dst,               0); \
    44244425                    IEM_MC_ARG(uint32_t,         u32Src,                1); \
     
    44444445                case IEMMODE_64BIT: \
    44454446                { \
    4446                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     4447                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    44474448                    IEM_MC_ARG(uint64_t const *, pu64Dst,               0); \
    44484449                    IEM_MC_ARG(uint64_t,         u64Src,                1); \
     
    46204621        { \
    46214622            case IEMMODE_16BIT: \
    4622                 IEM_MC_BEGIN(3, 0, 0); \
     4623                IEM_MC_BEGIN(3, 0, 0, 0); \
    46234624                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    46244625                IEM_MC_ARG(uint16_t *,      pu16Dst,                    0); \
     
    46354636            \
    46364637            case IEMMODE_32BIT: \
    4637                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     4638                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    46384639                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    46394640                IEM_MC_ARG(uint32_t *,      pu32Dst,                    0); \
     
    46514652            \
    46524653            case IEMMODE_64BIT: \
    4653                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     4654                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    46544655                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    46554656                IEM_MC_ARG(uint64_t *,      pu64Dst,                    0); \
     
    46784679            { \
    46794680                case IEMMODE_16BIT: \
    4680                     IEM_MC_BEGIN(3, 3, 0); \
     4681                    IEM_MC_BEGIN(3, 3, 0, 0); \
    46814682                    IEM_MC_ARG(uint16_t *,      pu16Dst,                    0); \
    46824683                    IEM_MC_ARG(uint16_t,        u16Src,                     1); \
     
    47004701                \
    47014702                case IEMMODE_32BIT: \
    4702                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     4703                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    47034704                    IEM_MC_ARG(uint32_t *,      pu32Dst,                    0); \
    47044705                    IEM_MC_ARG(uint32_t,        u32Src,                     1); \
     
    47224723                \
    47234724                case IEMMODE_64BIT: \
    4724                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     4725                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    47254726                    IEM_MC_ARG(uint64_t *,      pu64Dst,                    0); \
    47264727                    IEM_MC_ARG(uint64_t,        u64Src,                     1); \
     
    47544755            { \
    47554756                case IEMMODE_16BIT: \
    4756                     IEM_MC_BEGIN(3, 3, 0); \
     4757                    IEM_MC_BEGIN(3, 3, 0, 0); \
    47574758                    IEM_MC_ARG(uint16_t *,      pu16Dst,                    0); \
    47584759                    IEM_MC_ARG(uint16_t,        u16Src,                     1); \
     
    47764777                \
    47774778                case IEMMODE_32BIT: \
    4778                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     4779                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    47794780                    IEM_MC_ARG(uint32_t *,      pu32Dst,                    0); \
    47804781                    IEM_MC_ARG(uint32_t,        u32Src,                     1); \
     
    47984799                \
    47994800                case IEMMODE_64BIT: \
    4800                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     4801                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    48014802                    IEM_MC_ARG(uint64_t *,      pu64Dst,                    0); \
    48024803                    IEM_MC_ARG(uint64_t,        u64Src,                     1); \
     
    48364837        { \
    48374838            case IEMMODE_16BIT: \
    4838                 IEM_MC_BEGIN(3, 0, 0); \
     4839                IEM_MC_BEGIN(3, 0, 0, 0); \
    48394840                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    48404841                IEM_MC_ARG(uint16_t *,      pu16Dst,                    0); \
     
    48514852            \
    48524853            case IEMMODE_32BIT: \
    4853                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     4854                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    48544855                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    48554856                IEM_MC_ARG(uint32_t *,      pu32Dst,                    0); \
     
    48664867            \
    48674868            case IEMMODE_64BIT: \
    4868                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     4869                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    48694870                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    48704871                IEM_MC_ARG(uint64_t *,      pu64Dst,                    0); \
     
    48934894            { \
    48944895                case IEMMODE_16BIT: \
    4895                     IEM_MC_BEGIN(3, 3, 0); \
     4896                    IEM_MC_BEGIN(3, 3, 0, 0); \
    48964897                    IEM_MC_ARG(uint16_t const *, pu16Dst,                   0); \
    48974898                    IEM_MC_ARG(uint16_t,         u16Src,                    1); \
     
    49154916                \
    49164917                case IEMMODE_32BIT: \
    4917                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     4918                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    49184919                    IEM_MC_ARG(uint32_t const *, pu32Dst,                   0); \
    49194920                    IEM_MC_ARG(uint32_t,         u32Src,                    1); \
     
    49374938                \
    49384939                case IEMMODE_64BIT: \
    4939                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     4940                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    49404941                    IEM_MC_ARG(uint64_t const *, pu64Dst,                   0); \
    49414942                    IEM_MC_ARG(uint64_t,         u64Src,                    1); \
     
    51245125    if (IEM_IS_MODRM_REG_MODE(bRm))
    51255126    {
    5126         IEM_MC_BEGIN(0, 2, 0);
     5127        IEM_MC_BEGIN(0, 2, 0, 0);
    51275128        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    51285129        IEM_MC_LOCAL(uint8_t, uTmp1);
     
    51425143         * We're accessing memory.
    51435144         */
    5144         IEM_MC_BEGIN(2, 4, 0);
     5145        IEM_MC_BEGIN(2, 4, 0, 0);
    51455146        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    51465147        IEM_MC_LOCAL(uint8_t, bUnmapInfo);
     
    51825183        {
    51835184            case IEMMODE_16BIT:
    5184                 IEM_MC_BEGIN(0, 2, 0);
     5185                IEM_MC_BEGIN(0, 2, 0, 0);
    51855186                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    51865187                IEM_MC_LOCAL(uint16_t, uTmp1);
     
    51975198
    51985199            case IEMMODE_32BIT:
    5199                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     5200                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    52005201                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    52015202                IEM_MC_LOCAL(uint32_t, uTmp1);
     
    52125213
    52135214            case IEMMODE_64BIT:
    5214                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     5215                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    52155216                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    52165217                IEM_MC_LOCAL(uint64_t, uTmp1);
     
    52375238        {
    52385239            case IEMMODE_16BIT:
    5239                 IEM_MC_BEGIN(2, 4, 0);
     5240                IEM_MC_BEGIN(2, 4, 0, 0);
    52405241                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    52415242                IEM_MC_LOCAL(uint8_t,  bUnmapInfo);
     
    52605261
    52615262            case IEMMODE_32BIT:
    5262                 IEM_MC_BEGIN(2, 4, IEM_MC_F_MIN_386);
     5263                IEM_MC_BEGIN(2, 4, IEM_MC_F_MIN_386, 0);
    52635264                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    52645265                IEM_MC_LOCAL(uint8_t,  bUnmapInfo);
     
    52835284
    52845285            case IEMMODE_64BIT:
    5285                 IEM_MC_BEGIN(2, 4, IEM_MC_F_64BIT);
     5286                IEM_MC_BEGIN(2, 4, IEM_MC_F_64BIT, 0);
    52865287                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    52875288                IEM_MC_LOCAL(uint8_t,  bUnmapInfo);
     
    53265327    if (IEM_IS_MODRM_REG_MODE(bRm))
    53275328    {
    5328         IEM_MC_BEGIN(0, 1, 0);
     5329        IEM_MC_BEGIN(0, 1, 0, 0);
    53295330        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    53305331        IEM_MC_LOCAL(uint8_t, u8Value);
     
    53395340         * We're writing a register to memory.
    53405341         */
    5341         IEM_MC_BEGIN(0, 2, 0);
     5342        IEM_MC_BEGIN(0, 2, 0, 0);
    53425343        IEM_MC_LOCAL(uint8_t, u8Value);
    53435344        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    53695370        {
    53705371            case IEMMODE_16BIT:
    5371                 IEM_MC_BEGIN(0, 1, 0);
     5372                IEM_MC_BEGIN(0, 1, 0, 0);
    53725373                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    53735374                IEM_MC_LOCAL(uint16_t, u16Value);
     
    53795380
    53805381            case IEMMODE_32BIT:
    5381                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     5382                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    53825383                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    53835384                IEM_MC_LOCAL(uint32_t, u32Value);
     
    53895390
    53905391            case IEMMODE_64BIT:
    5391                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     5392                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    53925393                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    53935394                IEM_MC_LOCAL(uint64_t, u64Value);
     
    54095410        {
    54105411            case IEMMODE_16BIT:
    5411                 IEM_MC_BEGIN(0, 2, 0);
     5412                IEM_MC_BEGIN(0, 2, 0, 0);
    54125413                IEM_MC_LOCAL(uint16_t, u16Value);
    54135414                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    54215422
    54225423            case IEMMODE_32BIT:
    5423                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     5424                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    54245425                IEM_MC_LOCAL(uint32_t, u32Value);
    54255426                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    54335434
    54345435            case IEMMODE_64BIT:
    5435                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     5436                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    54365437                IEM_MC_LOCAL(uint64_t, u64Value);
    54375438                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    54645465    if (IEM_IS_MODRM_REG_MODE(bRm))
    54655466    {
    5466         IEM_MC_BEGIN(0, 1, 0);
     5467        IEM_MC_BEGIN(0, 1, 0, 0);
    54675468        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    54685469        IEM_MC_LOCAL(uint8_t, u8Value);
     
    54775478         * We're loading a register from memory.
    54785479         */
    5479         IEM_MC_BEGIN(0, 2, 0);
     5480        IEM_MC_BEGIN(0, 2, 0, 0);
    54805481        IEM_MC_LOCAL(uint8_t, u8Value);
    54815482        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    55075508        {
    55085509            case IEMMODE_16BIT:
    5509                 IEM_MC_BEGIN(0, 1, 0);
     5510                IEM_MC_BEGIN(0, 1, 0, 0);
    55105511                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    55115512                IEM_MC_LOCAL(uint16_t, u16Value);
     
    55175518
    55185519            case IEMMODE_32BIT:
    5519                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     5520                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    55205521                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    55215522                IEM_MC_LOCAL(uint32_t, u32Value);
     
    55275528
    55285529            case IEMMODE_64BIT:
    5529                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     5530                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    55305531                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    55315532                IEM_MC_LOCAL(uint64_t, u64Value);
     
    55475548        {
    55485549            case IEMMODE_16BIT:
    5549                 IEM_MC_BEGIN(0, 2, 0);
     5550                IEM_MC_BEGIN(0, 2, 0, 0);
    55505551                IEM_MC_LOCAL(uint16_t, u16Value);
    55515552                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    55595560
    55605561            case IEMMODE_32BIT:
    5561                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     5562                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    55625563                IEM_MC_LOCAL(uint32_t, u32Value);
    55635564                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    55715572
    55725573            case IEMMODE_64BIT:
    5573                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     5574                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    55745575                IEM_MC_LOCAL(uint64_t, u64Value);
    55755576                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    56285629        {
    56295630            case IEMMODE_16BIT:
    5630                 IEM_MC_BEGIN(0, 1, 0);
     5631                IEM_MC_BEGIN(0, 1, 0, 0);
    56315632                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    56325633                IEM_MC_LOCAL(uint16_t, u16Value);
     
    56385639
    56395640            case IEMMODE_32BIT:
    5640                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     5641                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    56415642                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    56425643                IEM_MC_LOCAL(uint32_t, u32Value);
     
    56485649
    56495650            case IEMMODE_64BIT:
    5650                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     5651                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    56515652                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    56525653                IEM_MC_LOCAL(uint64_t, u64Value);
     
    56695670        pVCpu->iem.s.enmEffOpSize = pVCpu->iem.s.enmDefOpSize = IEMMODE_16BIT;
    56705671#endif
    5671         IEM_MC_BEGIN(0, 2, 0);
     5672        IEM_MC_BEGIN(0, 2, 0, 0);
    56725673        IEM_MC_LOCAL(uint16_t,  u16Value);
    56735674        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffDst);
     
    56975698    {
    56985699        case IEMMODE_16BIT:
    5699             IEM_MC_BEGIN(0, 2, 0);
     5700            IEM_MC_BEGIN(0, 2, 0, 0);
    57005701            IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
    57015702            IEM_MC_LOCAL(uint16_t, u16Cast);
     
    57095710
    57105711        case IEMMODE_32BIT:
    5711             IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     5712            IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    57125713            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    57135714            IEM_MC_LOCAL(uint32_t, u32Cast);
     
    57215722
    57225723        case IEMMODE_64BIT:
    5723             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     5724            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    57245725            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    57255726            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     
    57665767    if (IEM_IS_MODRM_REG_MODE(bRm))
    57675768    {
    5768         IEM_MC_BEGIN(2, 0, 0);
     5769        /** @todo Only set IEM_CIMPL_F_INHIBIT_SHADOW when it actually applies... */
     5770        IEM_MC_BEGIN(2, 0, 0, 0);
    57695771        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    57705772        IEM_MC_ARG_CONST(uint8_t, iSRegArg, iSegReg, 0);
     
    57725774        IEM_MC_FETCH_GREG_U16(u16Value, IEM_GET_MODRM_RM(pVCpu, bRm));
    57735775        if (iSRegArg >= X86_SREG_FS || !IEM_IS_32BIT_CODE(pVCpu))
    5774             IEM_MC_CALL_CIMPL_2(               0, iemCImpl_load_SReg, iSRegArg, u16Value);
     5776            IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW,                    iemCImpl_load_SReg, iSRegArg, u16Value);
    57755777        else
    5776             IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_MODE, iemCImpl_load_SReg, iSRegArg, u16Value);
     5778            IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW | IEM_CIMPL_F_MODE, iemCImpl_load_SReg, iSRegArg, u16Value);
    57775779        IEM_MC_END();
    57785780    }
     
    57835785         * regardless of operand size prefixes.
    57845786         */
    5785         IEM_MC_BEGIN(2, 1, 0);
     5787        /** @todo Only set IEM_CIMPL_F_INHIBIT_SHADOW when it actually applies... */
     5788        IEM_MC_BEGIN(2, 1, 0, 0);
    57865789        IEM_MC_ARG_CONST(uint8_t, iSRegArg, iSegReg, 0);
    57875790        IEM_MC_ARG(uint16_t,      u16Value,          1);
     
    57915794        IEM_MC_FETCH_MEM_U16(u16Value, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
    57925795        if (iSRegArg >= X86_SREG_FS || !IEM_IS_32BIT_CODE(pVCpu))
    5793             IEM_MC_CALL_CIMPL_2(               0, iemCImpl_load_SReg, iSRegArg, u16Value);
     5796            IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW,                    iemCImpl_load_SReg, iSRegArg, u16Value);
    57945797        else
    5795             IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_MODE, iemCImpl_load_SReg, iSRegArg, u16Value);
     5798            IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_INHIBIT_SHADOW | IEM_CIMPL_F_MODE, iemCImpl_load_SReg, iSRegArg, u16Value);
    57965799        IEM_MC_END();
    57975800    }
     
    58355838    {
    58365839        case IEMMODE_16BIT:
    5837             IEM_MC_BEGIN(2, 0, 0);
     5840            IEM_MC_BEGIN(2, 0, 0, 0);
    58385841            IEM_MC_ARG(uint8_t, iEffSeg,     0);
    58395842            IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1);
     
    58465849
    58475850        case IEMMODE_32BIT:
    5848             IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386);
     5851            IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0);
    58495852            IEM_MC_ARG(uint8_t, iEffSeg,     0);
    58505853            IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1);
     
    58575860
    58585861        case IEMMODE_64BIT:
    5859             IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     5862            IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    58605863            IEM_MC_ARG(uint8_t, iEffSeg,     0);
    58615864            IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1);
     
    60086011    {
    60096012        case IEMMODE_16BIT:
    6010             IEM_MC_BEGIN(0, 2, 0);
     6013            IEM_MC_BEGIN(0, 2, 0, 0);
    60116014            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    60126015            IEM_MC_LOCAL(uint16_t, u16Tmp1);
     
    60216024
    60226025        case IEMMODE_32BIT:
    6023             IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     6026            IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    60246027            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    60256028            IEM_MC_LOCAL(uint32_t, u32Tmp1);
     
    60346037
    60356038        case IEMMODE_64BIT:
    6036             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     6039            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    60376040            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    60386041            IEM_MC_LOCAL(uint64_t, u64Tmp1);
     
    60826085        IEMOP_MNEMONIC(nop, "nop");
    60836086    /** @todo testcase: lock nop; lock pause */
    6084     IEM_MC_BEGIN(0, 0, 0);
     6087    IEM_MC_BEGIN(0, 0, 0, 0);
    60856088    IEMOP_HLP_DONE_DECODING();
    60866089    IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    61686171        case IEMMODE_16BIT:
    61696172            IEMOP_MNEMONIC(cbw, "cbw");
    6170             IEM_MC_BEGIN(0, 1, 0);
     6173            IEM_MC_BEGIN(0, 1, 0, 0);
    61716174            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    61726175            IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 7) {
     
    61816184        case IEMMODE_32BIT:
    61826185            IEMOP_MNEMONIC(cwde, "cwde");
    6183             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     6186            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    61846187            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    61856188            IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 15) {
     
    61946197        case IEMMODE_64BIT:
    61956198            IEMOP_MNEMONIC(cdqe, "cdqe");
    6196             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     6199            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    61976200            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    61986201            IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 31) {
     
    62196222        case IEMMODE_16BIT:
    62206223            IEMOP_MNEMONIC(cwd, "cwd");
    6221             IEM_MC_BEGIN(0, 1, 0);
     6224            IEM_MC_BEGIN(0, 1, 0, 0);
    62226225            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    62236226            IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 15) {
     
    62326235        case IEMMODE_32BIT:
    62336236            IEMOP_MNEMONIC(cdq, "cdq");
    6234             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     6237            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    62356238            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    62366239            IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 31) {
     
    62456248        case IEMMODE_64BIT:
    62466249            IEMOP_MNEMONIC(cqo, "cqo");
    6247             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     6250            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    62486251            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    62496252            IEM_MC_IF_GREG_BIT_SET(X86_GREG_xAX, 63) {
     
    62876290{
    62886291    IEMOP_MNEMONIC(wait, "wait");
    6289     IEM_MC_BEGIN(0, 0, 0);
     6292    IEM_MC_BEGIN(0, 0, 0, 0);
    62906293    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    62916294    IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE();
     
    63306333        && !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLahfSahf)
    63316334        IEMOP_RAISE_INVALID_OPCODE_RET();
    6332     IEM_MC_BEGIN(0, 2, 0);
     6335    IEM_MC_BEGIN(0, 2, 0, 0);
    63336336    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    63346337    IEM_MC_LOCAL(uint32_t, u32Flags);
     
    63556358        && !IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLahfSahf)
    63566359        IEMOP_RAISE_INVALID_OPCODE_RET();
    6357     IEM_MC_BEGIN(0, 1, 0);
     6360    IEM_MC_BEGIN(0, 1, 0, 0);
    63586361    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    63596362    IEM_MC_LOCAL(uint8_t, u8Flags);
     
    64046407     * Fetch AL.
    64056408     */
    6406     IEM_MC_BEGIN(0, 1, 0);
     6409    IEM_MC_BEGIN(0, 1, 0, 0);
    64076410    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    64086411    IEM_MC_LOCAL(uint8_t, u8Tmp);
     
    64326435    {
    64336436        case IEMMODE_16BIT:
    6434             IEM_MC_BEGIN(0, 1, 0);
     6437            IEM_MC_BEGIN(0, 1, 0, 0);
    64356438            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    64366439            IEM_MC_LOCAL(uint16_t, u16Tmp);
     
    64426445
    64436446        case IEMMODE_32BIT:
    6444             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     6447            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    64456448            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    64466449            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    64526455
    64536456        case IEMMODE_64BIT:
    6454             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     6457            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    64556458            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    64566459            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    64816484     * Store AL.
    64826485     */
    6483     IEM_MC_BEGIN(0, 1, 0);
     6486    IEM_MC_BEGIN(0, 1, 0, 0);
    64846487    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    64856488    IEM_MC_LOCAL(uint8_t, u8Tmp);
     
    65096512    {
    65106513        case IEMMODE_16BIT:
    6511             IEM_MC_BEGIN(0, 1, 0);
     6514            IEM_MC_BEGIN(0, 1, 0, 0);
    65126515            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    65136516            IEM_MC_LOCAL(uint16_t, u16Tmp);
     
    65196522
    65206523        case IEMMODE_32BIT:
    6521             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     6524            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    65226525            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    65236526            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    65296532
    65306533        case IEMMODE_64BIT:
    6531             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     6534            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    65326535            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    65336536            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    65446547/** Macro used by iemOp_movsb_Xb_Yb and iemOp_movswd_Xv_Yv */
    65456548#define IEM_MOVS_CASE(ValBits, AddrBits, a_fMcFlags) \
    6546         IEM_MC_BEGIN(0, 2, a_fMcFlags); \
     6549        IEM_MC_BEGIN(0, 2, a_fMcFlags, 0); \
    65476550        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    65486551        IEM_MC_LOCAL(uint##ValBits##_t, uValue); \
     
    66856688/** Macro used by iemOp_cmpsb_Xb_Yb and iemOp_cmpswd_Xv_Yv */
    66866689#define IEM_CMPS_CASE(ValBits, AddrBits, a_fMcFlags) \
    6687         IEM_MC_BEGIN(3, 3, a_fMcFlags); \
     6690        IEM_MC_BEGIN(3, 3, a_fMcFlags, 0); \
    66886691        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    66896692        IEM_MC_ARG(uint##ValBits##_t *, puValue1, 0); \
     
    69036906/** Macro used by iemOp_stosb_Yb_AL and iemOp_stoswd_Yv_eAX */
    69046907#define IEM_STOS_CASE(ValBits, AddrBits, a_fMcFlags) \
    6905         IEM_MC_BEGIN(0, 2, a_fMcFlags); \
     6908        IEM_MC_BEGIN(0, 2, a_fMcFlags, 0); \
    69066909        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    69076910        IEM_MC_LOCAL(uint##ValBits##_t, uValue); \
     
    70407043/** Macro used by iemOp_lodsb_AL_Xb and iemOp_lodswd_eAX_Xv */
    70417044#define IEM_LODS_CASE(ValBits, AddrBits, a_fMcFlags) \
    7042         IEM_MC_BEGIN(0, 2, a_fMcFlags); \
     7045        IEM_MC_BEGIN(0, 2, a_fMcFlags, 0); \
    70437046        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    70447047        IEM_MC_LOCAL(uint##ValBits##_t, uValue); \
     
    71777180/** Macro used by iemOp_scasb_AL_Xb and iemOp_scaswd_eAX_Xv */
    71787181#define IEM_SCAS_CASE(ValBits, AddrBits, a_fMcFlags) \
    7179         IEM_MC_BEGIN(3, 2, a_fMcFlags); \
     7182        IEM_MC_BEGIN(3, 2, a_fMcFlags, 0); \
    71807183        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    71817184        IEM_MC_ARG(uint##ValBits##_t *, puRax,   0); \
     
    73707373{
    73717374    uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    7372     IEM_MC_BEGIN(0, 1, 0);
     7375    IEM_MC_BEGIN(0, 1, 0, 0);
    73737376    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    73747377    IEM_MC_LOCAL_CONST(uint8_t, u8Value,/*=*/ u8Imm);
     
    74677470    {
    74687471        case IEMMODE_16BIT:
    7469             IEM_MC_BEGIN(0, 1, 0);
     7472            IEM_MC_BEGIN(0, 1, 0, 0);
    74707473            uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    74717474            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    74777480
    74787481        case IEMMODE_32BIT:
    7479             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     7482            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    74807483            uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    74817484            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    74877490
    74887491        case IEMMODE_64BIT:
    7489             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     7492            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    74907493            uint64_t u64Imm; IEM_OPCODE_GET_NEXT_U64(&u64Imm); /* 64-bit immediate! */
    74917494            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    76067609        /* register */
    76077610        uint8_t cShift; IEM_OPCODE_GET_NEXT_U8(&cShift);
    7608         IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186);
     7611        IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186, 0);
    76097612        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    76107613        IEM_MC_ARG(uint8_t *,       pu8Dst,            0);
     
    76207623    {
    76217624        /* memory */
    7622         IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_186);
     7625        IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_186, 0);
    76237626        IEM_MC_ARG(uint8_t *,   pu8Dst,    0);
    76247627        IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    76727675        {
    76737676            case IEMMODE_16BIT:
    7674                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186);
     7677                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_186, 0);
    76757678                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    76767679                IEM_MC_ARG(uint16_t *,      pu16Dst,           0);
     
    76857688
    76867689            case IEMMODE_32BIT:
    7687                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     7690                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    76887691                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    76897692                IEM_MC_ARG(uint32_t *,      pu32Dst,           0);
     
    76997702
    77007703            case IEMMODE_64BIT:
    7701                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     7704                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    77027705                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    77037706                IEM_MC_ARG(uint64_t *,      pu64Dst,           0);
     
    77207723        {
    77217724            case IEMMODE_16BIT:
    7722                 IEM_MC_BEGIN(3, 3, 0);
     7725                IEM_MC_BEGIN(3, 3, 0, 0);
    77237726                IEM_MC_ARG(uint16_t *,  pu16Dst,    0);
    77247727                IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    77427745
    77437746            case IEMMODE_32BIT:
    7744                 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386);
     7747                IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0);
    77457748                IEM_MC_ARG(uint32_t *,  pu32Dst,    0);
    77467749                IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    77647767
    77657768            case IEMMODE_64BIT:
    7766                 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT);
     7769                IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0);
    77677770                IEM_MC_ARG(uint64_t *,  pu64Dst,    0);
    77687771                IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    79647967        /* register access */
    79657968        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    7966         IEM_MC_BEGIN(0, 0, 0);
     7969        IEM_MC_BEGIN(0, 0, 0, 0);
    79677970        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    79687971        IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Imm);
     
    79737976    {
    79747977        /* memory access. */
    7975         IEM_MC_BEGIN(0, 1, 0);
     7978        IEM_MC_BEGIN(0, 1, 0, 0);
    79767979        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    79777980        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 1);
     
    80018004        {
    80028005            case IEMMODE_16BIT:
    8003                 IEM_MC_BEGIN(0, 0, 0);
     8006                IEM_MC_BEGIN(0, 0, 0, 0);
    80048007                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    80058008                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80108013
    80118014            case IEMMODE_32BIT:
    8012                 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8015                IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80138016                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    80148017                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80198022
    80208023            case IEMMODE_64BIT:
    8021                 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     8024                IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    80228025                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    80238026                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80368039        {
    80378040            case IEMMODE_16BIT:
    8038                 IEM_MC_BEGIN(0, 1, 0);
     8041                IEM_MC_BEGIN(0, 1, 0, 0);
    80398042                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    80408043                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 2);
     
    80478050
    80488051            case IEMMODE_32BIT:
    8049                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8052                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    80508053                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    80518054                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
     
    80588061
    80598062            case IEMMODE_64BIT:
    8060                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     8063                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    80618064                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    80628065                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 4);
     
    82068209    {
    82078210        /* register */
    8208         IEM_MC_BEGIN(3, 0, 0);
     8211        IEM_MC_BEGIN(3, 0, 0, 0);
    82098212        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    82108213        IEM_MC_ARG(uint8_t *,       pu8Dst,             0);
     
    82208223    {
    82218224        /* memory */
    8222         IEM_MC_BEGIN(3, 3, 0);
     8225        IEM_MC_BEGIN(3, 3, 0, 0);
    82238226        IEM_MC_ARG(uint8_t *,       pu8Dst,             0);
    82248227        IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=*/1,   1);
     
    82698272        {
    82708273            case IEMMODE_16BIT:
    8271                 IEM_MC_BEGIN(3, 0, 0);
     8274                IEM_MC_BEGIN(3, 0, 0, 0);
    82728275                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    82738276                IEM_MC_ARG(uint16_t *,      pu16Dst,           0);
     
    82828285
    82838286            case IEMMODE_32BIT:
    8284                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     8287                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    82858288                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    82868289                IEM_MC_ARG(uint32_t *,      pu32Dst,           0);
     
    82968299
    82978300            case IEMMODE_64BIT:
    8298                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     8301                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    82998302                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    83008303                IEM_MC_ARG(uint64_t *,      pu64Dst,           0);
     
    83178320        {
    83188321            case IEMMODE_16BIT:
    8319                 IEM_MC_BEGIN(3, 3, 0);
     8322                IEM_MC_BEGIN(3, 3, 0, 0);
    83208323                IEM_MC_ARG(uint16_t *,      pu16Dst,            0);
    83218324                IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=1*/1,  1);
     
    83378340
    83388341            case IEMMODE_32BIT:
    8339                 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386);
     8342                IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0);
    83408343                IEM_MC_ARG(uint32_t *,      pu32Dst,            0);
    83418344                IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=1*/1,  1);
     
    83578360
    83588361            case IEMMODE_64BIT:
    8359                 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT);
     8362                IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0);
    83608363                IEM_MC_ARG(uint64_t *,      pu64Dst,            0);
    83618364                IEM_MC_ARG_CONST(uint8_t,   cShiftArg,/*=1*/1,  1);
     
    84068409    {
    84078410        /* register */
    8408         IEM_MC_BEGIN(3, 0, 0);
     8411        IEM_MC_BEGIN(3, 0, 0, 0);
    84098412        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84108413        IEM_MC_ARG(uint8_t *,   pu8Dst,     0);
     
    84218424    {
    84228425        /* memory */
    8423         IEM_MC_BEGIN(3, 3, 0);
     8426        IEM_MC_BEGIN(3, 3, 0, 0);
    84248427        IEM_MC_ARG(uint8_t *,   pu8Dst,          0);
    84258428        IEM_MC_ARG(uint8_t,     cShiftArg,       1);
     
    84708473        {
    84718474            case IEMMODE_16BIT:
    8472                 IEM_MC_BEGIN(3, 0, 0);
     8475                IEM_MC_BEGIN(3, 0, 0, 0);
    84738476                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84748477                IEM_MC_ARG(uint16_t *,      pu16Dst,    0);
     
    84848487
    84858488            case IEMMODE_32BIT:
    8486                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     8489                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    84878490                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84888491                IEM_MC_ARG(uint32_t *,      pu32Dst,    0);
     
    84998502
    85008503            case IEMMODE_64BIT:
    8501                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     8504                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    85028505                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    85038506                IEM_MC_ARG(uint64_t *,      pu64Dst,    0);
     
    85218524        {
    85228525            case IEMMODE_16BIT:
    8523                 IEM_MC_BEGIN(3, 3, 0);
     8526                IEM_MC_BEGIN(3, 3, 0, 0);
    85248527                IEM_MC_ARG(uint16_t *,  pu16Dst,    0);
    85258528                IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    85428545
    85438546            case IEMMODE_32BIT:
    8544                 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386);
     8547                IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0);
    85458548                IEM_MC_ARG(uint32_t *,  pu32Dst,    0);
    85468549                IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    85638566
    85648567            case IEMMODE_64BIT:
    8565                 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT);
     8568                IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0);
    85668569                IEM_MC_ARG(uint64_t *,  pu64Dst,    0);
    85678570                IEM_MC_ARG(uint8_t,     cShiftArg,  1);
     
    86248627    IEMOP_HLP_NO_64BIT();
    86258628
    8626     IEM_MC_BEGIN(0, 0, 0);
     8629    IEM_MC_BEGIN(0, 0, 0, 0);
    86278630    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    86288631    IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
     
    86458648    {
    86468649        case IEMMODE_16BIT:
    8647             IEM_MC_BEGIN(2, 0, 0);
     8650            IEM_MC_BEGIN(2, 0, 0, 0);
    86488651            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    86498652            IEM_MC_LOCAL(uint8_t,  u8Tmp);
     
    86588661
    86598662        case IEMMODE_32BIT:
    8660             IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386);
     8663            IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0);
    86618664            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    86628665            IEM_MC_LOCAL(uint8_t,  u8Tmp);
     
    86718674
    86728675        case IEMMODE_64BIT:
    8673             IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     8676            IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    86748677            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    86758678            IEM_MC_LOCAL(uint8_t,  u8Tmp);
     
    86978700FNIEMOP_DEF_2(iemOpHlpFpu_st0_stN, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl)
    86988701{
    8699     IEM_MC_BEGIN(3, 1, 0);
     8702    IEM_MC_BEGIN(3, 1, 0, 0);
    87008703    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    87018704    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    87288731FNIEMOP_DEF_2(iemOpHlpFpuNoStore_st0_stN, uint8_t, bRm, PFNIEMAIMPLFPUR80FSW, pfnAImpl)
    87298732{
    8730     IEM_MC_BEGIN(3, 1, 0);
     8733    IEM_MC_BEGIN(3, 1, 0, 0);
    87318734    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    87328735    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    87598762FNIEMOP_DEF_2(iemOpHlpFpuNoStore_st0_stN_pop, uint8_t, bRm, PFNIEMAIMPLFPUR80FSW, pfnAImpl)
    87608763{
    8761     IEM_MC_BEGIN(3, 1, 0);
     8764    IEM_MC_BEGIN(3, 1, 0, 0);
    87628765    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    87638766    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    88548857FNIEMOP_DEF_2(iemOpHlpFpu_st0_m32r, uint8_t, bRm, PFNIEMAIMPLFPUR32, pfnAImpl)
    88558858{
    8856     IEM_MC_BEGIN(3, 3, 0);
     8859    IEM_MC_BEGIN(3, 3, 0, 0);
    88578860    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    88588861    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    89038906    IEMOP_MNEMONIC(fcom_st0_m32r, "fcom st0,m32r");
    89048907
    8905     IEM_MC_BEGIN(3, 3, 0);
     8908    IEM_MC_BEGIN(3, 3, 0, 0);
    89068909    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    89078910    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    89368939    IEMOP_MNEMONIC(fcomp_st0_m32r, "fcomp st0,m32r");
    89378940
    8938     IEM_MC_BEGIN(3, 3, 0);
     8941    IEM_MC_BEGIN(3, 3, 0, 0);
    89398942    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    89408943    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    90439046    IEMOP_MNEMONIC(fld_m32r, "fld m32r");
    90449047
    9045     IEM_MC_BEGIN(2, 3, 0);
     9048    IEM_MC_BEGIN(2, 3, 0, 0);
    90469049    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    90479050    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    90739076{
    90749077    IEMOP_MNEMONIC(fst_m32r, "fst m32r");
    9075     IEM_MC_BEGIN(3, 2, 0);
     9078    IEM_MC_BEGIN(3, 2, 0, 0);
    90769079    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    90779080    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    91089111{
    91099112    IEMOP_MNEMONIC(fstp_m32r, "fstp m32r");
    9110     IEM_MC_BEGIN(3, 2, 0);
     9113    IEM_MC_BEGIN(3, 2, 0, 0);
    91119114    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    91129115    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    91439146{
    91449147    IEMOP_MNEMONIC(fldenv, "fldenv m14/28byte");
    9145     IEM_MC_BEGIN(3, 0, 0);
     9148    IEM_MC_BEGIN(3, 0, 0, 0);
    91469149    IEM_MC_ARG_CONST(IEMMODE,           enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize,  0);
    91479150    IEM_MC_ARG(uint8_t,                 iEffSeg,                                    1);
     
    91619164{
    91629165    IEMOP_MNEMONIC(fldcw_m2byte, "fldcw m2byte");
    9163     IEM_MC_BEGIN(1, 1, 0);
     9166    IEM_MC_BEGIN(1, 1, 0, 0);
    91649167    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    91659168    IEM_MC_ARG(uint16_t,                u16Fsw,                                     0);
     
    91789181{
    91799182    IEMOP_MNEMONIC(fstenv, "fstenv m14/m28byte");
    9180     IEM_MC_BEGIN(3, 0, 0);
     9183    IEM_MC_BEGIN(3, 0, 0, 0);
    91819184    IEM_MC_ARG_CONST(IEMMODE,           enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize,  0);
    91829185    IEM_MC_ARG(uint8_t,                 iEffSeg,                                    1);
     
    91969199{
    91979200    IEMOP_MNEMONIC(fnstcw_m2byte, "fnstcw m2byte");
    9198     IEM_MC_BEGIN(2, 0, 0);
     9201    IEM_MC_BEGIN(2, 0, 0, 0);
    91999202    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    92009203    IEM_MC_LOCAL(uint16_t,              u16Fcw);
     
    92149217{
    92159218    IEMOP_MNEMONIC(fnop, "fnop");
    9216     IEM_MC_BEGIN(0, 0, 0);
     9219    IEM_MC_BEGIN(0, 0, 0, 0);
    92179220    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    92189221    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    92339236    /** @todo Testcase: Check if this raises \#MF?  Intel mentioned it not. AMD
    92349237     *        indicates that it does. */
    9235     IEM_MC_BEGIN(0, 2, 0);
     9238    IEM_MC_BEGIN(0, 2, 0, 0);
    92369239    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    92379240    IEM_MC_LOCAL(PCRTFLOAT80U,          pr80Value);
     
    92599262    /** @todo Testcase: Check if this raises \#MF?  Intel mentioned it not. AMD
    92609263     *        indicates that it does. */
    9261     IEM_MC_BEGIN(2, 3, 0);
     9264    IEM_MC_BEGIN(2, 3, 0, 0);
    92629265    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    92639266    IEM_MC_LOCAL(PCRTFLOAT80U,          pr80Value1);
     
    92929295    if (!iDstReg)
    92939296    {
    9294         IEM_MC_BEGIN(0, 1, 0);
     9297        IEM_MC_BEGIN(0, 1, 0, 0);
    92959298        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    92969299        IEM_MC_LOCAL_CONST(uint16_t,        u16Fsw, /*=*/ 0);
     
    93109313    else
    93119314    {
    9312         IEM_MC_BEGIN(0, 2, 0);
     9315        IEM_MC_BEGIN(0, 2, 0, 0);
    93139316        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    93149317        IEM_MC_LOCAL(PCRTFLOAT80U,          pr80Value);
     
    93399342FNIEMOP_DEF_1(iemOpHlpFpu_st0, PFNIEMAIMPLFPUR80UNARY, pfnAImpl)
    93409343{
    9341     IEM_MC_BEGIN(2, 1, 0);
     9344    IEM_MC_BEGIN(2, 1, 0, 0);
    93429345    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    93439346    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    93809383{
    93819384    IEMOP_MNEMONIC(ftst_st0, "ftst st0");
    9382     IEM_MC_BEGIN(2, 1, 0);
     9385    IEM_MC_BEGIN(2, 1, 0, 0);
    93839386    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    93849387    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    94059408{
    94069409    IEMOP_MNEMONIC(fxam_st0, "fxam st0");
    9407     IEM_MC_BEGIN(2, 1, 0);
     9410    IEM_MC_BEGIN(2, 1, 0, 0);
    94089411    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    94099412    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    94309433FNIEMOP_DEF_1(iemOpHlpFpuPushConstant, PFNIEMAIMPLFPUR80LDCONST, pfnAImpl)
    94319434{
    9432     IEM_MC_BEGIN(1, 1, 0);
     9435    IEM_MC_BEGIN(1, 1, 0, 0);
    94339436    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    94349437    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    95289531FNIEMOP_DEF_2(iemOpHlpFpu_stN_st0_pop, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl)
    95299532{
    9530     IEM_MC_BEGIN(3, 1, 0);
     9533    IEM_MC_BEGIN(3, 1, 0, 0);
    95319534    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    95329535    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    95679570FNIEMOP_DEF_1(iemOpHlpFpuReplace_st0_push, PFNIEMAIMPLFPUR80UNARYTWO, pfnAImpl)
    95689571{
    9569     IEM_MC_BEGIN(2, 1, 0);
     9572    IEM_MC_BEGIN(2, 1, 0, 0);
    95709573    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    95719574    IEM_MC_LOCAL(IEMFPURESULTTWO,           FpuResTwo);
     
    96279630    /** @todo Testcase: Check whether FOP, FPUIP and FPUCS are affected by
    96289631     *        FINCSTP and FDECSTP. */
    9629     IEM_MC_BEGIN(0, 0, 0);
     9632    IEM_MC_BEGIN(0, 0, 0, 0);
    96309633    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    96319634
     
    96499652    /** @todo Testcase: Check whether FOP, FPUIP and FPUCS are affected by
    96509653     *        FINCSTP and FDECSTP. */
    9651     IEM_MC_BEGIN(0, 0, 0);
     9654    IEM_MC_BEGIN(0, 0, 0, 0);
    96529655    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    96539656
     
    98169819{
    98179820    IEMOP_MNEMONIC(fcmovb_st0_stN, "fcmovb st0,stN");
    9818     IEM_MC_BEGIN(0, 1, 0);
     9821    IEM_MC_BEGIN(0, 1, 0, 0);
    98199822    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    98209823    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    98429845{
    98439846    IEMOP_MNEMONIC(fcmove_st0_stN, "fcmove st0,stN");
    9844     IEM_MC_BEGIN(0, 1, 0);
     9847    IEM_MC_BEGIN(0, 1, 0, 0);
    98459848    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    98469849    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    98689871{
    98699872    IEMOP_MNEMONIC(fcmovbe_st0_stN, "fcmovbe st0,stN");
    9870     IEM_MC_BEGIN(0, 1, 0);
     9873    IEM_MC_BEGIN(0, 1, 0, 0);
    98719874    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    98729875    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    98949897{
    98959898    IEMOP_MNEMONIC(fcmovu_st0_stN, "fcmovu st0,stN");
    9896     IEM_MC_BEGIN(0, 1, 0);
     9899    IEM_MC_BEGIN(0, 1, 0, 0);
    98979900    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    98989901    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    99249927FNIEMOP_DEF_1(iemOpHlpFpuNoStore_st0_st1_pop_pop, PFNIEMAIMPLFPUR80FSW, pfnAImpl)
    99259928{
    9926     IEM_MC_BEGIN(3, 1, 0);
     9929    IEM_MC_BEGIN(3, 1, 0, 0);
    99279930    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    99289931    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    99649967FNIEMOP_DEF_2(iemOpHlpFpu_st0_m32i, uint8_t, bRm, PFNIEMAIMPLFPUI32, pfnAImpl)
    99659968{
    9966     IEM_MC_BEGIN(3, 3, 0);
     9969    IEM_MC_BEGIN(3, 3, 0, 0);
    99679970    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    99689971    IEM_MC_LOCAL(IEMFPURESULT,              FpuRes);
     
    1001310016    IEMOP_MNEMONIC(ficom_st0_m32i, "ficom st0,m32i");
    1001410017
    10015     IEM_MC_BEGIN(3, 3, 0);
     10018    IEM_MC_BEGIN(3, 3, 0, 0);
    1001610019    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1001710020    IEM_MC_LOCAL(uint16_t,                  u16Fsw);
     
    1004610049    IEMOP_MNEMONIC(ficomp_st0_m32i, "ficomp st0,m32i");
    1004710050
    10048     IEM_MC_BEGIN(3, 3, 0);
     10051    IEM_MC_BEGIN(3, 3, 0, 0);
    1004910052    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1005010053    IEM_MC_LOCAL(uint16_t,                  u16Fsw);
     
    1015410157    IEMOP_MNEMONIC(fild_m32i, "fild m32i");
    1015510158
    10156     IEM_MC_BEGIN(2, 3, 0);
     10159    IEM_MC_BEGIN(2, 3, 0, 0);
    1015710160    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1015810161    IEM_MC_LOCAL(IEMFPURESULT,              FpuRes);
     
    1018510188{
    1018610189    IEMOP_MNEMONIC(fisttp_m32i, "fisttp m32i");
    10187     IEM_MC_BEGIN(3, 2, 0);
     10190    IEM_MC_BEGIN(3, 2, 0, 0);
    1018810191    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1018910192    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1022010223{
    1022110224    IEMOP_MNEMONIC(fist_m32i, "fist m32i");
    10222     IEM_MC_BEGIN(3, 2, 0);
     10225    IEM_MC_BEGIN(3, 2, 0, 0);
    1022310226    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1022410227    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1025510258{
    1025610259    IEMOP_MNEMONIC(fistp_m32i, "fistp m32i");
    10257     IEM_MC_BEGIN(3, 2, 0);
     10260    IEM_MC_BEGIN(3, 2, 0, 0);
    1025810261    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1025910262    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1029110294    IEMOP_MNEMONIC(fld_m80r, "fld m80r");
    1029210295
    10293     IEM_MC_BEGIN(2, 3, 0);
     10296    IEM_MC_BEGIN(2, 3, 0, 0);
    1029410297    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    1029510298    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    1032210325{
    1032310326    IEMOP_MNEMONIC(fstp_m80r, "fstp m80r");
    10324     IEM_MC_BEGIN(3, 2, 0);
     10327    IEM_MC_BEGIN(3, 2, 0, 0);
    1032510328    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1032610329    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1035710360{
    1035810361    IEMOP_MNEMONIC(fcmovnb_st0_stN, "fcmovnb st0,stN");
    10359     IEM_MC_BEGIN(0, 1, 0);
     10362    IEM_MC_BEGIN(0, 1, 0, 0);
    1036010363    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1036110364    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    1038310386{
    1038410387    IEMOP_MNEMONIC(fcmovne_st0_stN, "fcmovne st0,stN");
    10385     IEM_MC_BEGIN(0, 1, 0);
     10388    IEM_MC_BEGIN(0, 1, 0, 0);
    1038610389    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1038710390    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    1040910412{
    1041010413    IEMOP_MNEMONIC(fcmovnbe_st0_stN, "fcmovnbe st0,stN");
    10411     IEM_MC_BEGIN(0, 1, 0);
     10414    IEM_MC_BEGIN(0, 1, 0, 0);
    1041210415    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1041310416    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    1043510438{
    1043610439    IEMOP_MNEMONIC(fcmovnnu_st0_stN, "fcmovnnu st0,stN");
    10437     IEM_MC_BEGIN(0, 1, 0);
     10440    IEM_MC_BEGIN(0, 1, 0, 0);
    1043810441    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1043910442    IEM_MC_LOCAL(PCRTFLOAT80U,      pr80ValueN);
     
    1046110464{
    1046210465    IEMOP_MNEMONIC(fneni, "fneni (8087/ign)");
    10463     IEM_MC_BEGIN(0, 0, 0);
     10466    IEM_MC_BEGIN(0, 0, 0, 0);
    1046410467    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1046510468    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1047310476{
    1047410477    IEMOP_MNEMONIC(fndisi, "fndisi (8087/ign)");
    10475     IEM_MC_BEGIN(0, 0, 0);
     10478    IEM_MC_BEGIN(0, 0, 0, 0);
    1047610479    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1047710480    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1048510488{
    1048610489    IEMOP_MNEMONIC(fnclex, "fnclex");
    10487     IEM_MC_BEGIN(0, 0, 0);
     10490    IEM_MC_BEGIN(0, 0, 0, 0);
    1048810491    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1048910492    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1050810511{
    1050910512    IEMOP_MNEMONIC(fnsetpm, "fnsetpm (80287/ign)");   /* set protected mode on fpu. */
    10510     IEM_MC_BEGIN(0, 0, 0);
     10513    IEM_MC_BEGIN(0, 0, 0, 0);
    1051110514    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1051210515    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1052110524    IEMOP_MNEMONIC(frstpm, "frstpm (80287XL/ign)"); /* reset pm, back to real mode. */
    1052210525#if 0 /* #UDs on newer CPUs */
    10523     IEM_MC_BEGIN(0, 0, 0);
     10526    IEM_MC_BEGIN(0, 0, 0, 0);
    1052410527    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1052510528    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    1061510618FNIEMOP_DEF_2(iemOpHlpFpu_stN_st0, uint8_t, bRm, PFNIEMAIMPLFPUR80, pfnAImpl)
    1061610619{
    10617     IEM_MC_BEGIN(3, 1, 0);
     10620    IEM_MC_BEGIN(3, 1, 0, 0);
    1061810621    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1061910622    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    1069510698FNIEMOP_DEF_2(iemOpHlpFpu_ST0_m64r, uint8_t, bRm, PFNIEMAIMPLFPUR64, pfnImpl)
    1069610699{
    10697     IEM_MC_BEGIN(3, 3, 0);
     10700    IEM_MC_BEGIN(3, 3, 0, 0);
    1069810701    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    1069910702    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    1074310746    IEMOP_MNEMONIC(fcom_st0_m64r, "fcom st0,m64r");
    1074410747
    10745     IEM_MC_BEGIN(3, 3, 0);
     10748    IEM_MC_BEGIN(3, 3, 0, 0);
    1074610749    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    1074710750    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1077610779    IEMOP_MNEMONIC(fcomp_st0_m64r, "fcomp st0,m64r");
    1077710780
    10778     IEM_MC_BEGIN(3, 3, 0);
     10781    IEM_MC_BEGIN(3, 3, 0, 0);
    1077910782    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    1078010783    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1088210885    IEMOP_MNEMONIC(fld_m64r, "fld m64r");
    1088310886
    10884     IEM_MC_BEGIN(2, 3, 0);
     10887    IEM_MC_BEGIN(2, 3, 0, 0);
    1088510888    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
    1088610889    IEM_MC_LOCAL(IEMFPURESULT,          FpuRes);
     
    1091210915{
    1091310916    IEMOP_MNEMONIC(fisttp_m64i, "fisttp m64i");
    10914     IEM_MC_BEGIN(3, 2, 0);
     10917    IEM_MC_BEGIN(3, 2, 0, 0);
    1091510918    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1091610919    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1094710950{
    1094810951    IEMOP_MNEMONIC(fst_m64r, "fst m64r");
    10949     IEM_MC_BEGIN(3, 2, 0);
     10952    IEM_MC_BEGIN(3, 2, 0, 0);
    1095010953    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1095110954    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1098410987{
    1098510988    IEMOP_MNEMONIC(fstp_m64r, "fstp m64r");
    10986     IEM_MC_BEGIN(3, 2, 0);
     10989    IEM_MC_BEGIN(3, 2, 0, 0);
    1098710990    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1098810991    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1101911022{
    1102011023    IEMOP_MNEMONIC(frstor, "frstor m94/108byte");
    11021     IEM_MC_BEGIN(3, 0, 0);
     11024    IEM_MC_BEGIN(3, 0, 0, 0);
    1102211025    IEM_MC_ARG_CONST(IEMMODE,           enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize,  0);
    1102311026    IEM_MC_ARG(uint8_t,                 iEffSeg,                                    1);
     
    1103711040{
    1103811041    IEMOP_MNEMONIC(fnsave, "fnsave m94/108byte");
    11039     IEM_MC_BEGIN(3, 0, 0);
     11042    IEM_MC_BEGIN(3, 0, 0, 0);
    1104011043    IEM_MC_ARG_CONST(IEMMODE,           enmEffOpSize, /*=*/ pVCpu->iem.s.enmEffOpSize,  0);
    1104111044    IEM_MC_ARG(uint8_t,                 iEffSeg,                                    1);
     
    1105511058    IEMOP_MNEMONIC(fnstsw_m16, "fnstsw m16");
    1105611059
    11057     IEM_MC_BEGIN(0, 2, 0);
     11060    IEM_MC_BEGIN(0, 2, 0, 0);
    1105811061    IEM_MC_LOCAL(uint16_t, u16Tmp);
    1105911062    IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
     
    1108111084    /* Note! C0, C1, C2 and C3 are documented as undefined, we leave the
    1108211085             unmodified. */
    11083     IEM_MC_BEGIN(0, 0, 0);
     11086    IEM_MC_BEGIN(0, 0, 0, 0);
    1108411087    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1108511088
     
    1110011103{
    1110111104    IEMOP_MNEMONIC(fst_st0_stN, "fst st0,stN");
    11102     IEM_MC_BEGIN(0, 2, 0);
     11105    IEM_MC_BEGIN(0, 2, 0, 0);
    1110311106    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1110411107    IEM_MC_LOCAL(PCRTFLOAT80U,          pr80Value);
     
    1124111244FNIEMOP_DEF_2(iemOpHlpFpu_st0_m16i, uint8_t, bRm, PFNIEMAIMPLFPUI16, pfnAImpl)
    1124211245{
    11243     IEM_MC_BEGIN(3, 3, 0);
     11246    IEM_MC_BEGIN(3, 3, 0, 0);
    1124411247    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1124511248    IEM_MC_LOCAL(IEMFPURESULT,              FpuRes);
     
    1129011293    IEMOP_MNEMONIC(ficom_st0_m16i, "ficom st0,m16i");
    1129111294
    11292     IEM_MC_BEGIN(3, 3, 0);
     11295    IEM_MC_BEGIN(3, 3, 0, 0);
    1129311296    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1129411297    IEM_MC_LOCAL(uint16_t,                  u16Fsw);
     
    1132311326    IEMOP_MNEMONIC(ficomp_st0_m16i, "ficomp st0,m16i");
    1132411327
    11325     IEM_MC_BEGIN(3, 3, 0);
     11328    IEM_MC_BEGIN(3, 3, 0, 0);
    1132611329    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1132711330    IEM_MC_LOCAL(uint16_t,                  u16Fsw);
     
    1143011433{
    1143111434    IEMOP_MNEMONIC(ffreep_stN, "ffreep stN");
    11432     IEM_MC_BEGIN(0, 0, 0);
     11435    IEM_MC_BEGIN(0, 0, 0, 0);
    1143311436    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1143411437
     
    1145011453{
    1145111454    IEMOP_MNEMONIC(fnstsw_ax, "fnstsw ax");
    11452     IEM_MC_BEGIN(0, 1, 0);
     11455    IEM_MC_BEGIN(0, 1, 0, 0);
    1145311456    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1145411457    IEM_MC_LOCAL(uint16_t, u16Tmp);
     
    1148711490    IEMOP_MNEMONIC(fild_m16i, "fild m16i");
    1148811491
    11489     IEM_MC_BEGIN(2, 3, 0);
     11492    IEM_MC_BEGIN(2, 3, 0, 0);
    1149011493    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1149111494    IEM_MC_LOCAL(IEMFPURESULT,              FpuRes);
     
    1151811521{
    1151911522    IEMOP_MNEMONIC(fisttp_m16i, "fisttp m16i");
    11520     IEM_MC_BEGIN(3, 2, 0);
     11523    IEM_MC_BEGIN(3, 2, 0, 0);
    1152111524    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1152211525    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1155311556{
    1155411557    IEMOP_MNEMONIC(fist_m16i, "fist m16i");
    11555     IEM_MC_BEGIN(3, 2, 0);
     11558    IEM_MC_BEGIN(3, 2, 0, 0);
    1155611559    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1155711560    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1158811591{
    1158911592    IEMOP_MNEMONIC(fistp_m16i, "fistp m16i");
    11590     IEM_MC_BEGIN(3, 2, 0);
     11593    IEM_MC_BEGIN(3, 2, 0, 0);
    1159111594    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1159211595    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1162411627    IEMOP_MNEMONIC(fbld_m80d, "fbld m80d");
    1162511628
    11626     IEM_MC_BEGIN(2, 3, 0);
     11629    IEM_MC_BEGIN(2, 3, 0, 0);
    1162711630    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1162811631    IEM_MC_LOCAL(IEMFPURESULT,              FpuRes);
     
    1165611659    IEMOP_MNEMONIC(fild_m64i, "fild m64i");
    1165711660
    11658     IEM_MC_BEGIN(2, 3, 0);
     11661    IEM_MC_BEGIN(2, 3, 0, 0);
    1165911662    IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    1166011663    IEM_MC_LOCAL(IEMFPURESULT,              FpuRes);
     
    1168711690{
    1168811691    IEMOP_MNEMONIC(fbstp_m80d, "fbstp m80d");
    11689     IEM_MC_BEGIN(3, 2, 0);
     11692    IEM_MC_BEGIN(3, 2, 0, 0);
    1169011693    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1169111694    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1172211725{
    1172311726    IEMOP_MNEMONIC(fistp_m64i, "fistp m64i");
    11724     IEM_MC_BEGIN(3, 2, 0);
     11727    IEM_MC_BEGIN(3, 2, 0, 0);
    1172511728    IEM_MC_LOCAL(RTGCPTR,               GCPtrEffDst);
    1172611729    IEM_MC_LOCAL(uint16_t,              u16Fsw);
     
    1180711810    {
    1180811811        case IEMMODE_16BIT:
    11809             IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT);
     11812            IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0);
    1181011813            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1181111814            IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1);
     
    1181911822
    1182011823        case IEMMODE_32BIT:
    11821             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     11824            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    1182211825            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1182311826            IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1);
     
    1183111834
    1183211835        case IEMMODE_64BIT:
    11833             IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     11836            IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    1183411837            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1183511838            IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1);
     
    1185911862    {
    1186011863        case IEMMODE_16BIT:
    11861             IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT);
     11864            IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0);
    1186211865            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1186311866            IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1);
     
    1187111874
    1187211875        case IEMMODE_32BIT:
    11873             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     11876            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    1187411877            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1187511878            IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1);
     
    1188311886
    1188411887        case IEMMODE_64BIT:
    11885             IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     11888            IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    1188611889            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1188711890            IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1);
     
    1192111924        {
    1192211925            case IEMMODE_16BIT:
    11923                 IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT);
     11926                IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0);
    1192411927                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1192511928                IEM_MC_STORE_GREG_U16_CONST(X86_GREG_xCX, 0);
     
    1192911932
    1193011933            case IEMMODE_32BIT:
    11931                 IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     11934                IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    1193211935                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1193311936                IEM_MC_STORE_GREG_U32_CONST(X86_GREG_xCX, 0);
     
    1193711940
    1193811941            case IEMMODE_64BIT:
    11939                 IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     11942                IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    1194011943                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1194111944                IEM_MC_STORE_GREG_U64_CONST(X86_GREG_xCX, 0);
     
    1195111954    {
    1195211955        case IEMMODE_16BIT:
    11953             IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT);
     11956            IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0);
    1195411957            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1195511958            IEM_MC_SUB_GREG_U16(X86_GREG_xCX, 1);
     
    1196311966
    1196411967        case IEMMODE_32BIT:
    11965             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     11968            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    1196611969            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1196711970            IEM_MC_SUB_GREG_U32(X86_GREG_xCX, 1);
     
    1197511978
    1197611979        case IEMMODE_64BIT:
    11977             IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     11980            IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    1197811981            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1197911982            IEM_MC_SUB_GREG_U64(X86_GREG_xCX, 1);
     
    1200312006    {
    1200412007        case IEMMODE_16BIT:
    12005             IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT);
     12008            IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_64BIT, 0);
    1200612009            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1200712010            IEM_MC_IF_CX_IS_NZ() {
     
    1201412017
    1201512018        case IEMMODE_32BIT:
    12016             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     12019            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    1201712020            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1201812021            IEM_MC_IF_ECX_IS_NZ() {
     
    1202512028
    1202612029        case IEMMODE_64BIT:
    12027             IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT);
     12030            IEM_MC_BEGIN(0, 0, IEM_MC_F_64BIT, 0);
    1202812031            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1202912032            IEM_MC_IF_RCX_IS_NZ() {
     
    1212812131    {
    1212912132        case IEMMODE_16BIT:
    12130             IEM_MC_BEGIN(0, 0, 0);
     12133            IEM_MC_BEGIN(0, 0, 0, 0);
    1213112134            int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    1213212135            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    1213712140        case IEMMODE_64BIT:
    1213812141        case IEMMODE_32BIT:
    12139             IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     12142            IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    1214012143            int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    1214112144            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    1218012183    IEMOP_HLP_DEFAULT_64BIT_OP_SIZE_AND_INTEL_IGNORES_OP_SIZE_PREFIX();
    1218112184
    12182     IEM_MC_BEGIN(0, 0, 0);
     12185    IEM_MC_BEGIN(0, 0, 0, 0);
    1218312186    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1218412187    IEM_MC_REL_JMP_S8_AND_FINISH(i8Imm);
     
    1231512318{
    1231612319    IEMOP_MNEMONIC(cmc, "cmc");
    12317     IEM_MC_BEGIN(0, 0, 0);
     12320    IEM_MC_BEGIN(0, 0, 0, 0);
    1231812321    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1231912322    IEM_MC_FLIP_EFL_BIT(X86_EFL_CF);
     
    1233012333    { \
    1233112334        /* register access */ \
    12332         IEM_MC_BEGIN(2, 0, 0); \
     12335        IEM_MC_BEGIN(2, 0, 0, 0); \
    1233312336        IEMOP_HLP_DONE_DECODING(); \
    1233412337        IEM_MC_ARG(uint8_t *,   pu8Dst, 0); \
     
    1234512348        if (!(pVCpu->iem.s.fPrefixes & IEM_OP_PRF_LOCK)) \
    1234612349        { \
    12347             IEM_MC_BEGIN(2, 2, 0); \
     12350            IEM_MC_BEGIN(2, 2, 0, 0); \
    1234812351            IEM_MC_ARG(uint8_t *,       pu8Dst,          0); \
    1234912352            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1236412367        else \
    1236512368        { \
    12366             IEM_MC_BEGIN(2, 2, 0); \
     12369            IEM_MC_BEGIN(2, 2, 0, 0); \
    1236712370            IEM_MC_ARG(uint8_t *,       pu8Dst,          0); \
    1236812371            IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1239712400        { \
    1239812401            case IEMMODE_16BIT: \
    12399                 IEM_MC_BEGIN(2, 0, 0); \
     12402                IEM_MC_BEGIN(2, 0, 0, 0); \
    1240012403                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1240112404                IEM_MC_ARG(uint16_t *,  pu16Dst, 0); \
     
    1240912412            \
    1241012413            case IEMMODE_32BIT: \
    12411                 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386); \
     12414                IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0); \
    1241212415                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1241312416                IEM_MC_ARG(uint32_t *,  pu32Dst, 0); \
     
    1242212425            \
    1242312426            case IEMMODE_64BIT: \
    12424                 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT); \
     12427                IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0); \
    1242512428                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1242612429                IEM_MC_ARG(uint64_t *,  pu64Dst, 0); \
     
    1244612449            { \
    1244712450                case IEMMODE_16BIT: \
    12448                     IEM_MC_BEGIN(2, 3, 0); \
     12451                    IEM_MC_BEGIN(2, 3, 0, 0); \
    1244912452                    IEM_MC_ARG(uint16_t *,      pu16Dst,         0); \
    1245012453                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1246512468                \
    1246612469                case IEMMODE_32BIT: \
    12467                     IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386); \
     12470                    IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \
    1246812471                    IEM_MC_ARG(uint32_t *,      pu32Dst,         0); \
    1246912472                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1248412487                \
    1248512488                case IEMMODE_64BIT: \
    12486                     IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT); \
     12489                    IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \
    1248712490                    IEM_MC_ARG(uint64_t *,      pu64Dst,         0); \
    1248812491                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1251312516            { \
    1251412517                case IEMMODE_16BIT: \
    12515                     IEM_MC_BEGIN(2, 3, 0); \
     12518                    IEM_MC_BEGIN(2, 3, 0, 0); \
    1251612519                    IEM_MC_ARG(uint16_t *,      pu16Dst,         0); \
    1251712520                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1253212535                \
    1253312536                case IEMMODE_32BIT: \
    12534                     IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386); \
     12537                    IEM_MC_BEGIN(2, 3, IEM_MC_F_MIN_386, 0); \
    1253512538                    IEM_MC_ARG(uint32_t *,      pu32Dst,         0); \
    1253612539                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1255112554                \
    1255212555                case IEMMODE_64BIT: \
    12553                     IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT); \
     12556                    IEM_MC_BEGIN(2, 3, IEM_MC_F_64BIT, 0); \
    1255412557                    IEM_MC_ARG(uint64_t *,      pu64Dst,         0); \
    1255512558                    IEM_MC_ARG_LOCAL_EFLAGS(    pEFlags, EFlags, 1); \
     
    1259012593        /* register access */
    1259112594        uint8_t u8Imm; IEM_OPCODE_GET_NEXT_U8(&u8Imm);
    12592         IEM_MC_BEGIN(3, 0, 0);
     12595        IEM_MC_BEGIN(3, 0, 0, 0);
    1259312596        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1259412597        IEM_MC_ARG(uint8_t *,       pu8Dst,             0);
     
    1260412607    {
    1260512608        /* memory access. */
    12606         IEM_MC_BEGIN(3, 3, 0);
     12609        IEM_MC_BEGIN(3, 3, 0, 0);
    1260712610        IEM_MC_ARG(uint8_t const *, pu8Dst,             0);
    1260812611        IEM_MC_ARG(uint8_t,         u8Src,              1);
     
    1263312636    {
    1263412637        /* register access */
    12635         IEM_MC_BEGIN(3, 1, 0);
     12638        IEM_MC_BEGIN(3, 1, 0, 0);
    1263612639        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1263712640        IEM_MC_ARG(uint16_t *,      pu16AX,     0);
     
    1265512658    {
    1265612659        /* memory access. */
    12657         IEM_MC_BEGIN(3, 2, 0);
     12660        IEM_MC_BEGIN(3, 2, 0, 0);
    1265812661        IEM_MC_ARG(uint16_t *,      pu16AX,     0);
    1265912662        IEM_MC_ARG(uint8_t,         u8Value,    1);
     
    1269012693        {
    1269112694            case IEMMODE_16BIT:
    12692                 IEM_MC_BEGIN(4, 1, 0);
     12695                IEM_MC_BEGIN(4, 1, 0, 0);
    1269312696                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1269412697                IEM_MC_ARG(uint16_t *,      pu16AX,     0);
     
    1271312716
    1271412717            case IEMMODE_32BIT:
    12715                 IEM_MC_BEGIN(4, 1, IEM_MC_F_MIN_386);
     12718                IEM_MC_BEGIN(4, 1, IEM_MC_F_MIN_386, 0);
    1271612719                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1271712720                IEM_MC_ARG(uint32_t *,      pu32AX,     0);
     
    1273812741
    1273912742            case IEMMODE_64BIT:
    12740                 IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT);
     12743                IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0);
    1274112744                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1274212745                IEM_MC_ARG(uint64_t *,      pu64AX,     0);
     
    1276912772        {
    1277012773            case IEMMODE_16BIT:
    12771                 IEM_MC_BEGIN(4, 2, 0);
     12774                IEM_MC_BEGIN(4, 2, 0, 0);
    1277212775                IEM_MC_ARG(uint16_t *,      pu16AX,     0);
    1277312776                IEM_MC_ARG(uint16_t *,      pu16DX,     1);
     
    1279412797
    1279512798            case IEMMODE_32BIT:
    12796                 IEM_MC_BEGIN(4, 2, IEM_MC_F_MIN_386);
     12799                IEM_MC_BEGIN(4, 2, IEM_MC_F_MIN_386, 0);
    1279712800                IEM_MC_ARG(uint32_t *,      pu32AX,     0);
    1279812801                IEM_MC_ARG(uint32_t *,      pu32DX,     1);
     
    1282112824
    1282212825            case IEMMODE_64BIT:
    12823                 IEM_MC_BEGIN(4, 2, IEM_MC_F_64BIT);
     12826                IEM_MC_BEGIN(4, 2, IEM_MC_F_64BIT, 0);
    1282412827                IEM_MC_ARG(uint64_t *,      pu64AX,     0);
    1282512828                IEM_MC_ARG(uint64_t *,      pu64DX,     1);
     
    1291812921        {
    1291912922            case IEMMODE_16BIT:
    12920                 IEM_MC_BEGIN(3, 0, 0);
     12923                IEM_MC_BEGIN(3, 0, 0, 0);
    1292112924                uint16_t u16Imm; IEM_OPCODE_GET_NEXT_U16(&u16Imm);
    1292212925                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    1293212935
    1293312936            case IEMMODE_32BIT:
    12934                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     12937                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    1293512938                uint32_t u32Imm; IEM_OPCODE_GET_NEXT_U32(&u32Imm);
    1293612939                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    1294712950
    1294812951            case IEMMODE_64BIT:
    12949                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     12952                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    1295012953                uint64_t u64Imm; IEM_OPCODE_GET_NEXT_S32_SX_U64(&u64Imm);
    1295112954                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    1296912972        {
    1297012973            case IEMMODE_16BIT:
    12971                 IEM_MC_BEGIN(3, 3, 0);
     12974                IEM_MC_BEGIN(3, 3, 0, 0);
    1297212975                IEM_MC_ARG(uint16_t const *, pu16Dst,           0);
    1297312976                IEM_MC_ARG(uint16_t,         u16Src,            1);
     
    1299112994
    1299212995            case IEMMODE_32BIT:
    12993                 IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386);
     12996                IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0);
    1299412997                IEM_MC_ARG(uint32_t const *, pu32Dst,           0);
    1299512998                IEM_MC_ARG(uint32_t,         u32Src,            1);
     
    1301313016
    1301413017            case IEMMODE_64BIT:
    13015                 IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT);
     13018                IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0);
    1301613019                IEM_MC_ARG(uint64_t const *, pu64Dst,           0);
    1301713020                IEM_MC_ARG(uint64_t,         u64Src,            1);
     
    1309713100{
    1309813101    IEMOP_MNEMONIC(clc, "clc");
    13099     IEM_MC_BEGIN(0, 0, 0);
     13102    IEM_MC_BEGIN(0, 0, 0, 0);
    1310013103    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1310113104    IEM_MC_CLEAR_EFL_BIT(X86_EFL_CF);
     
    1311113114{
    1311213115    IEMOP_MNEMONIC(stc, "stc");
    13113     IEM_MC_BEGIN(0, 0, 0);
     13116    IEM_MC_BEGIN(0, 0, 0, 0);
    1311413117    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1311513118    IEM_MC_SET_EFL_BIT(X86_EFL_CF);
     
    1313413137    IEMOP_MNEMONIC(sti, "sti");
    1313513138    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    13136     IEM_MC_DEFER_TO_CIMPL_0_RET(IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_CHECK_IRQ_AFTER | IEM_CIMPL_F_VMEXIT, iemCImpl_sti);
     13139    IEM_MC_DEFER_TO_CIMPL_0_RET(  IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_CHECK_IRQ_AFTER
     13140                                | IEM_CIMPL_F_VMEXIT | IEM_CIMPL_F_INHIBIT_SHADOW, iemCImpl_sti);
    1313713141}
    1313813142
     
    1314413148{
    1314513149    IEMOP_MNEMONIC(cld, "cld");
    13146     IEM_MC_BEGIN(0, 0, 0);
     13150    IEM_MC_BEGIN(0, 0, 0, 0);
    1314713151    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1314813152    IEM_MC_CLEAR_EFL_BIT(X86_EFL_DF);
     
    1315813162{
    1315913163    IEMOP_MNEMONIC(std, "std");
    13160     IEM_MC_BEGIN(0, 0, 0);
     13164    IEM_MC_BEGIN(0, 0, 0, 0);
    1316113165    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1316213166    IEM_MC_SET_EFL_BIT(X86_EFL_DF);
     
    1323813242        {
    1323913243            case IEMMODE_16BIT:
    13240                 IEM_MC_BEGIN(1, 0, 0);
     13244                IEM_MC_BEGIN(1, 0, 0, 0);
    1324113245                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1324213246                IEM_MC_ARG(uint16_t, u16Target, 0);
     
    1324713251
    1324813252            case IEMMODE_32BIT:
    13249                 IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_386);
     13253                IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_386, 0);
    1325013254                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1325113255                IEM_MC_ARG(uint32_t, u32Target, 0);
     
    1325613260
    1325713261            case IEMMODE_64BIT:
    13258                 IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT);
     13262                IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0);
    1325913263                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1326013264                IEM_MC_ARG(uint64_t, u64Target, 0);
     
    1327313277        {
    1327413278            case IEMMODE_16BIT:
    13275                 IEM_MC_BEGIN(1, 1, 0);
     13279                IEM_MC_BEGIN(1, 1, 0, 0);
    1327613280                IEM_MC_ARG(uint16_t,  u16Target, 0);
    1327713281                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    1328413288
    1328513289            case IEMMODE_32BIT:
    13286                 IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386);
     13290                IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386, 0);
    1328713291                IEM_MC_ARG(uint32_t,  u32Target, 0);
    1328813292                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    1329513299
    1329613300            case IEMMODE_64BIT:
    13297                 IEM_MC_BEGIN(1, 1, IEM_MC_F_64BIT);
     13301                IEM_MC_BEGIN(1, 1, IEM_MC_F_64BIT, 0);
    1329813302                IEM_MC_ARG(uint64_t,  u64Target, 0);
    1329913303                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    1332813332    { \
    1332913333        case IEMMODE_16BIT: \
    13330             IEM_MC_BEGIN(3, 1, 0); \
     13334            IEM_MC_BEGIN(3, 1, 0, 0); \
    1333113335            IEM_MC_ARG(uint16_t,        u16Sel,                         0); \
    1333213336            IEM_MC_ARG(uint16_t,        offSeg,                         1); \
     
    1334413348        \
    1334513349        case IEMMODE_32BIT: \
    13346             IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386); \
     13350            IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \
    1334713351            IEM_MC_ARG(uint16_t,        u16Sel,                         0); \
    1334813352            IEM_MC_ARG(uint32_t,        offSeg,                         1); \
     
    1336113365        case IEMMODE_64BIT: \
    1336213366            Assert(!IEM_IS_GUEST_CPU_AMD(pVCpu)); \
    13363             IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \
     13367            IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
    1336413368            IEM_MC_ARG(uint16_t,        u16Sel,                         0); \
    1336513369            IEM_MC_ARG(uint64_t,        offSeg,                         1); \
     
    1340513409        {
    1340613410            case IEMMODE_16BIT:
    13407                 IEM_MC_BEGIN(0, 1, 0);
     13411                IEM_MC_BEGIN(0, 1, 0, 0);
    1340813412                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1340913413                IEM_MC_LOCAL(uint16_t, u16Target);
     
    1341413418
    1341513419            case IEMMODE_32BIT:
    13416                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     13420                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1341713421                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1341813422                IEM_MC_LOCAL(uint32_t, u32Target);
     
    1342313427
    1342413428            case IEMMODE_64BIT:
    13425                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     13429                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    1342613430                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1342713431                IEM_MC_LOCAL(uint64_t, u64Target);
     
    1344013444        {
    1344113445            case IEMMODE_16BIT:
    13442                 IEM_MC_BEGIN(0, 2, 0);
     13446                IEM_MC_BEGIN(0, 2, 0, 0);
    1344313447                IEM_MC_LOCAL(uint16_t, u16Target);
    1344413448                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    1345113455
    1345213456            case IEMMODE_32BIT:
    13453                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     13457                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1345413458                IEM_MC_LOCAL(uint32_t, u32Target);
    1345513459                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    1346213466
    1346313467            case IEMMODE_64BIT:
    13464                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     13468                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1346513469                IEM_MC_LOCAL(uint64_t, u64Target);
    1346613470                IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    1350613510    {
    1350713511        case IEMMODE_16BIT:
    13508             IEM_MC_BEGIN(0, 2, 0);
     13512            IEM_MC_BEGIN(0, 2, 0, 0);
    1350913513            IEM_MC_LOCAL(uint16_t,  u16Src);
    1351013514            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    1351813522
    1351913523        case IEMMODE_32BIT:
    13520             IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT);
     13524            IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386 | IEM_MC_F_NOT_64BIT, 0);
    1352113525            IEM_MC_LOCAL(uint32_t,  u32Src);
    1352213526            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    1353013534
    1353113535        case IEMMODE_64BIT:
    13532             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     13536            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1353313537            IEM_MC_LOCAL(uint64_t,  u64Src);
    1353413538            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py

    r101370 r101387  
    13711371    def __init__(self, oInstr): # type: (InstructionTest, Instruction)
    13721372        self.oInstr         = oInstr    # type: InstructionTest
    1373         self.aoInputs       = []        # type: list(TestInOut)
    1374         self.aoOutputs      = []        # type: list(TestInOut)
    1375         self.aoSelectors    = []        # type: list(TestSelector)
     1373        self.aoInputs       = []        # type: List[TestInOut]
     1374        self.aoOutputs      = []        # type: List[TestInOut]
     1375        self.aoSelectors    = []        # type: List[TestSelector]
    13761376
    13771377    def toString(self, fRepr = False):
     
    14331433        self.sMnemonic      = None;
    14341434        self.sBrief         = None;
    1435         self.asDescSections = []        # type: list(str)
    1436         self.aoMaps         = []        # type: list(InstructionMap)
    1437         self.aoOperands     = []        # type: list(Operand)
     1435        self.asDescSections = []        # type: List[str]
     1436        self.aoMaps         = []        # type: List[InstructionMap]
     1437        self.aoOperands     = []        # type: List[Operand]
    14381438        self.sPrefix        = None;     ##< Single prefix: None, 'none', 0x66, 0xf3, 0xf2
    14391439        self.sOpcode        = None      # type: str
     
    14491449        self.asCpuIds       = [];       ##< The CPUID feature bit names for this instruction. If multiple, assume AND.
    14501450        self.asReqFeatures  = [];       ##< Which features are required to be enabled to run this instruction.
    1451         self.aoTests        = []        # type: list(InstructionTest)
     1451        self.aoTests        = []        # type: List[InstructionTest]
    14521452        self.sMinCpu        = None;     ##< Indicates the minimum CPU required for the instruction. Not set when oCpuExpr is.
    14531453        self.oCpuExpr       = None;     ##< Some CPU restriction expression...
     
    16641664
    16651665## All the instructions.
    1666 g_aoAllInstructions = []            # type: list(Instruction)
     1666g_aoAllInstructions = []            # type: List[Instruction]
    16671667
    16681668## All the instructions indexed by statistics name (opstat).
    1669 g_dAllInstructionsByStat = {}       # type: dict(Instruction)
     1669g_dAllInstructionsByStat = {}       # type: Dict[Instruction]
    16701670
    16711671## All the instructions indexed by function name (opfunction).
    1672 g_dAllInstructionsByFunction = {}   # type: dict(list(Instruction))
     1672g_dAllInstructionsByFunction = {}   # type: Dict[List[Instruction]]
    16731673
    16741674## Instructions tagged by oponlytest
    1675 g_aoOnlyTestInstructions = []       # type: list(Instruction)
     1675g_aoOnlyTestInstructions = []       # type: List[Instruction]
    16761676
    16771677## Instruction maps.
     
    17591759        self.iBeginLine   = iBeginLine;             ##< The start line.
    17601760        self.iEndLine     = -1;                     ##< The line the function (probably) ends on.
    1761         self.asLines      = [] # type: list(str)    ##< The raw lines the function is made up of.
     1761        self.asLines      = [] # type: List[str]    ##< The raw lines the function is made up of.
    17621762
    17631763    def complete(self, iEndLine, asLines):
     
    19491949    'IEM_MC_F_64BIT':               ('IEM_MC_F_NOT_286_OR_OLDER',),
    19501950    'IEM_MC_F_NOT_64BIT':           (),
     1951};
     1952## IEM_MC_F_XXX values.
     1953g_kdCImplFlags = {
     1954    'IEM_CIMPL_F_BRANCH_DIRECT':        (),
     1955    'IEM_CIMPL_F_BRANCH_INDIRECT':      (),
     1956    'IEM_CIMPL_F_BRANCH_RELATIVE':      (),
     1957    'IEM_CIMPL_F_BRANCH_CONDITIONAL':   (),
     1958    'IEM_CIMPL_F_BRANCH_FAR':           (),
     1959    'IEM_CIMPL_F_BRANCH_ANY':           ('IEM_CIMPL_F_BRANCH_DIRECT', 'IEM_CIMPL_F_BRANCH_INDIRECT',
     1960                                         'IEM_CIMPL_F_BRANCH_RELATIVE',),
     1961    'IEM_CIMPL_F_MODE':                 (),
     1962    'IEM_CIMPL_F_RFLAGS':               (),
     1963    'IEM_CIMPL_F_INHIBIT_SHADOW':       (),
     1964    'IEM_CIMPL_F_STATUS_FLAGS':         (),
     1965    'IEM_CIMPL_F_CHECK_IRQ_AFTER':      (),
     1966    'IEM_CIMPL_F_CHECK_IRQ_BEFORE':     (),
     1967    'IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER': ('IEM_CIMPL_F_CHECK_IRQ_BEFORE', 'IEM_CIMPL_F_CHECK_IRQ_AFTER',),
     1968    'IEM_CIMPL_F_VMEXIT':               (),
     1969    'IEM_CIMPL_F_FPU':                  (),
     1970    'IEM_CIMPL_F_REP':                  (),
     1971    'IEM_CIMPL_F_IO':                   (),
     1972    'IEM_CIMPL_F_END_TB':               (),
     1973    'IEM_CIMPL_F_XCPT':                 ('IEM_CIMPL_F_BRANCH_INDIRECT', 'IEM_CIMPL_F_BRANCH_FAR',
     1974                                         'IEM_CIMPL_F_MODE', 'IEM_CIMPL_F_RFLAGS', 'IEM_CIMPL_F_VMEXIT', ),
    19511975};
    19521976class McBlock(object):
     
    19762000        self.cchIndent    = cchIndent if cchIndent else offBeginLine;
    19772001        ##< The raw lines the block is made up of.
    1978         self.asLines      = []              # type: list(str)
     2002        self.asLines      = []              # type: List[str]
    19792003        ## IEM_MC_BEGIN: Argument count.
    19802004        self.cArgs        = -1;
     
    19822006        self.cLocals      = -1;
    19832007        ## IEM_MC_BEGIN: IEM_MC_F_XXX dictionary
    1984         self.dMcFlags     = {}              # type: dict(str)
     2008        self.dsMcFlags    = {}              # type: Dict[str, bool]
     2009        ## IEM_MC_[DEFER_TO|CALL]_CIMPL_XXX: IEM_CIMPL_F_XXX dictionary
     2010        self.dsCImplFlags = {}              # type: Dict[str, bool]
    19852011        ## Decoded statements in the block.
    1986         self.aoStmts      = []              # type: list(McStmt)
     2012        self.aoStmts      = []              # type: List[McStmt]
    19872013
    19882014    def complete(self, iEndLine, offEndLine, offAfterEnd, asLines):
     
    20292055    def parseMcBegin(oSelf, sName, asParams):
    20302056        """ IEM_MC_BEGIN """
    2031         oSelf.checkStmtParamCount(sName, asParams, 3);
    2032         if oSelf.cArgs != -1  or  oSelf.cLocals != -1  or  oSelf.dMcFlags:
     2057        oSelf.checkStmtParamCount(sName, asParams, 4);
     2058        if oSelf.cArgs != -1  or  oSelf.cLocals != -1  or  oSelf.dsMcFlags:
    20332059            oSelf.raiseStmtError(sName, 'Used more than once!');
    20342060        oSelf.cArgs   = int(asParams[0]);
    20352061        oSelf.cLocals = int(asParams[1]);
     2062
    20362063        if asParams[2] != '0':
    20372064            for sFlag in asParams[2].split('|'):
    20382065                sFlag = sFlag.strip();
    2039                 if sFlag in g_kdMcFlags:
    2040                     oSelf.dMcFlags[sFlag] = True;
    2041                     for sFlag2 in g_kdMcFlags[sFlag]:
    2042                         oSelf.dMcFlags[sFlag2] = True;
    2043                 else:
     2066                if sFlag not in g_kdMcFlags:
    20442067                    oSelf.raiseStmtError(sName, 'Unknown flag: %s' % (sFlag, ));
     2068                oSelf.dsMcFlags[sFlag] = True;
     2069                for sFlag2 in g_kdMcFlags[sFlag]:
     2070                    oSelf.dsMcFlags[sFlag2] = True;
     2071
     2072        if asParams[3] != '0':
     2073            oSelf.parseCImplFlags(sName, asParams[3]);
    20452074
    20462075        return McBlock.parseMcGeneric(oSelf, sName, asParams);
     
    21292158        return McStmtCall(sName, asParams, 0);
    21302159
     2160    def parseCImplFlags(self, sName, sFlags):
     2161        """
     2162        Helper for parseMcCallCImpl and parseMcDeferToCImpl to validate and
     2163        merge a bunch of IEM_CIMPL_F_XXX value into dsCImplFlags.
     2164        """
     2165        if sFlags != '0':
     2166            sFlags = self.stripComments(sFlags);
     2167            #print('debug: %s: %s' % (self.oFunction.sName,' | '.join(''.join(sFlags.split()).split('|')),));
     2168            for sFlag in sFlags.split('|'):
     2169                sFlag = sFlag.strip();
     2170                #print('debug:   %s' % sFlag)
     2171                if sFlag not in g_kdCImplFlags:
     2172                    self.raiseStmtError(sName, 'Unknown flag: %s' % (sFlag, ));
     2173                self.dsCImplFlags[sFlag] = True;
     2174                for sFlag2 in g_kdCImplFlags[sFlag]:
     2175                    self.dsCImplFlags[sFlag2] = True;
     2176        return None;
     2177
    21312178    @staticmethod
    21322179    def parseMcCallCImpl(oSelf, sName, asParams):
     
    21342181        cArgs = int(sName[-1]);
    21352182        oSelf.checkStmtParamCount(sName, asParams, 2 + cArgs);
     2183        oSelf.parseCImplFlags(sName, asParams[0]);
     2184        return McStmtCall(sName, asParams, 1);
     2185
     2186    @staticmethod
     2187    def parseMcDeferToCImpl(oSelf, sName, asParams):
     2188        """ IEM_MC_DEFER_TO_CIMPL_[0|1|2|3]_RET """
     2189        #print('debug: %s, %s,...' % (sName, asParams[0],));
     2190        cArgs = int(sName[-5]);
     2191        oSelf.checkStmtParamCount(sName, asParams, 2 + cArgs);
     2192        oSelf.parseCImplFlags(sName, asParams[0]);
    21362193        return McStmtCall(sName, asParams, 1);
    21372194
     
    26012658## IEM_MC_XXX -> parser + info dictionary.
    26022659#
    2603 # The info is currently a single boolean entry indicating whether the
    2604 # statement modifies state and must not be used before IEMOP_HL_DONE_*.
     2660# The info columns:
     2661#   - col 0: boolean entry indicating whether the statement modifies state and
     2662#            must not be used before IEMOP_HL_DONE_*.
     2663#   - col 1: boolean entry indicating native recompiler support.
    26052664#
    26062665# The raw table was generated via the following command
     
    26082667#       | sort | uniq | gawk "{printf """    %%-60s (%%s,        True)\n""", $1, $2}"
    26092668g_dMcStmtParsers = {
    2610     'IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE':                     (McBlock.parseMcGeneric,           False),
    2611     'IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ':                       (McBlock.parseMcGeneric,           False),
    2612     'IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE':                     (McBlock.parseMcGeneric,           False),
    2613     'IEM_MC_ACTUALIZE_FPU_STATE_FOR_READ':                       (McBlock.parseMcGeneric,           False),
    2614     'IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE':                     (McBlock.parseMcGeneric,           False),
    2615     'IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ':                       (McBlock.parseMcGeneric,           False),
    2616     'IEM_MC_ADD_GREG_U16':                                       (McBlock.parseMcGeneric,           True),
    2617     'IEM_MC_ADD_GREG_U16_TO_LOCAL':                              (McBlock.parseMcGeneric,           False),
    2618     'IEM_MC_ADD_GREG_U32':                                       (McBlock.parseMcGeneric,           True),
    2619     'IEM_MC_ADD_GREG_U32_TO_LOCAL':                              (McBlock.parseMcGeneric,           False),
    2620     'IEM_MC_ADD_GREG_U64':                                       (McBlock.parseMcGeneric,           True),
    2621     'IEM_MC_ADD_GREG_U64_TO_LOCAL':                              (McBlock.parseMcGeneric,           False),
    2622     'IEM_MC_ADD_GREG_U8':                                        (McBlock.parseMcGeneric,           True),
    2623     'IEM_MC_ADD_GREG_U8_TO_LOCAL':                               (McBlock.parseMcGeneric,           False),
    2624     'IEM_MC_ADD_LOCAL_S16_TO_EFF_ADDR':                          (McBlock.parseMcGeneric,           True),
    2625     'IEM_MC_ADD_LOCAL_S32_TO_EFF_ADDR':                          (McBlock.parseMcGeneric,           True),
    2626     'IEM_MC_ADD_LOCAL_S64_TO_EFF_ADDR':                          (McBlock.parseMcGeneric,           True),
    2627     'IEM_MC_ADVANCE_RIP_AND_FINISH':                             (McBlock.parseMcGeneric,           True),
    2628     'IEM_MC_AND_2LOCS_U32':                                      (McBlock.parseMcGeneric,           False),
    2629     'IEM_MC_AND_ARG_U16':                                        (McBlock.parseMcGeneric,           False),
    2630     'IEM_MC_AND_ARG_U32':                                        (McBlock.parseMcGeneric,           False),
    2631     'IEM_MC_AND_ARG_U64':                                        (McBlock.parseMcGeneric,           False),
    2632     'IEM_MC_AND_GREG_U16':                                       (McBlock.parseMcGeneric,           True),
    2633     'IEM_MC_AND_GREG_U32':                                       (McBlock.parseMcGeneric,           True),
    2634     'IEM_MC_AND_GREG_U64':                                       (McBlock.parseMcGeneric,           True),
    2635     'IEM_MC_AND_GREG_U8':                                        (McBlock.parseMcGeneric,           True),
    2636     'IEM_MC_AND_LOCAL_U16':                                      (McBlock.parseMcGeneric,           False),
    2637     'IEM_MC_AND_LOCAL_U32':                                      (McBlock.parseMcGeneric,           False),
    2638     'IEM_MC_AND_LOCAL_U64':                                      (McBlock.parseMcGeneric,           False),
    2639     'IEM_MC_AND_LOCAL_U8':                                       (McBlock.parseMcGeneric,           False),
    2640     'IEM_MC_ARG':                                                (McBlock.parseMcArg,               False),
    2641     'IEM_MC_ARG_CONST':                                          (McBlock.parseMcArgConst,          False),
    2642     'IEM_MC_ARG_LOCAL_EFLAGS':                                   (McBlock.parseMcArgLocalEFlags,    False),
    2643     'IEM_MC_ARG_LOCAL_REF':                                      (McBlock.parseMcArgLocalRef,       False),
    2644     'IEM_MC_ASSIGN':                                             (McBlock.parseMcGeneric,           False),
    2645     'IEM_MC_ASSIGN_TO_SMALLER':                                  (McBlock.parseMcGeneric,           False),
    2646     'IEM_MC_ASSIGN_U8_SX_U64':                                   (McBlock.parseMcGeneric,           False),
    2647     'IEM_MC_ASSIGN_U32_SX_U64':                                  (McBlock.parseMcGeneric,           False),
    2648     'IEM_MC_BEGIN':                                              (McBlock.parseMcBegin,             False),
    2649     'IEM_MC_BROADCAST_XREG_U16_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2650     'IEM_MC_BROADCAST_XREG_U32_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2651     'IEM_MC_BROADCAST_XREG_U64_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2652     'IEM_MC_BROADCAST_XREG_U8_ZX_VLMAX':                         (McBlock.parseMcGeneric,           True),
    2653     'IEM_MC_BROADCAST_YREG_U128_ZX_VLMAX':                       (McBlock.parseMcGeneric,           True),
    2654     'IEM_MC_BROADCAST_YREG_U16_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2655     'IEM_MC_BROADCAST_YREG_U32_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2656     'IEM_MC_BROADCAST_YREG_U64_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2657     'IEM_MC_BROADCAST_YREG_U8_ZX_VLMAX':                         (McBlock.parseMcGeneric,           True),
    2658     'IEM_MC_BSWAP_LOCAL_U16':                                    (McBlock.parseMcGeneric,           False),
    2659     'IEM_MC_BSWAP_LOCAL_U32':                                    (McBlock.parseMcGeneric,           False),
    2660     'IEM_MC_BSWAP_LOCAL_U64':                                    (McBlock.parseMcGeneric,           False),
    2661     'IEM_MC_CALC_RM_EFF_ADDR':                                   (McBlock.parseMcGeneric,           False),
    2662     'IEM_MC_CALL_AIMPL_3':                                       (McBlock.parseMcCallAImpl,         True),
    2663     'IEM_MC_CALL_AIMPL_4':                                       (McBlock.parseMcCallAImpl,         True),
    2664     'IEM_MC_CALL_AVX_AIMPL_2':                                   (McBlock.parseMcCallAvxAImpl,      True),
    2665     'IEM_MC_CALL_AVX_AIMPL_3':                                   (McBlock.parseMcCallAvxAImpl,      True),
    2666     'IEM_MC_CALL_CIMPL_0':                                       (McBlock.parseMcCallCImpl,         True),
    2667     'IEM_MC_CALL_CIMPL_1':                                       (McBlock.parseMcCallCImpl,         True),
    2668     'IEM_MC_CALL_CIMPL_2':                                       (McBlock.parseMcCallCImpl,         True),
    2669     'IEM_MC_CALL_CIMPL_3':                                       (McBlock.parseMcCallCImpl,         True),
    2670     'IEM_MC_CALL_CIMPL_4':                                       (McBlock.parseMcCallCImpl,         True),
    2671     'IEM_MC_CALL_CIMPL_5':                                       (McBlock.parseMcCallCImpl,         True),
    2672     'IEM_MC_CALL_FPU_AIMPL_1':                                   (McBlock.parseMcCallFpuAImpl,      True),
    2673     'IEM_MC_CALL_FPU_AIMPL_2':                                   (McBlock.parseMcCallFpuAImpl,      True),
    2674     'IEM_MC_CALL_FPU_AIMPL_3':                                   (McBlock.parseMcCallFpuAImpl,      True),
    2675     'IEM_MC_CALL_MMX_AIMPL_2':                                   (McBlock.parseMcCallMmxAImpl,      True),
    2676     'IEM_MC_CALL_MMX_AIMPL_3':                                   (McBlock.parseMcCallMmxAImpl,      True),
    2677     'IEM_MC_CALL_SSE_AIMPL_2':                                   (McBlock.parseMcCallSseAImpl,      True),
    2678     'IEM_MC_CALL_SSE_AIMPL_3':                                   (McBlock.parseMcCallSseAImpl,      True),
    2679     'IEM_MC_CALL_VOID_AIMPL_0':                                  (McBlock.parseMcCallVoidAImpl,     True),
    2680     'IEM_MC_CALL_VOID_AIMPL_1':                                  (McBlock.parseMcCallVoidAImpl,     True),
    2681     'IEM_MC_CALL_VOID_AIMPL_2':                                  (McBlock.parseMcCallVoidAImpl,     True),
    2682     'IEM_MC_CALL_VOID_AIMPL_3':                                  (McBlock.parseMcCallVoidAImpl,     True),
    2683     'IEM_MC_CALL_VOID_AIMPL_4':                                  (McBlock.parseMcCallVoidAImpl,     True),
    2684     'IEM_MC_CLEAR_EFL_BIT':                                      (McBlock.parseMcGeneric,           True),
    2685     'IEM_MC_CLEAR_FSW_EX':                                       (McBlock.parseMcGeneric,           True),
    2686     'IEM_MC_CLEAR_HIGH_GREG_U64':                                (McBlock.parseMcGeneric,           True),
    2687     'IEM_MC_CLEAR_HIGH_GREG_U64_BY_REF':                         (McBlock.parseMcGeneric,           True),
    2688     'IEM_MC_CLEAR_XREG_U32_MASK':                                (McBlock.parseMcGeneric,           True),
    2689     'IEM_MC_CLEAR_YREG_128_UP':                                  (McBlock.parseMcGeneric,           True),
    2690     'IEM_MC_COMMIT_EFLAGS':                                      (McBlock.parseMcGeneric,           True),
    2691     'IEM_MC_COPY_XREG_U128':                                     (McBlock.parseMcGeneric,           True),
    2692     'IEM_MC_COPY_YREG_U128_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True),
    2693     'IEM_MC_COPY_YREG_U256_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True),
    2694     'IEM_MC_COPY_YREG_U64_ZX_VLMAX':                             (McBlock.parseMcGeneric,           True),
    2695     'IEM_MC_DEFER_TO_CIMPL_0_RET':                               (McBlock.parseMcGeneric,           False),
    2696     'IEM_MC_DEFER_TO_CIMPL_1_RET':                               (McBlock.parseMcGeneric,           False),
    2697     'IEM_MC_DEFER_TO_CIMPL_2_RET':                               (McBlock.parseMcGeneric,           False),
    2698     'IEM_MC_DEFER_TO_CIMPL_3_RET':                               (McBlock.parseMcGeneric,           False),
    2699     'IEM_MC_END':                                                (McBlock.parseMcGeneric,           True),
    2700     'IEM_MC_FETCH_EFLAGS':                                       (McBlock.parseMcGeneric,           False),
    2701     'IEM_MC_FETCH_EFLAGS_U8':                                    (McBlock.parseMcGeneric,           False),
    2702     'IEM_MC_FETCH_FCW':                                          (McBlock.parseMcGeneric,           False),
    2703     'IEM_MC_FETCH_FSW':                                          (McBlock.parseMcGeneric,           False),
    2704     'IEM_MC_FETCH_GREG_U16':                                     (McBlock.parseMcGeneric,           False),
    2705     'IEM_MC_FETCH_GREG_U16_SX_U32':                              (McBlock.parseMcGeneric,           False),
    2706     'IEM_MC_FETCH_GREG_U16_SX_U64':                              (McBlock.parseMcGeneric,           False),
    2707     'IEM_MC_FETCH_GREG_U16_ZX_U32':                              (McBlock.parseMcGeneric,           False),
    2708     'IEM_MC_FETCH_GREG_U16_ZX_U64':                              (McBlock.parseMcGeneric,           False),
    2709     'IEM_MC_FETCH_GREG_U32':                                     (McBlock.parseMcGeneric,           False),
    2710     'IEM_MC_FETCH_GREG_U32_SX_U64':                              (McBlock.parseMcGeneric,           False),
    2711     'IEM_MC_FETCH_GREG_U32_ZX_U64':                              (McBlock.parseMcGeneric,           False),
    2712     'IEM_MC_FETCH_GREG_U64':                                     (McBlock.parseMcGeneric,           False),
    2713     'IEM_MC_FETCH_GREG_U64_ZX_U64':                              (McBlock.parseMcGeneric,           False),
    2714     'IEM_MC_FETCH_GREG_U8':                                      (McBlock.parseMcGeneric,           False),
    2715     'IEM_MC_FETCH_GREG_U8_SX_U16':                               (McBlock.parseMcGeneric,           False),
    2716     'IEM_MC_FETCH_GREG_U8_SX_U32':                               (McBlock.parseMcGeneric,           False),
    2717     'IEM_MC_FETCH_GREG_U8_SX_U64':                               (McBlock.parseMcGeneric,           False),
    2718     'IEM_MC_FETCH_GREG_U8_ZX_U16':                               (McBlock.parseMcGeneric,           False),
    2719     'IEM_MC_FETCH_GREG_U8_ZX_U32':                               (McBlock.parseMcGeneric,           False),
    2720     'IEM_MC_FETCH_GREG_U8_ZX_U64':                               (McBlock.parseMcGeneric,           False),
    2721     'IEM_MC_FETCH_MEM_D80':                                      (McBlock.parseMcGeneric,           True),
    2722     'IEM_MC_FETCH_MEM_I16':                                      (McBlock.parseMcGeneric,           True),
    2723     'IEM_MC_FETCH_MEM_I32':                                      (McBlock.parseMcGeneric,           True),
    2724     'IEM_MC_FETCH_MEM_I64':                                      (McBlock.parseMcGeneric,           True),
    2725     'IEM_MC_FETCH_MEM_R32':                                      (McBlock.parseMcGeneric,           True),
    2726     'IEM_MC_FETCH_MEM_R64':                                      (McBlock.parseMcGeneric,           True),
    2727     'IEM_MC_FETCH_MEM_R80':                                      (McBlock.parseMcGeneric,           True),
    2728     'IEM_MC_FETCH_MEM_S32_SX_U64':                               (McBlock.parseMcGeneric,           True),
    2729     'IEM_MC_FETCH_MEM_U128':                                     (McBlock.parseMcGeneric,           True),
    2730     'IEM_MC_FETCH_MEM_U128_ALIGN_SSE':                           (McBlock.parseMcGeneric,           True),
    2731     'IEM_MC_FETCH_MEM_U128_NO_AC':                               (McBlock.parseMcGeneric,           True),
    2732     'IEM_MC_FETCH_MEM_U16':                                      (McBlock.parseMcGeneric,           True),
    2733     'IEM_MC_FETCH_MEM_U16_DISP':                                 (McBlock.parseMcGeneric,           True),
    2734     'IEM_MC_FETCH_MEM_U16_SX_U32':                               (McBlock.parseMcGeneric,           True),
    2735     'IEM_MC_FETCH_MEM_U16_SX_U64':                               (McBlock.parseMcGeneric,           True),
    2736     'IEM_MC_FETCH_MEM_U16_ZX_U32':                               (McBlock.parseMcGeneric,           True),
    2737     'IEM_MC_FETCH_MEM_U16_ZX_U64':                               (McBlock.parseMcGeneric,           True),
    2738     'IEM_MC_FETCH_MEM_U256':                                     (McBlock.parseMcGeneric,           True),
    2739     'IEM_MC_FETCH_MEM_U256_ALIGN_AVX':                           (McBlock.parseMcGeneric,           True),
    2740     'IEM_MC_FETCH_MEM_U256_NO_AC':                               (McBlock.parseMcGeneric,           True),
    2741     'IEM_MC_FETCH_MEM_U32':                                      (McBlock.parseMcGeneric,           True),
    2742     'IEM_MC_FETCH_MEM_U32_DISP':                                 (McBlock.parseMcGeneric,           True),
    2743     'IEM_MC_FETCH_MEM_U32_SX_U64':                               (McBlock.parseMcGeneric,           True),
    2744     'IEM_MC_FETCH_MEM_U32_ZX_U64':                               (McBlock.parseMcGeneric,           True),
    2745     'IEM_MC_FETCH_MEM_U64':                                      (McBlock.parseMcGeneric,           True),
    2746     'IEM_MC_FETCH_MEM_U64_ALIGN_U128':                           (McBlock.parseMcGeneric,           True),
    2747     'IEM_MC_FETCH_MEM_U64_DISP':                                 (McBlock.parseMcGeneric,           True),
    2748     'IEM_MC_FETCH_MEM_U8':                                       (McBlock.parseMcGeneric,           True),
    2749     'IEM_MC_FETCH_MEM_U8_SX_U16':                                (McBlock.parseMcGeneric,           True),
    2750     'IEM_MC_FETCH_MEM_U8_SX_U32':                                (McBlock.parseMcGeneric,           True),
    2751     'IEM_MC_FETCH_MEM_U8_SX_U64':                                (McBlock.parseMcGeneric,           True),
    2752     'IEM_MC_FETCH_MEM_U8_ZX_U16':                                (McBlock.parseMcGeneric,           True),
    2753     'IEM_MC_FETCH_MEM_U8_ZX_U32':                                (McBlock.parseMcGeneric,           True),
    2754     'IEM_MC_FETCH_MEM_U8_ZX_U64':                                (McBlock.parseMcGeneric,           True),
    2755     'IEM_MC_FETCH_MEM_XMM':                                      (McBlock.parseMcGeneric,           True),
    2756     'IEM_MC_FETCH_MEM_XMM_ALIGN_SSE':                            (McBlock.parseMcGeneric,           True),
    2757     'IEM_MC_FETCH_MEM_XMM_NO_AC':                                (McBlock.parseMcGeneric,           True),
    2758     'IEM_MC_FETCH_MEM_XMM_U32':                                  (McBlock.parseMcGeneric,           True),
    2759     'IEM_MC_FETCH_MEM_XMM_U64':                                  (McBlock.parseMcGeneric,           True),
    2760     'IEM_MC_FETCH_MEM_YMM':                                      (McBlock.parseMcGeneric,           True),
    2761     'IEM_MC_FETCH_MEM_YMM_ALIGN_AVX':                            (McBlock.parseMcGeneric,           True),
    2762     'IEM_MC_FETCH_MEM_YMM_NO_AC':                                (McBlock.parseMcGeneric,           True),
    2763     'IEM_MC_FETCH_MEM16_U8':                                     (McBlock.parseMcGeneric,           True),
    2764     'IEM_MC_FETCH_MEM32_U8':                                     (McBlock.parseMcGeneric,           True),
    2765     'IEM_MC_FETCH_MREG_U32':                                     (McBlock.parseMcGeneric,           False),
    2766     'IEM_MC_FETCH_MREG_U64':                                     (McBlock.parseMcGeneric,           False),
    2767     'IEM_MC_FETCH_SREG_BASE_U32':                                (McBlock.parseMcGeneric,           False),
    2768     'IEM_MC_FETCH_SREG_BASE_U64':                                (McBlock.parseMcGeneric,           False),
    2769     'IEM_MC_FETCH_SREG_U16':                                     (McBlock.parseMcGeneric,           False),
    2770     'IEM_MC_FETCH_SREG_ZX_U32':                                  (McBlock.parseMcGeneric,           False),
    2771     'IEM_MC_FETCH_SREG_ZX_U64':                                  (McBlock.parseMcGeneric,           False),
    2772     'IEM_MC_FETCH_XREG_U128':                                    (McBlock.parseMcGeneric,           False),
    2773     'IEM_MC_FETCH_XREG_U16':                                     (McBlock.parseMcGeneric,           False),
    2774     'IEM_MC_FETCH_XREG_U32':                                     (McBlock.parseMcGeneric,           False),
    2775     'IEM_MC_FETCH_XREG_U64':                                     (McBlock.parseMcGeneric,           False),
    2776     'IEM_MC_FETCH_XREG_U8':                                      (McBlock.parseMcGeneric,           False),
    2777     'IEM_MC_FETCH_XREG_XMM':                                     (McBlock.parseMcGeneric,           False),
    2778     'IEM_MC_FETCH_YREG_2ND_U64':                                 (McBlock.parseMcGeneric,           False),
    2779     'IEM_MC_FETCH_YREG_U128':                                    (McBlock.parseMcGeneric,           False),
    2780     'IEM_MC_FETCH_YREG_U256':                                    (McBlock.parseMcGeneric,           False),
    2781     'IEM_MC_FETCH_YREG_U32':                                     (McBlock.parseMcGeneric,           False),
    2782     'IEM_MC_FETCH_YREG_U64':                                     (McBlock.parseMcGeneric,           False),
    2783     'IEM_MC_FLIP_EFL_BIT':                                       (McBlock.parseMcGeneric,           True),
    2784     'IEM_MC_FPU_FROM_MMX_MODE':                                  (McBlock.parseMcGeneric,           True),
    2785     'IEM_MC_FPU_STACK_DEC_TOP':                                  (McBlock.parseMcGeneric,           True),
    2786     'IEM_MC_FPU_STACK_FREE':                                     (McBlock.parseMcGeneric,           True),
    2787     'IEM_MC_FPU_STACK_INC_TOP':                                  (McBlock.parseMcGeneric,           True),
    2788     'IEM_MC_FPU_STACK_PUSH_OVERFLOW':                            (McBlock.parseMcGeneric,           True),
    2789     'IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP':                     (McBlock.parseMcGeneric,           True),
    2790     'IEM_MC_FPU_STACK_PUSH_UNDERFLOW':                           (McBlock.parseMcGeneric,           True),
    2791     'IEM_MC_FPU_STACK_PUSH_UNDERFLOW_TWO':                       (McBlock.parseMcGeneric,           True),
    2792     'IEM_MC_FPU_STACK_UNDERFLOW':                                (McBlock.parseMcGeneric,           True),
    2793     'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP':                         (McBlock.parseMcGeneric,           True),
    2794     'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP':                (McBlock.parseMcGeneric,           True),
    2795     'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP':                       (McBlock.parseMcGeneric,           True),
    2796     'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP_POP':                   (McBlock.parseMcGeneric,           True),
    2797     'IEM_MC_FPU_TO_MMX_MODE':                                    (McBlock.parseMcGeneric,           True),
    2798     'IEM_MC_IF_CX_IS_NZ':                                        (McBlock.parseMcGenericCond,       True),
    2799     'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_NOT_SET':                    (McBlock.parseMcGenericCond,       True),
    2800     'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_SET':                        (McBlock.parseMcGenericCond,       True),
    2801     'IEM_MC_IF_ECX_IS_NZ':                                       (McBlock.parseMcGenericCond,       True),
    2802     'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_NOT_SET':                   (McBlock.parseMcGenericCond,       True),
    2803     'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_SET':                       (McBlock.parseMcGenericCond,       True),
    2804     'IEM_MC_IF_EFL_ANY_BITS_SET':                                (McBlock.parseMcGenericCond,       True),
    2805     'IEM_MC_IF_EFL_BIT_NOT_SET':                                 (McBlock.parseMcGenericCond,       True),
    2806     'IEM_MC_IF_EFL_BIT_NOT_SET_AND_BITS_EQ':                     (McBlock.parseMcGenericCond,       True),
    2807     'IEM_MC_IF_EFL_BIT_SET':                                     (McBlock.parseMcGenericCond,       True),
    2808     'IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE':                          (McBlock.parseMcGenericCond,       True),
    2809     'IEM_MC_IF_EFL_BITS_EQ':                                     (McBlock.parseMcGenericCond,       True),
    2810     'IEM_MC_IF_EFL_BITS_NE':                                     (McBlock.parseMcGenericCond,       True),
    2811     'IEM_MC_IF_EFL_NO_BITS_SET':                                 (McBlock.parseMcGenericCond,       True),
    2812     'IEM_MC_IF_FCW_IM':                                          (McBlock.parseMcGenericCond,       True),
    2813     'IEM_MC_IF_FPUREG_IS_EMPTY':                                 (McBlock.parseMcGenericCond,       True),
    2814     'IEM_MC_IF_FPUREG_NOT_EMPTY':                                (McBlock.parseMcGenericCond,       True),
    2815     'IEM_MC_IF_FPUREG_NOT_EMPTY_REF_R80':                        (McBlock.parseMcGenericCond,       True),
    2816     'IEM_MC_IF_GREG_BIT_SET':                                    (McBlock.parseMcGenericCond,       True),
    2817     'IEM_MC_IF_LOCAL_IS_Z':                                      (McBlock.parseMcGenericCond,       True),
    2818     'IEM_MC_IF_MXCSR_XCPT_PENDING':                              (McBlock.parseMcGenericCond,       True),
    2819     'IEM_MC_IF_RCX_IS_NZ':                                       (McBlock.parseMcGenericCond,       True),
    2820     'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_NOT_SET':                   (McBlock.parseMcGenericCond,       True),
    2821     'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_SET':                       (McBlock.parseMcGenericCond,       True),
    2822     'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80':                   (McBlock.parseMcGenericCond,       True),
    2823     'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80_FIRST':             (McBlock.parseMcGenericCond,       True),
    2824     'IEM_MC_IMPLICIT_AVX_AIMPL_ARGS':                            (McBlock.parseMcGeneric,           False),
    2825     'IEM_MC_INT_CLEAR_ZMM_256_UP':                               (McBlock.parseMcGeneric,           True),
    2826     'IEM_MC_LOCAL':                                              (McBlock.parseMcLocal,             False),
    2827     'IEM_MC_LOCAL_CONST':                                        (McBlock.parseMcLocalConst,        False),
    2828     'IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT':                       (McBlock.parseMcGeneric,           True),
    2829     'IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE':                   (McBlock.parseMcGeneric,           True),
    2830     'IEM_MC_MAYBE_RAISE_FPU_XCPT':                               (McBlock.parseMcGeneric,           True),
    2831     'IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT':                          (McBlock.parseMcGeneric,           True),
    2832     'IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT':                       (McBlock.parseMcGeneric,           True),
    2833     'IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0':                 (McBlock.parseMcGeneric,           True),
    2834     'IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT':             (McBlock.parseMcGeneric,           True),
    2835     'IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT':                       (McBlock.parseMcGeneric,           True),
    2836     'IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE':              (McBlock.parseMcGeneric,           True),
    2837     'IEM_MC_MEM_COMMIT_AND_UNMAP':                               (McBlock.parseMcGeneric,           True),
    2838     'IEM_MC_MEM_COMMIT_AND_UNMAP_RW':                            (McBlock.parseMcGeneric,           True),
    2839     'IEM_MC_MEM_COMMIT_AND_UNMAP_RO':                            (McBlock.parseMcGeneric,           True),
    2840     'IEM_MC_MEM_COMMIT_AND_UNMAP_WO':                            (McBlock.parseMcGeneric,           True),
    2841     'IEM_MC_MEM_COMMIT_AND_UNMAP_FOR_FPU_STORE':                 (McBlock.parseMcGeneric,           True),
    2842     'IEM_MC_MEM_MAP':                                            (McBlock.parseMcGeneric,           True),
    2843     'IEM_MC_MEM_MAP_EX':                                         (McBlock.parseMcGeneric,           True),
    2844     'IEM_MC_MEM_MAP_U8_RW':                                      (McBlock.parseMcGeneric,           True),
    2845     'IEM_MC_MEM_MAP_U8_RO':                                      (McBlock.parseMcGeneric,           True),
    2846     'IEM_MC_MEM_MAP_U8_WO':                                      (McBlock.parseMcGeneric,           True),
    2847     'IEM_MC_MEM_MAP_U16_RW':                                     (McBlock.parseMcGeneric,           True),
    2848     'IEM_MC_MEM_MAP_U16_RO':                                     (McBlock.parseMcGeneric,           True),
    2849     'IEM_MC_MEM_MAP_U16_WO':                                     (McBlock.parseMcGeneric,           True),
    2850     'IEM_MC_MEM_MAP_U32_RW':                                     (McBlock.parseMcGeneric,           True),
    2851     'IEM_MC_MEM_MAP_U32_RO':                                     (McBlock.parseMcGeneric,           True),
    2852     'IEM_MC_MEM_MAP_U32_WO':                                     (McBlock.parseMcGeneric,           True),
    2853     'IEM_MC_MEM_MAP_U64_RW':                                     (McBlock.parseMcGeneric,           True),
    2854     'IEM_MC_MEM_MAP_U64_RO':                                     (McBlock.parseMcGeneric,           True),
    2855     'IEM_MC_MEM_MAP_U64_WO':                                     (McBlock.parseMcGeneric,           True),
    2856     'IEM_MC_MERGE_YREG_U32_U96_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2857     'IEM_MC_MERGE_YREG_U64_U64_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True),
    2858     'IEM_MC_MERGE_YREG_U64HI_U64HI_ZX_VLMAX':                    (McBlock.parseMcGeneric,           True),
    2859     'IEM_MC_MERGE_YREG_U64LO_U64LO_ZX_VLMAX':                    (McBlock.parseMcGeneric,           True),
    2860     'IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX':                 (McBlock.parseMcGeneric,           True),
    2861     'IEM_MC_MERGE_YREG_U64LOCAL_U64HI_ZX_VLMAX':                 (McBlock.parseMcGeneric,           True),
    2862     'IEM_MC_MODIFIED_MREG':                                      (McBlock.parseMcGeneric,           True),
    2863     'IEM_MC_MODIFIED_MREG_BY_REF':                               (McBlock.parseMcGeneric,           True),
    2864     'IEM_MC_OR_2LOCS_U32':                                       (McBlock.parseMcGeneric,           False),
    2865     'IEM_MC_OR_GREG_U16':                                        (McBlock.parseMcGeneric,           True),
    2866     'IEM_MC_OR_GREG_U32':                                        (McBlock.parseMcGeneric,           True),
    2867     'IEM_MC_OR_GREG_U64':                                        (McBlock.parseMcGeneric,           True),
    2868     'IEM_MC_OR_GREG_U8':                                         (McBlock.parseMcGeneric,           True),
    2869     'IEM_MC_OR_LOCAL_U16':                                       (McBlock.parseMcGeneric,           False),
    2870     'IEM_MC_OR_LOCAL_U32':                                       (McBlock.parseMcGeneric,           False),
    2871     'IEM_MC_OR_LOCAL_U8':                                        (McBlock.parseMcGeneric,           False),
    2872     'IEM_MC_POP_U16':                                            (McBlock.parseMcGeneric,           True),
    2873     'IEM_MC_POP_U32':                                            (McBlock.parseMcGeneric,           True),
    2874     'IEM_MC_POP_U64':                                            (McBlock.parseMcGeneric,           True),
    2875     'IEM_MC_PREPARE_AVX_USAGE':                                  (McBlock.parseMcGeneric,           False),
    2876     'IEM_MC_PREPARE_FPU_USAGE':                                  (McBlock.parseMcGeneric,           False),
    2877     'IEM_MC_PREPARE_SSE_USAGE':                                  (McBlock.parseMcGeneric,           False),
    2878     'IEM_MC_PUSH_FPU_RESULT':                                    (McBlock.parseMcGeneric,           True),
    2879     'IEM_MC_PUSH_FPU_RESULT_MEM_OP':                             (McBlock.parseMcGeneric,           True),
    2880     'IEM_MC_PUSH_FPU_RESULT_TWO':                                (McBlock.parseMcGeneric,           True),
    2881     'IEM_MC_PUSH_U16':                                           (McBlock.parseMcGeneric,           True),
    2882     'IEM_MC_PUSH_U32':                                           (McBlock.parseMcGeneric,           True),
    2883     'IEM_MC_PUSH_U32_SREG':                                      (McBlock.parseMcGeneric,           True),
    2884     'IEM_MC_PUSH_U64':                                           (McBlock.parseMcGeneric,           True),
    2885     'IEM_MC_RAISE_DIVIDE_ERROR':                                 (McBlock.parseMcGeneric,           True),
    2886     'IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO':                          (McBlock.parseMcGeneric,           True),
    2887     'IEM_MC_RAISE_GP0_IF_EFF_ADDR_UNALIGNED':                    (McBlock.parseMcGeneric,           True),
    2888     'IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT':                   (McBlock.parseMcGeneric,           True),
    2889     'IEM_MC_REF_EFLAGS':                                         (McBlock.parseMcGeneric,           False),
    2890     'IEM_MC_REF_FPUREG':                                         (McBlock.parseMcGeneric,           False),
    2891     'IEM_MC_REF_GREG_I32':                                       (McBlock.parseMcGeneric,           False),
    2892     'IEM_MC_REF_GREG_I32_CONST':                                 (McBlock.parseMcGeneric,           False),
    2893     'IEM_MC_REF_GREG_I64':                                       (McBlock.parseMcGeneric,           False),
    2894     'IEM_MC_REF_GREG_I64_CONST':                                 (McBlock.parseMcGeneric,           False),
    2895     'IEM_MC_REF_GREG_U16':                                       (McBlock.parseMcGeneric,           False),
    2896     'IEM_MC_REF_GREG_U16_CONST':                                 (McBlock.parseMcGeneric,           False),
    2897     'IEM_MC_REF_GREG_U32':                                       (McBlock.parseMcGeneric,           False),
    2898     'IEM_MC_REF_GREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False),
    2899     'IEM_MC_REF_GREG_U64':                                       (McBlock.parseMcGeneric,           False),
    2900     'IEM_MC_REF_GREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False),
    2901     'IEM_MC_REF_GREG_U8':                                        (McBlock.parseMcGeneric,           False),
    2902     'IEM_MC_REF_GREG_U8_CONST':                                  (McBlock.parseMcGeneric,           False),
    2903     'IEM_MC_REF_LOCAL':                                          (McBlock.parseMcGeneric,           False),
    2904     'IEM_MC_REF_MREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False),
    2905     'IEM_MC_REF_MREG_U64':                                       (McBlock.parseMcGeneric,           False),
    2906     'IEM_MC_REF_MREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False),
    2907     'IEM_MC_REF_MXCSR':                                          (McBlock.parseMcGeneric,           False),
    2908     'IEM_MC_REF_XREG_R32_CONST':                                 (McBlock.parseMcGeneric,           False),
    2909     'IEM_MC_REF_XREG_R64_CONST':                                 (McBlock.parseMcGeneric,           False),
    2910     'IEM_MC_REF_XREG_U128':                                      (McBlock.parseMcGeneric,           False),
    2911     'IEM_MC_REF_XREG_U128_CONST':                                (McBlock.parseMcGeneric,           False),
    2912     'IEM_MC_REF_XREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False),
    2913     'IEM_MC_REF_XREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False),
    2914     'IEM_MC_REF_XREG_XMM_CONST':                                 (McBlock.parseMcGeneric,           False),
    2915     'IEM_MC_REF_YREG_U128':                                      (McBlock.parseMcGeneric,           False),
    2916     'IEM_MC_REF_YREG_U128_CONST':                                (McBlock.parseMcGeneric,           False),
    2917     'IEM_MC_REF_YREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False),
    2918     'IEM_MC_REL_JMP_S16_AND_FINISH':                             (McBlock.parseMcGeneric,           True),
    2919     'IEM_MC_REL_JMP_S32_AND_FINISH':                             (McBlock.parseMcGeneric,           True),
    2920     'IEM_MC_REL_JMP_S8_AND_FINISH':                              (McBlock.parseMcGeneric,           True),
    2921     'IEM_MC_RETURN_ON_FAILURE':                                  (McBlock.parseMcGeneric,           False),
    2922     'IEM_MC_SAR_LOCAL_S16':                                      (McBlock.parseMcGeneric,           False),
    2923     'IEM_MC_SAR_LOCAL_S32':                                      (McBlock.parseMcGeneric,           False),
    2924     'IEM_MC_SAR_LOCAL_S64':                                      (McBlock.parseMcGeneric,           False),
    2925     'IEM_MC_SET_EFL_BIT':                                        (McBlock.parseMcGeneric,           True),
    2926     'IEM_MC_SET_FPU_RESULT':                                     (McBlock.parseMcGeneric,           True),
    2927     'IEM_MC_SET_RIP_U16_AND_FINISH':                             (McBlock.parseMcGeneric,           True),
    2928     'IEM_MC_SET_RIP_U32_AND_FINISH':                             (McBlock.parseMcGeneric,           True),
    2929     'IEM_MC_SET_RIP_U64_AND_FINISH':                             (McBlock.parseMcGeneric,           True),
    2930     'IEM_MC_SHL_LOCAL_S16':                                      (McBlock.parseMcGeneric,           False),
    2931     'IEM_MC_SHL_LOCAL_S32':                                      (McBlock.parseMcGeneric,           False),
    2932     'IEM_MC_SHL_LOCAL_S64':                                      (McBlock.parseMcGeneric,           False),
    2933     'IEM_MC_SHR_LOCAL_U8':                                       (McBlock.parseMcGeneric,           False),
    2934     'IEM_MC_SSE_UPDATE_MXCSR':                                   (McBlock.parseMcGeneric,           True),
    2935     'IEM_MC_STORE_FPU_RESULT':                                   (McBlock.parseMcGeneric,           True),
    2936     'IEM_MC_STORE_FPU_RESULT_MEM_OP':                            (McBlock.parseMcGeneric,           True),
    2937     'IEM_MC_STORE_FPU_RESULT_THEN_POP':                          (McBlock.parseMcGeneric,           True),
    2938     'IEM_MC_STORE_FPU_RESULT_WITH_MEM_OP_THEN_POP':              (McBlock.parseMcGeneric,           True),
    2939     'IEM_MC_STORE_FPUREG_R80_SRC_REF':                           (McBlock.parseMcGeneric,           True),
    2940     'IEM_MC_STORE_GREG_I64':                                     (McBlock.parseMcGeneric,           True),
    2941     'IEM_MC_STORE_GREG_U16':                                     (McBlock.parseMcGeneric,           True),
    2942     'IEM_MC_STORE_GREG_U16_CONST':                               (McBlock.parseMcGeneric,           True),
    2943     'IEM_MC_STORE_GREG_U32':                                     (McBlock.parseMcGeneric,           True),
    2944     'IEM_MC_STORE_GREG_U32_CONST':                               (McBlock.parseMcGeneric,           True),
    2945     'IEM_MC_STORE_GREG_U64':                                     (McBlock.parseMcGeneric,           True),
    2946     'IEM_MC_STORE_GREG_U64_CONST':                               (McBlock.parseMcGeneric,           True),
    2947     'IEM_MC_STORE_GREG_U8':                                      (McBlock.parseMcGeneric,           True),
    2948     'IEM_MC_STORE_GREG_U8_CONST':                                (McBlock.parseMcGeneric,           True),
    2949     'IEM_MC_STORE_MEM_I16_CONST_BY_REF':                         (McBlock.parseMcGeneric,           True),
    2950     'IEM_MC_STORE_MEM_I32_CONST_BY_REF':                         (McBlock.parseMcGeneric,           True),
    2951     'IEM_MC_STORE_MEM_I64_CONST_BY_REF':                         (McBlock.parseMcGeneric,           True),
    2952     'IEM_MC_STORE_MEM_I8_CONST_BY_REF':                          (McBlock.parseMcGeneric,           True),
    2953     'IEM_MC_STORE_MEM_INDEF_D80_BY_REF':                         (McBlock.parseMcGeneric,           True),
    2954     'IEM_MC_STORE_MEM_NEG_QNAN_R32_BY_REF':                      (McBlock.parseMcGeneric,           True),
    2955     'IEM_MC_STORE_MEM_NEG_QNAN_R64_BY_REF':                      (McBlock.parseMcGeneric,           True),
    2956     'IEM_MC_STORE_MEM_NEG_QNAN_R80_BY_REF':                      (McBlock.parseMcGeneric,           True),
    2957     'IEM_MC_STORE_MEM_U128':                                     (McBlock.parseMcGeneric,           True),
    2958     'IEM_MC_STORE_MEM_U128_ALIGN_SSE':                           (McBlock.parseMcGeneric,           True),
    2959     'IEM_MC_STORE_MEM_U16':                                      (McBlock.parseMcGeneric,           True),
    2960     'IEM_MC_STORE_MEM_U16_CONST':                                (McBlock.parseMcGeneric,           True),
    2961     'IEM_MC_STORE_MEM_U256':                                     (McBlock.parseMcGeneric,           True),
    2962     'IEM_MC_STORE_MEM_U256_ALIGN_AVX':                           (McBlock.parseMcGeneric,           True),
    2963     'IEM_MC_STORE_MEM_U32':                                      (McBlock.parseMcGeneric,           True),
    2964     'IEM_MC_STORE_MEM_U32_CONST':                                (McBlock.parseMcGeneric,           True),
    2965     'IEM_MC_STORE_MEM_U64':                                      (McBlock.parseMcGeneric,           True),
    2966     'IEM_MC_STORE_MEM_U64_CONST':                                (McBlock.parseMcGeneric,           True),
    2967     'IEM_MC_STORE_MEM_U8':                                       (McBlock.parseMcGeneric,           True),
    2968     'IEM_MC_STORE_MEM_U8_CONST':                                 (McBlock.parseMcGeneric,           True),
    2969     'IEM_MC_STORE_MREG_U32_ZX_U64':                              (McBlock.parseMcGeneric,           True),
    2970     'IEM_MC_STORE_MREG_U64':                                     (McBlock.parseMcGeneric,           True),
    2971     'IEM_MC_STORE_SREG_BASE_U32':                                (McBlock.parseMcGeneric,           True),
    2972     'IEM_MC_STORE_SREG_BASE_U64':                                (McBlock.parseMcGeneric,           True),
    2973     'IEM_MC_STORE_SSE_RESULT':                                   (McBlock.parseMcGeneric,           True),
    2974     'IEM_MC_STORE_XREG_HI_U64':                                  (McBlock.parseMcGeneric,           True),
    2975     'IEM_MC_STORE_XREG_R32':                                     (McBlock.parseMcGeneric,           True),
    2976     'IEM_MC_STORE_XREG_R64':                                     (McBlock.parseMcGeneric,           True),
    2977     'IEM_MC_STORE_XREG_U128':                                    (McBlock.parseMcGeneric,           True),
    2978     'IEM_MC_STORE_XREG_U16':                                     (McBlock.parseMcGeneric,           True),
    2979     'IEM_MC_STORE_XREG_U32':                                     (McBlock.parseMcGeneric,           True),
    2980     'IEM_MC_STORE_XREG_U32_U128':                                (McBlock.parseMcGeneric,           True),
    2981     'IEM_MC_STORE_XREG_U32_ZX_U128':                             (McBlock.parseMcGeneric,           True),
    2982     'IEM_MC_STORE_XREG_U64':                                     (McBlock.parseMcGeneric,           True),
    2983     'IEM_MC_STORE_XREG_U64_ZX_U128':                             (McBlock.parseMcGeneric,           True),
    2984     'IEM_MC_STORE_XREG_U8':                                      (McBlock.parseMcGeneric,           True),
    2985     'IEM_MC_STORE_XREG_XMM':                                     (McBlock.parseMcGeneric,           True),
    2986     'IEM_MC_STORE_XREG_XMM_U32':                                 (McBlock.parseMcGeneric,           True),
    2987     'IEM_MC_STORE_XREG_XMM_U64':                                 (McBlock.parseMcGeneric,           True),
    2988     'IEM_MC_STORE_YREG_U128':                                    (McBlock.parseMcGeneric,           True),
    2989     'IEM_MC_STORE_YREG_U128_ZX_VLMAX':                           (McBlock.parseMcGeneric,           True),
    2990     'IEM_MC_STORE_YREG_U256_ZX_VLMAX':                           (McBlock.parseMcGeneric,           True),
    2991     'IEM_MC_STORE_YREG_U32_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True),
    2992     'IEM_MC_STORE_YREG_U64_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True),
    2993     'IEM_MC_SUB_GREG_U16':                                       (McBlock.parseMcGeneric,           True),
    2994     'IEM_MC_SUB_GREG_U32':                                       (McBlock.parseMcGeneric,           True),
    2995     'IEM_MC_SUB_GREG_U64':                                       (McBlock.parseMcGeneric,           True),
    2996     'IEM_MC_SUB_GREG_U8':                                        (McBlock.parseMcGeneric,           True),
    2997     'IEM_MC_SUB_LOCAL_U16':                                      (McBlock.parseMcGeneric,           False),
    2998     'IEM_MC_UPDATE_FPU_OPCODE_IP':                               (McBlock.parseMcGeneric,           True),
    2999     'IEM_MC_UPDATE_FSW':                                         (McBlock.parseMcGeneric,           True),
    3000     'IEM_MC_UPDATE_FSW_CONST':                                   (McBlock.parseMcGeneric,           True),
    3001     'IEM_MC_UPDATE_FSW_THEN_POP':                                (McBlock.parseMcGeneric,           True),
    3002     'IEM_MC_UPDATE_FSW_THEN_POP_POP':                            (McBlock.parseMcGeneric,           True),
    3003     'IEM_MC_UPDATE_FSW_WITH_MEM_OP':                             (McBlock.parseMcGeneric,           True),
    3004     'IEM_MC_UPDATE_FSW_WITH_MEM_OP_THEN_POP':                    (McBlock.parseMcGeneric,           True),
     2669    'IEM_MC_ACTUALIZE_AVX_STATE_FOR_CHANGE':                     (McBlock.parseMcGeneric,           False, False, ),
     2670    'IEM_MC_ACTUALIZE_AVX_STATE_FOR_READ':                       (McBlock.parseMcGeneric,           False, False, ),
     2671    'IEM_MC_ACTUALIZE_FPU_STATE_FOR_CHANGE':                     (McBlock.parseMcGeneric,           False, False, ),
     2672    'IEM_MC_ACTUALIZE_FPU_STATE_FOR_READ':                       (McBlock.parseMcGeneric,           False, False, ),
     2673    'IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE':                     (McBlock.parseMcGeneric,           False, False, ),
     2674    'IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ':                       (McBlock.parseMcGeneric,           False, False, ),
     2675    'IEM_MC_ADD_GREG_U16':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2676    'IEM_MC_ADD_GREG_U16_TO_LOCAL':                              (McBlock.parseMcGeneric,           False, False, ),
     2677    'IEM_MC_ADD_GREG_U32':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2678    'IEM_MC_ADD_GREG_U32_TO_LOCAL':                              (McBlock.parseMcGeneric,           False, False, ),
     2679    'IEM_MC_ADD_GREG_U64':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2680    'IEM_MC_ADD_GREG_U64_TO_LOCAL':                              (McBlock.parseMcGeneric,           False, False, ),
     2681    'IEM_MC_ADD_GREG_U8':                                        (McBlock.parseMcGeneric,           True,  False, ),
     2682    'IEM_MC_ADD_GREG_U8_TO_LOCAL':                               (McBlock.parseMcGeneric,           False, False, ),
     2683    'IEM_MC_ADD_LOCAL_S16_TO_EFF_ADDR':                          (McBlock.parseMcGeneric,           True,  False, ),
     2684    'IEM_MC_ADD_LOCAL_S32_TO_EFF_ADDR':                          (McBlock.parseMcGeneric,           True,  False, ),
     2685    'IEM_MC_ADD_LOCAL_S64_TO_EFF_ADDR':                          (McBlock.parseMcGeneric,           True,  False, ),
     2686    'IEM_MC_ADVANCE_RIP_AND_FINISH':                             (McBlock.parseMcGeneric,           True,  True,  ),
     2687    'IEM_MC_AND_2LOCS_U32':                                      (McBlock.parseMcGeneric,           False, False, ),
     2688    'IEM_MC_AND_ARG_U16':                                        (McBlock.parseMcGeneric,           False, False, ),
     2689    'IEM_MC_AND_ARG_U32':                                        (McBlock.parseMcGeneric,           False, False, ),
     2690    'IEM_MC_AND_ARG_U64':                                        (McBlock.parseMcGeneric,           False, False, ),
     2691    'IEM_MC_AND_GREG_U16':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2692    'IEM_MC_AND_GREG_U32':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2693    'IEM_MC_AND_GREG_U64':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2694    'IEM_MC_AND_GREG_U8':                                        (McBlock.parseMcGeneric,           True,  False, ),
     2695    'IEM_MC_AND_LOCAL_U16':                                      (McBlock.parseMcGeneric,           False, False, ),
     2696    'IEM_MC_AND_LOCAL_U32':                                      (McBlock.parseMcGeneric,           False, False, ),
     2697    'IEM_MC_AND_LOCAL_U64':                                      (McBlock.parseMcGeneric,           False, False, ),
     2698    'IEM_MC_AND_LOCAL_U8':                                       (McBlock.parseMcGeneric,           False, False, ),
     2699    'IEM_MC_ARG':                                                (McBlock.parseMcArg,               False, False, ),
     2700    'IEM_MC_ARG_CONST':                                          (McBlock.parseMcArgConst,          False, False, ),
     2701    'IEM_MC_ARG_LOCAL_EFLAGS':                                   (McBlock.parseMcArgLocalEFlags,    False, False, ),
     2702    'IEM_MC_ARG_LOCAL_REF':                                      (McBlock.parseMcArgLocalRef,       False, False, ),
     2703    'IEM_MC_ASSIGN':                                             (McBlock.parseMcGeneric,           False, False, ),
     2704    'IEM_MC_ASSIGN_TO_SMALLER':                                  (McBlock.parseMcGeneric,           False, False, ),
     2705    'IEM_MC_ASSIGN_U8_SX_U64':                                   (McBlock.parseMcGeneric,           False, False, ),
     2706    'IEM_MC_ASSIGN_U32_SX_U64':                                  (McBlock.parseMcGeneric,           False, False, ),
     2707    'IEM_MC_BEGIN':                                              (McBlock.parseMcBegin,             False, True,  ),
     2708    'IEM_MC_BROADCAST_XREG_U16_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2709    'IEM_MC_BROADCAST_XREG_U32_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2710    'IEM_MC_BROADCAST_XREG_U64_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2711    'IEM_MC_BROADCAST_XREG_U8_ZX_VLMAX':                         (McBlock.parseMcGeneric,           True,  False, ),
     2712    'IEM_MC_BROADCAST_YREG_U128_ZX_VLMAX':                       (McBlock.parseMcGeneric,           True,  False, ),
     2713    'IEM_MC_BROADCAST_YREG_U16_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2714    'IEM_MC_BROADCAST_YREG_U32_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2715    'IEM_MC_BROADCAST_YREG_U64_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2716    'IEM_MC_BROADCAST_YREG_U8_ZX_VLMAX':                         (McBlock.parseMcGeneric,           True,  False, ),
     2717    'IEM_MC_BSWAP_LOCAL_U16':                                    (McBlock.parseMcGeneric,           False, False, ),
     2718    'IEM_MC_BSWAP_LOCAL_U32':                                    (McBlock.parseMcGeneric,           False, False, ),
     2719    'IEM_MC_BSWAP_LOCAL_U64':                                    (McBlock.parseMcGeneric,           False, False, ),
     2720    'IEM_MC_CALC_RM_EFF_ADDR':                                   (McBlock.parseMcGeneric,           False, False, ),
     2721    'IEM_MC_CALL_AIMPL_3':                                       (McBlock.parseMcCallAImpl,         True,  False, ),
     2722    'IEM_MC_CALL_AIMPL_4':                                       (McBlock.parseMcCallAImpl,         True,  False, ),
     2723    'IEM_MC_CALL_AVX_AIMPL_2':                                   (McBlock.parseMcCallAvxAImpl,      True,  False, ),
     2724    'IEM_MC_CALL_AVX_AIMPL_3':                                   (McBlock.parseMcCallAvxAImpl,      True,  False, ),
     2725    'IEM_MC_CALL_CIMPL_0':                                       (McBlock.parseMcCallCImpl,         True,  False, ),
     2726    'IEM_MC_CALL_CIMPL_1':                                       (McBlock.parseMcCallCImpl,         True,  False, ),
     2727    'IEM_MC_CALL_CIMPL_2':                                       (McBlock.parseMcCallCImpl,         True,  False, ),
     2728    'IEM_MC_CALL_CIMPL_3':                                       (McBlock.parseMcCallCImpl,         True,  False, ),
     2729    'IEM_MC_CALL_CIMPL_4':                                       (McBlock.parseMcCallCImpl,         True,  False, ),
     2730    'IEM_MC_CALL_CIMPL_5':                                       (McBlock.parseMcCallCImpl,         True,  False, ),
     2731    'IEM_MC_CALL_FPU_AIMPL_1':                                   (McBlock.parseMcCallFpuAImpl,      True,  False, ),
     2732    'IEM_MC_CALL_FPU_AIMPL_2':                                   (McBlock.parseMcCallFpuAImpl,      True,  False, ),
     2733    'IEM_MC_CALL_FPU_AIMPL_3':                                   (McBlock.parseMcCallFpuAImpl,      True,  False, ),
     2734    'IEM_MC_CALL_MMX_AIMPL_2':                                   (McBlock.parseMcCallMmxAImpl,      True,  False, ),
     2735    'IEM_MC_CALL_MMX_AIMPL_3':                                   (McBlock.parseMcCallMmxAImpl,      True,  False, ),
     2736    'IEM_MC_CALL_SSE_AIMPL_2':                                   (McBlock.parseMcCallSseAImpl,      True,  False, ),
     2737    'IEM_MC_CALL_SSE_AIMPL_3':                                   (McBlock.parseMcCallSseAImpl,      True,  False, ),
     2738    'IEM_MC_CALL_VOID_AIMPL_0':                                  (McBlock.parseMcCallVoidAImpl,     True,  False, ),
     2739    'IEM_MC_CALL_VOID_AIMPL_1':                                  (McBlock.parseMcCallVoidAImpl,     True,  False, ),
     2740    'IEM_MC_CALL_VOID_AIMPL_2':                                  (McBlock.parseMcCallVoidAImpl,     True,  False, ),
     2741    'IEM_MC_CALL_VOID_AIMPL_3':                                  (McBlock.parseMcCallVoidAImpl,     True,  False, ),
     2742    'IEM_MC_CALL_VOID_AIMPL_4':                                  (McBlock.parseMcCallVoidAImpl,     True,  False, ),
     2743    'IEM_MC_CLEAR_EFL_BIT':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2744    'IEM_MC_CLEAR_FSW_EX':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2745    'IEM_MC_CLEAR_HIGH_GREG_U64':                                (McBlock.parseMcGeneric,           True,  False, ),
     2746    'IEM_MC_CLEAR_HIGH_GREG_U64_BY_REF':                         (McBlock.parseMcGeneric,           True,  False, ),
     2747    'IEM_MC_CLEAR_XREG_U32_MASK':                                (McBlock.parseMcGeneric,           True,  False, ),
     2748    'IEM_MC_CLEAR_YREG_128_UP':                                  (McBlock.parseMcGeneric,           True,  False, ),
     2749    'IEM_MC_COMMIT_EFLAGS':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2750    'IEM_MC_COPY_XREG_U128':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2751    'IEM_MC_COPY_YREG_U128_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True,  False, ),
     2752    'IEM_MC_COPY_YREG_U256_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True,  False, ),
     2753    'IEM_MC_COPY_YREG_U64_ZX_VLMAX':                             (McBlock.parseMcGeneric,           True,  False, ),
     2754    'IEM_MC_DEFER_TO_CIMPL_0_RET':                               (McBlock.parseMcDeferToCImpl,      False, False, ),
     2755    'IEM_MC_DEFER_TO_CIMPL_1_RET':                               (McBlock.parseMcDeferToCImpl,      False, False, ),
     2756    'IEM_MC_DEFER_TO_CIMPL_2_RET':                               (McBlock.parseMcDeferToCImpl,      False, False, ),
     2757    'IEM_MC_DEFER_TO_CIMPL_3_RET':                               (McBlock.parseMcDeferToCImpl,      False, False, ),
     2758    'IEM_MC_END':                                                (McBlock.parseMcGeneric,           True,  True,  ),
     2759    'IEM_MC_FETCH_EFLAGS':                                       (McBlock.parseMcGeneric,           False, False, ),
     2760    'IEM_MC_FETCH_EFLAGS_U8':                                    (McBlock.parseMcGeneric,           False, False, ),
     2761    'IEM_MC_FETCH_FCW':                                          (McBlock.parseMcGeneric,           False, False, ),
     2762    'IEM_MC_FETCH_FSW':                                          (McBlock.parseMcGeneric,           False, False, ),
     2763    'IEM_MC_FETCH_GREG_U16':                                     (McBlock.parseMcGeneric,           False, False, ),
     2764    'IEM_MC_FETCH_GREG_U16_SX_U32':                              (McBlock.parseMcGeneric,           False, False, ),
     2765    'IEM_MC_FETCH_GREG_U16_SX_U64':                              (McBlock.parseMcGeneric,           False, False, ),
     2766    'IEM_MC_FETCH_GREG_U16_ZX_U32':                              (McBlock.parseMcGeneric,           False, False, ),
     2767    'IEM_MC_FETCH_GREG_U16_ZX_U64':                              (McBlock.parseMcGeneric,           False, False, ),
     2768    'IEM_MC_FETCH_GREG_U32':                                     (McBlock.parseMcGeneric,           False, False, ),
     2769    'IEM_MC_FETCH_GREG_U32_SX_U64':                              (McBlock.parseMcGeneric,           False, False, ),
     2770    'IEM_MC_FETCH_GREG_U32_ZX_U64':                              (McBlock.parseMcGeneric,           False, False, ),
     2771    'IEM_MC_FETCH_GREG_U64':                                     (McBlock.parseMcGeneric,           False, False, ),
     2772    'IEM_MC_FETCH_GREG_U64_ZX_U64':                              (McBlock.parseMcGeneric,           False, False, ),
     2773    'IEM_MC_FETCH_GREG_U8':                                      (McBlock.parseMcGeneric,           False, False, ),
     2774    'IEM_MC_FETCH_GREG_U8_SX_U16':                               (McBlock.parseMcGeneric,           False, False, ),
     2775    'IEM_MC_FETCH_GREG_U8_SX_U32':                               (McBlock.parseMcGeneric,           False, False, ),
     2776    'IEM_MC_FETCH_GREG_U8_SX_U64':                               (McBlock.parseMcGeneric,           False, False, ),
     2777    'IEM_MC_FETCH_GREG_U8_ZX_U16':                               (McBlock.parseMcGeneric,           False, False, ),
     2778    'IEM_MC_FETCH_GREG_U8_ZX_U32':                               (McBlock.parseMcGeneric,           False, False, ),
     2779    'IEM_MC_FETCH_GREG_U8_ZX_U64':                               (McBlock.parseMcGeneric,           False, False, ),
     2780    'IEM_MC_FETCH_MEM_D80':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2781    'IEM_MC_FETCH_MEM_I16':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2782    'IEM_MC_FETCH_MEM_I32':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2783    'IEM_MC_FETCH_MEM_I64':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2784    'IEM_MC_FETCH_MEM_R32':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2785    'IEM_MC_FETCH_MEM_R64':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2786    'IEM_MC_FETCH_MEM_R80':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2787    'IEM_MC_FETCH_MEM_S32_SX_U64':                               (McBlock.parseMcGeneric,           True,  False, ),
     2788    'IEM_MC_FETCH_MEM_U128':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2789    'IEM_MC_FETCH_MEM_U128_ALIGN_SSE':                           (McBlock.parseMcGeneric,           True,  False, ),
     2790    'IEM_MC_FETCH_MEM_U128_NO_AC':                               (McBlock.parseMcGeneric,           True,  False, ),
     2791    'IEM_MC_FETCH_MEM_U16':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2792    'IEM_MC_FETCH_MEM_U16_DISP':                                 (McBlock.parseMcGeneric,           True,  False, ),
     2793    'IEM_MC_FETCH_MEM_U16_SX_U32':                               (McBlock.parseMcGeneric,           True,  False, ),
     2794    'IEM_MC_FETCH_MEM_U16_SX_U64':                               (McBlock.parseMcGeneric,           True,  False, ),
     2795    'IEM_MC_FETCH_MEM_U16_ZX_U32':                               (McBlock.parseMcGeneric,           True,  False, ),
     2796    'IEM_MC_FETCH_MEM_U16_ZX_U64':                               (McBlock.parseMcGeneric,           True,  False, ),
     2797    'IEM_MC_FETCH_MEM_U256':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2798    'IEM_MC_FETCH_MEM_U256_ALIGN_AVX':                           (McBlock.parseMcGeneric,           True,  False, ),
     2799    'IEM_MC_FETCH_MEM_U256_NO_AC':                               (McBlock.parseMcGeneric,           True,  False, ),
     2800    'IEM_MC_FETCH_MEM_U32':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2801    'IEM_MC_FETCH_MEM_U32_DISP':                                 (McBlock.parseMcGeneric,           True,  False, ),
     2802    'IEM_MC_FETCH_MEM_U32_SX_U64':                               (McBlock.parseMcGeneric,           True,  False, ),
     2803    'IEM_MC_FETCH_MEM_U32_ZX_U64':                               (McBlock.parseMcGeneric,           True,  False, ),
     2804    'IEM_MC_FETCH_MEM_U64':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2805    'IEM_MC_FETCH_MEM_U64_ALIGN_U128':                           (McBlock.parseMcGeneric,           True,  False, ),
     2806    'IEM_MC_FETCH_MEM_U64_DISP':                                 (McBlock.parseMcGeneric,           True,  False, ),
     2807    'IEM_MC_FETCH_MEM_U8':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2808    'IEM_MC_FETCH_MEM_U8_SX_U16':                                (McBlock.parseMcGeneric,           True,  False, ),
     2809    'IEM_MC_FETCH_MEM_U8_SX_U32':                                (McBlock.parseMcGeneric,           True,  False, ),
     2810    'IEM_MC_FETCH_MEM_U8_SX_U64':                                (McBlock.parseMcGeneric,           True,  False, ),
     2811    'IEM_MC_FETCH_MEM_U8_ZX_U16':                                (McBlock.parseMcGeneric,           True,  False, ),
     2812    'IEM_MC_FETCH_MEM_U8_ZX_U32':                                (McBlock.parseMcGeneric,           True,  False, ),
     2813    'IEM_MC_FETCH_MEM_U8_ZX_U64':                                (McBlock.parseMcGeneric,           True,  False, ),
     2814    'IEM_MC_FETCH_MEM_XMM':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2815    'IEM_MC_FETCH_MEM_XMM_ALIGN_SSE':                            (McBlock.parseMcGeneric,           True,  False, ),
     2816    'IEM_MC_FETCH_MEM_XMM_NO_AC':                                (McBlock.parseMcGeneric,           True,  False, ),
     2817    'IEM_MC_FETCH_MEM_XMM_U32':                                  (McBlock.parseMcGeneric,           True,  False, ),
     2818    'IEM_MC_FETCH_MEM_XMM_U64':                                  (McBlock.parseMcGeneric,           True,  False, ),
     2819    'IEM_MC_FETCH_MEM_YMM':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2820    'IEM_MC_FETCH_MEM_YMM_ALIGN_AVX':                            (McBlock.parseMcGeneric,           True,  False, ),
     2821    'IEM_MC_FETCH_MEM_YMM_NO_AC':                                (McBlock.parseMcGeneric,           True,  False, ),
     2822    'IEM_MC_FETCH_MEM16_U8':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2823    'IEM_MC_FETCH_MEM32_U8':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2824    'IEM_MC_FETCH_MREG_U32':                                     (McBlock.parseMcGeneric,           False, False, ),
     2825    'IEM_MC_FETCH_MREG_U64':                                     (McBlock.parseMcGeneric,           False, False, ),
     2826    'IEM_MC_FETCH_SREG_BASE_U32':                                (McBlock.parseMcGeneric,           False, False, ),
     2827    'IEM_MC_FETCH_SREG_BASE_U64':                                (McBlock.parseMcGeneric,           False, False, ),
     2828    'IEM_MC_FETCH_SREG_U16':                                     (McBlock.parseMcGeneric,           False, False, ),
     2829    'IEM_MC_FETCH_SREG_ZX_U32':                                  (McBlock.parseMcGeneric,           False, False, ),
     2830    'IEM_MC_FETCH_SREG_ZX_U64':                                  (McBlock.parseMcGeneric,           False, False, ),
     2831    'IEM_MC_FETCH_XREG_U128':                                    (McBlock.parseMcGeneric,           False, False, ),
     2832    'IEM_MC_FETCH_XREG_U16':                                     (McBlock.parseMcGeneric,           False, False, ),
     2833    'IEM_MC_FETCH_XREG_U32':                                     (McBlock.parseMcGeneric,           False, False, ),
     2834    'IEM_MC_FETCH_XREG_U64':                                     (McBlock.parseMcGeneric,           False, False, ),
     2835    'IEM_MC_FETCH_XREG_U8':                                      (McBlock.parseMcGeneric,           False, False, ),
     2836    'IEM_MC_FETCH_XREG_XMM':                                     (McBlock.parseMcGeneric,           False, False, ),
     2837    'IEM_MC_FETCH_YREG_2ND_U64':                                 (McBlock.parseMcGeneric,           False, False, ),
     2838    'IEM_MC_FETCH_YREG_U128':                                    (McBlock.parseMcGeneric,           False, False, ),
     2839    'IEM_MC_FETCH_YREG_U256':                                    (McBlock.parseMcGeneric,           False, False, ),
     2840    'IEM_MC_FETCH_YREG_U32':                                     (McBlock.parseMcGeneric,           False, False, ),
     2841    'IEM_MC_FETCH_YREG_U64':                                     (McBlock.parseMcGeneric,           False, False, ),
     2842    'IEM_MC_FLIP_EFL_BIT':                                       (McBlock.parseMcGeneric,           True,  False, ),
     2843    'IEM_MC_FPU_FROM_MMX_MODE':                                  (McBlock.parseMcGeneric,           True,  False, ),
     2844    'IEM_MC_FPU_STACK_DEC_TOP':                                  (McBlock.parseMcGeneric,           True,  False, ),
     2845    'IEM_MC_FPU_STACK_FREE':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2846    'IEM_MC_FPU_STACK_INC_TOP':                                  (McBlock.parseMcGeneric,           True,  False, ),
     2847    'IEM_MC_FPU_STACK_PUSH_OVERFLOW':                            (McBlock.parseMcGeneric,           True,  False, ),
     2848    'IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP':                     (McBlock.parseMcGeneric,           True,  False, ),
     2849    'IEM_MC_FPU_STACK_PUSH_UNDERFLOW':                           (McBlock.parseMcGeneric,           True,  False, ),
     2850    'IEM_MC_FPU_STACK_PUSH_UNDERFLOW_TWO':                       (McBlock.parseMcGeneric,           True,  False, ),
     2851    'IEM_MC_FPU_STACK_UNDERFLOW':                                (McBlock.parseMcGeneric,           True,  False, ),
     2852    'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP':                         (McBlock.parseMcGeneric,           True,  False, ),
     2853    'IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP':                (McBlock.parseMcGeneric,           True,  False, ),
     2854    'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP':                       (McBlock.parseMcGeneric,           True,  False, ),
     2855    'IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP_POP':                   (McBlock.parseMcGeneric,           True,  False, ),
     2856    'IEM_MC_FPU_TO_MMX_MODE':                                    (McBlock.parseMcGeneric,           True,  False, ),
     2857    'IEM_MC_IF_CX_IS_NZ':                                        (McBlock.parseMcGenericCond,       True,  False, ),
     2858    'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_NOT_SET':                    (McBlock.parseMcGenericCond,       True,  False, ),
     2859    'IEM_MC_IF_CX_IS_NZ_AND_EFL_BIT_SET':                        (McBlock.parseMcGenericCond,       True,  False, ),
     2860    'IEM_MC_IF_ECX_IS_NZ':                                       (McBlock.parseMcGenericCond,       True,  False, ),
     2861    'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_NOT_SET':                   (McBlock.parseMcGenericCond,       True,  False, ),
     2862    'IEM_MC_IF_ECX_IS_NZ_AND_EFL_BIT_SET':                       (McBlock.parseMcGenericCond,       True,  False, ),
     2863    'IEM_MC_IF_EFL_ANY_BITS_SET':                                (McBlock.parseMcGenericCond,       True,  False, ),
     2864    'IEM_MC_IF_EFL_BIT_NOT_SET':                                 (McBlock.parseMcGenericCond,       True,  False, ),
     2865    'IEM_MC_IF_EFL_BIT_NOT_SET_AND_BITS_EQ':                     (McBlock.parseMcGenericCond,       True,  False, ),
     2866    'IEM_MC_IF_EFL_BIT_SET':                                     (McBlock.parseMcGenericCond,       True,  False, ),
     2867    'IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE':                          (McBlock.parseMcGenericCond,       True,  False, ),
     2868    'IEM_MC_IF_EFL_BITS_EQ':                                     (McBlock.parseMcGenericCond,       True,  False, ),
     2869    'IEM_MC_IF_EFL_BITS_NE':                                     (McBlock.parseMcGenericCond,       True,  False, ),
     2870    'IEM_MC_IF_EFL_NO_BITS_SET':                                 (McBlock.parseMcGenericCond,       True,  False, ),
     2871    'IEM_MC_IF_FCW_IM':                                          (McBlock.parseMcGenericCond,       True,  False, ),
     2872    'IEM_MC_IF_FPUREG_IS_EMPTY':                                 (McBlock.parseMcGenericCond,       True,  False, ),
     2873    'IEM_MC_IF_FPUREG_NOT_EMPTY':                                (McBlock.parseMcGenericCond,       True,  False, ),
     2874    'IEM_MC_IF_FPUREG_NOT_EMPTY_REF_R80':                        (McBlock.parseMcGenericCond,       True,  False, ),
     2875    'IEM_MC_IF_GREG_BIT_SET':                                    (McBlock.parseMcGenericCond,       True,  False, ),
     2876    'IEM_MC_IF_LOCAL_IS_Z':                                      (McBlock.parseMcGenericCond,       True,  False, ),
     2877    'IEM_MC_IF_MXCSR_XCPT_PENDING':                              (McBlock.parseMcGenericCond,       True,  False, ),
     2878    'IEM_MC_IF_RCX_IS_NZ':                                       (McBlock.parseMcGenericCond,       True,  False, ),
     2879    'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_NOT_SET':                   (McBlock.parseMcGenericCond,       True,  False, ),
     2880    'IEM_MC_IF_RCX_IS_NZ_AND_EFL_BIT_SET':                       (McBlock.parseMcGenericCond,       True,  False, ),
     2881    'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80':                   (McBlock.parseMcGenericCond,       True,  False, ),
     2882    'IEM_MC_IF_TWO_FPUREGS_NOT_EMPTY_REF_R80_FIRST':             (McBlock.parseMcGenericCond,       True,  False, ),
     2883    'IEM_MC_IMPLICIT_AVX_AIMPL_ARGS':                            (McBlock.parseMcGeneric,           False, False, ),
     2884    'IEM_MC_INT_CLEAR_ZMM_256_UP':                               (McBlock.parseMcGeneric,           True,  False, ),
     2885    'IEM_MC_LOCAL':                                              (McBlock.parseMcLocal,             False, False, ),
     2886    'IEM_MC_LOCAL_CONST':                                        (McBlock.parseMcLocalConst,        False, False, ),
     2887    'IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT':                       (McBlock.parseMcGeneric,           True,  False, ),
     2888    'IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE':                   (McBlock.parseMcGeneric,           True,  False, ),
     2889    'IEM_MC_MAYBE_RAISE_FPU_XCPT':                               (McBlock.parseMcGeneric,           True,  False, ),
     2890    'IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT':                          (McBlock.parseMcGeneric,           True,  False, ),
     2891    'IEM_MC_MAYBE_RAISE_MMX_RELATED_XCPT':                       (McBlock.parseMcGeneric,           True,  False, ),
     2892    'IEM_MC_MAYBE_RAISE_NON_CANONICAL_ADDR_GP0':                 (McBlock.parseMcGeneric,           True,  False, ),
     2893    'IEM_MC_MAYBE_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT':             (McBlock.parseMcGeneric,           True,  False, ),
     2894    'IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT':                       (McBlock.parseMcGeneric,           True,  False, ),
     2895    'IEM_MC_MAYBE_RAISE_WAIT_DEVICE_NOT_AVAILABLE':              (McBlock.parseMcGeneric,           True,  False, ),
     2896    'IEM_MC_MEM_COMMIT_AND_UNMAP':                               (McBlock.parseMcGeneric,           True,  False, ),
     2897    'IEM_MC_MEM_COMMIT_AND_UNMAP_RW':                            (McBlock.parseMcGeneric,           True,  False, ),
     2898    'IEM_MC_MEM_COMMIT_AND_UNMAP_RO':                            (McBlock.parseMcGeneric,           True,  False, ),
     2899    'IEM_MC_MEM_COMMIT_AND_UNMAP_WO':                            (McBlock.parseMcGeneric,           True,  False, ),
     2900    'IEM_MC_MEM_COMMIT_AND_UNMAP_FOR_FPU_STORE':                 (McBlock.parseMcGeneric,           True,  False, ),
     2901    'IEM_MC_MEM_MAP':                                            (McBlock.parseMcGeneric,           True,  False, ),
     2902    'IEM_MC_MEM_MAP_EX':                                         (McBlock.parseMcGeneric,           True,  False, ),
     2903    'IEM_MC_MEM_MAP_U8_RW':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2904    'IEM_MC_MEM_MAP_U8_RO':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2905    'IEM_MC_MEM_MAP_U8_WO':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2906    'IEM_MC_MEM_MAP_U16_RW':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2907    'IEM_MC_MEM_MAP_U16_RO':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2908    'IEM_MC_MEM_MAP_U16_WO':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2909    'IEM_MC_MEM_MAP_U32_RW':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2910    'IEM_MC_MEM_MAP_U32_RO':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2911    'IEM_MC_MEM_MAP_U32_WO':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2912    'IEM_MC_MEM_MAP_U64_RW':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2913    'IEM_MC_MEM_MAP_U64_RO':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2914    'IEM_MC_MEM_MAP_U64_WO':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2915    'IEM_MC_MERGE_YREG_U32_U96_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2916    'IEM_MC_MERGE_YREG_U64_U64_ZX_VLMAX':                        (McBlock.parseMcGeneric,           True,  False, ),
     2917    'IEM_MC_MERGE_YREG_U64HI_U64HI_ZX_VLMAX':                    (McBlock.parseMcGeneric,           True,  False, ),
     2918    'IEM_MC_MERGE_YREG_U64LO_U64LO_ZX_VLMAX':                    (McBlock.parseMcGeneric,           True,  False, ),
     2919    'IEM_MC_MERGE_YREG_U64LO_U64LOCAL_ZX_VLMAX':                 (McBlock.parseMcGeneric,           True,  False, ),
     2920    'IEM_MC_MERGE_YREG_U64LOCAL_U64HI_ZX_VLMAX':                 (McBlock.parseMcGeneric,           True,  False, ),
     2921    'IEM_MC_MODIFIED_MREG':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2922    'IEM_MC_MODIFIED_MREG_BY_REF':                               (McBlock.parseMcGeneric,           True,  False, ),
     2923    'IEM_MC_OR_2LOCS_U32':                                       (McBlock.parseMcGeneric,           False, False, ),
     2924    'IEM_MC_OR_GREG_U16':                                        (McBlock.parseMcGeneric,           True,  False, ),
     2925    'IEM_MC_OR_GREG_U32':                                        (McBlock.parseMcGeneric,           True,  False, ),
     2926    'IEM_MC_OR_GREG_U64':                                        (McBlock.parseMcGeneric,           True,  False, ),
     2927    'IEM_MC_OR_GREG_U8':                                         (McBlock.parseMcGeneric,           True,  False, ),
     2928    'IEM_MC_OR_LOCAL_U16':                                       (McBlock.parseMcGeneric,           False, False, ),
     2929    'IEM_MC_OR_LOCAL_U32':                                       (McBlock.parseMcGeneric,           False, False, ),
     2930    'IEM_MC_OR_LOCAL_U8':                                        (McBlock.parseMcGeneric,           False, False, ),
     2931    'IEM_MC_POP_U16':                                            (McBlock.parseMcGeneric,           True,  False, ),
     2932    'IEM_MC_POP_U32':                                            (McBlock.parseMcGeneric,           True,  False, ),
     2933    'IEM_MC_POP_U64':                                            (McBlock.parseMcGeneric,           True,  False, ),
     2934    'IEM_MC_PREPARE_AVX_USAGE':                                  (McBlock.parseMcGeneric,           False, False, ),
     2935    'IEM_MC_PREPARE_FPU_USAGE':                                  (McBlock.parseMcGeneric,           False, False, ),
     2936    'IEM_MC_PREPARE_SSE_USAGE':                                  (McBlock.parseMcGeneric,           False, False, ),
     2937    'IEM_MC_PUSH_FPU_RESULT':                                    (McBlock.parseMcGeneric,           True,  False, ),
     2938    'IEM_MC_PUSH_FPU_RESULT_MEM_OP':                             (McBlock.parseMcGeneric,           True,  False, ),
     2939    'IEM_MC_PUSH_FPU_RESULT_TWO':                                (McBlock.parseMcGeneric,           True,  False, ),
     2940    'IEM_MC_PUSH_U16':                                           (McBlock.parseMcGeneric,           True,  False, ),
     2941    'IEM_MC_PUSH_U32':                                           (McBlock.parseMcGeneric,           True,  False, ),
     2942    'IEM_MC_PUSH_U32_SREG':                                      (McBlock.parseMcGeneric,           True,  False, ),
     2943    'IEM_MC_PUSH_U64':                                           (McBlock.parseMcGeneric,           True,  False, ),
     2944    'IEM_MC_RAISE_DIVIDE_ERROR':                                 (McBlock.parseMcGeneric,           True,  False, ),
     2945    'IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO':                          (McBlock.parseMcGeneric,           True,  False, ),
     2946    'IEM_MC_RAISE_GP0_IF_EFF_ADDR_UNALIGNED':                    (McBlock.parseMcGeneric,           True,  False, ),
     2947    'IEM_MC_RAISE_SSE_AVX_SIMD_FP_OR_UD_XCPT':                   (McBlock.parseMcGeneric,           True,  False, ),
     2948    'IEM_MC_REF_EFLAGS':                                         (McBlock.parseMcGeneric,           False, False, ),
     2949    'IEM_MC_REF_FPUREG':                                         (McBlock.parseMcGeneric,           False, False, ),
     2950    'IEM_MC_REF_GREG_I32':                                       (McBlock.parseMcGeneric,           False, False, ),
     2951    'IEM_MC_REF_GREG_I32_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2952    'IEM_MC_REF_GREG_I64':                                       (McBlock.parseMcGeneric,           False, False, ),
     2953    'IEM_MC_REF_GREG_I64_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2954    'IEM_MC_REF_GREG_U16':                                       (McBlock.parseMcGeneric,           False, False, ),
     2955    'IEM_MC_REF_GREG_U16_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2956    'IEM_MC_REF_GREG_U32':                                       (McBlock.parseMcGeneric,           False, False, ),
     2957    'IEM_MC_REF_GREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2958    'IEM_MC_REF_GREG_U64':                                       (McBlock.parseMcGeneric,           False, False, ),
     2959    'IEM_MC_REF_GREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2960    'IEM_MC_REF_GREG_U8':                                        (McBlock.parseMcGeneric,           False, False, ),
     2961    'IEM_MC_REF_GREG_U8_CONST':                                  (McBlock.parseMcGeneric,           False, False, ),
     2962    'IEM_MC_REF_LOCAL':                                          (McBlock.parseMcGeneric,           False, False, ),
     2963    'IEM_MC_REF_MREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2964    'IEM_MC_REF_MREG_U64':                                       (McBlock.parseMcGeneric,           False, False, ),
     2965    'IEM_MC_REF_MREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2966    'IEM_MC_REF_MXCSR':                                          (McBlock.parseMcGeneric,           False, False, ),
     2967    'IEM_MC_REF_XREG_R32_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2968    'IEM_MC_REF_XREG_R64_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2969    'IEM_MC_REF_XREG_U128':                                      (McBlock.parseMcGeneric,           False, False, ),
     2970    'IEM_MC_REF_XREG_U128_CONST':                                (McBlock.parseMcGeneric,           False, False, ),
     2971    'IEM_MC_REF_XREG_U32_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2972    'IEM_MC_REF_XREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2973    'IEM_MC_REF_XREG_XMM_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2974    'IEM_MC_REF_YREG_U128':                                      (McBlock.parseMcGeneric,           False, False, ),
     2975    'IEM_MC_REF_YREG_U128_CONST':                                (McBlock.parseMcGeneric,           False, False, ),
     2976    'IEM_MC_REF_YREG_U64_CONST':                                 (McBlock.parseMcGeneric,           False, False, ),
     2977    'IEM_MC_REL_JMP_S16_AND_FINISH':                             (McBlock.parseMcGeneric,           True,  False, ),
     2978    'IEM_MC_REL_JMP_S32_AND_FINISH':                             (McBlock.parseMcGeneric,           True,  False, ),
     2979    'IEM_MC_REL_JMP_S8_AND_FINISH':                              (McBlock.parseMcGeneric,           True,  False, ),
     2980    'IEM_MC_RETURN_ON_FAILURE':                                  (McBlock.parseMcGeneric,           False, False, ),
     2981    'IEM_MC_SAR_LOCAL_S16':                                      (McBlock.parseMcGeneric,           False, False, ),
     2982    'IEM_MC_SAR_LOCAL_S32':                                      (McBlock.parseMcGeneric,           False, False, ),
     2983    'IEM_MC_SAR_LOCAL_S64':                                      (McBlock.parseMcGeneric,           False, False, ),
     2984    'IEM_MC_SET_EFL_BIT':                                        (McBlock.parseMcGeneric,           True,  False, ),
     2985    'IEM_MC_SET_FPU_RESULT':                                     (McBlock.parseMcGeneric,           True,  False, ),
     2986    'IEM_MC_SET_RIP_U16_AND_FINISH':                             (McBlock.parseMcGeneric,           True,  False, ),
     2987    'IEM_MC_SET_RIP_U32_AND_FINISH':                             (McBlock.parseMcGeneric,           True,  False, ),
     2988    'IEM_MC_SET_RIP_U64_AND_FINISH':                             (McBlock.parseMcGeneric,           True,  False, ),
     2989    'IEM_MC_SHL_LOCAL_S16':                                      (McBlock.parseMcGeneric,           False, False, ),
     2990    'IEM_MC_SHL_LOCAL_S32':                                      (McBlock.parseMcGeneric,           False, False, ),
     2991    'IEM_MC_SHL_LOCAL_S64':                                      (McBlock.parseMcGeneric,           False, False, ),
     2992    'IEM_MC_SHR_LOCAL_U8':                                       (McBlock.parseMcGeneric,           False, False, ),
     2993    'IEM_MC_SSE_UPDATE_MXCSR':                                   (McBlock.parseMcGeneric,           True,  False, ),
     2994    'IEM_MC_STORE_FPU_RESULT':                                   (McBlock.parseMcGeneric,           True,  False, ),
     2995    'IEM_MC_STORE_FPU_RESULT_MEM_OP':                            (McBlock.parseMcGeneric,           True,  False, ),
     2996    'IEM_MC_STORE_FPU_RESULT_THEN_POP':                          (McBlock.parseMcGeneric,           True,  False, ),
     2997    'IEM_MC_STORE_FPU_RESULT_WITH_MEM_OP_THEN_POP':              (McBlock.parseMcGeneric,           True,  False, ),
     2998    'IEM_MC_STORE_FPUREG_R80_SRC_REF':                           (McBlock.parseMcGeneric,           True,  False, ),
     2999    'IEM_MC_STORE_GREG_I64':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3000    'IEM_MC_STORE_GREG_U16':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3001    'IEM_MC_STORE_GREG_U16_CONST':                               (McBlock.parseMcGeneric,           True,  False, ),
     3002    'IEM_MC_STORE_GREG_U32':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3003    'IEM_MC_STORE_GREG_U32_CONST':                               (McBlock.parseMcGeneric,           True,  False, ),
     3004    'IEM_MC_STORE_GREG_U64':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3005    'IEM_MC_STORE_GREG_U64_CONST':                               (McBlock.parseMcGeneric,           True,  False, ),
     3006    'IEM_MC_STORE_GREG_U8':                                      (McBlock.parseMcGeneric,           True,  False, ),
     3007    'IEM_MC_STORE_GREG_U8_CONST':                                (McBlock.parseMcGeneric,           True,  False, ),
     3008    'IEM_MC_STORE_MEM_I16_CONST_BY_REF':                         (McBlock.parseMcGeneric,           True,  False, ),
     3009    'IEM_MC_STORE_MEM_I32_CONST_BY_REF':                         (McBlock.parseMcGeneric,           True,  False, ),
     3010    'IEM_MC_STORE_MEM_I64_CONST_BY_REF':                         (McBlock.parseMcGeneric,           True,  False, ),
     3011    'IEM_MC_STORE_MEM_I8_CONST_BY_REF':                          (McBlock.parseMcGeneric,           True,  False, ),
     3012    'IEM_MC_STORE_MEM_INDEF_D80_BY_REF':                         (McBlock.parseMcGeneric,           True,  False, ),
     3013    'IEM_MC_STORE_MEM_NEG_QNAN_R32_BY_REF':                      (McBlock.parseMcGeneric,           True,  False, ),
     3014    'IEM_MC_STORE_MEM_NEG_QNAN_R64_BY_REF':                      (McBlock.parseMcGeneric,           True,  False, ),
     3015    'IEM_MC_STORE_MEM_NEG_QNAN_R80_BY_REF':                      (McBlock.parseMcGeneric,           True,  False, ),
     3016    'IEM_MC_STORE_MEM_U128':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3017    'IEM_MC_STORE_MEM_U128_ALIGN_SSE':                           (McBlock.parseMcGeneric,           True,  False, ),
     3018    'IEM_MC_STORE_MEM_U16':                                      (McBlock.parseMcGeneric,           True,  False, ),
     3019    'IEM_MC_STORE_MEM_U16_CONST':                                (McBlock.parseMcGeneric,           True,  False, ),
     3020    'IEM_MC_STORE_MEM_U256':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3021    'IEM_MC_STORE_MEM_U256_ALIGN_AVX':                           (McBlock.parseMcGeneric,           True,  False, ),
     3022    'IEM_MC_STORE_MEM_U32':                                      (McBlock.parseMcGeneric,           True,  False, ),
     3023    'IEM_MC_STORE_MEM_U32_CONST':                                (McBlock.parseMcGeneric,           True,  False, ),
     3024    'IEM_MC_STORE_MEM_U64':                                      (McBlock.parseMcGeneric,           True,  False, ),
     3025    'IEM_MC_STORE_MEM_U64_CONST':                                (McBlock.parseMcGeneric,           True,  False, ),
     3026    'IEM_MC_STORE_MEM_U8':                                       (McBlock.parseMcGeneric,           True,  False, ),
     3027    'IEM_MC_STORE_MEM_U8_CONST':                                 (McBlock.parseMcGeneric,           True,  False, ),
     3028    'IEM_MC_STORE_MREG_U32_ZX_U64':                              (McBlock.parseMcGeneric,           True,  False, ),
     3029    'IEM_MC_STORE_MREG_U64':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3030    'IEM_MC_STORE_SREG_BASE_U32':                                (McBlock.parseMcGeneric,           True,  False, ),
     3031    'IEM_MC_STORE_SREG_BASE_U64':                                (McBlock.parseMcGeneric,           True,  False, ),
     3032    'IEM_MC_STORE_SSE_RESULT':                                   (McBlock.parseMcGeneric,           True,  False, ),
     3033    'IEM_MC_STORE_XREG_HI_U64':                                  (McBlock.parseMcGeneric,           True,  False, ),
     3034    'IEM_MC_STORE_XREG_R32':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3035    'IEM_MC_STORE_XREG_R64':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3036    'IEM_MC_STORE_XREG_U128':                                    (McBlock.parseMcGeneric,           True,  False, ),
     3037    'IEM_MC_STORE_XREG_U16':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3038    'IEM_MC_STORE_XREG_U32':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3039    'IEM_MC_STORE_XREG_U32_U128':                                (McBlock.parseMcGeneric,           True,  False, ),
     3040    'IEM_MC_STORE_XREG_U32_ZX_U128':                             (McBlock.parseMcGeneric,           True,  False, ),
     3041    'IEM_MC_STORE_XREG_U64':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3042    'IEM_MC_STORE_XREG_U64_ZX_U128':                             (McBlock.parseMcGeneric,           True,  False, ),
     3043    'IEM_MC_STORE_XREG_U8':                                      (McBlock.parseMcGeneric,           True,  False, ),
     3044    'IEM_MC_STORE_XREG_XMM':                                     (McBlock.parseMcGeneric,           True,  False, ),
     3045    'IEM_MC_STORE_XREG_XMM_U32':                                 (McBlock.parseMcGeneric,           True,  False, ),
     3046    'IEM_MC_STORE_XREG_XMM_U64':                                 (McBlock.parseMcGeneric,           True,  False, ),
     3047    'IEM_MC_STORE_YREG_U128':                                    (McBlock.parseMcGeneric,           True,  False, ),
     3048    'IEM_MC_STORE_YREG_U128_ZX_VLMAX':                           (McBlock.parseMcGeneric,           True,  False, ),
     3049    'IEM_MC_STORE_YREG_U256_ZX_VLMAX':                           (McBlock.parseMcGeneric,           True,  False, ),
     3050    'IEM_MC_STORE_YREG_U32_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True,  False, ),
     3051    'IEM_MC_STORE_YREG_U64_ZX_VLMAX':                            (McBlock.parseMcGeneric,           True,  False, ),
     3052    'IEM_MC_SUB_GREG_U16':                                       (McBlock.parseMcGeneric,           True,  False, ),
     3053    'IEM_MC_SUB_GREG_U32':                                       (McBlock.parseMcGeneric,           True,  False, ),
     3054    'IEM_MC_SUB_GREG_U64':                                       (McBlock.parseMcGeneric,           True,  False, ),
     3055    'IEM_MC_SUB_GREG_U8':                                        (McBlock.parseMcGeneric,           True,  False, ),
     3056    'IEM_MC_SUB_LOCAL_U16':                                      (McBlock.parseMcGeneric,           False, False, ),
     3057    'IEM_MC_UPDATE_FPU_OPCODE_IP':                               (McBlock.parseMcGeneric,           True,  False, ),
     3058    'IEM_MC_UPDATE_FSW':                                         (McBlock.parseMcGeneric,           True,  False, ),
     3059    'IEM_MC_UPDATE_FSW_CONST':                                   (McBlock.parseMcGeneric,           True,  False, ),
     3060    'IEM_MC_UPDATE_FSW_THEN_POP':                                (McBlock.parseMcGeneric,           True,  False, ),
     3061    'IEM_MC_UPDATE_FSW_THEN_POP_POP':                            (McBlock.parseMcGeneric,           True,  False, ),
     3062    'IEM_MC_UPDATE_FSW_WITH_MEM_OP':                             (McBlock.parseMcGeneric,           True,  False, ),
     3063    'IEM_MC_UPDATE_FSW_WITH_MEM_OP_THEN_POP':                    (McBlock.parseMcGeneric,           True,  False, ),
    30053064};
    30063065
    30073066## List of microcode blocks.
    3008 g_aoMcBlocks = [] # type: list(McBlock)
     3067g_aoMcBlocks = [] # type: List[McBlock]
    30093068
    30103069
     
    30773136        self.sComment       = '';
    30783137        self.iCommentLine   = 0;
    3079         self.aoCurInstrs    = []    # type: list(Instruction)
     3138        self.aoCurInstrs    = []    # type: List[Instruction]
    30803139        self.oCurFunction   = None  # type: DecoderFunction
    30813140        self.iMcBlockInFunc = 0;
    30823141        self.oCurMcBlock    = None  # type: McBlock
    3083         self.dMacros        = {}    # type: Dict[str,SimpleParser.Macro]
     3142        self.dMacros        = {}    # type: Dict[str, SimpleParser.Macro]
    30843143        self.oReMacros      = None  # type: re      ##< Regular expression matching invocations of anything in self.dMacros.
    30853144        if oInheritMacrosFrom:
     
    48744933                            % (sStmt, len(asArgs), cParams + 3,));
    48754934
    4876         oMcBlock.aoStmts = [McStmtCall(asArgs[0], asArgs[1:], 1),];
     4935        oMcBlock.aoStmts = [ McBlock.parseMcDeferToCImpl(oMcBlock, asArgs[0], asArgs[1:]), ];
    48774936
    48784937        # These MCs are not typically part of macro expansions, but let's get
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f38.cpp.h

    r100856 r101387  
    4949        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    5050        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    51         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     51        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    5252        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3);
    5353        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    7070         * MMX, [mem64].
    7171         */
    72         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     72        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    7373        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    7474        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    111111         * Register, register.
    112112         */
    113         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     113        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    114114        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3);
    115115        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    128128         * Register, memory.
    129129         */
    130         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     130        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    131131        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    132132        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    167167         * Register, register.
    168168         */
    169         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     169        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    170170        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    171171        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    184184         * Register, memory.
    185185         */
    186         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     186        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    187187        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    188188        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    226226         * Register, register.
    227227         */
    228         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     228        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    229229        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    230230        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    243243         * Register, memory.
    244244         */
    245         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     245        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    246246        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    247247        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    282282         * Register, register.
    283283         */
    284         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     284        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    285285        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    286286        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    299299         * Register, memory.
    300300         */
    301         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     301        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    302302        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    303303        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    342342         * Register, register.
    343343         */
    344         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     344        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    345345        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi);
    346346        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    359359         * Register, memory.
    360360         */
    361         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     361        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    362362        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    363363        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    402402         * Register, register.
    403403         */
    404         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     404        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    405405        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha);
    406406        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    419419         * Register, memory.
    420420         */
    421         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     421        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    422422        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    423423        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    690690         * Register, register. \
    691691         */ \
    692         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     692        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    693693        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \
    694694        IEM_MC_ARG(PRTUINT128U,  puDst,  0); \
     
    712712         * Register, memory. \
    713713         */ \
    714         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER); \
     714        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    715715        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc); \
    716716        IEM_MC_LOCAL(RTUINT128U,                uSrc); \
     
    785785         * Register, register.
    786786         */
    787         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     787        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    788788        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    789789        IEM_MC_ARG(PCRTUINT128U,                puSrc1,  0);
     
    804804         * Register, memory.
    805805         */
    806         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     806        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    807807        IEM_MC_ARG(PCRTUINT128U,                puSrc1,        0);
    808808        IEM_MC_LOCAL(RTUINT128U,                uSrc2);
     
    906906         * Register, register. \
    907907         */ \
    908         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     908        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    909909        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41); \
    910910        IEM_MC_ARG(PRTUINT128U,                 puDst, 0); \
     
    926926         * Register, memory. \
    927927         */ \
    928         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER); \
     928        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    929929        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc); \
    930930        IEM_MC_ARG(PRTUINT128U,                 puDst, 0); \
     
    10391039    {
    10401040        /* Register, memory. */
    1041         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1041        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10421042        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    10431043        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    13171317        if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    13181318        {
    1319             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     1319            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    13201320            IEM_MC_ARG(uint8_t,  iEffSeg,         0);
    13211321            IEM_MC_ARG(RTGCPTR,  GCPtrInveptDesc, 1);
     
    13331333        else
    13341334        {
    1335             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1335            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13361336            IEM_MC_ARG(uint8_t,  iEffSeg,         0);
    13371337            IEM_MC_ARG(RTGCPTR,  GCPtrInveptDesc, 1);
     
    13681368        if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    13691369        {
    1370             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     1370            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    13711371            IEM_MC_ARG(uint8_t,  iEffSeg,          0);
    13721372            IEM_MC_ARG(RTGCPTR,  GCPtrInvvpidDesc, 1);
     
    13841384        else
    13851385        {
    1386             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1386            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13871387            IEM_MC_ARG(uint8_t,  iEffSeg,          0);
    13881388            IEM_MC_ARG(RTGCPTR,  GCPtrInvvpidDesc, 1);
     
    14171417        if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    14181418        {
    1419             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     1419            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    14201420            IEM_MC_ARG(uint8_t,  iEffSeg,          0);
    14211421            IEM_MC_ARG(RTGCPTR,  GCPtrInvpcidDesc, 1);
     
    14301430        else
    14311431        {
    1432             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1432            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14331433            IEM_MC_ARG(uint8_t,  iEffSeg,          0);
    14341434            IEM_MC_ARG(RTGCPTR,  GCPtrInvpcidDesc, 1);
     
    15771577         * Register, register.
    15781578         */
    1579         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1579        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    15801580        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha);
    15811581        IEM_MC_ARG(PRTUINT128U,                 puDst, 0);
     
    15971597         * Register, memory.
    15981598         */
    1599         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1599        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16001600        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    16011601        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    17421742        {
    17431743            case IEMMODE_16BIT:
    1744                 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1744                IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    17451745                IEM_MC_LOCAL(uint16_t,  uSrc);
    17461746                IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    17581758
    17591759            case IEMMODE_32BIT:
    1760                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     1760                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    17611761                IEM_MC_LOCAL(uint32_t,  uSrc);
    17621762                IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    17741774
    17751775            case IEMMODE_64BIT:
    1776                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     1776                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    17771777                IEM_MC_LOCAL(uint64_t,  uSrc);
    17781778                IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    18161816         * Register, register.
    18171817         */
    1818         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1818        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18191819        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    18201820        IEM_MC_ARG(uint32_t *,          puDst, 0);
     
    18321832         * Register, memory.
    18331833         */
    1834         IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1834        IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18351835        IEM_MC_ARG(uint32_t *,          puDst, 0);
    18361836        IEM_MC_ARG(uint8_t,             uSrc,  1);
     
    18671867        {
    18681868            case IEMMODE_16BIT:
    1869                 IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1869                IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18701870                IEM_MC_LOCAL(uint16_t, u16Value);
    18711871                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    18801880
    18811881            case IEMMODE_32BIT:
    1882                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     1882                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    18831883                IEM_MC_LOCAL(uint32_t, u32Value);
    18841884                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    18931893
    18941894            case IEMMODE_64BIT:
    1895                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     1895                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    18961896                IEM_MC_LOCAL(uint64_t, u64Value);
    18971897                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    19351935        {
    19361936            case IEMMODE_16BIT:
    1937                 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1937                IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    19381938                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    19391939                IEM_MC_ARG(uint32_t *,          puDst, 0);
     
    19491949
    19501950            case IEMMODE_32BIT:
    1951                 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386);
     1951                IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0);
    19521952                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    19531953                IEM_MC_ARG(uint32_t *,          puDst, 0);
     
    19631963
    19641964            case IEMMODE_64BIT:
    1965                 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     1965                IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    19661966                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    19671967                IEM_MC_ARG(uint32_t *,          puDst, 0);
     
    19871987        {
    19881988            case IEMMODE_16BIT:
    1989                 IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1989                IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    19901990                IEM_MC_ARG(uint32_t *,          puDst, 0);
    19911991                IEM_MC_ARG(uint16_t,            uSrc,  1);
     
    20062006
    20072007            case IEMMODE_32BIT:
    2008                 IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_386);
     2008                IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_386, 0);
    20092009                IEM_MC_ARG(uint32_t *,          puDst, 0);
    20102010                IEM_MC_ARG(uint32_t,            uSrc,  1);
     
    20252025
    20262026            case IEMMODE_64BIT:
    2027                 IEM_MC_BEGIN(2, 1, IEM_MC_F_64BIT);
     2027                IEM_MC_BEGIN(2, 1, IEM_MC_F_64BIT, 0);
    20282028                IEM_MC_ARG(uint32_t *,          puDst, 0);
    20292029                IEM_MC_ARG(uint64_t,            uSrc,  1);
     
    20812081            if (IEM_IS_MODRM_REG_MODE(bRm)) \
    20822082            { \
    2083                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     2083                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    20842084                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    20852085                IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
     
    20962096            else \
    20972097            { \
    2098                 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \
     2098                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
    20992099                IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
    21002100                IEM_MC_ARG(uint32_t *,      pEFlags,                1); \
     
    21162116            if (IEM_IS_MODRM_REG_MODE(bRm)) \
    21172117            { \
    2118                 IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     2118                IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    21192119                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    21202120                IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
     
    21312131            else \
    21322132            { \
    2133                 IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     2133                IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    21342134                IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
    21352135                IEM_MC_ARG(uint32_t *,      pEFlags,                1); \
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f3a.cpp.h

    r100856 r101387  
    5252         */
    5353        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    54         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     54        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    5555        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3);
    5656        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
     
    7070         * Register, memory.
    7171         */
    72         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     72        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    7373        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    7474        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    111111         */
    112112        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    113         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     113        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    114114        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    115115        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
     
    129129         * XMM, [mem128], imm8.
    130130         */
    131         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     131        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    132132        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    133133        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    171171         */
    172172        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    173         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     173        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    174174        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    175175        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
     
    196196         * XMM, [mem128], imm8.
    197197         */
    198         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     198        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    199199        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    200200        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    243243         */
    244244        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    245         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     245        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    246246        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fAesNi);
    247247        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
     
    261261         * Register, memory.
    262262         */
    263         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     263        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    264264        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    265265        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    323323         */
    324324        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    325         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     325        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    326326        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    327327        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
     
    348348         * XMM32, [mem32].
    349349         */
    350         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     350        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    351351        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    352352        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    388388         */
    389389        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    390         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     390        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    391391        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    392392        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
     
    413413         * XMM64, [mem64], imm8.
    414414         */
    415         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     415        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    416416        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    417417        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    481481        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    482482        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    483         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     483        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    484484        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSsse3);
    485485        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    502502         * Register, memory.
    503503         */
    504         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     504        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    505505        IEM_MC_ARG(uint64_t *,                  pDst,                0);
    506506        IEM_MC_ARG(uint64_t,                    uSrc,                1);
     
    553553         */
    554554        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    555         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     555        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    556556        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    557557        IEM_MC_LOCAL(uint8_t,   uValue);
     
    568568         * [mem8], XMM.
    569569         */
    570         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     570        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    571571        IEM_MC_LOCAL(uint8_t,   uValue);
    572572        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    597597         */
    598598        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    599         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     599        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    600600        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    601601        IEM_MC_LOCAL(uint16_t,  uValue);
     
    612612         * [mem16], XMM.
    613613         */
    614         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     614        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    615615        IEM_MC_LOCAL(uint16_t,  uValue);
    616616        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    648648             */
    649649            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    650             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     650            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    651651            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    652652            IEM_MC_LOCAL(uint64_t,  uSrc);
     
    663663             * [mem64], XMM.
    664664             */
    665             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     665            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    666666            IEM_MC_LOCAL(uint64_t,  uSrc);
    667667            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    695695             */
    696696            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    697             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     697            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    698698            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    699699            IEM_MC_LOCAL(uint32_t,  uSrc);
     
    710710             * [mem32], XMM.
    711711             */
    712             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     712            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    713713            IEM_MC_LOCAL(uint32_t,  uSrc);
    714714            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    739739         */
    740740        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    741         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     741        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    742742        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    743743        IEM_MC_LOCAL(uint32_t,  uSrc);
     
    754754         * [mem32], XMM.
    755755         */
    756         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     756        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    757757        IEM_MC_LOCAL(uint32_t,  uSrc);
    758758        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    792792         */
    793793        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    794         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     794        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    795795        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    796796        IEM_MC_LOCAL(uint8_t,   uSrc);
     
    807807         * XMM, [mem8].
    808808         */
    809         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     809        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    810810        IEM_MC_LOCAL(uint8_t,   uSrc);
    811811        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    835835         */
    836836        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    837         IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER);
     837        IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    838838        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    839839        IEM_MC_LOCAL(uint32_t,  uSrc);
     
    859859         * XMM, [mem32].
    860860         */
    861         IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER);
     861        IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    862862        IEM_MC_LOCAL(uint32_t,  uSrc);
    863863        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    899899             */
    900900            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    901             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     901            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    902902            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    903903            IEM_MC_LOCAL(uint64_t,  uSrc);
     
    914914             * XMM, [mem64].
    915915             */
    916             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     916            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    917917            IEM_MC_LOCAL(uint64_t,  uSrc);
    918918            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    946946             */
    947947            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    948             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     948            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    949949            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse41);
    950950            IEM_MC_LOCAL(uint32_t,  uSrc);
     
    961961             * XMM, [mem32].
    962962             */
    963             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     963            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    964964            IEM_MC_LOCAL(uint32_t,  uSrc);
    965965            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    10551055         */
    10561056        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1057         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1057        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10581058        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fPclMul);
    10591059        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
     
    10761076         * Register, memory.
    10771077         */
    1078         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1078        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10791079        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    10801080        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    11471147             */
    11481148            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1149             IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT);
     1149            IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0);
    11501150            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    11511151            IEM_MC_ARG(PRTUINT128U,                puDst,             0);
     
    11741174             * Register, memory.
    11751175             */
    1176             IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT);
     1176            IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0);
    11771177            IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    11781178            IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    12111211             */
    12121212            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1213             IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1213            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12141214            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    12151215            IEM_MC_ARG(PRTUINT128U,                puDst,             0);
     
    12381238             * Register, memory.
    12391239             */
    1240             IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1240            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12411241            IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    12421242            IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    12831283             */
    12841284            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1285             IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT);
     1285            IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0);
    12861286            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    12871287            IEM_MC_ARG(uint32_t *,                 pu32Ecx,             0);
     
    13111311             * Register, memory.
    13121312             */
    1313             IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT);
     1313            IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0);
    13141314            IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    13151315            IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    13481348             */
    13491349            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1350             IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1350            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13511351            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    13521352            IEM_MC_ARG(uint32_t *,                 pu32Ecx,             0);
     
    13761376             * Register, memory.
    13771377             */
    1378             IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1378            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13791379            IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    13801380            IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    14201420         */
    14211421        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1422         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1422        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14231423        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    14241424        IEM_MC_ARG(PRTUINT128U,                puDst,             0);
     
    14451445         * Register, memory.
    14461446         */
    1447         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1447        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14481448        IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    14491449        IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    14851485         */
    14861486        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1487         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1487        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14881488        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse42);
    14891489        IEM_MC_ARG(uint32_t *,                 pu32Ecx,             0);
     
    15111511         * Register, memory.
    15121512         */
    1513         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1513        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    15141514        IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    15151515        IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    15821582         */
    15831583        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1584         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1584        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    15851585        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSha);
    15861586        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
     
    16031603         * XMM, [mem128], imm8.
    16041604         */
    1605         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1605        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16061606        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    16071607        IEM_MC_LOCAL(RTUINT128U,                uSrc);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r100864 r101387  
    5050        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    5151        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    52         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     52        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    5353        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    5454        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    7171         * MMX, [mem64].
    7272         */
    73         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     73        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    7474        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    7575        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    112112        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    113113        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    114         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     114        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    115115        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    116116        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    133133         * MMX, [mem64].
    134134         */
    135         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     135        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    136136        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    137137        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    172172        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    173173        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    174         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     174        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    175175        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
    176176        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    193193         * MMX, [mem64].
    194194         */
    195         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     195        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    196196        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    197197        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    235235        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    236236        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    237         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     237        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    238238        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
    239239        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    256256         * MMX, [mem64].
    257257         */
    258         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     258        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    259259        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    260260        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    295295        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    296296        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    297         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     297        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    298298        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    299299        IEM_MC_ARG(uint64_t *,          pDst, 0);
     
    316316         * MMX, [mem64].
    317317         */
    318         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     318        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    319319        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    320320        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    357357         * XMM, XMM.
    358358         */
    359         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     359        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    360360        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    361361        IEM_MC_ARG(PRTUINT128U,          pDst, 0);
     
    374374         * XMM, [mem128].
    375375         */
    376         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     376        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    377377        IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    378378        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    412412         * XMM, XMM.
    413413         */
    414         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     414        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    415415        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    416416        IEM_MC_ARG(PRTUINT128U,          pDst, 0);
     
    429429         * XMM, [mem128].
    430430         */
    431         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     431        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    432432        IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    433433        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    470470         * XMM, XMM.
    471471         */
    472         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     472        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    473473        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    474474        IEM_MC_ARG(PRTUINT128U,          pDst, 0);
     
    487487         * XMM, [mem128].
    488488         */
    489         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     489        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    490490        IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    491491        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    523523         * MMX, MMX.
    524524         */
    525         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     525        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    526526        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    527527        IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    544544         * MMX, [mem32].
    545545         */
    546         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     546        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    547547        IEM_MC_ARG(uint64_t *,                  puDst,       0);
    548548        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    585585         * XMM, XMM.
    586586         */
    587         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     587        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    588588        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    589589        IEM_MC_ARG(PRTUINT128U,             puDst, 0);
     
    602602         * XMM, [mem128].
    603603         */
    604         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     604        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    605605        IEM_MC_ARG(PRTUINT128U,             puDst,       0);
    606606        IEM_MC_LOCAL(RTUINT128U,            uSrc);
     
    645645         * XMM, XMM.
    646646         */
    647         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     647        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    648648        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    649649        IEM_MC_ARG(PRTUINT128U,             puDst, 0);
     
    662662         * XMM, [mem128].
    663663         */
    664         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     664        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    665665        IEM_MC_ARG(PRTUINT128U,             puDst,       0);
    666666        IEM_MC_LOCAL(RTUINT128U,            uSrc);
     
    705705        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    706706        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    707         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     707        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    708708        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    709709        IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    726726         * MMX, [mem64].
    727727         */
    728         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     728        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    729729        IEM_MC_ARG(uint64_t *,                  puDst,       0);
    730730        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    767767         * XMM, XMM.
    768768         */
    769         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     769        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    770770        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    771771        IEM_MC_ARG(PRTUINT128U,             puDst, 0);
     
    784784         * XMM, [mem128].
    785785         */
    786         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     786        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    787787        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    788788        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    827827         * XMM128, XMM128.
    828828         */
    829         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     829        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    830830        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    831831        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
     
    849849         * XMM128, [mem128].
    850850         */
    851         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     851        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    852852        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
    853853        IEM_MC_LOCAL(X86XMMREG,             uSrc2);
     
    891891         * XMM128, XMM32.
    892892         */
    893         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     893        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    894894        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    895895        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
     
    913913         * XMM128, [mem32].
    914914         */
    915         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     915        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    916916        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
    917917        IEM_MC_LOCAL(RTFLOAT32U,            r32Src2);
     
    955955         * XMM128, XMM128.
    956956         */
    957         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     957        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    958958        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    959959        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
     
    977977         * XMM128, [mem128].
    978978         */
    979         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     979        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    980980        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
    981981        IEM_MC_LOCAL(X86XMMREG,             uSrc2);
     
    10191019         * XMM, XMM.
    10201020         */
    1021         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1021        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10221022        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    10231023        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
     
    10411041         * XMM, [mem64].
    10421042         */
    1043         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1043        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10441044        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
    10451045        IEM_MC_LOCAL(RTFLOAT64U,            r64Src2);
     
    10831083         * XMM, XMM.
    10841084         */
    1085         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1085        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10861086        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    10871087        IEM_MC_ARG(PRTUINT128U,             puDst, 0);
     
    11001100         * XMM, [mem128].
    11011101         */
    1102         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1102        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11031103        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    11041104        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    11431143         * XMM, XMM.
    11441144         */
    1145         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1145        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11461146        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3);
    11471147        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
     
    11651165         * XMM, [mem128].
    11661166         */
    1167         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1167        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11681168        IEM_MC_LOCAL(IEMSSERESULT,          SseRes);
    11691169        IEM_MC_LOCAL(X86XMMREG,             uSrc2);
     
    12041204
    12051205    /* Ignore operand size here, memory refs are always 16-bit. */
    1206     IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286);
     1206    IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0);
    12071207    IEM_MC_ARG(uint16_t, iEffSeg,               0);
    12081208    IEM_MC_ARG(RTGCPTR,  GCPtrEffDst,           1);
     
    12301230
    12311231    /* Ignore operand size here, memory refs are always 16-bit. */
    1232     IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286);
     1232    IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0);
    12331233    IEM_MC_ARG(uint16_t, iEffSeg,               0);
    12341234    IEM_MC_ARG(RTGCPTR,  GCPtrEffDst,           1);
     
    12501250    if (IEM_IS_MODRM_REG_MODE(bRm))
    12511251    {
    1252         IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286);
     1252        IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286, 0);
    12531253        IEMOP_HLP_DECODED_NL_1(OP_LLDT, IEMOPFORM_M_REG, OP_PARM_Ew, DISOPTYPE_DANGEROUS);
    12541254        IEM_MC_ARG(uint16_t, u16Sel, 0);
     
    12591259    else
    12601260    {
    1261         IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286);
     1261        IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286, 0);
    12621262        IEM_MC_ARG(uint16_t, u16Sel, 0);
    12631263        IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    12811281    if (IEM_IS_MODRM_REG_MODE(bRm))
    12821282    {
    1283         IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286);
     1283        IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_286, 0);
    12841284        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    12851285        IEM_MC_ARG(uint16_t, u16Sel, 0);
     
    12901290    else
    12911291    {
    1292         IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286);
     1292        IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_286, 0);
    12931293        IEM_MC_ARG(uint16_t, u16Sel, 0);
    12941294        IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
     
    13111311    if (IEM_IS_MODRM_REG_MODE(bRm))
    13121312    {
    1313         IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286);
     1313        IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0);
    13141314        IEMOP_HLP_DECODED_NL_1(fWrite ? OP_VERW : OP_VERR, IEMOPFORM_M_MEM, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP);
    13151315        IEM_MC_ARG(uint16_t,    u16Sel,            0);
     
    13211321    else
    13221322    {
    1323         IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286);
     1323        IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286, 0);
    13241324        IEM_MC_ARG(uint16_t,    u16Sel,            0);
    13251325        IEM_MC_ARG_CONST(bool,  fWriteArg, fWrite, 1);
     
    13791379    IEMOP_HLP_MIN_286();
    13801380    IEMOP_HLP_64BIT_OP_SIZE();
    1381     IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286);
     1381    IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286, 0);
    13821382    IEM_MC_ARG(uint8_t,         iEffSeg,                                    0);
    13831383    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                                1);
     
    14711471    IEMOP_HLP_MIN_286();
    14721472    IEMOP_HLP_64BIT_OP_SIZE();
    1473     IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286);
     1473    IEM_MC_BEGIN(2, 1, IEM_MC_F_MIN_286, 0);
    14741474    IEM_MC_ARG(uint8_t,         iEffSeg,                                    0);
    14751475    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                                1);
     
    15051505    IEMOP_MNEMONIC(lgdt, "lgdt");
    15061506    IEMOP_HLP_64BIT_OP_SIZE();
    1507     IEM_MC_BEGIN(3, 1, 0);
     1507    IEM_MC_BEGIN(3, 1, 0, 0);
    15081508    IEM_MC_ARG(uint8_t,         iEffSeg,                                    0);
    15091509    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                                1);
     
    15581558    IEMOP_MNEMONIC(lidt, "lidt");
    15591559    IEMMODE enmEffOpSize = IEM_IS_64BIT_CODE(pVCpu) ? IEMMODE_64BIT : pVCpu->iem.s.enmEffOpSize;
    1560     IEM_MC_BEGIN(3, 1, 0);
     1560    IEM_MC_BEGIN(3, 1, 0, 0);
    15611561    IEM_MC_ARG(uint8_t,         iEffSeg,                            0);
    15621562    IEM_MC_ARG(RTGCPTR,         GCPtrEffSrc,                        1);
     
    16901690
    16911691    /* Ignore operand size here, memory refs are always 16-bit. */
    1692     IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286);
     1692    IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0);
    16931693    IEM_MC_ARG(uint16_t, iEffSeg,               0);
    16941694    IEM_MC_ARG(RTGCPTR,  GCPtrEffDst,           1);
     
    17101710    if (IEM_IS_MODRM_REG_MODE(bRm))
    17111711    {
    1712         IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286);
     1712        IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0);
    17131713        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    17141714        IEM_MC_ARG(uint16_t, u16Tmp,                         0);
     
    17201720    else
    17211721    {
    1722         IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286);
     1722        IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_286, 0);
    17231723        IEM_MC_ARG(uint16_t, u16Tmp,      0);
    17241724        IEM_MC_ARG(RTGCPTR,  GCPtrEffDst, 1);
     
    17371737    IEMOP_MNEMONIC(invlpg, "invlpg");
    17381738    IEMOP_HLP_MIN_486();
    1739     IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386);
     1739    IEM_MC_BEGIN(1, 1, IEM_MC_F_MIN_386, 0);
    17401740    IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 0);
    17411741    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    18621862        {
    18631863            case IEMMODE_16BIT:
    1864                 IEM_MC_BEGIN(3, 0, 0);
     1864                IEM_MC_BEGIN(3, 0, 0, 0);
    18651865                IEMOP_HLP_DECODED_NL_2(fIsLar ? OP_LAR : OP_LSL, IEMOPFORM_RM_REG, OP_PARM_Gv, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP);
    18661866                IEM_MC_ARG(uint16_t *,  pu16Dst,           0);
     
    18771877            case IEMMODE_32BIT:
    18781878            case IEMMODE_64BIT:
    1879                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     1879                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    18801880                IEMOP_HLP_DECODED_NL_2(fIsLar ? OP_LAR : OP_LSL, IEMOPFORM_RM_REG, OP_PARM_Gv, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP);
    18811881                IEM_MC_ARG(uint64_t *,  pu64Dst,           0);
     
    18981898        {
    18991899            case IEMMODE_16BIT:
    1900                 IEM_MC_BEGIN(3, 1, 0);
     1900                IEM_MC_BEGIN(3, 1, 0, 0);
    19011901                IEM_MC_ARG(uint16_t *,  pu16Dst,           0);
    19021902                IEM_MC_ARG(uint16_t,    u16Sel,            1);
     
    19161916            case IEMMODE_32BIT:
    19171917            case IEMMODE_64BIT:
    1918                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386);
     1918                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    19191919                IEM_MC_ARG(uint64_t *,  pu64Dst,           0);
    19201920                IEM_MC_ARG(uint16_t,    u16Sel,            1);
     
    20442044    }
    20452045
    2046     IEM_MC_BEGIN(0, 1, 0);
     2046    IEM_MC_BEGIN(0, 1, 0, 0);
    20472047    IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
    20482048    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     
    20602060    IEMOP_MNEMONIC(femms, "femms");
    20612061
    2062     IEM_MC_BEGIN(0, 0, 0);
     2062    IEM_MC_BEGIN(0, 0, 0, 0);
    20632063    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    20642064    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    21092109         * XMM128, XMM128.
    21102110         */
    2111         IEM_MC_BEGIN(0, 0, 0);
     2111        IEM_MC_BEGIN(0, 0, 0, 0);
    21122112        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    21132113        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    21232123         * XMM128, [mem128].
    21242124         */
    2125         IEM_MC_BEGIN(0, 2, 0);
     2125        IEM_MC_BEGIN(0, 2, 0, 0);
    21262126        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    21272127        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    21602160         * XMM128, XMM128.
    21612161         */
    2162         IEM_MC_BEGIN(0, 0, 0);
     2162        IEM_MC_BEGIN(0, 0, 0, 0);
    21632163        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    21642164        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    21742174         * XMM128, [mem128].
    21752175         */
    2176         IEM_MC_BEGIN(0, 2, 0);
     2176        IEM_MC_BEGIN(0, 2, 0, 0);
    21772177        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    21782178        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    22102210         * XMM32, XMM32.
    22112211         */
    2212         IEM_MC_BEGIN(0, 1, 0);
     2212        IEM_MC_BEGIN(0, 1, 0, 0);
    22132213        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    22142214        IEM_MC_LOCAL(uint32_t,                  uSrc);
     
    22272227         * XMM128, [mem32].
    22282228         */
    2229         IEM_MC_BEGIN(0, 2, 0);
     2229        IEM_MC_BEGIN(0, 2, 0, 0);
    22302230        IEM_MC_LOCAL(uint32_t,                  uSrc);
    22312231        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    22632263         * XMM64, XMM64.
    22642264         */
    2265         IEM_MC_BEGIN(0, 1, 0);
     2265        IEM_MC_BEGIN(0, 1, 0, 0);
    22662266        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    22672267        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    22802280         * XMM128, [mem64].
    22812281         */
    2282         IEM_MC_BEGIN(0, 2, 0);
     2282        IEM_MC_BEGIN(0, 2, 0, 0);
    22832283        IEM_MC_LOCAL(uint64_t,                  uSrc);
    22842284        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    23162316         * XMM128, XMM128.
    23172317         */
    2318         IEM_MC_BEGIN(0, 0, 0);
     2318        IEM_MC_BEGIN(0, 0, 0, 0);
    23192319        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    23202320        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    23302330         * [mem128], XMM128.
    23312331         */
    2332         IEM_MC_BEGIN(0, 2, 0);
     2332        IEM_MC_BEGIN(0, 2, 0, 0);
    23332333        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    23342334        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    23662366         * XMM128, XMM128.
    23672367         */
    2368         IEM_MC_BEGIN(0, 0, 0);
     2368        IEM_MC_BEGIN(0, 0, 0, 0);
    23692369        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    23702370        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    23802380         * [mem128], XMM128.
    23812381         */
    2382         IEM_MC_BEGIN(0, 2, 0);
     2382        IEM_MC_BEGIN(0, 2, 0, 0);
    23832383        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    23842384        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    24162416         * XMM32, XMM32.
    24172417         */
    2418         IEM_MC_BEGIN(0, 1, 0);
     2418        IEM_MC_BEGIN(0, 1, 0, 0);
    24192419        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    24202420        IEM_MC_LOCAL(uint32_t,                  uSrc);
     
    24332433         * [mem32], XMM32.
    24342434         */
    2435         IEM_MC_BEGIN(0, 2, 0);
     2435        IEM_MC_BEGIN(0, 2, 0, 0);
    24362436        IEM_MC_LOCAL(uint32_t,                  uSrc);
    24372437        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    24692469         * XMM64, XMM64.
    24702470         */
    2471         IEM_MC_BEGIN(0, 1, 0);
     2471        IEM_MC_BEGIN(0, 1, 0, 0);
    24722472        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    24732473        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    24862486         * [mem64], XMM64.
    24872487         */
    2488         IEM_MC_BEGIN(0, 2, 0);
     2488        IEM_MC_BEGIN(0, 2, 0, 0);
    24892489        IEM_MC_LOCAL(uint64_t,                  uSrc);
    24902490        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    25212521        IEMOP_MNEMONIC2(RM_REG, MOVHLPS, movhlps, Vq_WO, UqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    25222522
    2523         IEM_MC_BEGIN(0, 1, 0);
     2523        IEM_MC_BEGIN(0, 1, 0, 0);
    25242524        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    25252525        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    25492549        IEMOP_MNEMONIC2(RM_MEM, MOVLPS, movlps, Vq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    25502550
    2551         IEM_MC_BEGIN(0, 2, 0);
     2551        IEM_MC_BEGIN(0, 2, 0, 0);
    25522552        IEM_MC_LOCAL(uint64_t,                  uSrc);
    25532553        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    25842584        IEMOP_MNEMONIC2(RM_MEM, MOVLPD, movlpd, Vq_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    25852585
    2586         IEM_MC_BEGIN(0, 2, 0);
     2586        IEM_MC_BEGIN(0, 2, 0, 0);
    25872587        IEM_MC_LOCAL(uint64_t,                  uSrc);
    25882588        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    26332633         * XMM, XMM.
    26342634         */
    2635         IEM_MC_BEGIN(0, 1, 0);
     2635        IEM_MC_BEGIN(0, 1, 0, 0);
    26362636        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3);
    26372637        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    26542654         * XMM, [mem128].
    26552655         */
    2656         IEM_MC_BEGIN(0, 2, 0);
     2656        IEM_MC_BEGIN(0, 2, 0, 0);
    26572657        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    26582658        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    26932693         * XMM128, XMM64.
    26942694         */
    2695         IEM_MC_BEGIN(1, 0, 0);
     2695        IEM_MC_BEGIN(1, 0, 0, 0);
    26962696        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3);
    26972697        IEM_MC_ARG(uint64_t,                    uSrc, 0);
     
    27122712         * XMM128, [mem64].
    27132713         */
    2714         IEM_MC_BEGIN(1, 1, 0);
     2714        IEM_MC_BEGIN(1, 1, 0, 0);
    27152715        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    27162716        IEM_MC_ARG(uint64_t,                    uSrc, 0);
     
    27482748        IEMOP_MNEMONIC2(MR_MEM, MOVLPS, movlps, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    27492749
    2750         IEM_MC_BEGIN(0, 2, 0);
     2750        IEM_MC_BEGIN(0, 2, 0, 0);
    27512751        IEM_MC_LOCAL(uint64_t,                  uSrc);
    27522752        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    27962796        IEMOP_MNEMONIC2(MR_MEM, MOVLPD, movlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    27972797
    2798         IEM_MC_BEGIN(0, 2, 0);
     2798        IEM_MC_BEGIN(0, 2, 0, 0);
    27992799        IEM_MC_LOCAL(uint64_t,                  uSrc);
    28002800        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    29412941        IEMOP_MNEMONIC2(RM_REG, MOVLHPS, movlhps, VqHi_WO, Uq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    29422942
    2943         IEM_MC_BEGIN(0, 1, 0);
     2943        IEM_MC_BEGIN(0, 1, 0, 0);
    29442944        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    29452945        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    29692969        IEMOP_MNEMONIC2(RM_MEM, MOVHPS, movhps, VqHi_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    29702970
    2971         IEM_MC_BEGIN(0, 2, 0);
     2971        IEM_MC_BEGIN(0, 2, 0, 0);
    29722972        IEM_MC_LOCAL(uint64_t,                  uSrc);
    29732973        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    30043004        IEMOP_MNEMONIC2(RM_MEM, MOVHPD, movhpd, VqHi_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    30053005
    3006         IEM_MC_BEGIN(0, 2, 0);
     3006        IEM_MC_BEGIN(0, 2, 0, 0);
    30073007        IEM_MC_LOCAL(uint64_t,                  uSrc);
    30083008        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    30533053         * XMM128, XMM128.
    30543054         */
    3055         IEM_MC_BEGIN(0, 1, 0);
     3055        IEM_MC_BEGIN(0, 1, 0, 0);
    30563056        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse3);
    30573057        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    30743074         * XMM128, [mem128].
    30753075         */
    3076         IEM_MC_BEGIN(0, 2, 0);
     3076        IEM_MC_BEGIN(0, 2, 0, 0);
    30773077        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    30783078        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    31233123        IEMOP_MNEMONIC2(MR_MEM, MOVHPS, movhps, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    31243124
    3125         IEM_MC_BEGIN(0, 2, 0);
     3125        IEM_MC_BEGIN(0, 2, 0, 0);
    31263126        IEM_MC_LOCAL(uint64_t,                  uSrc);
    31273127        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    31713171        IEMOP_MNEMONIC2(MR_MEM, MOVHPD, movhpd, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_SSE, IEMOPHINT_IGNORES_OP_SIZES);
    31723172
    3173         IEM_MC_BEGIN(0, 2, 0);
     3173        IEM_MC_BEGIN(0, 2, 0, 0);
    31743174        IEM_MC_LOCAL(uint64_t,                  uSrc);
    31753175        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    32433243        }
    32443244
    3245         IEM_MC_BEGIN(0, 1, 0);
     3245        IEM_MC_BEGIN(0, 1, 0, 0);
    32463246        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
    32473247        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     
    32643264    if (IEM_IS_MODRM_REG_MODE(bRm))
    32653265    {
    3266         IEM_MC_BEGIN(0, 0, 0);
     3266        IEM_MC_BEGIN(0, 0, 0, 0);
    32673267        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    32683268        IEM_MC_ADVANCE_RIP_AND_FINISH();
     
    32713271    else
    32723272    {
    3273         IEM_MC_BEGIN(0, 1, 0);
     3273        IEM_MC_BEGIN(0, 1, 0, 0);
    32743274        IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    32753275        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
     
    34253425         * Register, register.
    34263426         */
    3427         IEM_MC_BEGIN(0, 0, 0);
     3427        IEM_MC_BEGIN(0, 0, 0, 0);
    34283428        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    34293429        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    34393439         * Register, memory.
    34403440         */
    3441         IEM_MC_BEGIN(0, 2, 0);
     3441        IEM_MC_BEGIN(0, 2, 0, 0);
    34423442        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    34433443        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    34743474         * Register, register.
    34753475         */
    3476         IEM_MC_BEGIN(0, 0, 0);
     3476        IEM_MC_BEGIN(0, 0, 0, 0);
    34773477        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    34783478        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    34883488         * Register, memory.
    34893489         */
    3490         IEM_MC_BEGIN(0, 2, 0);
     3490        IEM_MC_BEGIN(0, 2, 0, 0);
    34913491        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    34923492        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    35263526         * Register, register.
    35273527         */
    3528         IEM_MC_BEGIN(0, 0, 0);
     3528        IEM_MC_BEGIN(0, 0, 0, 0);
    35293529        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    35303530        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    35403540         * Memory, register.
    35413541         */
    3542         IEM_MC_BEGIN(0, 2, 0);
     3542        IEM_MC_BEGIN(0, 2, 0, 0);
    35433543        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    35443544        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    35753575         * Register, register.
    35763576         */
    3577         IEM_MC_BEGIN(0, 0, 0);
     3577        IEM_MC_BEGIN(0, 0, 0, 0);
    35783578        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    35793579        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    35893589         * Memory, register.
    35903590         */
    3591         IEM_MC_BEGIN(0, 2, 0);
     3591        IEM_MC_BEGIN(0, 2, 0, 0);
    35923592        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    35933593        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    36203620         * XMM, MMX
    36213621         */
    3622         IEM_MC_BEGIN(3, 1, 0);
     3622        IEM_MC_BEGIN(3, 1, 0, 0);
    36233623        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    36243624        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
     
    36503650         * XMM, [mem64]
    36513651         */
    3652         IEM_MC_BEGIN(3, 2, 0);
     3652        IEM_MC_BEGIN(3, 2, 0, 0);
    36533653        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
    36543654        IEM_MC_LOCAL(X86XMMREG,             Dst);
     
    36903690         * XMM, MMX
    36913691         */
    3692         IEM_MC_BEGIN(3, 1, 0);
     3692        IEM_MC_BEGIN(3, 1, 0, 0);
    36933693        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    36943694        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
     
    37193719         * XMM, [mem64]
    37203720         */
    3721         IEM_MC_BEGIN(3, 3, 0);
     3721        IEM_MC_BEGIN(3, 3, 0, 0);
    37223722        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
    37233723        IEM_MC_LOCAL(X86XMMREG,             Dst);
     
    37603760        {
    37613761            /* XMM, greg64 */
    3762             IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     3762            IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    37633763            IEM_MC_LOCAL(uint32_t,    fMxcsr);
    37643764            IEM_MC_LOCAL(RTFLOAT32U,  r32Dst);
     
    37863786        {
    37873787            /* XMM, [mem64] */
    3788             IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     3788            IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    37893789            IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
    37903790            IEM_MC_LOCAL(uint32_t,   fMxcsr);
     
    38183818        {
    38193819            /* greg, XMM */
    3820             IEM_MC_BEGIN(3, 2, 0);
     3820            IEM_MC_BEGIN(3, 2, 0, 0);
    38213821            IEM_MC_LOCAL(uint32_t,   fMxcsr);
    38223822            IEM_MC_LOCAL(RTFLOAT32U, r32Dst);
     
    38443844        {
    38453845            /* greg, [mem32] */
    3846             IEM_MC_BEGIN(3, 4, 0);
     3846            IEM_MC_BEGIN(3, 4, 0, 0);
    38473847            IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
    38483848            IEM_MC_LOCAL(uint32_t,   fMxcsr);
     
    38853885        {
    38863886            /* XMM, greg64 */
    3887             IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     3887            IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    38883888            IEM_MC_LOCAL(uint32_t,    fMxcsr);
    38893889            IEM_MC_LOCAL(RTFLOAT64U,  r64Dst);
     
    39113911        {
    39123912            /* XMM, [mem64] */
    3913             IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     3913            IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    39143914            IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
    39153915            IEM_MC_LOCAL(uint32_t,   fMxcsr);
     
    39433943        {
    39443944            /* XMM, greg32 */
    3945             IEM_MC_BEGIN(3, 2, 0);
     3945            IEM_MC_BEGIN(3, 2, 0, 0);
    39463946            IEM_MC_LOCAL(uint32_t,   fMxcsr);
    39473947            IEM_MC_LOCAL(RTFLOAT64U, r64Dst);
     
    39693969        {
    39703970            /* XMM, [mem32] */
    3971             IEM_MC_BEGIN(3, 4, 0);
     3971            IEM_MC_BEGIN(3, 4, 0, 0);
    39723972            IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
    39733973            IEM_MC_LOCAL(uint32_t,   fMxcsr);
     
    40184018         * memory, register.
    40194019         */
    4020         IEM_MC_BEGIN(0, 2, 0);
     4020        IEM_MC_BEGIN(0, 2, 0, 0);
    40214021        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    40224022        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    40574057         * memory, register.
    40584058         */
    4059         IEM_MC_BEGIN(0, 2, 0);
     4059        IEM_MC_BEGIN(0, 2, 0, 0);
    40604060        IEM_MC_LOCAL(RTUINT128U,                uSrc); /** @todo optimize this one day... */
    40614061        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    40904090         * Register, register.
    40914091         */
    4092         IEM_MC_BEGIN(3, 1, 0);
     4092        IEM_MC_BEGIN(3, 1, 0, 0);
    40934093        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    40944094        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
     
    41184118         * Register, memory.
    41194119         */
    4120         IEM_MC_BEGIN(3, 2, 0);
     4120        IEM_MC_BEGIN(3, 2, 0, 0);
    41214121        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
    41224122        IEM_MC_LOCAL(uint64_t,              u64Dst);
     
    41574157         * Register, register.
    41584158         */
    4159         IEM_MC_BEGIN(3, 1, 0);
     4159        IEM_MC_BEGIN(3, 1, 0, 0);
    41604160        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    41614161        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
     
    41854185         * Register, memory.
    41864186         */
    4187         IEM_MC_BEGIN(3, 3, 0);
     4187        IEM_MC_BEGIN(3, 3, 0, 0);
    41884188        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
    41894189        IEM_MC_LOCAL(uint64_t,              u64Dst);
     
    42274227        {
    42284228            /* greg64, XMM */
    4229             IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     4229            IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    42304230            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    42314231            IEM_MC_LOCAL(int64_t,   i64Dst);
     
    42534253        {
    42544254            /* greg64, [mem64] */
    4255             IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     4255            IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    42564256            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    42574257            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    42854285        {
    42864286            /* greg, XMM */
    4287             IEM_MC_BEGIN(3, 2, 0);
     4287            IEM_MC_BEGIN(3, 2, 0, 0);
    42884288            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    42894289            IEM_MC_LOCAL(int32_t,   i32Dst);
     
    43114311        {
    43124312            /* greg, [mem] */
    4313             IEM_MC_BEGIN(3, 4, 0);
     4313            IEM_MC_BEGIN(3, 4, 0, 0);
    43144314            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    43154315            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    43524352        {
    43534353            /* greg64, XMM */
    4354             IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     4354            IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    43554355            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    43564356            IEM_MC_LOCAL(int64_t,   i64Dst);
     
    43784378        {
    43794379            /* greg64, [mem64] */
    4380             IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     4380            IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    43814381            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    43824382            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    44104410        {
    44114411            /* greg, XMM */
    4412             IEM_MC_BEGIN(3, 2, 0);
     4412            IEM_MC_BEGIN(3, 2, 0, 0);
    44134413            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    44144414            IEM_MC_LOCAL(int32_t,   i32Dst);
     
    44364436        {
    44374437            /* greg32, [mem32] */
    4438             IEM_MC_BEGIN(3, 4, 0);
     4438            IEM_MC_BEGIN(3, 4, 0, 0);
    44394439            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    44404440            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    44764476         * Register, register.
    44774477         */
    4478         IEM_MC_BEGIN(3, 1, 0);
     4478        IEM_MC_BEGIN(3, 1, 0, 0);
    44794479        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    44804480        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
     
    45054505         * Register, memory.
    45064506         */
    4507         IEM_MC_BEGIN(3, 2, 0);
     4507        IEM_MC_BEGIN(3, 2, 0, 0);
    45084508        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
    45094509        IEM_MC_LOCAL(uint64_t,              u64Dst);
     
    45444544         * Register, register.
    45454545         */
    4546         IEM_MC_BEGIN(3, 1, 0);
     4546        IEM_MC_BEGIN(3, 1, 0, 0);
    45474547        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    45484548        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
     
    45734573         * Register, memory.
    45744574         */
    4575         IEM_MC_BEGIN(3, 3, 0);
     4575        IEM_MC_BEGIN(3, 3, 0, 0);
    45764576        IEM_MC_ARG(uint32_t *,              pfMxcsr,            0);
    45774577        IEM_MC_LOCAL(uint64_t,              u64Dst);
     
    46154615        {
    46164616            /* greg64, XMM */
    4617             IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     4617            IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    46184618            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    46194619            IEM_MC_LOCAL(int64_t,   i64Dst);
     
    46414641        {
    46424642            /* greg64, [mem64] */
    4643             IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     4643            IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    46444644            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    46454645            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    46734673        {
    46744674            /* greg, XMM */
    4675             IEM_MC_BEGIN(3, 2, 0);
     4675            IEM_MC_BEGIN(3, 2, 0, 0);
    46764676            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    46774677            IEM_MC_LOCAL(int32_t,   i32Dst);
     
    46994699        {
    47004700            /* greg, [mem] */
    4701             IEM_MC_BEGIN(3, 4, 0);
     4701            IEM_MC_BEGIN(3, 4, 0, 0);
    47024702            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    47034703            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    47404740        {
    47414741            /* greg64, XMM */
    4742             IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT);
     4742            IEM_MC_BEGIN(3, 2, IEM_MC_F_64BIT, 0);
    47434743            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    47444744            IEM_MC_LOCAL(int64_t,   i64Dst);
     
    47664766        {
    47674767            /* greg64, [mem64] */
    4768             IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     4768            IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    47694769            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    47704770            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    47984798        {
    47994799            /* greg32, XMM */
    4800             IEM_MC_BEGIN(3, 2, 0);
     4800            IEM_MC_BEGIN(3, 2, 0, 0);
    48014801            IEM_MC_LOCAL(uint32_t,  fMxcsr);
    48024802            IEM_MC_LOCAL(int32_t,   i32Dst);
     
    48244824        {
    48254825            /* greg32, [mem64] */
    4826             IEM_MC_BEGIN(3, 4, 0);
     4826            IEM_MC_BEGIN(3, 4, 0, 0);
    48274827            IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
    48284828            IEM_MC_LOCAL(uint32_t,  fMxcsr);
     
    48644864         * Register, register.
    48654865         */
    4866         IEM_MC_BEGIN(4, 1, 0);
     4866        IEM_MC_BEGIN(4, 1, 0, 0);
    48674867        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    48684868        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    48924892         * Register, memory.
    48934893         */
    4894         IEM_MC_BEGIN(4, 3, 0);
     4894        IEM_MC_BEGIN(4, 3, 0, 0);
    48954895        IEM_MC_LOCAL(uint32_t, fEFlags);
    48964896        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    49334933         * Register, register.
    49344934         */
    4935         IEM_MC_BEGIN(4, 1, 0);
     4935        IEM_MC_BEGIN(4, 1, 0, 0);
    49364936        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    49374937        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    49614961         * Register, memory.
    49624962         */
    4963         IEM_MC_BEGIN(4, 3, 0);
     4963        IEM_MC_BEGIN(4, 3, 0, 0);
    49644964        IEM_MC_LOCAL(uint32_t, fEFlags);
    49654965        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    50065006         * Register, register.
    50075007         */
    5008         IEM_MC_BEGIN(4, 1, 0);
     5008        IEM_MC_BEGIN(4, 1, 0, 0);
    50095009        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    50105010        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    50345034         * Register, memory.
    50355035         */
    5036         IEM_MC_BEGIN(4, 3, 0);
     5036        IEM_MC_BEGIN(4, 3, 0, 0);
    50375037        IEM_MC_LOCAL(uint32_t, fEFlags);
    50385038        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    50755075         * Register, register.
    50765076         */
    5077         IEM_MC_BEGIN(4, 1, 0);
     5077        IEM_MC_BEGIN(4, 1, 0, 0);
    50785078        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    50795079        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    51035103         * Register, memory.
    51045104         */
    5105         IEM_MC_BEGIN(4, 3, 0);
     5105        IEM_MC_BEGIN(4, 3, 0, 0);
    51065106        IEM_MC_LOCAL(uint32_t, fEFlags);
    51075107        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    52385238        { \
    52395239            case IEMMODE_16BIT: \
    5240                 IEM_MC_BEGIN(0, 1, 0); \
     5240                IEM_MC_BEGIN(0, 1, 0, 0); \
    52415241                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    52425242                IEM_MC_LOCAL(uint16_t, u16Tmp); \
     
    52505250            \
    52515251            case IEMMODE_32BIT: \
    5252                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386); \
     5252                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0); \
    52535253                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    52545254                IEM_MC_LOCAL(uint32_t, u32Tmp); \
     
    52645264            \
    52655265            case IEMMODE_64BIT: \
    5266                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT); \
     5266                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0); \
    52675267                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    52685268                IEM_MC_LOCAL(uint64_t, u64Tmp); \
     
    52835283        { \
    52845284            case IEMMODE_16BIT: \
    5285                 IEM_MC_BEGIN(0, 2, 0); \
     5285                IEM_MC_BEGIN(0, 2, 0, 0); \
    52865286                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc); \
    52875287                IEM_MC_LOCAL(uint16_t, u16Tmp); \
     
    52975297            \
    52985298            case IEMMODE_32BIT: \
    5299                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386); \
     5299                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0); \
    53005300                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc); \
    53015301                IEM_MC_LOCAL(uint32_t, u32Tmp); \
     
    53135313            \
    53145314            case IEMMODE_64BIT: \
    5315                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT); \
     5315                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0); \
    53165316                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc); \
    53175317                IEM_MC_LOCAL(uint64_t, u64Tmp); \
     
    54715471         * Register, register.
    54725472         */
    5473         IEM_MC_BEGIN(2, 1, 0);
     5473        IEM_MC_BEGIN(2, 1, 0, 0);
    54745474        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
    54755475        IEM_MC_LOCAL(uint8_t,           u8Dst);
     
    55005500         * Register, register.
    55015501         */
    5502         IEM_MC_BEGIN(2, 1, 0);
     5502        IEM_MC_BEGIN(2, 1, 0, 0);
    55035503        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    55045504        IEM_MC_LOCAL(uint8_t,           u8Dst);
     
    62036203        {
    62046204            /* MMX, greg64 */
    6205             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     6205            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    62066206            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    62076207            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    62206220        {
    62216221            /* MMX, [mem64] */
    6222             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     6222            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    62236223            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    62246224            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    62556255        {
    62566256            /* MMX, greg32 */
    6257             IEM_MC_BEGIN(0, 1, 0);
     6257            IEM_MC_BEGIN(0, 1, 0, 0);
    62586258            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    62596259            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    62726272        {
    62736273            /* MMX, [mem32] */
    6274             IEM_MC_BEGIN(0, 2, 0);
     6274            IEM_MC_BEGIN(0, 2, 0, 0);
    62756275            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    62766276            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    63106310        {
    63116311            /* XMM, greg64 */
    6312             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     6312            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    63136313            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    63146314            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    63266326        {
    63276327            /* XMM, [mem64] */
    6328             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     6328            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    63296329            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    63306330            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    63606360        {
    63616361            /* XMM, greg32 */
    6362             IEM_MC_BEGIN(0, 1, 0);
     6362            IEM_MC_BEGIN(0, 1, 0, 0);
    63636363            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    63646364            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    63766376        {
    63776377            /* XMM, [mem32] */
    6378             IEM_MC_BEGIN(0, 2, 0);
     6378            IEM_MC_BEGIN(0, 2, 0, 0);
    63796379            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    63806380            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    64156415         * Register, register.
    64166416         */
    6417         IEM_MC_BEGIN(0, 1, 0);
     6417        IEM_MC_BEGIN(0, 1, 0, 0);
    64186418        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    64196419        IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    64346434         * Register, memory.
    64356435         */
    6436         IEM_MC_BEGIN(0, 2, 0);
     6436        IEM_MC_BEGIN(0, 2, 0, 0);
    64376437        IEM_MC_LOCAL(uint64_t, u64Tmp);
    64386438        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
     
    64706470         * Register, register.
    64716471         */
    6472         IEM_MC_BEGIN(0, 0, 0);
     6472        IEM_MC_BEGIN(0, 0, 0, 0);
    64736473        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    64746474
     
    64866486         * Register, memory.
    64876487         */
    6488         IEM_MC_BEGIN(0, 2, 0);
     6488        IEM_MC_BEGIN(0, 2, 0, 0);
    64896489        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    64906490        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    65216521         * Register, register.
    65226522         */
    6523         IEM_MC_BEGIN(0, 0, 0);
     6523        IEM_MC_BEGIN(0, 0, 0, 0);
    65246524        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    65256525        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    65356535         * Register, memory.
    65366536         */
    6537         IEM_MC_BEGIN(0, 2, 0);
     6537        IEM_MC_BEGIN(0, 2, 0, 0);
    65386538        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    65396539        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    65626562         * Register, register.
    65636563         */
    6564         IEM_MC_BEGIN(3, 0, 0);
     6564        IEM_MC_BEGIN(3, 0, 0, 0);
    65656565        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    65666566        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
     
    65856585         * Register, memory.
    65866586         */
    6587         IEM_MC_BEGIN(3, 2, 0);
     6587        IEM_MC_BEGIN(3, 2, 0, 0);
    65886588        IEM_MC_ARG(uint64_t *,                  pDst,       0);
    65896589        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    66286628         * Register, register.
    66296629         */
    6630         IEM_MC_BEGIN(3, 0, 0);
     6630        IEM_MC_BEGIN(3, 0, 0, 0);
    66316631        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    66326632        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    66476647         * Register, memory.
    66486648         */
    6649         IEM_MC_BEGIN(3, 2, 0);
     6649        IEM_MC_BEGIN(3, 2, 0, 0);
    66506650        IEM_MC_ARG(PRTUINT128U,                 puDst,       0);
    66516651        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    67136713         * Register, immediate.
    67146714         */
    6715         IEM_MC_BEGIN(2, 0, 0);
     6715        IEM_MC_BEGIN(2, 0, 0, 0);
    67166716        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    67176717        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
     
    67596759         * Register, immediate.
    67606760         */
    6761         IEM_MC_BEGIN(2, 0, 0);
     6761        IEM_MC_BEGIN(2, 0, 0, 0);
    67626762        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    67636763        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    70747074{
    70757075    IEMOP_MNEMONIC(emms, "emms");
    7076     IEM_MC_BEGIN(0, 0, 0);
     7076    IEM_MC_BEGIN(0, 0, 0, 0);
    70777077    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    70787078    IEM_MC_MAYBE_RAISE_DEVICE_NOT_AVAILABLE();
     
    71057105        if (enmEffOpSize == IEMMODE_64BIT)
    71067106        {
    7107             IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     7107            IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    71087108            IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES();
    71097109            IEM_MC_ARG(uint64_t *, pu64Dst, 0);
     
    71167116        else
    71177117        {
    7118             IEM_MC_BEGIN(2, 0, 0);
     7118            IEM_MC_BEGIN(2, 0, 0, 0);
    71197119            IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES();
    71207120            IEM_MC_ARG(uint64_t *, pu64Dst, 0);
     
    71337133        if (enmEffOpSize == IEMMODE_64BIT)
    71347134        {
    7135             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     7135            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    71367136            IEM_MC_ARG(uint8_t,       iEffSeg,                                          0);
    71377137            IEM_MC_ARG(RTGCPTR,       GCPtrVal,                                         1);
     
    71477147        else
    71487148        {
    7149             IEM_MC_BEGIN(3, 0, 0);
     7149            IEM_MC_BEGIN(3, 0, 0, 0);
    71507150            IEM_MC_ARG(uint8_t,       iEffSeg,                                          0);
    71517151            IEM_MC_ARG(RTGCPTR,       GCPtrVal,                                         1);
     
    71877187        if (enmEffOpSize == IEMMODE_64BIT)
    71887188        {
    7189             IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     7189            IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    71907190            IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES();
    71917191            IEM_MC_ARG(uint64_t, u64Val, 0);
     
    71987198        else
    71997199        {
    7200             IEM_MC_BEGIN(2, 0, 0);
     7200            IEM_MC_BEGIN(2, 0, 0, 0);
    72017201            IEMOP_HLP_DONE_DECODING_NO_SIZE_OP_REPZ_OR_REPNZ_PREFIXES();
    72027202            IEM_MC_ARG(uint32_t, u32Val, 0);
     
    72157215        if (enmEffOpSize == IEMMODE_64BIT)
    72167216        {
    7217             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     7217            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    72187218            IEM_MC_ARG(uint8_t,       iEffSeg,                                          0);
    72197219            IEM_MC_ARG(RTGCPTR,       GCPtrVal,                                         1);
     
    72297229        else
    72307230        {
    7231             IEM_MC_BEGIN(3, 0, 0);
     7231            IEM_MC_BEGIN(3, 0, 0, 0);
    72327232            IEM_MC_ARG(uint8_t,       iEffSeg,                                          0);
    72337233            IEM_MC_ARG(RTGCPTR,       GCPtrVal,                                         1);
     
    73247324        {
    73257325            /* greg64, MMX */
    7326             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     7326            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    73277327            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    73287328            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    73417341        {
    73427342            /* [mem64], MMX */
    7343             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     7343            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    73447344            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    73457345            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    73767376        {
    73777377            /* greg32, MMX */
    7378             IEM_MC_BEGIN(0, 1, 0);
     7378            IEM_MC_BEGIN(0, 1, 0, 0);
    73797379            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    73807380            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    73937393        {
    73947394            /* [mem32], MMX */
    7395             IEM_MC_BEGIN(0, 2, 0);
     7395            IEM_MC_BEGIN(0, 2, 0, 0);
    73967396            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    73977397            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    74327432        {
    74337433            /* greg64, XMM */
    7434             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     7434            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    74357435            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    74367436            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    74487448        {
    74497449            /* [mem64], XMM */
    7450             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     7450            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    74517451            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    74527452            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    74827482        {
    74837483            /* greg32, XMM */
    7484             IEM_MC_BEGIN(0, 1, 0);
     7484            IEM_MC_BEGIN(0, 1, 0, 0);
    74857485            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    74867486            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    74987498        {
    74997499            /* [mem32], XMM */
    7500             IEM_MC_BEGIN(0, 2, 0);
     7500            IEM_MC_BEGIN(0, 2, 0, 0);
    75017501            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    75027502            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    75347534         * XMM128, XMM64.
    75357535         */
    7536         IEM_MC_BEGIN(0, 2, 0);
     7536        IEM_MC_BEGIN(0, 2, 0, 0);
    75377537        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    75387538        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    75527552         * XMM128, [mem64].
    75537553         */
    7554         IEM_MC_BEGIN(0, 2, 0);
     7554        IEM_MC_BEGIN(0, 2, 0, 0);
    75557555        IEM_MC_LOCAL(uint64_t,                  uSrc);
    75567556        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    75847584        /** @todo testcase: REX.B / REX.R and MMX register indexing. Ignored? */
    75857585        /** @todo testcase: REX.B / REX.R and segment register indexing. Ignored? */
    7586         IEM_MC_BEGIN(0, 1, 0);
     7586        IEM_MC_BEGIN(0, 1, 0, 0);
    75877587        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fMmx);
    75887588        IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    76027602         * [mem64], MMX.
    76037603         */
    7604         IEM_MC_BEGIN(0, 2, 0);
     7604        IEM_MC_BEGIN(0, 2, 0, 0);
    76057605        IEM_MC_LOCAL(uint64_t, u64Tmp);
    76067606        IEM_MC_LOCAL(RTGCPTR,  GCPtrEffSrc);
     
    76307630         * XMM, XMM.
    76317631         */
    7632         IEM_MC_BEGIN(0, 0, 0);
     7632        IEM_MC_BEGIN(0, 0, 0, 0);
    76337633        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    76347634        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    76447644         * [mem128], XMM.
    76457645         */
    7646         IEM_MC_BEGIN(0, 2, 0);
     7646        IEM_MC_BEGIN(0, 2, 0, 0);
    76477647        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    76487648        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    76717671         * XMM, XMM.
    76727672         */
    7673         IEM_MC_BEGIN(0, 0, 0);
     7673        IEM_MC_BEGIN(0, 0, 0, 0);
    76747674        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    76757675        IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
     
    76857685         * [mem128], XMM.
    76867686         */
    7687         IEM_MC_BEGIN(0, 2, 0);
     7687        IEM_MC_BEGIN(0, 2, 0, 0);
    76887688        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    76897689        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    77147714    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    77157715    {
    7716         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7716        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    77177717        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    77187718        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    77267726    else
    77277727    {
    7728         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7728        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    77297729        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    77307730        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    77477747    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    77487748    {
    7749         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7749        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    77507750        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    77517751        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    77597759    else
    77607760    {
    7761         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7761        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    77627762        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    77637763        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    77807780    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    77817781    {
    7782         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7782        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    77837783        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    77847784        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    77927792    else
    77937793    {
    7794         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7794        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    77957795        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    77967796        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    78137813    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    78147814    {
    7815         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7815        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    78167816        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    78177817        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    78257825    else
    78267826    {
    7827         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7827        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    78287828        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    78297829        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    78467846    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    78477847    {
    7848         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7848        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    78497849        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    78507850        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    78587858    else
    78597859    {
    7860         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7860        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    78617861        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    78627862        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    78797879    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    78807880    {
    7881         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7881        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    78827882        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    78837883        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    78917891    else
    78927892    {
    7893         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7893        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    78947894        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    78957895        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    79127912    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    79137913    {
    7914         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7914        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    79157915        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    79167916        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    79247924    else
    79257925    {
    7926         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7926        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    79277927        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    79287928        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    79457945    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    79467946    {
    7947         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7947        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    79487948        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    79497949        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    79577957    else
    79587958    {
    7959         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7959        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    79607960        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    79617961        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    79787978    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    79797979    {
    7980         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7980        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    79817981        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    79827982        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    79907990    else
    79917991    {
    7992         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     7992        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    79937993        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    79947994        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80118011    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    80128012    {
    8013         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8013        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80148014        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    80158015        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80238023    else
    80248024    {
    8025         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8025        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80268026        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    80278027        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80448044    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    80458045    {
    8046         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8046        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80478047        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    80488048        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80568056    else
    80578057    {
    8058         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8058        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80598059        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    80608060        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80778077    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    80788078    {
    8079         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8079        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80808080        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    80818081        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    80898089    else
    80908090    {
    8091         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8091        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    80928092        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    80938093        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    81108110    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    81118111    {
    8112         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8112        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    81138113        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    81148114        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    81228122    else
    81238123    {
    8124         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8124        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    81258125        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    81268126        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    81438143    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    81448144    {
    8145         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8145        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    81468146        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    81478147        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    81558155    else
    81568156    {
    8157         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8157        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    81588158        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    81598159        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    81768176    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    81778177    {
    8178         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8178        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    81798179        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    81808180        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    81888188    else
    81898189    {
    8190         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8190        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    81918191        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    81928192        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    82098209    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_16BIT)
    82108210    {
    8211         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8211        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    82128212        int16_t i16Imm; IEM_OPCODE_GET_NEXT_S16(&i16Imm);
    82138213        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    82218221    else
    82228222    {
    8223         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8223        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    82248224        int32_t i32Imm; IEM_OPCODE_GET_NEXT_S32(&i32Imm);
    82258225        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     
    82478247    {
    82488248        /* register target */
    8249         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8249        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    82508250        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    82518251        IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) {
     
    82608260    {
    82618261        /* memory target */
    8262         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8262        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    82638263        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    82648264        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    82888288    {
    82898289        /* register target */
    8290         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8290        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    82918291        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    82928292        IEM_MC_IF_EFL_BIT_SET(X86_EFL_OF) {
     
    83018301    {
    83028302        /* memory target */
    8303         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8303        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    83048304        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    83058305        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    83298329    {
    83308330        /* register target */
    8331         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8331        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    83328332        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    83338333        IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
     
    83428342    {
    83438343        /* memory target */
    8344         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8344        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    83458345        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    83468346        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    83708370    {
    83718371        /* register target */
    8372         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8372        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    83738373        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    83748374        IEM_MC_IF_EFL_BIT_SET(X86_EFL_CF) {
     
    83838383    {
    83848384        /* memory target */
    8385         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8385        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    83868386        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    83878387        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    84118411    {
    84128412        /* register target */
    8413         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8413        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    84148414        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84158415        IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) {
     
    84248424    {
    84258425        /* memory target */
    8426         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8426        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    84278427        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    84288428        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    84528452    {
    84538453        /* register target */
    8454         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8454        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    84558455        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84568456        IEM_MC_IF_EFL_BIT_SET(X86_EFL_ZF) {
     
    84658465    {
    84668466        /* memory target */
    8467         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8467        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    84688468        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    84698469        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    84938493    {
    84948494        /* register target */
    8495         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8495        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    84968496        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    84978497        IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) {
     
    85068506    {
    85078507        /* memory target */
    8508         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8508        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    85098509        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    85108510        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    85348534    {
    85358535        /* register target */
    8536         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8536        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    85378537        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    85388538        IEM_MC_IF_EFL_ANY_BITS_SET(X86_EFL_CF | X86_EFL_ZF) {
     
    85478547    {
    85488548        /* memory target */
    8549         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8549        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    85508550        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    85518551        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    85758575    {
    85768576        /* register target */
    8577         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8577        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    85788578        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    85798579        IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) {
     
    85888588    {
    85898589        /* memory target */
    8590         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8590        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    85918591        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    85928592        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    86168616    {
    86178617        /* register target */
    8618         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8618        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    86198619        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    86208620        IEM_MC_IF_EFL_BIT_SET(X86_EFL_SF) {
     
    86298629    {
    86308630        /* memory target */
    8631         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8631        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    86328632        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    86338633        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    86578657    {
    86588658        /* register target */
    8659         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8659        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    86608660        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    86618661        IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) {
     
    86708670    {
    86718671        /* memory target */
    8672         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8672        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    86738673        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    86748674        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    86988698    {
    86998699        /* register target */
    8700         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8700        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    87018701        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    87028702        IEM_MC_IF_EFL_BIT_SET(X86_EFL_PF) {
     
    87118711    {
    87128712        /* memory target */
    8713         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8713        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    87148714        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    87158715        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    87398739    {
    87408740        /* register target */
    8741         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8741        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    87428742        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    87438743        IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) {
     
    87528752    {
    87538753        /* memory target */
    8754         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8754        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    87558755        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    87568756        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    87808780    {
    87818781        /* register target */
    8782         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8782        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    87838783        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    87848784        IEM_MC_IF_EFL_BITS_NE(X86_EFL_SF, X86_EFL_OF) {
     
    87938793    {
    87948794        /* memory target */
    8795         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8795        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    87968796        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    87978797        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    88218821    {
    88228822        /* register target */
    8823         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8823        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    88248824        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    88258825        IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) {
     
    88348834    {
    88358835        /* memory target */
    8836         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8836        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    88378837        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    88388838        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    88628862    {
    88638863        /* register target */
    8864         IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386);
     8864        IEM_MC_BEGIN(0, 0, IEM_MC_F_MIN_386, 0);
    88658865        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    88668866        IEM_MC_IF_EFL_BIT_SET_OR_BITS_NE(X86_EFL_ZF, X86_EFL_SF, X86_EFL_OF) {
     
    88758875    {
    88768876        /* memory target */
    8877         IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     8877        IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    88788878        IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
    88798879        IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
     
    89358935        { \
    89368936            case IEMMODE_16BIT: \
    8937                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     8937                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    89388938                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    89398939                IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
     
    89528952            \
    89538953            case IEMMODE_32BIT: \
    8954                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     8954                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    89558955                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    89568956                IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
     
    89708970            \
    89718971            case IEMMODE_64BIT: \
    8972                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     8972                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    89738973                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    89748974                IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
     
    89988998            { \
    89998999                case IEMMODE_16BIT: \
    9000                     IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \
     9000                    IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \
    90019001                    IEM_MC_ARG(uint16_t *,              pu16Dst,                0); \
    90029002                    IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     
    90269026                \
    90279027                case IEMMODE_32BIT: \
    9028                     IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \
     9028                    IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \
    90299029                    IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
    90309030                    IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     
    90549054                \
    90559055                case IEMMODE_64BIT: \
    9056                     IEM_MC_BEGIN(3, 5, IEM_MC_F_64BIT); \
     9056                    IEM_MC_BEGIN(3, 5, IEM_MC_F_64BIT, 0); \
    90579057                    IEM_MC_ARG(uint64_t *,              pu64Dst,                0); \
    90589058                    IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     
    90929092            { \
    90939093                case IEMMODE_16BIT: \
    9094                     IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \
     9094                    IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \
    90959095                    IEM_MC_ARG(uint16_t *,              pu16Dst,                0); \
    90969096                    IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     
    91209120                \
    91219121                case IEMMODE_32BIT: \
    9122                     IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \
     9122                    IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \
    91239123                    IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
    91249124                    IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     
    91489148                \
    91499149                case IEMMODE_64BIT: \
    9150                     IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); \
     9150                    IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); \
    91519151                    IEM_MC_ARG(uint64_t *,              pu64Dst,                0); \
    91529152                    IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     
    91929192        { \
    91939193            case IEMMODE_16BIT: \
    9194                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     9194                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    91959195                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    91969196                IEM_MC_ARG(uint16_t const *, pu16Dst,               0); \
     
    92099209            \
    92109210            case IEMMODE_32BIT: \
    9211                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     9211                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    92129212                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    92139213                IEM_MC_ARG(uint32_t const *, pu32Dst,               0); \
     
    92269226            \
    92279227            case IEMMODE_64BIT: \
    9228                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     9228                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    92299229                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    92309230                IEM_MC_ARG(uint64_t const *, pu64Dst,               0); \
     
    92549254            { \
    92559255                case IEMMODE_16BIT: \
    9256                     IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \
     9256                    IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \
    92579257                    IEM_MC_ARG(uint16_t const *,        pu16Dst,                0); \
    92589258                    IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     
    92829282                \
    92839283                case IEMMODE_32BIT: \
    9284                     IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386); \
     9284                    IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_386, 0); \
    92859285                    IEM_MC_ARG(uint32_t const *,        pu32Dst,                0); \
    92869286                    IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     
    93109310                \
    93119311                case IEMMODE_64BIT: \
    9312                     IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT); \
     9312                    IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0); \
    93139313                    IEM_MC_ARG(uint64_t const *,        pu64Dst,                0); \
    93149314                    IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     
    93739373        {
    93749374            case IEMMODE_16BIT:
    9375                 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386);
     9375                IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0);
    93769376                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    93779377                IEM_MC_ARG(uint16_t *,      pu16Dst,                0);
     
    93909390
    93919391            case IEMMODE_32BIT:
    9392                 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386);
     9392                IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0);
    93939393                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    93949394                IEM_MC_ARG(uint32_t *,      pu32Dst,                0);
     
    94089408
    94099409            case IEMMODE_64BIT:
    9410                 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT);
     9410                IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0);
    94119411                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    94129412                IEM_MC_ARG(uint64_t *,      pu64Dst,                0);
     
    94329432        {
    94339433            case IEMMODE_16BIT:
    9434                 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386);
     9434                IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0);
    94359435                IEM_MC_ARG(uint16_t *,              pu16Dst,                0);
    94369436                IEM_MC_ARG(uint16_t,                u16Src,                 1);
     
    94569456
    94579457            case IEMMODE_32BIT:
    9458                 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386);
     9458                IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0);
    94599459                IEM_MC_ARG(uint32_t *,              pu32Dst,                0);
    94609460                IEM_MC_ARG(uint32_t,                u32Src,                 1);
     
    94809480
    94819481            case IEMMODE_64BIT:
    9482                 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT);
     9482                IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0);
    94839483                IEM_MC_ARG(uint64_t *,              pu64Dst,                0);
    94849484                IEM_MC_ARG(uint64_t,                u64Src,                 1);
     
    95229522        {
    95239523            case IEMMODE_16BIT:
    9524                 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386);
     9524                IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0);
    95259525                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    95269526                IEM_MC_ARG(uint16_t *,      pu16Dst,                0);
     
    95409540
    95419541            case IEMMODE_32BIT:
    9542                 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386);
     9542                IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_386, 0);
    95439543                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    95449544                IEM_MC_ARG(uint32_t *,      pu32Dst,                0);
     
    95599559
    95609560            case IEMMODE_64BIT:
    9561                 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT);
     9561                IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0);
    95629562                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    95639563                IEM_MC_ARG(uint64_t *,      pu64Dst,                0);
     
    95849584        {
    95859585            case IEMMODE_16BIT:
    9586                 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386);
     9586                IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0);
    95879587                IEM_MC_ARG(uint16_t *,              pu16Dst,                0);
    95889588                IEM_MC_ARG(uint16_t,                u16Src,                 1);
     
    96079607
    96089608            case IEMMODE_32BIT:
    9609                 IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386);
     9609                IEM_MC_BEGIN(4, 3, IEM_MC_F_MIN_386, 0);
    96109610                IEM_MC_ARG(uint32_t *,              pu32Dst,                0);
    96119611                IEM_MC_ARG(uint32_t,                u32Src,                 1);
     
    96309630
    96319631            case IEMMODE_64BIT:
    9632                 IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT);
     9632                IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0);
    96339633                IEM_MC_ARG(uint64_t *,              pu64Dst,                0);
    96349634                IEM_MC_ARG(uint64_t,                u64Src,                 1);
     
    97459745        IEMOP_RAISE_INVALID_OPCODE_RET();
    97469746
    9747     IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II);
     9747    IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II, 0);
    97489748    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    97499749    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    97659765        IEMOP_RAISE_INVALID_OPCODE_RET();
    97669766
    9767     IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II);
     9767    IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_PENTIUM_II, 0);
    97689768    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    97699769    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    98039803        IEMOP_RAISE_INVALID_OPCODE_RET();
    98049804
    9805     IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II);
     9805    IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II, 0);
    98069806    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    98079807    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    98399839        IEMOP_RAISE_INVALID_OPCODE_RET();
    98409840
    9841     IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II);
     9841    IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_PENTIUM_II, 0);
    98429842    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    98439843    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    98659865        IEMOP_RAISE_INVALID_OPCODE_RET();
    98669866
    9867     IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE);
     9867    IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE, 0);
    98689868    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    98699869    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    98929892        IEMOP_RAISE_INVALID_OPCODE_RET();
    98939893
    9894     IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE);
     9894    IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_CORE, 0);
    98959895    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    98969896    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    99219921        return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm);
    99229922
    9923     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     9923    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    99249924    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    99259925    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    99459945        return FNIEMOP_CALL_1(iemOp_InvalidWithRMAllNeeded, bRm);
    99469946
    9947     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     9947    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    99489948    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    99499949    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    99619961    RT_NOREF_PV(bRm);
    99629962    IEMOP_MNEMONIC(lfence, "lfence");
    9963     IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     9963    IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    99649964    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    99659965#ifdef RT_ARCH_ARM64
     
    99819981    RT_NOREF_PV(bRm);
    99829982    IEMOP_MNEMONIC(mfence, "mfence");
    9983     IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     9983    IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    99849984    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    99859985#ifdef RT_ARCH_ARM64
     
    1000110001    RT_NOREF_PV(bRm);
    1000210002    IEMOP_MNEMONIC(sfence, "sfence");
    10003     IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     10003    IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1000410004    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1000510005#ifdef RT_ARCH_ARM64
     
    1002210022    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    1002310023    {
    10024         IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT);
     10024        IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0);
    1002510025        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1002610026        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1003310033    else
    1003410034    {
    10035         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     10035        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1003610036        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1003710037        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1005110051    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    1005210052    {
    10053         IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT);
     10053        IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0);
    1005410054        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1005510055        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1006210062    else
    1006310063    {
    10064         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     10064        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1006510065        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1006610066        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1008010080    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    1008110081    {
    10082         IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT);
     10082        IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0);
    1008310083        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1008410084        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1009210092    else
    1009310093    {
    10094         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     10094        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1009510095        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1009610096        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1011010110    if (pVCpu->iem.s.enmEffOpSize == IEMMODE_64BIT)
    1011110111    {
    10112         IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT);
     10112        IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0);
    1011310113        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1011410114        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1012210122    else
    1012310123    {
    10124         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     10124        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1012510125        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fFsGsBase);
    1012610126        IEM_MC_MAYBE_RAISE_FSGSBASE_XCPT();
     
    1020310203    if (IEM_IS_MODRM_REG_MODE(bRm))
    1020410204    {
    10205         IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486);
     10205        IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486, 0);
    1020610206        IEMOP_HLP_DONE_DECODING();
    1020710207        IEM_MC_ARG(uint8_t *,       pu8Dst,                 0);
     
    1022410224    else
    1022510225    {
    10226         IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486);
     10226        IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486, 0);
    1022710227        IEM_MC_ARG(uint8_t *,       pu8Dst,                 0);
    1022810228        IEM_MC_ARG(uint8_t *,       pu8Al,                  1);
     
    1026510265        {
    1026610266            case IEMMODE_16BIT:
    10267                 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486);
     10267                IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486, 0);
    1026810268                IEMOP_HLP_DONE_DECODING();
    1026910269                IEM_MC_ARG(uint16_t *,      pu16Dst,                0);
     
    1028610286
    1028710287            case IEMMODE_32BIT:
    10288                 IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486);
     10288                IEM_MC_BEGIN(4, 0, IEM_MC_F_MIN_486, 0);
    1028910289                IEMOP_HLP_DONE_DECODING();
    1029010290                IEM_MC_ARG(uint32_t *,      pu32Dst,                0);
     
    1031310313
    1031410314            case IEMMODE_64BIT:
    10315                 IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT);
     10315                IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0);
    1031610316                IEMOP_HLP_DONE_DECODING();
    1031710317                IEM_MC_ARG(uint64_t *,      pu64Dst,                0);
     
    1035310353        {
    1035410354            case IEMMODE_16BIT:
    10355                 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486);
     10355                IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486, 0);
    1035610356                IEM_MC_ARG(uint16_t *,      pu16Dst,                0);
    1035710357                IEM_MC_ARG(uint16_t *,      pu16Ax,                 1);
     
    1038210382
    1038310383            case IEMMODE_32BIT:
    10384                 IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486);
     10384                IEM_MC_BEGIN(4, 4, IEM_MC_F_MIN_486, 0);
    1038510385                IEM_MC_ARG(uint32_t *,      pu32Dst,                0);
    1038610386                IEM_MC_ARG(uint32_t *,      pu32Eax,                 1);
     
    1041510415
    1041610416            case IEMMODE_64BIT:
    10417                 IEM_MC_BEGIN(4, 4, IEM_MC_F_64BIT);
     10417                IEM_MC_BEGIN(4, 4, IEM_MC_F_64BIT, 0);
    1041810418                IEM_MC_ARG(uint64_t *,      pu64Dst,                0);
    1041910419                IEM_MC_ARG(uint64_t *,      pu64Rax,                1);
     
    1052310523        {
    1052410524            case IEMMODE_16BIT:
    10525                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     10525                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1052610526                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1052710527                IEM_MC_LOCAL(uint16_t, u16Value);
     
    1053310533
    1053410534            case IEMMODE_32BIT:
    10535                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     10535                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1053610536                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1053710537                IEM_MC_LOCAL(uint32_t, u32Value);
     
    1054310543
    1054410544            case IEMMODE_64BIT:
    10545                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     10545                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    1054610546                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1054710547                IEM_MC_LOCAL(uint64_t, u64Value);
     
    1056310563        {
    1056410564            case IEMMODE_16BIT:
    10565                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     10565                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1056610566                IEM_MC_LOCAL(uint16_t, u16Value);
    1056710567                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1057510575
    1057610576            case IEMMODE_32BIT:
    10577                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     10577                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1057810578                IEM_MC_LOCAL(uint32_t, u32Value);
    1057910579                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1058710587
    1058810588            case IEMMODE_64BIT:
    10589                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     10589                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1059010590                IEM_MC_LOCAL(uint64_t, u64Value);
    1059110591                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1062210622        if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT)
    1062310623        {
    10624             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     10624            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1062510625            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1062610626            IEM_MC_LOCAL(uint32_t, u32Value);
     
    1063210632        else
    1063310633        {
    10634             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     10634            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    1063510635            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1063610636            IEM_MC_LOCAL(uint64_t, u64Value);
     
    1064810648        if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT)
    1064910649        {
    10650             IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     10650            IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1065110651            IEM_MC_LOCAL(uint32_t, u32Value);
    1065210652            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1066010660        else
    1066110661        {
    10662             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     10662            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1066310663            IEM_MC_LOCAL(uint64_t, u64Value);
    1066410664            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1072810728        { \
    1072910729            case IEMMODE_16BIT: \
    10730                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     10730                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    1073110731                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1073210732                IEM_MC_ARG(uint16_t *,      pu16Dst,                    0); \
     
    1074310743            \
    1074410744            case IEMMODE_32BIT: \
    10745                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     10745                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    1074610746                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1074710747                IEM_MC_ARG(uint32_t *,      pu32Dst,                    0); \
     
    1075910759            \
    1076010760            case IEMMODE_64BIT: \
    10761                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     10761                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    1076210762                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1076310763                IEM_MC_ARG(uint64_t *,      pu64Dst,                    0); \
     
    1078510785            { \
    1078610786                case IEMMODE_16BIT: \
    10787                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     10787                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    1078810788                    IEM_MC_ARG(uint16_t *,              pu16Dst,                0); \
    1078910789                    IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     
    1080710807                \
    1080810808                case IEMMODE_32BIT: \
    10809                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     10809                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    1081010810                    IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
    1081110811                    IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     
    1082910829                \
    1083010830                case IEMMODE_64BIT: \
    10831                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     10831                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    1083210832                    IEM_MC_ARG(uint64_t *,              pu64Dst,                0); \
    1083310833                    IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     
    1086110861            { \
    1086210862                case IEMMODE_16BIT: \
    10863                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     10863                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    1086410864                    IEM_MC_ARG(uint16_t *,              pu16Dst,                0); \
    1086510865                    IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     
    1088310883                \
    1088410884                case IEMMODE_32BIT: \
    10885                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     10885                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    1088610886                    IEM_MC_ARG(uint32_t *,              pu32Dst,                0); \
    1088710887                    IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     
    1090510905                \
    1090610906                case IEMMODE_64BIT: \
    10907                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     10907                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    1090810908                    IEM_MC_ARG(uint64_t *,              pu64Dst,                0); \
    1090910909                    IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     
    1094410944        { \
    1094510945            case IEMMODE_16BIT: \
    10946                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     10946                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    1094710947                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1094810948                IEM_MC_ARG(uint16_t const *, pu16Dst,                   0); \
     
    1095910959            \
    1096010960            case IEMMODE_32BIT: \
    10961                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386); \
     10961                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
    1096210962                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1096310963                IEM_MC_ARG(uint32_t const *, pu32Dst,                   0); \
     
    1097410974            \
    1097510975            case IEMMODE_64BIT: \
    10976                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     10976                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    1097710977                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
    1097810978                IEM_MC_ARG(uint64_t const *, pu64Dst,                   0); \
     
    1100011000            { \
    1100111001                case IEMMODE_16BIT: \
    11002                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     11002                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    1100311003                    IEM_MC_ARG(uint16_t const *,        pu16Dst,                0); \
    1100411004                    IEM_MC_ARG(uint16_t,                u16Src,                 1); \
     
    1102211022                \
    1102311023                case IEMMODE_32BIT: \
    11024                     IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386); \
     11024                    IEM_MC_BEGIN(3, 3, IEM_MC_F_MIN_386, 0); \
    1102511025                    IEM_MC_ARG(uint32_t const *,        pu32Dst,                0); \
    1102611026                    IEM_MC_ARG(uint32_t,                u32Src,                 1); \
     
    1104411044                \
    1104511045                case IEMMODE_64BIT: \
    11046                     IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT); \
     11046                    IEM_MC_BEGIN(3, 3, IEM_MC_F_64BIT, 0); \
    1104711047                    IEM_MC_ARG(uint64_t const *,        pu64Dst,                0); \
    1104811048                    IEM_MC_ARG(uint64_t,                u64Src,                 1); \
     
    1116411164        {
    1116511165            case IEMMODE_16BIT:
    11166                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     11166                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    1116711167                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1116811168                IEM_MC_ARG(uint16_t *, pu16Dst, 0);
     
    1118011180
    1118111181            case IEMMODE_32BIT:
    11182                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386);
     11182                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    1118311183                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1118411184                IEM_MC_ARG(uint32_t *, pu32Dst, 0);
     
    1119811198
    1119911199            case IEMMODE_64BIT:
    11200                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     11200                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    1120111201                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1120211202                IEM_MC_ARG(uint64_t *, pu64Dst, 0);
     
    1122411224        {
    1122511225            case IEMMODE_16BIT:
    11226                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386);
     11226                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    1122711227                IEM_MC_ARG(uint16_t *, pu16Dst, 0);
    1122811228                IEM_MC_ARG(uint16_t,   u16Src,  1);
     
    1124211242
    1124311243            case IEMMODE_32BIT:
    11244                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386);
     11244                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    1124511245                IEM_MC_ARG(uint32_t *, pu32Dst, 0);
    1124611246                IEM_MC_ARG(uint32_t,   u32Src,  1);
     
    1126311263
    1126411264            case IEMMODE_64BIT:
    11265                 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT);
     11265                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0);
    1126611266                IEM_MC_ARG(uint64_t *, pu64Dst, 0);
    1126711267                IEM_MC_ARG(uint64_t,   u64Src,  1);
     
    1137711377        {
    1137811378            case IEMMODE_16BIT:
    11379                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     11379                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1138011380                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1138111381                IEM_MC_LOCAL(uint16_t, u16Value);
     
    1138711387
    1138811388            case IEMMODE_32BIT:
    11389                 IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     11389                IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1139011390                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1139111391                IEM_MC_LOCAL(uint32_t, u32Value);
     
    1139711397
    1139811398            case IEMMODE_64BIT:
    11399                 IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     11399                IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    1140011400                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1140111401                IEM_MC_LOCAL(uint64_t, u64Value);
     
    1141711417        {
    1141811418            case IEMMODE_16BIT:
    11419                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     11419                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1142011420                IEM_MC_LOCAL(uint16_t, u16Value);
    1142111421                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1142911429
    1143011430            case IEMMODE_32BIT:
    11431                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     11431                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1143211432                IEM_MC_LOCAL(uint32_t, u32Value);
    1143311433                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1144111441
    1144211442            case IEMMODE_64BIT:
    11443                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     11443                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1144411444                IEM_MC_LOCAL(uint64_t, u64Value);
    1144511445                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1147611476        if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT)
    1147711477        {
    11478             IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386);
     11478            IEM_MC_BEGIN(0, 1, IEM_MC_F_MIN_386, 0);
    1147911479            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1148011480            IEM_MC_LOCAL(uint32_t, u32Value);
     
    1148611486        else
    1148711487        {
    11488             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     11488            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    1148911489            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1149011490            IEM_MC_LOCAL(uint64_t, u64Value);
     
    1150211502        if (pVCpu->iem.s.enmEffOpSize != IEMMODE_64BIT)
    1150311503        {
    11504             IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     11504            IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1150511505            IEM_MC_LOCAL(uint32_t, u32Value);
    1150611506            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1151411514        else
    1151511515        {
    11516             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     11516            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1151711517            IEM_MC_LOCAL(uint64_t, u64Value);
    1151811518            IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1154011540    if (IEM_IS_MODRM_REG_MODE(bRm))
    1154111541    {
    11542         IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486);
     11542        IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486, 0);
    1154311543        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1154411544        IEM_MC_ARG(uint8_t *,  pu8Dst,  0);
     
    1155911559         * We're accessing memory.
    1156011560         */
    11561         IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486);
     11561        IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486, 0);
    1156211562        IEM_MC_ARG(uint8_t *,   pu8Dst,          0);
    1156311563        IEM_MC_ARG(uint8_t *,   pu8Reg,          1);
     
    1160211602        {
    1160311603            case IEMMODE_16BIT:
    11604                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486);
     11604                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486, 0);
    1160511605                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1160611606                IEM_MC_ARG(uint16_t *, pu16Dst,  0);
     
    1161811618
    1161911619            case IEMMODE_32BIT:
    11620                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486);
     11620                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_486, 0);
    1162111621                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1162211622                IEM_MC_ARG(uint32_t *, pu32Dst,  0);
     
    1163611636
    1163711637            case IEMMODE_64BIT:
    11638                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     11638                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    1163911639                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1164011640                IEM_MC_ARG(uint64_t *, pu64Dst,  0);
     
    1166211662        {
    1166311663            case IEMMODE_16BIT:
    11664                 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486);
     11664                IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486, 0);
    1166511665                IEM_MC_ARG(uint16_t *,  pu16Dst,         0);
    1166611666                IEM_MC_ARG(uint16_t *,  pu16Reg,         1);
     
    1168911689
    1169011690            case IEMMODE_32BIT:
    11691                 IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486);
     11691                IEM_MC_BEGIN(3, 4, IEM_MC_F_MIN_486, 0);
    1169211692                IEM_MC_ARG(uint32_t *,  pu32Dst,         0);
    1169311693                IEM_MC_ARG(uint32_t *,  pu32Reg,         1);
     
    1171611716
    1171711717            case IEMMODE_64BIT:
    11718                 IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT);
     11718                IEM_MC_BEGIN(3, 4, IEM_MC_F_64BIT, 0);
    1171911719                IEM_MC_ARG(uint64_t *,  pu64Dst,         0);
    1172011720                IEM_MC_ARG(uint64_t *,  pu64Reg,         1);
     
    1175911759         * XMM, XMM.
    1176011760         */
    11761         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     11761        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1176211762        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1176311763        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
     
    1178811788         * XMM, [mem128].
    1178911789         */
    11790         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     11790        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1179111791        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1179211792        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    1183011830         * XMM, XMM.
    1183111831         */
    11832         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     11832        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1183311833        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1183411834        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    1185911859         * XMM, [mem128].
    1186011860         */
    11861         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     11861        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1186211862        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1186311863        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    1190111901         * XMM32, XMM32.
    1190211902         */
    11903         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     11903        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1190411904        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1190511905        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    1193011930         * XMM32, [mem32].
    1193111931         */
    11932         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     11932        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1193311933        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1193411934        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    1197211972         * XMM64, XMM64.
    1197311973         */
    11974         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     11974        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1197511975        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1197611976        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    1200112001         * XMM64, [mem64].
    1200212002         */
    12003         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     12003        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1200412004        IEM_MC_LOCAL(IEMMEDIAF2XMMSRC,              Src);
    1200512005        IEM_MC_LOCAL(X86XMMREG,                     Dst);
     
    1204512045        {
    1204612046            case IEMMODE_32BIT:
    12047                 IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386);
     12047                IEM_MC_BEGIN(0, 2, IEM_MC_F_MIN_386, 0);
    1204812048                IEM_MC_LOCAL(uint32_t, u32Value);
    1204912049                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1205912059
    1206012060            case IEMMODE_64BIT:
    12061                 IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     12061                IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    1206212062                IEM_MC_LOCAL(uint64_t, u64Value);
    1206312063                IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst);
     
    1209912099         * Register, register.
    1210012100         */
    12101         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12101        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1210212102        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1210312103        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
     
    1212012120         * Register, memory.
    1212112121         */
    12122         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     12122        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1212312123        IEM_MC_ARG(uint64_t *,    pu64Dst,               0);
    1212412124        IEM_MC_ARG(uint16_t,      u16Src,                1);
     
    1215312153         * Register, register.
    1215412154         */
    12155         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12155        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1215612156        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1215712157        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    1217212172         * Register, memory.
    1217312173         */
    12174         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     12174        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1217512175        IEM_MC_ARG(PRTUINT128U,   puDst,                 0);
    1217612176        IEM_MC_ARG(uint16_t,      u16Src,                1);
     
    1220712207         * Greg32, MMX, imm8.
    1220812208         */
    12209         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     12209        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1221012210        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1221112211        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
     
    1223912239         * Greg32, XMM, imm8.
    1224012240         */
    12241         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     12241        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1224212242        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1224312243        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    1227412274         * XMM, XMM, imm8.
    1227512275         */
    12276         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12276        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1227712277        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1227812278        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse);
     
    1229312293         * XMM, [mem128], imm8.
    1229412294         */
    12295         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     12295        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1229612296        IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    1229712297        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    1232612326         * XMM, XMM, imm8.
    1232712327         */
    12328         IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12328        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1232912329        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1233012330        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
     
    1234512345         * XMM, [mem128], imm8.
    1234612346         */
    12347         IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     12347        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1234812348        IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    1234912349        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    1237712377    IEMOP_MNEMONIC(cmpxchg8b, "cmpxchg8b Mq");
    1237812378
    12379     IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER);
     12379    IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1238012380    IEM_MC_ARG(uint64_t *, pu64MemDst,     0);
    1238112381    IEM_MC_ARG(PRTUINT64U, pu64EaxEdx,     1);
     
    1242412424    if (IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fCmpXchg16b)
    1242512425    {
    12426         IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT);
     12426        IEM_MC_BEGIN(4, 3, IEM_MC_F_64BIT, 0);
    1242712427        IEM_MC_ARG(PRTUINT128U, pu128MemDst,     0);
    1242812428        IEM_MC_ARG(PRTUINT128U, pu128RaxRdx,     1);
     
    1252212522        {
    1252312523            case IEMMODE_16BIT:
    12524                 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12524                IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1252512525                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1252612526                IEM_MC_ARG(uint16_t *,      pu16Dst,                0);
     
    1253712537
    1253812538            case IEMMODE_32BIT:
    12539                 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386);
     12539                IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0);
    1254012540                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1254112541                IEM_MC_ARG(uint32_t *,      pu32Dst,                0);
     
    1255312553
    1255412554            case IEMMODE_64BIT:
    12555                 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     12555                IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    1255612556                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1255712557                IEM_MC_ARG(uint64_t *,      pu64Dst,                0);
     
    1258212582    IEMOP_HLP_IN_VMX_OPERATION("vmptrld", kVmxVDiag_Vmptrld);
    1258312583    IEMOP_HLP_VMX_INSTR("vmptrld", kVmxVDiag_Vmptrld);
    12584     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12584    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1258512585    IEM_MC_ARG(uint8_t, iEffSeg,     0);
    1258612586    IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1);
     
    1260212602    IEMOP_HLP_IN_VMX_OPERATION("vmclear", kVmxVDiag_Vmclear);
    1260312603    IEMOP_HLP_VMX_INSTR("vmclear", kVmxVDiag_Vmclear);
    12604     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12604    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1260512605    IEM_MC_ARG(uint8_t, iEffSeg,     0);
    1260612606    IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1);
     
    1262112621    IEMOP_MNEMONIC(vmxon, "vmxon");
    1262212622    IEMOP_HLP_VMX_INSTR("vmxon", kVmxVDiag_Vmxon);
    12623     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12623    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1262412624    IEM_MC_ARG(uint8_t, iEffSeg,     0);
    1262512625    IEM_MC_ARG(RTGCPTR, GCPtrEffSrc, 1);
     
    1264112641    IEMOP_HLP_IN_VMX_OPERATION("vmptrst", kVmxVDiag_Vmptrst);
    1264212642    IEMOP_HLP_VMX_INSTR("vmptrst", kVmxVDiag_Vmptrst);
    12643     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12643    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1264412644    IEM_MC_ARG(uint8_t, iEffSeg,     0);
    1264512645    IEM_MC_ARG(RTGCPTR, GCPtrEffDst, 1);
     
    1266612666        {
    1266712667            case IEMMODE_16BIT:
    12668                 IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     12668                IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1266912669                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1267012670                IEM_MC_ARG(uint16_t *,      pu16Dst,                0);
     
    1268112681
    1268212682            case IEMMODE_32BIT:
    12683                 IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386);
     12683                IEM_MC_BEGIN(2, 0, IEM_MC_F_MIN_386, 0);
    1268412684                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1268512685                IEM_MC_ARG(uint32_t *,      pu32Dst,                0);
     
    1269712697
    1269812698            case IEMMODE_64BIT:
    12699                 IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT);
     12699                IEM_MC_BEGIN(2, 0, IEM_MC_F_64BIT, 0);
    1270012700                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1270112701                IEM_MC_ARG(uint64_t *,      pu64Dst,                0);
     
    1277512775    {
    1277612776        case IEMMODE_16BIT:
    12777             IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486);
     12777            IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486, 0);
    1277812778            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1277912779            IEM_MC_ARG(uint32_t *,  pu32Dst, 0);
     
    1278512785
    1278612786        case IEMMODE_32BIT:
    12787             IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486);
     12787            IEM_MC_BEGIN(1, 0, IEM_MC_F_MIN_486, 0);
    1278812788            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1278912789            IEM_MC_ARG(uint32_t *,  pu32Dst, 0);
     
    1279612796
    1279712797        case IEMMODE_64BIT:
    12798             IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT);
     12798            IEM_MC_BEGIN(1, 0, IEM_MC_F_64BIT, 0);
    1279912799            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    1280012800            IEM_MC_ARG(uint64_t *,  pu64Dst, 0);
     
    1302113021         * Register, register.
    1302213022         */
    13023         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     13023        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1302413024        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1302513025        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    1303913039         * Memory, register.
    1304013040         */
    13041         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     13041        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1304213042        IEM_MC_LOCAL(uint64_t,                  uSrc);
    1304313043        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    1307513075         */
    1307613076        IEMOP_MNEMONIC2(RM_REG, MOVQ2DQ, movq2dq, VqZx_WO, Nq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    13077         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     13077        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1307813078        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1307913079        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    1312713127         */
    1312813128        IEMOP_MNEMONIC2(RM_REG, MOVDQ2Q, movdq2q, Pq_WO, Uq, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    13129         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     13129        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1313013130        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1313113131        IEM_MC_LOCAL(uint64_t,                  uSrc);
     
    1316613166        /* Note! Taking the lazy approch here wrt the high 32-bits of the GREG. */
    1316713167        IEMOP_MNEMONIC2(RM_REG, PMOVMSKB, pmovmskb, Gd, Nq, DISOPTYPE_X86_MMX | DISOPTYPE_HARMLESS, 0);
    13168         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     13168        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1316913169        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX_2_OR(fSse, fAmdMmxExts);
    1317013170        IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    1319513195        /* Note! Taking the lazy approch here wrt the high 32-bits of the GREG. */
    1319613196        IEMOP_MNEMONIC2(RM_REG, PMOVMSKB, pmovmskb, Gd, Ux, DISOPTYPE_X86_SSE | DISOPTYPE_HARMLESS, 0);
    13197         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     13197        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1319813198        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    1319913199        IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    1352413524    {
    1352513525        /* Register, memory. */
    13526         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     13526        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1352713527        IEM_MC_LOCAL(uint64_t,                  uSrc);
    1352813528        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    1357113571    {
    1357213572        /* Register, memory. */
    13573         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     13573        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1357413574        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    1357513575        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    1378213782         * Register, memory.
    1378313783         */
    13784         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     13784        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    1378513785        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    1378613786        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h

    r100854 r101387  
    5151        if (pVCpu->iem.s.uVexLength)
    5252        {
    53             IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     53            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    5454            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    5555            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    7171        else
    7272        {
    73             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     73            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    7474            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    7575            IEM_MC_IMPLICIT_AVX_AIMPL_ARGS();
     
    9595        if (pVCpu->iem.s.uVexLength)
    9696        {
    97             IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER);
     97            IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0);
    9898            IEM_MC_LOCAL(RTUINT256U,            uDst);
    9999            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    120120        else
    121121        {
    122             IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     122            IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    123123            IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    124124            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    165165        if (pVCpu->iem.s.uVexLength)
    166166        {
    167             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     167            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    168168            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    169169            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    184184        else
    185185        {
    186             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     186            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    187187            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    188188            IEM_MC_ARG(PRTUINT128U,          puDst,  0);
     
    207207        if (pVCpu->iem.s.uVexLength)
    208208        {
    209             IEM_MC_BEGIN(3, 4, IEM_MC_F_NOT_286_OR_OLDER);
     209            IEM_MC_BEGIN(3, 4, IEM_MC_F_NOT_286_OR_OLDER, 0);
    210210            IEM_MC_LOCAL(RTUINT256U,            uDst);
    211211            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    231231        else
    232232        {
    233             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     233            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    234234            IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    235235            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    307307        if (pVCpu->iem.s.uVexLength)
    308308        {
    309             IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     309            IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    310310            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    311311            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    323323        else
    324324        {
    325             IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     325            IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    326326            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    327327            IEM_MC_ARG(PRTUINT128U,          puDst,  0);
     
    344344        if (pVCpu->iem.s.uVexLength)
    345345        {
    346             IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER);
     346            IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    347347            IEM_MC_LOCAL(RTUINT256U,            uDst);
    348348            IEM_MC_LOCAL(RTUINT256U,            uSrc);
     
    365365        else
    366366        {
    367             IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     367            IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    368368            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    369369            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    432432         * Register, register.
    433433         */
    434         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     434        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    435435        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    436436        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
     
    450450         * 128-bit: Register, Memory
    451451         */
    452         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     452        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    453453        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    454454        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    470470         * 256-bit: Register, Memory
    471471         */
    472         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     472        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    473473        IEM_MC_LOCAL(RTUINT256U,                uSrc);
    474474        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    507507         * Register, register.
    508508         */
    509         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     509        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    510510        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    511511        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
     
    525525         * 128-bit: Memory, register.
    526526         */
    527         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     527        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    528528        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    529529        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    545545         * 256-bit: Memory, register.
    546546         */
    547         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     547        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    548548        IEM_MC_LOCAL(RTUINT256U,                uSrc);
    549549        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    583583         */
    584584        IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVSS, vmovss, Vss_WO, HssHi, Uss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    585         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     585        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    586586        IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    587587        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
     
    608608         */
    609609        IEMOP_MNEMONIC2(VEX_RM_MEM, VMOVSS, vmovss, VssZx_WO, Md, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    610         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     610        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    611611        IEM_MC_LOCAL(uint32_t,                  uSrc);
    612612        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    646646         */
    647647        IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVSD, vmovsd, Vsd_WO, HsdHi, Usd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    648         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     648        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    649649        IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    650650
     
    672672         */
    673673        IEMOP_MNEMONIC2(VEX_RM_MEM, VMOVSD, vmovsd, VsdZx_WO, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    674         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     674        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    675675        IEM_MC_LOCAL(uint64_t,                  uSrc);
    676676        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    709709         * Register, register.
    710710         */
    711         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     711        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    712712        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    713713        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
     
    727727         * 128-bit: Memory, register.
    728728         */
    729         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     729        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    730730        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    731731        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    747747         * 256-bit: Memory, register.
    748748         */
    749         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     749        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    750750        IEM_MC_LOCAL(RTUINT256U,                uSrc);
    751751        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    784784         * Register, register.
    785785         */
    786         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     786        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    787787        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    788788        IEM_MC_MAYBE_RAISE_AVX_RELATED_XCPT();
     
    802802         * 128-bit: Memory, register.
    803803         */
    804         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     804        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    805805        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    806806        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    822822         * 256-bit: Memory, register.
    823823         */
    824         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     824        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    825825        IEM_MC_LOCAL(RTUINT256U,                uSrc);
    826826        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    859859         */
    860860        IEMOP_MNEMONIC3(VEX_MVR_REG, VMOVSS, vmovss, Uss_WO, HssHi, Vss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    861         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     861        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    862862        IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    863863
     
    885885         */
    886886        IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVSS, vmovss, Md_WO, Vss, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    887         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     887        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    888888        IEM_MC_LOCAL(uint32_t,                  uSrc);
    889889        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    923923         */
    924924        IEMOP_MNEMONIC3(VEX_MVR_REG, VMOVSD, vmovsd, Usd_WO, HsdHi, Vsd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    925         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     925        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    926926        IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    927927
     
    949949         */
    950950        IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVSD, vmovsd, Mq_WO, Vsd, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_IGNORED);
    951         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     951        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    952952        IEM_MC_LOCAL(uint64_t,                  uSrc);
    953953        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    986986         */
    987987        IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVHLPS, vmovhlps, Vq_WO, HqHi, UqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    988         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     988        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    989989        IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx);
    990990
     
    10161016        IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPS, vmovlps, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    10171017
    1018         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1018        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10191019        IEM_MC_LOCAL(uint64_t,                  uSrc);
    10201020        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    10551055        IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVLPD, vmovlpd, Vq_WO, HqHi, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    10561056
    1057         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1057        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10581058        IEM_MC_LOCAL(uint64_t,                  uSrc);
    10591059        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    11121112        if (pVCpu->iem.s.uVexLength == 0)
    11131113        {
    1114             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1114            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11151115            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    11161116            IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    11311131        else
    11321132        {
    1133             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1133            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11341134            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    11351135            IEM_MC_IMPLICIT_AVX_AIMPL_ARGS();
     
    11521152        if (pVCpu->iem.s.uVexLength == 0)
    11531153        {
    1154             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1154            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11551155            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    11561156            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    11731173        else
    11741174        {
    1175             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1175            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11761176            IEM_MC_LOCAL(RTUINT256U,            uSrc);
    11771177            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    12171217        if (pVCpu->iem.s.uVexLength == 0)
    12181218        {
    1219             IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1219            IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12201220            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    12211221            IEM_MC_ARG(uint64_t,                    uSrc, 0);
     
    12341234        else
    12351235        {
    1236             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1236            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12371237            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    12381238            IEM_MC_IMPLICIT_AVX_AIMPL_ARGS();
     
    12551255        if (pVCpu->iem.s.uVexLength == 0)
    12561256        {
    1257             IEM_MC_BEGIN(1, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1257            IEM_MC_BEGIN(1, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12581258            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    12591259            IEM_MC_ARG(uint64_t,                    uSrc, 0);
     
    12741274        else
    12751275        {
    1276             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1276            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12771277            IEM_MC_LOCAL(RTUINT256U,            uSrc);
    12781278            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    13131313        IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVLPS, vmovlps, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    13141314
    1315         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1315        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13161316        IEM_MC_LOCAL(uint64_t,                  uSrc);
    13171317        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    13601360    {
    13611361        IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVLPD, vmovlpd, Mq_WO, Vq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    1362         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1362        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13631363        IEM_MC_LOCAL(uint64_t,                  uSrc);
    13641364        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    14521452        IEMOP_MNEMONIC3(VEX_RVM_REG, VMOVLHPS, vmovlhps, Vq_WO, Hq, Uq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    14531453
    1454         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1454        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14551455        IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx);
    14561456
     
    14781478        IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVHPS, vmovhps, Vq_WO, Hq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    14791479
    1480         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1480        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14811481        IEM_MC_LOCAL(uint64_t,                  uSrc);
    14821482        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    15131513        IEMOP_MNEMONIC3(VEX_RVM_MEM, VMOVHPD, vmovhpd, Vq_WO, Hq, Mq, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    15141514
    1515         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1515        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    15161516        IEM_MC_LOCAL(uint64_t,                  uSrc);
    15171517        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    15661566        if (pVCpu->iem.s.uVexLength == 0)
    15671567        {
    1568             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1568            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    15691569            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    15701570            IEM_MC_LOCAL(RTUINT128U,                  uSrc);
     
    15851585        else
    15861586        {
    1587             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1587            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    15881588            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    15891589            IEM_MC_IMPLICIT_AVX_AIMPL_ARGS();
     
    16061606        if (pVCpu->iem.s.uVexLength == 0)
    16071607        {
    1608             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1608            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16091609            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    16101610            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    16271627        else
    16281628        {
    1629             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1629            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16301630            IEM_MC_LOCAL(RTUINT256U,            uSrc);
    16311631            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    16671667        IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVHPS, vmovhps, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    16681668
    1669         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1669        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16701670        IEM_MC_LOCAL(uint64_t,                  uSrc);
    16711671        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    17131713        IEMOP_MNEMONIC2(VEX_MR_MEM, VMOVHPD, vmovhpd, Mq_WO, VqHi, DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    17141714
    1715         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1715        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    17161716        IEM_MC_LOCAL(uint64_t,                  uSrc);
    17171717        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    17861786         * Register, register.
    17871787         */
    1788         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1788        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    17891789        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    17901790
     
    18071807        if (pVCpu->iem.s.uVexLength == 0)
    18081808        {
    1809             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1809            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18101810            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    18111811            IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    18241824        else
    18251825        {
    1826             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1826            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18271827            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    18281828            IEM_MC_LOCAL(RTUINT256U,                uSrc);
     
    18631863         * Register, register.
    18641864         */
    1865         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1865        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18661866        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    18671867
     
    18841884        if (pVCpu->iem.s.uVexLength == 0)
    18851885        {
    1886             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1886            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    18871887            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    18881888            IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    19011901        else
    19021902        {
    1903             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1903            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    19041904            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    19051905            IEM_MC_LOCAL(RTUINT256U,                uSrc);
     
    19591959         * Register, register.
    19601960         */
    1961         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1961        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    19621962        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    19631963
     
    19801980        if (pVCpu->iem.s.uVexLength == 0)
    19811981        {
    1982             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1982            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    19831983            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    19841984            IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    19971997        else
    19981998        {
    1999             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1999            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    20002000            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    20012001            IEM_MC_LOCAL(RTUINT256U,                uSrc);
     
    20352035         * Register, register.
    20362036         */
    2037         IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER);
     2037        IEM_MC_BEGIN(1, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    20382038        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    20392039
     
    20562056        if (pVCpu->iem.s.uVexLength == 0)
    20572057        {
    2058             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2058            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    20592059            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    20602060            IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    20732073        else
    20742074        {
    2075             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2075            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    20762076            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
    20772077            IEM_MC_LOCAL(RTUINT256U,                uSrc);
     
    21442144        if (pVCpu->iem.s.uVexLength == 0)
    21452145        {
    2146             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2146            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    21472147            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    21482148            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    21612161        else
    21622162        {
    2163             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2163            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    21642164            IEM_MC_LOCAL(RTUINT256U,                uSrc);
    21652165            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    22052205        if (pVCpu->iem.s.uVexLength == 0)
    22062206        {
    2207             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2207            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    22082208            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    22092209            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    22222222        else
    22232223        {
    2224             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2224            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    22252225            IEM_MC_LOCAL(RTUINT256U,                uSrc);
    22262226            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    22892289         * Register, register.
    22902290         */
    2291         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2291        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    22922292        IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    22932293        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    23182318         * Register, memory.
    23192319         */
    2320         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     2320        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    23212321        IEM_MC_LOCAL(uint32_t, fEFlags);
    23222322        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    23602360         * Register, register.
    23612361         */
    2362         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2362        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    23632363        IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    23642364        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    23892389         * Register, memory.
    23902390         */
    2391         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     2391        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    23922392        IEM_MC_LOCAL(uint32_t, fEFlags);
    23932393        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    24342434         * Register, register.
    24352435         */
    2436         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2436        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    24372437        IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    24382438        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    24632463         * Register, memory.
    24642464         */
    2465         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     2465        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    24662466        IEM_MC_LOCAL(uint32_t, fEFlags);
    24672467        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    25052505         * Register, register.
    25062506         */
    2507         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2507        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    25082508        IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    25092509        IEM_MC_LOCAL(uint32_t, fEFlags);
     
    25342534         * Register, memory.
    25352535         */
    2536         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     2536        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    25372537        IEM_MC_LOCAL(uint32_t, fEFlags);
    25382538        IEM_MC_ARG(uint32_t *,                  pfMxcsr,            0);
     
    26152615        if (pVCpu->iem.s.uVexLength == 0)
    26162616        {
    2617             IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2617            IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    26182618            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    26192619            IEM_MC_LOCAL(uint8_t,           u8Dst);
     
    26312631        else
    26322632        {
    2633             IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2633            IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    26342634            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    26352635            IEM_MC_LOCAL(uint8_t,               u8Dst);
     
    26662666        if (pVCpu->iem.s.uVexLength == 0)
    26672667        {
    2668             IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2668            IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    26692669            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    26702670            IEM_MC_LOCAL(uint8_t,           u8Dst);
     
    26822682        else
    26832683        {
    2684             IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     2684            IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    26852685            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    26862686            IEM_MC_LOCAL(uint8_t,               u8Dst);
     
    30243024//         * Register, register.
    30253025//         */
    3026 //        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     3026//        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    30273027//        IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX_EX(fSse2);
    30283028//        IEM_MC_ARG(PRTUINT128U,          pDst, 0);
     
    30413041//         * Register, memory.
    30423042//         */
    3043 //        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3043//        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    30443044//        IEM_MC_ARG(PRTUINT128U,                 pDst,       0);
    30453045//        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    31743174        {
    31753175            /* XMM, greg64 */
    3176             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     3176            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    31773177            IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    31783178            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    31903190        {
    31913191            /* XMM, [mem64] */
    3192             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3192            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    31933193            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    31943194            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    32243224        {
    32253225            /* XMM, greg32 */
    3226             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     3226            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    32273227            IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    32283228            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    32403240        {
    32413241            /* XMM, [mem32] */
    3242             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3242            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    32433243            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    32443244            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    32833283         * Register, register.
    32843284         */
    3285         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     3285        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    32863286        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    32873287
     
    33023302         * Register, memory128.
    33033303         */
    3304         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3304        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    33053305        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    33063306        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    33223322         * Register, memory256.
    33233323         */
    3324         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3324        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    33253325        IEM_MC_LOCAL(RTUINT256U, u256Tmp);
    33263326        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    33583358         * Register, register.
    33593359         */
    3360         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     3360        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    33613361        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    33623362
     
    33773377         * Register, memory128.
    33783378         */
    3379         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3379        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    33803380        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    33813381        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    33973397         * Register, memory256.
    33983398         */
    3399         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3399        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    34003400        IEM_MC_LOCAL(RTUINT256U, u256Tmp);
    34013401        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    34363436        if (pVCpu->iem.s.uVexLength)
    34373437        {
    3438             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3438            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    34393439            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2);
    34403440            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    34533453        else
    34543454        {
    3455             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     3455            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    34563456            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    34573457            IEM_MC_ARG(PRTUINT128U,             puDst,                 0);
     
    34753475        if (pVCpu->iem.s.uVexLength)
    34763476        {
    3477             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     3477            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    34783478            IEM_MC_LOCAL(RTUINT256U,            uDst);
    34793479            IEM_MC_LOCAL(RTUINT256U,            uSrc);
     
    34983498        else
    34993499        {
    3500             IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     3500            IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    35013501            IEM_MC_LOCAL(RTUINT128U,            uSrc);
    35023502            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    37353735         */
    37363736        IEMOP_MNEMONIC(vzeroupper, "vzeroupper");
    3737         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     3737        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    37383738
    37393739        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
     
    37713771         */
    37723772        IEMOP_MNEMONIC(vzeroall, "vzeroall");
    3773         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     3773        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    37743774        IEM_MC_LOCAL(uint32_t,  uZero);
    37753775
     
    38663866        {
    38673867            /* greg64, XMM */
    3868             IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT);
     3868            IEM_MC_BEGIN(0, 1, IEM_MC_F_64BIT, 0);
    38693869            IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    38703870            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    38823882        {
    38833883            /* [mem64], XMM */
    3884             IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT);
     3884            IEM_MC_BEGIN(0, 2, IEM_MC_F_64BIT, 0);
    38853885            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    38863886            IEM_MC_LOCAL(uint64_t, u64Tmp);
     
    39163916        {
    39173917            /* greg32, XMM */
    3918             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     3918            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    39193919            IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    39203920            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    39323932        {
    39333933            /* [mem32], XMM */
    3934             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3934            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    39353935            IEM_MC_LOCAL(RTGCPTR, GCPtrEffSrc);
    39363936            IEM_MC_LOCAL(uint32_t, u32Tmp);
     
    39693969         * Register, register.
    39703970         */
    3971         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     3971        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    39723972        IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    39733973
     
    39853985         * Memory, register.
    39863986         */
    3987         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     3987        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    39883988        IEM_MC_LOCAL(uint64_t,                  uSrc);
    39893989        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    40264026         * Register, register.
    40274027         */
    4028         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4028        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    40294029        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    40304030
     
    40454045         * Register, memory128.
    40464046         */
    4047         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     4047        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    40484048        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    40494049        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    40654065         * Register, memory256.
    40664066         */
    4067         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     4067        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    40684068        IEM_MC_LOCAL(RTUINT256U, u256Tmp);
    40694069        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    41024102         * Register, register.
    41034103         */
    4104         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4104        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    41054105        IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    41064106
     
    41214121         * Register, memory128.
    41224122         */
    4123         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     4123        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    41244124        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    41254125        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    41414141         * Register, memory256.
    41424142         */
    4143         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     4143        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    41444144        IEM_MC_LOCAL(RTUINT256U, u256Tmp);
    41454145        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    42354235//{
    42364236//    IEMOP_MNEMONIC1(M_MEM, VLDMXCSR, vldmxcsr, MdRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES);
    4237 //    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4237//    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    42384238//    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    42394239//    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    42894289{
    42904290    IEMOP_MNEMONIC1(VEX_M_MEM, VSTMXCSR, vstmxcsr, Md_WO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZES | IEMOPHINT_VEX_L_ZERO);
    4291     IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4291    IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    42924292    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    42934293    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     
    44024402         * Register, register.
    44034403         */
    4404         IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4404        IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    44054405        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    44064406        IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx);
     
    44254425         * Register, memory.
    44264426         */
    4427         IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     4427        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    44284428        IEM_MC_LOCAL(RTGCPTR,     GCPtrEffSrc);
    44294429        IEM_MC_ARG(PRTUINT128U,   puDst,                 0);
     
    44684468         */
    44694469        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    4470         IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     4470        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    44714471        IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx);
    44724472        IEM_MC_LOCAL(uint16_t,              u16Dst);
     
    45034503        { \
    45044504            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); \
    4505             IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER); \
     4505            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    45064506            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2); \
    45074507            IEM_MC_LOCAL(RTUINT256U,            uDst); \
     
    45254525        { \
    45264526            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm); \
    4527             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     4527            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    45284528            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx); \
    45294529            IEM_MC_ARG(PRTUINT128U,          puDst,                 0); \
     
    45504550        if (pVCpu->iem.s.uVexLength) \
    45514551        { \
    4552             IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER); \
     4552            IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    45534553            IEM_MC_LOCAL(RTUINT256U,            uDst); \
    45544554            IEM_MC_LOCAL(RTUINT256U,            uSrc1); \
     
    45744574        else \
    45754575        { \
    4576             IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER); \
     4576            IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    45774577            IEM_MC_LOCAL(RTUINT128U,                uSrc2); \
    45784578            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc); \
     
    47084708         * Register, register.
    47094709         */
    4710         IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4710        IEM_MC_BEGIN(0, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    47114711        IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fAvx);
    47124712
     
    47244724         * Memory, register.
    47254725         */
    4726         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     4726        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    47274727        IEM_MC_LOCAL(uint64_t,                  uSrc);
    47284728        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    47584758        if (pVCpu->iem.s.uVexLength)
    47594759        {
    4760             IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER);
     4760            IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    47614761            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2);
    47624762            IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    47744774        else
    47754775        {
    4776             IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     4776            IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    47774777            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx);
    47784778            IEM_MC_ARG(uint64_t *,              puDst, 0);
     
    50205020             * 128-bit: Memory, register.
    50215021             */
    5022             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     5022            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    50235023            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    50245024            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    50405040             * 256-bit: Memory, register.
    50415041             */
    5042             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     5042            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    50435043            IEM_MC_LOCAL(RTUINT256U,                uSrc);
    50445044            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    52185218         * Register, memory128.
    52195219         */
    5220         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     5220        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    52215221        IEM_MC_LOCAL(RTUINT128U, u128Tmp);
    52225222        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
     
    52385238         * Register, memory256.
    52395239         */
    5240         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     5240        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    52415241        IEM_MC_LOCAL(RTUINT256U, u256Tmp);
    52425242        IEM_MC_LOCAL(RTGCPTR,    GCPtrEffSrc);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap2.cpp.h

    r100854 r101387  
    221221        if (pVCpu->iem.s.uVexLength)
    222222        {
    223             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     223            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    224224            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    225225            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    240240        else
    241241        {
    242             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     242            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    243243            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    244244            IEM_MC_ARG(PCRTUINT128U,            puSrc1,  0);
     
    262262        if (pVCpu->iem.s.uVexLength)
    263263        {
    264             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     264            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    265265            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
    266266            IEM_MC_LOCAL(RTUINT256U,            uSrc2);
     
    286286        else
    287287        {
    288             IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
     288            IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    289289            IEM_MC_LOCAL(RTUINT128U,            uSrc2);
    290290            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    325325        if (pVCpu->iem.s.uVexLength)
    326326        {
    327             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     327            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    328328            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2);
    329329            IEM_MC_LOCAL(uint32_t,              uSrc);
     
    340340        else
    341341        {
    342             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     342            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    343343            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2);
    344344            IEM_MC_LOCAL(uint32_t,              uSrc);
     
    360360        if (pVCpu->iem.s.uVexLength)
    361361        {
    362             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     362            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    363363            IEM_MC_LOCAL(uint32_t,              uSrc);
    364364            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    377377        else
    378378        {
    379             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     379            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    380380            IEM_MC_LOCAL(uint32_t,              uSrc);
    381381            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    411411        if (pVCpu->iem.s.uVexLength)
    412412        {
    413             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     413            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    414414            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2);
    415415            IEM_MC_LOCAL(uint64_t,              uSrc);
     
    426426        else
    427427        {
    428             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     428            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    429429            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2);
    430430            IEM_MC_LOCAL(uint64_t,              uSrc);
     
    444444         * Register, memory.
    445445         */
    446         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     446        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    447447        IEM_MC_LOCAL(uint64_t,              uSrc);
    448448        IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    482482         * Register, memory.
    483483         */
    484         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     484        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    485485        IEM_MC_LOCAL(RTUINT128U,            uSrc);
    486486        IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    551551        if (pVCpu->iem.s.uVexLength) \
    552552        { \
    553             IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     553            IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    554554            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx2); \
    555555            IEM_MC_LOCAL(RTUINT256U,            uDst); \
     
    568568        else \
    569569        { \
    570             IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     570            IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    571571            IEMOP_HLP_DONE_VEX_DECODING_NO_VVVV_EX(fAvx); \
    572572            IEM_MC_ARG(PRTUINT128U,          puDst,  0); \
     
    591591        if (pVCpu->iem.s.uVexLength) \
    592592        { \
    593             IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER); \
     593            IEM_MC_BEGIN(2, 3, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    594594            IEM_MC_LOCAL(RTUINT256U,            uDst); \
    595595            IEM_MC_LOCAL(RTUINT128U,            uSrc); \
     
    611611        else \
    612612        { \
    613             IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     613            IEM_MC_BEGIN(2, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    614614            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc); \
    615615            IEM_MC_ARG(PRTUINT128U,                 puDst,       0); \
     
    728728            IEMOP_MNEMONIC2EX(vmovntdqa_Vdq_WO_Mdq_L0, "vmovntdqa, Vdq_WO, Mdq", VEX_RM_MEM, VMOVNTDQA, vmovntdqa, Vx_WO, Mx,
    729729                              DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES);
    730             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     730            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    731731            IEM_MC_LOCAL(RTUINT128U,                uSrc);
    732732            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    759759            IEMOP_MNEMONIC2EX(vmovntdqa_Vqq_WO_Mqq_L1, "vmovntdqa, Vqq_WO,Mqq", VEX_RM_MEM, VMOVNTDQA, vmovntdqa, Vx_WO, Mx,
    760760                              DISOPTYPE_HARMLESS | DISOPTYPE_X86_AVX, IEMOPHINT_IGNORES_OP_SIZES);
    761             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     761            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    762762            IEM_MC_LOCAL(RTUINT256U,                uSrc);
    763763            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    968968         * Register, register.
    969969         */
    970         IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER);
     970        IEM_MC_BEGIN(2, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    971971        IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fAvx);
    972972        IEM_MC_ARG(PRTUINT128U,          puDst,  0);
     
    987987         * Register, memory.
    988988         */
    989         IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER);
     989        IEM_MC_BEGIN(2, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    990990        IEM_MC_LOCAL(RTUINT128U,                uSrc);
    991991        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    10501050        if (pVCpu->iem.s.uVexLength)
    10511051        {
    1052             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1052            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10531053            IEM_MC_LOCAL(uint32_t,              uSrc);
    10541054
     
    10651065        else
    10661066        {
    1067             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1067            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10681068            IEM_MC_LOCAL(uint32_t,              uSrc);
    10691069
     
    10851085        if (pVCpu->iem.s.uVexLength)
    10861086        {
    1087             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1087            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    10881088            IEM_MC_LOCAL(uint32_t,              uSrc);
    10891089            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    11021102        else
    11031103        {
    1104             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1104            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11051105            IEM_MC_LOCAL(uint32_t,              uSrc);
    11061106            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    11331133        if (pVCpu->iem.s.uVexLength)
    11341134        {
    1135             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1135            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11361136            IEM_MC_LOCAL(uint64_t,              uSrc);
    11371137
     
    11481148        else
    11491149        {
    1150             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1150            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11511151            IEM_MC_LOCAL(uint64_t,              uSrc);
    11521152
     
    11681168        if (pVCpu->iem.s.uVexLength)
    11691169        {
    1170             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1170            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11711171            IEM_MC_LOCAL(uint64_t,              uSrc);
    11721172            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    11851185        else
    11861186        {
    1187             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1187            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11881188            IEM_MC_LOCAL(uint64_t,              uSrc);
    11891189            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    12211221         * Register, memory.
    12221222         */
    1223         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1223        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12241224        IEM_MC_LOCAL(RTUINT128U,            uSrc);
    12251225        IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    12841284        if (pVCpu->iem.s.uVexLength)
    12851285        {
    1286             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1286            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    12871287            IEM_MC_LOCAL(uint8_t,               uSrc);
    12881288
     
    12991299        else
    13001300        {
    1301             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1301            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13021302            IEM_MC_LOCAL(uint8_t,               uSrc);
    13031303
     
    13191319        if (pVCpu->iem.s.uVexLength)
    13201320        {
    1321             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1321            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13221322            IEM_MC_LOCAL(uint8_t,               uSrc);
    13231323            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    13361336        else
    13371337        {
    1338             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1338            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13391339            IEM_MC_LOCAL(uint8_t,               uSrc);
    13401340            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    13671367        if (pVCpu->iem.s.uVexLength)
    13681368        {
    1369             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1369            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13701370            IEM_MC_LOCAL(uint16_t,              uSrc);
    13711371
     
    13821382        else
    13831383        {
    1384             IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1384            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    13851385            IEM_MC_LOCAL(uint16_t,              uSrc);
    13861386
     
    14021402        if (pVCpu->iem.s.uVexLength)
    14031403        {
    1404             IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     1404            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14051405            IEM_MC_LOCAL(uint16_t,              uSrc);
    14061406            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    14191419        else
    14201420        {
    1421             IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER);
     1421            IEM_MC_BEGIN(3, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    14221422            IEM_MC_LOCAL(uint16_t,              uSrc);
    14231423            IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    16451645        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W)
    16461646        {
    1647             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1647            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16481648            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1);
    16491649            IEM_MC_ARG(uint64_t *,          pDst,    0);
     
    16621662        else
    16631663        {
    1664             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1664            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16651665            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1);
    16661666            IEM_MC_ARG(uint32_t *,          pDst,    0);
     
    16861686        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W)
    16871687        {
    1688             IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1688            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    16891689            IEM_MC_ARG(uint64_t *,          pDst,    0);
    16901690            IEM_MC_ARG(uint64_t,            uSrc1,   1);
     
    17051705        else
    17061706        {
    1707             IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1707            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    17081708            IEM_MC_ARG(uint32_t *,          pDst,    0);
    17091709            IEM_MC_ARG(uint32_t,            uSrc1,   1);
     
    17461746        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    17471747        { \
    1748             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     1748            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    17491749            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1); \
    17501750            IEM_MC_ARG(uint64_t *,          pDst,    0); \
     
    17611761        else \
    17621762        { \
    1763             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     1763            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    17641764            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi1); \
    17651765            IEM_MC_ARG(uint32_t *,          pDst,    0); \
     
    17831783        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    17841784        { \
    1785             IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \
     1785            IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
    17861786            IEM_MC_ARG(uint64_t *,          pDst,    0); \
    17871787            IEM_MC_ARG(uint64_t,            uSrc,    1); \
     
    18001800        else \
    18011801        { \
    1802             IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     1802            IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    18031803            IEM_MC_ARG(uint32_t *,          pDst,    0); \
    18041804            IEM_MC_ARG(uint32_t,            uSrc,    1); \
     
    18971897        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    18981898        { \
    1899             IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT); \
     1899            IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0); \
    19001900            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \
    19011901            IEM_MC_ARG(uint64_t *,          pDst,    0); \
     
    19151915        else \
    19161916        { \
    1917             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     1917            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    19181918            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \
    19191919            IEM_MC_ARG(uint32_t *,          pDst,    0); \
     
    19401940        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    19411941        { \
    1942             IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT); \
     1942            IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0); \
    19431943            IEM_MC_ARG(uint64_t *,          pDst,    0); \
    19441944            IEM_MC_ARG(uint64_t,            uSrc1,   1); \
     
    19601960        else \
    19611961        { \
    1962             IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     1962            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    19631963            IEM_MC_ARG(uint32_t *,          pDst,    0); \
    19641964            IEM_MC_ARG(uint32_t,            uSrc1,   1); \
     
    19931993        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    19941994        { \
    1995             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     1995            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    19961996            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \
    19971997            IEM_MC_ARG(uint64_t *,          pDst,    0); \
     
    20082008        else \
    20092009        { \
    2010             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     2010            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    20112011            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \
    20122012            IEM_MC_ARG(uint32_t *,          pDst,    0); \
     
    20302030        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    20312031        { \
    2032             IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \
     2032            IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
    20332033            IEM_MC_ARG(uint64_t *,          pDst,    0); \
    20342034            IEM_MC_ARG(uint64_t,            uSrc1,   1); \
     
    20472047        else \
    20482048        { \
    2049             IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     2049            IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    20502050            IEM_MC_ARG(uint32_t *,          pDst,    0); \
    20512051            IEM_MC_ARG(uint32_t,            uSrc1,   1); \
     
    20852085        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    20862086        { \
    2087             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT); \
     2087            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
    20882088            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \
    20892089            IEM_MC_ARG(uint64_t *,          pDst,    0); \
     
    21012101        else \
    21022102        { \
    2103             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER); \
     2103            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    21042104            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(a_fFeatureMember); \
    21052105            IEM_MC_ARG(uint32_t *,          pDst,    0); \
     
    21242124        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W) \
    21252125        { \
    2126             IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT); \
     2126            IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
    21272127            IEM_MC_ARG(uint64_t *,          pDst,    0); \
    21282128            IEM_MC_ARG(uint64_t,            uSrc1,   1); \
     
    21422142        else \
    21432143        { \
    2144             IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER); \
     2144            IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0); \
    21452145            IEM_MC_ARG(uint32_t *,          pDst,    0); \
    21462146            IEM_MC_ARG(uint32_t,            uSrc1,   1); \
     
    21962196        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W)
    21972197        {
    2198             IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT);
     2198            IEM_MC_BEGIN(4, 0, IEM_MC_F_64BIT, 0);
    21992199            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi2);
    22002200            IEM_MC_ARG(uint64_t *,          pDst1,   0);
     
    22132213        else
    22142214        {
    2215             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     2215            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    22162216            IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fBmi2);
    22172217            IEM_MC_ARG(uint32_t *,          pDst1,   0);
     
    22382238        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W)
    22392239        {
    2240             IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT);
     2240            IEM_MC_BEGIN(4, 1, IEM_MC_F_64BIT, 0);
    22412241            IEM_MC_ARG(uint64_t *,          pDst1,   0);
    22422242            IEM_MC_ARG(uint64_t *,          pDst2,   1);
     
    22572257        else
    22582258        {
    2259             IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
     2259            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    22602260            IEM_MC_ARG(uint32_t *,          pDst1,   0);
    22612261            IEM_MC_ARG(uint32_t *,          pDst2,   1);
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap3.cpp.h

    r101386 r101387  
    5353        if (pVCpu->iem.s.uVexLength)
    5454        {
    55             IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     55            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    5656            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    5757            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
     
    7474        else
    7575        {
    76             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     76            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    7777            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    7878            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
     
    9999        if (pVCpu->iem.s.uVexLength)
    100100        {
    101             IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER);
     101            IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0);
    102102            IEM_MC_LOCAL(RTUINT256U,            uDst);
    103103            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    125125        else
    126126        {
    127             IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     127            IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    128128            IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    129129            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    172172        if (pVCpu->iem.s.uVexLength)
    173173        {
    174             IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     174            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    175175            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    176176            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    192192        else
    193193        {
    194             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     194            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    195195            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    196196            IEM_MC_ARG(PRTUINT128U,          puDst,  0);
     
    216216        if (pVCpu->iem.s.uVexLength)
    217217        {
    218             IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER);
     218            IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0);
    219219            IEM_MC_LOCAL(RTUINT256U,            uDst);
    220220            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    242242        else
    243243        {
    244             IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     244            IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    245245            IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    246246            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    293293         * Register, register.
    294294         */
    295         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     295        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    296296        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    297297        IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2);
     
    318318         * Register, memory.
    319319         */
    320         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     320        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    321321        IEM_MC_LOCAL(RTUINT256U,                uDst);
    322322        IEM_MC_LOCAL(RTUINT256U,                uSrc1);
     
    424424         * Register, register.
    425425         */
    426         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     426        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    427427        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    428428        IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2);
     
    444444         * Register, memory.
    445445         */
    446         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     446        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    447447        IEM_MC_LOCAL(RTUINT128U,            uSrc);
    448448        IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    516516         * Register, register.
    517517         */
    518         IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
     518        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    519519        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    520520        IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2);
     
    536536         * Register, memory.
    537537         */
    538         IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
     538        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    539539        IEM_MC_LOCAL(RTUINT128U,            uSrc);
    540540        IEM_MC_LOCAL(RTGCPTR,               GCPtrEffSrc);
     
    595595         * Register, register.
    596596         */
    597         IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     597        IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    598598        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    599599        IEMOP_HLP_DONE_VEX_DECODING_L0_EX(fPclMul);
     
    618618         * Register, memory.
    619619         */
    620         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     620        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    621621        IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    622622        IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    659659         * Register, register.
    660660         */
    661         IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
     661        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER, 0);
    662662        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    663663        IEMOP_HLP_DONE_VEX_DECODING_L1_EX(fAvx2);
     
    684684         * Register, memory.
    685685         */
    686         IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     686        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    687687        IEM_MC_LOCAL(RTUINT256U,                uDst);
    688688        IEM_MC_LOCAL(RTUINT256U,                uSrc1);
     
    737737        if (pVCpu->iem.s.uVexLength)
    738738        {
    739             IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER);
     739            IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0);
    740740            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    741741            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    759759        else
    760760        {
    761             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     761            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    762762            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    763763            IEM_MC_ARG(PRTUINT128U,          puDst,  0);
     
    784784        if (pVCpu->iem.s.uVexLength)
    785785        {
    786             IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER);
     786            IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER, 0);
    787787            IEM_MC_LOCAL(RTUINT256U,            uDst);
    788788            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    814814        else
    815815        {
    816             IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     816            IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    817817            IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    818818            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    881881        if (pVCpu->iem.s.uVexLength)
    882882        {
    883             IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER);
     883            IEM_MC_BEGIN(4, 4, IEM_MC_F_NOT_286_OR_OLDER, 0);
    884884            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx2);
    885885            IEM_MC_LOCAL(RTUINT256U,            uDst);
     
    903903        else
    904904        {
    905             IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER);
     905            IEM_MC_BEGIN(4, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    906906            IEMOP_HLP_DONE_VEX_DECODING_EX(fAvx);
    907907            IEM_MC_ARG(PRTUINT128U,          puDst,  0);
     
    928928        if (pVCpu->iem.s.uVexLength)
    929929        {
    930             IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER);
     930            IEM_MC_BEGIN(4, 5, IEM_MC_F_NOT_286_OR_OLDER, 0);
    931931            IEM_MC_LOCAL(RTUINT256U,            uDst);
    932932            IEM_MC_LOCAL(RTUINT256U,            uSrc1);
     
    958958        else
    959959        {
    960             IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
     960            IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER, 0);
    961961            IEM_MC_LOCAL(RTUINT128U,                uSrc2);
    962962            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
     
    11311131        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W)
    11321132        {
    1133             IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT);
     1133            IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    11341134            IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fBmi2);
    11351135            IEM_MC_ARG(uint64_t *,          pDst,    0);
     
    11441144        else
    11451145        {
    1146             IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
     1146            IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11471147            IEMOP_HLP_DONE_VEX_DECODING_L0_AND_NO_VVVV_EX(fBmi2);
    11481148            IEM_MC_ARG(uint32_t *,          pDst,    0);
     
    11641164        if (pVCpu->iem.s.fPrefixes & IEM_OP_PRF_SIZE_REX_W)
    11651165        {
    1166             IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT);
     1166            IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0);
    11671167            IEM_MC_ARG(uint64_t *,          pDst,    0);
    11681168            IEM_MC_ARG(uint64_t,            uSrc1,   1);
     
    11801180        else
    11811181        {
    1182             IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
     1182            IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER, 0);
    11831183            IEM_MC_ARG(uint32_t *,          pDst,    0);
    11841184            IEM_MC_ARG(uint32_t,            uSrc1,   1);
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8vePython.py

    r101370 r101387  
    4444
    4545
     46## Supplememnts g_dMcStmtParsers.
     47g_dMcStmtThreaded = {
     48    'IEM_MC_DEFER_TO_CIMPL_0_RET_THREADED':                      (None, True,  True,  ),
     49    'IEM_MC_DEFER_TO_CIMPL_1_RET_THREADED':                      (None, True,  True,  ),
     50    'IEM_MC_DEFER_TO_CIMPL_2_RET_THREADED':                      (None, True,  True,  ),
     51    'IEM_MC_DEFER_TO_CIMPL_3_RET_THREADED':                      (None, True,  True,  ),
     52
     53    'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16':               (None, True,  False, ),
     54    'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32':               (None, True,  False, ), # True ),
     55    'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64':               (None, True,  False, ),
     56
     57    'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16_WITH_FLAGS':    (None, True,  False, ),
     58    'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS':    (None, True,  False,  ),
     59    'IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64_WITH_FLAGS':    (None, True,  False, ),
     60
     61    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_ADDR32':                (None, False, False, ),
     62    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_PRE386':                (None, False, False, ),
     63    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16':                       (None, False, False, ),
     64    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_ADDR16':                (None, False, False, ),
     65    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_FLAT':                  (None, False, False, ),
     66    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32':                       (None, False, False, ),
     67    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_ADDR32':                (None, False, False, ),
     68    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_FSGS':                  (None, False, False, ),
     69    'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64':                       (None, False, False, ),
     70
     71    'IEM_MC_CALL_CIMPL_1_THREADED':                              (None, True,  False, ),
     72    'IEM_MC_CALL_CIMPL_2_THREADED':                              (None, True,  False, ),
     73    'IEM_MC_CALL_CIMPL_3_THREADED':                              (None, True,  False, ),
     74    'IEM_MC_CALL_CIMPL_4_THREADED':                              (None, True,  False, ),
     75    'IEM_MC_CALL_CIMPL_5_THREADED':                              (None, True,  False, ),
     76
     77    'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16':                (None, True,  False, ),
     78    'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32':                (None, True,  False, ),
     79    'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64':                (None, True,  False, ),
     80    'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16':               (None, True,  False, ),
     81    'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32':               (None, True,  False, ),
     82    'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64':               (None, True,  False, ),
     83    'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32':               (None, True,  False, ),
     84    'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64':               (None, True,  False, ),
     85
     86    'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16_WITH_FLAGS':     (None, True,  False, ),
     87    'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32_WITH_FLAGS':     (None, True,  False, ),
     88    'IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64_WITH_FLAGS':     (None, True,  False, ),
     89    'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16_WITH_FLAGS':    (None, True,  False, ),
     90    'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32_WITH_FLAGS':    (None, True,  False, ),
     91    'IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64_WITH_FLAGS':    (None, True,  False, ),
     92    'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32_WITH_FLAGS':    (None, True,  False, ),
     93    'IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64_WITH_FLAGS':    (None, True,  False, ),
     94
     95    'IEM_MC_STORE_GREG_U8_THREADED':                             (None, True,  False, ),
     96    'IEM_MC_STORE_GREG_U8_CONST_THREADED':                       (None, True,  False, ),
     97    'IEM_MC_FETCH_GREG_U8_THREADED':                             (None, False, False, ),
     98    'IEM_MC_FETCH_GREG_U8_SX_U16_THREADED':                      (None, False, False, ),
     99    'IEM_MC_FETCH_GREG_U8_SX_U32_THREADED':                      (None, False, False, ),
     100    'IEM_MC_FETCH_GREG_U8_SX_U64_THREADED':                      (None, False, False, ),
     101    'IEM_MC_FETCH_GREG_U8_ZX_U16_THREADED':                      (None, False, False, ),
     102    'IEM_MC_FETCH_GREG_U8_ZX_U32_THREADED':                      (None, False, False, ),
     103    'IEM_MC_FETCH_GREG_U8_ZX_U64_THREADED':                      (None, False, False, ),
     104    'IEM_MC_REF_GREG_U8_THREADED':                               (None, True,  False, ),
     105
     106    # Flat Mem:
     107    'IEM_MC_FETCH_MEM16_FLAT_U8':                                (None, True,  False, ),
     108    'IEM_MC_FETCH_MEM32_FLAT_U8':                                (None, True,  False, ),
     109    'IEM_MC_FETCH_MEM_FLAT_D80':                                 (None, True,  False, ),
     110    'IEM_MC_FETCH_MEM_FLAT_I16':                                 (None, True,  False, ),
     111    'IEM_MC_FETCH_MEM_FLAT_I32':                                 (None, True,  False, ),
     112    'IEM_MC_FETCH_MEM_FLAT_I64':                                 (None, True,  False, ),
     113    'IEM_MC_FETCH_MEM_FLAT_R32':                                 (None, True,  False, ),
     114    'IEM_MC_FETCH_MEM_FLAT_R64':                                 (None, True,  False, ),
     115    'IEM_MC_FETCH_MEM_FLAT_R80':                                 (None, True,  False, ),
     116    'IEM_MC_FETCH_MEM_FLAT_U128_ALIGN_SSE':                      (None, True,  False, ),
     117    'IEM_MC_FETCH_MEM_FLAT_U128_NO_AC':                          (None, True,  False, ),
     118    'IEM_MC_FETCH_MEM_FLAT_U128':                                (None, True,  False, ),
     119    'IEM_MC_FETCH_MEM_FLAT_U16_DISP':                            (None, True,  False, ),
     120    'IEM_MC_FETCH_MEM_FLAT_U16_SX_U32':                          (None, True,  False, ),
     121    'IEM_MC_FETCH_MEM_FLAT_U16_SX_U64':                          (None, True,  False, ),
     122    'IEM_MC_FETCH_MEM_FLAT_U16':                                 (None, True,  False, ),
     123    'IEM_MC_FETCH_MEM_FLAT_U16_ZX_U32':                          (None, True,  False, ),
     124    'IEM_MC_FETCH_MEM_FLAT_U16_ZX_U64':                          (None, True,  False, ),
     125    'IEM_MC_FETCH_MEM_FLAT_U256_ALIGN_AVX':                      (None, True,  False, ),
     126    'IEM_MC_FETCH_MEM_FLAT_U256_NO_AC':                          (None, True,  False, ),
     127    'IEM_MC_FETCH_MEM_FLAT_U256':                                (None, True,  False, ),
     128    'IEM_MC_FETCH_MEM_FLAT_U32_DISP':                            (None, True,  False, ),
     129    'IEM_MC_FETCH_MEM_FLAT_U32_SX_U64':                          (None, True,  False, ),
     130    'IEM_MC_FETCH_MEM_FLAT_U32':                                 (None, True,  False, ),
     131    'IEM_MC_FETCH_MEM_FLAT_U32_ZX_U64':                          (None, True,  False, ),
     132    'IEM_MC_FETCH_MEM_FLAT_U64':                                 (None, True,  False, ),
     133    'IEM_MC_FETCH_MEM_FLAT_U8_SX_U16':                           (None, True,  False, ),
     134    'IEM_MC_FETCH_MEM_FLAT_U8_SX_U32':                           (None, True,  False, ),
     135    'IEM_MC_FETCH_MEM_FLAT_U8_SX_U64':                           (None, True,  False, ),
     136    'IEM_MC_FETCH_MEM_FLAT_U8':                                  (None, True,  False, ),
     137    'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U16':                           (None, True,  False, ),
     138    'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U32':                           (None, True,  False, ),
     139    'IEM_MC_FETCH_MEM_FLAT_U8_ZX_U64':                           (None, True,  False, ),
     140    'IEM_MC_FETCH_MEM_FLAT_XMM_ALIGN_SSE':                       (None, True,  False, ),
     141    'IEM_MC_FETCH_MEM_FLAT_XMM_U32':                             (None, True,  False, ),
     142    'IEM_MC_FETCH_MEM_FLAT_XMM_U64':                             (None, True,  False, ),
     143    'IEM_MC_MEM_FLAT_MAP_EX':                                    (None, True,  False, ),
     144    'IEM_MC_MEM_FLAT_MAP':                                       (None, True,  False, ),
     145    'IEM_MC_MEM_FLAT_MAP_U16_RO':                                (None, True,  False, ),
     146    'IEM_MC_MEM_FLAT_MAP_U16_RW':                                (None, True,  False, ),
     147    'IEM_MC_MEM_FLAT_MAP_U32_RO':                                (None, True,  False, ),
     148    'IEM_MC_MEM_FLAT_MAP_U32_RW':                                (None, True,  False, ),
     149    'IEM_MC_MEM_FLAT_MAP_U64_RO':                                (None, True,  False, ),
     150    'IEM_MC_MEM_FLAT_MAP_U64_RW':                                (None, True,  False, ),
     151    'IEM_MC_MEM_FLAT_MAP_U8_RO':                                 (None, True,  False, ),
     152    'IEM_MC_MEM_FLAT_MAP_U8_RW':                                 (None, True,  False, ),
     153    'IEM_MC_STORE_MEM_FLAT_U128_ALIGN_SSE':                      (None, True,  False, ),
     154    'IEM_MC_STORE_MEM_FLAT_U128':                                (None, True,  False, ),
     155    'IEM_MC_STORE_MEM_FLAT_U16':                                 (None, True,  False, ),
     156    'IEM_MC_STORE_MEM_FLAT_U256_ALIGN_AVX':                      (None, True,  False, ),
     157    'IEM_MC_STORE_MEM_FLAT_U256':                                (None, True,  False, ),
     158    'IEM_MC_STORE_MEM_FLAT_U32':                                 (None, True,  False, ),
     159    'IEM_MC_STORE_MEM_FLAT_U64':                                 (None, True,  False, ),
     160    'IEM_MC_STORE_MEM_FLAT_U8_CONST':                            (None, True,  False, ),
     161    'IEM_MC_STORE_MEM_FLAT_U8':                                  (None, True,  False, ),
     162
     163    # Flat Stack:
     164    'IEM_MC_FLAT64_PUSH_U16':                                    (None, True,  False, ),
     165    'IEM_MC_FLAT64_PUSH_U64':                                    (None, True,  False, ),
     166    'IEM_MC_FLAT64_PUSH_U16':                                    (None, True,  False, ),
     167    'IEM_MC_FLAT64_PUSH_U64':                                    (None, True,  False, ),
     168    'IEM_MC_FLAT64_POP_U16':                                     (None, True,  False, ),
     169    'IEM_MC_FLAT64_POP_U64':                                     (None, True,  False, ),
     170    'IEM_MC_FLAT64_POP_U16':                                     (None, True,  False, ),
     171    'IEM_MC_FLAT64_POP_U64':                                     (None, True,  False, ),
     172    'IEM_MC_FLAT64_PUSH_U16':                                    (None, True,  False, ),
     173    'IEM_MC_FLAT64_PUSH_U64':                                    (None, True,  False, ),
     174    'IEM_MC_FLAT64_PUSH_U16':                                    (None, True,  False, ),
     175    'IEM_MC_FLAT64_PUSH_U64':                                    (None, True,  False, ),
     176    'IEM_MC_FLAT32_PUSH_U16':                                    (None, True,  False, ),
     177    'IEM_MC_FLAT64_PUSH_U16':                                    (None, True,  False, ),
     178    'IEM_MC_FLAT32_PUSH_U32':                                    (None, True,  False, ),
     179    'IEM_MC_FLAT64_PUSH_U64':                                    (None, True,  False, ),
     180};
     181
    46182class NativeRecompFunctionVariation(object):
    47183    """
     
    70206        aoStmts = self.oVariation.aoStmtsForThreadedFunction # type: list(McStmt)
    71207        return iai.McStmt.renderCodeForList(aoStmts, cchIndent);
     208
     209    @staticmethod
     210    def checkStatements(aoStmts, sHostArch):
     211        """
     212        Checks that all the given statements are supported by the native recompiler.
     213        """
     214        _ = sHostArch;
     215        for oStmt in aoStmts:   # type: McStmt
     216            if not oStmt.isCppStmt():
     217                aInfo = iai.g_dMcStmtParsers.get(oStmt.sName);
     218                if not aInfo:
     219                    aInfo = g_dMcStmtThreaded.get(oStmt.sName);
     220                    if not aInfo:
     221                        raise Exception('Unknown statement: %s' % (oStmt.sName, ));
     222                if aInfo[2] is False:
     223                    return False;
     224                if aInfo[2] is not True:
     225                    if isinstance(aInfo[2], str):
     226                        if aInfo[2] != sHostArch:
     227                            return False;
     228                    elif sHostArch not in aInfo[2]:
     229                        return False;
     230            #elif not self.fDecode:
     231
     232            if isinstance(oStmt, iai.McStmtCond):
     233                if not NativeRecompFunctionVariation.checkStatements(oStmt.aoIfBranch, sHostArch):
     234                    return False;
     235                if not NativeRecompFunctionVariation.checkStatements(oStmt.aoElseBranch, sHostArch):
     236                    return False;
     237        return True;
    72238
    73239
     
    87253    #
    88254    aoStmts = oVariation.aoStmtsForThreadedFunction # type: list(McStmt)
     255    if NativeRecompFunctionVariation.checkStatements(aoStmts, sHostArch):
     256        return NativeRecompFunctionVariation(oVariation, sHostArch);
    89257
    90258    # The simplest case are the IEM_MC_DEFER_TO_CIMPL_*_RET_THREADED ones, just pass them thru:
    91     if (    len(aoStmts) == 1
    92         and aoStmts[0].sName.startswith('IEM_MC_DEFER_TO_CIMPL_')
    93         and aoStmts[0].sName.endswith('_RET_THREADED')):
    94         return NativeRecompFunctionVariation(oVariation, sHostArch);
     259    #if (    len(aoStmts) == 1
     260    #    and aoStmts[0].sName.startswith('IEM_MC_DEFER_TO_CIMPL_')
     261    #    and aoStmts[0].sName.endswith('_RET_THREADED')):
     262    #    return NativeRecompFunctionVariation(oVariation, sHostArch);
     263
     264
     265    # g_dMcStmtParsers
     266
    95267
    96268    return None;
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r101370 r101387  
    4848#define IEM_WITH_OPAQUE_DECODER_STATE
    4949#define VMCPU_INCL_CPUM_GST_CTX
     50#define VMM_INCLUDED_SRC_include_IEMMc_h /* block IEMMc.h inclusion. */
    5051#include <VBox/vmm/iem.h>
    5152#include <VBox/vmm/cpum.h>
     
    11261127 * Called before starting a new recompile job.
    11271128 */
    1128 static PIEMRECOMPILERSTATE iemNativeReInit(PIEMRECOMPILERSTATE pReNative)
     1129static PIEMRECOMPILERSTATE iemNativeReInit(PIEMRECOMPILERSTATE pReNative, PCIEMTB pTb)
    11291130{
    11301131    pReNative->cLabels   = 0;
    11311132    pReNative->cFixups   = 0;
     1133    pReNative->pTbOrg    = pTb;
    11321134    return pReNative;
    11331135}
     
    11421144 * @param   pVCpu   The cross context virtual CPU structure of the calling
    11431145 *                  thread.
     1146 * @param   pTb     The TB that's about to be recompiled.
    11441147 * @thread  EMT(pVCpu)
    11451148 */
    1146 static PIEMRECOMPILERSTATE iemNativeInit(PVMCPUCC pVCpu)
     1149static PIEMRECOMPILERSTATE iemNativeInit(PVMCPUCC pVCpu, PCIEMTB pTb)
    11471150{
    11481151    VMCPU_ASSERT_EMT(pVCpu);
     
    11721175         */
    11731176        pVCpu->iem.s.pNativeRecompilerStateR3 = pReNative;
    1174         return iemNativeReInit(pReNative);
     1177        return iemNativeReInit(pReNative, pTb);
    11751178    }
    11761179
     
    19061909
    19071910
     1911#if 0
     1912/** Same as iemRegFinishClearingRF. */
     1913DECLINLINE(uint32_t) iemNativeEmitFinishClearingRF(PIEMRECOMPILERSTATE pReNative, uint32_t off)
     1914{
     1915    RT_NOREF(pReNative, off);
     1916#if 0
     1917    uint32_t const fFlags = pReNative->pTbOrg->fFlags;
     1918    if (fFlags & IEMTB_F_INHIBIT_SHADOW)
     1919    {
     1920    }
     1921    IEMTB_F_IEM_F_MASK
     1922
     1923    //
     1924        if (RT_LIKELY(!(  pVCpu->cpum.GstCtx.eflags.uBoth
     1925                        & (X86_EFL_TF | X86_EFL_RF | CPUMCTX_INHIBIT_SHADOW | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) ))
     1926            return VINF_SUCCESS;
     1927        return iemFinishInstructionWithFlagsSet(pVCpu);
     1928#else
     1929    return UINT32_MAX;
     1930#endif
     1931}
     1932
     1933
     1934/** Same as iemRegAddToEip32AndFinishingClearingRF. */
     1935DECLINLINE(uint32_t) iemNativeEmitAddToEip32AndFinishingClearingRF(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t cbInstr)
     1936{
     1937    /* Increment RIP. */
     1938    pVCpu->cpum.GstCtx.rip = (uint32_t)(pVCpu->cpum.GstCtx.eip + cbInstr);
     1939
     1940    /* Consider flags. */
     1941    return iemNativeEmitFinishClearingRF(pReNative, off);
     1942}
     1943#endif
     1944
    19081945/*
    19091946 * MC definitions for the native recompiler.
     
    19211958#define IEM_MC_DEFER_TO_CIMPL_3_RET_THREADED(a_cbInstr, a_fFlags, a_pfnCImpl, a0, a1, a2) \
    19221959    return iemNativeEmitCImplCall3(pReNative, off, pCallEntry->idxInstr, (uintptr_t)a_pfnCImpl, a_cbInstr, a0, a1, a2)
     1960
     1961
     1962#define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fFlags)      {
     1963
     1964#define IEM_MC_END()                                    } AssertFailedReturn(UINT32_MAX /* shouldn't be reached! */)
     1965
     1966#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16(a_cbInstr) \
     1967    return iemNativeEmitAddToIp16AndFinishingClearingRF(pReNative, off, a_cbInstr)
     1968
     1969#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32(a_cbInstr) \
     1970    return iemNativeEmitAddToEip32AndFinishingClearingRF(pReNative, off, a_cbInstr)
     1971
     1972#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64(a_cbInstr) \
     1973    return iemNativeEmitAddToRip64AndFinishingClearingRF(pReNative, off, a_cbInstr)
     1974
    19231975
    19241976/*
     
    19652017    PIEMRECOMPILERSTATE pReNative = pVCpu->iem.s.pNativeRecompilerStateR3;
    19662018    if (RT_LIKELY(pReNative))
    1967         iemNativeReInit(pReNative);
     2019        iemNativeReInit(pReNative, pTb);
    19682020    else
    19692021    {
    1970         pReNative = iemNativeInit(pVCpu);
     2022        pReNative = iemNativeInit(pVCpu, pTb);
    19712023        AssertReturn(pReNative, pTb);
    19722024    }
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdFuncs.cpp

    r100811 r101387  
    8080 *  and only used when we're in 16-bit code on a pre-386 CPU. */
    8181#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16(a_cbInstr) \
    82     return iemRegAddToIp16AndFinishingClearingRF(pVCpu, a_cbInstr)
     82    return iemRegAddToIp16AndFinishingNoFlags(pVCpu, a_cbInstr)
    8383
    8484/** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param
    8585 *  and used for 16-bit and 32-bit code on 386 and later CPUs. */
    8686#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32(a_cbInstr) \
    87     return iemRegAddToEip32AndFinishingClearingRF(pVCpu, a_cbInstr)
     87    return iemRegAddToEip32AndFinishingNoFlags(pVCpu, a_cbInstr)
    8888
    8989/** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param
    9090 *  and only used when we're in 64-bit code. */
    9191#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64(a_cbInstr) \
     92    return iemRegAddToRip64AndFinishingNoFlags(pVCpu, a_cbInstr)
     93
     94
     95/** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param
     96 *  and only used when we're in 16-bit code on a pre-386 CPU and we need to
     97 *  check and clear flags. */
     98#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_cbInstr) \
     99    return iemRegAddToIp16AndFinishingClearingRF(pVCpu, a_cbInstr)
     100
     101/** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param
     102 *  and used for 16-bit and 32-bit code on 386 and later CPUs and we need to
     103 *  check and clear flags. */
     104#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_cbInstr) \
     105    return iemRegAddToEip32AndFinishingClearingRF(pVCpu, a_cbInstr)
     106
     107/** Variant of IEM_MC_ADVANCE_RIP_AND_FINISH with instruction length as param
     108 *  and only used when we're in 64-bit code and we need to check and clear
     109 *  flags. */
     110#define IEM_MC_ADVANCE_RIP_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_cbInstr) \
    92111    return iemRegAddToRip64AndFinishingClearingRF(pVCpu, a_cbInstr)
    93112
     
    98117 *  parameter, for use in 16-bit code on a pre-386 CPU. */
    99118#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16(a_i8, a_cbInstr) \
    100     return iemRegIp16RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8))
     119    return iemRegIp16RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8))
    101120
    102121/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand
     
    104123 * later CPUs. */
    105124#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32(a_i8, a_cbInstr, a_enmEffOpSize) \
    106     return iemRegEip32RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
     125    return iemRegEip32RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
    107126
    108127/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand
    109128 * size as extra parameters, for use in 64-bit code. */
    110129#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64(a_i8, a_cbInstr, a_enmEffOpSize) \
     130    return iemRegRip64RelativeJumpS8AndFinishNoFlags(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
     131
     132
     133/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length as extra
     134 *  parameter, for use in 16-bit code on a pre-386 CPU and we need to check and
     135 *  clear flags. */
     136#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i8, a_cbInstr) \
     137    return iemRegIp16RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8))
     138
     139/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand
     140 * size as extra parameters, for use in 16-bit and 32-bit code on 386 and
     141 * later CPUs and we need to check and clear flags. */
     142#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize) \
     143    return iemRegEip32RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
     144
     145/** Variant of IEM_MC_REL_JMP_S8_AND_FINISH with instruction length and operand
     146 * size as extra parameters, for use in 64-bit code and we need to check and
     147 * clear flags. */
     148#define IEM_MC_REL_JMP_S8_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i8, a_cbInstr, a_enmEffOpSize) \
    111149    return iemRegRip64RelativeJumpS8AndFinishClearingRF(pVCpu, a_cbInstr, (a_i8), a_enmEffOpSize)
    112150
     
    117155 *  param, for use in 16-bit code on a pre-386 CPU. */
    118156#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16(a_i16, a_cbInstr) \
    119     return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     157    return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16))
    120158
    121159/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
    122160 *  param, for use in 16-bit and 32-bit code on 386 and later CPUs. */
    123161#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32(a_i16, a_cbInstr) \
    124     return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     162    return iemRegEip32RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16))
    125163
    126164/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
    127165 *  param, for use in 64-bit code. */
    128166#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64(a_i16, a_cbInstr) \
     167    return iemRegRip64RelativeJumpS16AndFinishNoFlags(pVCpu, a_cbInstr, (a_i16))
     168
     169
     170/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
     171 *  param, for use in 16-bit code on a pre-386 CPU and we need to check and
     172 *  clear flags. */
     173#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i16, a_cbInstr) \
     174    return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     175
     176/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
     177 *  param, for use in 16-bit and 32-bit code on 386 and later CPUs and we need
     178 *  to check and clear flags. */
     179#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i16, a_cbInstr) \
     180    return iemRegEip32RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
     181
     182/** Variant of IEM_MC_REL_JMP_S16_AND_FINISH with instruction length as
     183 *  param, for use in 64-bit code and we need to check and clear flags. */
     184#define IEM_MC_REL_JMP_S16_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i16, a_cbInstr) \
    129185    return iemRegRip64RelativeJumpS16AndFinishClearingRF(pVCpu, a_cbInstr, (a_i16))
    130186
     
    141197 *  an extra parameter, for use in 16-bit and 32-bit code on 386+. */
    142198#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32(a_i32, a_cbInstr) \
    143     return iemRegEip32RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32))
     199    return iemRegEip32RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32))
    144200
    145201/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
    146202 *  an extra parameter, for use in 64-bit code. */
    147203#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64(a_i32, a_cbInstr) \
     204    return iemRegRip64RelativeJumpS32AndFinishNoFlags(pVCpu, a_cbInstr, (a_i32))
     205
     206
     207/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
     208 *  an extra parameter - dummy for pre-386 variations not eliminated by the
     209 *  python script. */
     210#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC16_WITH_FLAGS(a_i32, a_cbInstr) \
     211    do { RT_NOREF(pVCpu, a_i32, a_cbInstr); AssertFailedReturn(VERR_IEM_IPE_9); } while (0)
     212
     213/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
     214 *  an extra parameter, for use in 16-bit and 32-bit code on 386+ and we need
     215 *  to check and clear flags. */
     216#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC32_WITH_FLAGS(a_i32, a_cbInstr) \
     217    return iemRegEip32RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32))
     218
     219/** Variant of IEM_MC_REL_JMP_S32_AND_FINISH with instruction length as
     220 *  an extra parameter, for use in 64-bit codeand we need to check and clear
     221 *  flags. */
     222#define IEM_MC_REL_JMP_S32_AND_FINISH_THREADED_PC64_WITH_FLAGS(a_i32, a_cbInstr) \
    148223    return iemRegRip64RelativeJumpS32AndFinishClearingRF(pVCpu, a_cbInstr, (a_i32))
    149224
     
    155230    (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr16(pVCpu, a_bRm, a_u16Disp)
    156231
    157 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, pre-386 16-bit. */
    158 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_PRE386(a_GCPtrEff, a_bRm, a_u16Disp) \
    159     IEM_MC_CALC_RM_EFF_ADDR_THREADED_16(a_GCPtrEff, a_bRm, a_u16Disp)
    160 
    161 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 32-bit with address prefix. */
    162 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_ADDR16(a_GCPtrEff, a_bRm, a_u16Disp) \
    163     IEM_MC_CALC_RM_EFF_ADDR_THREADED_16(a_GCPtrEff, a_bRm, a_u16Disp)
    164 
    165 
    166232/** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 32-bit. */
    167233#define IEM_MC_CALC_RM_EFF_ADDR_THREADED_32(a_GCPtrEff, a_bRm, a_uSibAndRspOffset, a_u32Disp) \
    168234    (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr32(pVCpu, a_bRm, a_uSibAndRspOffset, a_u32Disp)
    169 
    170 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 32-bit flat. */
    171 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_32_FLAT(a_GCPtrEff, a_bRm, a_uSibAndRspOffset, a_u32Disp) \
    172     (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr32(pVCpu, a_bRm, a_uSibAndRspOffset, a_u32Disp)
    173 
    174 /** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters, 16-bit with address prefix. */
    175 #define IEM_MC_CALC_RM_EFF_ADDR_THREADED_16_ADDR32(a_GCPtrEff, a_bRm, a_uSibAndRspOffset, a_u32Disp) \
    176     (a_GCPtrEff) = iemOpHlpCalcRmEffAddrThreadedAddr32(pVCpu, a_bRm, a_uSibAndRspOffset, a_u32Disp)
    177 
    178235
    179236/** Variant of IEM_MC_CALC_RM_EFF_ADDR with additional parameters. */
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py

    r101305 r101387  
    4141import sys;
    4242import argparse;
     43from typing import Dict, List;
    4344
    4445import IEMAllInstPython as iai;
     
    134135    ksVariation_Default     = '';               ##< No variations - only used by IEM_MC_DEFER_TO_CIMPL_X_RET.
    135136    ksVariation_16          = '_16';            ##< 16-bit mode code (386+).
     137    ksVariation_16f         = '_16f';           ##< 16-bit mode code (386+), check+clear eflags.
    136138    ksVariation_16_Addr32   = '_16_Addr32';     ##< 16-bit mode code (386+), address size prefixed to 32-bit addressing.
     139    ksVariation_16f_Addr32  = '_16f_Addr32';    ##< 16-bit mode code (386+), address size prefixed to 32-bit addressing, eflags.
    137140    ksVariation_16_Pre386   = '_16_Pre386';     ##< 16-bit mode code, pre-386 CPU target.
     141    ksVariation_16f_Pre386  = '_16f_Pre386';    ##< 16-bit mode code, pre-386 CPU target, check+clear eflags.
    138142    ksVariation_32          = '_32';            ##< 32-bit mode code (386+).
     143    ksVariation_32f         = '_32f';           ##< 32-bit mode code (386+), check+clear eflags.
    139144    ksVariation_32_Flat     = '_32_Flat';       ##< 32-bit mode code (386+) with CS, DS, E,S and SS flat and 4GB wide.
     145    ksVariation_32f_Flat    = '_32f_Flat';      ##< 32-bit mode code (386+) with CS, DS, E,S and SS flat and 4GB wide, eflags.
    140146    ksVariation_32_Addr16   = '_32_Addr16';     ##< 32-bit mode code (386+), address size prefixed to 16-bit addressing.
     147    ksVariation_32f_Addr16  = '_32f_Addr16';    ##< 32-bit mode code (386+), address size prefixed to 16-bit addressing, eflags.
    141148    ksVariation_64          = '_64';            ##< 64-bit mode code.
     149    ksVariation_64f         = '_64f';           ##< 64-bit mode code, check+clear eflags.
    142150    ksVariation_64_FsGs     = '_64_FsGs';       ##< 64-bit mode code, with memory accesses via FS or GS.
     151    ksVariation_64f_FsGs    = '_64f_FsGs';      ##< 64-bit mode code, with memory accesses via FS or GS, check+clear eflags.
    143152    ksVariation_64_Addr32   = '_64_Addr32';     ##< 64-bit mode code, address size prefixed to 32-bit addressing.
     153    ksVariation_64f_Addr32  = '_64f_Addr32';    ##< 64-bit mode code, address size prefixed to 32-bit addressing, c+c eflags.
    144154    kasVariations           = (
    145155        ksVariation_Default,
    146156        ksVariation_16,
     157        ksVariation_16f,
    147158        ksVariation_16_Addr32,
     159        ksVariation_16f_Addr32,
    148160        ksVariation_16_Pre386,
     161        ksVariation_16f_Pre386,
    149162        ksVariation_32,
     163        ksVariation_32f,
    150164        ksVariation_32_Flat,
     165        ksVariation_32f_Flat,
    151166        ksVariation_32_Addr16,
     167        ksVariation_32f_Addr16,
    152168        ksVariation_64,
     169        ksVariation_64f,
    153170        ksVariation_64_FsGs,
     171        ksVariation_64f_FsGs,
    154172        ksVariation_64_Addr32,
     173        ksVariation_64f_Addr32,
    155174    );
    156175    kasVariationsWithoutAddress = (
    157176        ksVariation_16,
     177        ksVariation_16f,
    158178        ksVariation_16_Pre386,
     179        ksVariation_16f_Pre386,
    159180        ksVariation_32,
     181        ksVariation_32f,
    160182        ksVariation_64,
     183        ksVariation_64f,
    161184    );
    162185    kasVariationsWithoutAddressNot286 = (
    163186        ksVariation_16,
     187        ksVariation_16f,
    164188        ksVariation_32,
     189        ksVariation_32f,
    165190        ksVariation_64,
     191        ksVariation_64f,
    166192    );
    167193    kasVariationsWithoutAddressNot286Not64 = (
    168194        ksVariation_16,
     195        ksVariation_16f,
    169196        ksVariation_32,
     197        ksVariation_32f,
    170198    );
    171199    kasVariationsWithoutAddressNot64 = (
    172200        ksVariation_16,
     201        ksVariation_16f,
    173202        ksVariation_16_Pre386,
     203        ksVariation_16f_Pre386,
    174204        ksVariation_32,
     205        ksVariation_32f,
    175206    );
    176207    kasVariationsWithoutAddressOnly64 = (
    177208        ksVariation_64,
     209        ksVariation_64f,
    178210    );
    179211    kasVariationsWithAddress = (
    180212        ksVariation_16,
     213        ksVariation_16f,
    181214        ksVariation_16_Addr32,
     215        ksVariation_16f_Addr32,
    182216        ksVariation_16_Pre386,
     217        ksVariation_16f_Pre386,
    183218        ksVariation_32,
     219        ksVariation_32f,
    184220        ksVariation_32_Flat,
     221        ksVariation_32f_Flat,
    185222        ksVariation_32_Addr16,
     223        ksVariation_32f_Addr16,
    186224        ksVariation_64,
     225        ksVariation_64f,
    187226        ksVariation_64_FsGs,
     227        ksVariation_64f_FsGs,
    188228        ksVariation_64_Addr32,
     229        ksVariation_64f_Addr32,
    189230    );
    190231    kasVariationsWithAddressNot286 = (
    191232        ksVariation_16,
     233        ksVariation_16f,
    192234        ksVariation_16_Addr32,
     235        ksVariation_16f_Addr32,
    193236        ksVariation_32,
     237        ksVariation_32f,
    194238        ksVariation_32_Flat,
     239        ksVariation_32f_Flat,
    195240        ksVariation_32_Addr16,
     241        ksVariation_32f_Addr16,
    196242        ksVariation_64,
     243        ksVariation_64f,
    197244        ksVariation_64_FsGs,
     245        ksVariation_64f_FsGs,
    198246        ksVariation_64_Addr32,
     247        ksVariation_64f_Addr32,
    199248    );
    200249    kasVariationsWithAddressNot286Not64 = (
    201250        ksVariation_16,
     251        ksVariation_16f,
    202252        ksVariation_16_Addr32,
     253        ksVariation_16f_Addr32,
    203254        ksVariation_32,
     255        ksVariation_32f,
    204256        ksVariation_32_Flat,
     257        ksVariation_32f_Flat,
    205258        ksVariation_32_Addr16,
     259        ksVariation_32f_Addr16,
    206260    );
    207261    kasVariationsWithAddressNot64 = (
    208262        ksVariation_16,
     263        ksVariation_16f,
    209264        ksVariation_16_Addr32,
     265        ksVariation_16f_Addr32,
    210266        ksVariation_16_Pre386,
     267        ksVariation_16f_Pre386,
    211268        ksVariation_32,
     269        ksVariation_32f,
    212270        ksVariation_32_Flat,
     271        ksVariation_32f_Flat,
    213272        ksVariation_32_Addr16,
     273        ksVariation_32f_Addr16,
    214274    );
    215275    kasVariationsWithAddressOnly64 = (
    216276        ksVariation_64,
     277        ksVariation_64f,
    217278        ksVariation_64_FsGs,
     279        ksVariation_64f_FsGs,
    218280        ksVariation_64_Addr32,
     281        ksVariation_64f_Addr32,
     282    );
     283    kasVariationsOnlyPre386 = (
     284        ksVariation_16_Pre386,
     285        ksVariation_16f_Pre386,
    219286    );
    220287    kasVariationsEmitOrder = (
    221288        ksVariation_Default,
    222289        ksVariation_64,
     290        ksVariation_64f,
    223291        ksVariation_64_FsGs,
     292        ksVariation_64f_FsGs,
    224293        ksVariation_32_Flat,
     294        ksVariation_32f_Flat,
    225295        ksVariation_32,
     296        ksVariation_32f,
    226297        ksVariation_16,
     298        ksVariation_16f,
    227299        ksVariation_16_Addr32,
     300        ksVariation_16f_Addr32,
    228301        ksVariation_16_Pre386,
     302        ksVariation_16f_Pre386,
    229303        ksVariation_32_Addr16,
     304        ksVariation_32f_Addr16,
    230305        ksVariation_64_Addr32,
     306        ksVariation_64f_Addr32,
    231307    );
    232308    kdVariationNames = {
    233309        ksVariation_Default:    'defer-to-cimpl',
    234310        ksVariation_16:         '16-bit',
     311        ksVariation_16f:        '16-bit w/ eflag checking and clearing',
    235312        ksVariation_16_Addr32:  '16-bit w/ address prefix (Addr32)',
     313        ksVariation_16f_Addr32: '16-bit w/ address prefix (Addr32) and eflag checking and clearing',
    236314        ksVariation_16_Pre386:  '16-bit on pre-386 CPU',
     315        ksVariation_16f_Pre386: '16-bit on pre-386 CPU w/ eflag checking and clearing',
    237316        ksVariation_32:         '32-bit',
     317        ksVariation_32f:        '32-bit w/ eflag checking and clearing',
    238318        ksVariation_32_Flat:    '32-bit flat and wide open CS, SS, DS and ES',
     319        ksVariation_32f_Flat:   '32-bit flat and wide open CS, SS, DS and ES w/ eflag checking and clearing',
    239320        ksVariation_32_Addr16:  '32-bit w/ address prefix (Addr16)',
     321        ksVariation_32f_Addr16: '32-bit w/ address prefix (Addr16) and eflag checking and clearing',
    240322        ksVariation_64:         '64-bit',
     323        ksVariation_64f:        '64-bit w/ eflag checking and clearing',
    241324        ksVariation_64_FsGs:    '64-bit with memory accessed via FS or GS',
     325        ksVariation_64f_FsGs:   '64-bit with memory accessed via FS or GS and eflag checking and clearing',
    242326        ksVariation_64_Addr32:  '64-bit w/ address prefix (Addr32)',
    243 
     327        ksVariation_64f_Addr32: '64-bit w/ address prefix (Addr32) and eflag checking and clearing',
     328    };
     329    kdVariationsWithEflagsCheckingAndClearing = {
     330        ksVariation_16f: True,
     331        ksVariation_16f_Addr32: True,
     332        ksVariation_16f_Pre386: True,
     333        ksVariation_32f: True,
     334        ksVariation_32f_Flat: True,
     335        ksVariation_32f_Addr16: True,
     336        ksVariation_64f: True,
     337        ksVariation_64f_FsGs: True,
     338        ksVariation_64f_Addr32: True,
     339    };
     340    kdVariationsWithFlatAddress = {
     341        ksVariation_32_Flat: True,
     342        ksVariation_32f_Flat: True,
     343        ksVariation_64: True,
     344        ksVariation_64f: True,
     345    };
     346    kdVariationsWithFlatAddr16 = {
     347        ksVariation_16: True,
     348        ksVariation_16f: True,
     349        ksVariation_16_Pre386: True,
     350        ksVariation_16f_Pre386: True,
     351        ksVariation_32_Addr16: True,
     352        ksVariation_32f_Addr16: True,
     353    };
     354    kdVariationsWithFlatAddr32No64 = {
     355        ksVariation_16_Addr32:  True,
     356        ksVariation_16f_Addr32: True,
     357        ksVariation_32:         True,
     358        ksVariation_32f:        True,
     359        ksVariation_32_Flat:    True,
     360        ksVariation_32f_Flat:   True,
    244361    };
    245362    ## @}
     
    251368    ## @note iemThreadedRecompilerMcDeferToCImpl0 duplicates info found here.
    252369    kdCImplFlags = {
    253         'IEM_CIMPL_F_MODE':                 False,
    254         'IEM_CIMPL_F_BRANCH_DIRECT':        False,
    255         'IEM_CIMPL_F_BRANCH_INDIRECT':      False,
    256         'IEM_CIMPL_F_BRANCH_RELATIVE':      False,
    257         'IEM_CIMPL_F_BRANCH_FAR':           True,
    258         'IEM_CIMPL_F_BRANCH_CONDITIONAL':   False,
    259         'IEM_CIMPL_F_RFLAGS':               False,
    260         'IEM_CIMPL_F_CHECK_IRQ_AFTER':      False,
    261         'IEM_CIMPL_F_CHECK_IRQ_BEFORE':     False,
    262         'IEM_CIMPL_F_STATUS_FLAGS':         False,
    263         'IEM_CIMPL_F_VMEXIT':               False,
    264         'IEM_CIMPL_F_FPU':                  False,
    265         'IEM_CIMPL_F_REP':                  False,
    266         'IEM_CIMPL_F_IO':                   False,
    267         'IEM_CIMPL_F_END_TB':               True,
    268         'IEM_CIMPL_F_XCPT':                 True,
     370        'IEM_CIMPL_F_MODE':                         False,
     371        'IEM_CIMPL_F_BRANCH_DIRECT':                False,
     372        'IEM_CIMPL_F_BRANCH_INDIRECT':              False,
     373        'IEM_CIMPL_F_BRANCH_RELATIVE':              False,
     374        'IEM_CIMPL_F_BRANCH_FAR':                   True,
     375        'IEM_CIMPL_F_BRANCH_CONDITIONAL':           False,
     376        # IEM_CIMPL_F_BRANCH_ANY should only be used for testing, so not included here.
     377        'IEM_CIMPL_F_RFLAGS':                       False,
     378        'IEM_CIMPL_F_INHIBIT_SHADOW':               False,
     379        'IEM_CIMPL_F_CHECK_IRQ_AFTER':              False,
     380        'IEM_CIMPL_F_CHECK_IRQ_BEFORE':             False,
     381        'IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER':   False, # (ignore)
     382        'IEM_CIMPL_F_STATUS_FLAGS':                 False,
     383        'IEM_CIMPL_F_VMEXIT':                       False,
     384        'IEM_CIMPL_F_FPU':                          False,
     385        'IEM_CIMPL_F_REP':                          False,
     386        'IEM_CIMPL_F_IO':                           False,
     387        'IEM_CIMPL_F_END_TB':                       True,
     388        'IEM_CIMPL_F_XCPT':                         True,
    269389    };
    270390
     
    275395
    276396        ## Threaded function parameter references.
    277         self.aoParamRefs    = []            # type: list(ThreadedParamRef)
     397        self.aoParamRefs    = []            # type: List[ThreadedParamRef]
    278398        ## Unique parameter references.
    279         self.dParamRefs     = {}            # type: dict(str,list(ThreadedParamRef))
     399        self.dParamRefs     = {}            # type: Dict[str, List[ThreadedParamRef]]
    280400        ## Minimum number of parameters to the threaded function.
    281401        self.cMinParams     = 0;
    282402
    283403        ## List/tree of statements for the threaded function.
    284         self.aoStmtsForThreadedFunction = [] # type: list(McStmt)
    285 
    286         ## Dictionary with any IEM_CIMPL_F_XXX flags associated to the code block.
    287         self.dsCImplFlags   = { }           # type: dict(str, bool)
     404        self.aoStmtsForThreadedFunction = [] # type: List[McStmt]
    288405
    289406        ## Function enum number, for verification. Set by generateThreadedFunctionsHeader.
     
    554671    };
    555672
     673    kdThreadedCalcRmEffAddrMcByVariation = {
     674        ksVariation_16:             'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16',
     675        ksVariation_16f:            'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16',
     676        ksVariation_16_Pre386:      'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16',
     677        ksVariation_16f_Pre386:     'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16',
     678        ksVariation_32_Addr16:      'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16',
     679        ksVariation_32f_Addr16:     'IEM_MC_CALC_RM_EFF_ADDR_THREADED_16',
     680        ksVariation_16_Addr32:      'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32',
     681        ksVariation_16f_Addr32:     'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32',
     682        ksVariation_32:             'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32',
     683        ksVariation_32f:            'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32',
     684        ksVariation_32_Flat:        'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32',
     685        ksVariation_32f_Flat:       'IEM_MC_CALC_RM_EFF_ADDR_THREADED_32',
     686        ksVariation_64:             'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64',
     687        ksVariation_64f:            'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64',
     688        ksVariation_64_FsGs:        'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_FSGS',
     689        ksVariation_64f_FsGs:       'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_FSGS',
     690        ksVariation_64_Addr32:      'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_ADDR32', ## @todo How did this work again...
     691        ksVariation_64f_Addr32:     'IEM_MC_CALC_RM_EFF_ADDR_THREADED_64_ADDR32',
     692    };
     693
    556694    def analyzeMorphStmtForThreaded(self, aoStmts, iParamRef = 0):
    557695        """
     
    602740                # Morph IEM_MC_CALC_RM_EFF_ADDR into IEM_MC_CALC_RM_EFF_ADDR_THREADED ...
    603741                if oNewStmt.sName == 'IEM_MC_CALC_RM_EFF_ADDR':
    604                     assert self.sVariation != self.ksVariation_Default;
    605                     oNewStmt.sName = 'IEM_MC_CALC_RM_EFF_ADDR_THREADED' + self.sVariation.upper();
     742                    oNewStmt.sName = self.kdThreadedCalcRmEffAddrMcByVariation[self.sVariation];
    606743                    assert len(oNewStmt.asParams) == 3;
    607744
    608                     if self.sVariation in (self.ksVariation_16, self.ksVariation_16_Pre386, self.ksVariation_32_Addr16):
     745                    if self.sVariation in self.kdVariationsWithFlatAddr16:
    609746                        oNewStmt.asParams = [
    610747                            oNewStmt.asParams[0], oNewStmt.asParams[1], self.dParamRefs['u16Disp'][0].sNewName,
     
    615752                            sSibAndMore = '(%s) | ((%s) & 0x0f00)' % (self.dParamRefs['bSib'][0].sNewName, oStmt.asParams[2]);
    616753
    617                         if self.sVariation in (self.ksVariation_32, self.ksVariation_32_Flat, self.ksVariation_16_Addr32):
     754                        if self.sVariation in self.kdVariationsWithFlatAddr32No64:
    618755                            oNewStmt.asParams = [
    619756                                oNewStmt.asParams[0], oNewStmt.asParams[1], sSibAndMore, self.dParamRefs['u32Disp'][0].sNewName,
     
    624761                                self.dParamRefs['u32Disp'][0].sNewName, self.dParamRefs['cbInstr'][0].sNewName,
    625762                            ];
    626                 # ... and IEM_MC_ADVANCE_RIP_AND_FINISH into *_THREADED and maybe *_LM64/_NOT64 ...
     763                # ... and IEM_MC_ADVANCE_RIP_AND_FINISH into *_THREADED_PCxx[_WITH_FLAGS] ...
    627764                elif oNewStmt.sName in ('IEM_MC_ADVANCE_RIP_AND_FINISH', 'IEM_MC_REL_JMP_S8_AND_FINISH',
    628765                                        'IEM_MC_REL_JMP_S16_AND_FINISH', 'IEM_MC_REL_JMP_S32_AND_FINISH'):
    629766                    oNewStmt.asParams.append(self.dParamRefs['cbInstr'][0].sNewName);
    630767                    if (    oNewStmt.sName in ('IEM_MC_REL_JMP_S8_AND_FINISH', )
    631                         and self.sVariation != self.ksVariation_16_Pre386):
     768                        and self.sVariation not in (self.ksVariation_16_Pre386, self.ksVariation_16f_Pre386,)):
    632769                        oNewStmt.asParams.append(self.dParamRefs['pVCpu->iem.s.enmEffOpSize'][0].sNewName);
    633770                    oNewStmt.sName += '_THREADED';
    634                     if self.sVariation in (self.ksVariation_64, self.ksVariation_64_FsGs, self.ksVariation_64_Addr32):
     771                    if   self.sVariation in (self.ksVariation_64,  self.ksVariation_64_FsGs, self.ksVariation_64_Addr32):
    635772                        oNewStmt.sName += '_PC64';
     773                    elif self.sVariation in (self.ksVariation_64f, self.ksVariation_64f_FsGs, self.ksVariation_64f_Addr32):
     774                        oNewStmt.sName += '_PC64_WITH_FLAGS';
    636775                    elif self.sVariation == self.ksVariation_16_Pre386:
    637776                        oNewStmt.sName += '_PC16';
    638                     elif self.sVariation != self.ksVariation_Default:
     777                    elif self.sVariation == self.ksVariation_16f_Pre386:
     778                        oNewStmt.sName += '_PC16_WITH_FLAGS';
     779                    elif self.sVariation not in self.kdVariationsWithEflagsCheckingAndClearing:
     780                        assert self.sVariation != self.ksVariation_Default;
    639781                        oNewStmt.sName += '_PC32';
     782                    else:
     783                        oNewStmt.sName += '_PC32_WITH_FLAGS';
    640784
    641785                # ... and IEM_MC_*_GREG_U8 into *_THREADED w/ reworked index taking REX into account
     
    651795
    652796                # ... and in FLAT modes we must morph memory access into FLAT accesses ...
    653                 elif (    self.sVariation in (self.ksVariation_64, self.ksVariation_32_Flat,)
     797                elif (    self.sVariation in self.kdVariationsWithFlatAddress
    654798                      and (   oNewStmt.sName.startswith('IEM_MC_FETCH_MEM')
    655799                           or (oNewStmt.sName.startswith('IEM_MC_STORE_MEM_') and oNewStmt.sName.find('_BY_REF') < 0)
     
    665809
    666810                # ... PUSH and POP also needs flat variants, but these differ a little.
    667                 elif (    self.sVariation in (self.ksVariation_64, self.ksVariation_32_Flat,)
     811                elif (    self.sVariation in self.kdVariationsWithFlatAddress
    668812                      and (   (oNewStmt.sName.startswith('IEM_MC_PUSH') and oNewStmt.sName.find('_FPU') < 0)
    669813                           or oNewStmt.sName.startswith('IEM_MC_POP'))):
    670                     oNewStmt.sName = self.kdMemMcToFlatInfoStack[oNewStmt.sName][int(self.sVariation == self.ksVariation_64)];
     814                    oNewStmt.sName = self.kdMemMcToFlatInfoStack[oNewStmt.sName][int(self.sVariation in (self.ksVariation_64,
     815                                                                                                         self.ksVariation_64f,))];
    671816
    672817
     
    678823
    679824        return (aoThreadedStmts, iParamRef);
    680 
    681 
    682     def analyzeCodeOperation(self, aoStmts, fSeenConditional = False):
    683         """
    684         Analyzes the code looking clues as to additional side-effects.
    685 
    686         Currently this is simply looking for any IEM_IMPL_C_F_XXX flags and
    687         collecting these in self.dsCImplFlags.
    688         """
    689         for oStmt in aoStmts:
    690             # Pick up hints from CIMPL calls and deferals.
    691             if oStmt.sName.startswith('IEM_MC_CALL_CIMPL_') or oStmt.sName.startswith('IEM_MC_DEFER_TO_CIMPL_'):
    692                 sFlagsSansComments = iai.McBlock.stripComments(oStmt.asParams[0]);
    693                 for sFlag in sFlagsSansComments.split('|'):
    694                     sFlag = sFlag.strip();
    695                     if sFlag != '0':
    696                         if sFlag in self.kdCImplFlags:
    697                             self.dsCImplFlags[sFlag] = True;
    698                         elif sFlag == 'IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER':
    699                             self.dsCImplFlags['IEM_CIMPL_F_CHECK_IRQ_BEFORE'] = True;
    700                             self.dsCImplFlags['IEM_CIMPL_F_CHECK_IRQ_AFTER']  = True;
    701                         else:
    702                             self.raiseProblem('Unknown CIMPL flag value: %s' % (sFlag,));
    703 
    704             # Set IEM_IMPL_C_F_BRANCH if we see any branching MCs.
    705             elif oStmt.sName.startswith('IEM_MC_SET_RIP'):
    706                 assert not fSeenConditional;
    707                 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_INDIRECT'] = True;
    708             elif oStmt.sName.startswith('IEM_MC_REL_JMP'):
    709                 self.dsCImplFlags['IEM_CIMPL_F_BRANCH_RELATIVE'] = True;
    710                 if fSeenConditional:
    711                     self.dsCImplFlags['IEM_CIMPL_F_BRANCH_CONDITIONAL'] = True;
    712 
    713             # Process branches of conditionals recursively.
    714             if isinstance(oStmt, iai.McStmtCond):
    715                 self.analyzeCodeOperation(oStmt.aoIfBranch, True);
    716                 if oStmt.aoElseBranch:
    717                     self.analyzeCodeOperation(oStmt.aoElseBranch, True);
    718 
    719         return True;
    720825
    721826
     
    760865
    761866        # Organize them by size too for the purpose of optimize them.
    762         dBySize = {}        # type: dict(str,str)
     867        dBySize = {}        # type: Dict[str, str]
    763868        for sStdRef, aoRefs in self.dParamRefs.items():
    764869            if aoRefs[0].sType[0] != 'P':
     
    829934
    830935            if (    oStmt.sName in ('IEM_MC_REL_JMP_S8_AND_FINISH',)
    831                 and self.sVariation != self.ksVariation_16_Pre386):
     936                and self.sVariation not in (self.ksVariation_16_Pre386, self.ksVariation_16f_Pre386,)):
    832937                self.aoParamRefs.append(ThreadedParamRef('pVCpu->iem.s.enmEffOpSize', 'IEMMODE', oStmt));
    833938
     
    837942                assert oStmt.asParams[1] == 'bRm';
    838943
    839                 if self.sVariation in (self.ksVariation_16, self.ksVariation_16_Pre386, self.ksVariation_32_Addr16):
     944                if self.sVariation in self.kdVariationsWithFlatAddr16:
    840945                    self.aoParamRefs.append(ThreadedParamRef('bRm',     'uint8_t',  oStmt));
    841946                    self.aoParamRefs.append(ThreadedParamRef('(uint16_t)uEffAddrInfo' ,
    842947                                                             'uint16_t', oStmt, sStdRef = 'u16Disp'));
    843                 elif self.sVariation in (self.ksVariation_32, self.ksVariation_32_Flat, self.ksVariation_16_Addr32):
     948                elif self.sVariation in self.kdVariationsWithFlatAddr32No64:
    844949                    self.aoParamRefs.append(ThreadedParamRef('bRm',     'uint8_t',  oStmt));
    845950                    self.aoParamRefs.append(ThreadedParamRef('(uint8_t)(uEffAddrInfo >> 32)',
     
    848953                                                             'uint32_t', oStmt, sStdRef = 'u32Disp'));
    849954                else:
    850                     assert self.sVariation in (self.ksVariation_64, self.ksVariation_64_FsGs, self.ksVariation_64_Addr32);
     955                    assert self.sVariation in self.kasVariationsWithAddressOnly64;
    851956                    self.aoParamRefs.append(ThreadedParamRef('IEM_GET_MODRM_EX(pVCpu, bRm)',
    852957                                                             'uint8_t',  oStmt, sStdRef = 'bRmEx'));
     
    866971
    867972            # If in flat mode variation, ignore the effective segment parameter to memory MCs.
    868             if (    self.sVariation in (self.ksVariation_64, self.ksVariation_32_Flat,)
     973            if (    self.sVariation in self.kdVariationsWithFlatAddress
    869974                and oStmt.sName in self.kdMemMcToFlatInfo
    870975                and self.kdMemMcToFlatInfo[oStmt.sName][0] != -1):
     
    10421147        self.analyzeConsolidateThreadedParamRefs();
    10431148
    1044         # Scan the code for IEM_CIMPL_F_ and other clues.
    1045         self.analyzeCodeOperation(aoStmts);
    1046 
    10471149        # Morph the statement stream for the block into what we'll be using in the threaded function.
    10481150        (self.aoStmtsForThreadedFunction, iParamRef) = self.analyzeMorphStmtForThreaded(aoStmts);
     
    10601162        """
    10611163        aoStmts = [
    1062             iai.McCppCall('IEM_MC2_BEGIN_EMIT_CALLS', ['1' if 'IEM_CIMPL_F_CHECK_IRQ_BEFORE' in self.dsCImplFlags else '0'],
     1164            iai.McCppCall('IEM_MC2_BEGIN_EMIT_CALLS',
     1165                          ['1' if 'IEM_CIMPL_F_CHECK_IRQ_BEFORE' in self.oParent.dsCImplFlags else '0'],
    10631166                          cchIndent = cchIndent), # Scope and a hook for various stuff.
    10641167        ];
     
    10851188        # For CIMPL stuff, we need to consult the associated IEM_CIMPL_F_XXX
    10861189        # mask and maybe emit additional checks.
    1087         if (   'IEM_CIMPL_F_MODE'   in self.dsCImplFlags
    1088             or 'IEM_CIMPL_F_XCPT'   in self.dsCImplFlags
    1089             or 'IEM_CIMPL_F_VMEXIT' in self.dsCImplFlags):
     1190        if (   'IEM_CIMPL_F_MODE'   in self.oParent.dsCImplFlags
     1191            or 'IEM_CIMPL_F_XCPT'   in self.oParent.dsCImplFlags
     1192            or 'IEM_CIMPL_F_VMEXIT' in self.oParent.dsCImplFlags):
    10901193            aoStmts.append(iai.McCppCall('IEM_MC2_EMIT_CALL_1', ( 'kIemThreadedFunc_BltIn_CheckMode', 'pVCpu->iem.s.fExec', ),
    10911194                                         cchIndent = cchIndent));
    10921195
    1093         sCImplFlags = ' | '.join(self.dsCImplFlags.keys());
     1196        sCImplFlags = ' | '.join(self.oParent.dsCImplFlags.keys());
    10941197        if not sCImplFlags:
    10951198            sCImplFlags = '0'
     
    11011204        asEndTbFlags      = [];
    11021205        asTbBranchedFlags = [];
    1103         for sFlag in self.dsCImplFlags:
     1206        for sFlag in self.oParent.dsCImplFlags:
    11041207            if self.kdCImplFlags[sFlag] is True:
    11051208                asEndTbFlags.append(sFlag);
     
    11141217                                            cchIndent = cchIndent));
    11151218
    1116         if 'IEM_CIMPL_F_CHECK_IRQ_AFTER' in self.dsCImplFlags:
     1219        if 'IEM_CIMPL_F_CHECK_IRQ_AFTER' in self.oParent.dsCImplFlags:
    11171220            aoStmts.append(iai.McCppGeneric('pVCpu->iem.s.cInstrTillIrqCheck = 0;', cchIndent = cchIndent));
    11181221
     
    11251228    """
    11261229
    1127     def __init__(self, oMcBlock):
    1128         self.oMcBlock       = oMcBlock      # type: IEMAllInstPython.McBlock
     1230    def __init__(self, oMcBlock: iai.McBlock) -> None:
     1231        self.oMcBlock       = oMcBlock      # type: iai.McBlock
     1232        # The remaining fields are only useful after analyze() has been called:
    11291233        ## Variations for this block. There is at least one.
    1130         self.aoVariations   = []            # type: list(ThreadedFunctionVariation)
     1234        self.aoVariations   = []            # type: List[ThreadedFunctionVariation]
    11311235        ## Variation dictionary containing the same as aoVariations.
    1132         self.dVariations    = {}            # type: dict(str,ThreadedFunctionVariation)
     1236        self.dVariations    = {}            # type: Dict[str, ThreadedFunctionVariation]
    11331237        ## Dictionary of local variables (IEM_MC_LOCAL[_CONST]) and call arguments (IEM_MC_ARG*).
    1134         self.dVariables     = {}            # type: dict(str,McStmtVar)
     1238        self.dVariables     = {}            # type: Dict[str, iai.McStmtVar]
     1239        ## Dictionary with any IEM_CIMPL_F_XXX flags explicitly advertised in the code block
     1240        ## and those determined by analyzeCodeOperation().
     1241        self.dsCImplFlags   = {}            # type: Dict[str, bool]
    11351242
    11361243    @staticmethod
     
    11481255        print('%s:%s: warning: %s' % (self.oMcBlock.sSrcFile, self.oMcBlock.iBeginLine, sMessage, ));
    11491256
    1150     def analyzeFindVariablesAndCallArgs(self, aoStmts):
     1257    def analyzeFindVariablesAndCallArgs(self, aoStmts: List[iai.McStmt]) -> bool:
    11511258        """ Scans the statements for MC variables and call arguments. """
    11521259        for oStmt in aoStmts:
     
    11661273        return True;
    11671274
     1275    def analyzeCodeOperation(self, aoStmts: List[iai.McStmt], fSeenConditional = False) -> bool:
     1276        """
     1277        Analyzes the code looking clues as to additional side-effects.
     1278
     1279        Currently this is simply looking for branching and adding the relevant
     1280        branch flags to dsCImplFlags.  ASSUMES the caller pre-populates the
     1281        dictionary with a copy of self.oMcBlock.dsCImplFlags.
     1282        """
     1283        for oStmt in aoStmts:
     1284            # Set IEM_IMPL_C_F_BRANCH if we see any branching MCs.
     1285            if oStmt.sName.startswith('IEM_MC_SET_RIP'):
     1286                assert not fSeenConditional;
     1287                self.dsCImplFlags['IEM_CIMPL_F_BRANCH_INDIRECT'] = True;
     1288            elif oStmt.sName.startswith('IEM_MC_REL_JMP'):
     1289                self.dsCImplFlags['IEM_CIMPL_F_BRANCH_RELATIVE'] = True;
     1290                if fSeenConditional:
     1291                    self.dsCImplFlags['IEM_CIMPL_F_BRANCH_CONDITIONAL'] = True;
     1292
     1293            # Process branches of conditionals recursively.
     1294            if isinstance(oStmt, iai.McStmtCond):
     1295                self.analyzeCodeOperation(oStmt.aoIfBranch, True);
     1296                if oStmt.aoElseBranch:
     1297                    self.analyzeCodeOperation(oStmt.aoElseBranch, True);
     1298
     1299        return True;
     1300
    11681301    def analyze(self):
    11691302        """
     
    11841317        # Scan the statements for local variables and call arguments (self.dVariables).
    11851318        self.analyzeFindVariablesAndCallArgs(aoStmts);
     1319
     1320        # Scan the code for IEM_CIMPL_F_ and other clues.
     1321        self.dsCImplFlags = self.oMcBlock.dsCImplFlags.copy();
     1322        self.analyzeCodeOperation(aoStmts);
    11861323
    11871324        # Create variations as needed.
     
    11911328                                        'IEM_MC_DEFER_TO_CIMPL_2_RET': True,
    11921329                                        'IEM_MC_DEFER_TO_CIMPL_3_RET': True, }):
    1193             asVariations = [ThreadedFunctionVariation.ksVariation_Default,];
     1330            asVariations = (ThreadedFunctionVariation.ksVariation_Default,);
    11941331
    11951332        elif iai.McStmt.findStmtByNames(aoStmts, {'IEM_MC_CALC_RM_EFF_ADDR' : True,}):
    1196             if 'IEM_MC_F_64BIT' in self.oMcBlock.dMcFlags:
     1333            if 'IEM_MC_F_64BIT' in self.oMcBlock.dsMcFlags:
    11971334                asVariations = ThreadedFunctionVariation.kasVariationsWithAddressOnly64;
    1198             elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dMcFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dMcFlags:
     1335            elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags:
    11991336                asVariations = ThreadedFunctionVariation.kasVariationsWithAddressNot286Not64;
    1200             elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dMcFlags:
     1337            elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags:
    12011338                asVariations = ThreadedFunctionVariation.kasVariationsWithAddressNot286;
    1202             elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dMcFlags:
     1339            elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags:
    12031340                asVariations = ThreadedFunctionVariation.kasVariationsWithAddressNot64;
    1204             elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.dMcFlags:
    1205                 asVariations = [ThreadedFunctionVariation.ksVariation_16_Pre386,];
     1341            elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.dsMcFlags:
     1342                asVariations = ThreadedFunctionVariation.kasVariationsOnlyPre386;
    12061343            else:
    12071344                asVariations = ThreadedFunctionVariation.kasVariationsWithAddress;
    12081345        else:
    1209             if 'IEM_MC_F_64BIT' in self.oMcBlock.dMcFlags:
     1346            if 'IEM_MC_F_64BIT' in self.oMcBlock.dsMcFlags:
    12101347                asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressOnly64;
    1211             elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dMcFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dMcFlags:
     1348            elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags and 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags:
    12121349                asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressNot286Not64;
    1213             elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dMcFlags:
     1350            elif 'IEM_MC_F_NOT_286_OR_OLDER' in self.oMcBlock.dsMcFlags:
    12141351                asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressNot286;
    1215             elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dMcFlags:
     1352            elif 'IEM_MC_F_NOT_64BIT' in self.oMcBlock.dsMcFlags:
    12161353                asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddressNot64;
    1217             elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.dMcFlags:
    1218                 asVariations = [ThreadedFunctionVariation.ksVariation_16_Pre386,];
     1354            elif 'IEM_MC_F_ONLY_8086' in self.oMcBlock.dsMcFlags:
     1355                asVariations = ThreadedFunctionVariation.kasVariationsOnlyPre386;
    12191356            else:
    12201357                asVariations = ThreadedFunctionVariation.kasVariationsWithoutAddress;
     1358
     1359        if not iai.McStmt.findStmtByNames(aoStmts,
     1360                                          { 'IEM_MC_ADVANCE_RIP_AND_FINISH': True,
     1361                                            'IEM_MC_REL_JMP_S8_AND_FINISH':  True,
     1362                                            'IEM_MC_REL_JMP_S16_AND_FINISH': True,
     1363                                            'IEM_MC_REL_JMP_S32_AND_FINISH': True,
     1364                                           }):
     1365            asVariations = [sVariation for sVariation in asVariations
     1366                            if sVariation not in ThreadedFunctionVariation.kdVariationsWithEflagsCheckingAndClearing];
    12211367
    12221368        self.aoVariations = [ThreadedFunctionVariation(self, sVar) for sVar in asVariations];
     
    12301376
    12311377        return True;
     1378
     1379    ## Used by emitThreadedCallStmts.
     1380    kdVariationsWithNeedForPrefixCheck = {
     1381        ThreadedFunctionVariation.ksVariation_64_Addr32:  True,
     1382        ThreadedFunctionVariation.ksVariation_64f_Addr32: True,
     1383        ThreadedFunctionVariation.ksVariation_64_FsGs:    True,
     1384        ThreadedFunctionVariation.ksVariation_64f_FsGs:   True,
     1385        ThreadedFunctionVariation.ksVariation_32_Addr16:  True,
     1386        ThreadedFunctionVariation.ksVariation_32f_Addr16: True,
     1387        ThreadedFunctionVariation.ksVariation_32_Flat:    True,
     1388        ThreadedFunctionVariation.ksVariation_32f_Flat:   True,
     1389        ThreadedFunctionVariation.ksVariation_16_Addr32:  True,
     1390        ThreadedFunctionVariation.ksVariation_16f_Addr32: True,
     1391    };
    12321392
    12331393    def emitThreadedCallStmts(self):
     
    13051465        fSimple = True;
    13061466        sSwitchValue  = '(pVCpu->iem.s.fExec & (IEM_F_MODE_CPUMODE_MASK | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK))';
    1307         if (   ThrdFnVar.ksVariation_64_Addr32 in dByVari
    1308             or ThrdFnVar.ksVariation_64_FsGs   in dByVari
    1309             or ThrdFnVar.ksVariation_32_Addr16 in dByVari
    1310             or ThrdFnVar.ksVariation_32_Flat   in dByVari
    1311             or ThrdFnVar.ksVariation_16_Addr32 in dByVari):
     1467        if dByVari.keys() & self.kdVariationsWithNeedForPrefixCheck.keys():
    13121468            sSwitchValue += ' | (pVCpu->iem.s.enmEffAddrMode == (pVCpu->iem.s.fExec & IEM_F_MODE_CPUMODE_MASK) ? 0 : 8)';
    13131469            # Accesses via FS and GS and CS goes thru non-FLAT functions. (CS
     
    13161472            sSwitchValue += ' | (pVCpu->iem.s.iEffSeg < X86_SREG_FS && pVCpu->iem.s.iEffSeg != X86_SREG_CS ? 0 : 16)';
    13171473            fSimple       = False;                                              # threaded functions.
     1474        if dByVari.keys() & ThreadedFunctionVariation.kdVariationsWithEflagsCheckingAndClearing:
     1475            sSwitchValue += ' | ((pVCpu->iem.s.fTbPrevInstr & (IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_INHIBIT_SHADOW)) || ' \
     1476                          + '(pVCpu->iem.s.fExec & IEM_F_PENDING_BRK_MASK) ? 32 : 0)';
    13181477
    13191478        #
     
    13301489                Case('IEMMODE_64BIT | 8',   ThrdFnVar.ksVariation_64_Addr32),
    13311490            ]);
     1491            if ThreadedFunctionVariation.ksVariation_64f_Addr32 in dByVari:
     1492                aoCases.extend([
     1493                    Case('IEMMODE_64BIT | 32',       ThrdFnVar.ksVariation_64f),
     1494                    Case('IEMMODE_64BIT | 32 | 16',  ThrdFnVar.ksVariation_64f_FsGs),
     1495                    Case('IEMMODE_64BIT | 32 | 8 | 16', None), # fall thru
     1496                    Case('IEMMODE_64BIT | 32 | 8',   ThrdFnVar.ksVariation_64f_Addr32),
     1497                ]);
    13321498        elif ThrdFnVar.ksVariation_64 in dByVari:
    13331499            assert fSimple;
    13341500            aoCases.append(Case('IEMMODE_64BIT', ThrdFnVar.ksVariation_64));
     1501            if ThreadedFunctionVariation.ksVariation_64f in dByVari:
     1502                aoCases.append(Case('IEMMODE_64BIT | 32', ThrdFnVar.ksVariation_64f));
    13351503
    13361504        if ThrdFnVar.ksVariation_32_Addr16 in dByVari:
     
    13391507                Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK',         ThrdFnVar.ksVariation_32_Flat),
    13401508                Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 16',    None), # fall thru
    1341                 Case('IEMMODE_32BIT | 16',                                          None), # fall thru
     1509                Case('IEMMODE_32BIT                                       | 16',    None), # fall thru
    13421510                Case('IEMMODE_32BIT',                                               ThrdFnVar.ksVariation_32),
    13431511                Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 8',     None), # fall thru
     
    13461514                Case('IEMMODE_32BIT                                       | 8',     ThrdFnVar.ksVariation_32_Addr16),
    13471515            ]);
     1516            if ThrdFnVar.ksVariation_32f_Addr16 in dByVari:
     1517                aoCases.extend([
     1518                    Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32',         ThrdFnVar.ksVariation_32f_Flat),
     1519                    Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32 | 16',    None), # fall thru
     1520                    Case('IEMMODE_32BIT                                       | 32 | 16',    None), # fall thru
     1521                    Case('IEMMODE_32BIT                                       | 32',         ThrdFnVar.ksVariation_32f),
     1522                    Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32 | 8',     None), # fall thru
     1523                    Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32 | 8 | 16',None), # fall thru
     1524                    Case('IEMMODE_32BIT                                       | 32 | 8 | 16',None), # fall thru
     1525                    Case('IEMMODE_32BIT                                       | 32 | 8',     ThrdFnVar.ksVariation_32f_Addr16),
     1526                ]);
    13481527        elif ThrdFnVar.ksVariation_32 in dByVari:
    13491528            assert fSimple;
     
    13521531                Case('IEMMODE_32BIT',                                       ThrdFnVar.ksVariation_32),
    13531532            ]);
     1533            if ThrdFnVar.ksVariation_32f in dByVari:
     1534                aoCases.extend([
     1535                    Case('IEMMODE_32BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32', None), # fall thru
     1536                    Case('IEMMODE_32BIT                                       | 32', ThrdFnVar.ksVariation_32f),
     1537                ]);
    13541538
    13551539        if ThrdFnVar.ksVariation_16_Addr32 in dByVari:
     
    13611545                Case('IEMMODE_16BIT | 8',       ThrdFnVar.ksVariation_16_Addr32),
    13621546            ]);
     1547            if ThrdFnVar.ksVariation_16f_Addr32 in dByVari:
     1548                aoCases.extend([
     1549                    Case('IEMMODE_16BIT | 32 | 16',      None), # fall thru
     1550                    Case('IEMMODE_16BIT | 32',           ThrdFnVar.ksVariation_16f),
     1551                    Case('IEMMODE_16BIT | 32 | 8 | 16',  None), # fall thru
     1552                    Case('IEMMODE_16BIT | 32 | 8',       ThrdFnVar.ksVariation_16f_Addr32),
     1553                ]);
    13631554        elif ThrdFnVar.ksVariation_16 in dByVari:
    13641555            assert fSimple;
    13651556            aoCases.append(Case('IEMMODE_16BIT', ThrdFnVar.ksVariation_16));
     1557            if ThrdFnVar.ksVariation_16f in dByVari:
     1558                aoCases.append(Case('IEMMODE_16BIT | 32', ThrdFnVar.ksVariation_16f));
    13661559
    13671560        if ThrdFnVar.ksVariation_16_Pre386 in dByVari:
    13681561            aoCases.append(Case('IEMMODE_16BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK', ThrdFnVar.ksVariation_16_Pre386));
     1562        if ThrdFnVar.ksVariation_16f_Pre386 in dByVari:  # should be nested under previous if, but line too long.
     1563            aoCases.append(Case('IEMMODE_16BIT | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | 32', ThrdFnVar.ksVariation_16f_Pre386));
    13691564
    13701565        #
     
    14271622            aoDecoderStmts.append(oNewStmt);
    14281623            #print('oNewStmt %s %s' % (oNewStmt.sName, len(oNewStmt.asParams),));
     1624            if oNewStmt.sName == 'IEM_MC_BEGIN' and self.dsCImplFlags:
     1625                oNewStmt.asParams[3] = ' | '.join(sorted(self.dsCImplFlags.keys()));
    14291626
    14301627            # If we haven't emitted the threaded function call yet, look for
     
    14701667        if len(self.oMcBlock.aoStmts) == 1:
    14711668            # IEM_MC_DEFER_TO_CIMPL_X_RET - need to wrap in {} to make it safe to insert into random code.
    1472             sCode = iai.McStmt.renderCodeForList(self.morphInputCode(self.oMcBlock.aoStmts)[0],
    1473                                                  cchIndent = cchIndent).replace('\n', ' /* gen */\n', 1);
    1474             sCode = ' ' * (min(cchIndent, 2) - 2) + '{\n' \
    1475                   + sCode \
    1476                   + ' ' * (min(cchIndent, 2) - 2) + '}\n';
     1669            sCode = ' ' * cchIndent + 'pVCpu->iem.s.fTbCurInstr = ';
     1670            if self.dsCImplFlags:
     1671                sCode += ' | '.join(sorted(self.dsCImplFlags.keys())) + ';\n';
     1672            else:
     1673                sCode += '0;\n';
     1674            sCode += iai.McStmt.renderCodeForList(self.morphInputCode(self.oMcBlock.aoStmts)[0],
     1675                                                  cchIndent = cchIndent).replace('\n', ' /* gen */\n', 1);
     1676            sIndent = ' ' * (min(cchIndent, 2) - 2);
     1677            sCode = sIndent + '{\n' + sCode + sIndent + '}\n';
    14771678            return sCode;
    14781679
     
    14921693
    14931694    def __init__(self):
    1494         self.aoThreadedFuncs = []       # type: list(ThreadedFunction)
     1695        self.aoThreadedFuncs = []       # type: List[ThreadedFunction]
    14951696        self.oOptions        = None     # type: argparse.Namespace
    1496         self.aoParsers       = []       # type: list(IEMAllInstPython.SimpleParser)
    1497         self.aidxFirstFunctions = []    # type: list(int) ##< Runs parallel to aoParser giving the index of the first function.
     1697        self.aoParsers       = []       # type: List[IEMAllInstPython.SimpleParser]
     1698        self.aidxFirstFunctions = []    # type: List[int] ##< Runs parallel to aoParser giving the index of the first function.
    14981699
    14991700    #
     
    20702271                                or (sModified.find('IEM_MC_DEFER_TO_CIMPL_') > 0 and sModified.strip().startswith('{\n'))
    20712272                                or sModified.startswith('pVCpu->iem.s.fEndTb = true')
     2273                                or sModified.startswith('pVCpu->iem.s.fTbCurInstr = ')
    20722274                                ), 'sModified="%s"' % (sModified,);
    20732275                        oOut.write(sModified);
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdRecompiler.cpp

    r101261 r101387  
    1010 *      - Level 4  (Log4) : Decoding mnemonics w/ EIP. [same as IEM]
    1111 *      - Level 5  (Log5) : Decoding details. [same as IEM]
    12  *      - Level 6  (Log6) :
     12 *      - Level 6  (Log6) : TB opcode range management.
    1313 *      - Level 7  (Log7) : TB obsoletion.
    1414 *      - Level 8  (Log8) : TB compilation.
     
    13691369 * @param   pVCpu       The cross context virtual CPU structure of the calling EMT.
    13701370 * @param   pszFunction The IEM function doing the execution.
    1371  */
    1372 static void iemThreadedLogCurInstr(PVMCPUCC pVCpu, const char *pszFunction) RT_NOEXCEPT
     1371 * @param   idxInstr    The instruction number in the block.
     1372 */
     1373static void iemThreadedLogCurInstr(PVMCPUCC pVCpu, const char *pszFunction, uint32_t idxInstr) RT_NOEXCEPT
    13731374{
    13741375# ifdef IN_RING3
     
    13821383
    13831384        PCX86FXSTATE pFpuCtx = &pVCpu->cpum.GstCtx.XState.x87;
    1384         Log2(("**** %s fExec=%x pTb=%p\n"
     1385        Log2(("**** %s fExec=%x pTb=%p #%u\n"
    13851386              " eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
    13861387              " eip=%08x esp=%08x ebp=%08x iopl=%d tr=%04x\n"
     
    13881389              " fsw=%04x fcw=%04x ftw=%02x mxcsr=%04x/%04x\n"
    13891390              " %s\n"
    1390               , pszFunction, pVCpu->iem.s.fExec, pVCpu->iem.s.pCurTbR3,
     1391              , pszFunction, pVCpu->iem.s.fExec, pVCpu->iem.s.pCurTbR3, idxInstr,
    13911392              pVCpu->cpum.GstCtx.eax, pVCpu->cpum.GstCtx.ebx, pVCpu->cpum.GstCtx.ecx, pVCpu->cpum.GstCtx.edx, pVCpu->cpum.GstCtx.esi, pVCpu->cpum.GstCtx.edi,
    13921393              pVCpu->cpum.GstCtx.eip, pVCpu->cpum.GstCtx.esp, pVCpu->cpum.GstCtx.ebp, pVCpu->cpum.GstCtx.eflags.Bits.u2IOPL, pVCpu->cpum.GstCtx.tr.Sel,
     
    14771478        pVCpu->iem.s.cInstrTillIrqCheck     = !(fExtraFlags & IEMTB_F_INHIBIT_SHADOW) ? 32 : 0;
    14781479        pVCpu->iem.s.fTbCurInstrIsSti       = false;
     1480        /* Force RF clearing and TF checking on first instruction in the block
     1481           as we don't really know what came before and should assume the worst: */
     1482        pVCpu->iem.s.fTbPrevInstr           = IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_END_TB;
    14791483    }
    14801484    else
     
    14841488        Assert(pVCpu->iem.s.fEndTb          == false);
    14851489        Assert(pVCpu->iem.s.fTbCrossedPage  == false);
    1486     }
     1490        pVCpu->iem.s.fTbPrevInstr           = pVCpu->iem.s.fTbCurInstr;
     1491    }
     1492    pVCpu->iem.s.fTbCurInstr                = 0;
    14871493
    14881494#ifdef DBGFTRACE_ENABLED
     
    16091615bool iemThreadedCompileBeginEmitCallsComplications(PVMCPUCC pVCpu, PIEMTB pTb)
    16101616{
     1617    Log6(("%04x:%08RX64: iemThreadedCompileBeginEmitCallsComplications\n", pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip));
    16111618    Assert((pVCpu->iem.s.GCPhysInstrBuf & GUEST_PAGE_OFFSET_MASK) == 0);
    16121619#if 0
     
    16931700     *        GDT/LDT entry's base address can be modified independently from
    16941701     *        the code. */
    1695     if (pVCpu->iem.s.fTbBranched != 0)
     1702    if (pVCpu->iem.s.fTbBranched != IEMBRANCHED_F_NO)
    16961703    {
    16971704        if (   !pVCpu->iem.s.fTbCrossedPage       /* 1a */
     
    17461753                pTb->aRanges[idxRange].u2Unused    = 0;
    17471754                pTb->cRanges++;
     1755                Log6(("%04x:%08RX64: new range #%u same page: offPhysPage=%#x offOpcodes=%#x\n",
     1756                      pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, idxRange, pTb->aRanges[idxRange].offPhysPage,
     1757                      pTb->aRanges[idxRange].offOpcodes));
    17481758            }
    17491759            else
     
    18751885            pTb->aRanges[idxRange].u2Unused    = 0;
    18761886            pTb->cRanges++;
     1887            Log6(("%04x:%08RX64: new range #%u new page (a) %u/%RGp: offPhysPage=%#x offOpcodes=%#x\n",
     1888                  pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, idxRange,  pTb->aRanges[idxRange].idxPhysPage, GCPhysNew,
     1889                  pTb->aRanges[idxRange].offPhysPage, pTb->aRanges[idxRange].offOpcodes));
    18771890
    18781891            /* Determin which function we need to load & check. */
     
    18981911            pTb->aRanges[idxRange].u2Unused       = 0;
    18991912            pTb->cRanges++;
     1913            Log6(("%04x:%08RX64: new range #%u new page (b) %u/%RGp: offPhysPage=%#x offOpcodes=%#x\n",
     1914                  pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, idxRange,  pTb->aRanges[idxRange].idxPhysPage, GCPhysNew,
     1915                  pTb->aRanges[idxRange].offPhysPage, pTb->aRanges[idxRange].offOpcodes));
    19001916
    19011917            /* Determin which function we need to load & check. */
     
    21372153        /* Process the next instruction. */
    21382154#ifdef LOG_ENABLED
    2139         iemThreadedLogCurInstr(pVCpu, "CC");
     2155        iemThreadedLogCurInstr(pVCpu, "CC", pTb->cInstructions);
    21402156        uint16_t const uCsLog  = pVCpu->cpum.GstCtx.cs.Sel;
    21412157        uint64_t const uRipLog = pVCpu->cpum.GstCtx.rip;
     
    22512267        pVCpu->iem.s.cTbExecNative++;
    22522268# ifdef LOG_ENABLED
    2253         iemThreadedLogCurInstr(pVCpu, "EXn");
     2269        iemThreadedLogCurInstr(pVCpu, "EXn", 0);
    22542270# endif
    22552271        VBOXSTRICTRC const rcStrict = ((PFNIEMTBNATIVE)pTb->Native.paInstructions)(pVCpu);
     
    22882304            {
    22892305                uRipPrev = pVCpu->cpum.GstCtx.rip;
    2290                 iemThreadedLogCurInstr(pVCpu, "EXt");
     2306                iemThreadedLogCurInstr(pVCpu, "EXt", pTb->Thrd.cCalls - cCallsLeft - 1);
    22912307            }
    22922308            Log9(("%04x:%08RX64: #%d/%d - %d %s\n", pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip,
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdTables.h

    r100829 r101387  
    113113#define g_apfnVexMap3       g_apfnIemThreadedRecompilerVecMap3
    114114
     115
     116/*
     117 * Override IEM_MC_BEGIN to take down the IEM_CIMPL_F_XXX flags.
     118 */
     119#undef IEM_MC_BEGIN
     120#define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fMcFlags, a_fCImplFlags) \
     121    { \
     122        pVCpu->iem.s.fTbCurInstr = (a_fCImplFlags) /*| ((a_fMcFlags) << 20*/
    115123
    116124/*
     
    300308    Log8(("CImpl0: %04x:%08RX64 LB %#x: %#x %p\n",
    301309          pVCpu->cpum.GstCtx.cs.Sel, pVCpu->cpum.GstCtx.rip, IEM_GET_INSTR_LEN(pVCpu), fFlags, pfnCImpl));
     310    pVCpu->iem.s.fTbCurInstr = fFlags;
    302311
    303312    IEM_MC2_BEGIN_EMIT_CALLS(fFlags & IEM_CIMPL_F_CHECK_IRQ_BEFORE);
  • trunk/src/VBox/VMM/include/IEMInline.h

    r101163 r101387  
    21892189
    21902190/**
     2191 * Tail method for a finish function that does't clear flags or raise \#DB.
     2192 *
     2193 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2194 */
     2195DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegFinishNoFlags(PVMCPUCC pVCpu) RT_NOEXCEPT
     2196{
     2197    AssertCompile(CPUMCTX_INHIBIT_SHADOW < UINT32_MAX);
     2198    Assert(!(  pVCpu->cpum.GstCtx.eflags.uBoth
     2199             & (X86_EFL_TF | X86_EFL_RF | CPUMCTX_INHIBIT_SHADOW | CPUMCTX_DBG_HIT_DRX_MASK | CPUMCTX_DBG_DBGF_MASK)) );
     2200    RT_NOREF(pVCpu);
     2201    return VINF_SUCCESS;
     2202}
     2203
     2204
     2205/**
     2206 * Updates the RIP to point to the next instruction, but does not need to clear
     2207 * EFLAGS.RF or CPUMCTX_INHIBIT_SHADOW nor check for debug flags.
     2208 *
     2209 * Only called from 64-bit code.
     2210 *
     2211 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2212 * @param   cbInstr             The number of bytes to add.
     2213 */
     2214DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegAddToRip64AndFinishingNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr) RT_NOEXCEPT
     2215{
     2216    pVCpu->cpum.GstCtx.rip = pVCpu->cpum.GstCtx.rip + cbInstr;
     2217    return iemRegFinishNoFlags(pVCpu);
     2218}
     2219
     2220
     2221/**
     2222 * Updates the EIP to point to the next instruction, but does not need to clear
     2223 * EFLAGS.RF or CPUMCTX_INHIBIT_SHADOW nor check for debug flags.
     2224 *
     2225 * This is never from 64-bit code.
     2226 *
     2227 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2228 * @param   cbInstr             The number of bytes to add.
     2229 */
     2230DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegAddToEip32AndFinishingNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr) RT_NOEXCEPT
     2231{
     2232    pVCpu->cpum.GstCtx.rip = (uint32_t)(pVCpu->cpum.GstCtx.eip + cbInstr);
     2233    return iemRegFinishNoFlags(pVCpu);
     2234}
     2235
     2236
     2237/**
     2238 * Updates the IP to point to the next instruction, but does not need to clear
     2239 * EFLAGS.RF or CPUMCTX_INHIBIT_SHADOW nor check for debug flags.
     2240 *
     2241 * This is only ever used from 16-bit code on a pre-386 CPU.
     2242 *
     2243 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2244 * @param   cbInstr             The number of bytes to add.
     2245 */
     2246DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegAddToIp16AndFinishingNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr) RT_NOEXCEPT
     2247{
     2248    pVCpu->cpum.GstCtx.rip = (uint16_t)(pVCpu->cpum.GstCtx.ip + cbInstr);
     2249    return iemRegFinishNoFlags(pVCpu);
     2250}
     2251
     2252
     2253/**
    21912254 * Adds a 8-bit signed jump offset to RIP from 64-bit code.
    21922255 *
     
    22952358
    22962359/**
     2360 * Adds a 8-bit signed jump offset to RIP from 64-bit code, no checking or
     2361 * clearing of flags.
     2362 *
     2363 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code
     2364 * segment limit.
     2365 *
     2366 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2367 * @param   cbInstr             Instruction size.
     2368 * @param   offNextInstr        The offset of the next instruction.
     2369 * @param   enmEffOpSize        Effective operand size.
     2370 */
     2371DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegRip64RelativeJumpS8AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, int8_t offNextInstr,
     2372                                                                          IEMMODE enmEffOpSize) RT_NOEXCEPT
     2373{
     2374    Assert(IEM_IS_64BIT_CODE(pVCpu));
     2375    Assert(enmEffOpSize == IEMMODE_64BIT || enmEffOpSize == IEMMODE_16BIT);
     2376
     2377    uint64_t uNewRip = pVCpu->cpum.GstCtx.rip + cbInstr + (int64_t)offNextInstr;
     2378    if (enmEffOpSize == IEMMODE_16BIT)
     2379        uNewRip &= UINT16_MAX;
     2380
     2381    if (RT_LIKELY(IEM_IS_CANONICAL(uNewRip)))
     2382        pVCpu->cpum.GstCtx.rip = uNewRip;
     2383    else
     2384        return iemRaiseGeneralProtectionFault0(pVCpu);
     2385
     2386#ifndef IEM_WITH_CODE_TLB
     2387    iemOpcodeFlushLight(pVCpu, cbInstr);
     2388#endif
     2389    return iemRegFinishNoFlags(pVCpu);
     2390}
     2391
     2392
     2393/**
     2394 * Adds a 8-bit signed jump offset to EIP, on 386 or later from 16-bit or 32-bit
     2395 * code (never 64-bit), no checking or clearing of flags.
     2396 *
     2397 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code
     2398 * segment limit.
     2399 *
     2400 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2401 * @param   cbInstr             Instruction size.
     2402 * @param   offNextInstr        The offset of the next instruction.
     2403 * @param   enmEffOpSize        Effective operand size.
     2404 */
     2405DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegEip32RelativeJumpS8AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr, int8_t offNextInstr,
     2406                                                                          IEMMODE enmEffOpSize) RT_NOEXCEPT
     2407{
     2408    Assert(!IEM_IS_64BIT_CODE(pVCpu));
     2409    Assert(enmEffOpSize == IEMMODE_32BIT || enmEffOpSize == IEMMODE_16BIT);
     2410
     2411    uint32_t uNewEip = pVCpu->cpum.GstCtx.eip + cbInstr + (int32_t)offNextInstr;
     2412    if (enmEffOpSize == IEMMODE_16BIT)
     2413        uNewEip &= UINT16_MAX;
     2414    if (RT_LIKELY(uNewEip <= pVCpu->cpum.GstCtx.cs.u32Limit))
     2415        pVCpu->cpum.GstCtx.rip = uNewEip;
     2416    else
     2417        return iemRaiseGeneralProtectionFault0(pVCpu);
     2418
     2419#ifndef IEM_WITH_CODE_TLB
     2420    iemOpcodeFlushLight(pVCpu, cbInstr);
     2421#endif
     2422    return iemRegFinishNoFlags(pVCpu);
     2423}
     2424
     2425
     2426/**
     2427 * Adds a 8-bit signed jump offset to IP, on a pre-386 CPU, no checking or
     2428 * clearing of flags.
     2429 *
     2430 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code
     2431 * segment limit.
     2432 *
     2433 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2434 * @param   cbInstr             Instruction size.
     2435 * @param   offNextInstr        The offset of the next instruction.
     2436 */
     2437DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegIp16RelativeJumpS8AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr,
     2438                                                                         int8_t offNextInstr) RT_NOEXCEPT
     2439{
     2440    Assert(!IEM_IS_64BIT_CODE(pVCpu));
     2441
     2442    uint16_t const uNewIp = pVCpu->cpum.GstCtx.ip + cbInstr + (int16_t)offNextInstr;
     2443    if (RT_LIKELY(uNewIp <= pVCpu->cpum.GstCtx.cs.u32Limit))
     2444        pVCpu->cpum.GstCtx.rip = uNewIp;
     2445    else
     2446        return iemRaiseGeneralProtectionFault0(pVCpu);
     2447
     2448#ifndef IEM_WITH_CODE_TLB
     2449    iemOpcodeFlushLight(pVCpu, cbInstr);
     2450#endif
     2451    return iemRegFinishNoFlags(pVCpu);
     2452}
     2453
     2454
     2455/**
    22972456 * Adds a 16-bit signed jump offset to RIP from 64-bit code.
    22982457 *
     
    23572516
    23582517/**
     2518 * Adds a 16-bit signed jump offset to RIP from 64-bit code, no checking or
     2519 * clearing of flags.
     2520 *
     2521 * @returns Strict VBox status code.
     2522 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2523 * @param   cbInstr             Instruction size.
     2524 * @param   offNextInstr        The offset of the next instruction.
     2525 */
     2526DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegRip64RelativeJumpS16AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr,
     2527                                                                           int16_t offNextInstr) RT_NOEXCEPT
     2528{
     2529    Assert(IEM_IS_64BIT_CODE(pVCpu));
     2530
     2531    pVCpu->cpum.GstCtx.rip = (uint16_t)(pVCpu->cpum.GstCtx.ip + cbInstr + offNextInstr);
     2532
     2533#ifndef IEM_WITH_CODE_TLB
     2534    iemOpcodeFlushLight(pVCpu, cbInstr);
     2535#endif
     2536    return iemRegFinishNoFlags(pVCpu);
     2537}
     2538
     2539
     2540/**
     2541 * Adds a 16-bit signed jump offset to EIP from 16-bit or 32-bit code,
     2542 * no checking or clearing of flags.
     2543 *
     2544 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code
     2545 * segment limit.
     2546 *
     2547 * @returns Strict VBox status code.
     2548 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2549 * @param   cbInstr             Instruction size.
     2550 * @param   offNextInstr        The offset of the next instruction.
     2551 *
     2552 * @note    This is also used by 16-bit code in pre-386 mode, as the code is
     2553 *          identical.
     2554 */
     2555DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegEip32RelativeJumpS16AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr,
     2556                                                                           int16_t offNextInstr) RT_NOEXCEPT
     2557{
     2558    Assert(!IEM_IS_64BIT_CODE(pVCpu));
     2559
     2560    uint16_t const uNewIp = pVCpu->cpum.GstCtx.ip + cbInstr + offNextInstr;
     2561    if (RT_LIKELY(uNewIp <= pVCpu->cpum.GstCtx.cs.u32Limit))
     2562        pVCpu->cpum.GstCtx.rip = uNewIp;
     2563    else
     2564        return iemRaiseGeneralProtectionFault0(pVCpu);
     2565
     2566#ifndef IEM_WITH_CODE_TLB
     2567    iemOpcodeFlushLight(pVCpu, cbInstr);
     2568#endif
     2569    return iemRegFinishNoFlags(pVCpu);
     2570}
     2571
     2572
     2573/**
    23592574 * Adds a 32-bit signed jump offset to RIP from 64-bit code.
    23602575 *
     
    24282643     */
    24292644    return iemRegFinishClearingRF(pVCpu);
     2645}
     2646
     2647
     2648/**
     2649 * Adds a 32-bit signed jump offset to RIP from 64-bit code, no checking or
     2650 * clearing of flags.
     2651 *
     2652 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code
     2653 * segment limit.
     2654 *
     2655 * We ASSUME that the effective operand size is 64-bit here, as 16-bit is the
     2656 * only alternative for relative jumps in 64-bit code and that is already
     2657 * handled in the decoder stage.
     2658 *
     2659 * @returns Strict VBox status code.
     2660 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2661 * @param   cbInstr             Instruction size.
     2662 * @param   offNextInstr        The offset of the next instruction.
     2663 */
     2664DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegRip64RelativeJumpS32AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr,
     2665                                                                           int32_t offNextInstr) RT_NOEXCEPT
     2666{
     2667    Assert(IEM_IS_64BIT_CODE(pVCpu));
     2668
     2669    uint64_t const uNewRip = pVCpu->cpum.GstCtx.rip + cbInstr + (int64_t)offNextInstr;
     2670    if (RT_LIKELY(IEM_IS_CANONICAL(uNewRip)))
     2671        pVCpu->cpum.GstCtx.rip = uNewRip;
     2672    else
     2673        return iemRaiseGeneralProtectionFault0(pVCpu);
     2674
     2675#ifndef IEM_WITH_CODE_TLB
     2676    iemOpcodeFlushLight(pVCpu, cbInstr);
     2677#endif
     2678    return iemRegFinishNoFlags(pVCpu);
     2679}
     2680
     2681
     2682/**
     2683 * Adds a 32-bit signed jump offset to RIP from 64-bit code, no checking or
     2684 * clearing of flags.
     2685 *
     2686 * May raise a \#GP(0) if the new RIP is non-canonical or outside the code
     2687 * segment limit.
     2688 *
     2689 * We ASSUME that the effective operand size is 32-bit here, as 16-bit is the
     2690 * only alternative for relative jumps in 32-bit code and that is already
     2691 * handled in the decoder stage.
     2692 *
     2693 * @returns Strict VBox status code.
     2694 * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
     2695 * @param   cbInstr             Instruction size.
     2696 * @param   offNextInstr        The offset of the next instruction.
     2697 */
     2698DECL_FORCE_INLINE(VBOXSTRICTRC) iemRegEip32RelativeJumpS32AndFinishNoFlags(PVMCPUCC pVCpu, uint8_t cbInstr,
     2699                                                                           int32_t offNextInstr) RT_NOEXCEPT
     2700{
     2701    Assert(!IEM_IS_64BIT_CODE(pVCpu));
     2702    Assert(pVCpu->cpum.GstCtx.rip <= UINT32_MAX);
     2703
     2704    uint32_t const uNewEip = pVCpu->cpum.GstCtx.eip + cbInstr + offNextInstr;
     2705    if (RT_LIKELY(uNewEip <= pVCpu->cpum.GstCtx.cs.u32Limit))
     2706        pVCpu->cpum.GstCtx.rip = uNewEip;
     2707    else
     2708        return iemRaiseGeneralProtectionFault0(pVCpu);
     2709
     2710#ifndef IEM_WITH_CODE_TLB
     2711    iemOpcodeFlushLight(pVCpu, cbInstr);
     2712#endif
     2713    return iemRegFinishNoFlags(pVCpu);
    24302714}
    24312715
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r101376 r101387  
    14271427    /** The virtual sync time at the last timer poll call. */
    14281428    uint32_t                msRecompilerPollNow;
     1429    /** The IEM_CIMPL_F_XXX mask for the current instruction. */
     1430    uint32_t                fTbCurInstr;
     1431    /** The IEM_CIMPL_F_XXX mask for the previous instruction. */
     1432    uint32_t                fTbPrevInstr;
    14291433    /** Previous GCPhysInstrBuf value - only valid if fTbCrossedPage is set.   */
    14301434    RTGCPHYS                GCPhysInstrBufPrev;
     
    14431447    R3PTRTYPE(struct IEMRECOMPILERSTATE *)  pNativeRecompilerStateR3;
    14441448    /** Alignment padding. */
    1445     uint64_t                auAlignment10[5];
     1449    uint64_t                auAlignment10[4];
    14461450    /** Statistics: Times TB execution was broken off before reaching the end. */
    14471451    STAMCOUNTER             StatTbExecBreaks;
  • trunk/src/VBox/VMM/include/IEMMc.h

    r100889 r101387  
    4141 */
    4242
    43 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fFlags)      {
    44 #define IEM_MC_END()                                    }
     43#define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fMcFlags, a_fCImplFlags) {
     44#define IEM_MC_END()                                                }
    4545
    4646/** Internal macro. */
     
    20032003/** May change significant portions of RFLAGS. */
    20042004#define IEM_CIMPL_F_RFLAGS              RT_BIT_32(6)
    2005 /** May change the status bits (X86_EFL_STATUS_BITS) in RFLAGS . */
     2005/** May change the status bits (X86_EFL_STATUS_BITS) in RFLAGS. */
    20062006#define IEM_CIMPL_F_STATUS_FLAGS        RT_BIT_32(7)
     2007/** May trigger interrupt shadowing. */
     2008#define IEM_CIMPL_F_INHIBIT_SHADOW      RT_BIT_32(8)
    20072009/** May enable interrupts, so recheck IRQ immediately afterwards executing
    20082010 *  the instruction. */
    2009 #define IEM_CIMPL_F_CHECK_IRQ_AFTER     RT_BIT_32(8)
     2011#define IEM_CIMPL_F_CHECK_IRQ_AFTER     RT_BIT_32(9)
    20102012/** May disable interrupts, so recheck IRQ immediately before executing the
    20112013 *  instruction. */
    2012 #define IEM_CIMPL_F_CHECK_IRQ_BEFORE    RT_BIT_32(9)
     2014#define IEM_CIMPL_F_CHECK_IRQ_BEFORE    RT_BIT_32(10)
    20132015/** Convenience: Check for IRQ both before and after an instruction. */
    20142016#define IEM_CIMPL_F_CHECK_IRQ_BEFORE_AND_AFTER (IEM_CIMPL_F_CHECK_IRQ_BEFORE | IEM_CIMPL_F_CHECK_IRQ_AFTER)
    20152017/** May trigger a VM exit (treated like IEM_CIMPL_F_MODE atm). */
    2016 #define IEM_CIMPL_F_VMEXIT              RT_BIT_32(10)
     2018#define IEM_CIMPL_F_VMEXIT              RT_BIT_32(11)
    20172019/** May modify FPU state.
    20182020 * @todo Not sure if this is useful yet.  */
    2019 #define IEM_CIMPL_F_FPU                 RT_BIT_32(11)
     2021#define IEM_CIMPL_F_FPU                 RT_BIT_32(12)
    20202022/** REP prefixed instruction which may yield before updating PC.
    20212023 * @todo Not sure if this is useful, REP functions now return non-zero
    20222024 *       status if they don't update the PC. */
    2023 #define IEM_CIMPL_F_REP                 RT_BIT_32(12)
     2025#define IEM_CIMPL_F_REP                 RT_BIT_32(13)
    20242026/** I/O instruction.
    20252027 * @todo Not sure if this is useful yet.  */
    2026 #define IEM_CIMPL_F_IO                  RT_BIT_32(13)
     2028#define IEM_CIMPL_F_IO                  RT_BIT_32(14)
    20272029/** Force end of TB after the instruction. */
    2028 #define IEM_CIMPL_F_END_TB              RT_BIT_32(14)
     2030#define IEM_CIMPL_F_END_TB              RT_BIT_32(15)
    20292031/** Convenience: Raise exception (technically unnecessary, since it shouldn't return VINF_SUCCESS). */
    20302032#define IEM_CIMPL_F_XCPT \
  • trunk/src/VBox/VMM/include/IEMN8veRecompiler.h

    r101370 r101387  
    257257    /** Buffer used by the recompiler for recording fixups when generating code. */
    258258    PIEMNATIVEFIXUP             paFixups;
     259
     260    /** The translation block being recompiled. */
     261    PCIEMTB                     pTbOrg;
    259262} IEMRECOMPILERSTATE;
    260263/** Pointer to a native recompiler state. */
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r100854 r101387  
    558558
    559559#define IEM_ARG_CHECK_CALLBACK(a_idx, a_User) int RT_CONCAT(iArgCheck_,a_idx); NOREF(RT_CONCAT(iArgCheck_,a_idx))
    560 #define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fFlags) \
     560#define IEM_MC_BEGIN(a_cArgs, a_cLocals, a_fMcFlags, a_fCImplFlags) \
    561561    { \
    562562        const uint8_t  cArgs    = (a_cArgs); NOREF(cArgs); \
    563563        const uint8_t  cLocals  = (a_cLocals); NOREF(cLocals); \
    564         const uint32_t fMcBegin = (((a_cArgs) + (a_cLocals)) << 23) + (a_fFlags); \
     564        const uint32_t fMcBegin = (((a_cArgs) + (a_cLocals)) << 23) + (a_fMcFlags) + (a_fCImplFlags); \
    565565        IEM_REPEAT(a_cArgs, IEM_ARG_CHECK, 0); \
    566566
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette