LLVM 23.0.0git
NVPTX.h
Go to the documentation of this file.
1//===-- NVPTX.h - Top-level interface for NVPTX representation --*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file contains the entry points for global functions defined in
10// the LLVM NVPTX back-end.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_LIB_TARGET_NVPTX_NVPTX_H
15#define LLVM_LIB_TARGET_NVPTX_NVPTX_H
16
17#include "llvm/IR/PassManager.h"
18#include "llvm/Pass.h"
23
24namespace llvm {
25class FunctionPass;
28class PassRegistry;
29
30namespace NVPTXCC {
39}
40
41FunctionPass *createNVPTXISelDag(NVPTXTargetMachine &TM,
42 llvm::CodeGenOptLevel OptLevel);
47ModulePass *createNVVMReflectPass(unsigned int SmVersion);
55 bool NoTrapAfterNoreturn);
62
86
90
94
95struct NVVMReflectPass : PassInfoMixin<NVVMReflectPass> {
96 NVVMReflectPass() : SmVersion(0) {}
97 NVVMReflectPass(unsigned SmVersion) : SmVersion(SmVersion) {}
99
100private:
101 unsigned SmVersion;
102};
103
104struct GenericToNVVMPass : PassInfoMixin<GenericToNVVMPass> {
106};
107
111
113 : PassInfoMixin<NVPTXSetByValParamAlignPass> {
115};
116
117struct NVPTXLowerArgsPass : PassInfoMixin<NVPTXLowerArgsPass> {
118private:
119 TargetMachine &TM;
120
121public:
124};
125
127 : PassInfoMixin<NVPTXMarkKernelPtrsGlobalPass> {
129};
130
131struct NVPTXTagInvariantLoadsPass : PassInfoMixin<NVPTXTagInvariantLoadsPass> {
133};
134
135namespace NVPTX {
140
141// A field inside TSFlags needs a shift and a mask. The usage is
142// always as follows :
143// ((TSFlags & fieldMask) >> fieldShift)
144// The enum keeps the mask, the shift, and all valid values of the
145// field in one place.
160
171
172// Extends LLVM AtomicOrdering with PTX Orderings:
173using OrderingUnderlyingType = unsigned int;
188
189using ScopeUnderlyingType = unsigned int;
192 Block = 1,
196 DefaultDevice = 5, // For SM < 70: denotes PTX op implicit/default .gpu scope
198};
199
200using AddressSpaceUnderlyingType = unsigned int;
209
210 // DeviceParam is not a real address space, as it does not support pointers
211 // and instead can only be referenced by param+offset. For this reason it is
212 // only used in MIR as an instruction modifier and should not be used in LLVM
213 // IR.
215};
216
219} // namespace PTXLdStInstCode
220
221/// PTXCvtMode - Conversion code enumeration
242
243/// PTXCmpMode - Comparison mode enumeration
244namespace PTXCmpMode {
262}
263
275
276enum class DivPrecisionLevel : unsigned {
278 Full = 1,
281};
282
283} // namespace NVPTX
285} // namespace llvm
286
287// Defines symbolic names for NVPTX registers. This defines a mapping from
288// register name to register number.
289#define GET_REGINFO_ENUM
290#include "NVPTXGenRegisterInfo.inc"
291
292// Defines symbolic names for the NVPTX instructions.
293#define GET_INSTRINFO_ENUM
294#define GET_INSTRINFO_MC_HELPER_DECLS
295#include "NVPTXGenInstrInfo.inc"
296
297#endif
Atomic ordering constants.
This header defines various interfaces for pass management in LLVM.
#define F(x, y, z)
Definition MD5.cpp:54
NVPTX address space definition.
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:314
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:255
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:67
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
Primary interface to the complete machine description for the target machine.
PTXCmpMode - Comparison mode enumeration.
Definition NVPTX.h:244
PTXCvtMode - Conversion code enumeration.
Definition NVPTX.h:222
unsigned int OrderingUnderlyingType
Definition NVPTX.h:173
@ DeviceParam
Definition NVPTX.h:214
@ SharedCluster
Definition NVPTX.h:207
@ EntryParam
Definition NVPTX.h:208
@ VecInstTypeShift
Definition NVPTX.h:147
@ VecExtract
Definition NVPTX.h:155
@ VecInsert
Definition NVPTX.h:156
@ VecShuffle
Definition NVPTX.h:154
@ VecInstTypeMask
Definition NVPTX.h:148
unsigned int ScopeUnderlyingType
Definition NVPTX.h:189
DivPrecisionLevel
Definition NVPTX.h:276
@ DefaultDevice
Definition NVPTX.h:196
@ LASTSCOPE
Definition NVPTX.h:197
@ RelaxedMMIO
Definition NVPTX.h:186
@ AcquireRelease
Definition NVPTX.h:182
@ NotAtomic
Definition NVPTX.h:175
@ SequentiallyConsistent
Definition NVPTX.h:183
@ isStoreShift
Definition NVPTX.h:169
@ isLoadShift
Definition NVPTX.h:167
@ isLoadMask
Definition NVPTX.h:166
@ isStoreMask
Definition NVPTX.h:168
@ SimpleMoveShift
Definition NVPTX.h:163
@ SimpleMoveMask
Definition NVPTX.h:162
unsigned int AddressSpaceUnderlyingType
Definition NVPTX.h:200
This is an optimization pass for GlobalISel generic memory operations.
void initializeNVPTXLowerAllocaPass(PassRegistry &)
FunctionPass * createNVPTXIRPeepholePass()
ModulePass * createNVPTXAssignValidGlobalNamesPass()
void initializeNVPTXPrologEpilogPassPass(PassRegistry &)
MachineFunctionPass * createNVPTXReplaceImageHandlesPass()
FunctionPass * createNVPTXLowerUnreachablePass(bool TrapUnreachable, bool NoTrapAfterNoreturn)
void initializeNVPTXAssignValidGlobalNamesPass(PassRegistry &)
ModulePass * createGenericToNVVMLegacyPass()
void initializeNVPTXLowerAggrCopiesPass(PassRegistry &)
void initializeNVPTXExternalAAWrapperPass(PassRegistry &)
MachineFunctionPass * createNVPTXPrologEpilogPass()
MachineFunctionPass * createNVPTXProxyRegErasurePass()
void initializeNVPTXLowerArgsLegacyPassPass(PassRegistry &)
FunctionPass * createNVPTXSetByValParamAlignPass()
MachineFunctionPass * createNVPTXPeephole()
void initializeNVVMReflectPass(PassRegistry &)
FunctionPass * createNVPTXISelDag(NVPTXTargetMachine &TM, llvm::CodeGenOptLevel OptLevel)
createNVPTXISelDag - This pass converts a legalized DAG into a NVPTX-specific DAG,...
void initializeGenericToNVVMLegacyPassPass(PassRegistry &)
void initializeNVPTXPeepholePass(PassRegistry &)
void initializeNVPTXCtorDtorLoweringLegacyPass(PassRegistry &)
void initializeNVPTXLowerUnreachablePass(PassRegistry &)
FunctionPass * createNVPTXTagInvariantLoadsPass()
void initializeNVVMReflectLegacyPassPass(PassRegistry &)
FunctionPass * createNVPTXLowerArgsPass()
void initializeNVPTXAAWrapperPassPass(PassRegistry &)
FunctionPass * createNVPTXImageOptimizerPass()
FunctionPass * createNVPTXLowerAllocaPass()
void initializeNVPTXIRPeepholePass(PassRegistry &)
MachineFunctionPass * createNVPTXForwardParamsPass()
FunctionPass * createNVPTXMarkKernelPtrsGlobalPass()
void initializeNVVMIntrRangePass(PassRegistry &)
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82
void initializeNVPTXAsmPrinterPass(PassRegistry &)
void initializeNVPTXTagInvariantLoadLegacyPassPass(PassRegistry &)
ModulePass * createNVPTXCtorDtorLoweringLegacyPass()
void initializeNVPTXMarkKernelPtrsGlobalLegacyPassPass(PassRegistry &)
void initializeNVPTXAllocaHoistingPass(PassRegistry &)
void initializeNVPTXSetByValParamAlignLegacyPassPass(PassRegistry &)
void initializeNVPTXProxyRegErasurePass(PassRegistry &)
ModulePass * createNVVMReflectPass(unsigned int SmVersion)
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
FunctionPass * createNVVMIntrRangePass()
void initializeNVPTXAtomicLowerPass(PassRegistry &)
void initializeNVPTXForwardParamsPassPass(PassRegistry &)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
void initializeNVPTXDAGToDAGISelLegacyPass(PassRegistry &)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
NVPTXLowerArgsPass(TargetMachine &TM)
Definition NVPTX.h:122
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &F, ModuleAnalysisManager &AM)
NVVMReflectPass(unsigned SmVersion)
Definition NVPTX.h:97
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition PassManager.h:70