ac/nir: remove the bitfield_extract workaround for LLVM 8
This workaround has been introduced by 3d41757788 and it
is no longer needed since LLVM r346422.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user