VirtualBox

Changeset 103718 in vbox


Ignore:
Timestamp:
Mar 7, 2024 2:43:55 AM (7 months ago)
Author:
vboxsync
Message:

VMM/IEM: Fixed native translation of cmp Gv,Ev (reg,r/m) which accidentally cleared the top 32-bits in the 'destination' (left-side) register. bugref:10376

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

Legend:

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

    r103678 r103718  
    9595 * @note Used both in OneByte and TwoByte0f.
    9696 */
    97 #define IEMOP_BODY_BINARY_rv_rm(a_bRm, a_fnNormalU16, a_fnNormalU32, a_fnNormalU64, a_fModifiesDstReg, a_f16BitMcFlag, a_EmitterBasename, a_fNativeArchs) \
     97#define IEMOP_BODY_BINARY_rv_rm(a_bRm, a_fnNormalU16, a_fnNormalU32, a_fnNormalU64, a_f16BitMcFlag, a_EmitterBasename, a_fNativeArchs) \
    9898    /* \
    9999     * If rm is denoting a register, no more instruction bytes. \
     
    148148                    IEM_MC_REF_EFLAGS(pEFlags); \
    149149                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    150                     if (a_fModifiesDstReg) \
    151                         IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
     150                    IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    152151                } IEM_MC_NATIVE_ENDIF(); \
    153152                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    239238                    IEM_MC_REF_EFLAGS(pEFlags); \
    240239                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
    241                     if (a_fModifiesDstReg) \
    242                         IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
     240                    IEM_MC_CLEAR_HIGH_GREG_U64(IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
    243241                } IEM_MC_NATIVE_ENDIF(); \
    244242                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     
    278276    (void)0
    279277
     278/**
     279 * Body for word/dword/qword the instruction CMP, ++ with a register as the
     280 * destination.
     281 *
     282 * @note Used both in OneByte and TwoByte0f.
     283 */
     284#define IEMOP_BODY_BINARY_rv_rm_RO(a_bRm, a_fnNormalU16, a_fnNormalU32, a_fnNormalU64, a_EmitterBasename, a_fNativeArchs) \
     285    /* \
     286     * If rm is denoting a register, no more instruction bytes. \
     287     */ \
     288    if (IEM_IS_MODRM_REG_MODE(a_bRm)) \
     289    { \
     290        switch (pVCpu->iem.s.enmEffOpSize) \
     291        { \
     292            case IEMMODE_16BIT: \
     293                IEM_MC_BEGIN(3, 0, 0, 0); \
     294                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     295                IEM_MC_ARG(uint16_t,        u16Src,  1); \
     296                IEM_MC_FETCH_GREG_U16(u16Src, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
     297                IEM_MC_NATIVE_IF(a_fNativeArchs) { \
     298                    IEM_MC_LOCAL(uint16_t,  u16Dst); \
     299                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     300                    /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
     301                    IEM_MC_LOCAL(uint32_t,  uEFlags); \
     302                    IEM_MC_FETCH_EFLAGS(uEFlags); \
     303                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
     304                    IEM_MC_COMMIT_EFLAGS(uEFlags); \
     305                } IEM_MC_NATIVE_ELSE() { \
     306                    IEM_MC_ARG(uint16_t *,  pu16Dst, 0); \
     307                    IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     308                    IEM_MC_ARG(uint32_t *,  pEFlags, 2); \
     309                    IEM_MC_REF_EFLAGS(pEFlags); \
     310                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     311                } IEM_MC_NATIVE_ENDIF(); \
     312                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     313                IEM_MC_END(); \
     314                break; \
     315            \
     316            case IEMMODE_32BIT: \
     317                IEM_MC_BEGIN(3, 0, IEM_MC_F_MIN_386, 0); \
     318                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     319                IEM_MC_ARG(uint32_t,        u32Src,  1); \
     320                IEM_MC_FETCH_GREG_U32(u32Src, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
     321                IEM_MC_NATIVE_IF(a_fNativeArchs) { \
     322                    IEM_MC_LOCAL(uint32_t,  u32Dst); \
     323                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     324                    /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
     325                    IEM_MC_LOCAL(uint32_t,  uEFlags); \
     326                    IEM_MC_FETCH_EFLAGS(uEFlags); \
     327                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
     328                    IEM_MC_COMMIT_EFLAGS(uEFlags); \
     329                } IEM_MC_NATIVE_ELSE() { \
     330                    IEM_MC_ARG(uint32_t *,  pu32Dst, 0); \
     331                    IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     332                    IEM_MC_ARG(uint32_t *,  pEFlags, 2); \
     333                    IEM_MC_REF_EFLAGS(pEFlags); \
     334                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     335                } IEM_MC_NATIVE_ENDIF(); \
     336                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     337                IEM_MC_END(); \
     338                break; \
     339            \
     340            case IEMMODE_64BIT: \
     341                IEM_MC_BEGIN(3, 0, IEM_MC_F_64BIT, 0); \
     342                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     343                IEM_MC_ARG(uint64_t,        u64Src,  1); \
     344                IEM_MC_FETCH_GREG_U64(u64Src, IEM_GET_MODRM_RM(pVCpu, a_bRm)); \
     345                IEM_MC_NATIVE_IF(a_fNativeArchs) { \
     346                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
     347                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     348                    /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
     349                    IEM_MC_LOCAL(uint32_t,  uEFlags); \
     350                    IEM_MC_FETCH_EFLAGS(uEFlags); \
     351                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
     352                    IEM_MC_COMMIT_EFLAGS(uEFlags); \
     353                } IEM_MC_NATIVE_ELSE() { \
     354                    IEM_MC_ARG(uint64_t *,  pu64Dst, 0); \
     355                    IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     356                    IEM_MC_ARG(uint32_t *,  pEFlags, 2); \
     357                    IEM_MC_REF_EFLAGS(pEFlags); \
     358                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     359                } IEM_MC_NATIVE_ENDIF(); \
     360                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     361                IEM_MC_END(); \
     362                break; \
     363            \
     364            IEM_NOT_REACHED_DEFAULT_CASE_RET(); \
     365        } \
     366    } \
     367    else \
     368    { \
     369        /* \
     370         * We're accessing memory. \
     371         */ \
     372        switch (pVCpu->iem.s.enmEffOpSize) \
     373        { \
     374            case IEMMODE_16BIT: \
     375                IEM_MC_BEGIN(3, 1, 0, 0); \
     376                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst); \
     377                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, a_bRm, 0); \
     378                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     379                IEM_MC_ARG(uint16_t,   u16Src,  1); \
     380                IEM_MC_FETCH_MEM_U16(u16Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
     381                IEM_MC_NATIVE_IF(a_fNativeArchs) { \
     382                    IEM_MC_LOCAL(uint16_t,  u16Dst); \
     383                    IEM_MC_FETCH_GREG_U16(u16Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     384                    /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
     385                    IEM_MC_LOCAL(uint32_t,  uEFlags); \
     386                    IEM_MC_FETCH_EFLAGS(uEFlags); \
     387                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \
     388                    IEM_MC_COMMIT_EFLAGS(uEFlags); \
     389                } IEM_MC_NATIVE_ELSE() { \
     390                    IEM_MC_ARG(uint16_t *, pu16Dst, 0); \
     391                    IEM_MC_REF_GREG_U16(pu16Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
     392                    IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     393                    IEM_MC_REF_EFLAGS(pEFlags); \
     394                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU16, pu16Dst, u16Src, pEFlags); \
     395                } IEM_MC_NATIVE_ENDIF(); \
     396                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     397                IEM_MC_END(); \
     398                break; \
     399            \
     400            case IEMMODE_32BIT: \
     401                IEM_MC_BEGIN(3, 1, IEM_MC_F_MIN_386, 0); \
     402                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst); \
     403                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, a_bRm, 0); \
     404                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     405                IEM_MC_ARG(uint32_t,   u32Src,  1); \
     406                IEM_MC_FETCH_MEM_U32(u32Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
     407                IEM_MC_NATIVE_IF(a_fNativeArchs) { \
     408                    IEM_MC_LOCAL(uint32_t,  u32Dst); \
     409                    IEM_MC_FETCH_GREG_U32(u32Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     410                    /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
     411                    IEM_MC_LOCAL(uint32_t,  uEFlags); \
     412                    IEM_MC_FETCH_EFLAGS(uEFlags); \
     413                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \
     414                    IEM_MC_COMMIT_EFLAGS(uEFlags); \
     415                } IEM_MC_NATIVE_ELSE() { \
     416                    IEM_MC_ARG(uint32_t *, pu32Dst, 0); \
     417                    IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     418                    IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
     419                    IEM_MC_REF_EFLAGS(pEFlags); \
     420                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU32, pu32Dst, u32Src, pEFlags); \
     421                } IEM_MC_NATIVE_ENDIF(); \
     422                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     423                IEM_MC_END(); \
     424                break; \
     425            \
     426            case IEMMODE_64BIT: \
     427                IEM_MC_BEGIN(3, 1, IEM_MC_F_64BIT, 0); \
     428                IEM_MC_LOCAL(RTGCPTR,  GCPtrEffDst); \
     429                IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, a_bRm, 0); \
     430                IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); \
     431                IEM_MC_ARG(uint64_t,   u64Src,  1); \
     432                IEM_MC_FETCH_MEM_U64(u64Src, pVCpu->iem.s.iEffSeg, GCPtrEffDst); \
     433                IEM_MC_NATIVE_IF(a_fNativeArchs) { \
     434                    IEM_MC_LOCAL(uint64_t,  u64Dst); \
     435                    IEM_MC_FETCH_GREG_U64(u64Dst, IEM_GET_MODRM_REG(pVCpu, bRm)); \
     436                    /** @todo IEM_MC_LOCAL_EFLAGS(uEFlags); */ \
     437                    IEM_MC_LOCAL(uint32_t,  uEFlags); \
     438                    IEM_MC_FETCH_EFLAGS(uEFlags); \
     439                    IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \
     440                    IEM_MC_COMMIT_EFLAGS(uEFlags); \
     441                } IEM_MC_NATIVE_ELSE() { \
     442                    IEM_MC_ARG(uint64_t *, pu64Dst, 0); \
     443                    IEM_MC_ARG(uint32_t *, pEFlags, 2); \
     444                    IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \
     445                    IEM_MC_REF_EFLAGS(pEFlags); \
     446                    IEM_MC_CALL_VOID_AIMPL_3(a_fnNormalU64, pu64Dst, u64Src, pEFlags); \
     447                } IEM_MC_NATIVE_ENDIF(); \
     448                IEM_MC_ADVANCE_RIP_AND_FINISH(); \
     449                IEM_MC_END(); \
     450                break; \
     451            \
     452            IEM_NOT_REACHED_DEFAULT_CASE_RET(); \
     453        } \
     454    } \
     455    (void)0
     456
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h

    r103693 r103718  
    914914    IEMOP_MNEMONIC2(RM, ADD, add, Gv, Ev, DISOPTYPE_HARMLESS, 0);
    915915    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    916     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_add_u16, iemAImpl_add_u32, iemAImpl_add_u64, 1, 0, add, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     916    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_add_u16, iemAImpl_add_u32, iemAImpl_add_u64, 0, add, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    917917}
    918918
     
    10441044    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    10451045    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    1046     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_or_u16, iemAImpl_or_u32, iemAImpl_or_u64, 1, 0, or, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1046    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_or_u16, iemAImpl_or_u32, iemAImpl_or_u64, 0, or, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    10471047}
    10481048
     
    12011201    IEMOP_MNEMONIC2(RM, ADC, adc, Gv, Ev, DISOPTYPE_HARMLESS, 0);
    12021202    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    1203     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_adc_u16, iemAImpl_adc_u32, iemAImpl_adc_u64, 1, 0, adc, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1203    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_adc_u16, iemAImpl_adc_u32, iemAImpl_adc_u64, 0, adc, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    12041204}
    12051205
     
    13091309    IEMOP_MNEMONIC2(RM, SBB, sbb, Gv, Ev, DISOPTYPE_HARMLESS, 0);
    13101310    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    1311     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_sbb_u16, iemAImpl_sbb_u32, iemAImpl_sbb_u64, 1, 0, sbb, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1311    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_sbb_u16, iemAImpl_sbb_u32, iemAImpl_sbb_u64, 0, sbb, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    13121312}
    13131313
     
    14211421    IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF);
    14221422    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    1423     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_and_u16, iemAImpl_and_u32, iemAImpl_and_u64, 1, 0, and, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1423    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_and_u16, iemAImpl_and_u32, iemAImpl_and_u64, 0, and, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    14241424}
    14251425
     
    15401540    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    15411541    IEMOP_BODY_BINARY_rv_SAME_REG_ZERO(bRm); /* Special case: sub samereg, samereg - zeros samereg and sets EFLAGS to know value */
    1542     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_sub_u16, iemAImpl_sub_u32, iemAImpl_sub_u64, 1, 0, sub, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1542    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_sub_u16, iemAImpl_sub_u32, iemAImpl_sub_u64, 0, sub, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    15431543}
    15441544
     
    16611661    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    16621662    IEMOP_BODY_BINARY_rv_SAME_REG_ZERO(bRm); /* Special case: xor samereg, samereg - zeros samereg and sets EFLAGS to know value */
    1663     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_xor_u16, iemAImpl_xor_u32, iemAImpl_xor_u64, 1, 0, xor, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1663    IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_xor_u16, iemAImpl_xor_u32, iemAImpl_xor_u64, 0, xor, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    16641664}
    16651665
     
    18041804    IEMOP_MNEMONIC(cmp_Gv_Ev, "cmp Gv,Ev");
    18051805    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    1806     IEMOP_BODY_BINARY_rv_rm(bRm, iemAImpl_cmp_u16, iemAImpl_cmp_u32, iemAImpl_cmp_u64, 0, 0, cmp, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
     1806    IEMOP_BODY_BINARY_rv_rm_RO(bRm, iemAImpl_cmp_u16, iemAImpl_cmp_u32, iemAImpl_cmp_u64, cmp, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);
    18071807}
    18081808
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h

    r103640 r103718  
    1044610446    const IEMOPBINSIZES * const pImpl = IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_imul_two_eflags);
    1044710447    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    10448     IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, 1, IEM_MC_F_MIN_386, imul, 0);
     10448    IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, IEM_MC_F_MIN_386, imul, 0);
    1044910449}
    1045010450
     
    1095310953    const IEMOPBINSIZES * const pImpl = IEM_SELECT_HOST_OR_FALLBACK(fPopCnt, &s_Native, &s_Fallback);
    1095410954    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    10955     IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, 1, IEM_MC_F_NOT_286_OR_OLDER, popcnt, 0);
     10955    IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, IEM_MC_F_NOT_286_OR_OLDER, popcnt, 0);
    1095610956}
    1095710957
     
    1162811628                                                                            IEM_GET_HOST_CPU_FEATURES(pVCpu)->fBmi1);
    1162911629    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    11630     IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, 1, IEM_MC_F_NOT_286_OR_OLDER, tzcnt, 0);
     11630    IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, IEM_MC_F_NOT_286_OR_OLDER, tzcnt, 0);
    1163111631}
    1163211632
     
    1168311683                                                                            IEM_GET_HOST_CPU_FEATURES(pVCpu)->fBmi1);
    1168411684    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
    11685     IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, 1, IEM_MC_F_NOT_286_OR_OLDER, lzcnt, 0);
     11685    IEMOP_BODY_BINARY_rv_rm(bRm, pImpl->pfnNormalU16, pImpl->pfnNormalU32, pImpl->pfnNormalU64, IEM_MC_F_NOT_286_OR_OLDER, lzcnt, 0);
    1168611686}
    1168711687
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