# -*- Python -*- from lit import Test import lit.formats import lit.util import os import re import subprocess clang_bolt_mode = config.clang_bolt_mode.lower() clang_binary = "clang" perf_wrapper = f"{config.python_exe} {config.perf_helper_dir}/perf-helper.py perf " if clang_bolt_mode == "instrument": perf_wrapper = "" clang_binary = config.clang_bolt_name elif clang_bolt_mode == "lbr": perf_wrapper += " --lbr -- " elif clang_bolt_mode == "perf": perf_wrapper += " -- " else: assert 0, "Unsupported CLANG_BOLT_MODE variable" clang_nowrapper = os.path.realpath( lit.util.which(clang_binary, config.clang_tools_dir) ).replace("\\", "/") config.clang = perf_wrapper + clang_nowrapper config.cmake_compiler_args = "-DCMAKE_C_COMPILER='{0}' -DCMAKE_CXX_COMPILER='{0};--driver-mode=g++'".format( re.sub(r"\s+", ";", clang_nowrapper) ) config.name = "Clang Perf Training" config.suffixes = [ ".c", ".cc", ".cpp", ".m", ".mm", ".cu", ".ll", ".cl", ".s", ".S", ".modulemap", ".test", ] use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL") config.test_format = lit.formats.ShTest(use_lit_shell == "0") config.substitutions.append( ("%clang_cpp_skip_driver", f" {config.clang} --driver-mode=g++ ") ) config.substitutions.append(("%clang_cpp", f" {config.clang} --driver-mode=g++ ")) config.substitutions.append(("%clang_skip_driver", config.clang)) config.substitutions.append(("%clang", config.clang)) config.substitutions.append(("%test_root", config.test_exec_root)) config.substitutions.append(("%cmake_compiler_args", config.cmake_compiler_args)) config.substitutions.append(('%cmake_generator', config.cmake_generator)) config.substitutions.append(('%cmake', config.cmake_exe)) config.substitutions.append(('%llvm_src_dir', config.llvm_src_dir)) config.substitutions.append(('%perf_wrapper', perf_wrapper))