Mesa (master): llvmpipe: Store often used LLVM types in the lp_build_context.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Jun 2 08:02:19 PDT 2010


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

Author: José Fonseca <jfonseca at vmware.com>
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) */



More information about the mesa-commit mailing list