X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=docs%2FExtendingLLVM.html;h=647fa01d53bbca054ea108d0e1259f39f93c7d65;hb=8ff4b439ddf4659a2a3e4badc89ba24a25b47062;hp=baad89a6ae260b750a4f78b82a61025b67d19417;hpb=c8d0636fefa75d7bf2fdcd0e48a1e12f7d475a31;p=oota-llvm.git diff --git a/docs/ExtendingLLVM.html b/docs/ExtendingLLVM.html index baad89a6ae2..647fa01d53b 100644 --- a/docs/ExtendingLLVM.html +++ b/docs/ExtendingLLVM.html @@ -107,19 +107,17 @@ support for it. Generally you must do the following steps:

Add support to the C backend in lib/Target/CBackend/
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 -LowerIntrinsicCall in lib/CodeGen/IntrinsicLowering.cpp. -Second, if it makes sense to lower the intrinsic to an expanded sequence of C -code in all cases, just emit the expansion in visitCallInst in -Writer.cpp. 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 llvm.prefetch 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. -
+ most intrinsics, it makes sense to add code to lower your intrinsic in + LowerIntrinsicCall in lib/CodeGen/IntrinsicLowering.cpp. + Second, if it makes sense to lower the intrinsic to an expanded sequence of + C code in all cases, just emit the expansion in visitCallInst in + Writer.cpp. 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 llvm.prefetch 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. -
Add support to the .td file for the target(s) of your choice in lib/Target/*/*.td.
@@ -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. +
@@ -228,7 +227,7 @@ complicated behavior in a single node (rotate).

-

WARNING: adding instructions changes the bytecode +

WARNING: adding instructions changes the bitcode format, and it will take some effort to maintain compatibility with the previous version. Only add an instruction if it is absolutely necessary.

@@ -251,8 +250,8 @@ necessary.

add the grammar on how your instruction can be read and what it will construct as a result -
  • llvm/lib/Bytecode/Reader/Reader.cpp: - add a case for your instruction and how it will be parsed from bytecode
  • +
  • llvm/lib/Bitcode/Reader/Reader.cpp: + add a case for your instruction and how it will be parsed from bitcode
  • llvm/lib/VMCore/Instruction.cpp: add a case for how your instruction will be printed out to assembly
  • @@ -285,7 +284,7 @@ to understand this new instruction.

    -

    WARNING: adding new types changes the bytecode +

    WARNING: adding new types changes the bitcode format, and will break compatibility with currently-existing LLVM installations. Only add new types if it is absolutely necessary.

    @@ -348,12 +347,12 @@ bool TypesEqual(const Type *Ty, const Type *Ty2,
  • llvm/lib/AsmReader/Lexer.l: add ability to parse in the type from text assembly
  • -
  • llvm/lib/ByteCode/Writer/Writer.cpp: - modify void BytecodeWriter::outputType(const Type *T) to serialize +
  • llvm/lib/BitCode/Writer/Writer.cpp: + modify void BitcodeWriter::outputType(const Type *T) to serialize your type
  • -
  • llvm/lib/ByteCode/Reader/Reader.cpp: - modify const Type *BytecodeReader::ParseType() to read your data +
  • llvm/lib/BitCode/Reader/Reader.cpp: + modify const Type *BitcodeReader::ParseType() to read your data type
  • llvm/lib/VMCore/AsmWriter.cpp: @@ -379,9 +378,9 @@ void calcTypeName(const Type *Ty,
    Valid CSS! + src="http://jigsaw.w3.org/css-validator/images/vcss-blue" alt="Valid CSS"> Valid HTML 4.01! + src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> The LLVM Compiler Infrastructure