将 GlobalISel 移植到新目标¶
目标需要实现四个主要的类
CallLowering(调用降低) — 根据 ABI 降低调用、返回和参数。
RegisterBankInfo(寄存器组信息) — 描述 寄存器组 覆盖范围、跨组复制成本以及每个指令的操作数到组的映射。
LegalizerInfo(合法化器信息) — 描述什么是合法的,以及如何合法化不合法的事物。
InstructionSelector(指令选择器) — 选择通用 MIR 到目标特定的 MIR。
此外
TargetPassConfig
— 创建构成流水线的 pass,包括未包含在 核心流水线 中的附加 pass。
教程¶
我们建议观看 2017 年 LLVM 开发者会议上的 这个教程,其中概述了如何在 GlobalISel 中启动新的后端。