VirtualBox

Ignore:
Timestamp:
Aug 11, 2023 9:47:22 AM (16 months ago)
Author:
vboxsync
Message:

VMM/IEM: Made use of the IEM_MC_F_XXX flags to limit the number of threaded functions generated. Added some more flags for completion. Fixed bug wrt selecting pre-386 IP updating function variations. bugref:10369

File:
1 edited

Legend:

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

    r100854 r100856  
    5252         */
    5353        uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    54         IEM_MC_BEGIN(3, 0, 0);
     54        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     72        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     113        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     131        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     173        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     198        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     245        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     263        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     325        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     350        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     390        IEM_MC_BEGIN(4, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     415        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     483        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     504        IEM_MC_BEGIN(3, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     555        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     570        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     599        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     614        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
    615615        IEM_MC_LOCAL(uint16_t,  uValue);
    616616        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    695695             */
    696696            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    697             IEM_MC_BEGIN(0, 1, 0);
     697            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     712            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     741        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     756        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     794        IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     809        IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     837        IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     861        IEM_MC_BEGIN(0, 3, IEM_MC_F_NOT_286_OR_OLDER);
    862862        IEM_MC_LOCAL(uint32_t,  uSrc);
    863863        IEM_MC_LOCAL(RTGCPTR,   GCPtrEffSrc);
     
    946946             */
    947947            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    948             IEM_MC_BEGIN(0, 1, 0);
     948            IEM_MC_BEGIN(0, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     963            IEM_MC_BEGIN(0, 2, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1057        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1078        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
    10791079        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    10801080        IEM_MC_LOCAL(RTUINT128U,                uSrc);
     
    12111211             */
    12121212            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1213             IEM_MC_BEGIN(4, 1, 0);
     1213            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1240            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    12411241            IEM_MC_ARG(uint32_t *,                  pu32Ecx,             0);
    12421242            IEM_MC_ARG(uint32_t *,                  pEFlags,             1);
     
    13481348             */
    13491349            uint8_t bImm; IEM_OPCODE_GET_NEXT_U8(&bImm);
    1350             IEM_MC_BEGIN(4, 1, 0);
     1350            IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1378            IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1422        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1447        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1487        IEM_MC_BEGIN(4, 1, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1513        IEM_MC_BEGIN(4, 3, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1584        IEM_MC_BEGIN(3, 0, IEM_MC_F_NOT_286_OR_OLDER);
    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, 0);
     1605        IEM_MC_BEGIN(3, 2, IEM_MC_F_NOT_286_OR_OLDER);
    16061606        IEM_MC_ARG(PRTUINT128U,                 puDst,               0);
    16071607        IEM_MC_LOCAL(RTUINT128U,                uSrc);
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