[Mesa-dev] [PATCH v2 3/3] ac: add 64bit support to ac_find_lsb()

Marek Olšák maraeo at gmail.com
Thu Feb 8 18:13:22 UTC 2018


For the series:

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Thu, Feb 8, 2018 at 1:25 AM, Timothy Arceri <tarceri at 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list