Mesa (master): gallivm: added a debug function which allows llvm to print vectors of 16 unsigned ints

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed May 2 09:25:58 UTC 2012


Module: Mesa
Branch: master
Commit: f64fe7d333ef5f00f1d13d19c9b986abe21a524c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f64fe7d333ef5f00f1d13d19c9b986abe21a524c

Author: James Benton <jbenton at vmware.com>
Date:   Thu Apr 19 18:13:14 2012 +0100

gallivm: added a debug function which allows llvm to print vectors of 16 unsigned ints

This is useful for debugging the linear llvm path as it handles pixels in this format

Signed-off-by: José Fonseca <jfonseca at vmware.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_printf.c |   25 +++++++++++++++++++++++++
 src/gallium/auxiliary/gallivm/lp_bld_printf.h |    4 ++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.c b/src/gallium/auxiliary/gallivm/lp_bld_printf.c
index 56ff426..0d8d806 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_printf.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_printf.c
@@ -170,3 +170,28 @@ lp_build_print_ivec4(struct gallivm_state *gallivm,
    util_snprintf(format, sizeof(format), "%s %%i %%i %%i %%i\n", msg);
    return lp_build_printf(gallivm, format, x, y, z, w);
 }
+
+
+/**
+ * Print a uint8[16] vector.
+ */
+LLVMValueRef
+lp_build_print_uvec16(struct gallivm_state *gallivm,
+                    const char *msg, LLVMValueRef vec)
+{
+   LLVMBuilderRef builder = gallivm->builder;
+   char format[1000];
+   LLVMValueRef args[16];
+
+   for(int i = 0; i < 16; ++i)
+      args[i] = LLVMBuildExtractElement(builder, vec, lp_build_const_int32(gallivm, i), "");
+
+   util_snprintf(format, sizeof(format), "%s %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u %%u\n", msg);
+
+   return lp_build_printf(
+            gallivm, format,
+            args[ 0], args[ 1], args[ 2], args[ 3],
+            args[ 4], args[ 5], args[ 6], args[ 7],
+            args[ 8], args[ 9], args[10], args[11],
+            args[12], args[13], args[14], args[15]);
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.h b/src/gallium/auxiliary/gallivm/lp_bld_printf.h
index 79db74d..ec087fd 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_printf.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_printf.h
@@ -49,5 +49,9 @@ LLVMValueRef
 lp_build_print_ivec4(struct gallivm_state *gallivm,
                      const char *msg, LLVMValueRef vec);
 
+LLVMValueRef
+lp_build_print_uvec16(struct gallivm_state *gallivm,
+                     const char *msg, LLVMValueRef vec);
+
 #endif
 




More information about the mesa-commit mailing list