Changeset 106192 in vbox
- Timestamp:
- Oct 1, 2024 12:57:32 PM (4 months ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r106187 r106192 2789 2789 2790 2790 # endif /* defined(IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK) || defined(IEMNATIVE_WITH_SIMD_REG_ALLOCATOR) */ 2791 2792 # ifdef IEMNATIVE_WITH_EFLAGS_POSTPONING 2793 /** 2794 * Debug Info: Record info about emitting a postponed EFLAGS calculation. 2795 */ 2796 DECL_HIDDEN_THROW(void) 2797 iemNativeDbgInfoAddPostponedEFlagsCalc(PIEMRECOMPILERSTATE pReNative, uint32_t off, IEMNATIVE_POSTPONED_EFL_OP_T enmOp, 2798 uint8_t cOpBits, uint8_t idxEmit) 2799 { 2800 iemNativeDbgInfoAddNativeOffset(pReNative, off); 2801 PIEMTBDBGENTRY const pEntry = iemNativeDbgInfoAddNewEntry(pReNative, pReNative->pDbgInfo); 2802 pEntry->PostponedEflCalc.uType = kIemTbDbgEntryType_PostponedEFlagsCalc; 2803 pEntry->PostponedEflCalc.enmOp = (unsigned)enmOp; 2804 pEntry->PostponedEflCalc.cOpBits = cOpBits; 2805 pEntry->PostponedEflCalc.idxEmit = idxEmit; 2806 pEntry->PostponedEflCalc.uUnused = 0; 2807 } 2808 # endif /* IEMNATIVE_WITH_EFLAGS_POSTPONING */ 2791 2809 2792 2810 #endif /* IEMNATIVE_WITH_TB_DEBUG_INFO */ … … 9172 9190 for (; iDbgEntry < cDbgEntries; iDbgEntry++) 9173 9191 { 9174 switch ( pDbgInfo->aEntries[iDbgEntry].Gen.uType)9192 switch ((IEMTBDBGENTRYTYPE)pDbgInfo->aEntries[iDbgEntry].Gen.uType) 9175 9193 { 9176 9194 case kIemTbDbgEntryType_GuestInstruction: … … 9351 9369 # endif 9352 9370 9371 # ifdef IEMNATIVE_WITH_EFLAGS_POSTPONING 9372 case kIemTbDbgEntryType_PostponedEFlagsCalc: 9373 { 9374 const char *pszOp = "!unknown!"; 9375 switch ((IEMNATIVE_POSTPONED_EFL_OP_T)pDbgInfo->aEntries[iDbgEntry].PostponedEflCalc.enmOp) 9376 { 9377 case kIemNativePostponedEflOp_Logical: pszOp = "logical"; break; 9378 case kIemNativePostponedEflOp_Invalid: break; 9379 case kIemNativePostponedEflOp_End: break; 9380 } 9381 pHlp->pfnPrintf(pHlp, " Postponed EFLAGS calc #%u: %s %u bits\n", 9382 pDbgInfo->aEntries[iDbgEntry].PostponedEflCalc.idxEmit, pszOp, 9383 pDbgInfo->aEntries[iDbgEntry].PostponedEflCalc.cOpBits); 9384 continue; 9385 } 9386 # endif 9353 9387 default: 9354 9388 AssertFailed(); 9389 continue; 9355 9390 } 9391 /* Break out of the loop at kIemTbDbgEntryType_NativeOffset. */ 9356 9392 iDbgEntry++; 9357 9393 break; -
trunk/src/VBox/VMM/VMMAll/target-x86/IEMAllN8veEmit-x86.h
r106187 r106192 255 255 pReNative->PostponedEfl.idxReg1 = UINT8_MAX; 256 256 pReNative->PostponedEfl.idxReg2 = UINT8_MAX; 257 #if defined(VBOX_WITH_STATISTICS) || defined(IEMNATIVE_WITH_TB_DEBUG_INFO) 258 STAM_PROFILE_ADD_PERIOD(&pReNative->pVCpu->iem.s.StatNativeEflPostponedEmits, pReNative->PostponedEfl.cEmits); 259 pReNative->PostponedEfl.cEmits = 0; 260 #endif 257 261 } 258 262 } … … 362 366 uint32_t bmExtraTlbMissRegs = 0) 363 367 { 368 #ifdef IEMNATIVE_WITH_TB_DEBUG_INFO 369 iemNativeDbgInfoAddPostponedEFlagsCalc(pReNative, off, pReNative->PostponedEfl.enmOp, pReNative->PostponedEfl.cOpBits, 370 pReNative->PostponedEfl.cEmits); 371 #endif 372 364 373 /* 365 374 * In the TB exit code path we cannot do regular register allocation. Nor … … 459 468 IEMNATIVE_ASSERT_INSTR_BUF_ENSURE(pReNative, off); 460 469 470 #if defined(VBOX_WITH_STATISTICS) || defined(IEMNATIVE_WITH_TB_DEBUG_INFO) 471 pReNative->PostponedEfl.cEmits++; 472 #endif 461 473 return off; 462 474 } -
trunk/src/VBox/VMM/VMMR3/IEMR3.cpp
r106180 r106192 755 755 REG_NATIVE_EFL_GROUP(shift, Shift); 756 756 # undef REG_NATIVE_EFL_GROUP 757 758 STAMR3RegisterF(pVM, &pVCpu->iem.s.StatNativeEflPostponedEmits, STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE, 759 "Postponed EFLAGS calculation emits", "/IEM/CPU%u/re/NativeEFlags/ZZEmits", idCpu); 757 760 758 761 STAMR3RegisterF(pVM, &pVCpu->iem.s.StatNativeLivenessEflCfSkippable, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, "Skippable EFLAGS.CF updating", "/IEM/CPU%u/re/NativeLivenessEFlags/CfSkippable", idCpu); -
trunk/src/VBox/VMM/include/IEMInternal.h
r106179 r106192 1329 1329 1330 1330 /** 1331 * Translation block debug info entry type.1332 */1333 typedef enum IEMTBDBGENTRYTYPE1334 {1335 kIemTbDbgEntryType_Invalid = 0,1336 /** The entry is for marking a native code position.1337 * Entries following this all apply to this position. */1338 kIemTbDbgEntryType_NativeOffset,1339 /** The entry is for a new guest instruction. */1340 kIemTbDbgEntryType_GuestInstruction,1341 /** Marks the start of a threaded call. */1342 kIemTbDbgEntryType_ThreadedCall,1343 /** Marks the location of a label. */1344 kIemTbDbgEntryType_Label,1345 /** Info about a host register shadowing a guest register. */1346 kIemTbDbgEntryType_GuestRegShadowing,1347 #ifdef IEMNATIVE_WITH_SIMD_REG_ALLOCATOR1348 /** Info about a host SIMD register shadowing a guest SIMD register. */1349 kIemTbDbgEntryType_GuestSimdRegShadowing,1350 #endif1351 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING1352 /** Info about a delayed RIP update. */1353 kIemTbDbgEntryType_DelayedPcUpdate,1354 #endif1355 #if defined(IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK) || defined(IEMNATIVE_WITH_SIMD_REG_ALLOCATOR)1356 /** Info about a shadowed guest register becoming dirty. */1357 kIemTbDbgEntryType_GuestRegDirty,1358 /** Info about register writeback/flush oepration. */1359 kIemTbDbgEntryType_GuestRegWriteback,1360 #endif1361 kIemTbDbgEntryType_End1362 } IEMTBDBGENTRYTYPE;1363 1364 /**1365 * Translation block debug info entry.1366 */1367 typedef union IEMTBDBGENTRY1368 {1369 /** Plain 32-bit view. */1370 uint32_t u;1371 1372 /** Generic view for getting at the type field. */1373 struct1374 {1375 /** IEMTBDBGENTRYTYPE */1376 uint32_t uType : 4;1377 uint32_t uTypeSpecific : 28;1378 } Gen;1379 1380 struct1381 {1382 /** kIemTbDbgEntryType_ThreadedCall1. */1383 uint32_t uType : 4;1384 /** Native code offset. */1385 uint32_t offNative : 28;1386 } NativeOffset;1387 1388 struct1389 {1390 /** kIemTbDbgEntryType_GuestInstruction. */1391 uint32_t uType : 4;1392 uint32_t uUnused : 4;1393 /** The IEM_F_XXX flags. */1394 uint32_t fExec : 24;1395 } GuestInstruction;1396 1397 struct1398 {1399 /* kIemTbDbgEntryType_ThreadedCall. */1400 uint32_t uType : 4;1401 /** Set if the call was recompiled to native code, clear if just calling1402 * threaded function. */1403 uint32_t fRecompiled : 1;1404 uint32_t uUnused : 11;1405 /** The threaded call number (IEMTHREADEDFUNCS). */1406 uint32_t enmCall : 16;1407 } ThreadedCall;1408 1409 struct1410 {1411 /* kIemTbDbgEntryType_Label. */1412 uint32_t uType : 4;1413 uint32_t uUnused : 4;1414 /** The label type (IEMNATIVELABELTYPE). */1415 uint32_t enmLabel : 8;1416 /** The label data. */1417 uint32_t uData : 16;1418 } Label;1419 1420 struct1421 {1422 /* kIemTbDbgEntryType_GuestRegShadowing. */1423 uint32_t uType : 4;1424 uint32_t uUnused : 4;1425 /** The guest register being shadowed (IEMNATIVEGSTREG). */1426 uint32_t idxGstReg : 8;1427 /** The host new register number, UINT8_MAX if dropped. */1428 uint32_t idxHstReg : 8;1429 /** The previous host register number, UINT8_MAX if new. */1430 uint32_t idxHstRegPrev : 8;1431 } GuestRegShadowing;1432 1433 #ifdef IEMNATIVE_WITH_SIMD_REG_ALLOCATOR1434 struct1435 {1436 /* kIemTbDbgEntryType_GuestSimdRegShadowing. */1437 uint32_t uType : 4;1438 uint32_t uUnused : 4;1439 /** The guest register being shadowed (IEMNATIVEGSTSIMDREG). */1440 uint32_t idxGstSimdReg : 8;1441 /** The host new register number, UINT8_MAX if dropped. */1442 uint32_t idxHstSimdReg : 8;1443 /** The previous host register number, UINT8_MAX if new. */1444 uint32_t idxHstSimdRegPrev : 8;1445 } GuestSimdRegShadowing;1446 #endif1447 1448 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING1449 struct1450 {1451 /* kIemTbDbgEntryType_DelayedPcUpdate. */1452 uint32_t uType : 4;1453 /** Number of instructions skipped. */1454 uint32_t cInstrSkipped : 8;1455 /* The instruction offset added to the program counter. */1456 int32_t offPc : 20;1457 } DelayedPcUpdate;1458 #endif1459 1460 #if defined(IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK) || defined(IEMNATIVE_WITH_SIMD_REG_ALLOCATOR)1461 struct1462 {1463 /* kIemTbDbgEntryType_GuestRegDirty. */1464 uint32_t uType : 4;1465 uint32_t uUnused : 11;1466 /** Flag whether this is about a SIMD (true) or general (false) register. */1467 uint32_t fSimdReg : 1;1468 /** The guest register index being marked as dirty. */1469 uint32_t idxGstReg : 8;1470 /** The host register number this register is shadowed in .*/1471 uint32_t idxHstReg : 8;1472 } GuestRegDirty;1473 1474 struct1475 {1476 /* kIemTbDbgEntryType_GuestRegWriteback. */1477 uint32_t uType : 4;1478 /** Flag whether this is about a SIMD (true) or general (false) register flush. */1479 uint32_t fSimdReg : 1;1480 /** The mask shift. */1481 uint32_t cShift : 2;1482 /** The guest register mask being written back. */1483 uint32_t fGstReg : 25;1484 } GuestRegWriteback;1485 #endif1486 1487 } IEMTBDBGENTRY;1488 AssertCompileSize(IEMTBDBGENTRY, sizeof(uint32_t));1489 /** Pointer to a debug info entry. */1490 typedef IEMTBDBGENTRY *PIEMTBDBGENTRY;1491 /** Pointer to a const debug info entry. */1492 typedef IEMTBDBGENTRY const *PCIEMTBDBGENTRY;1493 1494 /**1495 * Translation block debug info.1496 */1497 typedef struct IEMTBDBG1498 {1499 /** This is the flat PC corresponding to IEMTB::GCPhysPc. */1500 RTGCPTR FlatPc;1501 /** Number of entries in aEntries. */1502 uint32_t cEntries;1503 /** The offset of the last kIemTbDbgEntryType_NativeOffset record. */1504 uint32_t offNativeLast;1505 /** Debug info entries. */1506 RT_FLEXIBLE_ARRAY_EXTENSION1507 IEMTBDBGENTRY aEntries[RT_FLEXIBLE_ARRAY];1508 } IEMTBDBG;1509 /** Pointer to TB debug info. */1510 typedef IEMTBDBG *PIEMTBDBG;1511 /** Pointer to const TB debug info. */1512 typedef IEMTBDBG const *PCIEMTBDBG;1513 1514 1515 /**1516 1331 * Translation block. 1517 1332 * … … 1596 1411 /** Native recompilation debug info if enabled. 1597 1412 * This is only generated by the native recompiler. */ 1598 PIEMTBDBGpDbgInfo;1413 struct IEMTBDBG *pDbgInfo; 1599 1414 /** For threaded TBs and natives when debug info is disabled, this is the flat 1600 1415 * PC corresponding to GCPhysPc. */ 1601 RTGCPTR FlatPc;1416 RTGCPTR FlatPc; 1602 1417 }; 1603 1418 … … 2385 2200 STAMCOUNTER StatNativeEflTotalShift; 2386 2201 2202 /** Native recompiler: Number of emits per postponement. */ 2203 STAMPROFILE StatNativeEflPostponedEmits; 2204 2387 2205 /** Native recompiler: Number of opportunities to skip EFLAGS.CF updating. */ 2388 2206 STAMCOUNTER StatNativeLivenessEflCfSkippable; … … 2556 2374 2557 2375 #ifdef IEM_WITH_TLB_TRACE 2558 uint64_t au64Padding[ 5];2376 uint64_t au64Padding[1]; 2559 2377 #else 2560 uint64_t au64Padding[ 7];2378 uint64_t au64Padding[3]; 2561 2379 #endif 2562 2380 -
trunk/src/VBox/VMM/include/IEMN8veRecompiler.h
r106187 r106192 1232 1232 1233 1233 /** 1234 * Translation block debug info entry type. 1235 */ 1236 typedef enum IEMTBDBGENTRYTYPE 1237 { 1238 kIemTbDbgEntryType_Invalid = 0, 1239 /** The entry is for marking a native code position. 1240 * Entries following this all apply to this position. */ 1241 kIemTbDbgEntryType_NativeOffset, 1242 /** The entry is for a new guest instruction. */ 1243 kIemTbDbgEntryType_GuestInstruction, 1244 /** Marks the start of a threaded call. */ 1245 kIemTbDbgEntryType_ThreadedCall, 1246 /** Marks the location of a label. */ 1247 kIemTbDbgEntryType_Label, 1248 /** Info about a host register shadowing a guest register. */ 1249 kIemTbDbgEntryType_GuestRegShadowing, 1250 #ifdef IEMNATIVE_WITH_SIMD_REG_ALLOCATOR 1251 /** Info about a host SIMD register shadowing a guest SIMD register. */ 1252 kIemTbDbgEntryType_GuestSimdRegShadowing, 1253 #endif 1254 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 1255 /** Info about a delayed RIP update. */ 1256 kIemTbDbgEntryType_DelayedPcUpdate, 1257 #endif 1258 #if defined(IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK) || defined(IEMNATIVE_WITH_SIMD_REG_ALLOCATOR) 1259 /** Info about a shadowed guest register becoming dirty. */ 1260 kIemTbDbgEntryType_GuestRegDirty, 1261 /** Info about register writeback/flush oepration. */ 1262 kIemTbDbgEntryType_GuestRegWriteback, 1263 #endif 1264 #ifdef IEMNATIVE_WITH_EFLAGS_POSTPONING 1265 /** Info about a delayed EFLAGS calculation. */ 1266 kIemTbDbgEntryType_PostponedEFlagsCalc, 1267 #endif 1268 kIemTbDbgEntryType_End 1269 } IEMTBDBGENTRYTYPE; 1270 1271 /** 1272 * Translation block debug info entry. 1273 */ 1274 typedef union IEMTBDBGENTRY 1275 { 1276 /** Plain 32-bit view. */ 1277 uint32_t u; 1278 1279 /** Generic view for getting at the type field. */ 1280 struct 1281 { 1282 /** IEMTBDBGENTRYTYPE */ 1283 uint32_t uType : 4; 1284 uint32_t uTypeSpecific : 28; 1285 } Gen; 1286 1287 struct 1288 { 1289 /** kIemTbDbgEntryType_ThreadedCall1. */ 1290 uint32_t uType : 4; 1291 /** Native code offset. */ 1292 uint32_t offNative : 28; 1293 } NativeOffset; 1294 1295 struct 1296 { 1297 /** kIemTbDbgEntryType_GuestInstruction. */ 1298 uint32_t uType : 4; 1299 uint32_t uUnused : 4; 1300 /** The IEM_F_XXX flags. */ 1301 uint32_t fExec : 24; 1302 } GuestInstruction; 1303 1304 struct 1305 { 1306 /* kIemTbDbgEntryType_ThreadedCall. */ 1307 uint32_t uType : 4; 1308 /** Set if the call was recompiled to native code, clear if just calling 1309 * threaded function. */ 1310 uint32_t fRecompiled : 1; 1311 uint32_t uUnused : 11; 1312 /** The threaded call number (IEMTHREADEDFUNCS). */ 1313 uint32_t enmCall : 16; 1314 } ThreadedCall; 1315 1316 struct 1317 { 1318 /* kIemTbDbgEntryType_Label. */ 1319 uint32_t uType : 4; 1320 uint32_t uUnused : 4; 1321 /** The label type (IEMNATIVELABELTYPE). */ 1322 uint32_t enmLabel : 8; 1323 /** The label data. */ 1324 uint32_t uData : 16; 1325 } Label; 1326 1327 struct 1328 { 1329 /* kIemTbDbgEntryType_GuestRegShadowing. */ 1330 uint32_t uType : 4; 1331 uint32_t uUnused : 4; 1332 /** The guest register being shadowed (IEMNATIVEGSTREG). */ 1333 uint32_t idxGstReg : 8; 1334 /** The host new register number, UINT8_MAX if dropped. */ 1335 uint32_t idxHstReg : 8; 1336 /** The previous host register number, UINT8_MAX if new. */ 1337 uint32_t idxHstRegPrev : 8; 1338 } GuestRegShadowing; 1339 1340 #ifdef IEMNATIVE_WITH_SIMD_REG_ALLOCATOR 1341 struct 1342 { 1343 /* kIemTbDbgEntryType_GuestSimdRegShadowing. */ 1344 uint32_t uType : 4; 1345 uint32_t uUnused : 4; 1346 /** The guest register being shadowed (IEMNATIVEGSTSIMDREG). */ 1347 uint32_t idxGstSimdReg : 8; 1348 /** The host new register number, UINT8_MAX if dropped. */ 1349 uint32_t idxHstSimdReg : 8; 1350 /** The previous host register number, UINT8_MAX if new. */ 1351 uint32_t idxHstSimdRegPrev : 8; 1352 } GuestSimdRegShadowing; 1353 #endif 1354 1355 #ifdef IEMNATIVE_WITH_DELAYED_PC_UPDATING 1356 struct 1357 { 1358 /* kIemTbDbgEntryType_DelayedPcUpdate. */ 1359 uint32_t uType : 4; 1360 /** Number of instructions skipped. */ 1361 uint32_t cInstrSkipped : 8; 1362 /* The instruction offset added to the program counter. */ 1363 int32_t offPc : 20; 1364 } DelayedPcUpdate; 1365 #endif 1366 1367 #if defined(IEMNATIVE_WITH_DELAYED_REGISTER_WRITEBACK) || defined(IEMNATIVE_WITH_SIMD_REG_ALLOCATOR) 1368 struct 1369 { 1370 /* kIemTbDbgEntryType_GuestRegDirty. */ 1371 uint32_t uType : 4; 1372 uint32_t uUnused : 11; 1373 /** Flag whether this is about a SIMD (true) or general (false) register. */ 1374 uint32_t fSimdReg : 1; 1375 /** The guest register index being marked as dirty. */ 1376 uint32_t idxGstReg : 8; 1377 /** The host register number this register is shadowed in .*/ 1378 uint32_t idxHstReg : 8; 1379 } GuestRegDirty; 1380 1381 struct 1382 { 1383 /* kIemTbDbgEntryType_GuestRegWriteback. */ 1384 uint32_t uType : 4; 1385 /** Flag whether this is about a SIMD (true) or general (false) register flush. */ 1386 uint32_t fSimdReg : 1; 1387 /** The mask shift. */ 1388 uint32_t cShift : 2; 1389 /** The guest register mask being written back. */ 1390 uint32_t fGstReg : 25; 1391 } GuestRegWriteback; 1392 #endif 1393 1394 #ifdef IEMNATIVE_WITH_EFLAGS_POSTPONING 1395 struct 1396 { 1397 /* kIemTbDbgEntryType_PostponedEFlagsCalc. */ 1398 uint32_t uType : 4; 1399 /** The EFLAGS operation (IEMNATIVE_POSTPONED_EFL_OP_T). */ 1400 uint32_t enmOp : 4; 1401 /** The mask shift. */ 1402 uint32_t cOpBits : 8; 1403 /** The emit instance number (0-based). */ 1404 uint32_t idxEmit : 8; 1405 /** Unused. */ 1406 uint32_t uUnused : 8; 1407 } PostponedEflCalc; 1408 #endif 1409 } IEMTBDBGENTRY; 1410 AssertCompileSize(IEMTBDBGENTRY, sizeof(uint32_t)); 1411 /** Pointer to a debug info entry. */ 1412 typedef IEMTBDBGENTRY *PIEMTBDBGENTRY; 1413 /** Pointer to a const debug info entry. */ 1414 typedef IEMTBDBGENTRY const *PCIEMTBDBGENTRY; 1415 1416 /** 1417 * Translation block debug info. 1418 */ 1419 typedef struct IEMTBDBG 1420 { 1421 /** This is the flat PC corresponding to IEMTB::GCPhysPc. */ 1422 RTGCPTR FlatPc; 1423 /** Number of entries in aEntries. */ 1424 uint32_t cEntries; 1425 /** The offset of the last kIemTbDbgEntryType_NativeOffset record. */ 1426 uint32_t offNativeLast; 1427 /** Debug info entries. */ 1428 RT_FLEXIBLE_ARRAY_EXTENSION 1429 IEMTBDBGENTRY aEntries[RT_FLEXIBLE_ARRAY]; 1430 } IEMTBDBG; 1431 /** Pointer to TB debug info. */ 1432 typedef IEMTBDBG *PIEMTBDBG; 1433 /** Pointer to const TB debug info. */ 1434 typedef IEMTBDBG const *PCIEMTBDBG; 1435 1436 /** 1234 1437 * Guest registers that can be shadowed in GPRs. 1235 1438 * … … 1847 2050 * UINT8_MAX if not in use. */ 1848 2051 uint8_t idxReg2; 2052 # if defined(VBOX_WITH_STATISTICS) || defined(IEMNATIVE_WITH_TB_DEBUG_INFO) 2053 /** Number of times the delayed calculation was emitted. */ 2054 uint8_t cEmits; 2055 # endif 1849 2056 } PostponedEfl; 1850 2057 #endif … … 2000 2207 DECL_HIDDEN_THROW(void) iemNativeDbgInfoAddDelayedPcUpdate(PIEMRECOMPILERSTATE pReNative, 2001 2208 uint64_t offPc, uint32_t cInstrSkipped); 2209 # ifdef IEMNATIVE_WITH_EFLAGS_POSTPONING 2210 DECL_HIDDEN_THROW(void) iemNativeDbgInfoAddPostponedEFlagsCalc(PIEMRECOMPILERSTATE pReNative, uint32_t off, 2211 IEMNATIVE_POSTPONED_EFL_OP_T enmOp, uint8_t cOpBits, 2212 uint8_t idxInstance); 2213 # endif 2002 2214 #endif /* IEMNATIVE_WITH_TB_DEBUG_INFO */ 2003 2215
Note:
See TracChangeset
for help on using the changeset viewer.