From f64fe7d333ef5f00f1d13d19c9b986abe21a524c Mon Sep 17 00:00:00 2001 From: James Benton Date: Thu, 19 Apr 2012 18:13:14 +0100 Subject: [PATCH] gallivm: added a debug function which allows llvm to print vectors of 16 unsigned ints MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This is useful for debugging the linear llvm path as it handles pixels in this format Signed-off-by: José Fonseca --- src/gallium/auxiliary/gallivm/lp_bld_printf.c | 25 +++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_printf.h | 4 +++ 2 files changed, 29 insertions(+) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.c b/src/gallium/auxiliary/gallivm/lp_bld_printf.c index 56ff4269588..0d8d8065cb9 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 79db74d8886..ec087fd4015 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 -- 2.30.2