summaryrefslogtreecommitdiffstats
path: root/libclc
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
commitba742f58af493f22709310388dd72951137fb82e (patch)
tree02b3b6af3f83d17d6d09948ca96d5f81a8f62021 /libclc
parent5f34d443541b33a5bfb23bfd62c519561fe3ea3a (diff)
downloadbcm5719-llvm-ba742f58af493f22709310388dd72951137fb82e.tar.gz
bcm5719-llvm-ba742f58af493f22709310388dd72951137fb82e.zip
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 llvm-svn: 236113
Diffstat (limited to 'libclc')
-rwxr-xr-xlibclc/configure.py16
-rw-r--r--libclc/generic/lib/LLVM3.6/subnormal_helper_func.ll8
-rw-r--r--libclc/generic/lib/SOURCES_LLVM3.61
3 files changed, 24 insertions, 1 deletions
diff --git a/libclc/configure.py b/libclc/configure.py
index 7d4b53789e1..1072ca84918 100755
--- a/libclc/configure.py
+++ b/libclc/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/libclc/generic/lib/LLVM3.6/subnormal_helper_func.ll b/libclc/generic/lib/LLVM3.6/subnormal_helper_func.ll
new file mode 100644
index 00000000000..0e9764ba94e
--- /dev/null
+++ b/libclc/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/libclc/generic/lib/SOURCES_LLVM3.6 b/libclc/generic/lib/SOURCES_LLVM3.6
new file mode 100644
index 00000000000..ee09f01e3eb
--- /dev/null
+++ b/libclc/generic/lib/SOURCES_LLVM3.6
@@ -0,0 +1 @@
+subnormal_helper_func.ll
OpenPOWER on IntegriCloud