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