(porting)=
There are four major classes to implement by the target:
CallLowering <translator-call-lower> --- lower calls, returns, and arguments according to the ABI.RegisterBankInfo <api-registerbankinfo> --- describe {ref}gmir-regbank coverage, cross-bank copy cost, and the mapping of operands onto banks for each instruction.LegalizerInfo <api-legalizerinfo> --- describe what is legal, and how to legalize what isn't.InstructionSelector <api-instructionselector> --- select generic MIR to target-specific MIR.Additionally:
TargetPassConfig --- create the passes constituting the pipeline, including additional passes not included in the {ref}pipeline.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.