VirtualBox

Changeset 103212 in vbox for trunk/src


Ignore:
Timestamp:
Feb 5, 2024 10:29:39 PM (13 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161479
Message:

VMM/IEMAllInst*: Liveness analysis, part 5: Flag input & modification annotations. bugref:10372

Location:
trunk/src/VBox/VMM/VMMAll
Files:
6 edited

Legend:

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

    r103192 r103212  
    64686468/**
    64696469 * @opcode      0x9e
     6470 * @opflmodify  cf,pf,af,zf,sf
    64706471 */
    64716472FNIEMOP_DEF(iemOp_sahf)
     
    64936494/**
    64946495 * @opcode      0x9f
     6496 * @opfltest    cf,pf,af,zf,sf
    64956497 */
    64966498FNIEMOP_DEF(iemOp_lahf)
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f38.cpp.h

    r102896 r103212  
    775775
    776776
    777 /** Opcode 0x66 0x0f 0x38 0x17 - invalid */
     777/**
     778 * @opcode      0x17
     779 * @oppfx       0x66
     780 * @opflmodify  cf,pf,af,zf,sf,of
     781 * @opflclear   pf,af,sf,of
     782 */
    778783FNIEMOP_DEF(iemOp_ptest_Vx_Wx)
    779784{
     
    21432148    } while(0)
    21442149
    2145 /** Opcode 0x66 0x0f 0x38 0xf6. */
     2150
     2151/**
     2152 * @opcode      0xf6
     2153 * @oppfx       0x66
     2154 * @opfltest    cf
     2155 * @opflmodify  cf
     2156 */
    21462157FNIEMOP_DEF(iemOp_adcx_Gy_Ey)
    21472158{
     
    21512162
    21522163
    2153 /** Opcode 0xf3 0x0f 0x38 0xf6. */
     2164/**
     2165 * @opcode      0xf6
     2166 * @oppfx       0xf3
     2167 * @opfltest    of
     2168 * @opflmodify  of
     2169 */
    21542170FNIEMOP_DEF(iemOp_adox_Gy_Ey)
    21552171{
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstThree0f3a.cpp.h

    r102331 r103212  
    11201120
    11211121
    1122 /** Opcode 0x66 0x0f 0x60. */
     1122/**
     1123 * @opcode      0x60
     1124 * @oppfx       0x66
     1125 * @opflmodify  cf,pf,af,zf,sf,of
     1126 * @opflclear   pf,af
     1127 */
    11231128FNIEMOP_DEF(iemOp_pcmpestrm_Vdq_Wdq_Ib)
    11241129{
     
    12451250
    12461251
    1247 /** Opcode 0x66 0x0f 0x61, */
     1252/**
     1253 * @opcode      0x61
     1254 * @oppfx       0x66
     1255 * @opflmodify  cf,pf,af,zf,sf,of
     1256 * @opflclear   pf,af
     1257 */
    12481258FNIEMOP_DEF(iemOp_pcmpestri_Vdq_Wdq_Ib)
    12491259{
     
    13741384
    13751385
    1376 /** Opcode 0x66 0x0f 0x62. */
     1386/**
     1387 * @opcode      0x62
     1388 * @oppfx       0x66
     1389 * @opflmodify  cf,pf,af,zf,sf,of
     1390 * @opflclear   pf,af
     1391 */
    13771392FNIEMOP_DEF(iemOp_pcmpistrm_Vdq_Wdq_Ib)
    13781393{
     
    14371452
    14381453
    1439 /** Opcode 0x66 0x0f 0x63*/
     1454/**
     1455 * @opcode      0x63
     1456 * @oppfx       0x66
     1457 * @opflmodify  cf,pf,af,zf,sf,of
     1458 * @opflclear   pf,af
     1459 */
    14401460FNIEMOP_DEF(iemOp_pcmpistri_Vdq_Wdq_Ib)
    14411461{
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r103206 r103212  
    48814881 * @opcode      0x2e
    48824882 * @oppfx       none
    4883  * @opflmodify  cf,pf,af,zf,sf,ov
     4883 * @opflmodify  cf,pf,af,zf,sf,of
    48844884 * @opflclear   af,sf,of
    48854885 */
     
    49554955 * @opcode      0x2e
    49564956 * @oppfx       0x66
    4957  * @opflmodify  cf,pf,af,zf,sf,ov
     4957 * @opflmodify  cf,pf,af,zf,sf,of
    49584958 * @opflclear   af,sf,of
    49594959 */
     
    50335033 * @opcode      0x2e
    50345034 * @oppfx       none
    5035  * @opflmodify  cf,pf,af,zf,sf,ov
     5035 * @opflmodify  cf,pf,af,zf,sf,of
    50365036 * @opflclear   af,sf,of
    50375037 */
     
    51075107 * @opcode      0x2f
    51085108 * @oppfx       0x66
    5109  * @opflmodify  cf,pf,af,zf,sf,ov
     5109 * @opflmodify  cf,pf,af,zf,sf,of
    51105110 * @opflclear   af,sf,of
    51115111 */
     
    1142811428
    1142911429/**
    11430  * Common worker for BSF and BSR instructions.
     11430 * Body for BSF and BSR instructions.
    1143111431 *
    1143211432 * These cannot use iemOpHlpBinaryOperator_rv_rm because they don't always write
     
    1143411434 * bits must be left alone.
    1143511435 *
    11436  * @param   pImpl       Pointer to the instruction implementation (assembly).
    11437  */
    11438 FNIEMOP_DEF_1(iemOpHlpBitScanOperator_rv_rm, PCIEMOPBINSIZES, pImpl)
    11439 {
    11440     uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    11441 
    11442     /*
    11443      * If rm is denoting a register, no more instruction bytes.
    11444      */
    11445     if (IEM_IS_MODRM_REG_MODE(bRm))
    11446     {
    11447         switch (pVCpu->iem.s.enmEffOpSize)
    11448         {
    11449             case IEMMODE_16BIT:
    11450                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    11451                 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11452                 IEM_MC_ARG(uint16_t *, pu16Dst, 0);
    11453                 IEM_MC_ARG(uint16_t,   u16Src,  1);
    11454                 IEM_MC_ARG(uint32_t *, pEFlags, 2);
    11455 
    11456                 IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_RM(pVCpu, bRm));
    11457                 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_REG(pVCpu, bRm));
    11458                 IEM_MC_REF_EFLAGS(pEFlags);
    11459                 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, u16Src, pEFlags);
    11460 
    11461                 IEM_MC_ADVANCE_RIP_AND_FINISH();
    11462                 IEM_MC_END();
    11463                 break;
    11464 
    11465             case IEMMODE_32BIT:
    11466                 IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0);
    11467                 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11468                 IEM_MC_ARG(uint32_t *, pu32Dst, 0);
    11469                 IEM_MC_ARG(uint32_t,   u32Src,  1);
    11470                 IEM_MC_ARG(uint32_t *, pEFlags, 2);
    11471 
    11472                 IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_RM(pVCpu, bRm));
    11473                 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm));
    11474                 IEM_MC_REF_EFLAGS(pEFlags);
    11475                 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, u32Src, pEFlags);
    11476                 IEM_MC_IF_EFL_BIT_NOT_SET(X86_EFL_ZF) {
    11477                     IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm));
    11478                 } IEM_MC_ENDIF();
    11479                 IEM_MC_ADVANCE_RIP_AND_FINISH();
    11480                 IEM_MC_END();
    11481                 break;
    11482 
    11483             case IEMMODE_64BIT:
    11484                 IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0);
    11485                 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11486                 IEM_MC_ARG(uint64_t *, pu64Dst, 0);
    11487                 IEM_MC_ARG(uint64_t,   u64Src,  1);
    11488                 IEM_MC_ARG(uint32_t *, pEFlags, 2);
    11489 
    11490                 IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_RM(pVCpu, bRm));
    11491                 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm));
    11492                 IEM_MC_REF_EFLAGS(pEFlags);
    11493                 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, u64Src, pEFlags);
    11494 
    11495                 IEM_MC_ADVANCE_RIP_AND_FINISH();
    11496                 IEM_MC_END();
    11497                 break;
    11498 
    11499             IEM_NOT_REACHED_DEFAULT_CASE_RET();
    11500         }
    11501     }
    11502     else
    11503     {
    11504         /*
    11505          * We're accessing memory.
    11506          */
    11507         switch (pVCpu->iem.s.enmEffOpSize)
    11508         {
    11509             case IEMMODE_16BIT:
    11510                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    11511                 IEM_MC_ARG(uint16_t *, pu16Dst, 0);
    11512                 IEM_MC_ARG(uint16_t,   u16Src,  1);
    11513                 IEM_MC_ARG(uint32_t *, pEFlags, 2);
    11514                 IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    11515 
    11516                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    11517                 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11518                 IEM_MC_FETCH_MEM_U16(u16Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
    11519                 IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_REG(pVCpu, bRm));
    11520                 IEM_MC_REF_EFLAGS(pEFlags);
    11521                 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, u16Src, pEFlags);
    11522 
    11523                 IEM_MC_ADVANCE_RIP_AND_FINISH();
    11524                 IEM_MC_END();
    11525                 break;
    11526 
    11527             case IEMMODE_32BIT:
    11528                 IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0);
    11529                 IEM_MC_ARG(uint32_t *, pu32Dst, 0);
    11530                 IEM_MC_ARG(uint32_t,   u32Src,  1);
    11531                 IEM_MC_ARG(uint32_t *, pEFlags, 2);
    11532                 IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    11533 
    11534                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    11535                 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11536                 IEM_MC_FETCH_MEM_U32(u32Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
    11537                 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm));
    11538                 IEM_MC_REF_EFLAGS(pEFlags);
    11539                 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, u32Src, pEFlags);
    11540 
    11541                 IEM_MC_IF_EFL_BIT_NOT_SET(X86_EFL_ZF) {
    11542                     IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm));
    11543                 } IEM_MC_ENDIF();
    11544                 IEM_MC_ADVANCE_RIP_AND_FINISH();
    11545                 IEM_MC_END();
    11546                 break;
    11547 
    11548             case IEMMODE_64BIT:
    11549                 IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0);
    11550                 IEM_MC_ARG(uint64_t *, pu64Dst, 0);
    11551                 IEM_MC_ARG(uint64_t,   u64Src,  1);
    11552                 IEM_MC_ARG(uint32_t *, pEFlags, 2);
    11553                 IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst);
    11554 
    11555                 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0);
    11556                 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
    11557                 IEM_MC_FETCH_MEM_U64(u64Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst);
    11558                 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm));
    11559                 IEM_MC_REF_EFLAGS(pEFlags);
    11560                 IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, u64Src, pEFlags);
    11561 
    11562                 IEM_MC_ADVANCE_RIP_AND_FINISH();
    11563                 IEM_MC_END();
    11564                 break;
    11565 
    11566             IEM_NOT_REACHED_DEFAULT_CASE_RET();
    11567         }
    11568     }
    11569 }
     11436 * @param   pImpl   Pointer to the instruction implementation (assembly).
     11437 */
     11438#define IEMOP_BODY_BIT_SCAN_OPERATOR_RV_RM(pImpl) \
     11439    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); \
     11440    \
     11441    /* \
     11442     * If rm is denoting a register, no more instruction bytes. \
     11443     */ \
     11444    if (IEM_IS_MODRM_REG_MODE(bRm)) \
     11445    { \
     11446        switch (pVCpu->iem.s.enmEffOpSize) \
     11447        { \
     11448            case IEMMODE_16BIT: \
     11449                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
     11450                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     11451                IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     11452                IEM_MC_ARG(uint16_t,   u16Src,  1); \
     11453                IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     11454                \
     11455                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     11456                IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11457                IEM_MC_REF_EFLAGS(pEFlags); \
     11458                IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, u16Src, pEFlags); \
     11459                \
     11460                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     11461                IEM_MC_END(); \
     11462                break; \
     11463                \
     11464            case IEMMODE_32BIT: \
     11465                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
     11466                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     11467                IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     11468                IEM_MC_ARG(uint32_t,   u32Src,  1); \
     11469                IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     11470                \
     11471                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     11472                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11473                IEM_MC_REF_EFLAGS(pEFlags); \
     11474                IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, u32Src, pEFlags); \
     11475                IEM_MC_IF_EFL_BIT_NOT_SET(X86_EFL_ZF) { \
     11476                    IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11477                } IEM_MC_ENDIF(); \
     11478                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     11479                IEM_MC_END(); \
     11480                break; \
     11481                \
     11482            case IEMMODE_64BIT: \
     11483                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
     11484                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     11485                IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
     11486                IEM_MC_ARG(uint64_t,   u64Src,  1); \
     11487                IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     11488                \
     11489                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_RM(pVCpu, bRm)); \
     11490                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11491                IEM_MC_REF_EFLAGS(pEFlags); \
     11492                IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, u64Src, pEFlags); \
     11493                \
     11494                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     11495                IEM_MC_END(); \
     11496                break; \
     11497                \
     11498            IEM_NOT_REACHED_DEFAULT_CASE_RET(); \
     11499        } \
     11500    } \
     11501    else \
     11502    { \
     11503        /* \
     11504         * We're accessing memory. \
     11505         */ \
     11506        switch (pVCpu->iem.s.enmEffOpSize) \
     11507        { \
     11508            case IEMMODE_16BIT: \
     11509                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \
     11510                IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     11511                IEM_MC_ARG(uint16_t,   u16Src,  1); \
     11512                IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     11513                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst); \
     11514                \
     11515                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); \
     11516                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     11517                IEM_MC_FETCH_MEM_U16(u16Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
     11518                IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11519                IEM_MC_REF_EFLAGS(pEFlags); \
     11520                IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU16, pu16Dst, u16Src, pEFlags); \
     11521                \
     11522                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     11523                IEM_MC_END(); \
     11524                break; \
     11525                \
     11526            case IEMMODE_32BIT: \
     11527                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \
     11528                IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     11529                IEM_MC_ARG(uint32_t,   u32Src,  1); \
     11530                IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     11531                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst); \
     11532                \
     11533                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); \
     11534                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     11535                IEM_MC_FETCH_MEM_U32(u32Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
     11536                IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11537                IEM_MC_REF_EFLAGS(pEFlags); \
     11538                IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU32, pu32Dst, u32Src, pEFlags); \
     11539                \
     11540                IEM_MC_IF_EFL_BIT_NOT_SET(X86_EFL_ZF) { \
     11541                    IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11542                } IEM_MC_ENDIF(); \
     11543                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     11544                IEM_MC_END(); \
     11545                break; \
     11546                \
     11547            case IEMMODE_64BIT: \
     11548                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
     11549                IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
     11550                IEM_MC_ARG(uint64_t,   u64Src,  1); \
     11551                IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     11552                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst); \
     11553                \
     11554                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); \
     11555                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     11556                IEM_MC_FETCH_MEM_U64(u64Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
     11557                IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     11558                IEM_MC_REF_EFLAGS(pEFlags); \
     11559                IEM_MC_CALL_VOID_AIMPL_3(pImpl->pfnNormalU64, pu64Dst, u64Src, pEFlags); \
     11560                \
     11561                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     11562                IEM_MC_END(); \
     11563                break; \
     11564                \
     11565            IEM_NOT_REACHED_DEFAULT_CASE_RET(); \
     11566        } \
     11567    } (void)0
    1157011568
    1157111569
     
    1158411582    IEMOP_HLP_MIN_386();
    1158511583    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_OF | X86_EFL_SF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF);
    11586     return FNIEMOP_CALL_1(iemOpHlpBitScanOperator_rv_rm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_bsf_eflags));
     11584    PCIEMOPBINSIZES const pImpl = IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_bsf_eflags);
     11585    IEMOP_BODY_BIT_SCAN_OPERATOR_RV_RM(pImpl);
    1158711586}
    1158811587
     
    1163711636    IEMOP_HLP_MIN_386();
    1163811637    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_OF | X86_EFL_SF | X86_EFL_AF | X86_EFL_PF | X86_EFL_CF);
    11639     return FNIEMOP_CALL_1(iemOpHlpBitScanOperator_rv_rm, IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_bsr_eflags));
     11638    PCIEMOPBINSIZES const pImpl = IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_bsr_eflags);
     11639    IEMOP_BODY_BIT_SCAN_OPERATOR_RV_RM(pImpl);
    1164011640}
    1164111641
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap1.cpp.h

    r103185 r103212  
    22822282 * @opcode      0x2e
    22832283 * @oppfx       none
    2284  * @opflmodify  cf,pf,af,zf,sf,ov
     2284 * @opflmodify  cf,pf,af,zf,sf,of
    22852285 * @opflclear   af,sf,of
    22862286 */
     
    23582358 * @opcode      0x2e
    23592359 * @oppfx       0x66
    2360  * @opflmodify  cf,pf,af,zf,sf,ov
     2360 * @opflmodify  cf,pf,af,zf,sf,of
    23612361 * @opflclear   af,sf,of
    23622362 */
     
    24372437 * @opcode      0x2f
    24382438 * @oppfx       none
    2439  * @opflmodify  cf,pf,af,zf,sf,ov
     2439 * @opflmodify  cf,pf,af,zf,sf,of
    24402440 * @opflclear   af,sf,of
    24412441 */
     
    25132513 * @opcode      0x2f
    25142514 * @oppfx       0x66
    2515  * @opflmodify  cf,pf,af,zf,sf,ov
     2515 * @opflmodify  cf,pf,af,zf,sf,of
    25162516 * @opflclear   af,sf,of
    25172517 */
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstVexMap2.cpp.h

    r103190 r103212  
    210210
    211211
    212 /** Opcode VEX.66.0F38 0x17 - invalid */
     212/**
     213 * @opcode      0x17
     214 * @oppfx       0x66
     215 * @opflmodify  cf,pf,af,zf,sf,of
     216 * @opflclear   pf,af,sf,of
     217 */
    213218FNIEMOP_DEF(iemOp_vptest_Vx_Wx)
    214219{
     
    16321637/*  Opcode VEX.F2.0F38 0xf1 - invalid (legacy only). */
    16331638
    1634 /** Opcode VEX.0F38 0xf2 - ANDN (vex only). */
     1639/**
     1640 * @opcode      0xf2
     1641 * @oppfx       none
     1642 * @opflmodify  cf,pf,af,zf,sf,of
     1643 * @opflclear   cf,of
     1644 * @opflundef   pf,af
     1645 * @note        VEX only
     1646 */
    16351647FNIEMOP_DEF(iemOp_andn_Gy_By_Ey)
    16361648{
     
    18201832
    18211833
    1822 /*  Opcode VEX.F3.0F38 0xf3 /1. */
    1823 /** @opcode  /1
    1824  *  @opmaps  vexgrp17 */
     1834/**
     1835 * @opmaps      vexgrp17
     1836 * @opcode      /1
     1837 * @opflmodify  cf,pf,af,zf,sf,of
     1838 * @opflclear   of
     1839 * @opflundef   pf,af
     1840 */
    18251841FNIEMOP_DEF_1(iemOp_VGrp17_blsr_By_Ey, uint8_t, bRm)
    18261842{
     
    18301846
    18311847
    1832 /*  Opcode VEX.F3.0F38 0xf3 /2. */
    1833 /** @opcode  /2
    1834  *  @opmaps  vexgrp17 */
     1848/**
     1849 * @opmaps      vexgrp17
     1850 * @opcode      /2
     1851 * @opflmodify  cf,pf,af,zf,sf,of
     1852 * @opflclear   zf,of
     1853 * @opflundef   pf,af
     1854 */
    18351855FNIEMOP_DEF_1(iemOp_VGrp17_blsmsk_By_Ey, uint8_t, bRm)
    18361856{
     
    18401860
    18411861
    1842 /*  Opcode VEX.F3.0F38 0xf3 /3. */
    1843 /** @opcode  /3
    1844  *  @opmaps  vexgrp17 */
     1862/**
     1863 * @opmaps      vexgrp17
     1864 * @opcode      /3
     1865 * @opflmodify  cf,pf,af,zf,sf,of
     1866 * @opflclear   of
     1867 * @opflundef   pf,af
     1868 */
    18451869FNIEMOP_DEF_1(iemOp_VGrp17_blsi_By_Ey, uint8_t, bRm)
    18461870{
     
    22902314
    22912315
    2292 /** Opcode VEX.0F38 0xf7 (vex only). */
     2316/**
     2317 * @opcode      0xf7
     2318 * @oppfx       none
     2319 * @opflmodify  cf,pf,af,zf,sf,of
     2320 * @opflclear   cf,of
     2321 * @opflundef   pf,af,sf
     2322 */
    22932323FNIEMOP_DEF(iemOp_bextr_Gy_Ey_By)
    22942324{
Note: See TracChangeset for help on using the changeset viewer.

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