The python changes in this file look good to me. I haven't done a line-by-line review of the SI changes.
I tested this patch and v2 of the related mesa series on r600g (radeon 6850) with a recent LLVM and fresh mesa master as of this evening. No real change in the piglit CL test success/failure rate. Do you have any interest in trying to merge your changes to date back into the upstream libclc codebase? If you think it's a good idea, but don't have time to do it yourself, let me know and I'll try to re-base the series of patches. --Aaron On Tue, Mar 12, 2013 at 3:20 PM, Tom Stellard <t...@stellard.net> wrote: > From: Tom Stellard <thomas.stell...@amd.com> > > --- > configure.py | 119 > ++++++++++++++++++++++++++++++++++++--------------------- > 1 files changed, 75 insertions(+), 44 deletions(-) > > diff --git a/configure.py b/configure.py > index d861c24..dfd9a8f 100755 > --- a/configure.py > +++ b/configure.py > @@ -68,6 +68,15 @@ llvm_clang = os.path.join(llvm_bindir, 'clang') > llvm_link = os.path.join(llvm_bindir, 'llvm-link') > llvm_opt = os.path.join(llvm_bindir, 'opt') > > +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' : 'tahiti', 'aliases' : ['pitcairn', 'verde', > 'oland']}]} > +} > + > default_targets = ['r600--'] > > targets = args > @@ -127,50 +136,72 @@ for target in targets: > > clang_cl_includes = ' '.join(["-I%s" % incdir for incdir in incdirs]) > > - # The rule for building a .bc file for the specified architecture using > clang. > - clang_bc_flags = "-target %s -I`dirname $in` %s " \ > - "-Dcl_clang_storage_class_specifiers " \ > - "-Dcl_khr_fp64 " \ > - "-emit-llvm" % (target, clang_cl_includes) > - clang_bc_rule = "CLANG_CL_BC_" + target > - c_compiler_rule(b, clang_bc_rule, "LLVM-CC", llvm_clang, clang_bc_flags) > - > - objects = [] > - sources_seen = set() > - > - for libdir in libdirs: > - subdir_list_file = os.path.join(libdir, 'SOURCES') > - manifest_deps.add(subdir_list_file) > - override_list_file = os.path.join(libdir, 'OVERRIDES') > - > - # Add target overrides > - if os.path.exists(override_list_file): > - for override in open(override_list_file).readlines(): > - override = override.rstrip() > - sources_seen.add(override) > - > - for src in open(subdir_list_file).readlines(): > - src = src.rstrip() > - if src not in sources_seen: > - sources_seen.add(src) > - obj = os.path.join(target, 'lib', src + '.bc') > - objects.append(obj) > - src_file = os.path.join(libdir, src) > - ext = os.path.splitext(src)[1] > - if ext == '.ll': > - b.build(obj, 'LLVM_AS', src_file) > - else: > - b.build(obj, clang_bc_rule, src_file) > - > - builtins_link_bc = os.path.join(target, 'lib', 'builtins.link.bc') > - builtins_opt_bc = os.path.join(target, 'lib', 'builtins.opt.bc') > - builtins_bc = os.path.join('built_libs', target + '.bc') > - b.build(builtins_link_bc, "LLVM_LINK", objects) > - b.build(builtins_opt_bc, "OPT", builtins_link_bc) > - b.build(builtins_bc, "PREPARE_BUILTINS", builtins_opt_bc, > prepare_builtins) > - install_files_bc.append((builtins_bc, builtins_bc)) > - install_deps.append(builtins_bc) > - b.default(builtins_bc) > + for device in available_targets[target]['devices']: > + # The rule for building a .bc file for the specified architecture > using clang. > + clang_bc_flags = "-target %s -I`dirname $in` %s " \ > + "-Dcl_clang_storage_class_specifiers " \ > + "-Dcl_khr_fp64 " \ > + "-emit-llvm" % (target, clang_cl_includes) > + if device['gpu'] != '': > + clang_bc_flags += ' -mcpu=' + device['gpu'] > + clang_bc_rule = "CLANG_CL_BC_" + target > + c_compiler_rule(b, clang_bc_rule, "LLVM-CC", llvm_clang, > clang_bc_flags) > + > + objects = [] > + sources_seen = set() > + > + if device['gpu'] == '': > + full_target_name = target > + obj_suffix = '' > + else: > + full_target_name = device['gpu'] + '-' + target > + obj_suffix = '.' + device['gpu'] > + > + for libdir in libdirs: > + subdir_list_file = os.path.join(libdir, 'SOURCES') > + manifest_deps.add(subdir_list_file) > + override_list_file = os.path.join(libdir, 'OVERRIDES') > + > + # Add target overrides > + if os.path.exists(override_list_file): > + for override in open(override_list_file).readlines(): > + override = override.rstrip() > + sources_seen.add(override) > + > + for src in open(subdir_list_file).readlines(): > + src = src.rstrip() > + # Only add the base filename (e.g. Add get_global_id instead of > + # get_global_id.cl) to sources_seen. > + # This allows targets to overide generic .cl sources with .ll > sources. > + src_base = os.path.splitext(src)[0] > + if src_base not in sources_seen: > + sources_seen.add(src_base) > + obj = os.path.join(target, 'lib', src + obj_suffix + '.bc') > + objects.append(obj) > + src_file = os.path.join(libdir, src) > + ext = os.path.splitext(src)[1] > + if ext == '.ll': > + b.build(obj, 'LLVM_AS', src_file) > + else: > + b.build(obj, clang_bc_rule, src_file) > + > + builtins_link_bc = os.path.join(target, 'lib', 'builtins.link' + > obj_suffix + '.bc') > + builtins_opt_bc = os.path.join(target, 'lib', 'builtins.opt' + > obj_suffix + '.bc') > + builtins_bc = os.path.join('built_libs', full_target_name + '.bc') > + b.build(builtins_link_bc, "LLVM_LINK", objects) > + b.build(builtins_opt_bc, "OPT", builtins_link_bc) > + b.build(builtins_bc, "PREPARE_BUILTINS", builtins_opt_bc, > prepare_builtins) > + install_files_bc.append((builtins_bc, builtins_bc)) > + install_deps.append(builtins_bc) > + for alias in device['aliases']: > + b.rule("CREATE_ALIAS", "ln -fs %s $out" % > os.path.basename(builtins_bc) > + ,"CREATE-ALIAS $out") > + > + alias_file = os.path.join('built_libs', alias + '-' + target + > '.bc') > + b.build(alias_file, "CREATE_ALIAS", builtins_bc) > + install_files_bc.append((alias_file, alias_file)) > + install_deps.append(alias_file) > + b.default(builtins_bc) > > > install_cmd = ' && '.join(['mkdir -p $(DESTDIR)/%(dst)s && cp -r %(src)s > $(DESTDIR)/%(dst)s' % > -- > 1.7.3.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev