MCPcopy Index your code
hub / github.com/python/cpython / get_uop_cache_depths

Function get_uop_cache_depths

Tools/cases_generator/analyzer.py:1372–1417  ·  view source on GitHub ↗
(uop: Uop)

Source from the content-addressed store, hash-verified

1370
1371
1372def get_uop_cache_depths(uop: Uop) -> Iterator[tuple[int, int, int]]:
1373 if uop.name == "_SPILL_OR_RELOAD":
1374 for inputs in range(MAX_CACHED_REGISTER+1):
1375 for outputs in range(MAX_CACHED_REGISTER+1):
1376 if inputs != outputs:
1377 yield inputs, outputs, inputs
1378 return
1379 if uop.name in ("_DEOPT", "_HANDLE_PENDING_AND_DEOPT", "_EXIT_TRACE", "_DYNAMIC_EXIT"):
1380 for i in range(MAX_CACHED_REGISTER+1):
1381 yield i, 0, 0
1382 return
1383 if uop.name in ("_START_EXECUTOR", "_JUMP_TO_TOP", "_COLD_EXIT"):
1384 yield 0, 0, 0
1385 return
1386 if uop.name == "_ERROR_POP_N":
1387 yield 0, 0, 0
1388 return
1389 ideal_inputs = 0
1390 has_array = False
1391 for item in reversed(uop.stack.inputs):
1392 if item.size:
1393 has_array = True
1394 break
1395 ideal_inputs += 1
1396 ideal_outputs = 0
1397 for item in reversed(uop.stack.outputs):
1398 if item.size:
1399 has_array = True
1400 break
1401 ideal_outputs += 1
1402 if ideal_inputs > MAX_CACHED_REGISTER:
1403 ideal_inputs = MAX_CACHED_REGISTER
1404 if ideal_outputs > MAX_CACHED_REGISTER:
1405 ideal_outputs = MAX_CACHED_REGISTER
1406 at_end = uop.properties.sync_sp or uop.properties.side_exit_at_end
1407 exit_depth = ideal_outputs if at_end else ideal_inputs
1408 if uop.properties.escapes or uop.properties.sync_sp or has_array or is_large(uop):
1409 yield ideal_inputs, ideal_outputs, exit_depth
1410 return
1411 for inputs in range(MAX_CACHED_REGISTER + 1):
1412 outputs = ideal_outputs - ideal_inputs + inputs
1413 if outputs < ideal_outputs:
1414 outputs = ideal_outputs
1415 elif outputs > MAX_CACHED_REGISTER:
1416 continue
1417 yield inputs, outputs, outputs if at_end else inputs
1418
1419
1420def analyze_files(filenames: list[str]) -> Analysis:

Callers 4

uop_cache_infoFunction · 0.90
generate_names_and_flagsFunction · 0.90
generate_uop_idsFunction · 0.90
generate_tier2Function · 0.90

Calls 1

is_largeFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…