Porting GlobalISel to A New Target#
There are four major classes to implement by the target:
CallLowering — lower calls, returns, and arguments according to the ABI.
RegisterBankInfo — describe Register Bank coverage, cross-bank copy cost, and the mapping of operands onto banks for each instruction.
LegalizerInfo — describe what is legal, and how to legalize what isn’t.
InstructionSelector — select generic MIR to target-specific MIR.
Additionally:
TargetPassConfig— create the passes constituting the pipeline, including additional passes not included in the Core Pipeline.
Tutorials#
We’d recommend watching this tutorial from the 2017 LLVM DevMeeting which gave an overview of how to bring up a new backend in GlobalISel.