Reviewed-by: Edward O'Callaghan <eocallag...@alterapraxis.com>

On 2016-02-04 13:28, Michel Dänzer wrote:
From: Michel Dänzer <michel.daen...@amd.com>

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

Signed-off-by: Michel Dänzer <michel.daen...@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) {

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to