digraph ipu_stack_package_flow {
  graph [rankdir=LR, bgcolor="white", fontname="DejaVu Sans", fontsize=18,
         label="IPU stack package build/run call graph — overview (148 functions)", labelloc=t, labeljust=l, pad=0.25, nodesep=0.35, ranksep=0.9, newrank=true, overlap=false, splines=polyline, outputorder=edgesfirst];
  node [fontname="DejaVu Sans", fontsize=9, style="rounded,filled", color="#52606d", penwidth=0.8];
  edge [fontname="DejaVu Sans", fontsize=7, color="#52606d", arrowsize=0.55, penwidth=0.8];
  build_entry [label="package build entry", shape=octagon, fillcolor="#cfe2ff", penwidth=1.4];
  run_entry [label="ipu_cli::main\nCommand::HostRun arm", shape=octagon, fillcolor="#d5f5e3", penwidth=1.4];
  subgraph cluster_ipu_codegen { label="ipu_codegen"; color="#d9e8fb"; style="rounded";
    f1 [label="ipu_codegen::config::HardwareTarget::cost_model", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn cost_model(self) -> Ipu21CostModel — crates/ipu-codegen/src/config.rs:223"];
    f2 [label="ipu_codegen::config::HardwareTarget::memory_constraints", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn memory_constraints(self) -> HardwareMemoryConstraints — crates/ipu-codegen/src/config.rs:228"];
    f0 [label="ipu_codegen::config::PlannerSearchDomain::active_tile_counts", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn active_tile_counts<'a>( &self, capacity: u16, shapes: impl IntoIterator<Item = &'a TensorShape>, ) -> Vec<u16> — crates/ipu-codegen/src/config.rs:145"];
    f3 [label="ipu_codegen::config::ProfilingConfig::records_overall_time", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn records_overall_time(self) -> bool — crates/ipu-codegen/src/config.rs:244"];
    f4 [label="ipu_codegen::config::ProfilingConfig::records_steps", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn records_steps(self) -> bool — crates/ipu-codegen/src/config.rs:247"];
    f5 [label="ipu_codegen::cost::CostEstimate::sequence", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn sequence(self, next: Self) -> Self — crates/ipu-codegen/src/cost.rs:171"];
    f6 [label="ipu_codegen::cost::MemoizedCostModel::new", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn new(inner: &'a C, spatial_capacity: u16) -> Self — crates/ipu-codegen/src/cost.rs:263"];
    f7 [label="ipu_codegen::emitter::CodegenOptions::default", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn default() -> Self — crates/ipu-codegen/src/emitter.rs:70"];
    f8 [label="ipu_codegen::emitter::emit", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn emit( program: &TileProgram, symbols: &BTreeMap<String, u32>, host: &HostProgram, options: &CodegenOptions, ) -> Result<GeneratedProgram> — crates/ipu-codegen/src/emitter.rs:86"];
    f9 [label="ipu_codegen::estimate::region_peak_memory", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn region_peak_memory( initial: &[MidValueId], operations: &[MidOperation], outputs: &[MidValueId], values: &[MidValue], constraints: crate::HardwareMemoryConstraints, ) -> MemoryPeaks — crates/ipu-codegen/src/estimate.rs:869"];
    f11 [label="ipu_codegen::exchange::PhaseDiagnostics::emit", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn emit( &self, phase: u32, provenance: &crate::WorkProvenance, horizon: u32, tile_availability: &[TileAvailability], builder: &PhaseProgramBuilder, ) — crates/ipu-codegen/src/exchange.rs:801"];
    f10 [label="ipu_codegen::exchange::lower_exchanges", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn lower_exchanges( program: &LowProgram, placement: &Placement, topology: &Topology, options: ExchangeLoweringOptions, ) -> Result<LoweredExchanges, ExchangeLoweringError> — crates/ipu-codegen/src/exchange.rs:320"];
    f12 [label="ipu_codegen::graph::ComputeGraph::inputs", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn inputs(&self) -> &[GraphInput] — crates/ipu-codegen/src/graph.rs:253"];
    f13 [label="ipu_codegen::graph::ComputeGraph::operations", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn operations(&self) -> &[Operation] — crates/ipu-codegen/src/graph.rs:261"];
    f14 [label="ipu_codegen::graph::ComputeGraph::outputs", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn outputs(&self) -> &[ValueId] — crates/ipu-codegen/src/graph.rs:265"];
    f15 [label="ipu_codegen::graph::ComputeGraph::value_shapes", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn value_shapes(&self) -> &BTreeMap<ValueId, TensorShape> — crates/ipu-codegen/src/graph.rs:273"];
    f16 [label="ipu_codegen::host::plan", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn plan( weights: &[Binding], inputs: &[Binding], outputs: &[Binding], execution_tiles: u16, base: u32, data_ranges: &[Vec<AddressRegion>], ) -> PackageBuildResult<HostPackagePlan> — crates/ipu-codegen/src/host.rs:55"];
    f18 [label="ipu_codegen::ir::MidOperation::operator_plan", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn operator_plan(&self) -> Option<&OperatorPlan> — crates/ipu-codegen/src/ir.rs:53"];
    f17 [label="ipu_codegen::ir::MidValueId::index", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="pub const fn index(self) -> u32 — crates/ipu-codegen/src/ir.rs:12"];
    f21 [label="ipu_codegen::kernel::KernelBuildPlan::from_program", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// Derives device objects from the finalized schedule, so row variants are /// compiler specializations rather than a fixed collection of binaries. pub fn from_program(program: &LowProgram) -> Result<Self, KernelAbiError> — crates/ipu-codegen/src/kernel.rs:197"];
    f19 [label="ipu_codegen::kernel::RearrangeTarget::codelet_index", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="const fn codelet_index(self) -> u32 — crates/ipu-codegen/src/kernel.rs:113"];
    f23 [label="ipu_codegen::kernel::UnpackSource::codelet_index", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="const fn codelet_index(self) -> u32 — crates/ipu-codegen/src/kernel.rs:89"];
    f22 [label="ipu_codegen::kernel::collect_kernels", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn collect_kernels( program: &LowProgram, tile: &TileWorkList, rows: &mut BTreeMap<(Precision, GemmWeightLoad, u32, u32), BTreeSet<u32>>, gelu: &mut bool, reduction_add: &mut bool, rearrangements: &mut BTreeSet<(RearrangeTarget, u32, u32, u32, u32)>, unpacks: &mut BTreeSet<(UnpackSource, u32, u32, u32, u32)>, attention: &mut BTreeSet<AttentionKernelShape>, attention_stages: &mut Vec<(TileKernelSpec, u32)>, ) -> Result<(), KernelAbiError> — crates/ipu-codegen/src/kernel.rs:887"];
    f20 [label="ipu_codegen::kernel::specialized_gemm_symbol", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn specialized_gemm_symbol( prefix: &str, mode: GemmKernelMode, weight_suffix: &str, inner_block: u32, output_columns: u32, size: &str, small_rows: u32, large_rows: u32, ) -> String — crates/ipu-codegen/src/kernel.rs:176"];
    f24 [label="ipu_codegen::layout::Layout::row_sharded", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="pub fn row_sharded(tile_count: u16) -> Self — crates/ipu-codegen/src/layout.rs:296"];
    f26 [label="ipu_codegen::low::format", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="fn format(tiles: u16) -> TensorFormat — crates/ipu-codegen/src/low.rs:5927"];
    f25 [label="ipu_codegen::low::lower_to_tiles", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn lower_to_tiles(graph: &MidGraph, config: &PipelineConfig) -> LowLoweringResult<LowProgram> — crates/ipu-codegen/src/low.rs:454"];
    f27 [label="ipu_codegen::memory::TileMemoryMap::allocate", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn allocate( &mut self, request: MemoryRequest, ) -> Result<MemoryAllocation, MemoryLayoutError> — crates/ipu-codegen/src/memory.rs:118"];
    f28 [label="ipu_codegen::memory::TileMemoryMap::free_ranges", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn free_ranges(&self, bounds: AddressRegion) -> Vec<AddressRegion> — crates/ipu-codegen/src/memory.rs:164"];
    f30 [label="ipu_codegen::memory::TileMemoryMap::new", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn new() -> Self — crates/ipu-codegen/src/memory.rs:71"];
    f29 [label="ipu_codegen::memory::TileMemoryMap::next_free", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn next_free( &self, start: u32, bounds: AddressRegion, alignment: u32, name: &'static str, ) -> Result<u32, MemoryLayoutError> — crates/ipu-codegen/src/memory.rs:175"];
    f31 [label="ipu_codegen::memory::TileMemoryMap::reserve", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn reserve( &mut self, name: &'static str, range: AddressRegion, ) -> Result<MemoryAllocation, MemoryLayoutError> — crates/ipu-codegen/src/memory.rs:82"];
    f36 [label="ipu_codegen::mid::LoweringState::get", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="fn get(&self, id: MidValueId) -> &MidValue — crates/ipu-codegen/src/mid.rs:648"];
    f35 [label="ipu_codegen::mid::LoweringState::value", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn value(&mut self, origin: ValueId, tensor_type: TensorType) -> MidValueId — crates/ipu-codegen/src/mid.rs:627"];
    f33 [label="ipu_codegen::mid::format", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="fn format(precision: Precision, layout: Layout) -> TensorFormat — crates/ipu-codegen/src/mid.rs:3733"];
    f32 [label="ipu_codegen::mid::lookup", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn lookup(values: &BTreeMap<ValueId, MidValueId>, value: ValueId) -> LoweringResult<MidValueId> — crates/ipu-codegen/src/mid.rs:3663"];
    f34 [label="ipu_codegen::mid::lower_finalists", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn lower_finalists( graph: &ComputeGraph, config: &PipelineConfig, costs: &impl CostModel, finalist_count: usize, ) -> LoweringResult<Vec<MidGraph>> — crates/ipu-codegen/src/mid.rs:442"];
    f37 [label="ipu_codegen::mid::plan_region_frontier", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn plan_region_frontier( source: &[Operation], required_outputs: &[ValueId], values: &mut BTreeMap<ValueId, MidValueId>, shapes: &BTreeMap<ValueId, TensorShape>, graph: &ComputeGraph, config: &PipelineConfig, costs: &impl CostModel, state: &mut LoweringState, constraints: &RegionPlanningConstraints, ) -> LoweringResult<Vec<BeamBranch>> — crates/ipu-codegen/src/mid.rs:817"];
    f50 [label="ipu_codegen::package::CompiledTensor::binding", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn binding(&self) -> PackageBuildResult<Binding> — crates/ipu-codegen/src/package.rs:2085"];
    f42 [label="ipu_codegen::package::active_topology", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn active_topology(tile_count: u16) -> PackageBuildResult<Topology> — crates/ipu-codegen/src/package.rs:1438"];
    f39 [label="ipu_codegen::package::add_generated_debug_map", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn add_generated_debug_map( application: &mut Application, physical_tile: u32, code_address: u32, generated: &GeneratedProgram, ) -> PackageBuildResult<()> — crates/ipu-codegen/src/package.rs:1381"];
    f38 [label="ipu_codegen::package::add_linked_debug_map", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn add_linked_debug_map( application: &mut Application, linked: &LinkedImage, ) -> PackageBuildResult<()> — crates/ipu-codegen/src/package.rs:1348"];
    f55 [label="ipu_codegen::package::build_package", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn build_package( graph: &ComputeGraph, config: &PackageConfig, ) -> PackageBuildResult<CompiledPackage> — crates/ipu-codegen/src/package.rs:515"];
    f58 [label="ipu_codegen::package::build_package_artifacts", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn build_package_artifacts( graph: &ComputeGraph, config: &PackageConfig, diagnostic_checkpoints: bool, ) -> PackageBuildResult<(CompiledPackage, MidGraph, LowProgram)> — crates/ipu-codegen/src/package.rs:621"];
    f60 [label="ipu_codegen::package::build_package_from_objects", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn build_package_from_objects( mid: &MidGraph, program: &LowProgram, config: &PackageConfig, objects: &[Vec<u8>], kernel_plan: &KernelBuildPlan, ) -> PackageBuildResult<CompiledPackage> — crates/ipu-codegen/src/package.rs:743"];
    f40 [label="ipu_codegen::package::build_phase", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn build_phase<T>( phase: &'static str, build: impl FnOnce() -> PackageBuildResult<T>, ) -> PackageBuildResult<T> — crates/ipu-codegen/src/package.rs:1410"];
    f43 [label="ipu_codegen::package::build_tile", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn build_tile( physical_tile: u32, logical_tile: u32, generated: &GeneratedProgram, host_segments: &[Segment], context: &TileBuildContext<'_>, ) -> PackageBuildResult<TileImage> — crates/ipu-codegen/src/package.rs:1454"];
    f57 [label="ipu_codegen::package::compiled_graph_tensors", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn compiled_graph_tensors( mid: &MidGraph, low: &LowProgram, placement: &crate::Placement, topology: &Topology, ) -> PackageBuildResult<(Vec<CompiledTensor>, Vec<CompiledTensor>)> — crates/ipu-codegen/src/package.rs:583"];
    f46 [label="ipu_codegen::package::cycle_binding", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn cycle_binding(name: &str, address: u32, tile_count: u16, topology: &Topology) -> Binding — crates/ipu-codegen/src/package.rs:1630"];
    f48 [label="ipu_codegen::package::instrument_profile", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn instrument_profile( program: &LowProgram, exchanges: &[crate::PhysicalExchangePhase], logical_tile: u16, physical_tile: u32, tile_program: &mut crate::TileProgram, address: u32, ) -> PackageBuildResult<TileProfilePlan> — crates/ipu-codegen/src/package.rs:1696"];
    f54 [label="ipu_codegen::package::invalid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn invalid(message: impl Into<String>) -> PackageBuildError — crates/ipu-codegen/src/package.rs:2171"];
    f44 [label="ipu_codegen::package::link_runtime", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn link_runtime( objects: &[Vec<u8>], externals: HashMap<String, u32>, kernel_plan: &KernelBuildPlan, retained_runtime: &[String], ) -> PackageBuildResult<LinkedImage> — crates/ipu-codegen/src/package.rs:1527"];
    f52 [label="ipu_codegen::package::linked_end", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn linked_end(linked: &LinkedImage) -> PackageBuildResult<u32> — crates/ipu-codegen/src/package.rs:2146"];
    f56 [label="ipu_codegen::package::package_precisions", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn package_precisions(mid: &MidGraph) -> BTreeMap<ValueId, Precision> — crates/ipu-codegen/src/package.rs:576"];
    f47 [label="ipu_codegen::package::profile_binding", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn profile_binding( program: &LowProgram, physical_to_logical: &[u16], address: u32, ) -> PackageBuildResult<Binding> — crates/ipu-codegen/src/package.rs:1650"];
    f49 [label="ipu_codegen::package::profile_step_count", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn profile_step_count(program: &LowProgram, tile: &crate::TileWorkList) -> usize — crates/ipu-codegen/src/package.rs:1814"];
    f53 [label="ipu_codegen::package::reserve_linked_image", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn reserve_linked_image( memory: &mut TileMemoryMap, linked: &LinkedImage, name: &'static str, ) -> PackageBuildResult<()> — crates/ipu-codegen/src/package.rs:2156"];
    f45 [label="ipu_codegen::package::runtime_retained_symbols", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn runtime_retained_symbols(program: &LowProgram, config: &PackageConfig) -> Vec<String> — crates/ipu-codegen/src/package.rs:1553"];
    f51 [label="ipu_codegen::package::runtime_symbols", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn runtime_symbols( physical_tile: u32, program_address: u32, host_staging_address: u32, ) -> PackageBuildResult<HashMap<String, u32>> — crates/ipu-codegen/src/package.rs:2121"];
    f59 [label="ipu_codegen::package::select_scheduled_finalist", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn select_scheduled_finalist( finalists: Vec<MidGraph>, planning: &PipelineConfig, ) -> PackageBuildResult<(MidGraph, LowProgram)> — crates/ipu-codegen/src/package.rs:673"];
    f41 [label="ipu_codegen::package::validate_tile_count", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn validate_tile_count(tile_count: u32) -> PackageBuildResult<()> — crates/ipu-codegen/src/package.rs:1427"];
    f61 [label="ipu_codegen::place::place", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn place(program: &LowProgram) -> Result<Placement, PlacementError> — crates/ipu-codegen/src/place.rs:73"];
    f62 [label="ipu_codegen::place::place_with_standard_ranges", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn place_with_standard_ranges( program: &LowProgram, standard_ranges: &[AddressRegion], ) -> Result<Placement, PlacementError> — crates/ipu-codegen/src/place.rs:83"];
    f63 [label="ipu_codegen::tile::TileProgramLowering::exchange_code_end", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn exchange_code_end(&self) -> u32 — crates/ipu-codegen/src/tile.rs:128"];
    f64 [label="ipu_codegen::tile::TileProgramLowering::lower_tile", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn lower_tile(&self, tile: u16) -> Result<TileProgram, TileLoweringError> — crates/ipu-codegen/src/tile.rs:132"];
    f66 [label="ipu_codegen::tile::TileProgramLowering::new", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn new( program: &'a LowProgram, placement: &'a Placement, exchanges: &'a [PhysicalExchangePhase], kernels: &'a KernelBuildPlan, exchange_code_base: u32, execution_tile_count: u16, validate_exchange_placement: bool, ) -> Result<Self, TileLoweringError> — crates/ipu-codegen/src/tile.rs:82"];
    f65 [label="ipu_codegen::tile::compact_exchange_table_bytes", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn compact_exchange_table_bytes( exchanges: &[PhysicalExchangePhase], execution_tile_count: u16, scheduled_tile_count: u16, ) -> Result<u32, TileLoweringError> — crates/ipu-codegen/src/tile.rs:444"];
  }
  subgraph cluster_ipu_driver { label="ipu_driver"; color="#f9dfc5"; style="rounded";
    f76 [label="ipu_driver::BufferAttachment::new", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn new( device: &'a Device, index: u32, address: *mut u8, size: usize, ) -> Result<Self, DriverError> — crates/ipu-driver/src/lib.rs:1166"];
    f115 [label="ipu_driver::Device::attach_buffer", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn attach_buffer( &self, index: u32, address: *mut u8, size: usize, ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:966"];
    f69 [label="ipu_driver::Device::check_offset", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn check_offset(&self, offset: u32) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1037"];
    f109 [label="ipu_driver::Device::clear_host_sync_marks", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn clear_host_sync_marks(&self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:428"];
    f117 [label="ipu_driver::Device::detach_all_buffers", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn detach_all_buffers(&self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:993"];
    f116 [label="ipu_driver::Device::detach_buffer", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn detach_buffer(&self, index: u32) — crates/ipu-driver/src/lib.rs:989"];
    f107 [label="ipu_driver::Device::initialize", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn initialize(&self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:378"];
    f68 [label="ipu_driver::Device::ioctl_pointer", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn ioctl_pointer( &self, request: libc::c_ulong, value: *mut libc::c_void, operation: &'static str, ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1024"];
    f67 [label="ipu_driver::Device::ioctl_value", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn ioctl_value( &self, request: libc::c_ulong, value: libc::c_ulong, operation: &'static str, ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1011"];
    f118 [label="ipu_driver::Device::mailbox", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn mailbox(&self, request: MailboxMessage) -> Result<MailboxMessage, DriverError> — crates/ipu-driver/src/lib.rs:997"];
    f104 [label="ipu_driver::Device::open", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn open(path: &str) -> Result<Self, DriverError> — crates/ipu-driver/src/lib.rs:337"];
    f105 [label="ipu_driver::Device::read_config", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn read_config(&self, offset: u32) -> Result<u32, DriverError> — crates/ipu-driver/src/lib.rs:367"];
    f108 [label="ipu_driver::Device::replay_configuration", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn replay_configuration(&self, bytes: &[u8]) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:401"];
    f112 [label="ipu_driver::Device::set_mark", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn set_mark(&self, mark: u32) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:485"];
    f114 [label="ipu_driver::Device::wait_autoloader", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn wait_autoloader(&self, timeout: Duration) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:955"];
    f110 [label="ipu_driver::Device::wait_mark", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn wait_mark( &self, register: u32, expected: u32, timeout: Duration, ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:441"];
    f111 [label="ipu_driver::Device::wait_mark_with", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="/// Waits for an HSP mark while allowing a debugger to service stopped /// tile contexts. The callback runs only while the expected mark is absent. pub fn wait_mark_with( &self, register: u32, expected: u32, timeout: Duration, mut poll: impl FnMut(&Device) -> Result<(), DriverError>, ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:450"];
    f106 [label="ipu_driver::Device::write_config", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn write_config(&self, offset: u32, value: u32) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:372"];
    f113 [label="ipu_driver::Device::write_sync_mark", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn write_sync_mark(&self, register: u32, mark: u32) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:489"];
    f73 [label="ipu_driver::ExchangeBufferGuard::new", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn new(device: &'a Device) -> Result<Self, DriverError> — crates/ipu-driver/src/lib.rs:1112"];
    f75 [label="ipu_driver::ExchangeBufferGuard::restore_all", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn restore_all(&self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1138"];
    f74 [label="ipu_driver::ExchangeBufferGuard::restore_primary", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn restore_primary(&self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1130"];
    f71 [label="ipu_driver::HostBuffer::bytes", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn bytes(&self) -> &[u8] — crates/ipu-driver/src/lib.rs:1085"];
    f72 [label="ipu_driver::HostBuffer::bytes_mut", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn bytes_mut(&mut self) -> &mut [u8] — crates/ipu-driver/src/lib.rs:1089"];
    f70 [label="ipu_driver::HostBuffer::new", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn new(size: usize) -> Result<Self, DriverError> — crates/ipu-driver/src/lib.rs:1064"];
    f82 [label="ipu_driver::HostSession::acknowledge_device", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn acknowledge_device(&mut self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1415"];
    f83 [label="ipu_driver::HostSession::attach", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn attach(&mut self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1420"];
    f88 [label="ipu_driver::HostSession::collect", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn collect(&mut self, call: &HostCall) -> Result<Vec<u8>, DriverError> — crates/ipu-driver/src/lib.rs:1587"];
    f81 [label="ipu_driver::HostSession::delay_host_write", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn delay_host_write(&mut self) — crates/ipu-driver/src/lib.rs:1406"];
    f91 [label="ipu_driver::HostSession::drive", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn drive(&mut self, call: HostCall) -> Result<Vec<u8>, DriverError> — crates/ipu-driver/src/lib.rs:1637"];
    f92 [label="ipu_driver::HostSession::drive_handshake", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn drive_handshake(&mut self, call: &HostCall) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1648"];
    f85 [label="ipu_driver::HostSession::invoke", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn invoke(&mut self, name: &str, input: &[u8]) -> Result<Vec<u8>, DriverError> — crates/ipu-driver/src/lib.rs:1464"];
    f86 [label="ipu_driver::HostSession::invoke_streaming_deferred", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn invoke_streaming_deferred( &mut self, name: &str, input: &[u8], ) -> Result<HostCall, DriverError> — crates/ipu-driver/src/lib.rs:1491"];
    f87 [label="ipu_driver::HostSession::invoke_streaming_deferred_with_poll", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="/// Streaming invocation variant used by diagnostic runs to inspect and /// resume PBRK0 checkpoints while the ordinary host protocol is waiting. pub fn invoke_streaming_deferred_with_poll( &mut self, name: &str, input: &[u8], mut poll: impl FnMut(&Device) -> Result<(), DriverError>, ) -> Result<HostCall, DriverError> — crates/ipu-driver/src/lib.rs:1499"];
    f80 [label="ipu_driver::HostSession::new", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn new(device: &'a Device, protocol: HostExchange) -> Result<Self, DriverError> — crates/ipu-driver/src/lib.rs:1363"];
    f89 [label="ipu_driver::HostSession::prepare", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn prepare(&mut self, name: &str, input: &[u8]) -> Result<HostCall, DriverError> — crates/ipu-driver/src/lib.rs:1597"];
    f84 [label="ipu_driver::HostSession::start", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn start(&mut self) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1445"];
    f90 [label="ipu_driver::HostSession::write_command", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn write_command(&mut self, call: &HostCall) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1611"];
    f79 [label="ipu_driver::Loader::install_bootloader", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn install_bootloader(&self, tile_count: usize) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1299"];
    f78 [label="ipu_driver::Loader::load", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn load(&self, app: &Application, final_mark: u32) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1208"];
    f77 [label="ipu_driver::Loader::new", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn new(device: &'a Device, bootloader_elf: &[u8]) -> Result<Self, DriverError> — crates/ipu-driver/src/lib.rs:1184"];
    f102 [label="ipu_driver::address", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn address(instance: usize) -> u32 — crates/ipu-driver/src/lib.rs:243"];
    f101 [label="ipu_driver::block_device_interrupt_signals", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn block_device_interrupt_signals() -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1843"];
    f97 [label="ipu_driver::capture_output_slice", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn capture_output_slice( storage: &mut HostBuffer, pages: &HashMap<u32, HostPageRange>, slice: &ipu_package::HostSlice, output: &mut (Vec<u8>, usize), ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1765"];
    f95 [label="ipu_driver::copy_input", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn copy_input( storage: &mut HostBuffer, pages: &HashMap<u32, HostPageRange>, call: &HostCall, input: &[u8], ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1719"];
    f96 [label="ipu_driver::copy_input_slice", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn copy_input_slice( storage: &mut HostBuffer, pages: &HashMap<u32, HostPageRange>, slice: &ipu_package::HostSlice, input: &[u8], ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1749"];
    f98 [label="ipu_driver::copy_output", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn copy_output( storage: &mut HostBuffer, pages: &HashMap<u32, HostPageRange>, call: &HostCall, ) -> Result<Vec<u8>, DriverError> — crates/ipu-driver/src/lib.rs:1783"];
    f99 [label="ipu_driver::frame_tile", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="pub fn frame_tile(physical_tile: u32, image: &[u8]) -> Result<Vec<u8>, DriverError> — crates/ipu-driver/src/lib.rs:1808"];
    f93 [label="ipu_driver::host_batch_ranges", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn host_batch_ranges(ends: &[u32]) -> Vec<std::ops::Range<usize>> — crates/ipu-driver/src/lib.rs:1684"];
    f103 [label="ipu_driver::io_error", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn io_error(operation: &'static str) -> DriverError — crates/ipu-driver/src/lib.rs:298"];
    f94 [label="ipu_driver::poison_output", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn poison_output( storage: &mut HostBuffer, pages: &HashMap<u32, HostPageRange>, call: &HostCall, ) -> Result<(), DriverError> — crates/ipu-driver/src/lib.rs:1704"];
    f100 [label="ipu_driver::read_u32", shape=box, fillcolor="#f9dfc5", color="#238b45", tooltip="fn read_u32(bytes: &[u8], offset: usize) -> Result<u32, DriverError> — crates/ipu-driver/src/lib.rs:1836"];
  }
  subgraph cluster_ipu_elf { label="ipu_elf"; color="#eadcf8"; style="rounded";
    f121 [label="ipu_elf::KernelArtifact::inspect", shape=box, fillcolor="#eadcf8", color="#2166ac", tooltip="pub fn inspect(&self) -> Result<ObjectSummary, ElfError> — crates/ipu-elf/src/lib.rs:216"];
    f119 [label="ipu_elf::Toolchain::cached_artifact", shape=box, fillcolor="#eadcf8", color="#2166ac", tooltip="fn cached_artifact(&self, source: &Path, flags: &[String]) -> Result<KernelArtifact, ElfError> — crates/ipu-elf/src/lib.rs:141"];
    f122 [label="ipu_elf::Toolchain::compile", shape=box, fillcolor="#eadcf8", color="#2166ac", tooltip="pub fn compile( &self, source: impl AsRef<Path>, name: &str, flags: &[String], ) -> Result<KernelArtifact, ElfError> — crates/ipu-elf/src/lib.rs:85"];
    f120 [label="ipu_elf::run", shape=box, fillcolor="#eadcf8", color="#2166ac", tooltip="fn run(command: &mut Command, name: &str) -> Result<(), ElfError> — crates/ipu-elf/src/lib.rs:198"];
  }
  subgraph cluster_ipu_exchange { label="ipu_exchange"; color="#d8f0dd"; style="rounded";
    f123 [label="ipu_exchange::Topology::c600", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn c600() -> Self — crates/ipu-exchange/src/lib.rs:2307"];
    f125 [label="ipu_exchange::Topology::physical", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn physical(&self, logical: u16) -> Result<u16, ExchangeError> — crates/ipu-exchange/src/lib.rs:2317"];
    f124 [label="ipu_exchange::Topology::tile_count", shape=box, fillcolor="#d8f0dd", color="#2166ac", tooltip="pub fn tile_count(&self) -> usize — crates/ipu-exchange/src/lib.rs:2313"];
  }
  subgraph cluster_ipu_package { label="ipu_package"; color="#f7e8ae"; style="rounded";
    f135 [label="ipu_package::AddressRegion::new", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="pub const fn new(start: u32, end: u32) -> Self — crates/ipu-package/src/lib.rs:321"];
    f136 [label="ipu_package::AddressRegion::size", shape=box, fillcolor="#f7e8ae", color="#7d3c98", tooltip="pub const fn size(self) -> u32 — crates/ipu-package/src/lib.rs:328"];
    f137 [label="ipu_package::Application::default", shape=box, fillcolor="#f7e8ae", color="#7d3c98", tooltip="fn default() -> Self — crates/ipu-package/src/lib.rs:473"];
    f140 [label="ipu_package::Application::read", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="pub fn read(mut input: impl Read) -> Result<Self, PackageError> — crates/ipu-package/src/lib.rs:727"];
    f141 [label="ipu_package::Application::tile_image", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="pub fn tile_image(&self, physical_tile: u32) -> Result<Vec<u8>, PackageError> — crates/ipu-package/src/lib.rs:816"];
    f138 [label="ipu_package::Application::validate", shape=box, fillcolor="#f7e8ae", color="#7d3c98", tooltip="pub fn validate(&self) -> Result<(), PackageError> — crates/ipu-package/src/lib.rs:491"];
    f139 [label="ipu_package::Application::write", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="pub fn write(&self, mut output: impl Write) -> Result<(), PackageError> — crates/ipu-package/src/lib.rs:654"];
    f134 [label="ipu_package::capnp_reader_options", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="fn capnp_reader_options() -> message::ReaderOptions — crates/ipu-package/src/lib.rs:17"];
    f127 [label="ipu_package::read_bindings", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="fn read_bindings( input: capnp::struct_list::Reader<'_, application_capnp::binding::Owned>, ) -> Result<Vec<Binding>, PackageError> — crates/ipu-package/src/lib.rs:1030"];
    f132 [label="ipu_package::read_host_exchange", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="fn read_host_exchange( input: application_capnp::host_exchange::Reader<'_>, ) -> Result<HostExchange, PackageError> — crates/ipu-package/src/lib.rs:1240"];
    f133 [label="ipu_package::read_host_slices", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="fn read_host_slices( input: capnp::struct_list::Reader<'_, application_capnp::host_slice::Owned>, ) -> Vec<HostSlice> — crates/ipu-package/src/lib.rs:1275"];
    f129 [label="ipu_package::read_profile_tiles", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="fn read_profile_tiles( input: capnp::struct_list::Reader<'_, application_capnp::tile_profile_plan::Owned>, ) -> Result<Vec<TileProfilePlan>, PackageError> — crates/ipu-package/src/lib.rs:1108"];
    f144 [label="ipu_package::read_tiles", shape=box, fillcolor="#f7e8ae", color="#238b45", tooltip="fn read_tiles( input: capnp::struct_list::Reader<'_, application_capnp::tile_image::Owned>, ) -> Result<Vec<TileImage>, PackageError> — crates/ipu-package/src/lib.rs:979"];
    f142 [label="ipu_package::validate_host_batch_ends", shape=box, fillcolor="#f7e8ae", color="#7d3c98", tooltip="fn validate_host_batch_ends( call: &HostCall, direction: &str, ends: &[u32], slice_count: usize, ) -> Result<(), PackageError> — crates/ipu-package/src/lib.rs:932"];
    f126 [label="ipu_package::write_bindings", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="fn write_bindings( mut output: capnp::struct_list::Builder<'_, application_capnp::binding::Owned>, bindings: &[Binding], ) — crates/ipu-package/src/lib.rs:1007"];
    f130 [label="ipu_package::write_host_exchange", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="fn write_host_exchange( mut output: application_capnp::host_exchange::Builder<'_>, host: &HostExchange, ) — crates/ipu-package/src/lib.rs:1178"];
    f131 [label="ipu_package::write_host_slices", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="fn write_host_slices( mut output: capnp::struct_list::Builder<'_, application_capnp::host_slice::Owned>, slices: &[HostSlice], ) — crates/ipu-package/src/lib.rs:1227"];
    f128 [label="ipu_package::write_profile_tiles", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="fn write_profile_tiles( mut output: capnp::struct_list::Builder<'_, application_capnp::tile_profile_plan::Owned>, tiles: &[TileProfilePlan], ) — crates/ipu-package/src/lib.rs:1055"];
    f143 [label="ipu_package::write_tiles", shape=box, fillcolor="#f7e8ae", color="#2166ac", tooltip="fn write_tiles( mut output: capnp::struct_list::Builder<'_, application_capnp::tile_image::Owned>, tiles: &[TileImage], ) — crates/ipu-package/src/lib.rs:958"];
  }
  subgraph cluster_ipu_runtime { label="ipu_runtime"; color="#f7d8e3"; style="rounded";
    f147 [label="ipu_runtime::Runtime::host_session", shape=box, fillcolor="#f7d8e3", color="#238b45", tooltip="pub fn host_session(&self, application: &Application) -> Result<HostSession<'_>> — crates/ipu-runtime/src/lib.rs:43"];
    f146 [label="ipu_runtime::Runtime::load", shape=box, fillcolor="#f7d8e3", color="#238b45", tooltip="pub fn load( &self, application: &Application, bootloader: &[u8], final_mark: u32, ) -> Result<()> — crates/ipu-runtime/src/lib.rs:30"];
    f145 [label="ipu_runtime::Runtime::open", shape=box, fillcolor="#f7d8e3", color="#238b45", tooltip="pub fn open(device_path: &str, configuration: &[u8]) -> Result<Self> — crates/ipu-runtime/src/lib.rs:23"];
  }
  build_entry -> f55 [color="#2166ac", penwidth=1.4];
  build_entry -> f139 [color="#2166ac", penwidth=1.4];
  run_entry -> f147 [color="#238b45", penwidth=1.4];
  run_entry -> f145 [color="#238b45", penwidth=1.4];
  run_entry -> f84 [color="#238b45", penwidth=1.4];
  run_entry -> f140 [color="#238b45", penwidth=1.4];
  run_entry -> f85 [color="#238b45", penwidth=1.4];
  run_entry -> f146 [color="#238b45", penwidth=1.4];
  f16 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f20 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f20 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> f19 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> f20 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> f22 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> f23 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f21 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f25 -> f17 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f26 -> f24 [color="#7d3c98", style="dotted", tooltip="source fallback (conservative)"];
  f27 -> f31 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f27 -> f135 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f28 -> f135 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f28 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> f135 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f31 -> f135 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f0 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f5 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f6 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f9 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f12 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f13 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f17 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f18 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f24 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f32 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f35 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> f37 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f36 -> f17 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f18 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f32 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f36 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f39 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f41 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f41 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f41 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f41 -> f123 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f41 -> f124 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f43 -> f44 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f43 -> f51 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f43 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f45 -> f3 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f46 -> f125 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f47 -> f49 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f47 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f48 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f48 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f48 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f50 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f51 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f52 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f31 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f53 -> f135 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f55 -> f13 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f55 -> f58 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f57 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f57 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f1 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f21 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f34 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f40 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f41 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f59 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f60 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f58 -> f122 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f10 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f18 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f25 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f42 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f59 -> f61 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f3 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f4 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f7 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f8 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f10 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f11 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f16 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f27 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f28 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f29 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f30 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f31 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f38 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f39 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f40 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f42 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f43 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f44 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f45 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f46 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f47 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f48 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f49 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f50 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f51 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f52 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f53 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f54 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f56 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f57 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f61 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f62 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f63 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f64 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f65 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f66 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f123 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f124 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f125 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f135 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f136 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f137 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f60 -> f138 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f61 -> f62 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f61 -> f135 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f66 -> f65 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f67 -> f103 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f68 -> f103 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f69 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f69 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f70 -> f103 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f73 -> f105 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f73 -> f106 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f74 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f75 -> f105 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f75 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f76 -> f115 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f77 -> f102 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f77 -> f136 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f78 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f70 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f72 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f73 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f74 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f75 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f76 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f79 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f99 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f110 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f112 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f138 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f78 -> f141 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f79 -> f105 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f79 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f79 -> f114 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f80 -> f70 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f82 -> f81 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f82 -> f113 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f83 -> f36 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f83 -> f106 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f83 -> f115 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f83 -> f116 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f83 -> f117 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f84 -> f81 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f82 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f83 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f110 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f84 -> f112 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f85 -> f86 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f85 -> f88 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f85 -> f89 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f85 -> f91 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f86 -> f87 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f82 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f90 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f93 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f96 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f87 -> f97 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f88 -> f97 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f88 -> f98 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f89 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f89 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f89 -> f90 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f89 -> f94 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f89 -> f95 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f90 -> f72 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f91 -> f88 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f91 -> f92 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f92 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f92 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f92 -> f82 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f92 -> f110 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f94 -> f72 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f95 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f95 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f95 -> f72 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f96 -> f72 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f97 -> f71 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f98 -> f72 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f101 -> f103 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f104 -> f67 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f104 -> f103 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f105 -> f69 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f106 -> f69 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f107 -> f67 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f107 -> f68 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f107 -> f118 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f108 -> f100 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f108 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f108 -> f109 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f109 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f109 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f109 -> f105 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f109 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f110 -> f111 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f111 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f111 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f111 -> f105 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f112 -> f113 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f113 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f113 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f113 -> f105 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f113 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f114 -> f105 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f115 -> f68 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f117 -> f67 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f118 -> f68 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f119 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f119 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f120 -> f26 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f120 -> f33 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f122 -> f119 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f122 -> f120 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f122 -> f121 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f130 -> f131 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f132 -> f133 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f138 -> f26 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f138 -> f33 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f138 -> f142 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f139 -> f36 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f139 -> f126 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f139 -> f128 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f139 -> f130 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f139 -> f138 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f139 -> f143 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f127 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f129 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f132 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f134 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f137 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f138 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f140 -> f144 [color="#238b45", style="dotted", tooltip="source fallback (conservative)"];
  f141 -> f26 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f141 -> f33 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f142 -> f26 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f142 -> f33 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f145 -> f101 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f145 -> f104 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f145 -> f107 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f145 -> f108 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f146 -> f77 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f146 -> f78 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f146 -> f106 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  f147 -> f80 [color="#238b45", style="solid", tooltip="rustc MIR call edge"];
  legend [shape=note, style="filled", fillcolor="#ffffff", color="#9aa5b1", fontsize=8,
          label="Solid edge: rustc MIR-resolved call\nDotted edge: source fallback\nDashed edge: function uses workspace type\nBlue: build path   Green: run path   Purple: shared"];
}
