.. _porting: Porting GlobalISel to A New Target ================================== There are four major classes to implement by the target: * :ref:`CallLowering ` --- lower calls, returns, and arguments according to the ABI. * :ref:`RegisterBankInfo ` --- describe :ref:`gmir-regbank` coverage, cross-bank copy cost, and the mapping of operands onto banks for each instruction. * :ref:`LegalizerInfo ` --- describe what is legal, and how to legalize what isn't. * :ref:`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`. 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.