Changeset 103721 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Mar 7, 2024 10:03:58 AM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 162089
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstCommonBodyMacros.h
r103718 r103721 282 282 * @note Used both in OneByte and TwoByte0f. 283 283 */ 284 #define IEMOP_BODY_BINARY_rv_rm_RO(a_bRm, a_ fnNormalU16, a_fnNormalU32, a_fnNormalU64, a_EmitterBasename, a_fNativeArchs) \284 #define IEMOP_BODY_BINARY_rv_rm_RO(a_bRm, a_InsNm, a_fNativeArchs) \ 285 285 /* \ 286 286 * If rm is denoting a register, no more instruction bytes. \ … … 301 301 IEM_MC_LOCAL(uint32_t, uEFlags); \ 302 302 IEM_MC_FETCH_EFLAGS(uEFlags); \ 303 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \303 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 304 304 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 305 305 } IEM_MC_NATIVE_ELSE() { \ … … 308 308 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 309 309 IEM_MC_REF_EFLAGS(pEFlags); \ 310 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \310 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 311 311 } IEM_MC_NATIVE_ENDIF(); \ 312 312 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 325 325 IEM_MC_LOCAL(uint32_t, uEFlags); \ 326 326 IEM_MC_FETCH_EFLAGS(uEFlags); \ 327 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \327 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 328 328 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 329 329 } IEM_MC_NATIVE_ELSE() { \ … … 332 332 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 333 333 IEM_MC_REF_EFLAGS(pEFlags); \ 334 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \334 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 335 335 } IEM_MC_NATIVE_ENDIF(); \ 336 336 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 349 349 IEM_MC_LOCAL(uint32_t, uEFlags); \ 350 350 IEM_MC_FETCH_EFLAGS(uEFlags); \ 351 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \351 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 352 352 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 353 353 } IEM_MC_NATIVE_ELSE() { \ … … 356 356 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 357 357 IEM_MC_REF_EFLAGS(pEFlags); \ 358 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \358 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 359 359 } IEM_MC_NATIVE_ENDIF(); \ 360 360 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 385 385 IEM_MC_LOCAL(uint32_t, uEFlags); \ 386 386 IEM_MC_FETCH_EFLAGS(uEFlags); \ 387 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \387 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 388 388 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 389 389 } IEM_MC_NATIVE_ELSE() { \ … … 392 392 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 393 393 IEM_MC_REF_EFLAGS(pEFlags); \ 394 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \394 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 395 395 } IEM_MC_NATIVE_ENDIF(); \ 396 396 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 411 411 IEM_MC_LOCAL(uint32_t, uEFlags); \ 412 412 IEM_MC_FETCH_EFLAGS(uEFlags); \ 413 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \413 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 414 414 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 415 415 } IEM_MC_NATIVE_ELSE() { \ … … 418 418 IEM_MC_REF_GREG_U32(pu32Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 419 419 IEM_MC_REF_EFLAGS(pEFlags); \ 420 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \420 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 421 421 } IEM_MC_NATIVE_ENDIF(); \ 422 422 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 437 437 IEM_MC_LOCAL(uint32_t, uEFlags); \ 438 438 IEM_MC_FETCH_EFLAGS(uEFlags); \ 439 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \439 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 440 440 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 441 441 } IEM_MC_NATIVE_ELSE() { \ … … 444 444 IEM_MC_REF_GREG_U64(pu64Dst, IEM_GET_MODRM_REG(pVCpu, a_bRm)); \ 445 445 IEM_MC_REF_EFLAGS(pEFlags); \ 446 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \446 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 447 447 } IEM_MC_NATIVE_ENDIF(); \ 448 448 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ -
trunk/src/VBox/VMM/VMMAll/IEMAllInstOneByte.cpp.h
r103719 r103721 620 620 * memory/register as the destination. 621 621 */ 622 #define IEMOP_BODY_BINARY_rm_rv_RO(a_bRm, a_ fnNormalU16, a_fnNormalU32, a_fnNormalU64, a_EmitterBasename, a_fNativeArchs) \622 #define IEMOP_BODY_BINARY_rm_rv_RO(a_bRm, a_InsNm, a_fNativeArchs) \ 623 623 /* \ 624 624 * If rm is denoting a register, no more instruction bytes. \ … … 639 639 IEM_MC_LOCAL(uint32_t, uEFlags); \ 640 640 IEM_MC_FETCH_EFLAGS(uEFlags); \ 641 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \641 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16Src, uEFlags, 16); \ 642 642 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 643 643 } IEM_MC_NATIVE_ELSE() { \ … … 646 646 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 647 647 IEM_MC_REF_EFLAGS(pEFlags); \ 648 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \648 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 649 649 } IEM_MC_NATIVE_ENDIF(); \ 650 650 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 663 663 IEM_MC_LOCAL(uint32_t, uEFlags); \ 664 664 IEM_MC_FETCH_EFLAGS(uEFlags); \ 665 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \665 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32Src, uEFlags, 32); \ 666 666 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 667 667 } IEM_MC_NATIVE_ELSE() { \ … … 670 670 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 671 671 IEM_MC_REF_EFLAGS(pEFlags); \ 672 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \672 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 673 673 } IEM_MC_NATIVE_ENDIF(); \ 674 674 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 687 687 IEM_MC_LOCAL(uint32_t, uEFlags); \ 688 688 IEM_MC_FETCH_EFLAGS(uEFlags); \ 689 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \689 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64Src, uEFlags, 64); \ 690 690 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 691 691 } IEM_MC_NATIVE_ELSE() { \ … … 694 694 IEM_MC_ARG(uint32_t *, pEFlags, 2); \ 695 695 IEM_MC_REF_EFLAGS(pEFlags); \ 696 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \696 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 697 697 } IEM_MC_NATIVE_ENDIF(); \ 698 698 IEM_MC_ADVANCE_RIP_AND_FINISH(); \ … … 727 727 IEM_MC_LOCAL(uint32_t, uEFlags); \ 728 728 IEM_MC_FETCH_EFLAGS(uEFlags); \ 729 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u16Dst, u16SrcEmit, uEFlags, 16); \729 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u16Dst, u16SrcEmit, uEFlags, 16); \ 730 730 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 731 731 } IEM_MC_NATIVE_ELSE() { \ … … 737 737 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 738 738 IEM_MC_FETCH_EFLAGS(EFlags); \ 739 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU16, pu16Dst, u16Src, pEFlags); \739 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u16), pu16Dst, u16Src, pEFlags); \ 740 740 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 741 741 IEM_MC_COMMIT_EFLAGS(EFlags); \ … … 758 758 IEM_MC_LOCAL(uint32_t, uEFlags); \ 759 759 IEM_MC_FETCH_EFLAGS(uEFlags); \ 760 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u32Dst, u32SrcEmit, uEFlags, 32); \760 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u32Dst, u32SrcEmit, uEFlags, 32); \ 761 761 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 762 762 } IEM_MC_NATIVE_ELSE() { \ … … 768 768 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 769 769 IEM_MC_FETCH_EFLAGS(EFlags); \ 770 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU32, pu32Dst, u32Src, pEFlags); \770 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u32), pu32Dst, u32Src, pEFlags); \ 771 771 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 772 772 IEM_MC_COMMIT_EFLAGS(EFlags); \ … … 789 789 IEM_MC_LOCAL(uint32_t, uEFlags); \ 790 790 IEM_MC_FETCH_EFLAGS(uEFlags); \ 791 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_ EmitterBasename,_r_r_efl), u64Dst, u64SrcEmit, uEFlags, 64); \791 IEM_MC_NATIVE_EMIT_4(RT_CONCAT3(iemNativeEmit_,a_InsNm,_r_r_efl), u64Dst, u64SrcEmit, uEFlags, 64); \ 792 792 IEM_MC_COMMIT_EFLAGS(uEFlags); \ 793 793 } IEM_MC_NATIVE_ELSE() { \ … … 799 799 IEM_MC_ARG_LOCAL_EFLAGS( pEFlags, EFlags, 2); \ 800 800 IEM_MC_FETCH_EFLAGS(EFlags); \ 801 IEM_MC_CALL_VOID_AIMPL_3( a_fnNormalU64, pu64Dst, u64Src, pEFlags); \801 IEM_MC_CALL_VOID_AIMPL_3(RT_CONCAT3(iemAImpl_,a_InsNm,_u64), pu64Dst, u64Src, pEFlags); \ 802 802 IEM_MC_MEM_COMMIT_AND_UNMAP_RO(bUnmapInfo); \ 803 803 IEM_MC_COMMIT_EFLAGS(EFlags); \ … … 1842 1842 IEMOP_MNEMONIC(cmp_Ev_Gv, "cmp Ev,Gv"); 1843 1843 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1844 IEMOP_BODY_BINARY_rm_rv_RO(bRm, iemAImpl_cmp_u16, iemAImpl_cmp_u32, iemAImpl_cmp_u64,cmp, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);1844 IEMOP_BODY_BINARY_rm_rv_RO(bRm, cmp, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64); 1845 1845 } 1846 1846 … … 1866 1866 IEMOP_MNEMONIC(cmp_Gv_Ev, "cmp Gv,Ev"); 1867 1867 uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm); 1868 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);1868 IEMOP_BODY_BINARY_rv_rm_RO(bRm, cmp, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64); 1869 1869 } 1870 1870 … … 5539 5539 } 5540 5540 5541 IEMOP_BODY_BINARY_rm_rv_RO(bRm, iemAImpl_test_u16, iemAImpl_test_u32, iemAImpl_test_u64,test, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64);5541 IEMOP_BODY_BINARY_rm_rv_RO(bRm, test, RT_ARCH_VAL_AMD64 | RT_ARCH_VAL_ARM64); 5542 5542 } 5543 5543
Note:
See TracChangeset
for help on using the changeset viewer.