Mesa (master): radeon/llvm: Add subtarget feature: DumpCode
Tom Stellard
tstellar at kemper.freedesktop.org
Tue May 1 17:13:40 UTC 2012
Module: Mesa
Branch: master
Commit: ff10dbf35f1c083d38bbdbec30cadf6703b609e5
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ff10dbf35f1c083d38bbdbec30cadf6703b609e5
Author: Tom Stellard <thomas.stellard at amd.com>
Date: Tue May 1 13:08:26 2012 -0400
radeon/llvm: Add subtarget feature: DumpCode
With this feature enabled, the LLVM backend will dump the MachineIntrs
prior to emitting code. The mesa env variable R600_DUMP_SHADERS will enable
this feature in the backend.
---
src/gallium/drivers/radeon/AMDGPUTargetMachine.h | 3 ---
src/gallium/drivers/radeon/AMDILBase.td | 5 +++++
src/gallium/drivers/radeon/AMDILSubtarget.h | 2 ++
src/gallium/drivers/radeon/R600CodeEmitter.cpp | 4 +---
src/gallium/drivers/radeon/radeon_llvm_emit.cpp | 1 +
5 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/src/gallium/drivers/radeon/AMDGPUTargetMachine.h b/src/gallium/drivers/radeon/AMDGPUTargetMachine.h
index d4165b0..7f621d8 100644
--- a/src/gallium/drivers/radeon/AMDGPUTargetMachine.h
+++ b/src/gallium/drivers/radeon/AMDGPUTargetMachine.h
@@ -52,9 +52,6 @@ public:
formatted_raw_ostream &Out,
CodeGenFileType FileType,
bool DisableVerify);
-public:
- void dumpCode() { mDump = true; }
- bool shouldDumpCode() const { return mDump; }
};
} /* End namespace llvm */
diff --git a/src/gallium/drivers/radeon/AMDILBase.td b/src/gallium/drivers/radeon/AMDILBase.td
index 2706b21..31ebed3 100644
--- a/src/gallium/drivers/radeon/AMDILBase.td
+++ b/src/gallium/drivers/radeon/AMDILBase.td
@@ -60,6 +60,11 @@ def FeatureDebug : SubtargetFeature<"debug",
"CapsOverride[AMDILDeviceInfo::Debug]",
"true",
"Debug mode is enabled, so disable hardware accelerated address spaces.">;
+def FeatureDumpCode : SubtargetFeature <"DumpCode",
+ "mDumpCode",
+ "true",
+ "Dump MachineInstrs in the CodeEmitter">;
+
//===----------------------------------------------------------------------===//
// Register File, Calling Conv, Instruction Descriptions
diff --git a/src/gallium/drivers/radeon/AMDILSubtarget.h b/src/gallium/drivers/radeon/AMDILSubtarget.h
index a4b0e34..38fcb85 100644
--- a/src/gallium/drivers/radeon/AMDILSubtarget.h
+++ b/src/gallium/drivers/radeon/AMDILSubtarget.h
@@ -42,6 +42,7 @@ namespace llvm {
uint32_t mVersion;
bool mIs64bit;
bool mIs32on64bit;
+ bool mDumpCode;
public:
AMDILSubtarget(llvm::StringRef TT, llvm::StringRef CPU, llvm::StringRef FS);
virtual ~AMDILSubtarget();
@@ -67,6 +68,7 @@ namespace llvm {
ParseSubtargetFeatures(
llvm::StringRef CPU,
llvm::StringRef FS);
+ bool dumpCode() const { return mDumpCode; }
};
diff --git a/src/gallium/drivers/radeon/R600CodeEmitter.cpp b/src/gallium/drivers/radeon/R600CodeEmitter.cpp
index 8faf0de..53fdd15 100644
--- a/src/gallium/drivers/radeon/R600CodeEmitter.cpp
+++ b/src/gallium/drivers/radeon/R600CodeEmitter.cpp
@@ -155,10 +155,8 @@ bool R600CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
} else {
evergreenEncoding = true;
}
- const AMDGPUTargetMachine *amdtm =
- static_cast<const AMDGPUTargetMachine *>(&MF.getTarget());
- if (amdtm->shouldDumpCode()) {
+ if (STM.dumpCode()) {
MF.dump();
}
diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
index b409cb2..3431316 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
@@ -105,6 +105,7 @@ radeon_llvm_compile(LLVMModuleRef M, unsigned char ** bytes,
/* XXX: Use TargetMachine.Options in 3.0 */
if (dump) {
mod->dump();
+ FS += ",DumpCode";
}
PassManager PM;
PM.add(new TargetData(*AMDGPUTargetMachine.getTargetData()));
More information about the mesa-commit
mailing list