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@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie
2017-03-15 07:15:50 +10:00
parent 3ece76f03d
commit 7372e3cf5f

View File

@@ -26,7 +26,7 @@
#include "ac_llvm_util.h" #include "ac_llvm_util.h"
#include "util/bitscan.h" #include "util/bitscan.h"
#include <llvm-c/Core.h> #include <llvm-c/Core.h>
#include <llvm-c/Support.h>
#include "c11/threads.h" #include "c11/threads.h"
#include <assert.h> #include <assert.h>
@@ -39,6 +39,17 @@ static void ac_init_llvm_target()
LLVMInitializeAMDGPUTarget(); LLVMInitializeAMDGPUTarget();
LLVMInitializeAMDGPUTargetMC(); LLVMInitializeAMDGPUTargetMC();
LLVMInitializeAMDGPUAsmPrinter(); 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; static once_flag ac_init_llvm_target_once_flag = ONCE_FLAG_INIT;