excerpt
基于模式匹配的指令选择
基于树的模式匹配
中间表示树上的一个部分作为一个单元
将指令选择问题转变为图的覆盖问题
Optimum Tiling vs Optimal Tiling
Optimum Tiling: 全局最优
Optimal Tiling: 局部最优
指令选择的算法
Maximal Munch 算法
Maximal Munch 算法
Tile 的
在 Maximal Munch 算法中
从 IR 树的根节点开始
对每个被分割出的子树
在完成 Tile 的放置后
基于动态规划的算法
动态规划
自下而上地计算每个节点的最小成本
对于节点 $x$
$$f(x) = \min_{\forall T\text{ covering }x}\left( \text{cots}(T) + \sum_{\forall \text{ child }y\text{ of tile }T}f(y) \right)
$$
当整棵 IR 树的根节点的最小代价被找到
Emission(node n)
n
选择的 Tile 产生的每一个子树的根节点 li
Emission(li)
n
选择的 Tile 对应的指令