Function sequant::eval::build_ordered_schedule

Function Documentation

inline OrderedSchedule sequant::eval::build_ordered_schedule(RichSchedule const &rich, LegalitySchedule const &legality, BatchPolicy const &policy, std::initializer_list<std::wstring> mode_order = {})

Builds the OrderedSchedule of rich: the loop-block tree, the build steps inside each block, and each value’s escape chain.

Parameters:
  • rich – the schedule’s values, their occurrences and loop instances

  • legality – the per-value, per-axis roles analyze_legality derived

  • policy – accepted for interface symmetry with the rest of the pipeline; the axis filtering it would provide is already baked into CellLegality::per_axis

  • mode_order – optional outer-to-inner order of index-space base keys, used to order the loop chain

Throws:

Exception – when a batched mode has no loop identity to place its escape on

Returns:

a schedule satisfying well_formed