Three kinds of dependencies in ISel DAG.
- Execution Dependency, represented by
Chain,Bluedash line in DAG view, means the targeted Operation (SDNode) should executed before the targeting one, even no data dependency between them. - Data Dependency, represented by
Operandsof a SDNode,Darksolid line in DAG view, means the result of targeted Operation is operand of the targeting Operation. - Binding Dependency, represented by
Glue,Redsolid line in DAG view, means targeted and targeting operations should glue together as one schedule unit.
By the way, Operands of an operation can be in order.
- Chain.
- Results of other Operations, with types.
- Glue.
And Results of an operation can be in order.
- Results with Types.
- Chain.
- Glue.
Example showed in following image, focusing on CopyFromReg SDNode.