Make enum-valued bitfield large enough to avoid interpretation as negative values...
[oota-llvm.git] / include / llvm / Intrinsics.h
index 9014473183388ae34fcaad7a7a44ed2d06f57670..3a97b33358d87e17501a4bf2fba591392decd329 100644 (file)
 
 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().
@@ -30,7 +35,22 @@ 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::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