LLVM 20.0.0git
|
Analyzes how many registers and other resources are used by functions. More...
#include "AMDGPUResourceUsageAnalysis.h"
#include "AMDGPU.h"
#include "GCNSubtarget.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/Analysis/CallGraph.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/GlobalAlias.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/Target/TargetMachine.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "amdgpu-resource-usage" |
Functions | |
INITIALIZE_PASS (AMDGPUResourceUsageAnalysis, DEBUG_TYPE, "Function register usage analysis", true, true) static const Function *getCalleeFunction(const MachineOperand &Op) | |
static bool | hasAnyNonFlatUseOfReg (const MachineRegisterInfo &MRI, const SIInstrInfo &TII, unsigned Reg) |
Variables | |
static cl::opt< uint32_t > | clAssumedStackSizeForExternalCall ("amdgpu-assume-external-call-stack-size", cl::desc("Assumed stack use of any external call (in bytes)"), cl::Hidden, cl::init(16384)) |
static cl::opt< uint32_t > | clAssumedStackSizeForDynamicSizeObjects ("amdgpu-assume-dynamic-stack-object-size", cl::desc("Assumed extra stack use if there are any " "variable sized objects (in bytes)"), cl::Hidden, cl::init(4096)) |
Analyzes how many registers and other resources are used by functions.
The results of this analysis are used to fill the register usage, flat usage, etc. into hardware registers.
The analysis takes callees into account. E.g. if a function A that needs 10 VGPRs calls a function B that needs 20 VGPRs, querying the VGPR usage of A will return 20. It is assumed that an indirect call can go into any function except hardware-entrypoints. Therefore the register usage of functions with indirect calls is estimated as the maximum of all non-entrypoint functions in the module.
Definition in file AMDGPUResourceUsageAnalysis.cpp.
#define DEBUG_TYPE "amdgpu-resource-usage" |
Definition at line 41 of file AMDGPUResourceUsageAnalysis.cpp.
|
static |
Definition at line 71 of file AMDGPUResourceUsageAnalysis.cpp.
INITIALIZE_PASS | ( | AMDGPUResourceUsageAnalysis | , |
DEBUG_TYPE | , | ||
"Function register usage analysis" | , | ||
true | , | ||
true | |||
) | const & |
Definition at line 60 of file AMDGPUResourceUsageAnalysis.cpp.
References assert().
|
static |
Referenced by llvm::AMDGPUResourceUsageAnalysis::runOnModule().
|
static |
Referenced by llvm::AMDGPUResourceUsageAnalysis::runOnModule().