[Mesa-dev] [PATCH] radeonsi: Dump LLVM IR before optimization passes

Michel Dänzer michel at daenzer.net
Thu Feb 4 02:28:34 UTC 2016


From: Michel Dänzer <michel.daenzer at amd.com>

Otherwise it's not possible to diagnose problems caused by optimization
passes.

Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
---
 src/gallium/drivers/radeonsi/si_shader.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 2192b21..d6c719f 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -4089,13 +4089,10 @@ int si_compile_llvm(struct si_screen *sscreen,
 	int r = 0;
 	unsigned count = p_atomic_inc_return(&sscreen->b.num_compilations);
 
-	if (r600_can_dump_shader(&sscreen->b, processor)) {
+	if (!(sscreen->b.debug_flags & DBG_NO_IR) &&
+	    r600_can_dump_shader(&sscreen->b, processor))
 		fprintf(stderr, "radeonsi: Compiling shader %d\n", count);
 
-		if (!(sscreen->b.debug_flags & DBG_NO_IR))
-			LLVMDumpModule(mod);
-	}
-
 	if (!si_replace_shader(count, binary)) {
 		r = radeon_llvm_compile(mod, binary,
 			r600_get_llvm_processor_name(sscreen->b.family), tm,
@@ -4177,6 +4174,11 @@ static int si_generate_gs_copy_shader(struct si_screen *sscreen,
 
 	si_llvm_export_vs(bld_base, outputs, gsinfo->num_outputs);
 
+	/* Dump LLVM IR before any optimization passes */
+	if (!(sscreen->b.debug_flags & DBG_NO_IR) &&
+	    r600_can_dump_shader(&sscreen->b, TGSI_PROCESSOR_GEOMETRY))
+		LLVMDumpModule(bld_base->base.gallivm->module);
+
 	radeon_llvm_finalize_module(&si_shader_ctx->radeon_bld);
 
 	if (dump)
@@ -4383,9 +4385,15 @@ int si_shader_create(struct si_screen *sscreen, LLVMTargetMachineRef tm,
 		goto out;
 	}
 
+	mod = bld_base->base.gallivm->module;
+
+	/* Dump LLVM IR before any optimization passes */
+	if (!(sscreen->b.debug_flags & DBG_NO_IR) &&
+	    r600_can_dump_shader(&sscreen->b, si_shader_ctx.type))
+		LLVMDumpModule(mod);
+
 	radeon_llvm_finalize_module(&si_shader_ctx.radeon_bld);
 
-	mod = bld_base->base.gallivm->module;
 	r = si_compile_llvm(sscreen, &shader->binary, &shader->config, tm,
 			    mod, debug, si_shader_ctx.type);
 	if (r) {
-- 
2.7.0



More information about the mesa-dev mailing list