From: José Fonseca Date: Sat, 21 Aug 2010 10:31:22 +0000 (+0100) Subject: gallivm: Fix lp_build_sum_vector. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e18c7f68b4a18ba3f9ebfd0a4a24e3528cf44800;p=mesa.git gallivm: Fix lp_build_sum_vector. The result is scalar, so when argument is zero/undef we can pass vector zero/undef. Also, support the scalar case. --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 7bb57061f5b..e0d30be98d9 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -259,7 +259,7 @@ lp_build_add(struct lp_build_context *bld, } -/** Return the sum of the elements of a */ +/** Return the scalar sum of the elements of a */ LLVMValueRef lp_build_sum_vector(struct lp_build_context *bld, LLVMValueRef a) @@ -270,11 +270,9 @@ lp_build_sum_vector(struct lp_build_context *bld, assert(lp_check_value(type, a)); - if (a == bld->zero) - return bld->zero; - if (a == bld->undef) - return bld->undef; - assert(type.length > 1); + if (type.length == 1) { + return a; + } assert(!bld->type.norm);