//===-- llvm/Target/TargetIntrinsicInfo.h - Instruction Info ----*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file describes the target intrinsic instructions to the code generator. // //===----------------------------------------------------------------------===// #ifndef LLVM_TARGET_TARGETINTRINSICINFO_H #define LLVM_TARGET_TARGETINTRINSICINFO_H namespace llvm { class Function; class Module; class Type; //--------------------------------------------------------------------------- /// /// TargetIntrinsicInfo - Interface to description of machine instruction set /// class TargetIntrinsicInfo { const char **Intrinsics; // Raw array to allow static init'n unsigned NumIntrinsics; // Number of entries in the desc array TargetIntrinsicInfo(const TargetIntrinsicInfo &); // DO NOT IMPLEMENT void operator=(const TargetIntrinsicInfo &); // DO NOT IMPLEMENT public: TargetIntrinsicInfo(const char **desc, unsigned num); virtual ~TargetIntrinsicInfo(); unsigned getNumIntrinsics() const { return NumIntrinsics; } virtual Function *getDeclaration(Module *M, const char *BuiltinName) const { return 0; } // Returns the Function declaration for intrinsic BuiltinName. If the // intrinsic can be overloaded, uses Tys to return the correct function. virtual Function *getDeclaration(Module *M, const char *BuiltinName, const Type **Tys, unsigned numTys) const { return 0; } // Returns true if the Builtin can be overloaded. virtual bool isOverloaded(Module *M, const char *BuiltinName) const { return false; } virtual unsigned getIntrinsicID(Function *F) const { return 0; } }; } // End llvm namespace #endif