gallivm: add cttz wrapper

this will be used to write find_lsb support

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
Dave Airlie
2019-11-20 11:44:22 +10:00
parent 1a608901cc
commit 9461f2b5df
2 changed files with 17 additions and 0 deletions
@@ -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;
}
@@ -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 */