Changeset 106125 in vbox for trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
- Timestamp:
- Sep 23, 2024 10:42:27 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
r106123 r106125 8310 8310 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8311 8311 8312 #if defined( IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64)8312 #if defined(RT_ARCH_AMD64) 8313 8313 /* jcc rel32 */ 8314 8314 pCodeBuf[off++] = 0x0f; … … 8340 8340 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8341 8341 8342 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 8343 # ifdef RT_ARCH_AMD64 8342 #ifdef RT_ARCH_AMD64 8344 8343 off = iemNativeEmitJccTbExitEx(pReNative, iemNativeInstrBufEnsure(pReNative, off, 6), off, enmExitReason, enmCond); 8345 # 8344 #elif defined(RT_ARCH_ARM64) 8346 8345 off = iemNativeEmitJccTbExitEx(pReNative, iemNativeInstrBufEnsure(pReNative, off, 2), off, enmExitReason, enmCond); 8347 # else 8348 # error "Port me!" 8349 # endif 8350 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 8351 return off; 8352 #else 8353 return iemNativeEmitJccToNewLabel(pReNative, off, enmExitReason, 0 /*uData*/, enmCond); 8354 #endif 8346 #else 8347 # error "Port me!" 8348 #endif 8349 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 8350 return off; 8355 8351 } 8356 8352 … … 8425 8421 iemNativeMarkCurCondBranchAsExiting(pReNative); 8426 8422 8427 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 8428 # ifdef RT_ARCH_AMD64 8423 #ifdef RT_ARCH_AMD64 8429 8424 /* jmp rel32 */ 8430 8425 pCodeBuf[off++] = 0xe9; … … 8435 8430 pCodeBuf[off++] = 0xff; 8436 8431 8437 # 8432 #elif defined(RT_ARCH_ARM64) 8438 8433 iemNativeAddTbExitFixup(pReNative, off, enmExitReason); 8439 8434 pCodeBuf[off++] = Armv8A64MkInstrB(-1); 8440 8435 8441 # else 8442 # error "Port me!" 8443 # endif 8444 return off; 8445 8446 #else 8447 uint32_t const idxLabel = iemNativeLabelCreate(pReNative, enmExitReason, UINT32_MAX /*offWhere*/, 0 /*uData*/); 8448 return iemNativeEmitJmpToLabelEx(pReNative, pCodeBuf, off, idxLabel); 8449 #endif 8436 #else 8437 # error "Port me!" 8438 #endif 8439 return off; 8450 8440 } 8451 8441 … … 8462 8452 iemNativeMarkCurCondBranchAsExiting(pReNative); 8463 8453 8464 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 8465 # ifdef RT_ARCH_AMD64 8454 #ifdef RT_ARCH_AMD64 8466 8455 PIEMNATIVEINSTR pCodeBuf = iemNativeInstrBufEnsure(pReNative, off, 6); 8467 8456 … … 8474 8463 pCodeBuf[off++] = 0xff; 8475 8464 8476 # 8465 #elif defined(RT_ARCH_ARM64) 8477 8466 PIEMNATIVEINSTR pCodeBuf = iemNativeInstrBufEnsure(pReNative, off, 1); 8478 8467 iemNativeAddTbExitFixup(pReNative, off, enmExitReason); 8479 8468 pCodeBuf[off++] = Armv8A64MkInstrB(-1); 8480 8469 8481 # else 8482 # error "Port me!" 8483 # endif 8484 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 8485 return off; 8486 8487 #else 8488 return iemNativeEmitJmpToNewLabel(pReNative, off, enmExitReason); 8489 #endif 8470 #else 8471 # error "Port me!" 8472 #endif 8473 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 8474 return off; 8490 8475 } 8491 8476 … … 8587 8572 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8588 8573 8589 #if defined( IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64)8574 #if defined(RT_ARCH_AMD64) 8590 8575 Assert(iBitNo < 64); 8591 8576 uint8_t * const pbCodeBuf = iemNativeInstrBufEnsure(pReNative, off, 5); … … 8638 8623 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8639 8624 8640 #if defined( IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64)8625 #if defined(RT_ARCH_AMD64) 8641 8626 /* test reg32,reg32 / test reg64,reg64 */ 8642 8627 if (f64Bit) … … 8671 8656 uint8_t iGprSrc, bool f64Bit, IEMNATIVELABELTYPE enmExitReason) 8672 8657 { 8673 #if defined( IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64)8658 #if defined(RT_ARCH_AMD64) 8674 8659 off = iemNativeEmitTestIfGprIsNotZeroAndTbExitEx(pReNative, iemNativeInstrBufEnsure(pReNative, off, 3 + 6), 8675 8660 off, iGprSrc, f64Bit, enmExitReason); … … 8695 8680 { 8696 8681 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8697 #if defined( IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64)8682 #if defined(RT_ARCH_AMD64) 8698 8683 /* test reg32,reg32 / test reg64,reg64 */ 8699 8684 if (f64Bit) … … 8728 8713 uint8_t iGprSrc, bool f64Bit, IEMNATIVELABELTYPE enmExitReason) 8729 8714 { 8730 #if defined( IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64)8715 #if defined(RT_ARCH_AMD64) 8731 8716 off = iemNativeEmitTestIfGprIsZeroAndTbExitEx(pReNative, iemNativeInstrBufEnsure(pReNative, off, 3 + 6), 8732 8717 off, iGprSrc, f64Bit, enmExitReason);
Note:
See TracChangeset
for help on using the changeset viewer.