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
106FunctionPass *createGCNDPPCombinePass();
108FunctionPass *createSIFoldOperandsLegacyPass();
109FunctionPass *createSIPeepholeSDWALegacyPass();
110FunctionPass *createSILowerI1CopiesLegacyPass();
123
138
144
146 : OptionalPassInfoMixin<AMDGPUImageIntrinsicOptimizerPass> {
149
150private:
151 TargetMachine &TM;
152};
153
158
159class SILowerI1CopiesPass : public RequiredPassInfoMixin<SILowerI1CopiesPass> {
160public:
164};
165
167
169
171
172// DPP/Iterative option enables the atomic optimizer with given strategy
173// whereas None disables the atomic optimizer.
174enum class ScanOptions { DPP, Iterative, None };
175FunctionPass *createAMDGPUAtomicOptimizerPass(ScanOptions ScanStrategy);
177extern char &AMDGPUAtomicOptimizerID;
178
182
186
190
192 : OptionalPassInfoMixin<AMDGPUPromoteKernelArgumentsPass> {
194};
195
199
201 : OptionalPassInfoMixin<AMDGPULowerKernelAttributesPass> {
203};
204
207
215
218
220 : OptionalPassInfoMixin<AMDGPULowerBufferFatPointersPass> {
223
224private:
225 const TargetMachine &TM;
226};
227
229
231 : OptionalPassInfoMixin<AMDGPULowerIntrinsicsPass> {
234
235private:
236 const AMDGPUTargetMachine &TM;
237};
238
241
244
246extern char &AMDGPURewriteOutArgumentsID;
247
249extern char &GCNDPPCombineLegacyID;
250
252extern char &SIFoldOperandsLegacyID;
253
255extern char &SIPeepholeSDWALegacyID;
256
259
261extern char &SIFixSGPRCopiesLegacyID;
262
264extern char &SIFixVGPRCopiesID;
265
268
271
273extern char &SILowerWWMCopiesLegacyID;
274
276extern char &SILowerI1CopiesLegacyID;
277
280
282extern char &AMDGPURegBankSelectLegacyID;
283
286
288extern char &AMDGPUMarkLastScratchLoadID;
289
291extern char &SILowerSGPRSpillsLegacyID;
292
295
297extern char &SIWholeQuadModeID;
298
300extern char &SILowerControlFlowLegacyID;
301
303extern char &SIPreEmitPeepholeID;
304
306extern char &SILateBranchLoweringPassID;
307
310
313
316
319
321extern char &GCNRegPressurePrinterID;
322
325
328
329// Passes common to R600 and SI
332extern char &AMDGPUPromoteAllocaID;
333
335 : OptionalPassInfoMixin<AMDGPUPromoteAllocaPass> {
338
339private:
340 TargetMachine &TM;
341};
342
344 : OptionalPassInfoMixin<AMDGPUPromoteAllocaToVectorPass> {
347
348private:
349 TargetMachine &TM;
350};
351
353 : OptionalPassInfoMixin<AMDGPUAtomicOptimizerPass> {
355 : TM(TM), ScanImpl(ScanImpl) {}
357
358private:
359 TargetMachine &TM;
360 ScanOptions ScanImpl;
361};
362
364 : public OptionalPassInfoMixin<AMDGPUInsertDelayAluPass> {
367};
368
370ModulePass *createAMDGPUAlwaysInlinePass(bool GlobalOpt = true);
371
372struct AMDGPUAlwaysInlinePass : OptionalPassInfoMixin<AMDGPUAlwaysInlinePass> {
373 AMDGPUAlwaysInlinePass(bool GlobalOpt = true) : GlobalOpt(GlobalOpt) {}
375
376private:
377 bool GlobalOpt;
378};
379
383
389
393
398
400 : public OptionalPassInfoMixin<AMDGPUCodeGenPreparePass> {
401private:
402 TargetMachine &TM;
403
404public:
407};
408
410 : public OptionalPassInfoMixin<AMDGPULateCodeGenPreparePass> {
411private:
412 const GCNTargetMachine &TM;
413
414public:
417};
418
420 : public RequiredPassInfoMixin<AMDGPULowerKernelArgumentsPass> {
421private:
422 TargetMachine &TM;
423
424public:
427};
428
430 bool IsClosedWorld = false;
431};
432
434 : public OptionalPassInfoMixin<AMDGPUAttributorPass> {
435private:
436 TargetMachine &TM;
437
439
440 const ThinOrFullLTOPhase LTOPhase;
441
442public:
445 : TM(TM), Options(Options), LTOPhase(LTOPhase) {};
447};
448
450 : public OptionalPassInfoMixin<AMDGPUAttributorCGSCCPass> {
451private:
453
454public:
458};
459
461 : public OptionalPassInfoMixin<AMDGPUPreloadKernelArgumentsPass> {
462 const TargetMachine &TM;
463
464public:
465 explicit AMDGPUPreloadKernelArgumentsPass(const TargetMachine &TM) : TM(TM) {}
466
468};
469
471 : public OptionalPassInfoMixin<AMDGPUAnnotateUniformValuesPass> {
472public:
475};
476
482
484 : public RequiredPassInfoMixin<SIMemoryLegalizerPass> {
485public:
488};
489
490class GCNCreateVOPDPass : public OptionalPassInfoMixin<GCNCreateVOPDPass> {
491public:
494};
495
497 : public OptionalPassInfoMixin<AMDGPUMarkLastScratchLoadPass> {
498public:
501};
502
504 : public RequiredPassInfoMixin<SIInsertWaitcntsPass> {
505public:
508};
509
511 : public OptionalPassInfoMixin<SIInsertHardClausesPass> {
512public:
515};
516
518 : public RequiredPassInfoMixin<SILateBranchLoweringPass> {
519public:
522};
523
525 : public RequiredPassInfoMixin<SIPreEmitPeepholePass> {
526public:
529};
530
532 : public OptionalPassInfoMixin<AMDGPUSetWavePriorityPass> {
533public:
536};
537
539
543
546
548 : OptionalPassInfoMixin<AMDGPUPrintfRuntimeBindingPass> {
550};
551
554
557
560
562extern char &AMDGPUCodeGenPrepareID;
563
566
569
573
575 : public OptionalPassInfoMixin<AMDGPURewriteUndefForPHIPass> {
576public:
579};
580
582 : public RequiredPassInfoMixin<SIAnnotateControlFlowPass> {
583private:
584 const AMDGPUTargetMachine &TM;
585
586public:
589};
590
593
595extern char &SIMemoryLegalizerID;
596
598extern char &SIModeRegisterID;
599
601extern char &AMDGPUInsertDelayAluID;
602
605
607extern char &SIInsertHardClausesID;
608
610extern char &SIInsertWaitcntsID;
611
613extern char &SIFormMemoryClausesID;
614
616extern char &SIPostRABundlerLegacyID;
617
619extern char &GCNCreateVOPDID;
620
623
628
632
634extern char &GCNNSAReassignID;
635
637extern char &GCNPreRALongBranchRegID;
638
640extern char &GCNPreRAOptimizationsID;
641
644
646extern char &GCNRewritePartialRegUsesID;
647
650
652 : public OptionalPassInfoMixin<AMDGPURewriteAGPRCopyMFMAPass> {
653public:
657};
658
661
665
667 : public OptionalPassInfoMixin<AMDGPUUniformIntrinsicCombinePass> {
669};
670
671namespace AMDGPU {
679
680static inline bool addrspacesMayAlias(unsigned AS1, unsigned AS2) {
682 return true;
683
684 // clang-format off
685 static const bool ASAliasRules[][AMDGPUAS::MAX_AMDGPU_ADDRESS + 1] = {
686 /* Flat Global Region Local Constant Private Const32 BufFatPtr BufRsrc BufStrdPtr Reserved Reserved Reserved VGPR Reserved Barrier */
687 /* Flat */ {true, true, false, true, true, true, true, true, true, true, false, false, false, false, false, false},
688 /* Global */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
689 /* Region */ {false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false},
690 /* Local */ {true, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false},
691 /* Constant */ {true, true, false, false, false, false, true, true, true, true, false, false, false, false, false, false},
692 /* Private */ {true, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false},
693 /* Constant 32-bit */ {true, true, false, false, true, false, false, true, true, true, false, false, false, false, false, false},
694 /* Buffer Fat Ptr */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
695 /* Buffer Resource */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
696 /* Buffer Strided Ptr */ {true, true, false, false, true, false, true, true, true, true, false, false, false, false, false, false},
697 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
698 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
699 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
700 // A VGPR ("as memory") access only ever touches the wave's own registers,
701 // which no other address space can reach: a flat pointer obtained by casting
702 // one cannot be dereferenced.
703 /* VGPR */ {false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false},
704 /* Reserved */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false},
705 /* Barrier */ {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true},
706 };
707 // clang-format on
708 static_assert(std::size(ASAliasRules) == AMDGPUAS::MAX_AMDGPU_ADDRESS + 1);
709
710 return ASAliasRules[AS1][AS2];
711}
712
713}
714
715} // End namespace llvm
716
717#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:455
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:443
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPUCodeGenPreparePass(TargetMachine &TM)
Definition AMDGPU.h:405
PreservedAnalyses run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM)
AMDGPULateCodeGenPreparePass(const GCNTargetMachine &TM)
Definition AMDGPU.h:415
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPULowerKernelArgumentsPass(TargetMachine &TM)
Definition AMDGPU.h:425
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:465
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:587
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)
Primary interface to the complete machine description for the target machine.
static bool addrspacesMayAlias(unsigned AS1, unsigned AS2)
Definition AMDGPU.h:680
@ TI_SCRATCH_RSRC_DWORD1
Definition AMDGPU.h:675
@ TI_SCRATCH_RSRC_DWORD3
Definition AMDGPU.h:677
@ TI_SCRATCH_RSRC_DWORD0
Definition AMDGPU.h:674
@ TI_SCRATCH_RSRC_DWORD2
Definition AMDGPU.h:676
@ TI_CONSTDATA_START
Definition AMDGPU.h:673
This is an optimization pass for GlobalISel generic memory operations.
char & AMDGPUGlobalISelDivergenceLoweringLegacyID
ModulePass * createAMDGPUSwLowerLDSLegacyPass()
ScanOptions
Definition AMDGPU.h:174
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
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 initializeAMDGPURegBankCombinerLegacyPass(PassRegistry &)
FunctionPass * createAMDGPURegBankCombinerLegacy(bool IsOptLevelNone)
void initializeAMDGPUPostLegalizerCombinerLegacyPass(PassRegistry &)
void initializeAMDGPUDAGToDAGISelLegacyPass(PassRegistry &)
char & AMDGPUReserveWWMRegsLegacyID
void initializeAMDGPUWaitSGPRHazardsLegacyPass(PassRegistry &)
char & SIOptimizeExecMaskingLegacyID
FunctionPass * createSILoadStoreOptimizerLegacyPass()
FunctionPass * createAMDGPUPostLegalizeCombinerLegacy(bool IsOptNone)
ModulePass * createAMDGPULowerKernelAttributesPass()
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 &)
FunctionPass * createAMDGPUNextUseAnalysisLegacyPass()
char & SILoadStoreOptimizerLegacyID
void initializeAMDGPUPreLegalizerCombinerLegacyPass(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()
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 &)
char & SIFoldOperandsLegacyID
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 initializeAMDGPUExportKernelRuntimeHandlesLegacyPass(PassRegistry &)
FunctionPass * createSIPreAllocateWWMRegsLegacyPass()
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
char & SILowerControlFlowLegacyID
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
FunctionPass * createGCNPreRAOptimizationsLegacyPass()
void initializeAMDGPURewriteAGPRCopyMFMALegacyPass(PassRegistry &)
char & AMDGPULowerKernelAttributesID
void initializeAMDGPUNextUseAnalysisPrinterLegacyPassPass(PassRegistry &)
char & AMDGPUUniformIntrinsicCombineLegacyPassID
void initializeSIPostRABundlerLegacyPass(PassRegistry &)
FunctionPass * createSIWholeQuadModeLegacyPass()
char & GCNRegPressurePrinterID
char & SIWholeQuadModeID
FunctionPass * createSIOptimizeVGPRLiveRangeLegacyPass()
ImmutablePass * createAMDGPUExternalAAWrapperPass()
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 &)
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 &)
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 &)
FunctionPass * createAMDGPURegBankLegalizeLegacyPass()
void initializeAMDGPUPromoteKernelArgumentsPass(PassRegistry &)
AMDGPUAlwaysInlinePass(bool GlobalOpt=true)
Definition AMDGPU.h:373
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUAtomicOptimizerPass(TargetMachine &TM, ScanOptions ScanImpl)
Definition AMDGPU.h:354
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUImageIntrinsicOptimizerPass(TargetMachine &TM)
Definition AMDGPU.h:147
PreservedAnalyses run(MachineFunction &F, MachineFunctionAnalysisManager &MFAM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerBufferFatPointersPass(const TargetMachine &TM)
Definition AMDGPU.h:221
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &MAM)
AMDGPULowerIntrinsicsPass(const AMDGPUTargetMachine &TM)
Definition AMDGPU.h:232
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPULowerModuleLDSPass(const AMDGPUTargetMachine &TM_)
Definition AMDGPU.h:211
const AMDGPUTargetMachine & TM
Definition AMDGPU.h:210
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUPromoteAllocaPass(TargetMachine &TM)
Definition AMDGPU.h:336
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUPromoteAllocaToVectorPass(TargetMachine &TM)
Definition AMDGPU.h:345
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.