[llvm] r206336 - R600/SI: Print code size along with used registers
Matt Arsenault
Matthew.Arsenault at amd.com
Tue Apr 15 15:40:48 PDT 2014
Author: arsenm
Date: Tue Apr 15 17:40:47 2014
New Revision: 206336
URL: http://llvm.org/viewvc/llvm-project?rev=206336&view=rev
Log:
R600/SI: Print code size along with used registers
Modified:
llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp
llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.h
Modified: llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp?rev=206336&r1=206335&r2=206336&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.cpp Tue Apr 15 17:40:47 2014
@@ -64,7 +64,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunct
const AMDGPUSubtarget &STM = TM.getSubtarget<AMDGPUSubtarget>();
SIProgramInfo KernelInfo;
if (STM.getGeneration() > AMDGPUSubtarget::NORTHERN_ISLANDS) {
- findNumUsedRegistersSI(MF, KernelInfo.NumSGPR, KernelInfo.NumVGPR);
+ getSIProgramInfo(KernelInfo, MF);
EmitProgramInfoSI(MF, KernelInfo);
} else {
EmitProgramInfoR600(MF);
@@ -84,8 +84,10 @@ bool AMDGPUAsmPrinter::runOnMachineFunct
SectionKind::getReadOnly());
OutStreamer.SwitchSection(CommentSection);
- if (STM.getGeneration() > AMDGPUSubtarget::NORTHERN_ISLANDS) {
+ if (STM.getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS) {
OutStreamer.emitRawComment(" Kernel info:", false);
+ OutStreamer.emitRawComment(" codeLenInByte = " + Twine(KernelInfo.CodeLen),
+ false);
OutStreamer.emitRawComment(" NumSgprs: " + Twine(KernelInfo.NumSGPR),
false);
OutStreamer.emitRawComment(" NumVgprs: " + Twine(KernelInfo.NumVGPR),
@@ -184,9 +186,9 @@ void AMDGPUAsmPrinter::EmitProgramInfoR6
}
}
-void AMDGPUAsmPrinter::findNumUsedRegistersSI(MachineFunction &MF,
- unsigned &NumSGPR,
- unsigned &NumVGPR) const {
+void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo,
+ MachineFunction &MF) const {
+ uint64_t CodeSize = 0;
unsigned MaxSGPR = 0;
unsigned MaxVGPR = 0;
bool VCCUsed = false;
@@ -200,6 +202,9 @@ void AMDGPUAsmPrinter::findNumUsedRegist
I != E; ++I) {
MachineInstr &MI = *I;
+ // TODO: CodeSize should account for multiple functions.
+ CodeSize += MI.getDesc().Size;
+
unsigned numOperands = MI.getNumOperands();
for (unsigned op_idx = 0; op_idx < numOperands; op_idx++) {
MachineOperand &MO = MI.getOperand(op_idx);
@@ -274,13 +279,9 @@ void AMDGPUAsmPrinter::findNumUsedRegist
if (VCCUsed)
MaxSGPR += 2;
- NumSGPR = MaxSGPR;
- NumVGPR = MaxVGPR;
-}
-
-void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &Out,
- MachineFunction &MF) const {
- findNumUsedRegistersSI(MF, Out.NumSGPR, Out.NumVGPR);
+ ProgInfo.CodeLen = CodeSize;
+ ProgInfo.NumSGPR = MaxSGPR;
+ ProgInfo.NumVGPR = MaxVGPR;
}
void AMDGPUAsmPrinter::EmitProgramInfoSI(MachineFunction &MF,
Modified: llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.h?rev=206336&r1=206335&r2=206336&view=diff
==============================================================================
--- llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.h (original)
+++ llvm/trunk/lib/Target/R600/AMDGPUAsmPrinter.h Tue Apr 15 17:40:47 2014
@@ -24,7 +24,12 @@ namespace llvm {
class AMDGPUAsmPrinter : public AsmPrinter {
private:
struct SIProgramInfo {
- SIProgramInfo() : NumSGPR(0), NumVGPR(0) {}
+ SIProgramInfo() :
+ CodeLen(0),
+ NumSGPR(0),
+ NumVGPR(0) {}
+
+ uint64_t CodeLen;
unsigned NumSGPR;
unsigned NumVGPR;
};
More information about the llvm-commits
mailing list