gallivm: Prefer the standard JIT engine whenever possible.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 20 Jul 2012 17:17:14 +0000 (18:17 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 23 Jul 2012 16:46:38 +0000 (17:46 +0100)
Testing shows that the standard JIT engine retrofited with AVX support is quite
stable and as capable to handle AVX instructions as MC-JIT is.

And the old JIT is much more memory efficient, as we don't need to
allocate one engine instance per shader, as we do for MC-JIT due to its
incompleteness.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_init.c

index 5bf4bcfab3b6e4f845f622d6003d314957ffe561..068a2cd791557201ed67b60e6ce374c6c36e2582 100644 (file)
  *   - MC-JIT supports limited OSes (MacOSX and Linux)
  * - standard JIT in LLVM 3.1, with backports
  */
-#if HAVE_LLVM >= 0x0301 && (defined(PIPE_OS_LINUX) || defined(PIPE_OS_APPLE))
-#  define USE_MCJIT 1
-#  define HAVE_AVX 1
-#elif HAVE_LLVM >= 0x0302 || (HAVE_LLVM == 0x0301 && defined(HAVE_JIT_AVX_SUPPORT))
+#if 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))
+#  define USE_MCJIT 1
+#  define HAVE_AVX 1
 #else
 #  define USE_MCJIT 0
 #  define HAVE_AVX 0