<div dir="ltr"><div>Reviewed-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>></div><div><br></div><div>Marek<br></div></div><br><div class="gmail_quote"><div dir="ltr">On Wed, Dec 19, 2018 at 11:50 AM Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This workaround has been introduced by 3d41757788a and it<br>
is no longer needed since LLVM r346422.<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/amd/common/ac_nir_to_llvm.c | 24 +++++++++++++++---------<br>
 1 file changed, 15 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c<br>
index 225c930d896..81b76f65b82 100644<br>
--- a/src/amd/common/ac_nir_to_llvm.c<br>
+++ b/src/amd/common/ac_nir_to_llvm.c<br>
@@ -429,16 +429,22 @@ static LLVMValueRef emit_bitfield_extract(struct ac_llvm_context *ctx,<br>
 {<br>
        LLVMValueRef result;<br>
<br>
-       /* FIXME: LLVM 7+ returns incorrect result when count is 0.<br>
-        * <a href="https://bugs.freedesktop.org/show_bug.cgi?id=107276" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=107276</a><br>
-        */<br>
-       LLVMValueRef zero = ctx->i32_0;<br>
-       LLVMValueRef icond1 = LLVMBuildICmp(ctx->builder, LLVMIntEQ, srcs[2], LLVMConstInt(ctx->i32, 32, false), "");<br>
-       LLVMValueRef icond2 = LLVMBuildICmp(ctx->builder, LLVMIntEQ, srcs[2], zero, "");<br>
+       if (HAVE_LLVM >= 0x0800) {<br>
+               LLVMValueRef icond = LLVMBuildICmp(ctx->builder, LLVMIntEQ, srcs[2], LLVMConstInt(ctx->i32, 32, false), "");<br>
+               result = ac_build_bfe(ctx, srcs[0], srcs[1], srcs[2], is_signed);<br>
+               result = LLVMBuildSelect(ctx->builder, icond, srcs[0], result, "");<br>
+       } else {<br>
+               /* FIXME: LLVM 7+ returns incorrect result when count is 0.<br>
+                * <a href="https://bugs.freedesktop.org/show_bug.cgi?id=107276" rel="noreferrer" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=107276</a><br>
+                */<br>
+               LLVMValueRef zero = ctx->i32_0;<br>
+               LLVMValueRef icond1 = LLVMBuildICmp(ctx->builder, LLVMIntEQ, srcs[2], LLVMConstInt(ctx->i32, 32, false), "");<br>
+               LLVMValueRef icond2 = LLVMBuildICmp(ctx->builder, LLVMIntEQ, srcs[2], zero, "");<br>
<br>
-       result = ac_build_bfe(ctx, srcs[0], srcs[1], srcs[2], is_signed);<br>
-       result = LLVMBuildSelect(ctx->builder, icond1, srcs[0], result, "");<br>
-       result = LLVMBuildSelect(ctx->builder, icond2, zero, result, "");<br>
+               result = ac_build_bfe(ctx, srcs[0], srcs[1], srcs[2], is_signed);<br>
+               result = LLVMBuildSelect(ctx->builder, icond1, srcs[0], result, "");<br>
+               result = LLVMBuildSelect(ctx->builder, icond2, zero, result, "");<br>
+       }<br>
<br>
        return result;<br>
 }<br>
-- <br>
2.20.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>