X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FIntrinsics.h;h=3a97b33358d87e17501a4bf2fba591392decd329;hb=d743f0e8f2c1f878f578a928157dbe75d643b5bb;hp=c07d9c1a8268387e2cadb8f09c28888c7ed28c0b;hpb=eea35433d28e40956b67e5717e7058c30d1cf375;p=oota-llvm.git diff --git a/include/llvm/Intrinsics.h b/include/llvm/Intrinsics.h index c07d9c1a826..3a97b33358d 100644 --- a/include/llvm/Intrinsics.h +++ b/include/llvm/Intrinsics.h @@ -1,5 +1,12 @@ //===-- llvm/Instrinsics.h - LLVM Intrinsic Function Handling ---*- C++ -*-===// // +// 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 defines a set of enums which allow processing of intrinsic // functions. Values of these enum types are returned by // Function::getIntrinsicID. @@ -9,13 +16,43 @@ #ifndef LLVM_INTRINSICS_H #define LLVM_INTRINSICS_H -namespace LLVMIntrinsic { +namespace llvm { + +class Type; +class FunctionType; +class Function; +class Module; + +/// 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(). +/// +namespace Intrinsic { enum ID { not_intrinsic = 0, // Must be zero - va_start, // Used to represent a va_start call in C - va_end, // Used to represent a va_end call in C - va_copy, // Used to represent a va_copy call in C + + // Get the intrinsic enums generated from Intrinsics.td +#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::getDeclaration(M, ID) - Create or insert an LLVM Function + /// declaration for an intrinsic, and return it. + Function *getDeclaration(Module *M, ID id, const Type **Tys = 0, + unsigned numTys = 0); + +} // End Intrinsic namespace + +} // End llvm namespace #endif