1 //===-- NVPTX.h - Top-level interface for NVPTX representation --*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains the entry points for global functions defined in
11 // the LLVM NVPTX back-end.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_TARGET_NVPTX_H
16 #define LLVM_TARGET_NVPTX_H
18 #include "MCTargetDesc/NVPTXBaseInfo.h"
19 #include "llvm/ADT/StringMap.h"
20 #include "llvm/IR/Module.h"
21 #include "llvm/IR/Value.h"
22 #include "llvm/Support/ErrorHandling.h"
23 #include "llvm/Target/TargetMachine.h"
28 class NVPTXTargetMachine;
30 class formatted_raw_ostream;
43 inline static const char *NVPTXCondCodeToString(NVPTXCC::CondCodes CC) {
58 llvm_unreachable("Unknown condition code");
62 createNVPTXISelDag(NVPTXTargetMachine &TM, llvm::CodeGenOpt::Level OptLevel);
63 FunctionPass *createLowerStructArgsPass(NVPTXTargetMachine &);
64 FunctionPass *createNVPTXReMatPass(NVPTXTargetMachine &);
65 FunctionPass *createNVPTXReMatBlockPass(NVPTXTargetMachine &);
66 ModulePass *createGenericToNVVMPass();
67 ModulePass *createNVVMReflectPass();
68 ModulePass *createNVVMReflectPass(const StringMap<int>& Mapping);
70 bool isImageOrSamplerVal(const Value *, const Module *);
72 extern Target TheNVPTXTarget32;
73 extern Target TheNVPTXTarget64;
82 // A field inside TSFlags needs a shift and a mask. The usage is
83 // always as follows :
84 // ((TSFlags & fieldMask) >> fieldShift)
85 // The enum keeps the mask, the shift, and all valid values of the
86 // field in one place.
89 VecInstTypeMask = 0xF,
103 SimpleMoveMask = 0x10,
113 namespace PTXLdStInstCode {
134 } // end namespace llvm;
136 // Defines symbolic names for NVPTX registers. This defines a mapping from
137 // register name to register number.
138 #define GET_REGINFO_ENUM
139 #include "NVPTXGenRegisterInfo.inc"
141 // Defines symbolic names for the NVPTX instructions.
142 #define GET_INSTRINFO_ENUM
143 #include "NVPTXGenInstrInfo.inc"