VirtualBox

Ignore:
Timestamp:
Mar 13, 2024 2:01:20 PM (9 months ago)
Author:
vboxsync
Message:

VMM/IEM: Implemented simple (whole sale) status flag up update skipping for arithmetic operations with native emitter. bugref:10375

File:
1 edited

Legend:

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

    r103801 r103828  
    102102            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    103103            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, a_bRm), u8Dst); \
    104             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     104            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    105105        } IEM_MC_NATIVE_ELSE() { \
    106106            IEM_MC_ARG(uint8_t *,   pu8Dst,  0); \
     
    186186            IEM_MC_FETCH_EFLAGS(uEFlags); \
    187187            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    188             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     188            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    189189        } IEM_MC_NATIVE_ELSE() { \
    190190            IEM_MC_ARG(uint8_t *,   pu8Dst,  0); \
     
    219219                IEM_MC_FETCH_EFLAGS(uEFlags); \
    220220                IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u8Dst, u8SrcEmit, uEFlags, 8); \
    221                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
     221                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    222222            } IEM_MC_NATIVE_ELSE() { \
    223223                IEM_MC_LOCAL(uint8_t,       bUnmapInfo); \
     
    266266            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    267267            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_REG(pVCpu, a_bRm), u8Dst); \
    268             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     268            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    269269        } IEM_MC_NATIVE_ELSE() { \
    270270            IEM_MC_ARG(uint8_t *,   pu8Dst,  0); \
     
    296296            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    297297            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_REG(pVCpu, a_bRm), u8Dst); \
    298             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     298            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    299299        } IEM_MC_NATIVE_ELSE() { \
    300300            IEM_MC_ARG(uint8_t *,   pu8Dst,  0); \
     
    329329            IEM_MC_FETCH_EFLAGS(uEFlags); \
    330330            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    331             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     331            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    332332        } IEM_MC_NATIVE_ELSE() { \
    333333            IEM_MC_ARG(uint8_t *,   pu8Dst,  0); \
     
    358358            IEM_MC_FETCH_EFLAGS(uEFlags); \
    359359            IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u8Dst, u8Src, uEFlags, 8); \
    360             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     360            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    361361        } IEM_MC_NATIVE_ELSE() { \
    362362            IEM_MC_ARG(uint8_t *,   pu8Dst,  0); \
     
    397397                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    398398                    IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, a_bRm), u16Dst); \
    399                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     399                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    400400                } IEM_MC_NATIVE_ELSE() { \
    401401                    IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     
    422422                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    423423                    IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, a_bRm), u32Dst); \
    424                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     424                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    425425                } IEM_MC_NATIVE_ELSE() { \
    426426                    IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     
    448448                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    449449                    IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, a_bRm), u64Dst); \
    450                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     450                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    451451                } IEM_MC_NATIVE_ELSE() { \
    452452                    IEM_MC_ARG(uint64_t *,  pu64Dst, 0); \
     
    640640                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    641641                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
    642                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     642                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    643643                } IEM_MC_NATIVE_ELSE() { \
    644644                    IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     
    664664                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    665665                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
    666                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     666                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    667667                } IEM_MC_NATIVE_ELSE() { \
    668668                    IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     
    688688                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    689689                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
    690                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     690                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    691691                } IEM_MC_NATIVE_ELSE() { \
    692692                    IEM_MC_ARG(uint64_t *,  pu64Dst, 0); \
     
    728728                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    729729                        IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16SrcEmit, uEFlags, 16); \
    730                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     730                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    731731                    } IEM_MC_NATIVE_ELSE() { \
    732732                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    759759                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    760760                        IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32SrcEmit, uEFlags, 32); \
    761                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     761                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    762762                    } IEM_MC_NATIVE_ELSE() { \
    763763                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    790790                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    791791                        IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64SrcEmit, uEFlags, 64); \
    792                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     792                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    793793                    } IEM_MC_NATIVE_ELSE() { \
    794794                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    833833        IEM_MC_FETCH_EFLAGS(uEFlags); \
    834834        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    835         IEM_MC_COMMIT_EFLAGS(uEFlags); \
    836835        IEM_MC_STORE_GREG_U8(X86_GREG_xAX, u8Dst); \
     836        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    837837    } IEM_MC_NATIVE_ELSE() { \
    838838        IEM_MC_ARG_CONST(uint8_t,   u8Src,/*=*/ u8Imm,  1); \
     
    864864                IEM_MC_FETCH_EFLAGS(uEFlags); \
    865865                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \
    866                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
    867866                IEM_MC_STORE_GREG_U16(X86_GREG_xAX, u16Dst); \
     867                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    868868            } IEM_MC_NATIVE_ELSE() { \
    869869                IEM_MC_ARG_CONST(uint16_t,  u16Src,/*=*/ u16Imm,    1); \
     
    889889                IEM_MC_FETCH_EFLAGS(uEFlags); \
    890890                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \
    891                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
    892891                IEM_MC_STORE_GREG_U32(X86_GREG_xAX, u32Dst); \
     892                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    893893            } IEM_MC_NATIVE_ELSE() { \
    894894                IEM_MC_ARG_CONST(uint32_t,  u32Src,/*=*/ u32Imm,    1); \
     
    915915                IEM_MC_FETCH_EFLAGS(uEFlags); \
    916916                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \
    917                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
    918917                IEM_MC_STORE_GREG_U64(X86_GREG_xAX, u64Dst); \
     918                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    919919            } IEM_MC_NATIVE_ELSE() { \
    920920                IEM_MC_ARG_CONST(uint64_t,  u64Src,/*=*/ u64Imm,    1); \
     
    951951                IEM_MC_FETCH_EFLAGS(uEFlags); \
    952952                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \
    953                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
     953                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    954954            } IEM_MC_NATIVE_ELSE() { \
    955955                IEM_MC_ARG_CONST(uint16_t,  u16Src,/*=*/ u16Imm,    1); \
     
    975975                IEM_MC_FETCH_EFLAGS(uEFlags); \
    976976                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \
    977                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
     977                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    978978            } IEM_MC_NATIVE_ELSE() { \
    979979                IEM_MC_ARG_CONST(uint32_t,  u32Src,/*=*/ u32Imm,    1); \
     
    999999                IEM_MC_FETCH_EFLAGS(uEFlags); \
    10001000                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \
    1001                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
     1001                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    10021002            } IEM_MC_NATIVE_ELSE() { \
    10031003                IEM_MC_ARG_CONST(uint64_t,  u64Src,/*=*/ u64Imm,    1); \
     
    42444244            IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    42454245            IEM_MC_STORE_GREG_U8(IEM_GET_MODRM_RM(pVCpu, bRm), u8Dst); \
    4246             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4246            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    42474247        } IEM_MC_NATIVE_ELSE() { \
    42484248            IEM_MC_ARG_CONST(uint8_t,   u8Src, /*=*/ u8Imm,     1); \
     
    43194319            IEM_MC_FETCH_EFLAGS(uEFlags); \
    43204320            IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    4321             IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4321            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    43224322        } IEM_MC_NATIVE_ELSE() { \
    43234323            IEM_MC_ARG_CONST(uint8_t,   u8Src, /*=*/ u8Imm,     1); \
     
    43474347                IEM_MC_FETCH_EFLAGS(uEFlags); \
    43484348                IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u8Dst, u8Imm, uEFlags, 8, 8); \
    4349                 IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4349                IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    43504350            } IEM_MC_NATIVE_ELSE() { \
    43514351                IEM_MC_LOCAL(uint8_t,       bUnmapInfo); \
     
    45094509                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    45104510                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \
    4511                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
    45124511                    IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, bRm), u16Dst); \
     4512                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    45134513                } IEM_MC_NATIVE_ELSE() { \
    45144514                    IEM_MC_ARG(uint16_t *,      pu16Dst,                0); \
     
    45354535                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    45364536                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \
    4537                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
    45384537                    IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, bRm), u32Dst); \
     4538                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    45394539                } IEM_MC_NATIVE_ELSE() { \
    45404540                    IEM_MC_ARG(uint32_t *,      pu32Dst,                0); \
     
    45624562                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    45634563                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \
    4564                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
    45654564                    IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm), u64Dst); \
     4565                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    45664566                } IEM_MC_NATIVE_ELSE() { \
    45674567                    IEM_MC_ARG(uint64_t *,      pu64Dst,                0); \
     
    47694769                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    47704770                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \
    4771                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4771                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    47724772                } IEM_MC_NATIVE_ELSE() { \
    47734773                    IEM_MC_ARG(uint16_t const *,pu16Dst,                0); \
     
    47944794                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    47954795                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \
    4796                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4796                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    47974797                } IEM_MC_NATIVE_ELSE() { \
    47984798                    IEM_MC_ARG(uint32_t const *,pu32Dst,                0); \
     
    48194819                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    48204820                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \
    4821                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4821                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    48224822                } IEM_MC_NATIVE_ELSE() { \
    48234823                    IEM_MC_ARG(uint64_t const *,pu64Dst,                0); \
     
    48564856                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    48574857                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, u16Imm, uEFlags, 16, 16); \
    4858                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4858                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    48594859                    } IEM_MC_NATIVE_ELSE() { \
    48604860                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    48864886                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    48874887                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, u32Imm, uEFlags, 32, 32); \
    4888                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4888                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    48894889                    } IEM_MC_NATIVE_ELSE() { \
    48904890                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    49164916                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    49174917                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, u64Imm, uEFlags, 64, 32); \
    4918                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     4918                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    49194919                    } IEM_MC_NATIVE_ELSE() { \
    49204920                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    50975097                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, (uint16_t)(int16_t)(int8_t)u8Imm, uEFlags, 16, 8); \
    50985098                    IEM_MC_STORE_GREG_U16(IEM_GET_MODRM_RM(pVCpu, bRm), u16Dst); \
    5099                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5099                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    51005100                } IEM_MC_NATIVE_ELSE() { \
    51015101                    IEM_MC_ARG(uint16_t *,      pu16Dst,                                        0); \
     
    51205120                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, (uint32_t)(int32_t)(int8_t)u8Imm, uEFlags, 32, 8); \
    51215121                    IEM_MC_STORE_GREG_U32(IEM_GET_MODRM_RM(pVCpu, bRm), u32Dst); \
    5122                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5122                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    51235123                } IEM_MC_NATIVE_ELSE() { \
    51245124                    IEM_MC_ARG(uint32_t *,      pu32Dst,                                        0); \
     
    51445144                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, (uint64_t)(int64_t)(int8_t)u8Imm, uEFlags, 64, 8); \
    51455145                    IEM_MC_STORE_GREG_U64(IEM_GET_MODRM_RM(pVCpu, bRm), u64Dst); \
    5146                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5146                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    51475147                } IEM_MC_NATIVE_ELSE() { \
    51485148                    IEM_MC_ARG(uint64_t *,      pu64Dst,                                        0); \
     
    53395339                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    53405340                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, (uint16_t)(int16_t)(int8_t)u8Imm, uEFlags, 16, 8); \
    5341                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5341                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    53425342                } IEM_MC_NATIVE_ELSE() { \
    53435343                    IEM_MC_ARG(uint16_t const *,    pu16Dst,                                        0); \
     
    53615361                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    53625362                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, (uint32_t)(int32_t)(int8_t)u8Imm, uEFlags, 32, 8); \
    5363                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5363                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    53645364                } IEM_MC_NATIVE_ELSE() { \
    53655365                    IEM_MC_ARG(uint32_t const *,    pu32Dst,                                        0); \
     
    53835383                    IEM_MC_FETCH_EFLAGS(uEFlags); \
    53845384                    IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, (uint64_t)(int64_t)(int8_t)u8Imm, uEFlags, 64, 8); \
    5385                     IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5385                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    53865386                } IEM_MC_NATIVE_ELSE() { \
    53875387                    IEM_MC_ARG(uint64_t const *,    pu64Dst,                                        0); \
     
    54205420                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    54215421                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u16Dst, (uint16_t)(int16_t)(int8_t)u8Imm, uEFlags, 16, 8); \
    5422                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5422                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    54235423                    } IEM_MC_NATIVE_ELSE() { \
    54245424                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    54485448                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    54495449                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u32Dst, (uint32_t)(int32_t)(int8_t)u8Imm, uEFlags, 32, 8); \
    5450                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5450                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    54515451                    } IEM_MC_NATIVE_ELSE() { \
    54525452                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    54765476                        IEM_MC_FETCH_EFLAGS(uEFlags); \
    54775477                        IEM_MC_NATIVE_EMIT_5(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_i_efl), u64Dst, (uint64_t)(int64_t)(int8_t)u8Imm, uEFlags, 64, 8); \
    5478                         IEM_MC_COMMIT_EFLAGS(uEFlags); \
     5478                        IEM_MC_COMMIT_EFLAGS_OPT(uEFlags); \
    54795479                    } IEM_MC_NATIVE_ELSE() { \
    54805480                        IEM_MC_LOCAL(uint8_t,        bUnmapInfo); \
     
    56505650            IEM_MC_FETCH_EFLAGS(uEFlags);
    56515651            IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u8Src, u8Src, uEFlags, 8);
    5652             IEM_MC_COMMIT_EFLAGS(uEFlags);
     5652            IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
    56535653        } IEM_MC_NATIVE_ELSE() {
    56545654            IEM_MC_ARG(uint8_t *,   pu8Dst,  0);
     
    56965696                    IEM_MC_FETCH_EFLAGS(uEFlags);
    56975697                    IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u16Src, u16Src, uEFlags, 16);
    5698                     IEM_MC_COMMIT_EFLAGS(uEFlags);
     5698                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
    56995699                } IEM_MC_NATIVE_ELSE() {
    57005700                    IEM_MC_ARG(uint16_t *, pu16Dst, 0);
     
    57185718                    IEM_MC_FETCH_EFLAGS(uEFlags);
    57195719                    IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u32Src, u32Src, uEFlags, 32);
    5720                     IEM_MC_COMMIT_EFLAGS(uEFlags);
     5720                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
    57215721                } IEM_MC_NATIVE_ELSE() {
    57225722                    IEM_MC_ARG(uint32_t *, pu32Dst, 0);
     
    57405740                    IEM_MC_FETCH_EFLAGS(uEFlags);
    57415741                    IEM_MC_NATIVE_EMIT_4(iemNativeEmit_test_r_r_efl, u64Src, u64Src, uEFlags, 64);
    5742                     IEM_MC_COMMIT_EFLAGS(uEFlags);
     5742                    IEM_MC_COMMIT_EFLAGS_OPT(uEFlags);
    57435743                } IEM_MC_NATIVE_ELSE() {
    57445744                    IEM_MC_ARG(uint64_t *,  pu64Dst, 0);
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