Use X macro for the enum class LayerType
[platform/upstream/armnn.git] / src / armnn / InternalTypes.hpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6
7 #include <armnn/Types.hpp>
8
9 #include <array>
10
11
12 /// This list uses X macro technique.
13 /// See https://en.wikipedia.org/wiki/X_Macro for more info
14 #define LIST_OF_LAYER_TYPE \
15     X(Activation) \
16     X(Addition) \
17     X(ArgMinMax) \
18     X(BatchNormalization) \
19     X(BatchToSpaceNd) \
20     X(Comparison) \
21     X(Concat) \
22     X(Constant) \
23     X(ConvertBf16ToFp32) \
24     X(ConvertFp16ToFp32) \
25     X(ConvertFp32ToBf16) \
26     X(ConvertFp32ToFp16) \
27     X(Convolution2d) \
28     X(Debug) \
29     X(DepthToSpace) \
30     X(DepthwiseConvolution2d) \
31     X(Dequantize) \
32     X(DetectionPostProcess) \
33     X(Division) \
34     X(ElementwiseUnary) \
35     X(FakeQuantization) \
36     X(Floor) \
37     X(FullyConnected) \
38     X(Gather) \
39     X(Input) \
40     X(InstanceNormalization) \
41     X(L2Normalization) \
42     X(LogSoftmax) \
43     X(Lstm) \
44     X(QLstm) \
45     X(Maximum) \
46     X(Mean) \
47     X(MemCopy) \
48     X(MemImport) \
49     X(Merge) \
50     X(Minimum) \
51     X(Multiplication) \
52     X(Normalization) \
53     X(Output) \
54     X(Pad) \
55     X(Permute) \
56     X(Pooling2d) \
57     X(PreCompiled) \
58     X(Prelu) \
59     X(Quantize) \
60     X(QuantizedLstm) \
61     X(Reshape) \
62     X(Resize) \
63     X(Slice) \
64     X(Softmax) \
65     X(SpaceToBatchNd) \
66     X(SpaceToDepth) \
67     X(Splitter) \
68     X(Stack) \
69     X(StandIn) \
70     X(StridedSlice) \
71     X(Subtraction) \
72     X(Switch) \
73     X(Transpose) \
74     X(TransposeConvolution2d)
75
76 /// When adding a new layer, adapt also the LastLayer enum value in the
77 /// enum class LayerType below
78 namespace armnn
79 {
80
81 enum class LayerType
82 {
83 #define X(name) name,
84   LIST_OF_LAYER_TYPE
85 #undef X
86   FirstLayer = Activation,
87   LastLayer = TransposeConvolution2d
88 };
89
90 const char* GetLayerTypeAsCString(LayerType type);
91
92 using Coordinates = std::array<unsigned int, MaxNumOfTensorDimensions>;
93 using Dimensions  = std::array<unsigned int, MaxNumOfTensorDimensions>;
94
95 }