forked from OSchip/llvm-project
parent
bdd6bd8236
commit
31e1e5e37a
|
@ -107,19 +107,17 @@ support for it. Generally you must do the following steps:</p>
|
|||
<dt>Add support to the C backend in <tt>lib/Target/CBackend/</tt></dt>
|
||||
|
||||
<dd>Depending on the intrinsic, there are a few ways to implement this. For
|
||||
most intrinsics, it makes sense to add code to lower your intrinsic in
|
||||
<tt>LowerIntrinsicCall</tt> in <tt>lib/CodeGen/IntrinsicLowering.cpp</tt>.
|
||||
Second, if it makes sense to lower the intrinsic to an expanded sequence of C
|
||||
code in all cases, just emit the expansion in <tt>visitCallInst</tt> in
|
||||
<tt>Writer.cpp</tt>. If the intrinsic has some way to express it with GCC
|
||||
(or any other compiler) extensions, it can be conditionally supported based on
|
||||
the compiler compiling the CBE output (see <tt>llvm.prefetch</tt> for an
|
||||
example).
|
||||
Third, if the intrinsic really has no way to be lowered, just have the code
|
||||
generator emit code that prints an error message and calls abort if executed.
|
||||
</dd>
|
||||
most intrinsics, it makes sense to add code to lower your intrinsic in
|
||||
<tt>LowerIntrinsicCall</tt> in <tt>lib/CodeGen/IntrinsicLowering.cpp</tt>.
|
||||
Second, if it makes sense to lower the intrinsic to an expanded sequence of
|
||||
C code in all cases, just emit the expansion in <tt>visitCallInst</tt> in
|
||||
<tt>Writer.cpp</tt>. If the intrinsic has some way to express it with GCC
|
||||
(or any other compiler) extensions, it can be conditionally supported based
|
||||
on the compiler compiling the CBE output (see <tt>llvm.prefetch</tt> for an
|
||||
example). Third, if the intrinsic really has no way to be lowered, just
|
||||
have the code generator emit code that prints an error message and calls
|
||||
abort if executed.</dd>
|
||||
|
||||
<dl>
|
||||
<dt>Add support to the .td file for the target(s) of your choice in
|
||||
<tt>lib/Target/*/*.td</tt>.</dt>
|
||||
|
||||
|
@ -127,6 +125,7 @@ generator emit code that prints an error message and calls abort if executed.
|
|||
the intrinsic, though it may obviously require adding the instructions you
|
||||
want to generate as well. There are lots of examples in the PowerPC and X86
|
||||
backend to follow.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue