Struct Read¶
Defined in File cell_table.hpp
Struct Documentation¶
-
struct Read¶
One per leg of a consumer cell’s production tree — not one per distinct operand value: a consumer whose two legs read the same value carries two reads of it (the runtime accesses that cell’s home twice), which the de-duplicated operand lists of
ordered_schedule_dep_graph/OrderedSchedule::operand_vidscannot express (seeCellTableInputs::operands_of).Note
The schedule seam’s facts are per leg:
SlicedModeAssignment::occ_facts/occ_invariantcarry the consumer’s leg as their last element, and the builder pairs each leg’s read with its own fact, so the two legs of one consumer reading one value can carry differentsliceandinvariant_on. The residual gap is upstream: whenCellTableInputs::operands_ofis absent the builder falls back to the de-duplicateddepends_onand a self-contracting consumer gets one read instead of two (as-built design section 12.2).Public Members
-
std::size_t operand_value_id = 0¶
-
container::svector<std::pair<std::size_t, LoopKey>> slice¶
operand positions to slice to the current batch of that loop instance.
-
container::svector<LoopKey> invariant_on = {}¶
loop instances the consumer is sliced by on which the schedule seam (
SlicedModeAssignment::occ_invariant) recorded an explicit fact: an explicit record that no slicing decision bound this read on that instance; the form rule accepts it as whole, so this table check is necessary, not sufficient — the dry-run range check remains the ground truth. Empty = no such record.
-
std::size_t operand_value_id = 0¶