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

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/include/llvm/Target/TargetIntrinsicInfo.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/Target/TargetIntrinsicInfo.h - Instruction Info ----*- 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 describes the target intrinsic instructions to the code generator.
11
 
//
12
 
//===----------------------------------------------------------------------===//
13
 
 
14
 
#ifndef LLVM_TARGET_TARGETINTRINSICINFO_H
15
 
#define LLVM_TARGET_TARGETINTRINSICINFO_H
16
 
 
17
 
#include <string>
18
 
 
19
 
namespace llvm {
20
 
 
21
 
class Function;
22
 
class Module;
23
 
class Type;
24
 
 
25
 
//---------------------------------------------------------------------------
26
 
///
27
 
/// TargetIntrinsicInfo - Interface to description of machine instruction set
28
 
///
29
 
class TargetIntrinsicInfo {
30
 
  TargetIntrinsicInfo(const TargetIntrinsicInfo &); // DO NOT IMPLEMENT
31
 
  void operator=(const TargetIntrinsicInfo &);      // DO NOT IMPLEMENT
32
 
public:
33
 
  TargetIntrinsicInfo();
34
 
  virtual ~TargetIntrinsicInfo();
35
 
 
36
 
  /// Return the name of a target intrinsic, e.g. "llvm.bfin.ssync".
37
 
  /// The Tys and numTys parameters are for intrinsics with overloaded types
38
 
  /// (e.g., those using iAny or fAny). For a declaration for an overloaded
39
 
  /// intrinsic, Tys should point to an array of numTys pointers to Type,
40
 
  /// and must provide exactly one type for each overloaded type in the
41
 
  /// intrinsic.
42
 
  virtual std::string getName(unsigned IID, const Type **Tys = 0,
43
 
                              unsigned numTys = 0) const = 0;
44
 
 
45
 
  /// Look up target intrinsic by name. Return intrinsic ID or 0 for unknown
46
 
  /// names.
47
 
  virtual unsigned lookupName(const char *Name, unsigned Len) const =0;
48
 
 
49
 
  /// Return the target intrinsic ID of a function, or 0.
50
 
  virtual unsigned getIntrinsicID(Function *F) const;
51
 
 
52
 
  /// Returns true if the intrinsic can be overloaded.
53
 
  virtual bool isOverloaded(unsigned IID) const = 0;
54
 
  
55
 
  /// Create or insert an LLVM Function declaration for an intrinsic,
56
 
  /// and return it. The Tys and numTys are for intrinsics with overloaded
57
 
  /// types. See above for more information.
58
 
  virtual Function *getDeclaration(Module *M, unsigned ID, const Type **Tys = 0,
59
 
                                   unsigned numTys = 0) const = 0;
60
 
};
61
 
 
62
 
} // End llvm namespace
63
 
 
64
 
#endif