blob: 6cb8b9644642d1e7ae93e719ad3b215f0ca5497c [file] [log] [blame]
Matt Arsenaultc791f392014-06-23 18:00:31 +00001//===- AMDGPUIntrinsicInfo.h - AMDGPU Intrinsic Information ------*- C++ -*-===//
Tom Stellard75aadc22012-12-11 21:25:42 +00002//
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//===-----------------------------------------------------------------------===//
Matt Arsenault6b6a2c32016-03-11 08:00:27 +000014#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPUINTRINSICINFO_H
15#define LLVM_LIB_TARGET_AMDGPU_AMDGPUINTRINSICINFO_H
Tom Stellard75aadc22012-12-11 21:25:42 +000016
Chandler Carruth9fb823b2013-01-02 11:36:10 +000017#include "llvm/IR/Intrinsics.h"
Tom Stellard75aadc22012-12-11 21:25:42 +000018#include "llvm/Target/TargetIntrinsicInfo.h"
19
20namespace llvm {
21class TargetMachine;
22
23namespace AMDGPUIntrinsic {
24enum 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
Matt Arsenault6b6a2c32016-03-11 08:00:27 +000034class AMDGPUIntrinsicInfo final : public TargetIntrinsicInfo {
Tom Stellard75aadc22012-12-11 21:25:42 +000035public:
Eric Christopherac4b69e2014-07-25 22:22:39 +000036 AMDGPUIntrinsicInfo();
Matt Arsenaulta1fe17c2016-07-19 23:16:53 +000037
38 StringRef getName(unsigned IntrId, ArrayRef<Type *> Tys = None) const;
39
Matt Arsenaultc791f392014-06-23 18:00:31 +000040 std::string getName(unsigned IntrId, Type **Tys = nullptr,
Matt Arsenaulta1fe17c2016-07-19 23:16:53 +000041 unsigned NumTys = 0) const override;
42
Matt Arsenaultc791f392014-06-23 18:00:31 +000043 unsigned lookupName(const char *Name, unsigned Len) const override;
44 bool isOverloaded(unsigned IID) const override;
45 Function *getDeclaration(Module *M, unsigned ID,
Craig Toppere73658d2014-04-28 04:05:08 +000046 Type **Tys = nullptr,
Matt Arsenaulta1fe17c2016-07-19 23:16:53 +000047 unsigned NumTys = 0) const override;
48
49 Function *getDeclaration(Module *M, unsigned ID,
50 ArrayRef<Type *> = None) const;
51
52 FunctionType *getType(LLVMContext &Context, unsigned ID,
53 ArrayRef<Type*> Tys = None) const;
Tom Stellard75aadc22012-12-11 21:25:42 +000054};
55
56} // end namespace llvm
57
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000058#endif