For the series: Reviewed-by: Marek Olšák <marek.ol...@amd.com>
Marek On Thu, Feb 8, 2018 at 1:25 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote: > v2: use LLVMBuildTrunc() > --- > src/amd/common/ac_llvm_build.c | 22 ++++++++++++++++++++-- > 1 file changed, 20 insertions(+), 2 deletions(-) > > diff --git a/src/amd/common/ac_llvm_build.c b/src/amd/common/ac_llvm_build.c > index 6352ca44ea..d7e1f2bbdf 100644 > --- a/src/amd/common/ac_llvm_build.c > +++ b/src/amd/common/ac_llvm_build.c > @@ -1984,6 +1984,20 @@ LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx, > LLVMTypeRef dst_type, > LLVMValueRef src0) > { > + unsigned src0_bitsize = ac_get_elem_bits(ctx, LLVMTypeOf(src0)); > + const char *intrin_name; > + LLVMTypeRef type; > + LLVMValueRef zero; > + if (src0_bitsize == 64) { > + intrin_name = "llvm.cttz.i64"; > + type = ctx->i64; > + zero = ctx->i64_0; > + } else { > + intrin_name = "llvm.cttz.i32"; > + type = ctx->i32; > + zero = ctx->i32_0; > + } > + > LLVMValueRef params[2] = { > src0, > > @@ -1999,15 +2013,19 @@ LLVMValueRef ac_find_lsb(struct ac_llvm_context *ctx, > LLVMConstInt(ctx->i1, 1, false), > }; > > - LLVMValueRef lsb = ac_build_intrinsic(ctx, "llvm.cttz.i32", ctx->i32, > + LLVMValueRef lsb = ac_build_intrinsic(ctx, intrin_name, type, > params, 2, > AC_FUNC_ATTR_READNONE); > > + if (src0_bitsize == 64) { > + lsb = LLVMBuildTrunc(ctx->builder, lsb, ctx->i32, ""); > + } > + > /* TODO: We need an intrinsic to skip this conditional. */ > /* Check for zero: */ > return LLVMBuildSelect(ctx->builder, LLVMBuildICmp(ctx->builder, > LLVMIntEQ, src0, > - ctx->i32_0, ""), > + zero, ""), > LLVMConstInt(ctx->i32, -1, 0), lsb, ""); > } > > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev