FYI, LLVMDumpModule is back: r293436 - llvm-c: Keep LLVMDumpModule() even in release builds
Marek On Mon, Jan 30, 2017 at 3:08 PM, Nicolai Hähnle <nhaeh...@gmail.com> wrote: > On 28.01.2017 23:08, Bas Nieuwenhuizen wrote: >> >> Since LLVM revision 293359 DumpModule gets only implemented when >> either a debug build or LLVM_ENABLE_DUMP is set. >> >> This patch adds a direct replacement for the function for radv and >> radeonsi, However, as I don't know a good place to put common LLVM >> code for all three I inlined the implementation for LLVMPipe. >> >> v2: Use the new code for LLVM 3.4+ instead of LLVM 5+ & fixed indentation >> >> Signed-off-by: Bas Nieuwenhuizen <ba...@google.com> >> --- >> src/amd/common/ac_llvm_util.c | 8 ++++++++ >> src/amd/common/ac_llvm_util.h | 3 +++ >> src/amd/common/ac_nir_to_llvm.c | 2 +- >> src/gallium/drivers/llvmpipe/lp_jit.c | 8 +++++++- >> src/gallium/drivers/radeonsi/si_shader.c | 6 +++--- >> 5 files changed, 22 insertions(+), 5 deletions(-) >> >> diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c >> index 770e3bd13c1..7317db76baa 100644 >> --- a/src/amd/common/ac_llvm_util.c >> +++ b/src/amd/common/ac_llvm_util.c >> @@ -504,3 +504,11 @@ ac_prepare_cube_coords(struct ac_llvm_context *ctx, >> >> memcpy(coords_arg, coords, sizeof(coords)); >> } >> + >> +void >> +ac_dump_module(LLVMModuleRef module) >> +{ >> + char *str = LLVMPrintModuleToString(module); >> + fprintf(stderr, "%s", str); >> + LLVMDisposeMessage(str); >> +} >> diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h >> index 802c2662470..2d301c93575 100644 >> --- a/src/amd/common/ac_llvm_util.h >> +++ b/src/amd/common/ac_llvm_util.h >> @@ -95,6 +95,9 @@ ac_prepare_cube_coords(struct ac_llvm_context *ctx, >> LLVMValueRef *coords_arg, >> LLVMValueRef *derivs_arg); >> >> +void >> +ac_dump_module(LLVMModuleRef module); >> + >> #ifdef __cplusplus >> } >> #endif >> diff --git a/src/amd/common/ac_nir_to_llvm.c >> b/src/amd/common/ac_nir_to_llvm.c >> index 26b87e8782b..5dc74e82da0 100644 >> --- a/src/amd/common/ac_nir_to_llvm.c >> +++ b/src/amd/common/ac_nir_to_llvm.c >> @@ -4566,7 +4566,7 @@ static void >> ac_compile_llvm_module(LLVMTargetMachineRef tm, >> bool dump_shader) >> { >> if (dump_shader) >> - LLVMDumpModule(llvm_module); >> + ac_dump_module(llvm_module); >> >> memset(binary, 0, sizeof(*binary)); >> int v = ac_llvm_compile(llvm_module, binary, tm); >> diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c >> b/src/gallium/drivers/llvmpipe/lp_jit.c >> index 21260369aca..bb2b87f862f 100644 >> --- a/src/gallium/drivers/llvmpipe/lp_jit.c >> +++ b/src/gallium/drivers/llvmpipe/lp_jit.c >> @@ -222,7 +222,13 @@ lp_jit_create_types(struct lp_fragment_shader_variant >> *lp) >> } >> >> if (gallivm_debug & GALLIVM_DEBUG_IR) { >> - LLVMDumpModule(gallivm->module); >> +#if HAVE_LLVM >= 0x304 >> + char *str = LLVMPrintModuleToString(gallivm->module); >> + fprintf(stderr, "%s", str); >> + LLVMDisposeMessage(str); >> +#else >> + DumpModule(gallivm->module); > > > Should be: LLVMDumpModule > > Apart from that: > > Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> > > >> +#endif >> } >> } >> >> diff --git a/src/gallium/drivers/radeonsi/si_shader.c >> b/src/gallium/drivers/radeonsi/si_shader.c >> index 5ca974e48b4..cad7bf7a024 100644 >> --- a/src/gallium/drivers/radeonsi/si_shader.c >> +++ b/src/gallium/drivers/radeonsi/si_shader.c >> @@ -6400,7 +6400,7 @@ int si_compile_llvm(struct si_screen *sscreen, >> >> if (!(sscreen->b.debug_flags & (DBG_NO_IR | >> DBG_PREOPT_IR))) { >> fprintf(stderr, "%s LLVM IR:\n\n", name); >> - LLVMDumpModule(mod); >> + ac_dump_module(mod); >> fprintf(stderr, "\n"); >> } >> } >> @@ -6599,7 +6599,7 @@ si_generate_gs_copy_shader(struct si_screen >> *sscreen, >> /* Dump LLVM IR before any optimization passes */ >> if (sscreen->b.debug_flags & DBG_PREOPT_IR && >> r600_can_dump_shader(&sscreen->b, PIPE_SHADER_GEOMETRY)) >> - LLVMDumpModule(bld_base->base.gallivm->module); >> + ac_dump_module(bld_base->base.gallivm->module); >> >> si_llvm_finalize_module(&ctx, >> r600_extra_shader_checks(&sscreen->b, >> PIPE_SHADER_GEOMETRY)); >> @@ -7603,7 +7603,7 @@ int si_compile_tgsi_shader(struct si_screen >> *sscreen, >> /* Dump LLVM IR before any optimization passes */ >> if (sscreen->b.debug_flags & DBG_PREOPT_IR && >> r600_can_dump_shader(&sscreen->b, ctx.type)) >> - LLVMDumpModule(mod); >> + ac_dump_module(mod); >> >> si_llvm_finalize_module(&ctx, >> r600_extra_shader_checks(&sscreen->b, >> ctx.type)); >> > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev