Mesa (master): gallivm: add integer and unsigned mod arit functions. (v2)

Dave Airlie airlied at kemper.freedesktop.org
Tue Feb 28 10:33:42 UTC 2012


Module: Mesa
Branch: master
Commit: 4ffc8b9ae46dcdb01adedde3ebb60f0c6a22138b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ffc8b9ae46dcdb01adedde3ebb60f0c6a22138b

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Feb 17 19:02:23 2012 +0000

gallivm: add integer and unsigned mod arit functions. (v2)

use a single entry point, as per Jose's suggestion.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_arit.c |   20 ++++++++++++++++++++
 src/gallium/auxiliary/gallivm/lp_bld_arit.h |    5 +++++
 2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
index d379593..65fc180 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
@@ -2555,3 +2555,23 @@ lp_build_ilog2(struct lp_build_context *bld,
 
    return ipart;
 }
+
+LLVMValueRef
+lp_build_mod(struct lp_build_context *bld,
+             LLVMValueRef x,
+             LLVMValueRef y)
+{
+   LLVMBuilderRef builder = bld->gallivm->builder;
+   LLVMValueRef res;
+   const struct lp_type type = bld->type;
+
+   assert(type.floating);
+   assert(lp_check_value(type, x));
+   assert(lp_check_value(type, y));
+
+   if (type.sign)
+      res = LLVMBuildSRem(builder, x, y, "");
+   else
+      res = LLVMBuildURem(builder, x, y, "");
+   return res;
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.h b/src/gallium/auxiliary/gallivm/lp_bld_arit.h
index c78b61d..aeb987f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_arit.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.h
@@ -249,4 +249,9 @@ lp_build_log2_approx(struct lp_build_context *bld,
                      LLVMValueRef *p_floor_log2,
                      LLVMValueRef *p_log2);
 
+LLVMValueRef
+lp_build_mod(struct lp_build_context *bld,
+             LLVMValueRef x,
+             LLVMValueRef y);
+
 #endif /* !LP_BLD_ARIT_H */




More information about the mesa-commit mailing list