From: Marek Olšák Date: Tue, 12 Feb 2019 20:00:53 +0000 (-0500) Subject: ac: add ac_get_i1_sgpr_mask X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=35cd57df2ef2a5def5d45d5201438cafcdfa14c5;p=mesa.git ac: add ac_get_i1_sgpr_mask Tested-by: Dieter Nützel Acked-by: Nicolai Hähnle --- diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c index d75b28e1b82..4fdf73c99ba 100644 --- a/src/amd/common/ac_llvm_build.c +++ b/src/amd/common/ac_llvm_build.c @@ -461,6 +461,22 @@ ac_build_ballot(struct ac_llvm_context *ctx, AC_FUNC_ATTR_CONVERGENT); } +LLVMValueRef ac_get_i1_sgpr_mask(struct ac_llvm_context *ctx, + LLVMValueRef value) +{ + LLVMValueRef args[3] = { + value, + ctx->i1false, + LLVMConstInt(ctx->i32, LLVMIntNE, 0), + }; + + assert(HAVE_LLVM >= 0x0800); + return ac_build_intrinsic(ctx, "llvm.amdgcn.icmp.i1", ctx->i64, args, 3, + AC_FUNC_ATTR_NOUNWIND | + AC_FUNC_ATTR_READNONE | + AC_FUNC_ATTR_CONVERGENT); +} + LLVMValueRef ac_build_vote_all(struct ac_llvm_context *ctx, LLVMValueRef value) { diff --git a/src/amd/common/ac_llvm_build.h b/src/amd/common/ac_llvm_build.h index debc029f192..f4cee667153 100644 --- a/src/amd/common/ac_llvm_build.h +++ b/src/amd/common/ac_llvm_build.h @@ -153,6 +153,8 @@ void ac_build_optimization_barrier(struct ac_llvm_context *ctx, LLVMValueRef ac_build_shader_clock(struct ac_llvm_context *ctx); LLVMValueRef ac_build_ballot(struct ac_llvm_context *ctx, LLVMValueRef value); +LLVMValueRef ac_get_i1_sgpr_mask(struct ac_llvm_context *ctx, + LLVMValueRef value); LLVMValueRef ac_build_vote_all(struct ac_llvm_context *ctx, LLVMValueRef value);