gallivm: replace more complex 3.x version check with LLVM_VERSION_MAJOR/MINOR
authorEric Engestrom <eric.engestrom@intel.com>
Tue, 27 Aug 2019 23:36:25 +0000 (00:36 +0100)
committerEric Engestrom <eric.engestrom@intel.com>
Fri, 6 Sep 2019 21:26:29 +0000 (22:26 +0100)
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Acked-by: Michel Dänzer <mdaenzer@redhat.com>
src/gallium/auxiliary/gallivm/lp_bld.h
src/gallium/auxiliary/gallivm/lp_bld_arit.c
src/gallium/auxiliary/gallivm/lp_bld_debug.cpp
src/gallium/auxiliary/gallivm/lp_bld_init.c
src/gallium/auxiliary/gallivm/lp_bld_logic.c
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
src/gallium/auxiliary/gallivm/lp_bld_misc.h

index af40a661b957e20aa5a6bb2a4f60ed6923dc0cf5..f99414c54f966b01ad5f7d14009798de83034504 100644 (file)
  * for a standalone example.
  */
 
+#include <llvm/Config/llvm-config.h>
+
 #include <llvm-c/Core.h>  
 
 
-/** Ensure HAVE_LLVM is set to avoid #ifdef HAVE_LLVM everywhere */
-#ifndef HAVE_LLVM
-#error "HAVE_LLVM should be set with LLVM's version number, e.g. (0x0207 for 2.7)"
-#endif
-#if HAVE_LLVM < 0x303
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 3)
 #error "LLVM 3.3 or newer required"
 #endif
 
 
-#if HAVE_LLVM <= 0x0303
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 3)
 /* We won't actually use LLVMMCJITMemoryManagerRef, just create a dummy
  * typedef to simplify things elsewhere.
  */
@@ -105,7 +103,7 @@ typedef void *LLVMMCJITMemoryManagerRef;
  * Before LLVM 3.4 LLVMSetAlignment only supported GlobalValue, not
  * LoadInst/StoreInst as we need.
  */
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
 #  ifdef __cplusplus
       extern "C"
 #  endif
index 8a912ac575368628da89858a65ae609ffe3ce0e4..a1655ca5b61f7f460782a4988f8fadda35ad76ce 100644 (file)
@@ -144,7 +144,7 @@ lp_build_min_simple(struct lp_build_context *bld,
          intrinsic = "llvm.ppc.altivec.vminfp";
          intr_size = 128;
       }
-   } else if (HAVE_LLVM < 0x0309 &&
+   } else if ((LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)) &&
               util_cpu_caps.has_avx2 && type.length > 4) {
       intr_size = 256;
       switch (type.width) {
@@ -158,7 +158,7 @@ lp_build_min_simple(struct lp_build_context *bld,
          intrinsic = type.sign ? "llvm.x86.avx2.pmins.d" : "llvm.x86.avx2.pminu.d";
          break;
       }
-   } else if (HAVE_LLVM < 0x0309 &&
+   } else if ((LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)) &&
               util_cpu_caps.has_sse2 && type.length >= 2) {
       intr_size = 128;
       if ((type.width == 8 || type.width == 16) &&
@@ -287,7 +287,7 @@ lp_build_fmuladd(LLVMBuilderRef builder,
    LLVMTypeRef type = LLVMTypeOf(a);
    assert(type == LLVMTypeOf(b));
    assert(type == LLVMTypeOf(c));
-   if (HAVE_LLVM < 0x0304) {
+   if (LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)) {
       /* XXX: LLVM 3.3 does not breakdown llvm.fmuladd into mul+add when FMA is
        * not supported, and instead it falls-back to a C function.
        */
@@ -362,7 +362,7 @@ lp_build_max_simple(struct lp_build_context *bld,
          intrinsic = "llvm.ppc.altivec.vmaxfp";
          intr_size = 128;
       }
-   } else if (HAVE_LLVM < 0x0309 &&
+   } else if ((LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)) &&
               util_cpu_caps.has_avx2 && type.length > 4) {
       intr_size = 256;
       switch (type.width) {
@@ -376,7 +376,7 @@ lp_build_max_simple(struct lp_build_context *bld,
          intrinsic = type.sign ? "llvm.x86.avx2.pmaxs.d" : "llvm.x86.avx2.pmaxu.d";
          break;
       }
-   } else if (HAVE_LLVM < 0x0309 &&
+   } else if ((LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)) &&
               util_cpu_caps.has_sse2 && type.length >= 2) {
       intr_size = 128;
       if ((type.width == 8 || type.width == 16) &&
@@ -1837,7 +1837,7 @@ lp_build_abs(struct lp_build_context *bld,
       return a;
 
    if(type.floating) {
-      if (0x0306 <= HAVE_LLVM && HAVE_LLVM < 0x0309) {
+      if ((LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR > 6)) && (LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9))) {
          /* Workaround llvm.org/PR27332 */
          LLVMTypeRef int_vec_type = lp_build_int_vec_type(bld->gallivm, type);
          unsigned long long absMask = ~(1ULL << (type.width - 1));
index 1bada6ff39479db4d7eab101512445a01512c7d5..67b10093e8a8763c1eb9a2ea4b6581a14b5e08e6 100644 (file)
@@ -30,6 +30,7 @@
 #include <sstream>
 #include <iomanip>
 
+#include <llvm/Config/llvm-config.h>
 #include <llvm-c/Core.h>
 #include <llvm-c/Disassembler.h>
 #include <llvm/Support/raw_ostream.h>
@@ -71,7 +72,7 @@ lp_check_alignment(const void *ptr, unsigned alignment)
 extern "C" void
 lp_debug_dump_value(LLVMValueRef value)
 {
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
    char *str = LLVMPrintValueToString(value);
    if (str) {
       os_log_message(str);
index 0e81df357a8715d4c829983df637309db7267a37..3a970148b6f4c9b62412ab9f8e550c84b7176376 100644 (file)
@@ -50,7 +50,7 @@
 #endif
 
 /* Only MCJIT is available as of LLVM SVN r216982 */
-#if HAVE_LLVM >= 0x0306
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
 #  define USE_MCJIT 1
 #elif defined(PIPE_ARCH_PPC_64) || defined(PIPE_ARCH_S390) || defined(PIPE_ARCH_ARM) || defined(PIPE_ARCH_AARCH64)
 #  define USE_MCJIT 1
@@ -138,7 +138,7 @@ create_pass_manager(struct gallivm_state *gallivm)
     * simple, or constant propagation into them, etc.
     */
 
-#if HAVE_LLVM < 0x0309
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)
    // Old versions of LLVM get the DataLayout from the pass manager.
    LLVMAddTargetData(gallivm->target, gallivm->passmgr);
 #endif
@@ -505,7 +505,7 @@ lp_build_init(void)
       util_cpu_caps.has_f16c = 0;
       util_cpu_caps.has_fma = 0;
    }
-   if (HAVE_LLVM < 0x0304 || !use_mcjit) {
+   if ((LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)) || !use_mcjit) {
       /* AVX2 support has only been tested with LLVM 3.4, and it requires
        * MCJIT. */
       util_cpu_caps.has_avx2 = 0;
@@ -626,7 +626,7 @@ gallivm_compile_module(struct gallivm_state *gallivm)
                    "-sroa -early-cse -simplifycfg -reassociate "
                    "-mem2reg -constprop -instcombine -gvn",
                    filename, gallivm_debug & GALLIVM_PERF_NO_OPT ? 0 : 2,
-                   (HAVE_LLVM >= 0x0305) ? "[-mcpu=<-mcpu option>] " : "",
+                   (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)) ? "[-mcpu=<-mcpu option>] " : "",
                    "[-mattr=<-mattr option(s)>]");
    }
 
@@ -646,7 +646,7 @@ gallivm_compile_module(struct gallivm_state *gallivm)
 
    /* Disable frame pointer omission on debug/profile builds */
    /* XXX: And workaround http://llvm.org/PR21435 */
-#if HAVE_LLVM >= 0x0307 && \
+#if (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7)) && \
     (defined(DEBUG) || defined(PROFILE) || \
      defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64))
       LLVMAddTargetDependentFunctionAttr(func, "no-frame-pointer-elim", "true");
index 524917abe278662cd3eafe783201dc6b5474ec63..740a83e2e36c21f5d42fe4ea95aa207400c9119a 100644 (file)
@@ -32,6 +32,7 @@
  * @author Jose Fonseca <jfonseca@vmware.com>
  */
 
+#include <llvm/Config/llvm-config.h>
 
 #include "util/u_cpu_detect.h"
 #include "util/u_memory.h"
@@ -317,7 +318,7 @@ lp_build_select(struct lp_build_context *bld,
       mask = LLVMBuildTrunc(builder, mask, LLVMInt1TypeInContext(lc), "");
       res = LLVMBuildSelect(builder, mask, a, b, "");
    }
-   else if (!(HAVE_LLVM == 0x0307) &&
+   else if (!(LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR == 7) &&
             (LLVMIsConstant(mask) ||
              LLVMGetInstructionOpcode(mask) == LLVMSExt)) {
       /* Generate a vector select.
index 26d9667393e2d2cfdf7f020b3fcc9c0af1445e12..a75be648898669a8f81c87c7c6a388642e399521 100644 (file)
 
 #include <stddef.h>
 
+#include <llvm/Config/llvm-config.h>
+
 // Workaround http://llvm.org/PR23628
-#if HAVE_LLVM >= 0x0307
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7)
 #  pragma push_macro("DEBUG")
 #  undef DEBUG
 #endif
 
 #include <llvm/Config/llvm-config.h>
 #include <llvm-c/Core.h>
-#if HAVE_LLVM >= 0x0306
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
 #include <llvm-c/Support.h>
 #endif
 #include <llvm-c/ExecutionEngine.h>
 #include <llvm/Target/TargetOptions.h>
 #include <llvm/ExecutionEngine/ExecutionEngine.h>
 #include <llvm/ADT/Triple.h>
-#if HAVE_LLVM >= 0x0307
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7)
 #include <llvm/Analysis/TargetLibraryInfo.h>
 #else
 #include <llvm/Target/TargetLibraryInfo.h>
 #endif
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
 #include <llvm/ExecutionEngine/JITMemoryManager.h>
 #else
 #include <llvm/ExecutionEngine/SectionMemoryManager.h>
@@ -73,7 +75,7 @@
 
 #include <llvm/Support/TargetSelect.h>
 
-#if HAVE_LLVM >= 0x0305
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)
 #include <llvm/IR/CallSite.h>
 #endif
 #include <llvm/IR/IRBuilder.h>
@@ -86,7 +88,7 @@
 #endif
 
 // Workaround http://llvm.org/PR23628
-#if HAVE_LLVM >= 0x0307
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 7)
 #  pragma pop_macro("DEBUG")
 #endif
 
@@ -126,7 +128,7 @@ static void init_native_targets()
    llvm::InitializeNativeTargetAsmPrinter();
 
    llvm::InitializeNativeTargetDisassembler();
-#if DEBUG && HAVE_LLVM >= 0x0306
+#if DEBUG && (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6))
    {
       char *env_llc_options = getenv("GALLIVM_LLC_OPTIONS");
       if (env_llc_options) {
@@ -151,7 +153,7 @@ static void init_native_targets()
 extern "C" void
 lp_set_target_options(void)
 {
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
    /*
     * By default LLVM adds a signal handler to output a pretty stack trace.
     * This signal handler is never removed, causing problems when unloading the
@@ -175,7 +177,7 @@ LLVMTargetLibraryInfoRef
 gallivm_create_target_library_info(const char *triple)
 {
    return reinterpret_cast<LLVMTargetLibraryInfoRef>(
-#if HAVE_LLVM < 0x0307
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 7)
    new llvm::TargetLibraryInfo(
 #else
    new llvm::TargetLibraryInfoImpl(
@@ -188,7 +190,7 @@ void
 gallivm_dispose_target_library_info(LLVMTargetLibraryInfoRef library_info)
 {
    delete reinterpret_cast<
-#if HAVE_LLVM < 0x0307
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 7)
    llvm::TargetLibraryInfo
 #else
    llvm::TargetLibraryInfoImpl
@@ -197,7 +199,7 @@ gallivm_dispose_target_library_info(LLVMTargetLibraryInfoRef library_info)
 }
 
 
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
 
 extern "C"
 void
@@ -220,7 +222,7 @@ LLVMSetAlignmentBackport(LLVMValueRef V,
 #endif
 
 
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
 typedef llvm::JITMemoryManager BaseMemoryManager;
 #else
 typedef llvm::RTDyldMemoryManager BaseMemoryManager;
@@ -238,7 +240,7 @@ class DelegatingJITMemoryManager : public BaseMemoryManager {
       virtual BaseMemoryManager *mgr() const = 0;
 
    public:
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
       /*
        * From JITMemoryManager
        */
@@ -285,7 +287,7 @@ class DelegatingJITMemoryManager : public BaseMemoryManager {
       virtual void deallocateFunctionBody(void *Body) {
          mgr()->deallocateFunctionBody(Body);
       }
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
       virtual uint8_t *startExceptionTable(const llvm::Function *F,
                                            uintptr_t &ActualSize) {
          return mgr()->startExceptionTable(F, ActualSize);
@@ -327,7 +329,7 @@ class DelegatingJITMemoryManager : public BaseMemoryManager {
       /*
        * From RTDyldMemoryManager
        */
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
       virtual uint8_t *allocateCodeSection(uintptr_t Size,
                                            unsigned Alignment,
                                            unsigned SectionID,
@@ -345,17 +347,17 @@ class DelegatingJITMemoryManager : public BaseMemoryManager {
       virtual uint8_t *allocateDataSection(uintptr_t Size,
                                            unsigned Alignment,
                                            unsigned SectionID,
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
                                            llvm::StringRef SectionName,
 #endif
                                            bool IsReadOnly) {
          return mgr()->allocateDataSection(Size, Alignment, SectionID,
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
                                            SectionName,
 #endif
                                            IsReadOnly);
       }
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
       virtual void registerEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size) {
          mgr()->registerEHFrames(Addr, LoadAddr, Size);
       }
@@ -368,7 +370,7 @@ class DelegatingJITMemoryManager : public BaseMemoryManager {
       virtual void deregisterEHFrames() {
          mgr()->deregisterEHFrames();
       }
-#elif HAVE_LLVM >= 0x0304
+#elif LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
       virtual void deregisterEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size) {
          mgr()->deregisterEHFrames(Addr, LoadAddr, Size);
       }
@@ -377,7 +379,7 @@ class DelegatingJITMemoryManager : public BaseMemoryManager {
                                               bool AbortOnFailure=true) {
          return mgr()->getPointerToNamedFunction(Name, AbortOnFailure);
       }
-#if HAVE_LLVM <= 0x0303
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR <= 3)
       virtual bool applyPermissions(std::string *ErrMsg = 0) {
          return mgr()->applyPermissions(ErrMsg);
       }
@@ -418,17 +420,17 @@ class ShaderMemoryManager : public DelegatingJITMemoryManager {
           * Deallocate things as previously requested and
           * free shared manager when no longer used.
           */
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
          Vec::iterator i;
 
          assert(TheMM);
          for ( i = FunctionBody.begin(); i != FunctionBody.end(); ++i )
             TheMM->deallocateFunctionBody(*i);
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
          for ( i = ExceptionTable.begin(); i != ExceptionTable.end(); ++i )
             TheMM->deallocateExceptionTable(*i);
-#endif /* HAVE_LLVM < 0x0304 */
-#endif /* HAVE_LLVM < 0x0306 */
+#endif /* LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4) */
+#endif /* LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6) */
       }
    };
 
@@ -460,7 +462,7 @@ class ShaderMemoryManager : public DelegatingJITMemoryManager {
          delete (GeneratedCode *) code;
       }
 
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
       virtual void deallocateExceptionTable(void *ET) {
          // remember for later deallocation
          code->ExceptionTable.push_back(ET);
@@ -497,7 +499,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
    using namespace llvm;
 
    std::string Error;
-#if HAVE_LLVM >= 0x0306
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
    EngineBuilder builder(std::unique_ptr<Module>(unwrap(M)));
 #else
    EngineBuilder builder(unwrap(M));
@@ -510,22 +512,22 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
    TargetOptions options;
 #if defined(PIPE_ARCH_X86)
    options.StackAlignmentOverride = 4;
-#if HAVE_LLVM < 0x0304
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
    options.RealignStack = true;
 #endif
 #endif
 
-#if defined(DEBUG) && HAVE_LLVM < 0x0307
+#if defined(DEBUG) && (LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 7))
    options.JITEmitDebugInfo = true;
 #endif
 
    /* XXX: Workaround http://llvm.org/PR21435 */
 #if defined(DEBUG) || defined(PROFILE) || \
-    (HAVE_LLVM >= 0x0303 && (defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)))
-#if HAVE_LLVM < 0x0304
+    ((LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 3)) && (defined(PIPE_ARCH_X86) || defined(PIPE_ARCH_X86_64)))
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 4)
    options.NoFramePointerElimNonLeaf = true;
 #endif
-#if HAVE_LLVM < 0x0307
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 7)
    options.NoFramePointerElim = true;
 #endif
 #endif
@@ -536,7 +538,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
           .setOptLevel((CodeGenOpt::Level)OptLevel);
 
    if (useMCJIT) {
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
        builder.setUseMCJIT(true);
 #endif
 #ifdef _WIN32
@@ -585,12 +587,12 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
    MAttrs.push_back(util_cpu_caps.has_sse2   ? "+sse2"   : "-sse2"  );
    MAttrs.push_back(util_cpu_caps.has_sse3   ? "+sse3"   : "-sse3"  );
    MAttrs.push_back(util_cpu_caps.has_ssse3  ? "+ssse3"  : "-ssse3" );
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
    MAttrs.push_back(util_cpu_caps.has_sse4_1 ? "+sse4.1" : "-sse4.1");
 #else
    MAttrs.push_back(util_cpu_caps.has_sse4_1 ? "+sse41"  : "-sse41" );
 #endif
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
    MAttrs.push_back(util_cpu_caps.has_sse4_2 ? "+sse4.2" : "-sse4.2");
 #else
    MAttrs.push_back(util_cpu_caps.has_sse4_2 ? "+sse42"  : "-sse42" );
@@ -603,7 +605,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
     */
    MAttrs.push_back(util_cpu_caps.has_avx  ? "+avx"  : "-avx");
    MAttrs.push_back(util_cpu_caps.has_f16c ? "+f16c" : "-f16c");
-   if (HAVE_LLVM >= 0x0304) {
+   if (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)) {
       MAttrs.push_back(util_cpu_caps.has_fma  ? "+fma"  : "-fma");
    } else {
       /*
@@ -614,13 +616,13 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
    }
    MAttrs.push_back(util_cpu_caps.has_avx2 ? "+avx2" : "-avx2");
    /* disable avx512 and all subvariants */
-#if HAVE_LLVM >= 0x0304
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4)
    MAttrs.push_back("-avx512cd");
    MAttrs.push_back("-avx512er");
    MAttrs.push_back("-avx512f");
    MAttrs.push_back("-avx512pf");
 #endif
-#if HAVE_LLVM >= 0x0305
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)
    MAttrs.push_back("-avx512bw");
    MAttrs.push_back("-avx512dq");
    MAttrs.push_back("-avx512vl");
@@ -636,7 +638,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
 
 #if defined(PIPE_ARCH_PPC)
    MAttrs.push_back(util_cpu_caps.has_altivec ? "+altivec" : "-altivec");
-#if (HAVE_LLVM >= 0x0304)
+#if (LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 4))
 #if (LLVM_VERSION_MAJOR < 4)
    /*
     * Make sure VSX instructions are disabled
@@ -679,7 +681,7 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
       }
    }
 
-#if HAVE_LLVM >= 0x0305
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)
    StringRef MCPU = llvm::sys::getHostCPUName();
    /*
     * The cpu bits are no longer set automatically, so need to set mcpu manually.
@@ -718,16 +720,16 @@ lp_build_create_jit_compiler_for_module(LLVMExecutionEngineRef *OutJIT,
        MM = new ShaderMemoryManager(JMM);
        *OutCode = MM->getGeneratedCode();
 
-#if HAVE_LLVM >= 0x0306
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 6)
        builder.setMCJITMemoryManager(std::unique_ptr<RTDyldMemoryManager>(MM));
        MM = NULL; // ownership taken by std::unique_ptr
-#elif HAVE_LLVM > 0x0303
+#elif LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR > 3)
        builder.setMCJITMemoryManager(MM);
 #else
        builder.setJITMemoryManager(MM);
 #endif
    } else {
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
        BaseMemoryManager* JMM = reinterpret_cast<BaseMemoryManager*>(CMM);
        MM = new ShaderMemoryManager(JMM);
        *OutCode = MM->getGeneratedCode();
@@ -769,7 +771,7 @@ LLVMMCJITMemoryManagerRef
 lp_get_default_memory_manager()
 {
    BaseMemoryManager *mm;
-#if HAVE_LLVM < 0x0306
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 6)
    mm = llvm::JITMemoryManager::CreateDefaultMemManager();
 #else
    mm = new llvm::SectionMemoryManager();
@@ -787,9 +789,9 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr)
 extern "C" LLVMValueRef
 lp_get_called_value(LLVMValueRef call)
 {
-#if HAVE_LLVM >= 0x0309
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9)
        return LLVMGetCalledValue(call);
-#elif HAVE_LLVM >= 0x0305
+#elif LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)
        return llvm::wrap(llvm::CallSite(llvm::unwrap<llvm::Instruction>(call)).getCalledValue());
 #else
        return NULL; /* radeonsi doesn't support so old LLVM. */
@@ -799,14 +801,14 @@ lp_get_called_value(LLVMValueRef call)
 extern "C" bool
 lp_is_function(LLVMValueRef v)
 {
-#if HAVE_LLVM >= 0x0309
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 9)
        return LLVMGetValueKind(v) == LLVMFunctionValueKind;
 #else
        return llvm::isa<llvm::Function>(llvm::unwrap(v));
 #endif
 }
 
-#if HAVE_LLVM < 0x309
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)
 static llvm::AtomicOrdering mapFromLLVMOrdering(LLVMAtomicOrdering Ordering) {
    switch (Ordering) {
    case LLVMAtomicOrderingNotAtomic: return llvm::AtomicOrdering::NotAtomic;
@@ -831,14 +833,14 @@ LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr,
 {
    return llvm::wrap(llvm::unwrap(B)->CreateAtomicCmpXchg(llvm::unwrap(Ptr), llvm::unwrap(Cmp),
                                                           llvm::unwrap(New), mapFromLLVMOrdering(SuccessOrdering),
-#if HAVE_LLVM >= 0x305
+#if LLVM_VERSION_MAJOR > 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR >= 5)
                                                           mapFromLLVMOrdering(FailureOrdering),
 #endif
                                                           SingleThread ? llvm::SynchronizationScope::SingleThread : llvm::SynchronizationScope::CrossThread));
 }
 #endif
 
-#if HAVE_LLVM < 0x305
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 5)
 LLVMValueRef LLVMBuildFence(LLVMBuilderRef B,
                            LLVMAtomicOrdering ordering,
                            LLVMBool singleThread,
index 67c2cfd3fc45423ec7243b1deb4570ada1b31f60..7d2e9ca07cac865f96da369b6906f43e5482332f 100644 (file)
@@ -31,6 +31,7 @@
 
 
 #include "lp_bld.h"
+#include <llvm/Config/llvm-config.h>
 #include <llvm-c/ExecutionEngine.h>
 #include <llvm-c/Target.h>
 
@@ -77,7 +78,7 @@ extern bool
 lp_is_function(LLVMValueRef v);
 
 /* LLVM 3.9 introduces this, provide our own for earlier */
-#if HAVE_LLVM < 0x309
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 9)
 LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr,
                                     LLVMValueRef Cmp, LLVMValueRef New,
                                     LLVMAtomicOrdering SuccessOrdering,
@@ -85,7 +86,7 @@ LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr,
                                     LLVMBool SingleThread);
 #endif
 
-#if HAVE_LLVM < 0x305
+#if LLVM_VERSION_MAJOR < 3 || (LLVM_VERSION_MAJOR == 3 && LLVM_VERSION_MINOR < 5)
 LLVMValueRef LLVMBuildFence(LLVMBuilderRef B,
                            LLVMAtomicOrdering ordering,
                            LLVMBool singleThread, const char *Name);