CQCL/hugr

Add a "sink" pass

Closed this issue · 1 comments

We have a need to perform some operations as early as possible and some operations as late as possible.

Create a "sink" pass that is parameterised by a rank: Fn(Node) -> i64.

For all pairs of operations (o1,o2) such that:

  • they have the same dataflow parent
  • neither dominates the other
  • rank(o1) > rank(o2)

After the pass is run o1 dominates o2.

This should be achieved by adding order edges.

This is fixing a specific topological sort, so it could be called ~"force order".

sink sounds like a flow-related thing instead.