summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Support
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2016-10-14 00:13:59 +0000
committerTeresa Johnson <tejohnson@google.com>2016-10-14 00:13:59 +0000
commit2bd812c5dc94d16009c911ca6a38457fe4ea21e6 (patch)
tree481bb2cc65c7af6c65c89e820c948e29864c684b /llvm/unittests/Support
parent622c26389ffa6fd2dfb580289cce63f3e48a658c (diff)
downloadbcm5719-llvm-2bd812c5dc94d16009c911ca6a38457fe4ea21e6.tar.gz
bcm5719-llvm-2bd812c5dc94d16009c911ca6a38457fe4ea21e6.zip
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
Diffstat (limited to 'llvm/unittests/Support')
-rw-r--r--llvm/unittests/Support/CMakeLists.txt1
-rw-r--r--llvm/unittests/Support/Threading.cpp25
2 files changed, 26 insertions, 0 deletions
diff --git a/llvm/unittests/Support/CMakeLists.txt b/llvm/unittests/Support/CMakeLists.txt
index 9aef7210b1f..6ae2aed59b6 100644
--- a/llvm/unittests/Support/CMakeLists.txt
+++ b/llvm/unittests/Support/CMakeLists.txt
@@ -40,6 +40,7 @@ add_llvm_unittest(SupportTests
StringPool.cpp
SwapByteOrderTest.cpp
TargetParserTest.cpp
+ Threading.cpp
ThreadLocalTest.cpp
ThreadPool.cpp
TimerTest.cpp
diff --git a/llvm/unittests/Support/Threading.cpp b/llvm/unittests/Support/Threading.cpp
new file mode 100644
index 00000000000..30a3c741b35
--- /dev/null
+++ b/llvm/unittests/Support/Threading.cpp
@@ -0,0 +1,25 @@
+//===- unittests/Threading.cpp - Thread tests -----------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Support/Threading.h"
+#include "llvm/Support/thread.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+
+namespace {
+
+TEST(Threading, PhysicalConcurrency) {
+ auto Num = hardware_physical_concurrency();
+ // Since Num is unsigned this will also catch us trying to
+ // return -1.
+ ASSERT_LE(Num, thread::hardware_concurrency());
+}
+
+} // end anon namespace
OpenPOWER on IntegriCloud