import subprocess import lit.util if not ('X86' in config.root.targets): # We need support for X86. config.unsupported = True elif not ('x86_64' in config.root.host_triple): # We need to be running on an X86 host. config.unsupported = True else: # We need libpfm to be installed and allow reading perf counters. We can # only know that at runtime, so we try to measure the latency of an empty # code snippet and bail out on error. llvm_exegesis_exe = lit.util.which('llvm-exegesis', config.llvm_tools_dir) if not llvm_exegesis_exe: print('llvm-exegesis not found') config.unsupported = True else: try: with open(os.devnull, 'w') as quiet: check_llvm_exegesis_uops_result = subprocess.call( [llvm_exegesis_exe, '-mode', 'uops', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet) check_llvm_exegesis_latency_result = subprocess.call( [llvm_exegesis_exe, '-mode', 'latency', '-snippets-file', '/dev/null'], stdout=quiet, stderr=quiet) except OSError: print('could not exec llvm-exegesis') config.unsupported = True if not check_llvm_exegesis_uops_result == 0: config.unsupported = True if not check_llvm_exegesis_latency_result == 0: config.unsupported = True