Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -77,6 +77,11 @@ # Run Under configuration for RunSafely.sh (will be set in lit.site.cfg) set(TEST_SUITE_RUN_UNDER "" CACHE STRING "RunSafely.sh run-under (-u) parameter") +# User mode emulation configuration (e.g. running under qemu) +# (will be set in lit.site.cfg) +set(TEST_SUITE_USER_MODE_EMULATION NO CACHE BOOL + "RUN_UNDER is used to run tests under emulation.") + # run type/benchmark size configuration (mostly for SPEC at the moment) set(TEST_SUITE_RUN_TYPE "train" CACHE STRING "Type of benchmark inputs (may be test,train or ref)") @@ -220,7 +225,10 @@ add_subdirectory(tools) # Shortcut for the path to the fpcmp executable -set(FPCMP ${CMAKE_BINARY_DIR}/tools/fpcmp) +set(FPCMP ${CMAKE_BINARY_DIR}/tools/fpcmp-target) +if (TEST_SUITE_USER_MODE_EMULATION) + set(FPCMP ${CMAKE_BINARY_DIR}/tools/fpcmp) +endif() option(TEST_SUITE_COLLECT_COMPILE_TIME "Measure compile time by wrapping compiler invocations in timeit" ON) Index: cmake/modules/TestSuite.cmake =================================================================== --- cmake/modules/TestSuite.cmake +++ cmake/modules/TestSuite.cmake @@ -99,7 +99,8 @@ build-HashProgramOutput.sh build-timeit build-timeit-target - fpcmp + build-fpcmp + build-fpcmp-target ) endfunction() Index: lit.site.cfg.in =================================================================== --- lit.site.cfg.in +++ lit.site.cfg.in @@ -5,6 +5,7 @@ config.remote_client = "@TEST_SUITE_REMOTE_CLIENT@" config.remote_host = "@TEST_SUITE_REMOTE_HOST@" config.run_under = "@TEST_SUITE_RUN_UNDER@" +config.user_mode_emulation = "@TEST_SUITE_USER_MODE_EMULATION@" == "1" config.strip_tool = "@CMAKE_STRIP@" config.profile_generate = @TEST_SUITE_PROFILE_GENERATE@ config.llvm_profdata = "@TEST_SUITE_LLVM_PROFDATA@" Index: litsupport/modules/timeit.py =================================================================== --- litsupport/modules/timeit.py +++ litsupport/modules/timeit.py @@ -9,7 +9,14 @@ config = context.config cmd = shellcommand.parse(commandline) - timeit = "%s/tools/timeit-target" % config.test_source_root + if config.user_mode_emulation: + # user_mode_emulation should be true if tests are being run via + # user-mode emulation (e.g. Qemu) and thus the host version of timeit + # should be used. + timeit_name = "timeit" + else: + timeit_name = "timeit-target" + timeit = "%s/tools/%s" % (config.test_source_root, timeit_name) args = ["--limit-core", "0"] args += ["--limit-cpu", "7200"] args += ["--timeout", "7200"] Index: tools/CMakeLists.txt =================================================================== --- tools/CMakeLists.txt +++ tools/CMakeLists.txt @@ -7,7 +7,9 @@ include(Host) -add_executable(fpcmp fpcmp.c) +add_executable(fpcmp-target ${CMAKE_CURRENT_SOURCE_DIR}/fpcmp.c) +add_executable(build-fpcmp-target ALIAS fpcmp-target) +llvm_add_host_executable(build-fpcmp fpcmp fpcmp.c) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/HashProgramOutput.sh