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