Struct CellTableInputs

Struct Documentation

struct CellTableInputs

Inputs to build_cell_table: the finished ordered schedule plus the per-value callbacks the table derivation needs but does not itself own the source of (sliced-mode set, volatility, batch count of a loop instance).

Public Members

OrderedSchedule const *ordered = nullptr
RichSchedule const *rich = nullptr
SlicedModeAssignment const *sliced = nullptr

the per-occurrence seam facts the reads loop consults; required.

std::function<container::svector<Index>(std::size_t)> sliced_modes_of
std::function<bool(std::size_t)> volatile_of
std::function<std::size_t(LoopKey const&)> n_batches_of
std::function<container::svector<std::size_t>(std::size_t)> operands_of

Optional: the value’s direct operand value ids with repetition &#8212; one entry per leg of its production tree, so a value contracted with itself appears twice. Both ordered_schedule_dep_graph's depends_on and the OrderedSchedule::operand_vids copied from it de-duplicate their operand lists, and a de-duplicated list loses exactly the read the runtime does perform (a home access per leg); a caller that can see the production tree (the forest node’s two children, resolved back to value ids) supplies it here. When unset, the builder falls back to the de-duplicated depends_on and a self-contracting consumer gets one read instead of two.