176b2915fSAmir Ayupov# -*- Python -*- 276b2915fSAmir Ayupov 376b2915fSAmir Ayupovfrom lit import Test 476b2915fSAmir Ayupovimport lit.formats 576b2915fSAmir Ayupovimport lit.util 676b2915fSAmir Ayupovimport os 7*ea6e1358STom Stellardimport re 876b2915fSAmir Ayupovimport subprocess 976b2915fSAmir Ayupov 105a5ce012SAmir Ayupovclang_bolt_mode = config.clang_bolt_mode.lower() 115a5ce012SAmir Ayupovclang_binary = "clang" 125a5ce012SAmir Ayupovperf_wrapper = f"{config.python_exe} {config.perf_helper_dir}/perf-helper.py perf " 1376b2915fSAmir Ayupov 145a5ce012SAmir Ayupovif clang_bolt_mode == "instrument": 155a5ce012SAmir Ayupov perf_wrapper = "" 165a5ce012SAmir Ayupov clang_binary = config.clang_bolt_name 175a5ce012SAmir Ayupovelif clang_bolt_mode == "lbr": 185a5ce012SAmir Ayupov perf_wrapper += " --lbr -- " 195a5ce012SAmir Ayupovelif clang_bolt_mode == "perf": 205a5ce012SAmir Ayupov perf_wrapper += " -- " 215a5ce012SAmir Ayupovelse: 225a5ce012SAmir Ayupov assert 0, "Unsupported CLANG_BOLT_MODE variable" 235a5ce012SAmir Ayupov 24*ea6e1358STom Stellardclang_nowrapper = os.path.realpath( 255a5ce012SAmir Ayupov lit.util.which(clang_binary, config.clang_tools_dir) 265a5ce012SAmir Ayupov).replace("\\", "/") 27*ea6e1358STom Stellardconfig.clang = perf_wrapper + clang_nowrapper 28*ea6e1358STom Stellardconfig.cmake_compiler_args = "-DCMAKE_C_COMPILER='{0}' -DCMAKE_CXX_COMPILER='{0};--driver-mode=g++'".format( 29*ea6e1358STom Stellard re.sub(r"\s+", ";", clang_nowrapper) 30*ea6e1358STom Stellard) 315a5ce012SAmir Ayupov 325a5ce012SAmir Ayupovconfig.name = "Clang Perf Training" 335a5ce012SAmir Ayupovconfig.suffixes = [ 345a5ce012SAmir Ayupov ".c", 355a5ce012SAmir Ayupov ".cc", 365a5ce012SAmir Ayupov ".cpp", 375a5ce012SAmir Ayupov ".m", 385a5ce012SAmir Ayupov ".mm", 395a5ce012SAmir Ayupov ".cu", 405a5ce012SAmir Ayupov ".ll", 415a5ce012SAmir Ayupov ".cl", 425a5ce012SAmir Ayupov ".s", 435a5ce012SAmir Ayupov ".S", 445a5ce012SAmir Ayupov ".modulemap", 455a5ce012SAmir Ayupov ".test", 465a5ce012SAmir Ayupov] 4776b2915fSAmir Ayupov 4876b2915fSAmir Ayupovuse_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL") 4976b2915fSAmir Ayupovconfig.test_format = lit.formats.ShTest(use_lit_shell == "0") 505a5ce012SAmir Ayupovconfig.substitutions.append( 515a5ce012SAmir Ayupov ("%clang_cpp_skip_driver", f" {config.clang} --driver-mode=g++ ") 525a5ce012SAmir Ayupov) 535a5ce012SAmir Ayupovconfig.substitutions.append(("%clang_cpp", f" {config.clang} --driver-mode=g++ ")) 545a5ce012SAmir Ayupovconfig.substitutions.append(("%clang_skip_driver", config.clang)) 555a5ce012SAmir Ayupovconfig.substitutions.append(("%clang", config.clang)) 565a5ce012SAmir Ayupovconfig.substitutions.append(("%test_root", config.test_exec_root)) 57*ea6e1358STom Stellardconfig.substitutions.append(("%cmake_compiler_args", config.cmake_compiler_args)) 5873825098STom Stellardconfig.substitutions.append(('%cmake_generator', config.cmake_generator)) 5973825098STom Stellardconfig.substitutions.append(('%cmake', config.cmake_exe)) 6073825098STom Stellardconfig.substitutions.append(('%llvm_src_dir', config.llvm_src_dir)) 61*ea6e1358STom Stellardconfig.substitutions.append(('%perf_wrapper', perf_wrapper)) 62