aboutsummaryrefslogtreecommitdiff
path: root/src/armnnUtils
diff options
context:
space:
mode:
authorMatteo Martincigh <matteo.martincigh@arm.com>2018-11-28 16:22:22 +0000
committerMatteo Martincigh <matteo.martincigh@arm.com>2018-12-05 11:03:35 +0000
commit2135015779092e259ad5d5df185eda0c34b56359 (patch)
tree744a46d8f6036ac13fc40ab5001ad2ad05fb4525 /src/armnnUtils
parent24df822711e14cd3099a926272d863ed139ed4d7 (diff)
downloadarmnn-2135015779092e259ad5d5df185eda0c34b56359.tar.gz
IVGCVSW-2264 Move DataLayoutIndexed to armnnUtils
* Since DataLayoutIndexed is now required in the TF parser, this changes move it to the armnnUtils library so that it'll be accessible by the armnnTfParser * Modified CMake files and Android.mk files accordingly Change-Id: Ie2620359ef288aeff64cb9e9bec068a466eee0e9
Diffstat (limited to 'src/armnnUtils')
-rw-r--r--src/armnnUtils/DataLayoutIndexed.cpp46
-rw-r--r--src/armnnUtils/DataLayoutIndexed.hpp33
2 files changed, 79 insertions, 0 deletions
diff --git a/src/armnnUtils/DataLayoutIndexed.cpp b/src/armnnUtils/DataLayoutIndexed.cpp
new file mode 100644
index 0000000000..db27de4bdd
--- /dev/null
+++ b/src/armnnUtils/DataLayoutIndexed.cpp
@@ -0,0 +1,46 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "DataLayoutIndexed.hpp"
+
+using namespace armnn;
+
+namespace armnnUtils
+{
+
+DataLayoutIndexed::DataLayoutIndexed(armnn::DataLayout dataLayout)
+ : m_DataLayout(dataLayout)
+{
+ switch (dataLayout)
+ {
+ case armnn::DataLayout::NHWC:
+ m_ChannelsIndex = 3;
+ m_HeightIndex = 1;
+ m_WidthIndex = 2;
+ break;
+ case armnn::DataLayout::NCHW:
+ m_ChannelsIndex = 1;
+ m_HeightIndex = 2;
+ m_WidthIndex = 3;
+ break;
+ default:
+ throw armnn::InvalidArgumentException("Unknown DataLayout value: " +
+ std::to_string(static_cast<int>(dataLayout)));
+ }
+}
+
+// Definition in include/armnn/Types.hpp
+bool operator==(const DataLayout& dataLayout, const DataLayoutIndexed& indexed)
+{
+ return dataLayout == indexed.GetDataLayout();
+}
+
+// Definition in include/armnn/Types.hpp
+bool operator==(const DataLayoutIndexed& indexed, const DataLayout& dataLayout)
+{
+ return indexed.GetDataLayout() == dataLayout;
+}
+
+} // namespace armnnUtils
diff --git a/src/armnnUtils/DataLayoutIndexed.hpp b/src/armnnUtils/DataLayoutIndexed.hpp
new file mode 100644
index 0000000000..1cf2a09e32
--- /dev/null
+++ b/src/armnnUtils/DataLayoutIndexed.hpp
@@ -0,0 +1,33 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+#include <armnn/Types.hpp>
+
+namespace armnnUtils
+{
+
+// Provides access to the appropriate indexes for Channels, Height and Width based on DataLayout
+class DataLayoutIndexed
+{
+public:
+ DataLayoutIndexed(armnn::DataLayout dataLayout);
+
+ armnn::DataLayout GetDataLayout() const { return m_DataLayout; }
+ unsigned int GetChannelsIndex() const { return m_ChannelsIndex; }
+ unsigned int GetHeightIndex() const { return m_HeightIndex; }
+ unsigned int GetWidthIndex() const { return m_WidthIndex; }
+
+private:
+ armnn::DataLayout m_DataLayout;
+ unsigned int m_ChannelsIndex;
+ unsigned int m_HeightIndex;
+ unsigned int m_WidthIndex;
+};
+
+// Equality methods
+bool operator==(const armnn::DataLayout& dataLayout, const DataLayoutIndexed& indexed);
+bool operator==(const DataLayoutIndexed& indexed, const armnn::DataLayout& dataLayout);
+
+} // namespace armnnUtils