[Mesa-dev] [PATCH] ac/nir: remove the bitfield_extract workaround for LLVM 8

Marek Olšák maraeo at gmail.com
Thu Dec 20 08:20:49 UTC 2018


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

Marek

On Wed, Dec 19, 2018 at 11:50 AM Samuel Pitoiset <samuel.pitoiset at gmail.com>
wrote:

> This workaround has been introduced by 3d41757788a and it
> is no longer needed since LLVM r346422.
>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  src/amd/common/ac_nir_to_llvm.c | 24 +++++++++++++++---------
>  1 file changed, 15 insertions(+), 9 deletions(-)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c
> b/src/amd/common/ac_nir_to_llvm.c
> index 225c930d896..81b76f65b82 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -429,16 +429,22 @@ static LLVMValueRef emit_bitfield_extract(struct
> ac_llvm_context *ctx,
>  {
>         LLVMValueRef result;
>
> -       /* FIXME: LLVM 7+ returns incorrect result when count is 0.
> -        * https://bugs.freedesktop.org/show_bug.cgi?id=107276
> -        */
> -       LLVMValueRef zero = ctx->i32_0;
> -       LLVMValueRef icond1 = LLVMBuildICmp(ctx->builder, LLVMIntEQ,
> srcs[2], LLVMConstInt(ctx->i32, 32, false), "");
> -       LLVMValueRef icond2 = LLVMBuildICmp(ctx->builder, LLVMIntEQ,
> srcs[2], zero, "");
> +       if (HAVE_LLVM >= 0x0800) {
> +               LLVMValueRef icond = LLVMBuildICmp(ctx->builder,
> LLVMIntEQ, srcs[2], LLVMConstInt(ctx->i32, 32, false), "");
> +               result = ac_build_bfe(ctx, srcs[0], srcs[1], srcs[2],
> is_signed);
> +               result = LLVMBuildSelect(ctx->builder, icond, srcs[0],
> result, "");
> +       } else {
> +               /* FIXME: LLVM 7+ returns incorrect result when count is 0.
> +                * https://bugs.freedesktop.org/show_bug.cgi?id=107276
> +                */
> +               LLVMValueRef zero = ctx->i32_0;
> +               LLVMValueRef icond1 = LLVMBuildICmp(ctx->builder,
> LLVMIntEQ, srcs[2], LLVMConstInt(ctx->i32, 32, false), "");
> +               LLVMValueRef icond2 = LLVMBuildICmp(ctx->builder,
> LLVMIntEQ, srcs[2], zero, "");
>
> -       result = ac_build_bfe(ctx, srcs[0], srcs[1], srcs[2], is_signed);
> -       result = LLVMBuildSelect(ctx->builder, icond1, srcs[0], result,
> "");
> -       result = LLVMBuildSelect(ctx->builder, icond2, zero, result, "");
> +               result = ac_build_bfe(ctx, srcs[0], srcs[1], srcs[2],
> is_signed);
> +               result = LLVMBuildSelect(ctx->builder, icond1, srcs[0],
> result, "");
> +               result = LLVMBuildSelect(ctx->builder, icond2, zero,
> result, "");
> +       }
>
>         return result;
>  }
> --
> 2.20.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181220/fe5559c4/attachment.html>


More information about the mesa-dev mailing list