X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FIntrinsics.h;h=3a97b33358d87e17501a4bf2fba591392decd329;hb=a727d5502c8e23c090da658bf14c5ebc1169a070;hp=26b9c355d4fe9060590bcdc46541d4d996c3b0d8;hpb=f4836c754a5b37064d49220e1be97d46a28b9d8b;p=oota-llvm.git diff --git a/include/llvm/Intrinsics.h b/include/llvm/Intrinsics.h index 26b9c355d4f..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,35 +16,43 @@ #ifndef LLVM_INTRINSICS_H #define LLVM_INTRINSICS_H -/// LLVMIntrinsic Namespace - This namespace contains an enum with a value for +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 LLVMIntrinsic { +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 - - setjmp, // Used to represent a setjmp call in C - longjmp, // Used to represent a longjmp call in C - - //===------------------------------------------------------------------===// - // This section defines intrinsic functions used to represent Alpha - // instructions... - // - alpha_ctlz, // CTLZ (count leading zero): counts the number of leading - // zeros in the given ulong value - alpha_cttz, // CTTZ (count trailing zero): counts the number of trailing - // zeros in the given ulong value - alpha_ctpop, // CTPOP (count population): counts the number of ones in - // the given ulong value - alpha_umulh, // UMULH (unsigned multiply quadword high): Takes two 64-bit - // (ulong) values, and returns the upper 64 bits of their - // 128 bit product as a ulong + // 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