Reviewed-by: Marek Olšák <marek.ol...@amd.com>

Marek

On Wed, Dec 19, 2018 at 11:50 AM Samuel Pitoiset <samuel.pitoi...@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.pitoi...@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@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

Reply via email to