blob: 9e547fab45ef044fbc769b75543603799b108a9a [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);
Mike Kellyb8805202019-07-31 17:25:43 +010036 case V1_2::OperationType::CONCATENATION:
37 return ConvertConcatenation(operation, model, data);
Mike Kellyb5fdf382019-06-11 16:35:25 +010038 case V1_2::OperationType::CONV_2D:
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010039 return ConvertConv2d(operation, model, data);
Aron Virginas-Tar8edb16d2019-10-01 13:34:59 +010040 case V1_2::OperationType::DEPTH_TO_SPACE:
41 return ConvertDepthToSpace(operation, model, data);
Mike Kellyb5fdf382019-06-11 16:35:25 +010042 case V1_2::OperationType::DEPTHWISE_CONV_2D:
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010043 return ConvertDepthwiseConv2d(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010044 case V1_2::OperationType::DEQUANTIZE:
45 return ConvertDequantize(operation, model, data);
46 case V1_2::OperationType::DIV:
47 return ConvertDiv(operation, model, data);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000048 case V1_2::OperationType::EQUAL:
49 return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
Narumol Prangnawarat85f96542019-09-12 16:26:29 +010050 case V1_2::OperationType::EXPAND_DIMS:
51 return ConvertExpandDims(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010052 case V1_2::OperationType::FLOOR:
53 return ConvertFloor(operation, model, data);
54 case V1_2::OperationType::FULLY_CONNECTED:
55 return ConvertFullyConnected(operation, model, data);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000056 case V1_2::OperationType::GREATER:
57 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
58 case V1_2::OperationType::GREATER_EQUAL:
59 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
Teresa Charlin8f6429d2019-10-01 13:10:15 +010060 case V1_2::OperationType::GROUPED_CONV_2D:
61 return ConvertGroupedConv2d(operation, model, data);
Aron Virginas-Tara2a73802019-10-09 15:30:40 +010062 case V1_2::OperationType::INSTANCE_NORMALIZATION:
63 return ConvertInstanceNormalization(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010064 case V1_2::OperationType::L2_NORMALIZATION:
65 return ConvertL2Normalization(operation, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +010066 case V1_2::OperationType::L2_POOL_2D:
67 return ConvertL2Pool2d(operation, model, data);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000068 case V1_2::OperationType::LESS:
69 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
70 case V1_2::OperationType::LESS_EQUAL:
71 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
Mike Kelly46272802019-08-14 17:00:48 +010072 case V1_2::OperationType::LOCAL_RESPONSE_NORMALIZATION:
73 return ConvertLocalResponseNormalization(operation, model, data);
74 case V1_2::OperationType::LOGISTIC:
75 return ConvertLogistic(operation, model, data);
Aron Virginas-Tar75e67792019-10-15 13:33:03 +010076 case V1_2::OperationType::LOG_SOFTMAX:
77 return ConvertLogSoftmax(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010078 case V1_2::OperationType::LSTM:
79 return ConvertLstm(operation, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +010080 case V1_2::OperationType::MAX_POOL_2D:
81 return ConvertMaxPool2d(operation, model, data);
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +010082 case V1_2::OperationType::MAXIMUM:
83 return ConvertMaximum(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010084 case V1_2::OperationType::MEAN:
85 return ConvertMean(operation, model, data);
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +010086 case V1_2::OperationType::MINIMUM:
87 return ConvertMinimum(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +010088 case V1_2::OperationType::MUL:
89 return ConvertMul(operation, model, data);
Sadik Armagancae7e922020-03-23 14:35:05 +000090 case V1_2::OperationType::NEG:
91 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000092 case V1_2::OperationType::NOT_EQUAL:
93 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
Mike Kelly3c673942019-07-25 09:26:06 +010094 case V1_2::OperationType::PAD:
Aron Virginas-Tarc921f6b2019-07-25 10:14:33 +010095 return ConvertPad(operation, model, data);
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +010096 case V1_2::OperationType::PAD_V2:
97 return ConvertPadV2(operation, model, data);
Matteo Martincigh17ffff32019-06-27 14:12:55 +010098 case V1_2::OperationType::PRELU:
99 return ConvertPrelu(operation, model, data);
Sadik Armagan5a476a82019-07-30 09:43:18 +0100100 case V1_2::OperationType::QUANTIZE:
101 return ConvertQuantize(operation, model, data);
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100102 case V1_2::OperationType::QUANTIZED_16BIT_LSTM:
103 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan61113162019-07-25 09:09:40 +0100104 case V1_2::OperationType::RELU:
105 return ConvertReLu(operation, model, data);
106 case V1_2::OperationType::RELU1:
107 return ConvertReLu1(operation, model, data);
108 case V1_2::OperationType::RELU6:
109 return ConvertReLu6(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +0100110 case V1_2::OperationType::RESHAPE:
111 return ConvertReshape(operation, model, data);
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +0100112 case V1_2::OperationType::RESIZE_BILINEAR:
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100113 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +0100114 case V1_2::OperationType::RESIZE_NEAREST_NEIGHBOR:
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100115 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
Aron Virginas-Tarfa6544e2019-09-10 14:42:22 +0100116 case V1_2::OperationType::RSQRT:
josh minor00a963b2020-01-08 11:55:35 -0600117 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
Sadik Armagan701d9a02019-09-04 15:16:18 +0100118 case V1_2::OperationType::SQRT:
119 return ConvertSqrt(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +0100120 case V1_2::OperationType::SQUEEZE:
121 return ConvertSqueeze(operation, model, data);
122 case V1_2::OperationType::STRIDED_SLICE:
123 return ConvertStridedSlice(operation, model, data);
124 case V1_2::OperationType::TRANSPOSE:
125 return ConvertTranspose(operation, model, data);
David Monahan613b49c2019-06-27 11:37:47 +0100126 case V1_2::OperationType::TRANSPOSE_CONV_2D:
Aron Virginas-Tar8b991682019-07-31 12:54:59 +0100127 return ConvertTransposeConv2d(operation, model, data);
Francis Murtagh074c25a2019-07-22 16:40:57 +0100128 case V1_2::OperationType::SOFTMAX:
129 return ConvertSoftmax(operation, model, data);
Finn Williamsd74c5052019-07-30 17:06:00 +0100130 case V1_2::OperationType::SPACE_TO_BATCH_ND :
131 return ConvertSpaceToBatchNd(operation, model, data);
Aron Virginas-Tarad1ab532019-07-25 11:24:42 +0100132 case V1_2::OperationType::SPACE_TO_DEPTH:
133 return ConvertSpaceToDepth(operation, model, data);
Mike Kelly0a879362019-07-29 16:56:31 +0100134 case V1_2::OperationType::SUB:
135 return ConvertSub(operation, model, data);
Sadik Armagan61113162019-07-25 09:09:40 +0100136 case V1_2::OperationType::TANH:
137 return ConvertTanH(operation, model, data);
Mike Kellyb5fdf382019-06-11 16:35:25 +0100138 default:
139 return Fail("%s: Operation type %s not supported in ArmnnDriver",
140 __func__, toString(operation.type).c_str());
141 }
142}
143
Mike Kelly46272802019-08-14 17:00:48 +0100144bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
145{
146 ALOGV("hal_1_2::HalPolicy::ConvertAdd()");
147 return ::ConvertAdd<hal_1_2::HalPolicy>(operation, model, data);
148}
149
Francis Murtagh19fa0cc2019-11-19 12:06:47 +0000150bool HalPolicy::ConvertArgMinMax(const V1_2::Operation& operation,
151 const V1_2::Model& model,
152 ConversionData& data,
153 armnn::ArgMinMaxFunction argMinMaxFunction)
154{
155 ALOGV("hal_1_2::HalPolicy::ConvertArgMinMax()");
156 return ::ConvertArgMinMax<hal_1_2::HalPolicy>(operation, model, data, argMinMaxFunction);
157}
158
Sadik Armagan15d63e22019-07-26 16:59:35 +0100159bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
160{
161 ALOGV("hal_1_2::HalPolicy::ConvertAveragePool2d()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100162 return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +0100163}
164
Finn Williams23b87b32019-07-30 11:44:05 +0100165bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
166{
167 ALOGV("hal_1_2::HalPolicy::ConvertBatchToSpaceNd()");
168 return ::ConvertBatchToSpaceNd<hal_1_2::HalPolicy>(operation, model, data);
169}
170
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +0000171bool HalPolicy::ConvertComparison(const Operation& operation,
172 const Model& model,
173 ConversionData& data,
174 ComparisonOperation comparisonOperation)
175{
176 ALOGV("hal_1_2::HalPolicy::ConvertComparison()");
Kevin May42477c12020-03-26 13:34:14 +0000177 return ::ConvertComparison_1_2<hal_1_2::HalPolicy>(operation, model, data, comparisonOperation);
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +0000178}
179
Mike Kellyb8805202019-07-31 17:25:43 +0100180bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
181{
182 ALOGV("hal_1_2::HalPolicy::ConvertConcatenation()");
183 return ::ConvertConcatenation<hal_1_2::HalPolicy>(operation, model, data);
184}
185
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100186bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
187{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100188 ALOGV("hal_1_2::HalPolicy::ConvertConv2d()");
Kevin May42477c12020-03-26 13:34:14 +0000189 return ::ConvertConv2d_1_2<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100190}
191
Aron Virginas-Tar8edb16d2019-10-01 13:34:59 +0100192bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
193{
194 ALOGV("hal_1_2::HalPolicy::ConvertDepthToSpace()");
195 return ::ConvertDepthToSpace<hal_1_2::HalPolicy>(operation, model, data);
196}
197
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100198bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
199{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100200 ALOGV("hal_1_2::HalPolicy::ConvertDepthwiseConv2d()");
Kevin May42477c12020-03-26 13:34:14 +0000201 return ::ConvertDepthwiseConv2d_1_2<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +0100202}
203
Mike Kelly46272802019-08-14 17:00:48 +0100204bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
205{
206 ALOGV("hal_1_2::HalPolicy::ConvertDequantize()");
Kevin May42477c12020-03-26 13:34:14 +0000207 return ::ConvertDequantize_1_2<hal_1_2::HalPolicy>(operation, model, data);
Mike Kelly46272802019-08-14 17:00:48 +0100208}
209
210bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
211{
212 ALOGV("hal_1_2::HalPolicy::ConvertDiv()");
213 return ::ConvertDiv<hal_1_2::HalPolicy>(operation, model, data);
214}
215
josh minor00a963b2020-01-08 11:55:35 -0600216bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
217 const Model& model,
218 ConversionData& data,
219 UnaryOperation unaryOperation)
220{
221 ALOGV("hal_1_2::HalPolicy::ConvertElementwiseUnary()");
Kevin May42477c12020-03-26 13:34:14 +0000222 return ::ConvertElementwiseUnary<hal_1_2::HalPolicy>(operation, model, data, unaryOperation);
josh minor00a963b2020-01-08 11:55:35 -0600223}
224
Narumol Prangnawarat85f96542019-09-12 16:26:29 +0100225bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
226{
227 ALOGV("hal_1_2::HalPolicy::ConvertExpandDims()");
Kevin May42477c12020-03-26 13:34:14 +0000228 return ::ConvertExpandDims<hal_1_2::HalPolicy>(operation, model, data);
Narumol Prangnawarat85f96542019-09-12 16:26:29 +0100229}
230
Mike Kelly46272802019-08-14 17:00:48 +0100231bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
232{
233 ALOGV("hal_1_2::HalPolicy::ConvertFloor()");
234 return ::ConvertFloor<hal_1_2::HalPolicy>(operation, model, data);
235}
236
237bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
238{
239 ALOGV("hal_1_2::HalPolicy::ConvertFullyConnected()");
240 return ::ConvertFullyConnected<hal_1_2::HalPolicy>(operation, model, data);
241}
242
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100243bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
244{
245 ALOGV("hal_1_2::HalPolicy::ConvertGroupedConv2d()");
Kevin May42477c12020-03-26 13:34:14 +0000246 return ::ConvertGroupedConv2d<hal_1_2::HalPolicy>(operation, model, data);
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100247}
248
Aron Virginas-Tara2a73802019-10-09 15:30:40 +0100249bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
250{
251 ALOGV("hal_1_2::HalPolicy::ConvertInstanceNormalization()");
Kevin May42477c12020-03-26 13:34:14 +0000252 return ::ConvertInstanceNormalization<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tara2a73802019-10-09 15:30:40 +0100253}
254
Mike Kelly46272802019-08-14 17:00:48 +0100255bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
256{
257 ALOGV("hal_1_2::HalPolicy::ConvertL2Normalization()");
258 return ::ConvertL2Normalization<hal_1_2::HalPolicy>(operation, model, data);
259}
260
Sadik Armagan15d63e22019-07-26 16:59:35 +0100261bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
262{
263 ALOGV("hal_1_2::HalPolicy::ConvertL2Pool2d()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100264 return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +0100265}
266
Mike Kelly46272802019-08-14 17:00:48 +0100267bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
268 const Model& model,
269 ConversionData& data)
270{
271 ALOGV("hal_1_2::HalPolicy::ConvertLocalResponseNormalization()");
272 return ::ConvertLocalResponseNormalization<hal_1_2::HalPolicy>(operation, model, data);
273}
274
275bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
276{
277 ALOGV("hal_1_2::HalPolicy::ConvertLogistic()");
278 return ::ConvertLogistic<hal_1_2::HalPolicy>(operation, model, data);
279}
280
Aron Virginas-Tar75e67792019-10-15 13:33:03 +0100281bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
282{
283 ALOGV("hal_1_2::HalPolicy::ConvertLogSoftmax()");
Kevin May42477c12020-03-26 13:34:14 +0000284 return ::ConvertLogSoftmax<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tar75e67792019-10-15 13:33:03 +0100285}
286
Sadik Armagan15d63e22019-07-26 16:59:35 +0100287bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
288{
289 ALOGV("hal_1_2::HalPolicy::ConvertMaxPool2d()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100290 return ConvertPooling2d<hal_1_2::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
Sadik Armagan15d63e22019-07-26 16:59:35 +0100291}
292
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +0100293bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
294{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100295 ALOGV("hal_1_2::HalPolicy::ConvertMaximum()");
Kevin May42477c12020-03-26 13:34:14 +0000296 return ::ConvertMaximum<hal_1_2::HalPolicy>(operation, model, data);
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +0100297}
298
Mike Kelly46272802019-08-14 17:00:48 +0100299bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
300{
301 ALOGV("hal_1_2::HalPolicy::ConvertMean()");
302 return ::ConvertMean<hal_1_2::HalPolicy>(operation, model, data);
303}
304
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +0100305bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
306{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100307 ALOGV("hal_1_2::HalPolicy::ConvertMinimum()");
Kevin May42477c12020-03-26 13:34:14 +0000308 return ::ConvertMinimum<hal_1_2::HalPolicy>(operation, model, data);
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +0100309}
310
Mike Kelly46272802019-08-14 17:00:48 +0100311bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
312{
313 ALOGV("hal_1_2::HalPolicy::ConvertMul()");
314 return ::ConvertMul<hal_1_2::HalPolicy>(operation, model, data);
315}
316
Aron Virginas-Tarc921f6b2019-07-25 10:14:33 +0100317bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
318{
319 ALOGV("hal_1_2::HalPolicy::ConvertPad()");
320 return ::ConvertPad<hal_1_2::HalPolicy>(operation, model, data);
321}
322
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +0100323bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
324{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100325 ALOGV("hal_1_2::HalPolicy::ConvertPadV2()");
Kevin May42477c12020-03-26 13:34:14 +0000326 return ::ConvertPadV2<hal_1_2::HalPolicy>(operation, model, data);
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +0100327}
328
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100329bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
330{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100331 ALOGV("hal_1_2::HalPolicy::ConvertPrelu()");
Kevin May42477c12020-03-26 13:34:14 +0000332 return ::ConvertPrelu<hal_1_2::HalPolicy>(operation, model, data);
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100333}
334
Sadik Armagan5a476a82019-07-30 09:43:18 +0100335bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
336{
337 ALOGV("hal_1_2::HalPolicy::ConvertQuantize()");
Kevin May42477c12020-03-26 13:34:14 +0000338 return ::ConvertQuantize<hal_1_2::HalPolicy>(operation, model, data);
Sadik Armagan5a476a82019-07-30 09:43:18 +0100339}
340
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100341bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
342{
343 ALOGV("hal_1_2::HalPolicy::ConvertQuantizedLstm()");
Kevin May42477c12020-03-26 13:34:14 +0000344 return ::ConvertQuantizedLstm<hal_1_2::HalPolicy>(operation, model, data);
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100345}
346
Sadik Armagan61113162019-07-25 09:09:40 +0100347bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
348{
349 ALOGV("hal_1_2::HalPolicy::ConvertReLu()");
350 return ::ConvertReLu<hal_1_2::HalPolicy>(operation, model, data);
351}
352
353bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
354{
355 ALOGV("hal_1_2::HalPolicy::ConvertReLu1()");
356 return ::ConvertReLu1<hal_1_2::HalPolicy>(operation, model, data);
357}
358
359bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
360{
361 ALOGV("hal_1_2::HalPolicy::ConvertReLu6()");
362 return ::ConvertReLu6<hal_1_2::HalPolicy>(operation, model, data);
363}
364
Mike Kelly46272802019-08-14 17:00:48 +0100365bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
366{
367 ALOGV("hal_1_2::HalPolicy::ConvertReshape()");
368 return ::ConvertReshape<hal_1_2::HalPolicy>(operation, model, data);
369}
370
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +0100371bool HalPolicy::ConvertResize(const Operation& operation,
372 const Model& model,
373 ConversionData& data,
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100374 ResizeMethod resizeMethod)
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +0100375{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100376 ALOGV("hal_1_2::HalPolicy::ConvertResize()");
Kevin May42477c12020-03-26 13:34:14 +0000377 return ::ConvertResize<hal_1_2::HalPolicy>(operation, model, data, resizeMethod);
Aron Virginas-Tar7a6d11b2019-07-03 15:27:08 +0100378}
379
Finn Williamsd74c5052019-07-30 17:06:00 +0100380bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
381{
382 ALOGV("hal_1_2::HalPolicy::ConvertSpaceToBatchNd()");
383 return ::ConvertSpaceToBatchNd<hal_1_2::HalPolicy>(operation, model, data);
384}
385
Keith Davisa6bc52f2019-06-26 09:39:49 +0100386bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
387{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100388 ALOGV("hal_1_2::HalPolicy::ConvertSpaceToDepth()");
Kevin May42477c12020-03-26 13:34:14 +0000389 return ::ConvertSpaceToDepth<hal_1_2::HalPolicy>(operation, model, data);
Keith Davisa6bc52f2019-06-26 09:39:49 +0100390}
391
Francis Murtagh074c25a2019-07-22 16:40:57 +0100392bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
393{
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +0100394 ALOGV("hal_1_2::HalPolicy::ConvertSoftmax()");
Kevin May42477c12020-03-26 13:34:14 +0000395 return ::ConvertSoftmax<hal_1_2::HalPolicy>(operation, model, data);
Francis Murtagh074c25a2019-07-22 16:40:57 +0100396}
397
Mike Kelly0a879362019-07-29 16:56:31 +0100398bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
399{
400 ALOGV("hal_1_2::HalPolicy::ConvertSub()");
401 return ::ConvertSub<hal_1_2::HalPolicy>(operation, model, data);
402}
403
Sadik Armagan61113162019-07-25 09:09:40 +0100404bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
405{
406 ALOGV("hal_1_2::HalPolicy::ConvertTanH()");
407 return ::ConvertTanH<hal_1_2::HalPolicy>(operation, model, data);
408}
409
Ferran Balaguerb2397fd2019-07-25 12:12:39 +0100410bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
411{
Pablo Tellofb45e2f2019-10-18 16:51:57 +0100412 ALOGV("hal_1_2::HalPolicy::ConvertLstm()");
Kevin May42477c12020-03-26 13:34:14 +0000413 return ::ConvertLstm<hal_1_2::HalPolicy>(operation, model, data);
Ferran Balaguerb2397fd2019-07-25 12:12:39 +0100414}
415
Sadik Armagan701d9a02019-09-04 15:16:18 +0100416bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
417{
418 ALOGV("hal_1_2::HalPolicy::ConvertSqrt()");
Teresa Charlin8f6429d2019-10-01 13:10:15 +0100419 ActivationDescriptor desc;
420 desc.m_Function = ActivationFunction::Sqrt;
Sadik Armagan701d9a02019-09-04 15:16:18 +0100421
422 return ::ConvertToActivation<hal_1_2::HalPolicy>(operation, __func__, desc, model, data);
423}
424
Mike Kelly46272802019-08-14 17:00:48 +0100425bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
426{
Sadik Armagan701d9a02019-09-04 15:16:18 +0100427 ALOGV("hal_1_2::HalPolicy::ConvertSqueeze()");
Mike Kelly46272802019-08-14 17:00:48 +0100428 return ::ConvertSqueeze<hal_1_2::HalPolicy>(operation, model, data);
429}
430
431bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
432{
Sadik Armagan701d9a02019-09-04 15:16:18 +0100433 ALOGV("hal_1_2::HalPolicy::ConvertStridedSlice()");
Mike Kelly46272802019-08-14 17:00:48 +0100434 return ::ConvertStridedSlice<hal_1_2::HalPolicy>(operation, model, data);
435}
436
437bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
438{
Sadik Armagan701d9a02019-09-04 15:16:18 +0100439 ALOGV("hal_1_2::HalPolicy::ConvertTranspose()");
Mike Kelly46272802019-08-14 17:00:48 +0100440 return ::ConvertTranspose<hal_1_2::HalPolicy>(operation, model, data);
441}
442
Aron Virginas-Tar8b991682019-07-31 12:54:59 +0100443bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
David Monahan613b49c2019-06-27 11:37:47 +0100444{
Kevin May42477c12020-03-26 13:34:14 +0000445 ALOGV("hal_1_2::HalPolicy::ConvertTransposeConv2d()");
446 return ::ConvertTransposeConv2d<hal_1_2::HalPolicy>(operation, model, data);
David Monahan613b49c2019-06-27 11:37:47 +0100447}
448
Mike Kellyb5fdf382019-06-11 16:35:25 +0100449} // namespace hal_1_2
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100450} // namespace armnn_driver