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