diff options
author | José Fonseca <jfonseca@vmware.com> | 2010-03-11 15:33:40 +0000 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2010-03-11 15:42:41 +0000 |
commit | 99f11f653012e8e18502cb0f5cce3cd1e0643c23 (patch) | |
tree | 34ea022e0ae4ca86fac946a9d9417a1f3c64b491 /src/gallium/auxiliary/gallivm/lp_bld_type.c | |
parent | 021cdd698bb57ae9b12b84582302a8d7f656db0c (diff) |
gallivm: Handle scalar types in lp_build_*_type.
Diffstat (limited to 'src/gallium/auxiliary/gallivm/lp_bld_type.c')
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_type.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_type.c b/src/gallium/auxiliary/gallivm/lp_bld_type.c index c327ba045a..796af88caa 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_type.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_type.c @@ -58,7 +58,10 @@ LLVMTypeRef lp_build_vec_type(struct lp_type type) { LLVMTypeRef elem_type = lp_build_elem_type(type); - return LLVMVectorType(elem_type, type.length); + if (type.length == 1) + return elem_type; + else + return LLVMVectorType(elem_type, type.length); } @@ -115,6 +118,9 @@ lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type) if(!vec_type) return FALSE; + if (type.length == 1) + return lp_check_elem_type(type, vec_type); + if(LLVMGetTypeKind(vec_type) != LLVMVectorTypeKind) return FALSE; @@ -153,7 +159,10 @@ LLVMTypeRef lp_build_int_vec_type(struct lp_type type) { LLVMTypeRef elem_type = lp_build_int_elem_type(type); - return LLVMVectorType(elem_type, type.length); + if (type.length == 1) + return elem_type; + else + return LLVMVectorType(elem_type, type.length); } |