Function sequant::eval::dryrun::detail::check_shared_ranges

Function Documentation

inline void sequant::eval::dryrun::detail::check_shared_ranges(char const *op, annot_t const &lannot, ExtentOverrides const &lov, ExtentOverrides const &llob, annot_t const &rannot, ExtentOverrides const &rov, ExtentOverrides const &rlob, std::shared_ptr<CostModel const> const &cm)

Dry-run conformance check (the dry-run analogue of TA’s einsum index-map merge and is_range_set_congruent): every label shared by the two operand annotations must realize the same element range (lobound and extent) on both sides. A whole operand meeting a sliced partner (extent mismatch) or two operands sliced to different batches of one loop (lobound mismatch, e.g. a stale per-batch cell reused across batches) is a schedule/runtime slicing defect: the wet backend hangs or asserts on it, and this check turns it into a dry-run failure. Throws with both ranges named.