Mesa (master): gallivm: add cttz wrapper

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Nov 28 05:08:20 UTC 2019


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Nov 20 11:44:22 2019 +1000

gallivm: add cttz wrapper

this will be used to write find_lsb support

Reviewed-by: Roland Scheidegger <sroland at vmware.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_bitarit.c | 14 ++++++++++++++
 src/gallium/auxiliary/gallivm/lp_bld_bitarit.h |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_bitarit.c b/src/gallium/auxiliary/gallivm/lp_bld_bitarit.c
index 998d3592199..c717b988f27 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_bitarit.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_bitarit.c
@@ -252,3 +252,17 @@ lp_build_popcount(struct lp_build_context *bld, LLVMValueRef a)
    result = lp_build_intrinsic_unary(builder, intr_str, bld->vec_type, a);
    return result;
 }
+
+LLVMValueRef
+lp_build_cttz(struct lp_build_context *bld, LLVMValueRef a)
+{
+   LLVMBuilderRef builder = bld->gallivm->builder;
+   LLVMValueRef result;
+   char intr_str[256];
+
+   lp_format_intrinsic(intr_str, sizeof(intr_str), "llvm.cttz", bld->vec_type);
+
+   LLVMValueRef undef_val = LLVMConstNull(LLVMInt1TypeInContext(bld->gallivm->context));
+   result = lp_build_intrinsic_binary(builder, intr_str, bld->vec_type, a, undef_val);
+   return result;
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_bitarit.h b/src/gallium/auxiliary/gallivm/lp_bld_bitarit.h
index e0f4f4aa3bc..989ce5ca568 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_bitarit.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_bitarit.h
@@ -73,4 +73,7 @@ lp_build_not(struct lp_build_context *bld, LLVMValueRef a);
 
 LLVMValueRef
 lp_build_popcount(struct lp_build_context *bld, LLVMValueRef a);
+
+LLVMValueRef
+lp_build_cttz(struct lp_build_context *bld, LLVMValueRef a);
 #endif /* !LP_BLD_ARIT_H */




More information about the mesa-commit mailing list