From 2bd812c5dc94d16009c911ca6a38457fe4ea21e6 Mon Sep 17 00:00:00 2001 From: Teresa Johnson Date: Fri, 14 Oct 2016 00:13:59 +0000 Subject: Add interface for querying physical hardware concurrency Summary: This will be used by ThinLTO to set the amount of backend parallelism, which performs better when restricted to the number of physical cores (on X86 at least, where getHostNumPhysicalCores is currently defined). If not available this falls back to thread::hardware_concurrency. Note I didn't add to the thread class since that is a typedef to std::thread where available. Reviewers: mehdi_amini Subscribers: beanz, llvm-commits, mgorny Differential Revision: https://reviews.llvm.org/D25585 llvm-svn: 284180 --- llvm/lib/Support/Threading.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'llvm/lib/Support/Threading.cpp') diff --git a/llvm/lib/Support/Threading.cpp b/llvm/lib/Support/Threading.cpp index e8f5622d0e5..415c63f245d 100644 --- a/llvm/lib/Support/Threading.cpp +++ b/llvm/lib/Support/Threading.cpp @@ -15,6 +15,7 @@ #include "llvm/Support/Threading.h" #include "llvm/Config/config.h" #include "llvm/Support/Atomic.h" +#include "llvm/Support/Host.h" #include "llvm/Support/Mutex.h" #include "llvm/Support/thread.h" #include @@ -116,3 +117,10 @@ void llvm::llvm_execute_on_thread(void (*Fn)(void*), void *UserData, } #endif + +unsigned llvm::hardware_physical_concurrency() { + int NumPhysical = sys::getHostNumPhysicalCores(); + if (NumPhysical == -1) + return thread::hardware_concurrency(); + return NumPhysical; +} -- cgit v1.2.3