Home | History | Annotate | Download | only in R600
      1 //===- AMDGPUIntrinsicInfo.h - AMDGPU Intrinsic Information ------*- 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 /// \file
     11 /// \brief Interface for the AMDGPU Implementation of the Intrinsic Info class.
     12 //
     13 //===-----------------------------------------------------------------------===//
     14 #ifndef AMDGPU_INTRINSICINFO_H
     15 #define AMDGPU_INTRINSICINFO_H
     16 
     17 #include "llvm/IR/Intrinsics.h"
     18 #include "llvm/Target/TargetIntrinsicInfo.h"
     19 
     20 namespace llvm {
     21 class TargetMachine;
     22 
     23 namespace AMDGPUIntrinsic {
     24 enum ID {
     25   last_non_AMDGPU_intrinsic = Intrinsic::num_intrinsics - 1,
     26 #define GET_INTRINSIC_ENUM_VALUES
     27 #include "AMDGPUGenIntrinsics.inc"
     28 #undef GET_INTRINSIC_ENUM_VALUES
     29       , num_AMDGPU_intrinsics
     30 };
     31 
     32 } // end namespace AMDGPUIntrinsic
     33 
     34 class AMDGPUIntrinsicInfo : public TargetIntrinsicInfo {
     35 public:
     36   AMDGPUIntrinsicInfo(TargetMachine *tm);
     37   std::string getName(unsigned IntrId, Type **Tys = nullptr,
     38                       unsigned numTys = 0) const override;
     39   unsigned lookupName(const char *Name, unsigned Len) const override;
     40   bool isOverloaded(unsigned IID) const override;
     41   Function *getDeclaration(Module *M, unsigned ID,
     42                            Type **Tys = nullptr,
     43                            unsigned numTys = 0) const override;
     44 };
     45 
     46 } // end namespace llvm
     47 
     48 #endif // AMDGPU_INTRINSICINFO_H
     49