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@vmware.com>
This commit is contained in:
James Benton 2012-04-19 18:13:14 +01:00 committed by José Fonseca
parent 16b081f1b0
commit f64fe7d333
2 changed files with 29 additions and 0 deletions

View 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); util_snprintf(format, sizeof(format), "%s %%i %%i %%i %%i\n", msg);
return lp_build_printf(gallivm, format, x, y, z, w); 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]);
}

View file

@ -49,5 +49,9 @@ LLVMValueRef
lp_build_print_ivec4(struct gallivm_state *gallivm, lp_build_print_ivec4(struct gallivm_state *gallivm,
const char *msg, LLVMValueRef vec); const char *msg, LLVMValueRef vec);
LLVMValueRef
lp_build_print_uvec16(struct gallivm_state *gallivm,
const char *msg, LLVMValueRef vec);
#endif #endif