Mesa (master): radv/ac: workaround regression in llvm 4.0 release

Dave Airlie airlied at kemper.freedesktop.org
Tue Mar 14 23:52:03 UTC 2017


Module: Mesa
Branch: master
Commit: 7372e3cf5f2df9dd2ec0423a4425baad098bf326
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7372e3cf5f2df9dd2ec0423a4425baad098bf326

Author: Dave Airlie <airlied at redhat.com>
Date:   Wed Mar 15 07:15:50 2017 +1000

radv/ac: workaround regression in llvm 4.0 release

LLVM 4.0 released with a pretty messy regression, that hopefully
get fixed in the future.

This work around was proposed by Tom, and it fixes the CTS regressions
here at least, I'm not sure if this will cause any major side effects,
but correctness over speed and all that.

radeonsi should possibly consider the same workaround until an llvm
fix can be found.

Acked-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/common/ac_llvm_util.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c
index a2fe631..3687e98 100644
--- a/src/amd/common/ac_llvm_util.c
+++ b/src/amd/common/ac_llvm_util.c
@@ -26,7 +26,7 @@
 #include "ac_llvm_util.h"
 #include "util/bitscan.h"
 #include <llvm-c/Core.h>
-
+#include <llvm-c/Support.h>
 #include "c11/threads.h"
 
 #include <assert.h>
@@ -39,6 +39,17 @@ static void ac_init_llvm_target()
 	LLVMInitializeAMDGPUTarget();
 	LLVMInitializeAMDGPUTargetMC();
 	LLVMInitializeAMDGPUAsmPrinter();
+
+	/*
+	 * Workaround for bug in llvm 4.0 that causes image intrinsics
+	 * to disappear.
+	 * https://reviews.llvm.org/D26348
+	 */
+#if HAVE_LLVM >= 0x0400
+	const char *argv[2] = {"mesa", "-simplifycfg-sink-common=false"};
+	LLVMParseCommandLineOptions(2, argv, NULL);
+#endif
+
 }
 
 static once_flag ac_init_llvm_target_once_flag = ONCE_FLAG_INIT;




More information about the mesa-commit mailing list