1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| 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
|