將 GlobalISel 移植到新目標¶
目標需要實作四個主要類別
CallLowering — 根據 ABI 降低呼叫、返回和引數。
RegisterBankInfo — 描述Register Bank 覆蓋範圍、跨 bank 複製成本,以及每個指令的運算元到 bank 的映射。
LegalizerInfo — 描述什么是合法的,以及如何合法化不合法的。
InstructionSelector — 選擇通用 MIR 到目標特定 MIR。
此外
TargetPassConfig
— 創建構成管線的 pass,包括未包含在核心管線中的額外 pass。
教學¶
我們建議觀看 2017 年 LLVM 開發者會議的本教學,其中概述了如何在 GlobalISel 中啟動新的後端。