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
14#include "llvm/IR/Analysis.h"
15#include "llvm/IR/PassManager.h"
16#include "llvm/Pass.h"
17#include "llvm/PassRegistry.h"
19
20namespace llvm {
22class SPIRVSubtarget;
25
27 : public RequiredPassInfoMixin<SPIRVPrepareFunctionsPass> {
28 const SPIRVTargetMachine &TM;
29
30public:
31 explicit SPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM) : TM(TM) {}
33};
34
35ModulePass *createSPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM);
36
38 : public RequiredPassInfoMixin<SPIRVStructurizerPass> {
39public:
41};
42
44
46 : public RequiredPassInfoMixin<SPIRVCBufferAccessPass> {
47public:
49};
50
52
54 : public RequiredPassInfoMixin<SPIRVPushConstantAccessPass> {
55 const SPIRVTargetMachine &TM;
56
57public:
60};
61
63
65 : public RequiredPassInfoMixin<SPIRVMergeRegionExitTargetsPass> {
66public:
68};
69
71
73 : public RequiredPassInfoMixin<SPIRVLegalizeImplicitBindingPass> {
74public:
76};
77
79
81 : public RequiredPassInfoMixin<SPIRVLegalizeZeroSizeArraysPass> {
82 const SPIRVTargetMachine &TM;
83
84public:
87};
88
90
92 : public RequiredPassInfoMixin<SPIRVFinalizeShaderLinkagePass> {
93 const SPIRVTargetMachine &TM;
94
95public:
98};
99
101
103 : public RequiredPassInfoMixin<SPIRVLegalizePointerCastPass> {
104 const SPIRVTargetMachine &TM;
105
106public:
108 : TM(TM) {}
110};
111
113
115 : public RequiredPassInfoMixin<SPIRVRegularizerPass> {
116public:
118};
119
121
123 : public RequiredPassInfoMixin<SPIRVPreLegalizerPass> {
124public:
127};
128
130
132 : public RequiredPassInfoMixin<SPIRVPreLegalizerCombinerPass> {
133public:
136};
137
139
141 : public RequiredPassInfoMixin<SPIRVPostLegalizerPass> {
142public:
145};
146
148
150 : public RequiredPassInfoMixin<SPIRVEmitIntrinsicsPass> {
151 const SPIRVTargetMachine &TM;
152
153public:
156};
157
158ModulePass *createSPIRVEmitIntrinsicsPass(const SPIRVTargetMachine &TM);
159
161 : public RequiredPassInfoMixin<SPIRVPrepareGlobalsPass> {
162public:
164};
165
167
168/// Lower llvm.global_ctors and llvm.global_dtors to special kernels.
170 : public RequiredPassInfoMixin<SPIRVCtorDtorLoweringPass> {
171public:
173};
174
178 const SPIRVSubtarget &Subtarget,
179 const RegisterBankInfo &RBI);
180
200} // namespace llvm
201
202#endif // LLVM_LIB_TARGET_SPIRV_SPIRV_H
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:314
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
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:170
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVEmitIntrinsicsPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:154
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVFinalizeShaderLinkagePass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:96
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVLegalizePointerCastPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:107
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
SPIRVLegalizeZeroSizeArraysPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:85
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
SPIRVPrepareFunctionsPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:31
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
SPIRVPushConstantAccessPass(const SPIRVTargetMachine &TM)
Definition SPIRV.h:58
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &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 &)
void initializeSPIRVModuleAnalysisPass(PassRegistry &)
FunctionPass * createSPIRVPreLegalizerCombinerLegacyPass()
FunctionPass * createSPIRVPostLegalizerLegacyPass()
void initializeSPIRVLegalizeZeroSizeArraysLegacyPass(PassRegistry &)
ModulePass * createSPIRVFinalizeShaderLinkagePass(const SPIRVTargetMachine &TM)
ModulePass * createSPIRVPrepareGlobalsPass()
void initializeSPIRVEmitIntrinsicsLegacyPass(PassRegistry &)
ModulePass * createSPIRVLegalizeZeroSizeArraysPass(const SPIRVTargetMachine &TM)
void initializeSPIRVCBufferAccessLegacyPass(PassRegistry &)
ModulePass * createSPIRVCBufferAccessLegacyPass()
void initializeSPIRVPostLegalizerLegacyPass(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)
void initializeSPIRVLegalizeImplicitBindingLegacyPass(PassRegistry &)
void initializeSPIRVCtorDtorLoweringLegacyPass(PassRegistry &)
void initializeSPIRVMergeRegionExitTargetsLegacyPass(PassRegistry &)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
void initializeSPIRVFinalizeShaderLinkageLegacyPass(PassRegistry &)
ModulePass * createSPIRVLegalizeImplicitBindingPass()
A CRTP mix-in for passes that should not be skipped.