1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===- AMDILIntrinsicInfo.h - AMDIL Intrinsic Information ------*- C++ -*-===// 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// The LLVM Compiler Infrastructure 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This file is distributed under the University of Illinois Open Source 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// License. See LICENSE.TXT for details. 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//==-----------------------------------------------------------------------===// 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Interface for the AMDIL Implementation of the Intrinsic Info class. 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===-----------------------------------------------------------------------===// 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef _AMDIL_INTRINSICS_H_ 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _AMDIL_INTRINSICS_H_ 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "llvm/Intrinsics.h" 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "llvm/Target/TargetIntrinsicInfo.h" 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace llvm { 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class TargetMachine; 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org namespace AMDGPUIntrinsic { 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org enum ID { 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org last_non_AMDGPU_intrinsic = Intrinsic::num_intrinsics - 1, 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define GET_INTRINSIC_ENUM_VALUES 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "AMDGPUGenIntrinsics.inc" 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#undef GET_INTRINSIC_ENUM_VALUES 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org , num_AMDGPU_intrinsics 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class AMDGPUIntrinsicInfo : public TargetIntrinsicInfo { 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org AMDGPUIntrinsicInfo(TargetMachine *tm); 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org std::string getName(unsigned int IntrId, Type **Tys = 0, 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned int numTys = 0) const; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned int lookupName(const char *Name, unsigned int Len) const; 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org bool isOverloaded(unsigned int IID) const; 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Function *getDeclaration(Module *M, unsigned int ID, 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org Type **Tys = 0, 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned int numTys = 0) const; 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; // AMDGPUIntrinsicInfo 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // _AMDIL_INTRINSICS_H_ 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 48