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