LLVM 24.0.0git
SPIRV.h
Go to the documentation of this file.
1//===-- SPIRV.h - Top-level interface for SPIR-V 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#ifndef LLVM_LIB_TARGET_SPIRV_SPIRV_H
10#define LLVM_LIB_TARGET_SPIRV_SPIRV_H
11
15#include "llvm/IR/Analysis.h"
16#include "llvm/IR/PassManager.h"
17#include "llvm/Pass.h"
18#include "llvm/PassRegistry.h"
20
21namespace llvm {
23class SPIRVSubtarget;
26
28 : public RequiredPassInfoMixin<SPIRVPrepareFunctionsPass> {
29 const SPIRVTargetMachine &TM;
30
31public:
32 explicit SPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM) : TM(TM) {}
34};
35
36ModulePass *createSPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM);
37
39 : public RequiredPassInfoMixin<SPIRVStructurizerPass> {
40public:
42};
43
45
47 : public RequiredPassInfoMixin<SPIRVRemoveUnusedResourcesPass> {
48public:
50};
51
53
55 : public RequiredPassInfoMixin<SPIRVCBufferAccessPass> {
56public:
58};
59
61
63 : public RequiredPassInfoMixin<SPIRVPushConstantAccessPass> {
64 const SPIRVTargetMachine &TM;
65
66public:
69};
70
72
74 : public RequiredPassInfoMixin<SPIRVMergeRegionExitTargetsPass> {
75public:
77};
78
80
82 : public RequiredPassInfoMixin<SPIRVLegalizeResourceBindingPass> {
83public:
85};
86
88
90 : public RequiredPassInfoMixin<SPIRVLegalizeZeroSizeArraysPass> {
91 const SPIRVTargetMachine &TM;
92
93public:
96};
97
99
101 : public RequiredPassInfoMixin<SPIRVFinalizeShaderLinkagePass> {
102 const SPIRVTargetMachine &TM;
103
104public:
107};
108
110
112 : public RequiredPassInfoMixin<SPIRVLegalizePointerCastPass> {
113 const SPIRVTargetMachine &TM;
114
115public:
117 : TM(TM) {}
119};
120
122
124 : public RequiredPassInfoMixin<SPIRVRegularizerPass> {
125public:
127};
128
130
132 : public RequiredPassInfoMixin<SPIRVPreLegalizerPass> {
133public:
136};
137
139
141 : public RequiredPassInfoMixin<SPIRVPreLegalizerCombinerPass> {
142public:
145};
146
148
150 : public RequiredPassInfoMixin<SPIRVPostLegalizerPass> {
151public:
154 // Register classes are final from here, as there is no RegBankSelect.
156 return MachineFunctionProperties().setRegBankSelected();
157 }
158};
159
161
162/// Rewrites MIR into the form SPIRVModuleAnalysis expects.
164 : public RequiredPassInfoMixin<SPIRVPrepareModuleAnalysisPass> {
165public:
168};
169
171
173 : public RequiredPassInfoMixin<SPIRVEmitIntrinsicsPass> {
174 const SPIRVTargetMachine &TM;
175
176public:
179};
180
181ModulePass *createSPIRVEmitIntrinsicsPass(const SPIRVTargetMachine &TM);
182
184 : public RequiredPassInfoMixin<SPIRVPrepareGlobalsPass> {
185public:
187};
188
190
191/// Lower llvm.global_ctors and llvm.global_dtors to special kernels.
193 : public RequiredPassInfoMixin<SPIRVCtorDtorLoweringPass> {
194public:
196};
197
202 const RegisterBankInfo &RBI);
203
225} // namespace llvm
226
227#endif // LLVM_LIB_TARGET_SPIRV_SPIRV_H
const AArch64Subtarget & Subtarget
This header defines various interfaces for pass management in LLVM.
#define F(x, y, z)
Definition MD5.cpp:54
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:312
Properties which a MachineFunction may have at a given point in time.
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition Pass.h:253
A Module instance is used to store all the information related to an LLVM module.
Definition Module.h:68
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
Holds all the information related to register banks.
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
Lower llvm.global_ctors and llvm.global_dtors to special kernels.
Definition SPIRV.h:193
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVEmitIntrinsicsPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:177
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVFinalizeShaderLinkagePass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:105
SPIRVLegalizePointerCastPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:116
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVLegalizeZeroSizeArraysPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:94
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getSetProperties() const
Definition SPIRV.h:155
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
SPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:32
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
Rewrites MIR into the form SPIRVModuleAnalysis expects.
Definition SPIRV.h:164
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
SPIRVPushConstantAccessPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:67
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &M, FunctionAnalysisManager &AM)
Pass manager infrastructure for declaring and invalidating analyses.
This is an optimization pass for GlobalISel generic memory operations.
ModulePass * createSPIRVPushConstantAccessLegacyPass(SPIRVTargetMachine *TM)
ModulePass * createSPIRVCtorDtorLoweringLegacyPass()
FunctionPass * createSPIRVStructurizerPass()
ModulePass * createSPIRVEmitIntrinsicsPass(const SPIRVTargetMachine &TM)
void initializeSPIRVPushConstantAccessLegacyPass(PassRegistry &)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
void initializeSPIRVLegalizePointerCastLegacyPass(PassRegistry &)
void initializeSPIRVPrepareFunctionsLegacyPass(PassRegistry &)
ModulePass * createSPIRVRemoveUnusedResourcesLegacyPass()
FunctionPass * createSPIRVPreLegalizerCombinerLegacyPass()
FunctionPass * createSPIRVPostLegalizerLegacyPass()
void initializeSPIRVLegalizeZeroSizeArraysLegacyPass(PassRegistry &)
ModulePass * createSPIRVFinalizeShaderLinkagePass(const SPIRVTargetMachine &TM)
ModulePass * createSPIRVPrepareGlobalsPass()
void initializeSPIRVEmitIntrinsicsLegacyPass(PassRegistry &)
FunctionPass * createSPIRVPrepareModuleAnalysisLegacyPass()
void initializeSPIRVPrepareModuleAnalysisLegacyPass(PassRegistry &)
ModulePass * createSPIRVLegalizeZeroSizeArraysPass(const SPIRVTargetMachine &TM)
void initializeSPIRVCBufferAccessLegacyPass(PassRegistry &)
ModulePass * createSPIRVCBufferAccessLegacyPass()
void initializeSPIRVPostLegalizerLegacyPass(PassRegistry &)
void initializeSPIRVModuleAnalysisWrapperPassPass(PassRegistry &)
void initializeSPIRVRemoveUnusedResourcesLegacyPass(PassRegistry &)
void initializeSPIRVPrepareGlobalsLegacyPass(PassRegistry &)
InstructionSelector * createSPIRVInstructionSelector(const SPIRVTargetMachine &TM, const SPIRVSubtarget &Subtarget, const RegisterBankInfo &RBI)
void initializeSPIRVAsmPrinterPass(PassRegistry &)
void initializeSPIRVRegularizerLegacyPass(PassRegistry &)
FunctionPass * createSPIRVRegularizerPass()
void initializeSPIRVStructurizerPass(PassRegistry &)
FunctionPass * createSPIRVMergeRegionExitTargetsPass()
void initializeSPIRVPreLegalizerCombinerLegacyPass(PassRegistry &)
void initializeSPIRVPreLegalizerLegacyPass(PassRegistry &)
FunctionPass * createSPIRVPreLegalizerLegacyPass()
void initializeSPIRVConvergenceRegionAnalysisWrapperPassPass(PassRegistry &)
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
ModulePass * createSPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM)
FunctionPass * createSPIRVLegalizePointerCastPass(SPIRVTargetMachine *TM)
ModulePass * createSPIRVLegalizeResourceBindingPass()
void initializeSPIRVCtorDtorLoweringLegacyPass(PassRegistry &)
void initializeSPIRVMergeRegionExitTargetsLegacyPass(PassRegistry &)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
void initializeSPIRVLegalizeResourceBindingLegacyPass(PassRegistry &)
void initializeSPIRVFinalizeShaderLinkageLegacyPass(PassRegistry &)
A CRTP mix-in for passes that should not be skipped.