Changeset 105853 in vbox for trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
- Timestamp:
- Aug 23, 2024 8:36:08 PM (5 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
r105673 r105853 4360 4360 */ 4361 4361 DECL_FORCE_INLINE_THROW(uint32_t) 4362 iemNativeEmitAddGpr32ImmEx(PIEMNATIVEINSTR pCodeBuf, uint32_t off, uint8_t iGprDst, int32_t iAddend )4362 iemNativeEmitAddGpr32ImmEx(PIEMNATIVEINSTR pCodeBuf, uint32_t off, uint8_t iGprDst, int32_t iAddend, uint8_t iGprTmp = UINT8_MAX) 4363 4363 { 4364 4364 #if defined(RT_ARCH_AMD64) … … 4375 4375 pCodeBuf[off++] = RT_BYTE3((uint32_t)iAddend); 4376 4376 pCodeBuf[off++] = RT_BYTE4((uint32_t)iAddend); 4377 RT_NOREF(iGprTmp); 4377 4378 4378 4379 #elif defined(RT_ARCH_ARM64) … … 4386 4387 if (uAbsAddend & 0xfffU) 4387 4388 pCodeBuf[off++] = Armv8A64MkInstrAddSubUImm12(fSub, iGprDst, iGprDst, uAbsAddend & 0xfff, false /*f64Bit*/); 4389 } 4390 else if (iGprTmp != UINT8_MAX) 4391 { 4392 off = iemNativeEmitLoadGpr32ImmEx(pCodeBuf, off, iGprTmp, iAddend); 4393 pCodeBuf[off++] = Armv8A64MkInstrAddReg(iGprDst, iGprDst, iGprTmp, false /*f64Bit*/); 4388 4394 } 4389 4395 else … … 8266 8272 8267 8273 /** 8274 * Helper for marking the current conditional branch as exiting the TB. 8275 * 8276 * This simplifies the state consolidation later when we reach the IEM_MC_ENDIF. 8277 */ 8278 DECL_FORCE_INLINE(void) iemNativeMarkCurCondBranchAsExiting(PIEMRECOMPILERSTATE pReNative) 8279 { 8280 uint8_t idxCondDepth = pReNative->cCondDepth; 8281 if (idxCondDepth) 8282 { 8283 idxCondDepth--; 8284 pReNative->aCondStack[idxCondDepth].afExitTb[pReNative->aCondStack[idxCondDepth].fInElse] = true; 8285 } 8286 } 8287 8288 8289 /** 8268 8290 * Emits a Jcc rel32 / B.cc imm19 to the given label (ASSUMED requiring fixup). 8269 8291 */ … … 8273 8295 { 8274 8296 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8297 8275 8298 #if defined(IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE) && defined(RT_ARCH_AMD64) 8276 8299 /* jcc rel32 */ … … 8380 8403 { 8381 8404 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8405 8406 iemNativeMarkCurCondBranchAsExiting(pReNative); 8407 8382 8408 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 8383 8409 # ifdef RT_ARCH_AMD64 … … 8409 8435 { 8410 8436 Assert(IEMNATIVELABELTYPE_IS_EXIT_REASON(enmExitReason)); 8437 8438 iemNativeMarkCurCondBranchAsExiting(pReNative); 8439 8411 8440 #ifdef IEMNATIVE_WITH_RECOMPILER_PER_CHUNK_TAIL_CODE 8412 8441 # ifdef RT_ARCH_AMD64
Note:
See TracChangeset
for help on using the changeset viewer.