SelectionDAG和SelectionDAGISel之间的关系

时间:2014-11-08 05:22:01

标签: llvm

我常常对SelectionDAG和SelectionDAGISel之间的关系感到困惑,还有其他一些相关的类如SelectionDAGLowering。理解他们在高层次上的关系非常有用。

1 个答案:

答案 0 :(得分:2)

首先,我想给你一些关于指令选择的精彩链接:

简而言之,SelectionDAG是一种具有显式指令依赖性的内部表示。它用于指令选择和调度(DAG example)。

SelectionDAGISel是一个传递,它将与机器无关的LLVM IR转换为机器相关的表示形式(MachineFunctionMachineBasicBlockMachineInstr),即传递构建SelectionDAG并执行指令选择和调度。它由特定目标子类化,例如ARMDAGToDAGISel

SelectionDAGBuilder是一个从LLVM IR构建SelectionDAG的类。

我不确定SelectionDAGLowering。它似乎是SelectionDAGBuilder类的旧名称。