~ubuntu-branches/ubuntu/feisty/clamav/feisty

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/include/llvm/Intrinsics.h

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-02-20 10:33:44 UTC
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: james.westby@ubuntu.com-20070220103344-zgcu2psnx9d98fpa
Tags: upstream-0.90
ImportĀ upstreamĀ versionĀ 0.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//===-- llvm/Instrinsics.h - LLVM Intrinsic Function Handling ---*- C++ -*-===//
2
 
//
3
 
//                     The LLVM Compiler Infrastructure
4
 
//
5
 
// This file is distributed under the University of Illinois Open Source
6
 
// License. See LICENSE.TXT for details.
7
 
//
8
 
//===----------------------------------------------------------------------===//
9
 
//
10
 
// This file defines a set of enums which allow processing of intrinsic
11
 
// functions.  Values of these enum types are returned by
12
 
// Function::getIntrinsicID.
13
 
//
14
 
//===----------------------------------------------------------------------===//
15
 
 
16
 
#ifndef LLVM_INTRINSICS_H
17
 
#define LLVM_INTRINSICS_H
18
 
 
19
 
#include <string>
20
 
 
21
 
namespace llvm {
22
 
 
23
 
class Type;
24
 
class FunctionType;
25
 
class Function;
26
 
class LLVMContext;
27
 
class Module;
28
 
class AttrListPtr;
29
 
 
30
 
/// Intrinsic Namespace - This namespace contains an enum with a value for
31
 
/// every intrinsic/builtin function known by LLVM.  These enum values are
32
 
/// returned by Function::getIntrinsicID().
33
 
///
34
 
namespace Intrinsic {
35
 
  enum ID {
36
 
    not_intrinsic = 0,   // Must be zero
37
 
 
38
 
    // Get the intrinsic enums generated from Intrinsics.td
39
 
#define GET_INTRINSIC_ENUM_VALUES
40
 
#include "llvm/Intrinsics.gen"    
41
 
#undef GET_INTRINSIC_ENUM_VALUES
42
 
    , num_intrinsics
43
 
  };
44
 
  
45
 
  /// Intrinsic::getName(ID) - Return the LLVM name for an intrinsic, such as
46
 
  /// "llvm.ppc.altivec.lvx".
47
 
  std::string getName(ID id, const Type **Tys = 0, unsigned numTys = 0);
48
 
  
49
 
  /// Intrinsic::getType(ID) - Return the function type for an intrinsic.
50
 
  ///
51
 
  const FunctionType *getType(LLVMContext &Context, ID id,
52
 
                              const Type **Tys = 0, unsigned numTys = 0);
53
 
 
54
 
  /// Intrinsic::isOverloaded(ID) - Returns true if the intrinsic can be
55
 
  /// overloaded.
56
 
  bool isOverloaded(ID id);
57
 
 
58
 
  /// Intrinsic::getAttributes(ID) - Return the attributes for an intrinsic.
59
 
  ///
60
 
  AttrListPtr getAttributes(ID id);
61
 
 
62
 
  /// Intrinsic::getDeclaration(M, ID) - Create or insert an LLVM Function
63
 
  /// declaration for an intrinsic, and return it.
64
 
  ///
65
 
  /// The Tys and numTys parameters are for intrinsics with overloaded types
66
 
  /// (e.g., those using iAny, fAny, vAny, or iPTRAny). For a declaration for an
67
 
  /// overloaded intrinsic, Tys should point to an array of numTys pointers to
68
 
  /// Type, and must provide exactly one type for each overloaded type in the
69
 
  /// intrinsic.
70
 
  Function *getDeclaration(Module *M, ID id, const Type **Tys = 0, 
71
 
                           unsigned numTys = 0);
72
 
                           
73
 
  /// Map a GCC builtin name to an intrinsic ID.
74
 
  ID getIntrinsicForGCCBuiltin(const char *Prefix, const char *BuiltinName);
75
 
  
76
 
} // End Intrinsic namespace
77
 
 
78
 
} // End llvm namespace
79
 
 
80
 
#endif