LLVM: lib/Target/AMDGPU/AMDGPU.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPU_H
11#define LLVM_LIB_TARGET_AMDGPU_AMDGPU_H
12
18
19namespace llvm {
20
21class AMDGPUTargetMachine;
22class GCNTargetMachine;
23class TargetMachine;
24
25
35
36
54
68
72};
73
75 : PassInfoMixin {
78
79private:
81};
82
85};
86
88public:
92};
93
95
97
103
104
105
110
114
118
122
124 : PassInfoMixin {
126};
127
131
133 : PassInfoMixin {
135};
136
139
143
145};
146
149
151 : PassInfoMixin {
154
155private:
157};
158
161
164
167
170
173
176
179
182
185
188
191
194
197
200
203
206
209
212
215
218
221
224
227
230
233
236
237
241
245
249
250private:
252};
253
255 : PassInfoMixin {
258
259private:
261};
262
265 : TM(TM), ScanImpl(ScanImpl) {}
267
268private:
271};
272
276
280
281private:
282 bool GlobalOpt;
283};
284
289
294};
295
297 : public PassInfoMixin {
298private:
300
301public:
304};
305
307 : public PassInfoMixin {
308private:
310
311public:
314};
315
317 : public PassInfoMixin {
318private:
320
321public:
324};
325
328};
329
331private:
333
335
336public:
338 : TM(TM), Options(Options) {};
340};
341
343 : public PassInfoMixin {
344public:
347};
348
350
354
357
359 : PassInfoMixin {
361};
362
366
369};
370
373
376
379
382
385
388
392
394 : public PassInfoMixin {
395public:
398};
399
401 : public PassInfoMixin {
402private:
404
405public:
408};
409
412
415
418
421
424
427
430
433
436
439
444
446
450
453
456
459
462
465
466namespace AMDGPU {
474
477
479 return true;
480
481
482
483 static const bool ASAliasRules[10][10] = {
484
485 {true, true, false, true, true, true, true, true, true, true},
486 {true, true, false, false, true, false, true, true, true, true},
487 {false, false, true, false, false, false, false, false, false, false},
488 {true, false, false, true, false, false, false, false, false, false},
489 {true, true, false, false, false, false, true, true, true, true},
490 {true, false, false, false, false, true, false, false, false, false},
491 {true, true, false, false, true, false, false, true, true, true},
492 {true, true, false, false, true, false, true, true, true, true},
493 {true, true, false, false, true, false, true, true, true, true},
494 {true, true, false, false, true, false, true, true, true, true},
495 };
496
497
498 return ASAliasRules[AS1][AS2];
499}
500
501}
502
503}
504
505#endif
AMDGPU address space definition.
This header defines various interfaces for pass management in LLVM.
AMDGPUAnnotateUniformValuesPass()
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUAttributorPass(TargetMachine &TM, AMDGPUAttributorOptions Options={})
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPUCodeGenPreparePass(TargetMachine &TM)
AMDGPULateCodeGenPreparePass(const GCNTargetMachine &TM)
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPULowerKernelArgumentsPass(TargetMachine &TM)
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPURewriteUndefForPHIPass()=default
A container for analyses that lazily runs them and caches their results.
FunctionPass class - This class is used to implement most global optimizations.
ImmutablePass class - This class is used to provide information that does not need to be run.
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
A Module instance is used to store all the information related to an LLVM module.
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
Pass interface - Implemented by all 'passes'.
A set of analyses that are preserved following a run of a transformation pass.
SIAnnotateControlFlowPass(const AMDGPUTargetMachine &TM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
SILowerI1CopiesPass()=default
Primary interface to the complete machine description for the target machine.
static bool addrspacesMayAlias(unsigned AS1, unsigned AS2)
This is an optimization pass for GlobalISel generic memory operations.
void initializeSIFormMemoryClausesPass(PassRegistry &)
ImmutablePass * createAMDGPUAAWrapperPass()
char & SIAnnotateControlFlowLegacyPassID
FunctionPass * createAMDGPUSetWavePriorityPass()
char & AMDGPUCtorDtorLoweringLegacyPassID
void initializeGCNCreateVOPDPass(PassRegistry &)
char & AMDGPUPreloadKernArgPrologLegacyID
char & AMDGPUAnnotateKernelFeaturesID
char & GCNPreRAOptimizationsID
void initializeGCNPreRAOptimizationsPass(PassRegistry &)
void initializeGCNRewritePartialRegUsesPass(llvm::PassRegistry &)
char & SIMemoryLegalizerID
void initializeAMDGPUAttributorLegacyPass(PassRegistry &)
FunctionPass * createSIAnnotateControlFlowLegacyPass()
Create the annotation pass.
FunctionPass * createSIModeRegisterPass()
void initializeAMDGPUAAWrapperPassPass(PassRegistry &)
void initializeSIShrinkInstructionsLegacyPass(PassRegistry &)
ModulePass * createAMDGPULowerBufferFatPointersPass()
char & SIShrinkInstructionsLegacyID
void initializeSIModeRegisterPass(PassRegistry &)
ModulePass * createAMDGPUCtorDtorLoweringLegacyPass()
char & AMDGPUImageIntrinsicOptimizerID
ModulePass * createAMDGPUSwLowerLDSLegacyPass(const AMDGPUTargetMachine *TM=nullptr)
void initializeAMDGPURewriteUndefForPHILegacyPass(PassRegistry &)
char & AMDGPUPromoteKernelArgumentsID
FunctionPass * createAMDGPUPreLegalizeCombiner(bool IsOptNone)
char & GCNRewritePartialRegUsesID
FunctionPass * createAMDGPUPostLegalizeCombiner(bool IsOptNone)
void initializeAMDGPUSwLowerLDSLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURewriteOutArgumentsPass()
void initializeGCNPreRALongBranchRegPass(PassRegistry &)
void initializeSILowerSGPRSpillsLegacyPass(PassRegistry &)
char & AMDGPUResourceUsageAnalysisID
FunctionPass * createSIWholeQuadModePass()
void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &)
char & SIOptimizeExecMaskingLegacyID
FunctionPass * createSILoadStoreOptimizerLegacyPass()
ModulePass * createAMDGPULowerKernelAttributesPass()
ModulePass * createAMDGPUAlwaysInlinePass(bool GlobalOpt=true)
void initializeSIPreEmitPeepholePass(PassRegistry &)
char & AMDGPUPromoteAllocaToVectorID
void initializeSIFoldOperandsLegacyPass(PassRegistry &)
char & SILoadStoreOptimizerLegacyID
char & SILowerWWMCopiesID
ModulePass * createAMDGPUUnifyMetadataPass()
void initializeAMDGPUGlobalISelDivergenceLoweringPass(PassRegistry &)
void initializeSILowerWWMCopiesPass(PassRegistry &)
FunctionPass * createSIPeepholeSDWALegacyPass()
void initializeGCNNSAReassignPass(PassRegistry &)
void initializeAMDGPUOpenCLEnqueuedBlockLoweringLegacyPass(PassRegistry &)
void initializeSIInsertWaitcntsPass(PassRegistry &)
char & SIFormMemoryClausesID
char & AMDGPURemoveIncompatibleFunctionsID
void initializeSILoadStoreOptimizerLegacyPass(PassRegistry &)
void initializeAMDGPULowerModuleLDSLegacyPass(PassRegistry &)
void initializeAMDGPUCtorDtorLoweringLegacyPass(PassRegistry &)
void initializeAMDGPURegBankCombinerPass(PassRegistry &)
char & AMDGPUGlobalISelDivergenceLoweringID
void initializeSILateBranchLoweringPass(PassRegistry &)
FunctionPass * createSIFoldOperandsLegacyPass()
FunctionPass * createAMDGPUPromoteAllocaToVector()
char & AMDGPUUnifyDivergentExitNodesID
char & SIInsertWaitcntsID
FunctionPass * createAMDGPUAtomicOptimizerPass(ScanOptions ScanStrategy)
FunctionPass * createAMDGPUPreloadKernArgPrologLegacyPass()
char & AMDGPUPrintfRuntimeBindingID
char & SIOptimizeVGPRLiveRangeLegacyID
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &)
void initializeAMDGPUExternalAAWrapperPass(PassRegistry &)
void initializeAMDGPULowerKernelArgumentsPass(PassRegistry &)
char & SILateBranchLoweringPassID
char & AMDGPUSwLowerLDSLegacyPassID
FunctionPass * createGCNPreRAOptimizationsPass()
void initializeAMDGPUAnnotateKernelFeaturesPass(PassRegistry &)
void initializeSIPostRABundlerPass(PassRegistry &)
void initializeAMDGPUPromoteAllocaToVectorPass(PassRegistry &)
char & GCNDPPCombineLegacyID
Pass * createAMDGPUAttributorLegacyPass()
void initializeSIWholeQuadModePass(PassRegistry &)
FunctionPass * createAMDGPULowerKernelArgumentsPass()
char & AMDGPUInsertDelayAluID
Pass * createAMDGPUAnnotateKernelFeaturesPass()
char & SIOptimizeExecMaskingPreRAID
char & AMDGPULowerModuleLDSLegacyPassID
void initializeSIInsertHardClausesPass(PassRegistry &)
FunctionPass * createSIPostRABundlerPass()
FunctionPass * createSIFormMemoryClausesPass()
void initializeAMDGPUPostLegalizerCombinerPass(PassRegistry &)
FunctionPass * createSIPreAllocateWWMRegsLegacyPass()
Pass * createAMDGPUStructurizeCFGPass()
CodeGenOptLevel
Code generation optimization level.
char & AMDGPULowerBufferFatPointersID
char & AMDGPURegBankSelectID
void initializeAMDGPUReserveWWMRegsPass(PassRegistry &)
ModulePass * createAMDGPUPrintfRuntimeBinding()
void initializeSIMemoryLegalizerPass(PassRegistry &)
char & AMDGPUUnifyMetadataID
void initializeAMDGPUImageIntrinsicOptimizerPass(PassRegistry &)
void initializeSILowerControlFlowLegacyPass(PassRegistry &)
char & SIPreAllocateWWMRegsLegacyID
ModulePass * createAMDGPULowerModuleLDSLegacyPass(const AMDGPUTargetMachine *TM=nullptr)
void initializeAMDGPUPreLegalizerCombinerPass(PassRegistry &)
char & AMDGPUReserveWWMRegsID
FunctionPass * createAMDGPUPromoteAlloca()
char & SIPreEmitPeepholeID
ModulePass * createAMDGPURemoveIncompatibleFunctionsPass(const TargetMachine *)
void initializeGCNRegPressurePrinterPass(PassRegistry &)
char & AMDGPURewriteOutArgumentsID
void initializeSILowerI1CopiesLegacyPass(PassRegistry &)
char & SILowerSGPRSpillsLegacyID
void initializeAMDGPUArgumentUsageInfoPass(PassRegistry &)
char & SILowerControlFlowLegacyID
char & AMDGPUPromoteAllocaID
FunctionPass * createAMDGPUCodeGenPreparePass()
void initializeSIAnnotateControlFlowLegacyPass(PassRegistry &)
FunctionPass * createAMDGPUReserveWWMRegsPass()
ModulePass * createAMDGPUOpenCLEnqueuedBlockLoweringLegacyPass()
FunctionPass * createAMDGPUISelDag(TargetMachine &TM, CodeGenOptLevel OptLevel)
This pass converts a legalized DAG into a AMDGPU-specific.
void initializeSIPreAllocateWWMRegsLegacyPass(PassRegistry &)
void initializeSIFixVGPRCopiesLegacyPass(PassRegistry &)
void initializeSIFixSGPRCopiesLegacyPass(PassRegistry &)
char & AMDGPUAnnotateUniformValuesLegacyPassID
void initializeAMDGPUAtomicOptimizerPass(PassRegistry &)
char & AMDGPULowerKernelAttributesID
FunctionPass * createAMDGPURegBankSelectPass()
char & GCNRegPressurePrinterID
FunctionPass * createAMDGPURegBankCombiner(bool IsOptNone)
FunctionPass * createAMDGPURegBankLegalizePass()
void initializeSIOptimizeExecMaskingPreRAPass(PassRegistry &)
void initializeAMDGPUMarkLastScratchLoadPass(PassRegistry &)
FunctionPass * createSIOptimizeVGPRLiveRangeLegacyPass()
ImmutablePass * createAMDGPUExternalAAWrapperPass()
void initializeAMDGPUCodeGenPreparePass(PassRegistry &)
FunctionPass * createAMDGPURewriteUndefForPHILegacyPass()
void initializeSIOptimizeExecMaskingLegacyPass(PassRegistry &)
FunctionPass * createSILowerI1CopiesLegacyPass()
char & AMDGPULateCodeGenPrepareLegacyID
void initializeAMDGPULowerKernelAttributesPass(PassRegistry &)
char & SIInsertHardClausesID
void initializeAMDGPUResourceUsageAnalysisPass(PassRegistry &)
char & SIFixSGPRCopiesLegacyID
void initializeGCNDPPCombineLegacyPass(PassRegistry &)
char & SIPeepholeSDWALegacyID
char & SIFoldOperandsLegacyID
char & AMDGPUAtomicOptimizerID
char & SILowerI1CopiesLegacyID
void initializeAMDGPUPreloadKernArgPrologLegacyPass(PassRegistry &)
FunctionPass * createLowerWWMCopiesPass()
char & AMDGPUOpenCLEnqueuedBlockLoweringLegacyID
FunctionPass * createAMDGPUGlobalISelDivergenceLoweringPass()
FunctionPass * createSIMemoryLegalizerPass()
void initializeAMDGPULateCodeGenPrepareLegacyPass(PassRegistry &)
void initializeSIOptimizeVGPRLiveRangeLegacyPass(PassRegistry &)
void initializeSIPeepholeSDWALegacyPass(PassRegistry &)
char & AMDGPURegBankLegalizeID
void initializeAMDGPURegBankLegalizePass(PassRegistry &)
void initializeAMDGPURegBankSelectPass(PassRegistry &)
FunctionPass * createAMDGPULateCodeGenPrepareLegacyPass()
char & AMDGPURewriteUndefForPHILegacyPassID
FunctionPass * createAMDGPUImageIntrinsicOptimizerPass(const TargetMachine *)
void initializeAMDGPUUnifyDivergentExitNodesPass(PassRegistry &)
void initializeAMDGPULowerBufferFatPointersPass(PassRegistry &)
FunctionPass * createSIInsertWaitcntsPass()
FunctionPass * createAMDGPUAnnotateUniformValuesLegacy()
FunctionPass * createSIOptimizeExecMaskingPreRAPass()
FunctionPass * createGCNDPPCombinePass()
FunctionPass * createSIShrinkInstructionsLegacyPass()
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
char & AMDGPUMarkLastScratchLoadID
void initializeAMDGPUAnnotateUniformValuesLegacyPass(PassRegistry &)
void initializeAMDGPUPrintfRuntimeBindingPass(PassRegistry &)
void initializeAMDGPUPromoteAllocaPass(PassRegistry &)
void initializeAMDGPURemoveIncompatibleFunctionsLegacyPass(PassRegistry &)
void initializeAMDGPUInsertDelayAluPass(PassRegistry &)
void initializeAMDGPUUnifyMetadataPass(PassRegistry &)
FunctionPass * createSIFixControlFlowLiveIntervalsPass()
char & AMDGPULowerKernelArgumentsID
void initializeAMDGPUAlwaysInlinePass(PassRegistry &)
char & AMDGPUCodeGenPrepareID
void initializeAMDGPUSetWavePriorityPass(PassRegistry &)
FunctionPass * createSIFixSGPRCopiesLegacyPass()
char & AMDGPUPerfHintAnalysisLegacyID
FunctionPass * createAMDGPUPromoteKernelArgumentsPass()
char & GCNPreRALongBranchRegID
void initializeAMDGPUPerfHintAnalysisLegacyPass(PassRegistry &)
void initializeAMDGPUPromoteKernelArgumentsPass(PassRegistry &)
AMDGPUAlwaysInlinePass(bool GlobalOpt=true)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUAtomicOptimizerPass(TargetMachine &TM, ScanOptions ScanImpl)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUImageIntrinsicOptimizerPass(TargetMachine &TM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerBufferFatPointersPass(const TargetMachine &TM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerModuleLDSPass(const AMDGPUTargetMachine &TM_)
const AMDGPUTargetMachine & TM
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUSimplifyLibCallsPass()
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
const AMDGPUTargetMachine & TM
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUSwLowerLDSPass(const AMDGPUTargetMachine &TM_)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
A CRTP mix-in to automatically provide informational APIs needed for passes.