gallivm: added a debug function which allows llvm to print vectors of 16 unsigned...
authorJames Benton <jbenton@vmware.com>
Thu, 19 Apr 2012 17:13:14 +0000 (18:13 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 2 May 2012 09:24:33 +0000 (10:24 +0100)
This is useful for debugging the linear llvm path as it handles pixels in this format

Signed-off-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_printf.c
src/gallium/auxiliary/gallivm/lp_bld_printf.h

index 56ff42695880381fbe728107a03ca585acf28b08..0d8d8065cb994f21d9c025366add30dcd51f08ed 100644 (file)
@@ -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]);
+}
index 79db74d88861b16e406b1b88dc08451c20cf335b..ec087fd40156edac125fa9627fcd2782b7bc7421 100644 (file)
@@ -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