AMDILIntrinsicInfo.cpp revision 263508
1//===- AMDILIntrinsicInfo.cpp - 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 AMDGPU Implementation of the IntrinsicInfo class. 12// 13//===-----------------------------------------------------------------------===// 14 15#include "AMDILIntrinsicInfo.h" 16#include "AMDGPUSubtarget.h" 17#include "llvm/IR/DerivedTypes.h" 18#include "llvm/IR/Intrinsics.h" 19#include "llvm/IR/Module.h" 20 21using namespace llvm; 22 23#define GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN 24#include "AMDGPUGenIntrinsics.inc" 25#undef GET_LLVM_INTRINSIC_FOR_GCC_BUILTIN 26 27AMDGPUIntrinsicInfo::AMDGPUIntrinsicInfo(TargetMachine *tm) 28 : TargetIntrinsicInfo() { 29} 30 31std::string 32AMDGPUIntrinsicInfo::getName(unsigned int IntrID, Type **Tys, 33 unsigned int numTys) const { 34 static const char* const names[] = { 35#define GET_INTRINSIC_NAME_TABLE 36#include "AMDGPUGenIntrinsics.inc" 37#undef GET_INTRINSIC_NAME_TABLE 38 }; 39 40 if (IntrID < Intrinsic::num_intrinsics) { 41 return 0; 42 } 43 assert(IntrID < AMDGPUIntrinsic::num_AMDGPU_intrinsics 44 && "Invalid intrinsic ID"); 45 46 std::string Result(names[IntrID - Intrinsic::num_intrinsics]); 47 return Result; 48} 49 50unsigned int 51AMDGPUIntrinsicInfo::lookupName(const char *Name, unsigned int Len) const { 52 if (!StringRef(Name, Len).startswith("llvm.")) 53 return 0; // All intrinsics start with 'llvm.' 54 55#define GET_FUNCTION_RECOGNIZER 56#include "AMDGPUGenIntrinsics.inc" 57#undef GET_FUNCTION_RECOGNIZER 58 AMDGPUIntrinsic::ID IntrinsicID 59 = (AMDGPUIntrinsic::ID)Intrinsic::not_intrinsic; 60 IntrinsicID = getIntrinsicForGCCBuiltin("AMDGPU", Name); 61 62 if (IntrinsicID != (AMDGPUIntrinsic::ID)Intrinsic::not_intrinsic) { 63 return IntrinsicID; 64 } 65 return 0; 66} 67 68bool 69AMDGPUIntrinsicInfo::isOverloaded(unsigned id) const { 70 // Overload Table 71#define GET_INTRINSIC_OVERLOAD_TABLE 72#include "AMDGPUGenIntrinsics.inc" 73#undef GET_INTRINSIC_OVERLOAD_TABLE 74} 75 76Function* 77AMDGPUIntrinsicInfo::getDeclaration(Module *M, unsigned IntrID, 78 Type **Tys, 79 unsigned numTys) const { 80 llvm_unreachable("Not implemented"); 81} 82