summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Obermayr <johannesobermayr@gmx.de>2012-12-20 20:56:17 +0100
committerTom Stellard <thomas.stellard@amd.com>2013-01-04 21:05:09 +0000
commit05c143cc049a87c515ecdc5695e5912da60cf5cb (patch)
tree7fdb97c4a3816992f912e7750d4baac9a6debf34
parent54f3a3e88d35c855c43c31ae7c915cfa55d1f5d7 (diff)
Support LLVM >= 3.2 on radeonsi and opencl.
Tom Stellard: - Backend now has same name for all LLVM versions - Add missing LLVM_VERSION_INT definition
-rw-r--r--configure.ac24
-rw-r--r--src/gallium/drivers/radeon/radeon_llvm_emit.cpp7
2 files changed, 17 insertions, 14 deletions
diff --git a/configure.ac b/configure.ac
index 1294740a482..3b84b1c917e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1677,7 +1677,8 @@ if test "x$enable_gallium_llvm" = xyes; then
1677 1677
1678 if test "x$LLVM_CONFIG" != xno; then 1678 if test "x$LLVM_CONFIG" != xno; then
1679 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'` 1679 LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
1680 if test "x$with_llvm_shared_libs" = xyes; then 1680 LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'`
1681 if test "x$with_llvm_shared_libs" = xyes; then
1681 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out, 1682 dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
1682 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`" 1683 LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
1683 else 1684 else
@@ -1800,24 +1801,19 @@ gallium_require_drm_loader() {
1800radeon_llvm_check() { 1801radeon_llvm_check() {
1801 LLVM_REQUIRED_VERSION_MAJOR="3" 1802 LLVM_REQUIRED_VERSION_MAJOR="3"
1802 LLVM_REQUIRED_VERSION_MINOR="2" 1803 LLVM_REQUIRED_VERSION_MINOR="2"
1803 LLVM_AVAILABLE_VERSION_MAJOR=`echo $LLVM_VERSION | cut -d. -f1` 1804 if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then
1804 LLVM_AVAILABLE_VERSION_MINOR=`echo $LLVM_VERSION | cut -d. -f2` 1805 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with R600 target enabled is required.
1805 if test "$LLVM_AVAILABLE_VERSION_MAJOR" -lt "$LLVM_REQUIRED_VERSION_MAJOR" -o [ "$LLVM_AVAILABLE_VERSION_MAJOR" -eq "$LLVM_REQUIRED_VERSION_MAJOR" -a "$LLVM_AVAILABLE_VERSION_MINOR" -lt "$LLVM_REQUIRED_VERSION_MINOR" ] ; then
1806 AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer with AMDGPU target enabled is required.
1807 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from: 1806 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from:
1808 git://people.freedesktop.org/~tstellar/llvm master 1807 git://people.freedesktop.org/~tstellar/llvm master
1809 and build with --enable-experimental-targets=AMDGPU]) 1808 and build with --enable-experimental-targets=R600])
1810 fi 1809 fi
1811 if test true && $LLVM_CONFIG --targets-built | grep -qv '\<AMDGPU\>' ; then 1810 if test true && $LLVM_CONFIG --targets-built | grep -qv '\<R600\>' ; then
1812 AC_MSG_ERROR([LLVM AMDGPU Target not enabled. 1811 AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM
1813 To use the r600/radeonsi LLVM backend, you need to fetch the LLVM source from: 1812 sources with the --enable-experimental-targets=R600
1814 git://people.freedesktop.org/~tstellar/llvm master 1813 configure flag])
1815 and build with --enable-experimental-targets=AMDGPU])
1816 fi 1814 fi
1817 AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug]) 1815 AC_MSG_WARN([Please ensure you use the latest llvm tree from git://people.freedesktop.org/~tstellar/llvm master before submitting a bug])
1818 if test "x$LLVM_VERSION" = "x3.2"; then 1816 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs r600`"
1819 LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --libs amdgpu`"
1820 fi
1821} 1817}
1822 1818
1823dnl Gallium drivers 1819dnl Gallium drivers
diff --git a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
index 21661a05002..b889f029694 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
+++ b/src/gallium/drivers/radeon/radeon_llvm_emit.cpp
@@ -89,10 +89,17 @@ radeon_llvm_compile(LLVMModuleRef M, unsigned char ** bytes,
89 89
90 Triple AMDGPUTriple(sys::getDefaultTargetTriple()); 90 Triple AMDGPUTriple(sys::getDefaultTargetTriple());
91 91
92#if HAVE_LLVM == 0x0302
92 LLVMInitializeAMDGPUTargetInfo(); 93 LLVMInitializeAMDGPUTargetInfo();
93 LLVMInitializeAMDGPUTarget(); 94 LLVMInitializeAMDGPUTarget();
94 LLVMInitializeAMDGPUTargetMC(); 95 LLVMInitializeAMDGPUTargetMC();
95 LLVMInitializeAMDGPUAsmPrinter(); 96 LLVMInitializeAMDGPUAsmPrinter();
97#else
98 LLVMInitializeR600TargetInfo();
99 LLVMInitializeR600Target();
100 LLVMInitializeR600TargetMC();
101 LLVMInitializeR600AsmPrinter();
102#endif
96 103
97 std::string err; 104 std::string err;
98 const Target * AMDGPUTarget = TargetRegistry::lookupTarget("r600", err); 105 const Target * AMDGPUTarget = TargetRegistry::lookupTarget("r600", err);