X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FIntrinsics.h;h=1874d1a29de241dfaf316e7bac65cfcbafb69134;hb=0011dc4738fbe624d44197ef9496517fd093eaa4;hp=9014473183388ae34fcaad7a7a44ed2d06f57670;hpb=68b67ff3db2c89909b0a37078bf2cf4a80ef1d53;p=oota-llvm.git diff --git a/include/llvm/Intrinsics.h b/include/llvm/Intrinsics.h index 90144731833..1874d1a29de 100644 --- a/include/llvm/Intrinsics.h +++ b/include/llvm/Intrinsics.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -16,8 +16,16 @@ #ifndef LLVM_INTRINSICS_H #define LLVM_INTRINSICS_H +#include + namespace llvm { +class Type; +class FunctionType; +class Function; +class Module; +class PAListPtr; + /// Intrinsic Namespace - This namespace contains an enum with a value for /// every intrinsic/builtin function known by LLVM. These enum values are /// returned by Function::getIntrinsicID(). @@ -30,7 +38,32 @@ namespace Intrinsic { #define GET_INTRINSIC_ENUM_VALUES #include "llvm/Intrinsics.gen" #undef GET_INTRINSIC_ENUM_VALUES + , num_intrinsics }; + + /// Intrinsic::getName(ID) - Return the LLVM name for an intrinsic, such as + /// "llvm.ppc.altivec.lvx". + std::string getName(ID id, const Type **Tys = 0, unsigned numTys = 0); + + /// Intrinsic::getType(ID) - Return the function type for an intrinsic. + /// + const FunctionType *getType(ID id, const Type **Tys = 0, unsigned numTys = 0); + + /// Intrinsic::getParamAttrs(ID) - Return the attributes for an intrinsic. + /// + PAListPtr getParamAttrs(ID id); + + /// Intrinsic::getDeclaration(M, ID) - Create or insert an LLVM Function + /// declaration for an intrinsic, and return it. + /// + /// The Tys and numTys parameters are for intrinsics with overloaded types + /// (i.e., those using iAny or fAny). For a declaration for an overloaded + /// intrinsic, Tys should point to an array of numTys pointers to Type, + /// and must provide exactly one type for each overloaded type in the + /// intrinsic. + Function *getDeclaration(Module *M, ID id, const Type **Tys = 0, + unsigned numTys = 0); + } // End Intrinsic namespace } // End llvm namespace