[Mesa-dev] [PATCH] gallivm: print declarations of intrinsics with GALLIVM_DEBUG=ir
Jose Fonseca
jfonseca at vmware.com
Tue May 10 04:50:13 UTC 2016
On 09/05/16 18:50, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Those aren't really interesting, however outputting them is helpful when
> trying to feed the IR to llvm llc (or opt) for debugging.
> ---
> src/gallium/auxiliary/gallivm/lp_bld_intr.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_intr.c b/src/gallium/auxiliary/gallivm/lp_bld_intr.c
> index f806503..0a8f996 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_intr.c
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_intr.c
> @@ -51,6 +51,7 @@
> #include "lp_bld_intr.h"
> #include "lp_bld_type.h"
> #include "lp_bld_pack.h"
> +#include "lp_bld_debug.h"
>
>
> void
> @@ -146,6 +147,10 @@ lp_build_intrinsic(LLVMBuilderRef builder,
>
> if (attr)
> LLVMAddFunctionAttr(function, attr);
> +
> + if (gallivm_debug & GALLIVM_DEBUG_IR) {
> + lp_debug_dump_value(function);
> + }
> }
>
> return LLVMBuildCall(builder, function, args, num_args, "");
>
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
It's not a bad idea to dump intrinsics and other functions.
But for the record, the most robust way of getting the whole IR (to pass
to llc/opt) is to dump it to file:
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c
b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index 687c01f..6ca5bac 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -592,7 +592,7 @@ gallivm_compile_module(struct gallivm_state *gallivm)
}
/* Dump byte code to a file */
- if (0) {
+ if (1) {
LLVMWriteBitcodeToFile(gallivm->module, "llvmpipe.bc");
debug_printf("llvmpipe.bc written\n");
debug_printf("Invoke as \"llc -o - llvmpipe.bc\"\n");
But I agree it should be easier to do this (there should be an
GALLIVM_DEBUG option for this). Also this code was written when there
was a single module -- instead of llvmpipe.bc we should use something
derived from module name so each module go to its own file.
Jose
More information about the mesa-dev
mailing list