aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancis Murtagh <francis.murtagh@arm.com>2019-08-14 09:49:34 +0100
committerFrancis Murtagh <francis.murtagh@arm.com>2019-08-14 09:49:34 +0100
commit1f7db45b73522752115ea482d1e85e88c044a664 (patch)
tree5f338c8cce8db41720be973de7bc9eb137a1e3fe
parent566e4adc16e4aa3bc1107c32af5df45f027424ca (diff)
downloadarmnn-1f7db45b73522752115ea482d1e85e88c044a664.tar.gz
IVGCVSW-3416 Create Command Handler Key class
* Add CommandHandlerKey class with all comparison operators * Add UnitTests to check key sorting in collection Change-Id: Icbd493d1e51e681cbe22a9e70ab9428a8a2ad107 Signed-off-by: Francis Murtagh <francis.murtagh@arm.com>
-rw-r--r--CMakeLists.txt3
-rw-r--r--src/profiling/CommandHandlerKey.cpp57
-rw-r--r--src/profiling/CommandHandlerKey.hpp28
-rw-r--r--src/profiling/test/ProfilingTests.cpp59
4 files changed, 147 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 08c693d30d..66b8cf4a10 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -411,6 +411,8 @@ list(APPEND armnn_sources
src/armnn/optimizations/OptimizeInversePermutes.hpp
src/armnn/optimizations/PermuteAsReshape.hpp
src/armnn/optimizations/SquashEqualSiblings.hpp
+ src/profiling/CommandHandlerKey.cpp
+ src/profiling/CommandHandlerKey.hpp
third-party/half/half.hpp
)
@@ -517,6 +519,7 @@ if(BUILD_UNIT_TESTS)
src/armnn/test/UtilsTests.cpp
src/armnnUtils/test/PrototxtConversionsTest.cpp
src/armnnUtils/test/ParserHelperTest.cpp
+ src/profiling/test/ProfilingTests.cpp
)
if(BUILD_TF_PARSER)
diff --git a/src/profiling/CommandHandlerKey.cpp b/src/profiling/CommandHandlerKey.cpp
new file mode 100644
index 0000000000..6ce73440b8
--- /dev/null
+++ b/src/profiling/CommandHandlerKey.cpp
@@ -0,0 +1,57 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "CommandHandlerKey.hpp"
+
+uint32_t CommandHandlerKey::GetPacketId() const
+{
+ return m_PacketId;
+}
+
+uint32_t CommandHandlerKey::GetVersion() const
+{
+ return m_Version;
+}
+
+bool CommandHandlerKey::operator<(const CommandHandlerKey& rhs) const
+{
+ bool result = true;
+
+ if (m_PacketId == rhs.m_PacketId)
+ {
+ result = m_Version < rhs.m_Version;
+ }
+ else if (m_PacketId > rhs.m_PacketId)
+ {
+ result = false;
+ }
+
+ return result;
+}
+
+bool CommandHandlerKey::operator>(const CommandHandlerKey& rhs) const
+{
+ return rhs < *this;
+}
+
+bool CommandHandlerKey::operator<=(const CommandHandlerKey& rhs) const
+{
+ return !(*this > rhs);
+}
+
+bool CommandHandlerKey::operator>=(const CommandHandlerKey& rhs) const
+{
+ return !(*this < rhs);
+}
+
+bool CommandHandlerKey::operator==(const CommandHandlerKey& rhs) const
+{
+ return m_PacketId == rhs.m_PacketId && m_Version == rhs.m_Version;
+}
+
+bool CommandHandlerKey::operator!=(const CommandHandlerKey& rhs) const
+{
+ return !(*this == rhs);
+}
diff --git a/src/profiling/CommandHandlerKey.hpp b/src/profiling/CommandHandlerKey.hpp
new file mode 100644
index 0000000000..12bafbe49b
--- /dev/null
+++ b/src/profiling/CommandHandlerKey.hpp
@@ -0,0 +1,28 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <cstdint>
+
+class CommandHandlerKey
+{
+public:
+ CommandHandlerKey(uint32_t packetId, uint32_t version) : m_PacketId(packetId), m_Version(version) {};
+
+ uint32_t GetPacketId() const;
+ uint32_t GetVersion() const;
+
+ bool operator< (const CommandHandlerKey& rhs) const;
+ bool operator> (const CommandHandlerKey& rhs) const;
+ bool operator<=(const CommandHandlerKey& rhs) const;
+ bool operator>=(const CommandHandlerKey& rhs) const;
+ bool operator==(const CommandHandlerKey& rhs) const;
+ bool operator!=(const CommandHandlerKey& rhs) const;
+
+private:
+ uint32_t m_PacketId;
+ uint32_t m_Version;
+};
diff --git a/src/profiling/test/ProfilingTests.cpp b/src/profiling/test/ProfilingTests.cpp
new file mode 100644
index 0000000000..5abab2fb78
--- /dev/null
+++ b/src/profiling/test/ProfilingTests.cpp
@@ -0,0 +1,59 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "../CommandHandlerKey.hpp"
+
+#include <boost/test/unit_test.hpp>
+
+BOOST_AUTO_TEST_SUITE(ExternalProfiling)
+
+BOOST_AUTO_TEST_CASE(CheckCommandHandlerKeyComparisons)
+{
+ CommandHandlerKey testKey0(1, 1);
+ CommandHandlerKey testKey1(1, 1);
+ CommandHandlerKey testKey2(1, 1);
+ CommandHandlerKey testKey3(0, 0);
+ CommandHandlerKey testKey4(2, 2);
+ CommandHandlerKey testKey5(0, 2);
+
+ BOOST_CHECK(testKey1<testKey4);
+ BOOST_CHECK(testKey1>testKey3);
+ BOOST_CHECK(testKey1<=testKey4);
+ BOOST_CHECK(testKey1>=testKey3);
+ BOOST_CHECK(testKey1<=testKey2);
+ BOOST_CHECK(testKey1>=testKey2);
+ BOOST_CHECK(testKey1==testKey2);
+ BOOST_CHECK(testKey1==testKey1);
+
+ BOOST_CHECK(!(testKey1==testKey5));
+ BOOST_CHECK(!(testKey1!=testKey1));
+ BOOST_CHECK(testKey1!=testKey5);
+
+ BOOST_CHECK(testKey1==testKey2 && testKey2==testKey1);
+ BOOST_CHECK(testKey0==testKey1 && testKey1==testKey2 && testKey0==testKey2);
+
+ BOOST_CHECK(testKey1.GetPacketId()==1);
+ BOOST_CHECK(testKey1.GetVersion()==1);
+
+ std::vector<CommandHandlerKey> vect =
+ {
+ CommandHandlerKey(0,1), CommandHandlerKey(2,0), CommandHandlerKey(1,0),
+ CommandHandlerKey(2,1), CommandHandlerKey(1,1), CommandHandlerKey(0,1),
+ CommandHandlerKey(2,0), CommandHandlerKey(0,0)
+ };
+
+ std::sort(vect.begin(), vect.end());
+
+ std::vector<CommandHandlerKey> expectedVect =
+ {
+ CommandHandlerKey(0,0), CommandHandlerKey(0,1), CommandHandlerKey(0,1),
+ CommandHandlerKey(1,0), CommandHandlerKey(1,1), CommandHandlerKey(2,0),
+ CommandHandlerKey(2,0), CommandHandlerKey(2,1)
+ };
+
+ BOOST_CHECK(vect == expectedVect);
+}
+
+BOOST_AUTO_TEST_SUITE_END()