Changeset 103718 in vbox
- Timestamp:
- Mar 7, 2024 2:43:55 AM (7 months ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
-
IEMAllInstCommonBodyMacros.h (modified) (4 diffs)
-
IEMAllInstOneByte.cpp.h (modified) (8 diffs)
-
IEMAllInstTwoByte0f.cpp.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstCommonBodyMacros.h
r103678 r103718 95 95 * @note Used both in OneByte and TwoByte0f. 96 96 */ 97 #define IEMOP_BODY_BINARY_rv_rm(a_bRm, a_fnNormalU16, a_fnNormalU32, a_fnNormalU64, a_f ModifiesDstReg, 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) \ 98 98 /* \ 99 99 * If rm is denoting a register, no more instruction bytes. \ … … 148 148 IEM_MC_REF_EFLAGS(pEFlags); \ 149 149 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)); \ 152 151 } IEM_MC_NATIVE_ENDIF(); \ 153 152 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 239 238 IEM_MC_REF_EFLAGS(pEFlags); \ 240 239 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)); \ 243 241 } IEM_MC_NATIVE_ENDIF(); \ 244 242 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 278 276 (void)0 279 277 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 914 914 IEMOP_MNEMONIC2(RM, ADD, add, Gv, Ev, DISOPTYPE_HARMLESS, 0); 915 915 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); 917 917 } 918 918 … … 1044 1044 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 1045 1045 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); 1047 1047 } 1048 1048 … … 1201 1201 IEMOP_MNEMONIC2(RM, ADC, adc, Gv, Ev, DISOPTYPE_HARMLESS, 0); 1202 1202 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); 1204 1204 } 1205 1205 … … 1309 1309 IEMOP_MNEMONIC2(RM, SBB, sbb, Gv, Ev, DISOPTYPE_HARMLESS, 0); 1310 1310 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); 1312 1312 } 1313 1313 … … 1421 1421 IEMOP_VERIFICATION_UNDEFINED_EFLAGS(X86_EFL_AF); 1422 1422 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); 1424 1424 } 1425 1425 … … 1540 1540 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1541 1541 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); 1543 1543 } 1544 1544 … … 1661 1661 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1662 1662 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); 1664 1664 } 1665 1665 … … 1804 1804 IEMOP_MNEMONIC(cmp_Gv_Ev, "cmp Gv,Ev"); 1805 1805 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); 1807 1807 } 1808 1808 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r103640 r103718 10446 10446 const IEMOPBINSIZES * const pImpl = IEMTARGETCPU_EFL_BEHAVIOR_SELECT(g_iemAImpl_imul_two_eflags); 10447 10447 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); 10449 10449 } 10450 10450 … … 10953 10953 const IEMOPBINSIZES * const pImpl = IEM_SELECT_HOST_OR_FALLBACK(fPopCnt, &s_Native, &s_Fallback); 10954 10954 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); 10956 10956 } 10957 10957 … … 11628 11628 IEM_GET_HOST_CPU_FEATURES(pVCpu)->fBmi1); 11629 11629 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); 11631 11631 } 11632 11632 … … 11683 11683 IEM_GET_HOST_CPU_FEATURES(pVCpu)->fBmi1); 11684 11684 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); 11686 11686 } 11687 11687
Note:
See TracChangeset
for help on using the changeset viewer.

