diff options
Diffstat (limited to 'src/gallium')
| -rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_type.c | 20 | ||||
| -rw-r--r-- | 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 aac3a57bc7..06f1aae6dc 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 17819d4d32..df77ef2155 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) */ | 
