Commit 4447fc67 authored by John Criswell's avatar John Criswell
Browse files

Merged Misha Modifications from Mainline.

llvm-svn: 22105
parent 4d9d10c7
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -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>

@@ -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>