Loading llvm/docs/WritingAnLLVMBackend.html +16 −12 Original line number Diff line number Diff line Loading @@ -109,15 +109,16 @@ described the instruction set with the assembly printer generator in mind, that step can be almost automated.</li> </ul> <p>Now, for static code generation you also need to write an instruction selector for your platform: see <tt>lib/Target/*/*ISelSimple.cpp</tt> which is no longer "simple" but it gives you the idea: you have to be able to create MachineInstrs for any given LLVM instruction using the <tt>InstVisitor</tt> pattern, and produce a <tt>MachineFunction</tt> with <tt>MachineBasicBlock</tt>s full of <tt><a href="CodeGenerator.html#machineinstr">MachineInstr</a></tt>s for a corresponding LLVM Function. Creating an instruction selector is perhaps the most time-consuming part of creating a back-end.</p> <p>You also need to write an instruction selector for your platform. The recommended method is the <a href="CodeGenerator.html#instselect">pattern-matching instruction selector</a>, examples of which you can see in other targets: <tt>lib/Target/*/*ISelPattern.cpp</tt>. The former method for writing instruction selectors (<b>not</b> recommended for new targets) is evident in <tt>lib/Target/*/*ISelSimple.cpp</tt>, which are <tt>InstVisitor</tt>-based translators, generating code for an LLVM instruction at a time. Creating an instruction selector is perhaps the most time-consuming part of creating a back-end.</p> <p>To create a JIT for your platform:</p> Loading Loading @@ -229,10 +230,13 @@ how the C backend is written.</p> <ul> <li><a href="CodeGenerator.html">Code generator</a> - describes some of the classes in code generation at a high level, but it is not (yet) complete.</li> it is not (yet) complete</li> <li><a href="TableGenFundamentals.html">TableGen fundamentals</a> - describes how to use TableGen to describe your target information succinctly </li> describes how to use TableGen to describe your target information succinctly</li> <li><a href="HowToSubmitABug.html#codegen">Debugging code generation with bugpoint</a> - shows bugpoint usage scenarios to simplify backend development</li> </ul> </div> Loading Loading
llvm/docs/WritingAnLLVMBackend.html +16 −12 Original line number Diff line number Diff line Loading @@ -109,15 +109,16 @@ described the instruction set with the assembly printer generator in mind, that step can be almost automated.</li> </ul> <p>Now, for static code generation you also need to write an instruction selector for your platform: see <tt>lib/Target/*/*ISelSimple.cpp</tt> which is no longer "simple" but it gives you the idea: you have to be able to create MachineInstrs for any given LLVM instruction using the <tt>InstVisitor</tt> pattern, and produce a <tt>MachineFunction</tt> with <tt>MachineBasicBlock</tt>s full of <tt><a href="CodeGenerator.html#machineinstr">MachineInstr</a></tt>s for a corresponding LLVM Function. Creating an instruction selector is perhaps the most time-consuming part of creating a back-end.</p> <p>You also need to write an instruction selector for your platform. The recommended method is the <a href="CodeGenerator.html#instselect">pattern-matching instruction selector</a>, examples of which you can see in other targets: <tt>lib/Target/*/*ISelPattern.cpp</tt>. The former method for writing instruction selectors (<b>not</b> recommended for new targets) is evident in <tt>lib/Target/*/*ISelSimple.cpp</tt>, which are <tt>InstVisitor</tt>-based translators, generating code for an LLVM instruction at a time. Creating an instruction selector is perhaps the most time-consuming part of creating a back-end.</p> <p>To create a JIT for your platform:</p> Loading Loading @@ -229,10 +230,13 @@ how the C backend is written.</p> <ul> <li><a href="CodeGenerator.html">Code generator</a> - describes some of the classes in code generation at a high level, but it is not (yet) complete.</li> it is not (yet) complete</li> <li><a href="TableGenFundamentals.html">TableGen fundamentals</a> - describes how to use TableGen to describe your target information succinctly </li> describes how to use TableGen to describe your target information succinctly</li> <li><a href="HowToSubmitABug.html#codegen">Debugging code generation with bugpoint</a> - shows bugpoint usage scenarios to simplify backend development</li> </ul> </div> Loading