digraph ipu_stack_package_partition {
  graph [rankdir=LR, bgcolor="white", fontname="DejaVu Sans", fontsize=17,
         label="ipu_codegen::layout — package build/run detail", labelloc=t, labeljust=l, pad=0.2, nodesep=0.3, ranksep=0.75, 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];
  subgraph cluster_primary { label="primary nodes"; color="#d9e8fb"; style="rounded";
    f14 [label="ipu_codegen::layout::AxisTiling::new", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="pub const fn new(axis: TensorAxis, partitions: u16, block_size: u32, padding: Padding) -> Self — crates/ipu-codegen/src/layout.rs:170"];
    f15 [label="ipu_codegen::layout::AxisTiling::with_tile_stride", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn with_tile_stride(mut self, tile_stride: u16) -> Self — crates/ipu-codegen/src/layout.rs:182"];
    f45 [label="ipu_codegen::layout::ElementOrder::f16_micro_panel_order", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) const fn f16_micro_panel_order(self) -> Option<F16MicroPanelOrder> — crates/ipu-codegen/src/layout.rs:77"];
    f38 [label="ipu_codegen::layout::ElementOrder::requires_direct_population", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// This packing is consumed as contiguous K-major panels, while a generic /// intersection rearrangement produces rectangular tensor-coordinate /// views. It must therefore be selected for an automatic input or produced /// by a specialized operator/local staging path. pub(crate) fn requires_direct_population(&self) -> bool — crates/ipu-codegen/src/layout.rs:55"];
    f51 [label="ipu_codegen::layout::ElementOrder::retained_linear_column_grain", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// Smallest column span which remains a self-contained physical fragment /// when canonical linear ownership divides a matrix into row segments. pub(crate) fn retained_linear_column_grain(self, precision: Precision) -> Option<u32> — crates/ipu-codegen/src/layout.rs:91"];
    f41 [label="ipu_codegen::layout::ElementOrder::supports_row_major_population", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// Whether a row-major logical staging shard can be transformed locally /// into this order by the generated conversion kernels. pub(crate) fn supports_row_major_population(self) -> bool — crates/ipu-codegen/src/layout.rs:66"];
    f30 [label="ipu_codegen::layout::Layout::amp_left", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn amp_left(inner: u16, tile_count: u16) -> Self — crates/ipu-codegen/src/layout.rs:375"];
    f33 [label="ipu_codegen::layout::Layout::amp_left_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// AMP left operand on a row-by-column tile grid. The row shard is /// replicated across column groups so it is local to every output shard. pub fn amp_left_grid( inner: u16, tile_count: u16, row_partitions: u16, column_partitions: u16, grid_order: GridOrder, ) -> Self — crates/ipu-codegen/src/layout.rs:425"];
    f34 [label="ipu_codegen::layout::Layout::amp_left_parallel_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// AMP left operand for a row-by-column-by-K dispatch grid. K and rows /// are true shards; the column coordinate is a replica because the same /// activation range is consumed by each output-column group. pub fn amp_left_parallel_grid( inner: u16, tile_count: u16, row_partitions: u16, column_partitions: u16, inner_partitions: u16, ) -> Self — crates/ipu-codegen/src/layout.rs:455"];
    f32 [label="ipu_codegen::layout::Layout::amp_left_result", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// F16 AMP result stored in the same within-panel order as a following /// left operand. The GEMM coefficient routing makes the native accumulator /// drain land in this order without a post-compute permutation. pub fn amp_left_result(tile_count: u16) -> Self — crates/ipu-codegen/src/layout.rs:416"];
    f42 [label="ipu_codegen::layout::Layout::amp_left_result_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn amp_left_result_grid( output_column_block: u32, tile_count: u16, row_partitions: u16, column_partitions: u16, grid_order: GridOrder, ) -> Self — crates/ipu-codegen/src/layout.rs:673"];
    f31 [label="ipu_codegen::layout::Layout::amp_output", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn amp_output(tile_count: u16) -> Self — crates/ipu-codegen/src/layout.rs:401"];
    f40 [label="ipu_codegen::layout::Layout::amp_output_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// AMP output distributed over both matrix axes on one tile grid. pub fn amp_output_grid( output_column_block: u32, tile_count: u16, row_partitions: u16, column_partitions: u16, grid_order: GridOrder, ) -> Self — crates/ipu-codegen/src/layout.rs:632"];
    f35 [label="ipu_codegen::layout::Layout::amp_transposed_left_parallel_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// A semantic right-hand matrix `[K, N]` packed as the physical left /// operand `[N, K]` on a row-by-column-by-K dispatch grid. pub fn amp_transposed_left_parallel_grid( inner: u16, tile_count: u16, row_partitions: u16, column_partitions: u16, inner_partitions: u16, ) -> Self — crates/ipu-codegen/src/layout.rs:484"];
    f44 [label="ipu_codegen::layout::Layout::amp_transposed_left_result_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn amp_transposed_left_result_grid( output_column_block: u32, tile_count: u16, row_partitions: u16, column_partitions: u16, grid_order: GridOrder, ) -> Self — crates/ipu-codegen/src/layout.rs:726"];
    f43 [label="ipu_codegen::layout::Layout::amp_transposed_output_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// A semantic output `[M, N]` packed as the physical AMP output `[N, M]`. pub fn amp_transposed_output_grid( output_column_block: u32, tile_count: u16, row_partitions: u16, column_partitions: u16, grid_order: GridOrder, ) -> Self — crates/ipu-codegen/src/layout.rs:691"];
    f28 [label="ipu_codegen::layout::Layout::attention_block_major_key_value", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn attention_block_major_key_value(heads: u16, key_partitions: u16) -> Self — crates/ipu-codegen/src/layout.rs:355"];
    f27 [label="ipu_codegen::layout::Layout::attention_key", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn attention_key(heads: u16, key_partitions: u16) -> Self — crates/ipu-codegen/src/layout.rs:332"];
    f29 [label="ipu_codegen::layout::Layout::attention_output", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn attention_output(heads: u16, query_partitions: u16) -> Self — crates/ipu-codegen/src/layout.rs:364"];
    f26 [label="ipu_codegen::layout::Layout::attention_query", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn attention_query(heads: u16, query_partitions: u16) -> Self — crates/ipu-codegen/src/layout.rs:317"];
    f25 [label="ipu_codegen::layout::Layout::attention_tiling", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn attention_tiling(heads: u16, query_partitions: u16) -> TensorTiling — crates/ipu-codegen/src/layout.rs:304"];
    f36 [label="ipu_codegen::layout::Layout::block_major_matrix_grid", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// Block-major matrix storage on a row-by-column tile grid. Each column /// shard is replicated across row groups so it is local to every consumer. pub fn block_major_matrix_grid( inner: u16, output_column_block: u32, tile_count: u16, row_partitions: u16, column_partitions: u16, grid_order: GridOrder, ) -> Self — crates/ipu-codegen/src/layout.rs:512"];
    f37 [label="ipu_codegen::layout::Layout::block_major_matrix_storage", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// Matrix storage with complete row-by-column blocks contiguous in the /// selected memory class. Column and row sharding select the owner set; /// `copies` controls persistent replication independently of consumers. pub fn block_major_matrix_storage( inner_block: u16, output_column_block: u32, column_partitions: u16, inner_partitions: u16, copies: u16, memory_class: MemoryClass, ) -> Self — crates/ipu-codegen/src/layout.rs:548"];
    f22 [label="ipu_codegen::layout::Layout::logical_linear", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn logical_linear(tile_count: u16, grain: u32) -> Self — crates/ipu-codegen/src/layout.rs:284"];
    f52 [label="ipu_codegen::layout::Layout::resolve", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn resolve(&self, shape: &TensorShape) -> Result<ResolvedLayout, LayoutError> — crates/ipu-codegen/src/layout.rs:943"];
    f21 [label="ipu_codegen::layout::Layout::row_major", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="pub fn row_major(tiling: TensorTiling) -> Self — crates/ipu-codegen/src/layout.rs:277"];
    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"];
    f39 [label="ipu_codegen::layout::Layout::transposed_block_major_matrix_storage", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="/// A semantic matrix `[M, K]` stored in transposed contiguous blocks. pub fn transposed_block_major_matrix_storage( inner_block: u16, output_column_block: u32, column_partitions: u16, inner_partitions: u16, copies: u16, memory_class: MemoryClass, ) -> Self — crates/ipu-codegen/src/layout.rs:591"];
    f23 [label="ipu_codegen::layout::Layout::with_retained_order_linear_ownership", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn with_retained_order_linear_ownership(&self, tile_count: u16, grain: u32) -> Self — crates/ipu-codegen/src/layout.rs:288"];
    f10 [label="ipu_codegen::layout::ResolvedAxis::bounds", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn bounds( self, shape: &TensorShape, padded_shape: &TensorShape, coordinate: u32, ) -> Result<(u32, u32, u32), LayoutError> — crates/ipu-codegen/src/layout.rs:1350"];
    f9 [label="ipu_codegen::layout::ResolvedAxis::maximum_physical_extent", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn maximum_physical_extent(self, padded_shape: &TensorShape) -> u32 — crates/ipu-codegen/src/layout.rs:1332"];
    f8 [label="ipu_codegen::layout::ResolvedAxis::padded_block_width", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn padded_block_width(self, blocks: u32) -> u32 — crates/ipu-codegen/src/layout.rs:1325"];
    f7 [label="ipu_codegen::layout::ResolvedAxis::partition_geometry", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn partition_geometry(self, padded_shape: &TensorShape) -> (u32, u32, u32, u32) — crates/ipu-codegen/src/layout.rs:1316"];
    f6 [label="ipu_codegen::layout::ResolvedLayout::axis", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn axis(&self, index: usize) -> Option<&ResolvedAxis> — crates/ipu-codegen/src/layout.rs:1255"];
    f4 [label="ipu_codegen::layout::ResolvedLayout::axis_bounds", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn axis_bounds(&self, axis: usize, coordinate: u32) -> Option<(u32, u32, u32)> — crates/ipu-codegen/src/layout.rs:1200"];
    f2 [label="ipu_codegen::layout::ResolvedLayout::has_empty_shards", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn has_empty_shards(&self) -> bool — crates/ipu-codegen/src/layout.rs:1156"];
    f3 [label="ipu_codegen::layout::ResolvedLayout::maximum_axis_extent", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn maximum_axis_extent(&self, axis: usize) -> Option<u32> — crates/ipu-codegen/src/layout.rs:1169"];
    f1 [label="ipu_codegen::layout::ResolvedLayout::maximum_tile_elements", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn maximum_tile_elements(&self) -> u64 — crates/ipu-codegen/src/layout.rs:1106"];
    f0 [label="ipu_codegen::layout::ResolvedLayout::padded_shape", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn padded_shape(&self) -> &TensorShape — crates/ipu-codegen/src/layout.rs:1081"];
    f5 [label="ipu_codegen::layout::TensorAxis::resolve", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn resolve(self, rank: usize) -> Result<usize, LayoutError> — crates/ipu-codegen/src/layout.rs:123"];
    f46 [label="ipu_codegen::layout::TensorFormat::supports_f16_micro_panel_exchange", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn supports_f16_micro_panel_exchange(&self, destination: &Self) -> bool — crates/ipu-codegen/src/layout.rs:814"];
    f48 [label="ipu_codegen::layout::TensorRegion::deref", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn deref(&self) -> &Self::Target — crates/ipu-codegen/src/layout.rs:863"];
    f49 [label="ipu_codegen::layout::TensorRegion::deref_mut", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn deref_mut(&mut self) -> &mut Self::Target — crates/ipu-codegen/src/layout.rs:870"];
    f50 [label="ipu_codegen::layout::TensorRegion::from", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn from(extents: Vec<ShardExtent>) -> Self — crates/ipu-codegen/src/layout.rs:894"];
    f20 [label="ipu_codegen::layout::TensorTiling::axis_strides", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn axis_strides(&self) -> Result<Vec<u32>, LayoutError> — crates/ipu-codegen/src/layout.rs:248"];
    f16 [label="ipu_codegen::layout::TensorTiling::linear", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn linear(tile_count: u16, grain: u32) -> Self — crates/ipu-codegen/src/layout.rs:213"];
    f17 [label="ipu_codegen::layout::TensorTiling::linear_grain", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn linear_grain(&self) -> Option<u32> — crates/ipu-codegen/src/layout.rs:225"];
    f18 [label="ipu_codegen::layout::TensorTiling::replicated", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn replicated(tile_count: u16) -> Self — crates/ipu-codegen/src/layout.rs:232"];
    f19 [label="ipu_codegen::layout::TensorTiling::sharded", shape=box, fillcolor="#d9e8fb", color="#7d3c98", tooltip="pub fn sharded(axis: TensorAxis, tile_count: u16) -> Self — crates/ipu-codegen/src/layout.rs:240"];
    f47 [label="ipu_codegen::layout::TensorType::new", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub fn new(shape: impl IntoIterator<Item = u32>, precision: Precision, layout: Layout) -> Self — crates/ipu-codegen/src/layout.rs:830"];
    f13 [label="ipu_codegen::layout::has_regular_tile_mapping", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn has_regular_tile_mapping(axes: &[AxisTiling], replicas: u16, strides: &[u32]) -> bool — crates/ipu-codegen/src/layout.rs:1485"];
    f11 [label="ipu_codegen::layout::resolve_axis_bounds", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn resolve_axis_bounds( tiling: AxisTiling, padded_extent: u32, logical_extent: u32, coordinate: u32, axis: usize, ) -> Result<(u32, u32, u32), LayoutError> — crates/ipu-codegen/src/layout.rs:1366"];
    f12 [label="ipu_codegen::layout::validate_tile_mapping", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn validate_tile_mapping( axes: &[AxisTiling], replicas: u16, strides: &[u32], tile_count: u16, ) -> Result<(), LayoutError> — crates/ipu-codegen/src/layout.rs:1445"];
    t10 [label="ipu_codegen::layout::AmpOrder\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:7"];
    t3 [label="ipu_codegen::layout::AxisTiling\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:142"];
    t5 [label="ipu_codegen::layout::BlockMajorOrder\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:25"];
    t7 [label="ipu_codegen::layout::ElementOrder\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:39"];
    t8 [label="ipu_codegen::layout::F16MicroPanelOrder\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:49"];
    t6 [label="ipu_codegen::layout::Layout\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:270"];
    t9 [label="ipu_codegen::layout::LayoutError\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:770"];
    t0 [label="ipu_codegen::layout::MemoryClass\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:109"];
    t2 [label="ipu_codegen::layout::Padding\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:135"];
    t16 [label="ipu_codegen::layout::ResolvedAxis\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:914"];
    t18 [label="ipu_codegen::layout::ResolvedLayout\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:933"];
    t17 [label="ipu_codegen::layout::ResolvedOwnership\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:921"];
    t13 [label="ipu_codegen::layout::ShardExtent\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:841"];
    t15 [label="ipu_codegen::layout::Target\n«type»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:862"];
    t1 [label="ipu_codegen::layout::TensorAxis\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:115"];
    t11 [label="ipu_codegen::layout::TensorFormat\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:808"];
    t14 [label="ipu_codegen::layout::TensorRegion\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:849"];
    t4 [label="ipu_codegen::layout::TensorTiling\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:206"];
    t12 [label="ipu_codegen::layout::TensorType\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/layout.rs:824"];
  }
  subgraph cluster_external { label="outgoing references — click to open target partition"; color="#d9d9d9"; style="rounded,dashed";
    xf0 [label="ipu_codegen::estimate::ExchangeEndpointTraffic::is_empty", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-codegen-estimate.svg", target="_top", tooltip="open target partition"];
    xf2 [label="ipu_codegen::graph::TensorShape::elements", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-codegen-graph.svg", target="_top", tooltip="open target partition"];
    xf1 [label="ipu_codegen::graph::TensorShape::new", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-codegen-graph.svg", target="_top", tooltip="open target partition"];
    xf3 [label="ipu_codegen::host::collect", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-codegen-host.svg", target="_top", tooltip="open target partition"];
    xf4 [label="ipu_package::AddressRegion::contains", shape=box, fillcolor="#f5f5f5", color="#9aa5b1", style="rounded,filled,dashed", URL="ipu-package.svg", target="_top", tooltip="open target partition"];
    xt0 [label="ipu_codegen::graph::TensorShape\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-graph.svg", target="_top", tooltip="open defining partition"];
    xt1 [label="ipu_codegen::operator::GridOrder\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-operator.svg", target="_top", tooltip="open defining partition"];
    xt2 [label="ipu_codegen::operator::Precision\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-operator.svg", target="_top", tooltip="open defining partition"];
  }
  f0 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f1 -> xf2 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f1 -> f6 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f1 -> f9 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f1 -> t17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f2 -> f7 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f2 -> f10 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f2 -> t17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f3 -> f6 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f3 -> f9 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f3 -> t17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f4 -> f6 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f4 -> f10 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f5 -> t9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f6 -> t16 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f7 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f9 -> f7 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f9 -> f8 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f9 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f10 -> f11 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f10 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f10 -> t9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f11 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f11 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f11 -> t9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f12 -> f13 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f12 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f12 -> t9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f13 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f14 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f14 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f16 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f16 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f16 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f16 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f17 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f19 -> f14 [color="#7d3c98", style="dotted", tooltip="source fallback (conservative)"];
  f19 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f19 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f19 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f20 -> t9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f21 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f21 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f21 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f22 -> f16 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f22 -> f21 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f22 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f23 -> f16 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f23 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f24 -> f19 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f24 -> f21 [color="#7d3c98", style="solid", tooltip="rustc MIR call edge"];
  f24 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f24 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f25 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f25 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f25 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f25 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f25 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f25 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f26 -> f25 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f26 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f26 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f27 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f27 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f27 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f28 -> f27 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f28 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f28 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f29 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f21 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> f25 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f29 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f29 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f29 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f30 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f30 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f31 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f31 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f32 -> f31 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f32 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f32 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f33 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f33 -> f30 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f33 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f33 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f34 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f34 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f35 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f35 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f36 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f36 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f36 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f37 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f37 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f38 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f38 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f39 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f39 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f39 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f40 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f40 -> f31 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f40 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f40 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f41 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f41 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f42 -> f40 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f42 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f42 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f42 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> f14 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f43 -> f15 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f43 -> t0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> t1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> t4 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f43 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f44 -> f43 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f44 -> t7 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f44 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f44 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f45 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f45 -> t8 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f45 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f46 -> f45 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f46 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f47 -> xf1 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f47 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f47 -> t6 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f47 -> t11 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f47 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f48 -> t15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f49 -> t15 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f50 -> t13 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f51 -> t10 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f51 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> xf0 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> xf2 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> xf3 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> f7 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> f10 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> f12 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> f17 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> f20 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> f50 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> xf4 [color="#2166ac", style="dotted", tooltip="source fallback (conservative)"];
  f52 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> t9 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> t16 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> t17 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f52 -> t18 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  legend [shape=note, style="filled", fillcolor="#ffffff", color="#9aa5b1", fontsize=8,
          label="Solid: MIR-resolved call   Dotted: source fallback\nDashed, no arrow: uses type   Dashed node: link to another partition\nBlue: build   Green: run   Purple: shared"];
}
