gallivm: Fix and enable the extra Newton/Raphson step in lp_build_rcp().
authorJosé Fonseca <jfonseca@vmware.com>
Wed, 11 Aug 2010 17:44:17 +0000 (18:44 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Wed, 11 Aug 2010 17:45:26 +0000 (18:45 +0100)
Thanks to Michal for spotting this.

src/gallium/auxiliary/gallivm/lp_bld_arit.c

index cf2feeb..816ee70 100644 (file)
@@ -1274,7 +1274,7 @@ lp_build_rcp(struct lp_build_context *bld,
        * when we have a better system in place to track minimum precision.
        */
 
-#if 0
+#if 1
       /*
        * Do one Newton-Raphson step to improve precision:
        *
@@ -1291,7 +1291,7 @@ lp_build_rcp(struct lp_build_context *bld,
       res = LLVMBuildFSub(bld->builder, two, res, "");
       res = LLVMBuildFMul(bld->builder, res, rcp_a, "");
 
-      return rcp_a;
+      return res;
 #else
       return lp_build_intrinsic_unary(bld->builder, "llvm.x86.sse.rcp.ps", lp_build_vec_type(type), a);
 #endif