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