blob: 01505a0a31fa5f009035b14de46f5f235174a71c [file] [log] [blame]
Laurent Carlier749294b2020-06-01 09:03:17 +01001//
Matteo Martincigh21350152018-11-28 16:22:22 +00002// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Matteo Martincighe011d202019-11-28 11:35:47 +00006#include <armnnUtils/DataLayoutIndexed.hpp>
7
Matteo Martincigh21350152018-11-28 16:22:22 +00008using namespace armnn;
9
10namespace armnnUtils
11{
12
13DataLayoutIndexed::DataLayoutIndexed(armnn::DataLayout dataLayout)
14 : m_DataLayout(dataLayout)
15{
16 switch (dataLayout)
17 {
18 case armnn::DataLayout::NHWC:
19 m_ChannelsIndex = 3;
20 m_HeightIndex = 1;
21 m_WidthIndex = 2;
22 break;
23 case armnn::DataLayout::NCHW:
24 m_ChannelsIndex = 1;
25 m_HeightIndex = 2;
26 m_WidthIndex = 3;
27 break;
Matthew Sloyanb63a3112021-09-08 13:05:51 +010028 case armnn::DataLayout::NDHWC:
29 m_DepthIndex = 1;
30 m_HeightIndex = 2;
31 m_WidthIndex = 3;
32 m_ChannelsIndex = 4;
33 break;
Matthew Sloyan5d7b0a32021-10-18 13:07:49 +010034 case armnn::DataLayout::NCDHW:
35 m_ChannelsIndex = 1;
36 m_DepthIndex = 2;
37 m_HeightIndex = 3;
38 m_WidthIndex = 4;
39 break;
Matteo Martincigh21350152018-11-28 16:22:22 +000040 default:
41 throw armnn::InvalidArgumentException("Unknown DataLayout value: " +
42 std::to_string(static_cast<int>(dataLayout)));
43 }
44}
45
Matteo Martincigh21350152018-11-28 16:22:22 +000046bool operator==(const DataLayout& dataLayout, const DataLayoutIndexed& indexed)
47{
48 return dataLayout == indexed.GetDataLayout();
49}
50
Matteo Martincigh21350152018-11-28 16:22:22 +000051bool operator==(const DataLayoutIndexed& indexed, const DataLayout& dataLayout)
52{
53 return indexed.GetDataLayout() == dataLayout;
54}
55
56} // namespace armnnUtils