blob: 657279106e04aca62616cfca970489e8d2f2790d [file] [log] [blame]
Nick Lewyckyf7a3c502010-09-07 18:14:24 +00001//===-- PTX.h - Top-level interface for PTX representation ------*- 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// This file contains the entry points for global functions defined in the LLVM
11// PTX back-end.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef PTX_H
16#define PTX_H
17
18#include "llvm/Target/TargetMachine.h"
19
20namespace llvm {
Eric Christopher50880d02010-09-18 18:52:28 +000021 class PTXTargetMachine;
22 class FunctionPass;
23
Che-Liang Chioud34f19f2010-12-30 10:41:27 +000024 namespace PTX {
25 enum StateSpace {
26 GLOBAL = 0, // default to global state space
27 CONSTANT = 1,
28 LOCAL = 2,
29 PARAMETER = 3,
30 SHARED = 4
31 };
Che-Liang Chiouc2ec0f92011-03-13 17:26:00 +000032
33 enum Predicate {
34 PRED_IGNORE = 0,
35 PRED_NEGATE = 1
36 };
Che-Liang Chioud34f19f2010-12-30 10:41:27 +000037 } // namespace PTX
38
Eric Christopher50880d02010-09-18 18:52:28 +000039 FunctionPass *createPTXISelDag(PTXTargetMachine &TM,
40 CodeGenOpt::Level OptLevel);
41
Che-Liang Chiou3278c422010-11-08 03:00:52 +000042 FunctionPass *createPTXMFInfoExtract(PTXTargetMachine &TM,
43 CodeGenOpt::Level OptLevel);
44
Nick Lewyckyf7a3c502010-09-07 18:14:24 +000045 extern Target ThePTXTarget;
46} // namespace llvm;
47
Eric Christopher50880d02010-09-18 18:52:28 +000048// Defines symbolic names for PTX registers.
49#include "PTXGenRegisterNames.inc"
50
51// Defines symbolic names for the PTX instructions.
52#include "PTXGenInstrNames.inc"
53
Nick Lewyckyf7a3c502010-09-07 18:14:24 +000054#endif // PTX_H