blob: 3d573b187ce65cebf8cbe327265c99f8a78b23a3 [file] [log] [blame]
Mike Kellyb5fdf382019-06-11 16:35:25 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "HalPolicy.hpp"
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +01007
Mike Kellyb5fdf382019-06-11 16:35:25 +01008namespace armnn_driver
9{
10namespace hal_1_2
11{
12
Teresa Charlin8f6429d2019-10-01 13:10:15 +010013using namespace armnn;
14
Aron Virginas-Tar65a1b1d2019-11-15 15:59:51 +000015namespace
16{
17
Aron Virginas-Tar65a1b1d2019-11-15 15:59:51 +000018} // anonymous namespace
19
Mike Kellyb5fdf382019-06-11 16:35:25 +010020bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, ConversionData& data)
21{
Mike Kellyb5fdf382019-06-11 16:35:25 +010022 switch (operation.type)
23 {
Kevin May407718f2019-09-09 14:46:41 +010024 case V1_2::OperationType::ABS:
josh minor00a963b2020-01-08 11:55:35 -060025 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Abs);
Mike Kelly46272802019-08-14 17:00:48 +010026 case V1_2::OperationType::ADD:
27 return ConvertAdd(operation, model, data);
Francis Murtagh19fa0cc2019-11-19 12:06:47 +000028 case V1_2::OperationType::ARGMAX:
29 return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Max);
30 case V1_2::OperationType::ARGMIN:
31 return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Min);
Sadik Armagan15d63e22019-07-26 16:59:35 +010032 case V1_2::OperationType::AVERAGE_POOL_2D:
33 return ConvertAveragePool2d(operation, model, data);
Finn Williams23b87b32019-07-30 11:44:05 +010034 case V1_2::OperationType::BATCH_TO_SPACE_ND:
35 return ConvertBatchToSpaceNd(operation, model, data);
Sadik Armagan92b5fd12021-04-26 09:52:06 +010036 case V1_2::OperationType::CAST:
37 return ConvertCast(operation, model, data);
Mike Kellyb8805202019-07-31 17:25:43 +010038 case V1_2::OperationType::CONCATENATION:
39 return ConvertConcatenation(operation, model, data);
Mike Kellyb5fdf382019-06-11 16:35:25 +010040 case V1_2::OperationType::CONV_2D:
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010041 return ConvertConv2d(operation, model, data);
Aron Virginas-Tar8edb16d2019-10-01 13:34:59 +010042 case V1_2::OperationType::DEPTH_TO_SPACE:
43 return ConvertDepthToSpace(operation, model, data);
Mike Kellyb5fdf382019-06-11 16:35:25 +010044 case V1_2::OperationType::DEPTHWISE_CONV_2D:
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010045 return ConvertDepthwiseConv2d(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010046 case V1_2::OperationType::DEQUANTIZE:
47 return ConvertDequantize(operation, model, data);
48 case V1_2::OperationType::DIV:
49 return ConvertDiv(operation, model, data);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000050 case V1_2::OperationType::EQUAL:
51 return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
Teresa Charlincb31b3b2020-09-30 18:28:18 +010052 case V1_2::OperationType::EXP:
53 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Exp);
Narumol Prangnawarat85f96542019-09-12 16:26:29 +010054 case V1_2::OperationType::EXPAND_DIMS:
55 return ConvertExpandDims(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010056 case V1_2::OperationType::FLOOR:
57 return ConvertFloor(operation, model, data);
58 case V1_2::OperationType::FULLY_CONNECTED:
59 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010060 case V1_2::OperationType::GATHER:
61 return ConvertGather(operation, model, data);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000062 case V1_2::OperationType::GREATER:
63 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
64 case V1_2::OperationType::GREATER_EQUAL:
65 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
Teresa Charlin8f6429d2019-10-01 13:10:15 +010066 case V1_2::OperationType::GROUPED_CONV_2D:
67 return ConvertGroupedConv2d(operation, model, data);
Aron Virginas-Tara2a73802019-10-09 15:30:40 +010068 case V1_2::OperationType::INSTANCE_NORMALIZATION:
69 return ConvertInstanceNormalization(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010070 case V1_2::OperationType::L2_NORMALIZATION:
71 return ConvertL2Normalization(operation, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +010072 case V1_2::OperationType::L2_POOL_2D:
73 return ConvertL2Pool2d(operation, model, data);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000074 case V1_2::OperationType::LESS:
75 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
76 case V1_2::OperationType::LESS_EQUAL:
77 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
Mike Kelly46272802019-08-14 17:00:48 +010078 case V1_2::OperationType::LOCAL_RESPONSE_NORMALIZATION:
79 return ConvertLocalResponseNormalization(operation, model, data);
Teresa Charlin2d710022021-05-31 19:35:58 +010080 case V1_2::OperationType::LOG:
81 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Log);
Mike Kelly46272802019-08-14 17:00:48 +010082 case V1_2::OperationType::LOGISTIC:
83 return ConvertLogistic(operation, model, data);
Aron Virginas-Tar75e67792019-10-15 13:33:03 +010084 case V1_2::OperationType::LOG_SOFTMAX:
85 return ConvertLogSoftmax(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010086 case V1_2::OperationType::LSTM:
87 return ConvertLstm(operation, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +010088 case V1_2::OperationType::MAX_POOL_2D:
89 return ConvertMaxPool2d(operation, model, data);
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +010090 case V1_2::OperationType::MAXIMUM:
91 return ConvertMaximum(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010092 case V1_2::OperationType::MEAN:
Sadik Armagan6a284532021-03-12 09:12:29 +000093 return ConvertMean(operation, model, data);
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +010094 case V1_2::OperationType::MINIMUM:
95 return ConvertMinimum(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010096 case V1_2::OperationType::MUL:
97 return ConvertMul(operation, model, data);
Sadik Armagancae7e922020-03-23 14:35:05 +000098 case V1_2::OperationType::NEG:
99 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +0000100 case V1_2::OperationType::NOT_EQUAL:
101 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
Mike Kelly3c673942019-07-25 09:26:06 +0100102 case V1_2::OperationType::PAD:
Aron Virginas-Tarc921f6b2019-07-25 10:14:33 +0100103 return ConvertPad(operation, model, data);
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +0100104 case V1_2::OperationType::PAD_V2:
105 return ConvertPadV2(operation, model, data);
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100106 case V1_2::OperationType::PRELU:
107 return ConvertPrelu(operation, model, data);
Sadik Armagan5a476a82019-07-30 09:43:18 +0100108 case V1_2::OperationType::QUANTIZE:
109 return ConvertQuantize(operation, model, data);
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100110 case V1_2::OperationType::QUANTIZED_16BIT_LSTM:
Sadik Armagan813f2302020-05-19 14:10:30 +0100111 return ConvertQuantized16BitLstm(operation, model, data);
Teresa Charlin89cbb3a2021-02-11 21:00:47 +0000112 case V1_2::OperationType::REDUCE_MAX:
113 return ConvertReduce(operation, model, data, ReduceOperation::Max);
114 case V1_2::OperationType::REDUCE_MIN:
115 return ConvertReduce(operation, model, data, ReduceOperation::Min);
116 case V1_2::OperationType::REDUCE_SUM:
117 return ConvertReduce(operation, model, data, ReduceOperation::Sum);
Sadik Armagan61113162019-07-25 09:09:40 +0100118 case V1_2::OperationType::RELU:
119 return ConvertReLu(operation, model, data);
120 case V1_2::OperationType::RELU1:
121 return ConvertReLu1(operation, model, data);
122 case V1_2::OperationType::RELU6:
123 return ConvertReLu6(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +0100124 case V1_2::OperationType::RESHAPE:
125 return ConvertReshape(operation, model, data);
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +0100126 case V1_2::OperationType::RESIZE_BILINEAR:
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100127 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +0100128 case V1_2::OperationType::RESIZE_NEAREST_NEIGHBOR:
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100129 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
Aron Virginas-Tarfa6544e2019-09-10 14:42:22 +0100130 case V1_2::OperationType::RSQRT:
josh minor00a963b2020-01-08 11:55:35 -0600131 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
Teresa Charlin2d710022021-05-31 19:35:58 +0100132 case V1_2::OperationType::SIN:
133 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Sin);
Francis Murtagh074c25a2019-07-22 16:40:57 +0100134 case V1_2::OperationType::SOFTMAX:
135 return ConvertSoftmax(operation, model, data);
Finn Williamsd74c5052019-07-30 17:06:00 +0100136 case V1_2::OperationType::SPACE_TO_BATCH_ND :
137 return ConvertSpaceToBatchNd(operation, model, data);
Aron Virginas-Tarad1ab532019-07-25 11:24:42 +0100138 case V1_2::OperationType::SPACE_TO_DEPTH:
139 return ConvertSpaceToDepth(operation, model, data);
Teresa Charlin2d710022021-05-31 19:35:58 +0100140 case V1_2::OperationType::SQRT:
141 return ConvertSqrt(operation, model, data);
142 case V1_2::OperationType::SQUEEZE:
143 return ConvertSqueeze(operation, model, data);
144 case V1_2::OperationType::STRIDED_SLICE:
145 return ConvertStridedSlice(operation, model, data);
Mike Kelly0a879362019-07-29 16:56:31 +0100146 case V1_2::OperationType::SUB:
147 return ConvertSub(operation, model, data);
Teresa Charlin2d710022021-05-31 19:35:58 +0100148 case V1_2::OperationType::TRANSPOSE:
149 return ConvertTranspose(operation, model, data);
150 case V1_2::OperationType::TRANSPOSE_CONV_2D:
151 return ConvertTransposeConv2d(operation, model, data);
Sadik Armagan61113162019-07-25 09:09:40 +0100152 case V1_2::OperationType::TANH:
153 return ConvertTanH(operation, model, data);
Mike Kellyb5fdf382019-06-11 16:35:25 +0100154 default:
155 return Fail("%s: Operation type %s not supported in ArmnnDriver",
156 __func__, toString(operation.type).c_str());
157 }
158}
159
Mike Kelly46272802019-08-14 17:00:48 +0100160bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
161{
162 ALOGV("hal_1_2::HalPolicy::ConvertAdd()");
163 return ::ConvertAdd<hal_1_2::HalPolicy>(operation, model, data);
164}
165
Francis Murtagh19fa0cc2019-11-19 12:06:47 +0000166bool HalPolicy::ConvertArgMinMax(const V1_2::Operation& operation,
167 const V1_2::Model& model,
168 ConversionData& data,
169 armnn::ArgMinMaxFunction argMinMaxFunction)
170{
171 ALOGV("hal_1_2::HalPolicy::ConvertArgMinMax()");
172 return ::ConvertArgMinMax<hal_1_2::HalPolicy>(operation, model, data, argMinMaxFunction);
173}
174
Sadik Armagan15d63e22019-07-26 16:59:35 +0100175bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
176{
177 ALOGV("hal_1_2::HalPolicy::ConvertAveragePool2d()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100178 return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +0100179}
180
Finn Williams23b87b32019-07-30 11:44:05 +0100181bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
182{
183 ALOGV("hal_1_2::HalPolicy::ConvertBatchToSpaceNd()");
184 return ::ConvertBatchToSpaceNd<hal_1_2::HalPolicy>(operation, model, data);
185}
186
Sadik Armagan92b5fd12021-04-26 09:52:06 +0100187bool HalPolicy::ConvertCast(const Operation& operation, const Model& model, ConversionData& data)
188{
189 ALOGV("hal_1_2::HalPolicy::ConvertCast()");
190 return ::ConvertCast<hal_1_2::HalPolicy>(operation, model, data);
191}
192
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +0000193bool HalPolicy::ConvertComparison(const Operation& operation,
194 const Model& model,
195 ConversionData& data,
196 ComparisonOperation comparisonOperation)
197{
198 ALOGV("hal_1_2::HalPolicy::ConvertComparison()");
Kevin May42477c12020-03-26 13:34:14 +0000199 return ::ConvertComparison_1_2<hal_1_2::HalPolicy>(operation, model, data, comparisonOperation);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +0000200}
201
Mike Kellyb8805202019-07-31 17:25:43 +0100202bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
203{
204 ALOGV("hal_1_2::HalPolicy::ConvertConcatenation()");
205 return ::ConvertConcatenation<hal_1_2::HalPolicy>(operation, model, data);
206}
207
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100208bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
209{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100210 ALOGV("hal_1_2::HalPolicy::ConvertConv2d()");
Kevin May42477c12020-03-26 13:34:14 +0000211 return ::ConvertConv2d_1_2<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100212}
213
Aron Virginas-Tar8edb16d2019-10-01 13:34:59 +0100214bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
215{
216 ALOGV("hal_1_2::HalPolicy::ConvertDepthToSpace()");
217 return ::ConvertDepthToSpace<hal_1_2::HalPolicy>(operation, model, data);
218}
219
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100220bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
221{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100222 ALOGV("hal_1_2::HalPolicy::ConvertDepthwiseConv2d()");
Kevin May42477c12020-03-26 13:34:14 +0000223 return ::ConvertDepthwiseConv2d_1_2<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100224}
225
Mike Kelly46272802019-08-14 17:00:48 +0100226bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
227{
228 ALOGV("hal_1_2::HalPolicy::ConvertDequantize()");
Kevin May42477c12020-03-26 13:34:14 +0000229 return ::ConvertDequantize_1_2<hal_1_2::HalPolicy>(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +0100230}
231
232bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
233{
234 ALOGV("hal_1_2::HalPolicy::ConvertDiv()");
235 return ::ConvertDiv<hal_1_2::HalPolicy>(operation, model, data);
236}
237
josh minor00a963b2020-01-08 11:55:35 -0600238bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
239 const Model& model,
240 ConversionData& data,
241 UnaryOperation unaryOperation)
242{
243 ALOGV("hal_1_2::HalPolicy::ConvertElementwiseUnary()");
Kevin May42477c12020-03-26 13:34:14 +0000244 return ::ConvertElementwiseUnary<hal_1_2::HalPolicy>(operation, model, data, unaryOperation);
josh minor00a963b2020-01-08 11:55:35 -0600245}
246
Narumol Prangnawarat85f96542019-09-12 16:26:29 +0100247bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
248{
249 ALOGV("hal_1_2::HalPolicy::ConvertExpandDims()");
Kevin May42477c12020-03-26 13:34:14 +0000250 return ::ConvertExpandDims<hal_1_2::HalPolicy>(operation, model, data);
Narumol Prangnawarat85f96542019-09-12 16:26:29 +0100251}
252
Mike Kelly46272802019-08-14 17:00:48 +0100253bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
254{
255 ALOGV("hal_1_2::HalPolicy::ConvertFloor()");
256 return ::ConvertFloor<hal_1_2::HalPolicy>(operation, model, data);
257}
258
259bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
260{
261 ALOGV("hal_1_2::HalPolicy::ConvertFullyConnected()");
262 return ::ConvertFullyConnected<hal_1_2::HalPolicy>(operation, model, data);
263}
264
Teresa Charlinf931af92020-04-10 16:46:53 +0100265bool HalPolicy::ConvertGather (const Operation& operation, const Model& model, ConversionData& data)
266{
267 ALOGV("hal_1_2::HalPolicy::ConvertGather()");
268 return ::ConvertGather<hal_1_2::HalPolicy>(operation, model, data);
269}
270
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100271bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
272{
273 ALOGV("hal_1_2::HalPolicy::ConvertGroupedConv2d()");
Kevin May42477c12020-03-26 13:34:14 +0000274 return ::ConvertGroupedConv2d<hal_1_2::HalPolicy>(operation, model, data);
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100275}
276
Aron Virginas-Tara2a73802019-10-09 15:30:40 +0100277bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
278{
279 ALOGV("hal_1_2::HalPolicy::ConvertInstanceNormalization()");
Kevin May42477c12020-03-26 13:34:14 +0000280 return ::ConvertInstanceNormalization<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tara2a73802019-10-09 15:30:40 +0100281}
282
Mike Kelly46272802019-08-14 17:00:48 +0100283bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
284{
285 ALOGV("hal_1_2::HalPolicy::ConvertL2Normalization()");
286 return ::ConvertL2Normalization<hal_1_2::HalPolicy>(operation, model, data);
287}
288
Sadik Armagan15d63e22019-07-26 16:59:35 +0100289bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
290{
291 ALOGV("hal_1_2::HalPolicy::ConvertL2Pool2d()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100292 return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +0100293}
294
Mike Kelly46272802019-08-14 17:00:48 +0100295bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
296 const Model& model,
297 ConversionData& data)
298{
299 ALOGV("hal_1_2::HalPolicy::ConvertLocalResponseNormalization()");
300 return ::ConvertLocalResponseNormalization<hal_1_2::HalPolicy>(operation, model, data);
301}
302
303bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
304{
305 ALOGV("hal_1_2::HalPolicy::ConvertLogistic()");
306 return ::ConvertLogistic<hal_1_2::HalPolicy>(operation, model, data);
307}
308
Aron Virginas-Tar75e67792019-10-15 13:33:03 +0100309bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
310{
311 ALOGV("hal_1_2::HalPolicy::ConvertLogSoftmax()");
Kevin May42477c12020-03-26 13:34:14 +0000312 return ::ConvertLogSoftmax<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tar75e67792019-10-15 13:33:03 +0100313}
314
Sadik Armagan15d63e22019-07-26 16:59:35 +0100315bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
316{
317 ALOGV("hal_1_2::HalPolicy::ConvertMaxPool2d()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100318 return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +0100319}
320
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +0100321bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
322{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100323 ALOGV("hal_1_2::HalPolicy::ConvertMaximum()");
Kevin May42477c12020-03-26 13:34:14 +0000324 return ::ConvertMaximum<hal_1_2::HalPolicy>(operation, model, data);
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +0100325}
326
Sadik Armagan6a284532021-03-12 09:12:29 +0000327bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
Mike Kelly46272802019-08-14 17:00:48 +0100328{
Sadik Armagan6a284532021-03-12 09:12:29 +0000329 ALOGV("hal_1_2::HalPolicy::ConvertMean()");
330 return ::ConvertMean<hal_1_2::HalPolicy>(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +0100331}
332
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +0100333bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
334{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100335 ALOGV("hal_1_2::HalPolicy::ConvertMinimum()");
Kevin May42477c12020-03-26 13:34:14 +0000336 return ::ConvertMinimum<hal_1_2::HalPolicy>(operation, model, data);
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +0100337}
338
Mike Kelly46272802019-08-14 17:00:48 +0100339bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
340{
341 ALOGV("hal_1_2::HalPolicy::ConvertMul()");
342 return ::ConvertMul<hal_1_2::HalPolicy>(operation, model, data);
343}
344
Aron Virginas-Tarc921f6b2019-07-25 10:14:33 +0100345bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
346{
347 ALOGV("hal_1_2::HalPolicy::ConvertPad()");
348 return ::ConvertPad<hal_1_2::HalPolicy>(operation, model, data);
349}
350
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +0100351bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
352{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100353 ALOGV("hal_1_2::HalPolicy::ConvertPadV2()");
Kevin May42477c12020-03-26 13:34:14 +0000354 return ::ConvertPadV2<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +0100355}
356
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100357bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
358{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100359 ALOGV("hal_1_2::HalPolicy::ConvertPrelu()");
Kevin May42477c12020-03-26 13:34:14 +0000360 return ::ConvertPrelu<hal_1_2::HalPolicy>(operation, model, data);
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100361}
362
Sadik Armagan5a476a82019-07-30 09:43:18 +0100363bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
364{
365 ALOGV("hal_1_2::HalPolicy::ConvertQuantize()");
Kevin May42477c12020-03-26 13:34:14 +0000366 return ::ConvertQuantize<hal_1_2::HalPolicy>(operation, model, data);
Sadik Armagan5a476a82019-07-30 09:43:18 +0100367}
368
Sadik Armagan813f2302020-05-19 14:10:30 +0100369bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100370{
Sadik Armagan813f2302020-05-19 14:10:30 +0100371 ALOGV("hal_1_2::HalPolicy::ConvertQuantized16BitLstm()");
372 return ::ConvertQuantized16BitLstm<hal_1_2::HalPolicy>(operation, model, data);
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100373}
374
Sadik Armagan6a284532021-03-12 09:12:29 +0000375bool HalPolicy::ConvertReduce(const Operation& operation,
376 const Model& model,
377 ConversionData& data,
378 ReduceOperation reduceOperation)
379{
380 ALOGV("hal_1_2::HalPolicy::ConvertReduce()");
381 return ::ConvertReduce<hal_1_2::HalPolicy>(operation, model, data, reduceOperation);
382}
383
Sadik Armagan61113162019-07-25 09:09:40 +0100384bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
385{
386 ALOGV("hal_1_2::HalPolicy::ConvertReLu()");
387 return ::ConvertReLu<hal_1_2::HalPolicy>(operation, model, data);
388}
389
390bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
391{
392 ALOGV("hal_1_2::HalPolicy::ConvertReLu1()");
393 return ::ConvertReLu1<hal_1_2::HalPolicy>(operation, model, data);
394}
395
396bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
397{
398 ALOGV("hal_1_2::HalPolicy::ConvertReLu6()");
399 return ::ConvertReLu6<hal_1_2::HalPolicy>(operation, model, data);
400}
401
Mike Kelly46272802019-08-14 17:00:48 +0100402bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
403{
404 ALOGV("hal_1_2::HalPolicy::ConvertReshape()");
405 return ::ConvertReshape<hal_1_2::HalPolicy>(operation, model, data);
406}
407
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +0100408bool HalPolicy::ConvertResize(const Operation& operation,
409 const Model& model,
410 ConversionData& data,
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100411 ResizeMethod resizeMethod)
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +0100412{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100413 ALOGV("hal_1_2::HalPolicy::ConvertResize()");
Kevin May42477c12020-03-26 13:34:14 +0000414 return ::ConvertResize<hal_1_2::HalPolicy>(operation, model, data, resizeMethod);
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +0100415}
416
Finn Williamsd74c5052019-07-30 17:06:00 +0100417bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
418{
419 ALOGV("hal_1_2::HalPolicy::ConvertSpaceToBatchNd()");
420 return ::ConvertSpaceToBatchNd<hal_1_2::HalPolicy>(operation, model, data);
421}
422
Keith Davisa6bc52f2019-06-26 09:39:49 +0100423bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
424{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100425 ALOGV("hal_1_2::HalPolicy::ConvertSpaceToDepth()");
Kevin May42477c12020-03-26 13:34:14 +0000426 return ::ConvertSpaceToDepth<hal_1_2::HalPolicy>(operation, model, data);
Keith Davisa6bc52f2019-06-26 09:39:49 +0100427}
428
Francis Murtagh074c25a2019-07-22 16:40:57 +0100429bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
430{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100431 ALOGV("hal_1_2::HalPolicy::ConvertSoftmax()");
Kevin May42477c12020-03-26 13:34:14 +0000432 return ::ConvertSoftmax<hal_1_2::HalPolicy>(operation, model, data);
Francis Murtagh074c25a2019-07-22 16:40:57 +0100433}
434
Mike Kelly0a879362019-07-29 16:56:31 +0100435bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
436{
437 ALOGV("hal_1_2::HalPolicy::ConvertSub()");
438 return ::ConvertSub<hal_1_2::HalPolicy>(operation, model, data);
439}
440
Sadik Armagan61113162019-07-25 09:09:40 +0100441bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
442{
443 ALOGV("hal_1_2::HalPolicy::ConvertTanH()");
444 return ::ConvertTanH<hal_1_2::HalPolicy>(operation, model, data);
445}
446
Ferran Balaguerb2397fd2019-07-25 12:12:39 +0100447bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
448{
Pablo Tellofb45e2f2019-10-18 16:51:57 +0100449 ALOGV("hal_1_2::HalPolicy::ConvertLstm()");
Kevin May42477c12020-03-26 13:34:14 +0000450 return ::ConvertLstm<hal_1_2::HalPolicy>(operation, model, data);
Ferran Balaguerb2397fd2019-07-25 12:12:39 +0100451}
452
Sadik Armagan701d9a02019-09-04 15:16:18 +0100453bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
454{
455 ALOGV("hal_1_2::HalPolicy::ConvertSqrt()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100456 ActivationDescriptor desc;
457 desc.m_Function = ActivationFunction::Sqrt;
Sadik Armagan701d9a02019-09-04 15:16:18 +0100458
459 return ::ConvertToActivation<hal_1_2::HalPolicy>(operation, __func__, desc, model, data);
460}
461
Mike Kelly46272802019-08-14 17:00:48 +0100462bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
463{
Sadik Armagan701d9a02019-09-04 15:16:18 +0100464 ALOGV("hal_1_2::HalPolicy::ConvertSqueeze()");
Mike Kelly46272802019-08-14 17:00:48 +0100465 return ::ConvertSqueeze<hal_1_2::HalPolicy>(operation, model, data);
466}
467
468bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
469{
Sadik Armagan701d9a02019-09-04 15:16:18 +0100470 ALOGV("hal_1_2::HalPolicy::ConvertStridedSlice()");
Mike Kelly46272802019-08-14 17:00:48 +0100471 return ::ConvertStridedSlice<hal_1_2::HalPolicy>(operation, model, data);
472}
473
474bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
475{
Sadik Armagan701d9a02019-09-04 15:16:18 +0100476 ALOGV("hal_1_2::HalPolicy::ConvertTranspose()");
Mike Kelly46272802019-08-14 17:00:48 +0100477 return ::ConvertTranspose<hal_1_2::HalPolicy>(operation, model, data);
478}
479
Aron Virginas-Tar8b991682019-07-31 12:54:59 +0100480bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
David Monahan613b49c2019-06-27 11:37:47 +0100481{
Kevin May42477c12020-03-26 13:34:14 +0000482 ALOGV("hal_1_2::HalPolicy::ConvertTransposeConv2d()");
483 return ::ConvertTransposeConv2d<hal_1_2::HalPolicy>(operation, model, data);
David Monahan613b49c2019-06-27 11:37:47 +0100484}
485
Mike Kellyb5fdf382019-06-11 16:35:25 +0100486} // namespace hal_1_2
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100487} // namespace armnn_driver