Module: Mesa Branch: master Commit: 21a6bf8624b64520645bcbe6e63cf192647feadc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=21a6bf8624b64520645bcbe6e63cf192647feadc
Author: José Fonseca <[email protected]> Date: Wed Jun 2 16:00:15 2010 +0100 llvmpipe: Store often used LLVM types in the lp_build_context. --- src/gallium/auxiliary/gallivm/lp_bld_type.c | 20 ++++++++++++++++++-- src/gallium/auxiliary/gallivm/lp_bld_type.h | 12 ++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.c b/src/gallium/auxiliary/gallivm/lp_bld_type.c index aac3a57..06f1aae 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_type.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.c @@ -372,7 +372,23 @@ lp_build_context_init(struct lp_build_context *bld, { bld->builder = builder; bld->type = type; - bld->undef = lp_build_undef(type); - bld->zero = lp_build_zero(type); + + bld->int_elem_type = lp_build_int_elem_type(type); + if (type.floating) + bld->elem_type = lp_build_elem_type(type); + else + bld->elem_type = bld->int_elem_type; + + if (type.length == 1) { + bld->int_vec_type = bld->int_elem_type; + bld->vec_type = bld->elem_type; + } + else { + bld->int_vec_type = LLVMVectorType(bld->int_elem_type, type.length); + bld->vec_type = LLVMVectorType(bld->elem_type, type.length); + } + + bld->undef = LLVMGetUndef(bld->vec_type); + bld->zero = LLVMConstNull(bld->vec_type); bld->one = lp_build_one(type); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.h b/src/gallium/auxiliary/gallivm/lp_bld_type.h index 17819d4..df77ef2 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_type.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.h @@ -129,6 +129,18 @@ struct lp_build_context struct lp_type type; /** Same as lp_build_undef(type) */ + LLVMTypeRef elem_type; + + /** Same as lp_build_undef(type) */ + LLVMTypeRef vec_type; + + /** Same as lp_build_undef(type) */ + LLVMTypeRef int_elem_type; + + /** Same as lp_build_undef(type) */ + LLVMTypeRef int_vec_type; + + /** Same as lp_build_undef(type) */ LLVMValueRef undef; /** Same as lp_build_zero(type) */ _______________________________________________ mesa-commit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-commit
