Improve PTX support discovery and make it optional.

This commit is contained in:
Siu Kwan Lam 2012-10-04 12:59:48 -05:00
commit e42dfd9abb

View file

@ -34,6 +34,8 @@ def get_libs_and_objs(components):
objs.append(part) objs.append(part)
return libs, objs return libs, objs
def get_enabled_components():
return run_llvm_config(['--components']).split()
def get_llvm_version(): def get_llvm_version():
# get version number; treat it as fixed point # get version number; treat it as fixed point
@ -66,32 +68,34 @@ if dynlink:
libs_core = ['LLVM-%d.%d' % llvm_version] libs_core = ['LLVM-%d.%d' % llvm_version]
objs_core = [] objs_core = []
else: else:
if sys.platform == 'win32': enabled_components = set(get_enabled_components())
# XXX: If found, the PTX components are returned by llvm-config-win32.py, ptx_components = set(['ptx',
# regardless of whether we ask for them. There should be a better way
# eventually.
print('PTX is included on Win32 at if found by llvm-config-win32.py')
ptx_components = []
elif llvm_version <= (3, 1): # select between PTX & NVPTX
print('Using PTX')
ptx_components = ['ptx',
'ptxasmprinter', 'ptxasmprinter',
'ptxcodegen', 'ptxcodegen',
'ptxdesc', 'ptxdesc',
'ptxinfo'] 'ptxinfo'])
else: nvptx_components = set(['nvptx',
print('Using NVPTX')
ptx_components = ['nvptx',
'nvptxasmprinter', 'nvptxasmprinter',
'nvptxcodegen', 'nvptxcodegen',
'nvptxdesc', 'nvptxdesc',
'nvptxinfo'] 'nvptxinfo'])
extra_components = []
if (nvptx_components & enabled_components) == nvptx_components:
print("Using NVPTX")
extra_components.extend(nvptx_components)
elif (ptx_components & enabled_components) == ptx_components:
print("Using PTX")
extra_components.extend(ptx_components)
else:
print("No CUDA support")
libs_core, objs_core = get_libs_and_objs( libs_core, objs_core = get_libs_and_objs(
['core', 'analysis', 'scalaropts', 'executionengine', ['core', 'analysis', 'scalaropts', 'executionengine',
'jit', 'native', 'interpreter', 'bitreader', 'bitwriter', 'jit', 'native', 'interpreter', 'bitreader', 'bitwriter',
'instrumentation', 'ipa', 'ipo', 'transformutils', 'instrumentation', 'ipa', 'ipo', 'transformutils',
'asmparser', 'linker', 'support', 'vectorize'] 'asmparser', 'linker', 'support', 'vectorize']
+ ptx_components) + extra_components)
macros = [('__STDC_CONSTANT_MACROS', None), macros = [('__STDC_CONSTANT_MACROS', None),
('__STDC_LIMIT_MACROS', None)] ('__STDC_LIMIT_MACROS', None)]