blob: f7771a6c632a7819700b7b9ae5b1625e7e25f60e [file] [log] [blame]
Kevin May42477c12020-03-26 13:34:14 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "../ConversionUtils.hpp"
9#include "../ConversionUtils_1_2.hpp"
10
11#include <HalInterfaces.h>
12
13#include <armnn/Types.hpp>
14
15namespace V1_3 = ::android::hardware::neuralnetworks::V1_3;
16
17namespace armnn_driver
18{
19namespace hal_1_3
20{
21
22class HalPolicy
23{
24public:
25 using Model = V1_3::Model;
26 using Operand = V1_3::Operand;
27 using OperandLifeTime = V1_3::OperandLifeTime;
28 using OperandType = V1_3::OperandType;
29 using Operation = V1_3::Operation;
30 using OperationType = V1_3::OperationType;
31 using ExecutionCallback = V1_3::IExecutionCallback;
32 using getSupportedOperations_cb = V1_3::IDevice::getSupportedOperations_1_3_cb;
33 using ErrorStatus = V1_3::ErrorStatus;
34
35 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
36
37private:
38 static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
39
40 static bool ConvertArgMinMax(const Operation& operation,
41 const Model& model,
42 ConversionData& data,
43 armnn::ArgMinMaxFunction argMinMaxFunction);
44
45 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
46
47 static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
48
49 static bool ConvertComparison(const Operation& operation,
50 const Model& model,
51 ConversionData& data,
52 armnn::ComparisonOperation comparisonOperation);
53
54 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
55
56 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
57
58 static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
59
60 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
61
62 static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
63
64 static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data);
65
66 static bool ConvertElementwiseUnary(const Operation& operation,
67 const Model& model,
68 ConversionData& data,
69 armnn::UnaryOperation unaryOperation);
70
71 static bool ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data);
72
73 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
74
75 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
76
77 static bool ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data);
78
79 static bool ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data);
80
81 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
82
83 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
84
85 static bool ConvertLocalResponseNormalization(const Operation& operation,
86 const Model& model,
87 ConversionData& data);
88
89 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
90
91 static bool ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data);
92
93 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
94
95 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
96
97 static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data);
98
99 static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
100
101 static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data);
102
103 static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
104
105 static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
106
107 static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data);
108
109 static bool ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data);
110
111 static bool ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data);
112
113 static bool ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data);
114
115 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
116
117 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
118
119 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
120
121 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
122
123 static bool ConvertResize(const Operation& operation,
124 const Model& model,
125 ConversionData& data,
126 armnn::ResizeMethod resizeMethod);
127
128 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
129
130 static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
131
132 static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
133
134 static bool ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data);
135
136 static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
137
138 static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
139
140 static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data);
141
142 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
143
144 static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
145
146 static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data);
147};
148
149} // namespace hal_1_3
150} // namespace armnn_driver