summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2015-04-29 15:37:06 +0000
committerTom Stellard <thomas.stellard@amd.com>2015-04-29 15:37:06 +0000
commit5a4891db3b68582ecec97e2437cbe2e25577c058 (patch)
tree9e5ad89541a2b1b1a7cff2ae6a98a4bd60bb95b6
parentfb4cee5174bb39553dc3bbc9ee3748c2d641ba91 (diff)
Allow compilation depending to the LLVM version
It allows to keep temporary compatibilty with older version. For exemple, this can be use when change are not to large. Patch by: EdB git-svn-id: https://llvm.org/svn/llvm-project/libclc/trunk@236113 91177308-0d34-0410-b5e6-96231b3b80d8
-rwxr-xr-xconfigure.py16
-rw-r--r--generic/lib/LLVM3.6/subnormal_helper_func.ll8
-rw-r--r--generic/lib/SOURCES_LLVM3.61
3 files changed, 24 insertions, 1 deletions
diff --git a/configure.py b/configure.py
index 7d4b537..1072ca8 100755
--- a/configure.py
+++ b/configure.py
@@ -70,6 +70,8 @@ if (int(llvm_version[0]) != 3 and int(llvm_version[1]) != 6):
print "libclc requires LLVM 3.6"
sys.exit(1)
+llvm_string_version = 'LLVM' + llvm_version[0] + '.' + llvm_version[1]
+
llvm_system_libs = llvm_config(['--system-libs'])
llvm_bindir = llvm_config(['--bindir'])
llvm_core_libs = llvm_config(['--libs', 'core', 'bitreader', 'bitwriter']) + ' ' + \
@@ -189,6 +191,7 @@ for target in targets:
objects = []
sources_seen = set()
+ compats_seen = set()
if device['gpu'] == '':
full_target_name = target
@@ -201,6 +204,14 @@ for target in targets:
subdir_list_file = os.path.join(libdir, 'SOURCES')
manifest_deps.add(subdir_list_file)
override_list_file = os.path.join(libdir, 'OVERRIDES')
+ compat_list_file = os.path.join(libdir,
+ 'SOURCES_' + llvm_string_version)
+
+ # Build compat list
+ if os.path.exists(compat_list_file):
+ for compat in open(compat_list_file).readlines():
+ compat = compat.rstrip()
+ compats_seen.add(compat)
# Add target overrides
if os.path.exists(override_list_file):
@@ -214,7 +225,10 @@ for target in targets:
sources_seen.add(src)
obj = os.path.join(target, 'lib', src + obj_suffix + '.bc')
objects.append(obj)
- src_file = os.path.join(libdir, src)
+ src_path = libdir
+ if src in compats_seen:
+ src_path = os.path.join(libdir, llvm_string_version)
+ src_file = os.path.join(src_path, src)
ext = os.path.splitext(src)[1]
if ext == '.ll':
b.build(obj, 'LLVM_AS', src_file)
diff --git a/generic/lib/LLVM3.6/subnormal_helper_func.ll b/generic/lib/LLVM3.6/subnormal_helper_func.ll
new file mode 100644
index 0000000..0e9764b
--- /dev/null
+++ b/generic/lib/LLVM3.6/subnormal_helper_func.ll
@@ -0,0 +1,8 @@
+@__CLC_SUBNORMAL_DISABLE = external global i1
+
+define i1 @__clc_subnormals_disabled() #0 {
+ %disable = load i1* @__CLC_SUBNORMAL_DISABLE
+ ret i1 %disable
+}
+
+attributes #0 = { alwaysinline }
diff --git a/generic/lib/SOURCES_LLVM3.6 b/generic/lib/SOURCES_LLVM3.6
new file mode 100644
index 0000000..ee09f01
--- /dev/null
+++ b/generic/lib/SOURCES_LLVM3.6
@@ -0,0 +1 @@
+subnormal_helper_func.ll