Function sequant::eval::detail::forced_split_levels¶
Defined in File ordered_schedule.hpp
Function Documentation¶
-
inline ForcedSplitLevels sequant::eval::detail::forced_split_levels(RichSchedule const &rich, LegalitySchedule const &legality, OrderedScheduleDepGraph const &g, std::function<bool(std::size_t, std::size_t)> const &inside, std::function<bool(std::size_t, std::size_t)> const &inside_assembled, std::function<std::optional<ForcedSplitSite>(std::size_t)> const &site_of = {})¶
Assigns every value of
richits pass level (seeForcedSplitLevels), reading the carried/reduction roles fromlegality, the dependency edges fromg, and deciding withinsidewhether a reader is produced inside a source’s own reduced loop instance and withinside_assembledwhether it is produced inside a loop-local instance it reads the source assembled over.site_oflocates a value in the loop chain (ForcedSplitSite), nullopt for a value produced at root. Empty (the default) leaves the passes unchecked for cycles among their steps.