[Libclc-dev] [PATCH 1/3] Introduce per device defines
Jan Vesely
jan.vesely at rutgers.edu
Sun Apr 12 15:46:52 PDT 2015
Make cl_khr_fp64 define per-device.
This patch does not change the generated Makefile
Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
---
I've tried to find a way to make libclc more device specific.
This series handles fp64, but I plan to extend it to other defines like
__CLC_HAVE_FMA, or (with Tom's recent patches) __CLC_HAVE_LDEXP.
Alternatives I could think of was to try to get the information from clang,
but I don't think it should provide that kind of low level information.
Or add r600 support to librt.
Jan
configure.py | 32 +++++++++++++++++++++-----------
1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/configure.py b/configure.py
index 7d4b537..575989a 100755
--- a/configure.py
+++ b/configure.py
@@ -88,16 +88,25 @@ if not cxx_compiler:
available_targets = {
'r600--' : { 'devices' :
- [{'gpu' : 'cedar', 'aliases' : ['palm', 'sumo', 'sumo2', 'redwood', 'juniper']},
- {'gpu' : 'cypress', 'aliases' : ['hemlock']},
- {'gpu' : 'barts', 'aliases' : ['turks', 'caicos']},
- {'gpu' : 'cayman', 'aliases' : ['aruba']}]},
+ [{'gpu' : 'cedar', 'aliases' : ['palm', 'sumo', 'sumo2', 'redwood', 'juniper'],
+ 'defines' : ['cl_khr_fp64']},
+ {'gpu' : 'cypress', 'aliases' : ['hemlock'],
+ 'defines' : ['cl_khr_fp64']},
+ {'gpu' : 'barts', 'aliases' : ['turks', 'caicos'],
+ 'defines' : ['cl_khr_fp64']},
+ {'gpu' : 'cayman', 'aliases' : ['aruba'],
+ 'defines' : ['cl_khr_fp64']}]},
'amdgcn--': { 'devices' :
- [{'gpu' : 'tahiti', 'aliases' : ['pitcairn', 'verde', 'oland', 'hainan', 'bonaire', 'kabini', 'kaveri', 'hawaii','mullins']}]},
- 'nvptx--' : { 'devices' : [{'gpu' : '', 'aliases' : []}]},
- 'nvptx64--' : { 'devices' : [{'gpu' : '', 'aliases' : []}] },
- 'nvptx--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : []}] },
- 'nvptx64--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : []}] }
+ [{'gpu' : 'tahiti', 'aliases' : ['pitcairn', 'verde', 'oland', 'hainan', 'bonaire', 'kabini', 'kaveri', 'hawaii','mullins'],
+ 'defines' : ['cl_khr_fp64']}]},
+ 'nvptx--' : { 'devices' : [{'gpu' : '', 'aliases' : [],
+ 'defines' : ['cl_khr_fp64']}]},
+ 'nvptx64--' : { 'devices' : [{'gpu' : '', 'aliases' : [],
+ 'defines' : ['cl_khr_fp64']}]},
+ 'nvptx--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : [],
+ 'defines' : ['cl_khr_fp64']}]},
+ 'nvptx64--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : [],
+ 'defines' : ['cl_khr_fp64']}]}
}
default_targets = ['nvptx--nvidiacl', 'nvptx64--nvidiacl', 'r600--', 'amdgcn--']
@@ -175,13 +184,14 @@ for target in targets:
for device in available_targets[target]['devices']:
# The rule for building a .bc file for the specified architecture using clang.
+ device_defines = ' '.join(["-D%s" % define for define in device['defines']])
clang_bc_flags = "-target %s -I`dirname $in` %s " \
"-fno-builtin " \
"-Dcl_clang_storage_class_specifiers " \
- "-Dcl_khr_fp64 " \
+ "%s " \
"-Dcles_khr_int64 " \
"-D__CLC_INTERNAL " \
- "-emit-llvm" % (target, clang_cl_includes)
+ "-emit-llvm" % (target, clang_cl_includes, device_defines)
if device['gpu'] != '':
clang_bc_flags += ' -mcpu=' + device['gpu']
clang_bc_rule = "CLANG_CL_BC_" + target + "_" + device['gpu']
--
2.1.0
More information about the Libclc-dev
mailing list