LLVM 17.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
13#include "llvm/IR/PassManager.h"
14#include "llvm/Pass.h"
16
17namespace llvm {
18
19class TargetMachine;
20
21// GlobalISel passes
28
30
31// SI Passes
48
62
63struct AMDGPUSimplifyLibCallsPass : PassInfoMixin<AMDGPUSimplifyLibCallsPass> {
66
67private:
68 TargetMachine &TM;
69};
70
71struct AMDGPUUseNativeCallsPass : PassInfoMixin<AMDGPUUseNativeCallsPass> {
73};
74
76
79
81
87
90extern char &AMDGPUAtomicOptimizerID;
91
94extern char &AMDGPULowerIntrinsicsID;
95
99
103
107
109 : PassInfoMixin<AMDGPUPromoteKernelArgumentsPass> {
111};
112
116
118 : PassInfoMixin<AMDGPULowerKernelAttributesPass> {
120};
121
124
126 : PassInfoMixin<AMDGPUPropagateAttributesEarlyPass> {
129
130private:
131 TargetMachine &TM;
132};
133
136
138 : PassInfoMixin<AMDGPUPropagateAttributesLatePass> {
141
142private:
143 TargetMachine &TM;
144};
145
147extern char &AMDGPULowerModuleLDSID;
148
149struct AMDGPULowerModuleLDSPass : PassInfoMixin<AMDGPULowerModuleLDSPass> {
151};
152
154extern char &AMDGPURewriteOutArgumentsID;
155
157extern char &GCNDPPCombineID;
158
160extern char &SIFoldOperandsID;
161
163extern char &SIPeepholeSDWAID;
164
166extern char &SIShrinkInstructionsID;
167
169extern char &SIFixSGPRCopiesID;
170
172extern char &SIFixVGPRCopiesID;
173
175extern char &SILowerI1CopiesID;
176
178extern char &SILowerSGPRSpillsID;
179
181extern char &SILoadStoreOptimizerID;
182
184extern char &SIWholeQuadModeID;
185
187extern char &SILowerControlFlowID;
188
190extern char &SIPreEmitPeepholeID;
191
193extern char &SILateBranchLoweringPassID;
194
196extern char &SIOptimizeExecMaskingID;
197
199extern char &SIPreAllocateWWMRegsID;
200
202extern char &AMDGPUSimplifyLibCallsID;
203
205extern char &AMDGPUUseNativeCallsID;
206
208extern char &AMDGPUPerfHintAnalysisID;
209
210// Passes common to R600 and SI
213extern char &AMDGPUPromoteAllocaID;
214
218
219struct AMDGPUPromoteAllocaPass : PassInfoMixin<AMDGPUPromoteAllocaPass> {
222
223private:
224 TargetMachine &TM;
225};
226
228 : PassInfoMixin<AMDGPUPromoteAllocaToVectorPass> {
231
232private:
233 TargetMachine &TM;
234};
235
236struct AMDGPUAtomicOptimizerPass : PassInfoMixin<AMDGPUAtomicOptimizerPass> {
239
240private:
241 TargetMachine &TM;
242};
243
246 CodeGenOpt::Level OptLevel);
247ModulePass *createAMDGPUAlwaysInlinePass(bool GlobalOpt = true);
248
249struct AMDGPUAlwaysInlinePass : PassInfoMixin<AMDGPUAlwaysInlinePass> {
250 AMDGPUAlwaysInlinePass(bool GlobalOpt = true) : GlobalOpt(GlobalOpt) {}
252
253private:
254 bool GlobalOpt;
255};
256
258 : public PassInfoMixin<AMDGPUCodeGenPreparePass> {
259private:
260 TargetMachine &TM;
261
262public:
265};
266
268
272
275
277 : PassInfoMixin<AMDGPUPrintfRuntimeBindingPass> {
279};
280
283extern char &AMDGPUUnifyMetadataID;
284
285struct AMDGPUUnifyMetadataPass : PassInfoMixin<AMDGPUUnifyMetadataPass> {
287};
288
291
293extern char &SIOptimizeVGPRLiveRangeID;
294
297
299extern char &AMDGPUCodeGenPrepareID;
300
303
305extern char &AMDGPULateCodeGenPrepareID;
306
310
312extern char &SIAnnotateControlFlowPassID;
313
315extern char &SIMemoryLegalizerID;
316
318extern char &SIModeRegisterID;
319
321extern char &AMDGPUReleaseVGPRsID;
322
324extern char &AMDGPUInsertDelayAluID;
325
327extern char &SIInsertHardClausesID;
328
330extern char &SIInsertWaitcntsID;
331
333extern char &SIFormMemoryClausesID;
334
336extern char &SIPostRABundlerID;
337
339extern char &GCNCreateVOPDID;
340
343
348
350
354
356extern char &GCNNSAReassignID;
357
359extern char &GCNPreRAOptimizationsID;
360
363
365extern char &GCNRewritePartialRegUsesID;
366
367namespace AMDGPU {
375}
376
377/// OpenCL uses address spaces to differentiate between
378/// various memory regions on the hardware. On the CPU
379/// all of the address spaces point to the same memory,
380/// however on the GPU, each address space points to
381/// a separate piece of memory that is unique from other
382/// memory locations.
383namespace AMDGPUAS {
384enum : unsigned {
385 // The maximum value for flat, generic, local, private, constant and region.
387
388 FLAT_ADDRESS = 0, ///< Address space for flat memory.
389 GLOBAL_ADDRESS = 1, ///< Address space for global memory (RAT0, VTX0).
390 REGION_ADDRESS = 2, ///< Address space for region memory. (GDS)
391
392 CONSTANT_ADDRESS = 4, ///< Address space for constant memory (VTX2).
393 LOCAL_ADDRESS = 3, ///< Address space for local memory.
394 PRIVATE_ADDRESS = 5, ///< Address space for private memory.
395
396 CONSTANT_ADDRESS_32BIT = 6, ///< Address space for 32-bit constant memory.
397
398 BUFFER_FAT_POINTER = 7, ///< Address space for 160-bit buffer fat pointers.
399 ///< Not used in backend.
400
401 BUFFER_RESOURCE = 8, ///< Address space for 128-bit buffer resources.
402
403 /// Internal address spaces. Can be freely renumbered.
404 STREAMOUT_REGISTER = 128, ///< Address space for GS NGG Streamout registers.
405 /// end Internal address spaces.
406
407 /// Address space for direct addressable parameter memory (CONST0).
409 /// Address space for indirect addressable parameter memory (VTX1).
411
412 // Do not re-order the CONSTANT_BUFFER_* enums. Several places depend on
413 // this order to be able to dynamically index a constant buffer, for
414 // example:
415 //
416 // ConstantBufferAS = CONSTANT_BUFFER_0 + CBIdx
417
434
435 // Some places use this if the address space can't be determined.
437};
438}
439
440namespace AMDGPU {
441
442// FIXME: Missing constant_32bit
443inline bool isFlatGlobalAddrSpace(unsigned AS) {
444 return AS == AMDGPUAS::GLOBAL_ADDRESS ||
448}
449
450inline bool isExtendedGlobalAddrSpace(unsigned AS) {
454}
455}
456
457} // End namespace llvm
458
459#endif
#define F(x, y, z)
Definition: MD5.cpp:55
const char LLVMTargetMachineRef TM
This header defines various interfaces for pass management in LLVM.
PreservedAnalyses run(Function &, FunctionAnalysisManager &)
AMDGPUCodeGenPreparePass(TargetMachine &TM)
Definition: AMDGPU.h:263
A container for analyses that lazily runs them and caches their results.
Definition: PassManager.h:620
FunctionPass class - This class is used to implement most global optimizations.
Definition: Pass.h:311
ImmutablePass class - This class is used to provide information that does not need to be run.
Definition: Pass.h:282
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
Definition: Pass.h:251
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:65
PassRegistry - This class manages the registration and intitialization of the pass subsystem as appli...
Definition: PassRegistry.h:37
Pass interface - Implemented by all 'passes'.
Definition: Pass.h:94
A set of analyses that are preserved following a run of a transformation pass.
Definition: PassManager.h:152
Primary interface to the complete machine description for the target machine.
Definition: TargetMachine.h:78
@ CONSTANT_BUFFER_5
Definition: AMDGPU.h:423
@ CONSTANT_BUFFER_15
Definition: AMDGPU.h:433
@ MAX_AMDGPU_ADDRESS
Definition: AMDGPU.h:386
@ CONSTANT_ADDRESS_32BIT
Address space for 32-bit constant memory.
Definition: AMDGPU.h:396
@ CONSTANT_BUFFER_11
Definition: AMDGPU.h:429
@ CONSTANT_BUFFER_6
Definition: AMDGPU.h:424
@ CONSTANT_BUFFER_12
Definition: AMDGPU.h:430
@ PARAM_D_ADDRESS
end Internal address spaces.
Definition: AMDGPU.h:408
@ REGION_ADDRESS
Address space for region memory. (GDS)
Definition: AMDGPU.h:390
@ CONSTANT_BUFFER_2
Definition: AMDGPU.h:420
@ CONSTANT_BUFFER_1
Definition: AMDGPU.h:419
@ CONSTANT_BUFFER_0
Definition: AMDGPU.h:418
@ LOCAL_ADDRESS
Address space for local memory.
Definition: AMDGPU.h:393
@ STREAMOUT_REGISTER
Internal address spaces. Can be freely renumbered.
Definition: AMDGPU.h:404
@ CONSTANT_BUFFER_8
Definition: AMDGPU.h:426
@ CONSTANT_BUFFER_4
Definition: AMDGPU.h:422
@ CONSTANT_BUFFER_3
Definition: AMDGPU.h:421
@ CONSTANT_BUFFER_10
Definition: AMDGPU.h:428
@ PARAM_I_ADDRESS
Address space for indirect addressable parameter memory (VTX1).
Definition: AMDGPU.h:410
@ CONSTANT_ADDRESS
Address space for constant memory (VTX2).
Definition: AMDGPU.h:392
@ UNKNOWN_ADDRESS_SPACE
Definition: AMDGPU.h:436
@ FLAT_ADDRESS
Address space for flat memory.
Definition: AMDGPU.h:388
@ GLOBAL_ADDRESS
Address space for global memory (RAT0, VTX0).
Definition: AMDGPU.h:389
@ CONSTANT_BUFFER_14
Definition: AMDGPU.h:432
@ CONSTANT_BUFFER_9
Definition: AMDGPU.h:427
@ CONSTANT_BUFFER_7
Definition: AMDGPU.h:425
@ CONSTANT_BUFFER_13
Definition: AMDGPU.h:431
@ BUFFER_FAT_POINTER
Address space for 160-bit buffer fat pointers.
Definition: AMDGPU.h:398
@ PRIVATE_ADDRESS
Address space for private memory.
Definition: AMDGPU.h:394
@ BUFFER_RESOURCE
Address space for 128-bit buffer resources.
Definition: AMDGPU.h:401
bool isFlatGlobalAddrSpace(unsigned AS)
Definition: AMDGPU.h:443
@ TI_SCRATCH_RSRC_DWORD1
Definition: AMDGPU.h:371
@ TI_SCRATCH_RSRC_DWORD3
Definition: AMDGPU.h:373
@ TI_SCRATCH_RSRC_DWORD0
Definition: AMDGPU.h:370
@ TI_SCRATCH_RSRC_DWORD2
Definition: AMDGPU.h:372
@ TI_CONSTDATA_START
Definition: AMDGPU.h:369
bool isExtendedGlobalAddrSpace(unsigned AS)
Definition: AMDGPU.h:450
Level
Code generation optimization level.
Definition: CodeGen.h:57
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
void initializeSIFormMemoryClausesPass(PassRegistry &)
char & SIPreAllocateWWMRegsID
ImmutablePass * createAMDGPUAAWrapperPass()
FunctionPass * createSIPreAllocateWWMRegsPass()
FunctionPass * createAMDGPUSetWavePriorityPass()
char & AMDGPUCtorDtorLoweringLegacyPassID
void initializeAMDGPUUseNativeCallsPass(PassRegistry &)
void initializeGCNCreateVOPDPass(PassRegistry &)
ModulePass * createAMDGPUOpenCLEnqueuedBlockLoweringPass()
char & AMDGPUAnnotateKernelFeaturesID
char & GCNPreRAOptimizationsID
void initializeGCNPreRAOptimizationsPass(PassRegistry &)
char & AMDGPUPropagateAttributesEarlyID
void initializeGCNRewritePartialRegUsesPass(llvm::PassRegistry &)
void initializeAMDGPUPerfHintAnalysisPass(PassRegistry &)
char & SIMemoryLegalizerID
void initializeAMDGPUDAGToDAGISelPass(PassRegistry &)
char & SIPostRABundlerID
FunctionPass * createSIModeRegisterPass()
void initializeAMDGPUAAWrapperPassPass(PassRegistry &)
void initializeSIModeRegisterPass(PassRegistry &)
ModulePass * createAMDGPUCtorDtorLoweringLegacyPass()
void initializeSIOptimizeVGPRLiveRangePass(PassRegistry &)
char & AMDGPUSimplifyLibCallsID
void initializeAMDGPULateCodeGenPreparePass(PassRegistry &)
char & AMDGPUPromoteKernelArgumentsID
void initializeAMDGPUAttributorPass(PassRegistry &)
FunctionPass * createAMDGPUPreLegalizeCombiner(bool IsOptNone)
char & GCNRewritePartialRegUsesID
FunctionPass * createAMDGPUPostLegalizeCombiner(bool IsOptNone)
void initializeAMDGPUAnnotateUniformValuesPass(PassRegistry &)
FunctionPass * createAMDGPUISelDag(TargetMachine &TM, CodeGenOpt::Level OptLevel)
This pass converts a legalized DAG into a AMDGPU-specific.
void initializeSIShrinkInstructionsPass(PassRegistry &)
char & SIFoldOperandsID
FunctionPass * createAMDGPURewriteOutArgumentsPass()
char & SILowerI1CopiesID
char & AMDGPUResourceUsageAnalysisID
void initializeAMDGPUPropagateAttributesLatePass(PassRegistry &)
char & AMDGPULowerModuleLDSID
char & SILoadStoreOptimizerID
FunctionPass * createSIWholeQuadModePass()
ModulePass * createAMDGPULowerKernelAttributesPass()
char & AMDGPUReleaseVGPRsID
ModulePass * createAMDGPULowerIntrinsicsPass()
ModulePass * createAMDGPUAlwaysInlinePass(bool GlobalOpt=true)
FunctionPass * createSIPeepholeSDWAPass()
void initializeSIPreEmitPeepholePass(PassRegistry &)
FunctionPass * createSILoadStoreOptimizerPass()
void initializeSIFixVGPRCopiesPass(PassRegistry &)
ModulePass * createAMDGPUUnifyMetadataPass()
void initializeAMDGPUMachineCFGStructurizerPass(PassRegistry &)
void initializeAMDGPURemoveIncompatibleFunctionsPass(PassRegistry &)
void initializeGCNNSAReassignPass(PassRegistry &)
void initializeSIInsertWaitcntsPass(PassRegistry &)
char & SIFormMemoryClausesID
char & AMDGPURemoveIncompatibleFunctionsID
void initializeAMDGPUCtorDtorLoweringLegacyPass(PassRegistry &)
void initializeAMDGPURegBankCombinerPass(PassRegistry &)
void initializeSILoadStoreOptimizerPass(PassRegistry &)
void initializeSILateBranchLoweringPass(PassRegistry &)
void initializeSIPeepholeSDWAPass(PassRegistry &)
FunctionPass * createAMDGPUPromoteAllocaToVector()
char & AMDGPULateCodeGenPrepareID
char & AMDGPUUnifyDivergentExitNodesID
ModulePass * createAMDGPULowerModuleLDSPass()
char & SIInsertWaitcntsID
char & AMDGPUPrintfRuntimeBindingID
char & GCNNSAReassignID
void initializeAMDGPURewriteOutArgumentsPass(PassRegistry &)
void initializeAMDGPUExternalAAWrapperPass(PassRegistry &)
void initializeAMDGPULowerKernelArgumentsPass(PassRegistry &)
char & AMDGPUPerfHintAnalysisID
char & SILowerSGPRSpillsID
char & SILateBranchLoweringPassID
char & SIModeRegisterID
char & AMDGPULowerIntrinsicsID
void initializeAMDGPURewriteUndefForPHIPass(PassRegistry &)
FunctionPass * createGCNPreRAOptimizationsPass()
FunctionPass * createSIShrinkInstructionsPass()
void initializeAMDGPUAnnotateKernelFeaturesPass(PassRegistry &)
void initializeSIPostRABundlerPass(PassRegistry &)
FunctionPass * createAMDGPUAtomicOptimizerPass()
void initializeAMDGPUPromoteAllocaToVectorPass(PassRegistry &)
void initializeAMDGPULowerModuleLDSPass(PassRegistry &)
void initializeSIWholeQuadModePass(PassRegistry &)
FunctionPass * createAMDGPULowerKernelArgumentsPass()
char & AMDGPUInsertDelayAluID
Pass * createAMDGPUAnnotateKernelFeaturesPass()
char & SIOptimizeVGPRLiveRangeID
char & SIOptimizeExecMaskingPreRAID
FunctionPass * createAMDGPUPropagateAttributesEarlyPass(const TargetMachine *)
void initializeSIInsertHardClausesPass(PassRegistry &)
void initializeAMDGPUSimplifyLibCallsPass(PassRegistry &)
FunctionPass * createSIPostRABundlerPass()
FunctionPass * createSIFormMemoryClausesPass()
FunctionPass * createAMDGPUSimplifyLibCallsPass(const TargetMachine *)
void initializeAMDGPUPostLegalizerCombinerPass(PassRegistry &)
Pass * createAMDGPUStructurizeCFGPass()
void initializeSIAnnotateControlFlowPass(PassRegistry &)
ModulePass * createAMDGPUPrintfRuntimeBinding()
void initializeSIMemoryLegalizerPass(PassRegistry &)
char & AMDGPUUnifyMetadataID
void initializeAMDGPUPropagateAttributesEarlyPass(PassRegistry &)
FunctionPass * createAMDGPUAnnotateUniformValues()
void initializeAMDGPUPreLegalizerCombinerPass(PassRegistry &)
FunctionPass * createAMDGPUPromoteAlloca()
char & SIPreEmitPeepholeID
ModulePass * createAMDGPURemoveIncompatibleFunctionsPass(const TargetMachine *)
FunctionPass * createSILowerI1CopiesPass()
char & AMDGPURewriteOutArgumentsID
void initializeAMDGPUArgumentUsageInfoPass(PassRegistry &)
void initializeSIPreAllocateWWMRegsPass(PassRegistry &)
FunctionPass * createAMDGPUCodeGenPreparePass()
void initializeAMDGPUAtomicOptimizerPass(PassRegistry &)
char & AMDGPUMachineCFGStructurizerID
char & AMDGPULowerKernelAttributesID
char & GCNDPPCombineID
void initializeAMDGPULowerIntrinsicsPass(PassRegistry &)
FunctionPass * createAMDGPURewriteUndefForPHIPass()
FunctionPass * createAMDGPURegBankCombiner(bool IsOptNone)
char & AMDGPUPromoteAllocaID
FunctionPass * createAMDGPUUseNativeCallsPass()
FunctionPass * createSIFoldOperandsPass()
char & SIWholeQuadModeID
void initializeSIOptimizeExecMaskingPreRAPass(PassRegistry &)
ImmutablePass * createAMDGPUExternalAAWrapperPass()
void initializeAMDGPUCodeGenPreparePass(PassRegistry &)
void initializeSILowerSGPRSpillsPass(PassRegistry &)
void initializeAMDGPULowerKernelAttributesPass(PassRegistry &)
char & SIInsertHardClausesID
FunctionPass * createAMDGPUMachineCFGStructurizerPass()
void initializeAMDGPUResourceUsageAnalysisPass(PassRegistry &)
void initializeSIFixSGPRCopiesPass(PassRegistry &)
char & GCNCreateVOPDID
Pass * createAMDGPUAttributorPass()
void initializeSILowerI1CopiesPass(PassRegistry &)
char & SILowerControlFlowID
char & AMDGPUAtomicOptimizerID
char & SIAnnotateControlFlowPassID
void initializeSIOptimizeExecMaskingPass(PassRegistry &)
char & AMDGPUAnnotateUniformValuesPassID
FunctionPass * createSIMemoryLegalizerPass()
ModulePass * createAMDGPUPropagateAttributesLatePass(const TargetMachine *)
void initializeSIFoldOperandsPass(PassRegistry &)
void initializeSILowerControlFlowPass(PassRegistry &)
char & SIPeepholeSDWAID
char & AMDGPUOpenCLEnqueuedBlockLoweringID
char & SIFixVGPRCopiesID
void initializeAMDGPUReleaseVGPRsPass(PassRegistry &)
void initializeAMDGPURegBankSelectPass(PassRegistry &)
FunctionPass * createSIOptimizeVGPRLiveRangePass()
void initializeAMDGPUUnifyDivergentExitNodesPass(PassRegistry &)
FunctionPass * createSIInsertWaitcntsPass()
void initializeGCNDPPCombinePass(PassRegistry &)
FunctionPass * createSIOptimizeExecMaskingPreRAPass()
FunctionPass * createGCNDPPCombinePass()
FunctionPass * createAMDGPULateCodeGenPreparePass()
FunctionPass * createSIFixSGPRCopiesPass()
void initializeAMDGPUPrintfRuntimeBindingPass(PassRegistry &)
void initializeAMDGPUPromoteAllocaPass(PassRegistry &)
void initializeAMDGPUOpenCLEnqueuedBlockLoweringPass(PassRegistry &)
char & AMDGPUPromoteAllocaToVectorID
char & AMDGPURewriteUndefForPHIPassID
void initializeAMDGPUInsertDelayAluPass(PassRegistry &)
char & SIOptimizeExecMaskingID
void initializeAMDGPUUnifyMetadataPass(PassRegistry &)
FunctionPass * createSIFixControlFlowLiveIntervalsPass()
char & SIFixSGPRCopiesID
FunctionPass * createSIAnnotateControlFlowPass()
Create the annotation pass.
char & AMDGPUUseNativeCallsID
char & AMDGPULowerKernelArgumentsID
char & AMDGPUPropagateAttributesLateID
void initializeAMDGPUAlwaysInlinePass(PassRegistry &)
char & AMDGPUCodeGenPrepareID
void initializeAMDGPUSetWavePriorityPass(PassRegistry &)
char & SIShrinkInstructionsID
FunctionPass * createAMDGPUPromoteKernelArgumentsPass()
void initializeAMDGPUPromoteKernelArgumentsPass(PassRegistry &)
AMDGPUAlwaysInlinePass(bool GlobalOpt=true)
Definition: AMDGPU.h:250
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUAtomicOptimizerPass(TargetMachine &TM)
Definition: AMDGPU.h:237
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUPromoteAllocaPass(TargetMachine &TM)
Definition: AMDGPU.h:220
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUPromoteAllocaToVectorPass(TargetMachine &TM)
Definition: AMDGPU.h:229
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
AMDGPUPropagateAttributesEarlyPass(TargetMachine &TM)
Definition: AMDGPU.h:127
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
AMDGPUPropagateAttributesLatePass(TargetMachine &TM)
Definition: AMDGPU.h:139
AMDGPUSimplifyLibCallsPass(TargetMachine &TM)
Definition: AMDGPU.h:64
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
A CRTP mix-in to automatically provide informational APIs needed for passes.
Definition: PassManager.h:371