summaryrefslogtreecommitdiff
path: root/unittests/tools/llvm-exegesis/PerfHelperTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/tools/llvm-exegesis/PerfHelperTest.cpp')
-rw-r--r--unittests/tools/llvm-exegesis/PerfHelperTest.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/unittests/tools/llvm-exegesis/PerfHelperTest.cpp b/unittests/tools/llvm-exegesis/PerfHelperTest.cpp
new file mode 100644
index 000000000000..a8205f9e3eb2
--- /dev/null
+++ b/unittests/tools/llvm-exegesis/PerfHelperTest.cpp
@@ -0,0 +1,47 @@
+//===-- PerfHelperTest.cpp --------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "PerfHelper.h"
+#include "llvm/Config/config.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+namespace exegesis {
+namespace pfm {
+namespace {
+
+using ::testing::IsEmpty;
+using ::testing::Not;
+
+TEST(PerfHelperTest, FunctionalTest) {
+#ifdef HAVE_LIBPFM
+ ASSERT_FALSE(pfmInitialize());
+ const PerfEvent SingleEvent("CYCLES:u");
+ const auto &EmptyFn = []() {};
+ std::string CallbackEventName;
+ std::string CallbackEventNameFullyQualifed;
+ int64_t CallbackEventCycles;
+ Measure(llvm::makeArrayRef(SingleEvent),
+ [&](const PerfEvent &Event, int64_t Value) {
+ CallbackEventName = Event.name();
+ CallbackEventNameFullyQualifed = Event.getPfmEventString();
+ CallbackEventCycles = Value;
+ },
+ EmptyFn);
+ EXPECT_EQ(CallbackEventName, "CYCLES:u");
+ EXPECT_THAT(CallbackEventNameFullyQualifed, Not(IsEmpty()));
+ pfmTerminate();
+#else
+ ASSERT_TRUE(pfmInitialize());
+#endif
+}
+
+} // namespace
+} // namespace pfm
+} // namespace exegesis