Recommend writing new instruction selectors using pattern-based mechanisms
authorMisha Brukman <brukman+llvm@gmail.com>
Tue, 17 May 2005 02:27:30 +0000 (02:27 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Tue, 17 May 2005 02:27:30 +0000 (02:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22098 91177308-0d34-0410-b5e6-96231b3b80d8

docs/WritingAnLLVMBackend.html

index 3bd23b4604030b54ec18bb1fa894c84d7bc3ec38..abf91feb8a87de0dfd53f889325c8818fa734513 100644 (file)
@@ -109,15 +109,14 @@ 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 pattern-matching instruction selector.  You can see
+examples in other targets: <tt>lib/Target/*/*ISelPattern.cpp</tt>.  The former
+method for writing instruction selectors (<b>not</b> recommended) is
+encapsulated 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>