diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | scons/llvm.py | 16 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld.h | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_debug.cpp | 6 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_init.c | 37 | ||||
-rw-r--r-- | src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 30 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_screen.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_state_fs.c | 8 | ||||
-rw-r--r-- | src/gallium/state_trackers/clover/llvm/invocation.cpp | 36 |
9 files changed, 11 insertions, 134 deletions
diff --git a/configure.ac b/configure.ac index 0ed9325449..09a71b7e94 100644 --- a/configure.ac +++ b/configure.ac @@ -1714,7 +1714,7 @@ if test "x$enable_gallium_llvm" = xyes; then fi LLVM_REQUIRED_VERSION_MAJOR="3" - LLVM_REQUIRED_VERSION_MINOR="1" + LLVM_REQUIRED_VERSION_MINOR="3" if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required]) fi diff --git a/scons/llvm.py b/scons/llvm.py index 288a0806f2..1e312f94de 100644 --- a/scons/llvm.py +++ b/scons/llvm.py @@ -37,7 +37,7 @@ import SCons.Errors import SCons.Util -required_llvm_version = '3.1' +required_llvm_version = '3.3' def generate(env): @@ -98,7 +98,7 @@ def generate(env): 'HAVE_STDINT_H', ]) env.Prepend(LIBPATH = [os.path.join(llvm_dir, 'lib')]) - if llvm_version >= distutils.version.LooseVersion('3.2'): + if True: # 3.2 env.Prepend(LIBS = [ 'LLVMBitWriter', 'LLVMX86Disassembler', 'LLVMX86AsmParser', @@ -110,18 +110,6 @@ def generate(env): 'LLVMAnalysis', 'LLVMTarget', 'LLVMMC', 'LLVMCore', 'LLVMSupport', 'LLVMRuntimeDyld', 'LLVMObject' ]) - else: - # 3.1 - env.Prepend(LIBS = [ - 'LLVMBitWriter', 'LLVMX86Disassembler', 'LLVMX86AsmParser', - 'LLVMX86CodeGen', 'LLVMX86Desc', 'LLVMSelectionDAG', - 'LLVMAsmPrinter', 'LLVMMCParser', 'LLVMX86AsmPrinter', - 'LLVMX86Utils', 'LLVMX86Info', 'LLVMMCJIT', 'LLVMJIT', - 'LLVMExecutionEngine', 'LLVMCodeGen', 'LLVMScalarOpts', - 'LLVMInstCombine', 'LLVMTransformUtils', 'LLVMipa', - 'LLVMAnalysis', 'LLVMTarget', 'LLVMMC', 'LLVMCore', - 'LLVMSupport' - ]) env.Append(LIBS = [ 'imagehlp', 'psapi', diff --git a/src/gallium/auxiliary/gallivm/lp_bld.h b/src/gallium/auxiliary/gallivm/lp_bld.h index a01c216cfa..7ba925c480 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld.h +++ b/src/gallium/auxiliary/gallivm/lp_bld.h @@ -53,8 +53,8 @@ #ifndef HAVE_LLVM #error "HAVE_LLVM should be set with LLVM's version number, e.g. (0x0207 for 2.7)" #endif -#if HAVE_LLVM < 0x301 -#error "LLVM 3.1 or newer required" +#if HAVE_LLVM < 0x303 +#error "LLVM 3.3 or newer required" #endif diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp index b6b52c80ef..bad65c2c0e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp @@ -43,11 +43,7 @@ #include <llvm/Support/Host.h> -#if HAVE_LLVM >= 0x0303 #include <llvm/IR/Module.h> -#else -#include <llvm/Module.h> -#endif #include <llvm/MC/MCDisassembler.h> #include <llvm/MC/MCAsmInfo.h> @@ -57,7 +53,7 @@ #if HAVE_LLVM >= 0x0305 #define OwningPtr std::unique_ptr -#elif HAVE_LLVM >= 0x0303 +#else #include <llvm/ADT/OwningPtr.h> #endif diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c index 8d7a0b6586..b82cb77a07 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_init.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c @@ -45,35 +45,13 @@ /* Only MCJIT is available as of LLVM SVN r216982 */ #if HAVE_LLVM >= 0x0306 - -#define USE_MCJIT 1 -#define HAVE_AVX 1 - -#else - -/** - * AVX is supported in: - * - standard JIT from LLVM 3.2 onwards - * - MC-JIT from LLVM 3.1 - * - MC-JIT supports limited OSes (MacOSX and Linux) - * - standard JIT in LLVM 3.1, with backports - */ -#if defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64) # define USE_MCJIT 1 -# define HAVE_AVX 0 -#elif HAVE_LLVM >= 0x0302 || (HAVE_LLVM == 0x0301 && defined(HAVE_JIT_AVX_SUPPORT)) -# define USE_MCJIT 0 -# define HAVE_AVX 1 -#elif HAVE_LLVM == 0x0301 && (defined(PIPE_OS_LINUX) || defined(PIPE_OS_APPLE)) +#elif defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64) # define USE_MCJIT 1 -# define HAVE_AVX 1 #else # define USE_MCJIT 0 -# define HAVE_AVX 0 #endif -#endif /* HAVE_LLVM >= 0x0306 */ - #if USE_MCJIT void LLVMLinkInMCJIT(); #endif @@ -414,8 +392,7 @@ lp_build_init(void) * See also: * - http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-tested/2 */ - if (HAVE_AVX && - util_cpu_caps.has_avx && + if (util_cpu_caps.has_avx && util_cpu_caps.has_intel) { lp_native_vector_width = 256; } else { @@ -440,16 +417,6 @@ lp_build_init(void) util_cpu_caps.has_avx2 = 0; } - if (!HAVE_AVX) { - /* - * note these instructions are VEX-only, so can only emit if we use - * avx (don't want to base it on has_avx & has_f16c later as that would - * omit it unnecessarily on amd cpus, see above). - */ - util_cpu_caps.has_f16c = 0; - util_cpu_caps.has_xop = 0; - } - #ifdef PIPE_ARCH_PPC_64 /* Set the NJ bit in VSCR to 0 so denormalized values are handled as * specified by IEEE standard (PowerISA 2.06 - Section 6.3). This guarantees diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp index 9c2de2ccbe..ab3b3c9fbd 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp @@ -64,11 +64,9 @@ #include <llvm/Support/TargetSelect.h> -#if HAVE_LLVM >= 0x0303 #include <llvm/IR/IRBuilder.h> #include <llvm/IR/Module.h> #include <llvm/Support/CBindingWrapping.h> -#endif #include "pipe/p_config.h" #include "util/u_debug.h" @@ -82,15 +80,9 @@ class LLVMEnsureMultithreaded { public: LLVMEnsureMultithreaded() { -#if HAVE_LLVM < 0x0303 - if (!llvm::llvm_is_multithreaded()) { - llvm::llvm_start_multithreaded(); - } -#else if (!LLVMIsMultithreaded()) { LLVMStartMultithreaded(); } -#endif } }; @@ -260,7 +252,6 @@ class DelegatingJITMemoryManager : public llvm::JITMemoryManager { return mgr()->allocateCodeSection(Size, Alignment, SectionID); } #endif -#if HAVE_LLVM >= 0x0303 virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, @@ -286,22 +277,15 @@ class DelegatingJITMemoryManager : public llvm::JITMemoryManager { mgr()->registerEHFrames(SectionData); } #endif -#else - virtual uint8_t *allocateDataSection(uintptr_t Size, - unsigned Alignment, - unsigned SectionID) { - return mgr()->allocateDataSection(Size, Alignment, SectionID); - } -#endif virtual void *getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure=true) { return mgr()->getPointerToNamedFunction(Name, AbortOnFailure); } -#if HAVE_LLVM == 0x0303 +#if HAVE_LLVM <= 0x0303 virtual bool applyPermissions(std::string *ErrMsg = 0) { return mgr()->applyPermissions(ErrMsg); } -#elif HAVE_LLVM > 0x0303 +#else virtual bool finalizeMemory(std::string *ErrMsg = 0) { return mgr()->finalizeMemory(ErrMsg); } @@ -509,17 +493,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT, ExecutionEngine *JIT; -#if HAVE_LLVM >= 0x0302 JIT = builder.create(); -#else - /* - * Workaround http://llvm.org/PR12833 - */ - StringRef MArch = ""; - StringRef MCPU = ""; - Triple TT(unwrap(M)->getTargetTriple()); - JIT = builder.create(builder.selectTarget(TT, MArch, MCPU, MAttrs)); -#endif if (JIT) { *OutJIT = wrap(JIT); return 0; diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index a264f990d0..ad716b70ca 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -551,12 +551,6 @@ llvmpipe_create_screen(struct sw_winsys *winsys) util_cpu_detect(); -#if defined(PIPE_ARCH_X86) && HAVE_LLVM < 0x0302 - /* require SSE2 due to LLVM PR6960. */ - if (!util_cpu_caps.has_sse2) - return NULL; -#endif - #ifdef DEBUG LP_DEBUG = debug_get_flags_option("LP_DEBUG", lp_debug_flags, 0 ); #endif diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index a7a55f8301..0fc3686ba1 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -1666,15 +1666,7 @@ generate_unswizzled_blend(struct gallivm_state *gallivm, partial_mask |= !variant->opaque; i32_zero = lp_build_const_int32(gallivm, 0); -#if HAVE_LLVM < 0x0302 - /* - * undef triggers a crash in LLVMBuildTrunc in convert_from_blend_type in some - * cases (seen with r10g10b10a2, 128bit wide vectors) (only used for 1d case). - */ - undef_src_val = lp_build_zero(gallivm, fs_type); -#else undef_src_val = lp_build_undef(gallivm, fs_type); -#endif row_type.length = fs_type.length; vector_width = dst_type.floating ? lp_native_vector_width : lp_integer_vector_width; diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp index 7c31008f52..e9538224bf 100644 --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp @@ -36,17 +36,11 @@ #include <llvm/IR/DiagnosticInfo.h> #include <llvm/IR/DiagnosticPrinter.h> #endif -#if HAVE_LLVM < 0x0303 -#include <llvm/DerivedTypes.h> -#include <llvm/LLVMContext.h> -#include <llvm/Module.h> -#else #include <llvm/IR/DerivedTypes.h> #include <llvm/IR/LLVMContext.h> #include <llvm/IR/Module.h> #include <llvm/Support/SourceMgr.h> #include <llvm/IRReader/IRReader.h> -#endif #if HAVE_LLVM < 0x0305 #include <llvm/ADT/OwningPtr.h> #endif @@ -54,9 +48,6 @@ #include <llvm/Support/CodeGen.h> #include <llvm/Support/TargetSelect.h> #include <llvm/Support/MemoryBuffer.h> -#if HAVE_LLVM < 0x0303 -#include <llvm/Support/PathV1.h> -#endif #include <llvm/Support/FormattedStream.h> #include <llvm/Support/TargetRegistry.h> #include <llvm/Transforms/IPO.h> @@ -64,13 +55,7 @@ #include <llvm/Transforms/Utils/Cloning.h> -#if HAVE_LLVM < 0x0302 -#include <llvm/Target/TargetData.h> -#elif HAVE_LLVM < 0x0303 -#include <llvm/DataLayout.h> -#else #include <llvm/IR/DataLayout.h> -#endif #include <llvm/Target/TargetLibraryInfo.h> #include <llvm/Target/TargetMachine.h> #include <llvm/Target/TargetOptions.h> @@ -203,9 +188,6 @@ namespace { c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR, clang::frontend::Angled, false, false -#if HAVE_LLVM < 0x0303 - , false -#endif ); // Add libclc include @@ -223,23 +205,12 @@ namespace { // of warnings and errors to be printed to stderr. // http://www.llvm.org/bugs/show_bug.cgi?id=19735 c.getDiagnosticOpts().ShowCarets = false; -#if HAVE_LLVM <= 0x0301 - c.getInvocation().setLangDefaults(clang::IK_OpenCL); -#else c.getInvocation().setLangDefaults(c.getLangOpts(), clang::IK_OpenCL, clang::LangStandard::lang_opencl11); -#endif c.createDiagnostics( -#if HAVE_LLVM < 0x0303 - 0, NULL, -#endif new clang::TextDiagnosticPrinter( s_log, -#if HAVE_LLVM <= 0x0301 - c.getDiagnosticOpts())); -#else &c.getDiagnosticOpts())); -#endif #if HAVE_LLVM >= 0x0306 c.getPreprocessorOpts().addRemappedFile(name, @@ -255,9 +226,6 @@ namespace { c.getHeaderSearchOpts().AddPath(tmp_header_path, clang::frontend::Angled, false, false -#if HAVE_LLVM < 0x0303 - , false -#endif ); for (header_map::const_iterator it = headers.begin(); @@ -368,9 +336,7 @@ namespace { compat::vector<module::argument> args; llvm::Function *kernel_func = mod->getFunction(kernel_name); -#if HAVE_LLVM < 0x0302 - llvm::TargetData TD(kernel_func->getParent()); -#elif HAVE_LLVM < 0x0305 +#if HAVE_LLVM < 0x0305 llvm::DataLayout TD(kernel_func->getParent()->getDataLayout()); #else llvm::DataLayout TD(mod); |