gallivm: Fix lp_build_sum_vector.
authorJosé Fonseca <jfonseca@vmware.com>
Sat, 21 Aug 2010 10:31:22 +0000 (11:31 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 30 Aug 2010 12:26:29 +0000 (13:26 +0100)
The result is scalar, so when argument is zero/undef we can pass vector
zero/undef.

Also, support the scalar case.

src/gallium/auxiliary/gallivm/lp_bld_arit.c

index 7bb57061f5bf6d0dbc295a79c299af08bc1759ec..e0d30be98d9749db0c57c49afe65242d52dfa931 100644 (file)
@@ -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);