gallivm: improve dumping of bitcode
authorRoland Scheidegger <sroland@vmware.com>
Wed, 11 May 2016 02:42:51 +0000 (04:42 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 11 May 2016 02:43:35 +0000 (04:43 +0200)
Use GALLIVM_DEBUG=dumpbc for dumping of modules as bitcode.
Instead of a fixed llvmpipe.bc name, use ir_<modulename>.bc so multiple
modules can be dumped (albeit it might still overwrite previous modules,
particularly the modules from draw tend to always have the same name).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_debug.h
src/gallium/auxiliary/gallivm/lp_bld_init.c

index efb7495547922969740d938ccd72ebca5e85b683..f96a1afa7aa58295b897efb45a20392d60492c04 100644 (file)
@@ -45,6 +45,7 @@
 #define GALLIVM_DEBUG_NO_RHO_APPROX (1 << 6)
 #define GALLIVM_DEBUG_NO_QUAD_LOD   (1 << 7)
 #define GALLIVM_DEBUG_GC            (1 << 8)
+#define GALLIVM_DEBUG_DUMP_BC       (1 << 9)
 
 
 #ifdef __cplusplus
index 687c01f161915a4a56e84893efdd3510c24ea312..cf21ab0653b1a56181ee957ac9f92c594233eb73 100644 (file)
@@ -66,6 +66,7 @@ static const struct debug_named_value lp_bld_debug_flags[] = {
    { "no_rho_approx", GALLIVM_DEBUG_NO_RHO_APPROX, NULL },
    { "no_quad_lod", GALLIVM_DEBUG_NO_QUAD_LOD, NULL },
    { "gc",     GALLIVM_DEBUG_GC, NULL },
+   { "dumpbc", GALLIVM_DEBUG_DUMP_BC, NULL },
    DEBUG_NAMED_VALUE_END
 };
 
@@ -592,10 +593,13 @@ gallivm_compile_module(struct gallivm_state *gallivm)
    }
 
    /* Dump byte code to a file */
-   if (0) {
-      LLVMWriteBitcodeToFile(gallivm->module, "llvmpipe.bc");
-      debug_printf("llvmpipe.bc written\n");
-      debug_printf("Invoke as \"llc -o - llvmpipe.bc\"\n");
+   if (gallivm_debug & GALLIVM_DEBUG_DUMP_BC) {
+      char filename[256];
+      assert(gallivm->module_name);
+      util_snprintf(filename, sizeof(filename), "ir_%s.bc", gallivm->module_name);
+      LLVMWriteBitcodeToFile(gallivm->module, filename);
+      debug_printf("%s written\n", filename);
+      debug_printf("Invoke as \"llc -o - %s\"\n", filename);
    }
 
    if (USE_MCJIT) {