radeon/llvm: Add subtarget feature: DumpCode
authorTom Stellard <thomas.stellard@amd.com>
Tue, 1 May 2012 17:08:26 +0000 (13:08 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Tue, 1 May 2012 17:12:27 +0000 (13:12 -0400)
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
src/gallium/drivers/radeon/AMDILBase.td
src/gallium/drivers/radeon/AMDILSubtarget.h
src/gallium/drivers/radeon/R600CodeEmitter.cpp
src/gallium/drivers/radeon/radeon_llvm_emit.cpp

index d4165b0..7f621d8 100644 (file)
@@ -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 */
index 2706b21..31ebed3 100644 (file)
@@ -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
index a4b0e34..38fcb85 100644 (file)
@@ -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; }
 
   };
 
index 8faf0de..53fdd15 100644 (file)
@@ -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();
   }
 
index b409cb2..3431316 100644 (file)
@@ -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()));