LLVM 23.0.0git
AMDGPU.h
Go to the documentation of this file.
1//===-- AMDGPU.h - MachineFunction passes hw codegen --------------*- 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/// \file
8//===----------------------------------------------------------------------===//
9
10#ifndef LLVM_LIB_TARGET_AMDGPU_AMDGPU_H
11#define LLVM_LIB_TARGET_AMDGPU_AMDGPU_H
12
15#include "llvm/IR/PassManager.h"
16#include "llvm/Pass.h"
19
20namespace llvm {
21
23class LazyCallGraph;
25class TargetMachine;
26
27// GlobalISel passes
37
38// SI Passes
58
74
79
81 : PassInfoMixin<AMDGPUImageIntrinsicOptimizerPass> {
84
85private:
86 TargetMachine &TM;
87};
88
92
93class SILowerI1CopiesPass : public PassInfoMixin<SILowerI1CopiesPass> {
94public:
98};
99
101
103
105
106// DPP/Iterative option enables the atomic optimizer with given strategy
107// whereas None disables the atomic optimizer.
108enum class ScanOptions { DPP, Iterative, None };
109FunctionPass *createAMDGPUAtomicOptimizerPass(ScanOptions ScanStrategy);
111extern char &AMDGPUAtomicOptimizerID;
112
116
120
124
126 : PassInfoMixin<AMDGPUPromoteKernelArgumentsPass> {
128};
129
133
135 : PassInfoMixin<AMDGPULowerKernelAttributesPass> {
137};
138
141
148
151
153 : PassInfoMixin<AMDGPULowerBufferFatPointersPass> {
156
157private:
158 const TargetMachine &TM;
159};
160
162
163struct AMDGPULowerIntrinsicsPass : PassInfoMixin<AMDGPULowerIntrinsicsPass> {
166
167private:
168 const AMDGPUTargetMachine &TM;
169};
170
173
176
178extern char &AMDGPURewriteOutArgumentsID;
179
181extern char &GCNDPPCombineLegacyID;
182
184extern char &SIFoldOperandsLegacyID;
185
187extern char &SIPeepholeSDWALegacyID;
188
191
193extern char &SIFixSGPRCopiesLegacyID;
194
196extern char &SIFixVGPRCopiesID;
197
200
203
205extern char &SILowerWWMCopiesLegacyID;
206
208extern char &SILowerI1CopiesLegacyID;
209
212
214extern char &AMDGPURegBankSelectID;
215
217extern char &AMDGPURegBankLegalizeID;
218
220extern char &AMDGPUMarkLastScratchLoadID;
221
223extern char &SILowerSGPRSpillsLegacyID;
224
227
229extern char &SIWholeQuadModeID;
230
232extern char &SILowerControlFlowLegacyID;
233
235extern char &SIPreEmitPeepholeID;
236
238extern char &SILateBranchLoweringPassID;
239
242
245
248
251
253extern char &GCNRegPressurePrinterID;
254
257
260
261// Passes common to R600 and SI
264extern char &AMDGPUPromoteAllocaID;
265
266struct AMDGPUPromoteAllocaPass : PassInfoMixin<AMDGPUPromoteAllocaPass> {
269
270private:
271 TargetMachine &TM;
272};
273
275 : PassInfoMixin<AMDGPUPromoteAllocaToVectorPass> {
278
279private:
280 TargetMachine &TM;
281};
282
283struct AMDGPUAtomicOptimizerPass : PassInfoMixin<AMDGPUAtomicOptimizerPass> {
285 : TM(TM), ScanImpl(ScanImpl) {}
287
288private:
289 TargetMachine &TM;
290 ScanOptions ScanImpl;
291};
292
294 : public PassInfoMixin<AMDGPUInsertDelayAluPass> {
297};
298
301ModulePass *createAMDGPUAlwaysInlinePass(bool GlobalOpt = true);
302
303struct AMDGPUAlwaysInlinePass : PassInfoMixin<AMDGPUAlwaysInlinePass> {
304 AMDGPUAlwaysInlinePass(bool GlobalOpt = true) : GlobalOpt(GlobalOpt) {}
306
307private:
308 bool GlobalOpt;
309};
310
314
319
324
330
332 : public PassInfoMixin<AMDGPUCodeGenPreparePass> {
333private:
334 TargetMachine &TM;
335
336public:
339};
340
342 : public PassInfoMixin<AMDGPULateCodeGenPreparePass> {
343private:
344 const GCNTargetMachine &TM;
345
346public:
349};
350
352 : public PassInfoMixin<AMDGPULowerKernelArgumentsPass> {
353private:
354 TargetMachine &TM;
355
356public:
359};
360
362 bool IsClosedWorld = false;
363};
364
365class AMDGPUAttributorPass : public PassInfoMixin<AMDGPUAttributorPass> {
366private:
367 TargetMachine &TM;
368
370
371 const ThinOrFullLTOPhase LTOPhase;
372
373public:
376 : TM(TM), Options(Options), LTOPhase(LTOPhase) {};
378};
379
381 : public PassInfoMixin<AMDGPUAttributorCGSCCPass> {
382private:
384
385public:
389};
390
392 : public PassInfoMixin<AMDGPUPreloadKernelArgumentsPass> {
393 const TargetMachine &TM;
394
395public:
396 explicit AMDGPUPreloadKernelArgumentsPass(const TargetMachine &TM) : TM(TM) {}
397
399};
400
402 : public PassInfoMixin<AMDGPUAnnotateUniformValuesPass> {
403public:
406};
407
408class SIModeRegisterPass : public PassInfoMixin<SIModeRegisterPass> {
409public:
412};
413
414class SIMemoryLegalizerPass : public PassInfoMixin<SIMemoryLegalizerPass> {
415public:
418 static bool isRequired() { return true; }
419};
420
421class GCNCreateVOPDPass : public PassInfoMixin<GCNCreateVOPDPass> {
422public:
425};
426
428 : public PassInfoMixin<AMDGPUMarkLastScratchLoadPass> {
429public:
432};
433
434class SIInsertWaitcntsPass : public PassInfoMixin<SIInsertWaitcntsPass> {
435public:
438 static bool isRequired() { return true; }
439};
440
441class SIInsertHardClausesPass : public PassInfoMixin<SIInsertHardClausesPass> {
442public:
445};
446
448 : public PassInfoMixin<SILateBranchLoweringPass> {
449public:
452 static bool isRequired() { return true; }
453};
454
455class SIPreEmitPeepholePass : public PassInfoMixin<SIPreEmitPeepholePass> {
456public:
459 static bool isRequired() { return true; }
460};
461
463 : public PassInfoMixin<AMDGPUSetWavePriorityPass> {
464public:
467};
468
470
474
477
479 : PassInfoMixin<AMDGPUPrintfRuntimeBindingPass> {
481};
482
485
488
491
493extern char &AMDGPUCodeGenPrepareID;
494
497
500
504
506 : public PassInfoMixin<AMDGPURewriteUndefForPHIPass> {
507public:
510};
511
513 : public PassInfoMixin<SIAnnotateControlFlowPass> {
514private:
515 const AMDGPUTargetMachine &TM;
516
517public:
520};
521
524
526extern char &SIMemoryLegalizerID;
527
529extern char &SIModeRegisterID;
530
532extern char &AMDGPUInsertDelayAluID;
533
536
538extern char &SIInsertHardClausesID;
539
541extern char &SIInsertWaitcntsID;
542
544extern char &SIFormMemoryClausesID;
545
547extern char &SIPostRABundlerLegacyID;
548
550extern char &GCNCreateVOPDID;
551
554
559
563
565extern char &GCNNSAReassignID;
566
568extern char &GCNPreRALongBranchRegID;
569
571extern char &GCNPreRAOptimizationsID;
572
575
577extern char &GCNRewritePartialRegUsesID;
578
581
583 : public PassInfoMixin<AMDGPURewriteAGPRCopyMFMAPass> {
584public:
588};
589
592
596
598 : public PassInfoMixin<AMDGPUUniformIntrinsicCombinePass> {
600};
601
602namespace AMDGPU {
610
611static inline bool addrspacesMayAlias(unsigned AS1, unsigned AS2) {
613 return true;
614
615 // clang-format off
616 static const bool ASAliasRules[][AMDGPUAS::MAX_AMDGPU_ADDRESS + 1] = {
617 /* Flat Global Region Local Constant Private Const32 BufFatPtr BufRsrc BufStrdPtr */
618 /* Flat */ {true, true, false, true, true, true, true, true, true, true},
619 /* Global */ {true, true, false, false, true, false, true, true, true, true},
620 /* Region */ {false, false, true, false, false, false, false, false, false, false},
621 /* Local */ {true, false, false, true, false, false, false, false, false, false},
622 /* Constant */ {true, true, false, false, false, false, true, true, true, true},
623 /* Private */ {true, false, false, false, false, true, false, false, false, false},
624 /* Constant 32-bit */ {true, true, false, false, true, false, false, true, true, true},
625 /* Buffer Fat Ptr */ {true, true, false, false, true, false, true, true, true, true},
626 /* Buffer Resource */ {true, true, false, false, true, false, true, true, true, true},
627 /* Buffer Strided Ptr */ {true, true, false, false, true, false, true, true, true, true},
628 };
629 // clang-format on
630 static_assert(std::size(ASAliasRules) == AMDGPUAS::MAX_AMDGPU_ADDRESS + 1);
631
632 return ASAliasRules[AS1][AS2];
633}
634
635}
636
637} // End namespace llvm
638
639#endif
AMDGPU address space definition.
This header provides classes for managing passes over SCCs of the call graph.
This header defines various interfaces for pass management in LLVM.
#define F(x, y, z)
Definition MD5.cpp:54
ModuleAnalysisManager MAM
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUAttributorCGSCCPass(GCNTargetMachine &TM)
Definition AMDGPU.h:386
PreservedAnalyses run(LazyCallGraph::SCC &C, CGSCCAnalysisManager &AM, LazyCallGraph &CG, CGSCCUpdateResult &UR)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUAttributorPass(TargetMachine &TM, AMDGPUAttributorOptions Options, ThinOrFullLTOPhase LTOPhase=ThinOrFullLTOPhase::None)
Definition AMDGPU.h:374
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPUCodeGenPreparePass(TargetMachine &TM)
Definition AMDGPU.h:337
AMDGPULateCodeGenPreparePass(const GCNTargetMachine &TM)
Definition AMDGPU.h:347
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPULowerKernelArgumentsPass(TargetMachine &TM)
Definition AMDGPU.h:357
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &AM)
AMDGPUPreloadKernelArgumentsPass(const TargetMachine &TM)
Definition AMDGPU.h:396
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
FunctionPass class - This class is used to implement most global optimizations.
Definition Pass.h:314
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &AM)
ImmutablePass class - This class is used to provide information that does not need to be run.
Definition Pass.h:285
An SCC of the call graph.
A lazily constructed view of the call graph of a module.
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...
Pass interface - Implemented by all 'passes'.
Definition Pass.h:99
A set of analyses that are preserved following a run of a transformation pass.
Definition Analysis.h:112
SIAnnotateControlFlowPass(const AMDGPUTargetMachine &TM)
Definition AMDGPU.h:518
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
static bool isRequired()
Definition AMDGPU.h:438
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
static bool isRequired()
Definition AMDGPU.h:418
PreservedAnalyses run(MachineFunction &F, MachineFunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
static bool isRequired()
Definition AMDGPU.h:459
Primary interface to the complete machine description for the target machine.
static bool addrspacesMayAlias(unsigned AS1, unsigned AS2)
Definition AMDGPU.h:611
@ TI_SCRATCH_RSRC_DWORD1
Definition AMDGPU.h:606
@ TI_SCRATCH_RSRC_DWORD3
Definition AMDGPU.h:608
@ TI_SCRATCH_RSRC_DWORD0
Definition AMDGPU.h:605
@ TI_SCRATCH_RSRC_DWORD2
Definition AMDGPU.h:607
@ TI_CONSTDATA_START
Definition AMDGPU.h:604
@ C
The default llvm calling convention, compatible with C.
Definition CallingConv.h:34
This is an optimization pass for GlobalISel generic memory operations.
ScanOptions
Definition AMDGPU.h:108
ImmutablePass * createAMDGPUAAWrapperPass()
char & SIAnnotateControlFlowLegacyPassID
FunctionPass * createAMDGPUSetWavePriorityPass()
char & AMDGPUCtorDtorLoweringLegacyPassID
void initializeAMDGPUMarkLastScratchLoadLegacyPass(PassRegistry &)
void initializeAMDGPUInsertDelayAluLegacyPass(PassRegistry &)
char & AMDGPUPreloadKernArgPrologLegacyID
char & AMDGPUExportKernelRuntimeHandlesLegacyID
void initializeSIOptimizeExecMaskingPreRALegacyPass(PassRegistry &)
char & GCNPreRAOptimizationsID
void initializeSIInsertHardClausesLegacyPass(PassRegistry &)
char & SIMemoryLegalizerID
FunctionPass * createSIFormMemoryClausesLegacyPass()
FunctionPass * createSIAnnotateControlFlowLegacyPass()
Create the annotation pass.
FunctionPass * createSIModeRegisterPass()
void initializeGCNPreRAOptimizationsLegacyPass(PassRegistry &)
void initializeSILowerWWMCopiesLegacyPass(PassRegistry &)
void initializeAMDGPUAAWrapperPassPass(PassRegistry &)
void initializeSIShrinkInstructionsLegacyPass(PassRegistry &)
ModulePass * createAMDGPULowerBufferFatPointersPass()
char & SIShrinkInstructionsLegacyID
ModulePass * createAMDGPUCtorDtorLoweringLegacyPass()
char & AMDGPUImageIntrinsicOptimizerID
ModulePass * createAMDGPUSwLowerLDSLegacyPass(const AMDGPUTargetMachine *TM=nullptr)
void initializeGCNRewritePartialRegUsesLegacyPass(llvm::PassRegistry &)
void initializeAMDGPURewriteUndefForPHILegacyPass(PassRegistry &)
char & AMDGPULowerExecSyncLegacyPassID
char & AMDGPUPromoteKernelArgumentsID
char & GCNRewritePartialRegUsesID
void initializeAMDGPUSetWavePriorityLegacyPass(PassRegistry &)
void initializeAMDGPUSwLowerLDSLegacyPass(PassRegistry &)
void initializeAMDGPULowerVGPREncodingLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURewriteOutArgumentsPass()
char & AMDGPUWaitSGPRHazardsLegacyID
void initializeSILowerSGPRSpillsLegacyPass(PassRegistry &)
char & AMDGPUResourceUsageAnalysisID
void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURegBankCombiner(bool IsOptNone)
char & AMDGPUReserveWWMRegsLegacyID
void initializeAMDGPUWaitSGPRHazardsLegacyPass(PassRegistry &)
char & SIOptimizeExecMaskingLegacyID
FunctionPass * createSILoadStoreOptimizerLegacyPass()
ModulePass * createAMDGPULowerKernelAttributesPass()
void initializeAMDGPUNextUseAnalysisLegacyPassPass(PassRegistry &)
ModulePass * createAMDGPUExportKernelRuntimeHandlesLegacyPass()
ModulePass * createAMDGPUAlwaysInlinePass(bool GlobalOpt=true)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
void initializeAMDGPUAsmPrinterPass(PassRegistry &)
void initializeSIFoldOperandsLegacyPass(PassRegistry &)
FunctionPass * createAMDGPUNextUseAnalysisLegacyPass()
char & SILoadStoreOptimizerLegacyID
void initializeAMDGPUGlobalISelDivergenceLoweringPass(PassRegistry &)
FunctionPass * createSIPeepholeSDWALegacyPass()
char & SIFormMemoryClausesID
char & AMDGPURemoveIncompatibleFunctionsID
void initializeSILoadStoreOptimizerLegacyPass(PassRegistry &)
void initializeAMDGPULowerModuleLDSLegacyPass(PassRegistry &)
AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & > CGSCCAnalysisManager
The CGSCC analysis manager.
void initializeAMDGPUCtorDtorLoweringLegacyPass(PassRegistry &)
FunctionPass * createAMDGPUUniformIntrinsicCombineLegacyPass()
void initializeAMDGPURegBankCombinerPass(PassRegistry &)
FunctionPass * createSIFoldOperandsLegacyPass()
ThinOrFullLTOPhase
This enumerates the LLVM full LTO or ThinLTO optimization phases.
Definition Pass.h:77
@ None
No LTO/ThinLTO behavior needed.
Definition Pass.h:79
char & AMDGPUUnifyDivergentExitNodesID
void initializeAMDGPUPrepareAGPRAllocLegacyPass(PassRegistry &)
char & SIInsertWaitcntsID
FunctionPass * createAMDGPUAtomicOptimizerPass(ScanOptions ScanStrategy)
FunctionPass * createAMDGPUPreloadKernArgPrologLegacyPass()
char & AMDGPUPrintfRuntimeBindingID
char & SIOptimizeVGPRLiveRangeLegacyID
char & GCNNSAReassignID
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &)
void initializeAMDGPUExternalAAWrapperPass(PassRegistry &)
void initializeAMDGPULowerKernelArgumentsPass(PassRegistry &)
void initializeSIModeRegisterLegacyPass(PassRegistry &)
void initializeAMDGPUPreloadKernelArgumentsLegacyPass(PassRegistry &)
char & SILateBranchLoweringPassID
char & SIModeRegisterID
FunctionPass * createAMDGPUNextUseAnalysisPrinterLegacyPass()
char & AMDGPUSwLowerLDSLegacyPassID
void initializeSIMemoryLegalizerLegacyPass(PassRegistry &)
ModulePass * createAMDGPULowerIntrinsicsLegacyPass()
char & GCNDPPCombineLegacyID
FunctionPass * createAMDGPULowerKernelArgumentsPass()
char & AMDGPUInsertDelayAluID
void initializeGCNPreRALongBranchRegLegacyPass(PassRegistry &)
char & SILowerWWMCopiesLegacyID
char & SIOptimizeExecMaskingPreRAID
char & AMDGPULowerModuleLDSLegacyPassID
FunctionPass * createSIPostRABundlerPass()
void initializeAMDGPULowerExecSyncLegacyPass(PassRegistry &)
void initializeAMDGPUPostLegalizerCombinerPass(PassRegistry &)
void initializeAMDGPUExportKernelRuntimeHandlesLegacyPass(PassRegistry &)
FunctionPass * createSIPreAllocateWWMRegsLegacyPass()
Pass * createAMDGPUStructurizeCFGPass()
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82
void initializeSIInsertWaitcntsLegacyPass(PassRegistry &)
char & AMDGPURegBankSelectID
ModulePass * createAMDGPUPreloadKernelArgumentsLegacyPass(const TargetMachine *)
ModulePass * createAMDGPUPrintfRuntimeBinding()
void initializeAMDGPUImageIntrinsicOptimizerPass(PassRegistry &)
void initializeSILateBranchLoweringLegacyPass(PassRegistry &)
void initializeSILowerControlFlowLegacyPass(PassRegistry &)
void initializeSIFormMemoryClausesLegacyPass(PassRegistry &)
char & SIPreAllocateWWMRegsLegacyID
char & AMDGPUNextUseAnalysisLegacyID
ModulePass * createAMDGPULowerModuleLDSLegacyPass(const AMDGPUTargetMachine *TM=nullptr)
void initializeAMDGPUPreLegalizerCombinerPass(PassRegistry &)
FunctionPass * createAMDGPUPromoteAlloca()
void initializeAMDGPUReserveWWMRegsLegacyPass(PassRegistry &)
char & SIPreEmitPeepholeID
char & SIPostRABundlerLegacyID
ModulePass * createAMDGPURemoveIncompatibleFunctionsPass(const TargetMachine *)
void initializeGCNRegPressurePrinterPass(PassRegistry &)
char & AMDGPURewriteOutArgumentsID
void initializeSILowerI1CopiesLegacyPass(PassRegistry &)
char & SILowerSGPRSpillsLegacyID
char & SILowerControlFlowLegacyID
FunctionPass * createAMDGPUCodeGenPreparePass()
void initializeSIAnnotateControlFlowLegacyPass(PassRegistry &)
FunctionPass * createAMDGPUReserveWWMRegsPass()
FunctionPass * createAMDGPUISelDag(TargetMachine &TM, CodeGenOptLevel OptLevel)
This pass converts a legalized DAG into a AMDGPU-specific.
void initializeGCNCreateVOPDLegacyPass(PassRegistry &)
void initializeAMDGPUUniformIntrinsicCombineLegacyPass(PassRegistry &)
void initializeSIPreAllocateWWMRegsLegacyPass(PassRegistry &)
void initializeSIFixVGPRCopiesLegacyPass(PassRegistry &)
void initializeSIFixSGPRCopiesLegacyPass(PassRegistry &)
char & AMDGPUAnnotateUniformValuesLegacyPassID
void initializeAMDGPUAtomicOptimizerPass(PassRegistry &)
void initializeAMDGPULowerIntrinsicsLegacyPass(PassRegistry &)
FunctionPass * createGCNPreRAOptimizationsLegacyPass()
void initializeAMDGPURewriteAGPRCopyMFMALegacyPass(PassRegistry &)
char & AMDGPULowerKernelAttributesID
void initializeAMDGPUNextUseAnalysisPrinterLegacyPassPass(PassRegistry &)
char & AMDGPUUniformIntrinsicCombineLegacyPassID
void initializeSIPostRABundlerLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURegBankSelectPass()
FunctionPass * createSIWholeQuadModeLegacyPass()
char & GCNRegPressurePrinterID
FunctionPass * createAMDGPURegBankLegalizePass()
char & SIWholeQuadModeID
FunctionPass * createSIOptimizeVGPRLiveRangeLegacyPass()
ImmutablePass * createAMDGPUExternalAAWrapperPass()
void initializeAMDGPUCodeGenPreparePass(PassRegistry &)
FunctionPass * createAMDGPURewriteUndefForPHILegacyPass()
void initializeSIOptimizeExecMaskingLegacyPass(PassRegistry &)
char & AMDGPUNextUseAnalysisPrinterLegacyID
FunctionPass * createSILowerI1CopiesLegacyPass()
char & AMDGPULateCodeGenPrepareLegacyID
FunctionPass * createAMDGPUPostLegalizeCombiner(bool IsOptNone)
void initializeAMDGPULowerKernelAttributesPass(PassRegistry &)
char & SIInsertHardClausesID
char & SIFixSGPRCopiesLegacyID
void initializeGCNDPPCombineLegacyPass(PassRegistry &)
char & GCNCreateVOPDID
char & SIPeepholeSDWALegacyID
char & SIFixVGPRCopiesID
char & SIFoldOperandsLegacyID
void initializeGCNNSAReassignLegacyPass(PassRegistry &)
char & AMDGPUAtomicOptimizerID
char & SILowerI1CopiesLegacyID
void initializeAMDGPUPreloadKernArgPrologLegacyPass(PassRegistry &)
FunctionPass * createLowerWWMCopiesPass()
char & AMDGPURewriteAGPRCopyMFMALegacyID
ModulePass * createAMDGPULowerExecSyncLegacyPass()
char & AMDGPUPromoteAllocaID
char & AMDGPULowerVGPREncodingLegacyID
FunctionPass * createAMDGPUGlobalISelDivergenceLoweringPass()
FunctionPass * createSIMemoryLegalizerPass()
void initializeAMDGPULateCodeGenPrepareLegacyPass(PassRegistry &)
void initializeSIOptimizeVGPRLiveRangeLegacyPass(PassRegistry &)
void initializeSIPeepholeSDWALegacyPass(PassRegistry &)
char & AMDGPURegBankLegalizeID
void initializeAMDGPURegBankLegalizePass(PassRegistry &)
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
FunctionPass * createAMDGPUPreLegalizeCombiner(bool IsOptNone)
void initializeAMDGPURegBankSelectPass(PassRegistry &)
FunctionPass * createAMDGPULateCodeGenPrepareLegacyPass()
char & AMDGPURewriteUndefForPHILegacyPassID
FunctionPass * createAMDGPUImageIntrinsicOptimizerPass(const TargetMachine *)
void initializeAMDGPULowerBufferFatPointersPass(PassRegistry &)
void initializeAMDGPUUnifyDivergentExitNodesLegacyPass(PassRegistry &)
FunctionPass * createSIInsertWaitcntsPass()
FunctionPass * createAMDGPUAnnotateUniformValuesLegacy()
void initializeSIWholeQuadModeLegacyPass(PassRegistry &)
FunctionPass * createSIOptimizeExecMaskingPreRAPass()
FunctionPass * createGCNDPPCombinePass()
void initializeAMDGPUResourceUsageAnalysisWrapperPassPass(PassRegistry &)
FunctionPass * createSIShrinkInstructionsLegacyPass()
char & AMDGPUPrepareAGPRAllocLegacyID
char & AMDGPUMarkLastScratchLoadID
char & AMDGPUPreloadKernelArgumentsLegacyID
void initializeAMDGPUAnnotateUniformValuesLegacyPass(PassRegistry &)
void initializeAMDGPUPrintfRuntimeBindingPass(PassRegistry &)
void initializeAMDGPUPromoteAllocaPass(PassRegistry &)
void initializeAMDGPURemoveIncompatibleFunctionsLegacyPass(PassRegistry &)
FunctionPass * createSIFixControlFlowLiveIntervalsPass()
char & AMDGPULowerKernelArgumentsID
void initializeAMDGPUAlwaysInlinePass(PassRegistry &)
char & AMDGPUCodeGenPrepareID
FunctionPass * createSIFixSGPRCopiesLegacyPass()
void initializeSIPreEmitPeepholeLegacyPass(PassRegistry &)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
char & AMDGPUPerfHintAnalysisLegacyID
FunctionPass * createAMDGPUPromoteKernelArgumentsPass()
char & GCNPreRALongBranchRegID
void initializeAMDGPUPerfHintAnalysisLegacyPass(PassRegistry &)
void initializeAMDGPUPromoteKernelArgumentsPass(PassRegistry &)
AMDGPUAlwaysInlinePass(bool GlobalOpt=true)
Definition AMDGPU.h:304
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUAtomicOptimizerPass(TargetMachine &TM, ScanOptions ScanImpl)
Definition AMDGPU.h:284
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUImageIntrinsicOptimizerPass(TargetMachine &TM)
Definition AMDGPU.h:82
PreservedAnalyses run(MachineFunction &F, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerBufferFatPointersPass(const TargetMachine &TM)
Definition AMDGPU.h:154
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
AMDGPULowerIntrinsicsPass(const AMDGPUTargetMachine &TM)
Definition AMDGPU.h:164
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerModuleLDSPass(const AMDGPUTargetMachine &TM_)
Definition AMDGPU.h:144
const AMDGPUTargetMachine & TM
Definition AMDGPU.h:143
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUPromoteAllocaPass(TargetMachine &TM)
Definition AMDGPU.h:267
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUPromoteAllocaToVectorPass(TargetMachine &TM)
Definition AMDGPU.h:276
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
const AMDGPUTargetMachine & TM
Definition AMDGPU.h:326
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUSwLowerLDSPass(const AMDGPUTargetMachine &TM_)
Definition AMDGPU.h:327
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
Support structure for SCC passes to communicate updates the call graph back to the CGSCC pass manager...
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition PassManager.h:70