LLVM 24.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
30
32 : public RequiredPassInfoMixin<AMDGPUPreLegalizerCombinerPass> {
33public:
36};
37
40
42 : public RequiredPassInfoMixin<AMDGPUPostLegalizerCombinerPass> {
43public:
46};
47
50
52 : public RequiredPassInfoMixin<AMDGPURegBankCombinerPass> {
53 bool IsOptLevelNone;
54
55public:
56 explicit AMDGPURegBankCombinerPass(bool IsOptLevelNone = false);
57
60};
62
64 : public RequiredPassInfoMixin<AMDGPUGlobalISelDivergenceLoweringPass> {
65public:
68};
70
72 : public RequiredPassInfoMixin<AMDGPURegBankSelectPass> {
73public:
76
78 return MachineFunctionProperties().setIsSSA().setLegalized();
79 }
80
82 return MachineFunctionProperties().setRegBankSelected();
83 }
84};
86
88 : public RequiredPassInfoMixin<AMDGPURegBankLegalizePass> {
89public:
92
95 .setIsSSA()
96 .setLegalized()
97 .setRegBankSelected();
98 }
99
103};
104
105// SI Passes
107FunctionPass *createSILowerI1CopiesLegacyPass();
111
123
129
131 : OptionalPassInfoMixin<AMDGPUImageIntrinsicOptimizerPass> {
134
135private:
136 TargetMachine &TM;
137};
138
143
144class SILowerI1CopiesPass : public RequiredPassInfoMixin<SILowerI1CopiesPass> {
145public:
149};
150
152
154
156
157// DPP/Iterative option enables the atomic optimizer with given strategy
158// whereas None disables the atomic optimizer.
159enum class ScanOptions { DPP, Iterative, None };
160FunctionPass *createAMDGPUAtomicOptimizerPass(ScanOptions ScanStrategy);
162extern char &AMDGPUAtomicOptimizerID;
163
167
171
174
176 : OptionalPassInfoMixin<AMDGPUPromoteKernelArgumentsPass> {
178};
179
182
184 : OptionalPassInfoMixin<AMDGPULowerKernelAttributesPass> {
186};
187
190
198
201
203 : OptionalPassInfoMixin<AMDGPULowerBufferFatPointersPass> {
206
207private:
208 const TargetMachine &TM;
209};
210
212
214 : OptionalPassInfoMixin<AMDGPULowerIntrinsicsPass> {
217
218private:
219 const AMDGPUTargetMachine &TM;
220};
221
224
227
229extern char &AMDGPURewriteOutArgumentsID;
230
232extern char &GCNDPPCombineLegacyID;
233
235extern char &SIFoldOperandsLegacyID;
236
238extern char &SIPeepholeSDWALegacyID;
239
242
244extern char &SIFixSGPRCopiesLegacyID;
245
247extern char &SIFixVGPRCopiesID;
248
251
254
256extern char &SILowerWWMCopiesLegacyID;
257
259extern char &SILowerI1CopiesLegacyID;
260
263
265extern char &AMDGPURegBankSelectLegacyID;
266
269
271extern char &AMDGPUMarkLastScratchLoadID;
272
274extern char &SILowerSGPRSpillsLegacyID;
275
278
280extern char &SIWholeQuadModeID;
281
283extern char &SILowerControlFlowLegacyID;
284
286extern char &SIPreEmitPeepholeID;
287
289extern char &SILateBranchLoweringPassID;
290
293
296
299
302
304extern char &GCNRegPressurePrinterID;
305
308
311
314
315// Passes common to R600 and SI
318extern char &AMDGPUPromoteAllocaID;
319
321 : OptionalPassInfoMixin<AMDGPUPromoteAllocaPass> {
324
325private:
326 TargetMachine &TM;
327};
328
330 : OptionalPassInfoMixin<AMDGPUPromoteAllocaToVectorPass> {
333
334private:
335 TargetMachine &TM;
336};
337
339 : OptionalPassInfoMixin<AMDGPUAtomicOptimizerPass> {
341 : TM(TM), ScanImpl(ScanImpl) {}
343
344private:
345 TargetMachine &TM;
346 ScanOptions ScanImpl;
347};
348
350 : public OptionalPassInfoMixin<AMDGPUInsertDelayAluPass> {
353};
354
356ModulePass *createAMDGPUAlwaysInlinePass(bool GlobalOpt = true);
357
358struct AMDGPUAlwaysInlinePass : OptionalPassInfoMixin<AMDGPUAlwaysInlinePass> {
359 AMDGPUAlwaysInlinePass(bool GlobalOpt = true) : GlobalOpt(GlobalOpt) {}
361
362private:
363 bool GlobalOpt;
364};
365
369
375
379
384
386 : public OptionalPassInfoMixin<AMDGPUCodeGenPreparePass> {
387private:
388 TargetMachine &TM;
389
390public:
393};
394
396 : public OptionalPassInfoMixin<AMDGPULateCodeGenPreparePass> {
397private:
398 const GCNTargetMachine &TM;
399
400public:
403};
404
406 : public RequiredPassInfoMixin<AMDGPULowerKernelArgumentsPass> {
407private:
408 TargetMachine &TM;
409
410public:
413};
414
416 bool IsClosedWorld = false;
417};
418
420 : public OptionalPassInfoMixin<AMDGPUAttributorPass> {
421private:
422 TargetMachine &TM;
423
425
426 const ThinOrFullLTOPhase LTOPhase;
427
428public:
431 : TM(TM), Options(Options), LTOPhase(LTOPhase) {};
433};
434
436 : public OptionalPassInfoMixin<AMDGPUAttributorCGSCCPass> {
437private:
439
440public:
444};
445
447 : public OptionalPassInfoMixin<AMDGPUPreloadKernelArgumentsPass> {
448 const TargetMachine &TM;
449
450public:
451 explicit AMDGPUPreloadKernelArgumentsPass(const TargetMachine &TM) : TM(TM) {}
452
454};
455
457 : public OptionalPassInfoMixin<AMDGPUAnnotateUniformValuesPass> {
458public:
461};
462
468
470 : public RequiredPassInfoMixin<SIMemoryLegalizerPass> {
471public:
474};
475
476class GCNCreateVOPDPass : public OptionalPassInfoMixin<GCNCreateVOPDPass> {
477public:
480};
481
483 : public OptionalPassInfoMixin<AMDGPUMarkLastScratchLoadPass> {
484public:
487};
488
490 : public RequiredPassInfoMixin<SIInsertWaitcntsPass> {
491public:
494};
495
497 : public OptionalPassInfoMixin<SIInsertHardClausesPass> {
498public:
501};
502
504 : public RequiredPassInfoMixin<SILateBranchLoweringPass> {
505public:
508};
509
511 : public RequiredPassInfoMixin<SIPreEmitPeepholePass> {
512public:
515};
516
518 : public OptionalPassInfoMixin<AMDGPUSetWavePriorityPass> {
519public:
522};
523
525 : public OptionalPassInfoMixin<SIPostRA16BitMovFoldingPass> {
526public:
529};
530
532
536
539
541 : OptionalPassInfoMixin<AMDGPUPrintfRuntimeBindingPass> {
543};
544
547
550
553
555extern char &AMDGPUCodeGenPrepareID;
556
559
562
566
568 : public OptionalPassInfoMixin<AMDGPURewriteUndefForPHIPass> {
569public:
572};
573
575 : public RequiredPassInfoMixin<SIAnnotateControlFlowPass> {
576private:
577 const AMDGPUTargetMachine &TM;
578
579public:
582};
583
586
588extern char &SIMemoryLegalizerID;
589
591extern char &SIModeRegisterID;
592
594extern char &AMDGPUInsertDelayAluID;
595
598
600extern char &SIInsertHardClausesID;
601
603extern char &SIInsertWaitcntsID;
604
606extern char &SIFormMemoryClausesID;
607
609extern char &SIPostRABundlerLegacyID;
610
612extern char &GCNCreateVOPDID;
613
616
620
624
626extern char &GCNNSAReassignID;
627
629extern char &GCNPreRALongBranchRegID;
630
632extern char &GCNPreRAOptimizationsID;
633
636
638extern char &GCNRewritePartialRegUsesID;
639
642
644 : public OptionalPassInfoMixin<AMDGPURewriteAGPRCopyMFMAPass> {
645public:
649};
650
653
657
659 : public OptionalPassInfoMixin<AMDGPUUniformIntrinsicCombinePass> {
661};
662
663namespace AMDGPU {
671
672static inline bool addrspacesMayAlias(unsigned AS1, unsigned AS2) {
674 return true;
675
676 // clang-format off
677 static const bool ASAliasRules[][AMDGPUAS::MAX_AMDGPU_ADDRESS + 1] = {
678 /* Flat Global Region Local Constant Private Const32 BufFatPtr BufRsrc BufStrdPtr Reserved Reserved Reserved VGPR Reserved Barrier */
679 /* Flat */ {true, true, false, true, true, true, true, true, true, true, false, false, false, false, false, false},
680 /* Global */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
681 /* Region */ {false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false},
682 /* Local */ {true, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false},
683 /* Constant */ {true, true, false, false, false, false, true, true, true, true, false, false, false, false, false, false},
684 /* Private */ {true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false},
685 /* Constant 32-bit */ {true, true, false, false, true, false, false, true, true, true, false, false, false, false, false, false},
686 /* Buffer Fat Ptr */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
687 /* Buffer Resource */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
688 /* Buffer Strided Ptr */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
689 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
690 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
691 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
692 // A VGPR ("as memory") access only ever touches the wave's own registers,
693 // which no other address space can reach: a flat pointer obtained by casting
694 // one cannot be dereferenced.
695 /* VGPR */ {false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false},
696 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
697 /* Barrier */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
698 };
699 // clang-format on
700 static_assert(std::size(ASAliasRules) == AMDGPUAS::MAX_AMDGPU_ADDRESS + 1);
701
702 return ASAliasRules[AS1][AS2];
703}
704
705}
706
707} // End namespace llvm
708
709#endif
AMDGPU address space definition.
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
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:441
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:429
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPUCodeGenPreparePass(TargetMachine &TM)
Definition AMDGPU.h:391
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
AMDGPULateCodeGenPreparePass(const GCNTargetMachine &TM)
Definition AMDGPU.h:401
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPULowerKernelArgumentsPass(TargetMachine &TM)
Definition AMDGPU.h:411
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
AMDGPUPreloadKernelArgumentsPass(const TargetMachine &TM)
Definition AMDGPU.h:451
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPURegBankCombinerPass(bool IsOptLevelNone=false)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getRequiredProperties() const
Definition AMDGPU.h:93
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
MachineFunctionProperties getClearedProperties() const
Definition AMDGPU.h:100
MachineFunctionProperties getRequiredProperties() const
Definition AMDGPU.h:77
MachineFunctionProperties getSetProperties() const
Definition AMDGPU.h:81
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
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.
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:255
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
SIAnnotateControlFlowPass(const AMDGPUTargetMachine &TM)
Definition AMDGPU.h:580
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &F, MachineFunctionAnalysisManager &AM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
Primary interface to the complete machine description for the target machine.
static bool addrspacesMayAlias(unsigned AS1, unsigned AS2)
Definition AMDGPU.h:672
@ TI_SCRATCH_RSRC_DWORD1
Definition AMDGPU.h:667
@ TI_SCRATCH_RSRC_DWORD3
Definition AMDGPU.h:669
@ TI_SCRATCH_RSRC_DWORD0
Definition AMDGPU.h:666
@ TI_SCRATCH_RSRC_DWORD2
Definition AMDGPU.h:668
@ TI_CONSTDATA_START
Definition AMDGPU.h:665
This is an optimization pass for GlobalISel generic memory operations.
char & AMDGPUGlobalISelDivergenceLoweringLegacyID
ModulePass * createAMDGPUSwLowerLDSLegacyPass()
ScanOptions
Definition AMDGPU.h:159
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 * 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
void initializeGCNRewritePartialRegUsesLegacyPass(llvm::PassRegistry &)
void initializeAMDGPURewriteUndefForPHILegacyPass(PassRegistry &)
char & AMDGPULowerExecSyncLegacyPassID
char & AMDGPUPromoteKernelArgumentsID
char & GCNRewritePartialRegUsesID
void initializeAMDGPUSetWavePriorityLegacyPass(PassRegistry &)
void initializeAMDGPUSwLowerLDSLegacyPass(PassRegistry &)
void initializeAMDGPULowerVGPREncodingLegacyPass(PassRegistry &)
char & AMDGPUWaitSGPRHazardsLegacyID
void initializeSILowerSGPRSpillsLegacyPass(PassRegistry &)
char & AMDGPUResourceUsageAnalysisID
char & SILowerControlFlowLegacyID
void initializeAMDGPURegBankCombinerLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURegBankCombinerLegacy(bool IsOptLevelNone)
void initializeAMDGPUPostLegalizerCombinerLegacyPass(PassRegistry &)
void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &)
char & AMDGPUReserveWWMRegsLegacyID
void initializeAMDGPUWaitSGPRHazardsLegacyPass(PassRegistry &)
char & SIOptimizeExecMaskingLegacyID
FunctionPass * createAMDGPUPostLegalizeCombinerLegacy(bool IsOptNone)
void initializeAMDGPUNextUseAnalysisLegacyPassPass(PassRegistry &)
void initializeAMDGPURegBankSelectLegacyPass(PassRegistry &)
ModulePass * createAMDGPUExportKernelRuntimeHandlesLegacyPass()
ModulePass * createAMDGPUAlwaysInlinePass(bool GlobalOpt=true)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
void initializeAMDGPUAsmPrinterPass(PassRegistry &)
void initializeSIFoldOperandsLegacyPass(PassRegistry &)
void initializeAMDGPURegBankLegalizeLegacyPass(PassRegistry &)
char & SILoadStoreOptimizerLegacyID
void initializeAMDGPUPreLegalizerCombinerLegacyPass(PassRegistry &)
char & SIFormMemoryClausesID
char & AMDGPURemoveIncompatibleFunctionsID
void initializeSILoadStoreOptimizerLegacyPass(PassRegistry &)
void initializeAMDGPULowerModuleLDSLegacyPass(PassRegistry &)
AnalysisManager< LazyCallGraph::SCC, LazyCallGraph & > CGSCCAnalysisManager
The CGSCC analysis manager.
void initializeAMDGPUCtorDtorLoweringLegacyPass(PassRegistry &)
FunctionPass * createAMDGPUUniformIntrinsicCombineLegacyPass()
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 &)
char & SIFoldOperandsLegacyID
void initializeAMDGPULowerKernelArgumentsPass(PassRegistry &)
void initializeSIModeRegisterLegacyPass(PassRegistry &)
void initializeAMDGPUPreloadKernelArgumentsLegacyPass(PassRegistry &)
char & SILateBranchLoweringPassID
char & SIModeRegisterID
char & SIPostRA16BitMovFoldingLegacyID
char & AMDGPUSwLowerLDSLegacyPassID
void initializeSIMemoryLegalizerLegacyPass(PassRegistry &)
ModulePass * createAMDGPULowerIntrinsicsLegacyPass()
char & GCNDPPCombineLegacyID
FunctionPass * createAMDGPULowerKernelArgumentsPass()
char & AMDGPUInsertDelayAluID
void initializeGCNPreRALongBranchRegLegacyPass(PassRegistry &)
char & SILowerWWMCopiesLegacyID
char & SIOptimizeExecMaskingPreRAID
char & AMDGPULowerModuleLDSLegacyPassID
void initializeAMDGPULowerExecSyncLegacyPass(PassRegistry &)
void initializeAMDGPUExportKernelRuntimeHandlesLegacyPass(PassRegistry &)
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:227
void initializeSIInsertWaitcntsLegacyPass(PassRegistry &)
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)
FunctionPass * createAMDGPUPromoteAlloca()
void initializeAMDGPUReserveWWMRegsLegacyPass(PassRegistry &)
char & SIPreEmitPeepholeID
char & SIPostRABundlerLegacyID
ModulePass * createAMDGPURemoveIncompatibleFunctionsPass(const TargetMachine *)
void initializeGCNRegPressurePrinterPass(PassRegistry &)
char & AMDGPURewriteOutArgumentsID
void initializeSILowerI1CopiesLegacyPass(PassRegistry &)
char & SILowerSGPRSpillsLegacyID
FunctionPass * createAMDGPUCodeGenPreparePass()
void initializeSIAnnotateControlFlowLegacyPass(PassRegistry &)
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 &)
char & AMDGPURegBankLegalizeLegacyID
void initializeAMDGPURewriteAGPRCopyMFMALegacyPass(PassRegistry &)
char & AMDGPULowerKernelAttributesID
void initializeAMDGPUNextUseAnalysisPrinterLegacyPassPass(PassRegistry &)
char & AMDGPUUniformIntrinsicCombineLegacyPassID
void initializeSIPostRABundlerLegacyPass(PassRegistry &)
char & GCNRegPressurePrinterID
char & SIWholeQuadModeID
void initializeAMDGPUCodeGenPreparePass(PassRegistry &)
FunctionPass * createAMDGPURewriteUndefForPHILegacyPass()
void initializeSIOptimizeExecMaskingLegacyPass(PassRegistry &)
char & AMDGPUNextUseAnalysisPrinterLegacyID
FunctionPass * createSILowerI1CopiesLegacyPass()
char & AMDGPULateCodeGenPrepareLegacyID
FunctionPass * createAMDGPURegBankSelectLegacyPass()
void initializeAMDGPULowerKernelAttributesPass(PassRegistry &)
char & SIInsertHardClausesID
char & SIFixSGPRCopiesLegacyID
void initializeGCNDPPCombineLegacyPass(PassRegistry &)
char & GCNCreateVOPDID
char & SIPeepholeSDWALegacyID
char & SIFixVGPRCopiesID
char & AMDGPURegBankSelectLegacyID
void initializeGCNNSAReassignLegacyPass(PassRegistry &)
char & AMDGPUAtomicOptimizerID
char & SILowerI1CopiesLegacyID
void initializeAMDGPUPreloadKernArgPrologLegacyPass(PassRegistry &)
char & AMDGPURewriteAGPRCopyMFMALegacyID
ModulePass * createAMDGPULowerExecSyncLegacyPass()
char & AMDGPUPromoteAllocaID
char & AMDGPULowerVGPREncodingLegacyID
FunctionPass * createAMDGPUGlobalISelDivergenceLoweringPass()
FunctionPass * createAMDGPUPreLegalizeCombinerLegacyPass(bool IsOptLevelNone)
FunctionPass * createSIMemoryLegalizerPass()
void initializeAMDGPULateCodeGenPrepareLegacyPass(PassRegistry &)
void initializeSIOptimizeVGPRLiveRangeLegacyPass(PassRegistry &)
void initializeSIPeepholeSDWALegacyPass(PassRegistry &)
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
FunctionPass * createAMDGPULateCodeGenPrepareLegacyPass()
void initializeAMDGPUGlobalISelDivergenceLoweringLegacyPass(PassRegistry &)
char & AMDGPURewriteUndefForPHILegacyPassID
FunctionPass * createAMDGPUImageIntrinsicOptimizerPass(const TargetMachine *)
void initializeAMDGPULowerBufferFatPointersPass(PassRegistry &)
void initializeAMDGPUUnifyDivergentExitNodesLegacyPass(PassRegistry &)
FunctionPass * createSIInsertWaitcntsPass()
FunctionPass * createAMDGPUAnnotateUniformValuesLegacy()
void initializeSIWholeQuadModeLegacyPass(PassRegistry &)
void initializeAMDGPUResourceUsageAnalysisWrapperPassPass(PassRegistry &)
FunctionPass * createSIShrinkInstructionsLegacyPass()
char & AMDGPUPrepareAGPRAllocLegacyID
char & AMDGPUMarkLastScratchLoadID
char & AMDGPUPreloadKernelArgumentsLegacyID
void initializeAMDGPUAnnotateUniformValuesLegacyPass(PassRegistry &)
void initializeAMDGPUPrintfRuntimeBindingPass(PassRegistry &)
void initializeAMDGPUPromoteAllocaPass(PassRegistry &)
void initializeAMDGPURemoveIncompatibleFunctionsLegacyPass(PassRegistry &)
char & AMDGPULowerKernelArgumentsID
void initializeAMDGPUAlwaysInlinePass(PassRegistry &)
char & AMDGPUCodeGenPrepareID
void initializeSIPreEmitPeepholeLegacyPass(PassRegistry &)
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.
Definition MIRParser.h:39
char & AMDGPUPerfHintAnalysisLegacyID
char & GCNPreRALongBranchRegID
void initializeAMDGPUPerfHintAnalysisLegacyPass(PassRegistry &)
void initializeSIPostRA16BitMovFoldingLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURegBankLegalizeLegacyPass()
void initializeAMDGPUPromoteKernelArgumentsPass(PassRegistry &)
AMDGPUAlwaysInlinePass(bool GlobalOpt=true)
Definition AMDGPU.h:359
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUAtomicOptimizerPass(TargetMachine &TM, ScanOptions ScanImpl)
Definition AMDGPU.h:340
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUImageIntrinsicOptimizerPass(TargetMachine &TM)
Definition AMDGPU.h:132
PreservedAnalyses run(MachineFunction &F, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerBufferFatPointersPass(const TargetMachine &TM)
Definition AMDGPU.h:204
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
AMDGPULowerIntrinsicsPass(const AMDGPUTargetMachine &TM)
Definition AMDGPU.h:215
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerModuleLDSPass(const AMDGPUTargetMachine &TM_)
Definition AMDGPU.h:194
const AMDGPUTargetMachine & TM
Definition AMDGPU.h:193
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUPromoteAllocaPass(TargetMachine &TM)
Definition AMDGPU.h:322
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUPromoteAllocaToVectorPass(TargetMachine &TM)
Definition AMDGPU.h:331
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
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 for passes that can be skipped.
A CRTP mix-in for passes that should not be skipped.