blob: 79df1c7f5830ef44fbdd9ec601f374886f050706 [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#include "HalPolicy.hpp"
7
8namespace armnn_driver
9{
10namespace hal_1_3
11{
12
13using namespace armnn;
14
15namespace
16{
17
18} // anonymouse namespace
19
20bool HalPolicy::ConvertOperation(const Operation& operation, const Model& model, ConversionData& data)
21{
22 switch (operation.type)
23 {
24 case V1_3::OperationType::ABS:
25 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Abs);
26 case V1_3::OperationType::ADD:
27 return ConvertAdd(operation, model, data);
28 case V1_3::OperationType::ARGMAX:
29 return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Max);
30 case V1_3::OperationType::ARGMIN:
31 return ConvertArgMinMax(operation, model, data, ArgMinMaxFunction::Min);
32 case V1_3::OperationType::AVERAGE_POOL_2D:
33 return ConvertAveragePool2d(operation, model, data);
34 case V1_3::OperationType::BATCH_TO_SPACE_ND:
35 return ConvertBatchToSpaceNd(operation, model, data);
36 case V1_3::OperationType::CONCATENATION:
37 return ConvertConcatenation(operation, model, data);
38 case V1_3::OperationType::CONV_2D:
39 return ConvertConv2d(operation, model, data);
40 case V1_3::OperationType::DEPTH_TO_SPACE:
41 return ConvertDepthToSpace(operation, model, data);
42 case V1_3::OperationType::DEPTHWISE_CONV_2D:
43 return ConvertDepthwiseConv2d(operation, model, data);
44 case V1_3::OperationType::DEQUANTIZE:
45 return ConvertDequantize(operation, model, data);
46 case V1_3::OperationType::DIV:
47 return ConvertDiv(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010048 case V1_3::OperationType::ELU:
49 return ConvertElu(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000050 case V1_3::OperationType::EQUAL:
51 return ConvertComparison(operation, model, data, ComparisonOperation::Equal);
52 case V1_3::OperationType::EXPAND_DIMS:
53 return ConvertExpandDims(operation, model, data);
Sadik Armagan2e329612020-06-24 10:57:23 +010054 case V1_3::OperationType::FILL:
55 return ConvertFill(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000056 case V1_3::OperationType::FLOOR:
57 return ConvertFloor(operation, model, data);
58 case V1_3::OperationType::FULLY_CONNECTED:
59 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010060 case V1_3::OperationType::GATHER:
61 return ConvertGather(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000062 case V1_3::OperationType::GREATER:
63 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
64 case V1_3::OperationType::GREATER_EQUAL:
65 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
66 case V1_3::OperationType::GROUPED_CONV_2D:
67 return ConvertGroupedConv2d(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010068 case V1_3::OperationType::HARD_SWISH:
69 return ConvertHardSwish(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000070 case V1_3::OperationType::INSTANCE_NORMALIZATION:
71 return ConvertInstanceNormalization(operation, model, data);
72 case V1_3::OperationType::L2_NORMALIZATION:
73 return ConvertL2Normalization(operation, model, data);
74 case V1_3::OperationType::L2_POOL_2D:
75 return ConvertL2Pool2d(operation, model, data);
76 case V1_3::OperationType::LESS:
77 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
78 case V1_3::OperationType::LESS_EQUAL:
79 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
80 case V1_3::OperationType::LOCAL_RESPONSE_NORMALIZATION:
81 return ConvertLocalResponseNormalization(operation, model, data);
82 case V1_3::OperationType::LOGISTIC:
83 return ConvertLogistic(operation, model, data);
84 case V1_3::OperationType::LOG_SOFTMAX:
85 return ConvertLogSoftmax(operation, model, data);
86 case V1_3::OperationType::LSTM:
87 return ConvertLstm(operation, model, data);
88 case V1_3::OperationType::MAX_POOL_2D:
89 return ConvertMaxPool2d(operation, model, data);
90 case V1_3::OperationType::MAXIMUM:
91 return ConvertMaximum(operation, model, data);
92 case V1_3::OperationType::MEAN:
93 return ConvertMean(operation, model, data);
94 case V1_3::OperationType::MINIMUM:
95 return ConvertMinimum(operation, model, data);
96 case V1_3::OperationType::MUL:
97 return ConvertMul(operation, model, data);
98 case V1_3::OperationType::NEG:
99 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
100 case V1_3::OperationType::NOT_EQUAL:
101 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
102 case V1_3::OperationType::PAD:
103 return ConvertPad(operation, model, data);
104 case V1_3::OperationType::PAD_V2:
105 return ConvertPadV2(operation, model, data);
106 case V1_3::OperationType::PRELU:
107 return ConvertPrelu(operation, model, data);
108 case V1_3::OperationType::QUANTIZE:
109 return ConvertQuantize(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100110 case V1_3::OperationType::QUANTIZED_LSTM:
Kevin May42477c12020-03-26 13:34:14 +0000111 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100112 case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
113 return ConvertQuantized16BitLstm(operation, model, data);
Finn Williamsfc884b42020-06-11 17:35:44 +0100114 case V1_3::OperationType::RANK:
115 return ConvertRank(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000116 case V1_3::OperationType::RELU:
117 return ConvertReLu(operation, model, data);
118 case V1_3::OperationType::RELU1:
119 return ConvertReLu1(operation, model, data);
120 case V1_3::OperationType::RELU6:
121 return ConvertReLu6(operation, model, data);
122 case V1_3::OperationType::RESHAPE:
123 return ConvertReshape(operation, model, data);
124 case V1_3::OperationType::RESIZE_BILINEAR:
125 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
126 case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
127 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
128 case V1_3::OperationType::RSQRT:
129 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
130 case V1_3::OperationType::SQRT:
131 return ConvertSqrt(operation, model, data);
132 case V1_3::OperationType::SQUEEZE:
133 return ConvertSqueeze(operation, model, data);
134 case V1_3::OperationType::STRIDED_SLICE:
135 return ConvertStridedSlice(operation, model, data);
136 case V1_3::OperationType::TRANSPOSE:
137 return ConvertTranspose(operation, model, data);
138 case V1_3::OperationType::TRANSPOSE_CONV_2D:
139 return ConvertTransposeConv2d(operation, model, data);
140 case V1_3::OperationType::SOFTMAX:
141 return ConvertSoftmax(operation, model, data);
142 case V1_3::OperationType::SPACE_TO_BATCH_ND :
143 return ConvertSpaceToBatchNd(operation, model, data);
144 case V1_3::OperationType::SPACE_TO_DEPTH:
145 return ConvertSpaceToDepth(operation, model, data);
146 case V1_3::OperationType::SUB:
147 return ConvertSub(operation, model, data);
148 case V1_3::OperationType::TANH:
149 return ConvertTanH(operation, model, data);
150 default:
151 return Fail("%s: Operation type %s not supported in ArmnnDriver",
152 __func__, toString(operation.type).c_str());
153 }
154}
155
156bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
157{
158 ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
159 return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
160}
161
162bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
163 const V1_3::Model& model,
164 ConversionData& data,
165 armnn::ArgMinMaxFunction argMinMaxFunction)
166{
167 ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
168 return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
169}
170
171bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
172{
173 ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
174 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
175}
176
177bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
178{
179 ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
180 return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
181}
182
183bool HalPolicy::ConvertComparison(const Operation& operation,
184 const Model& model,
185 ConversionData& data,
186 ComparisonOperation comparisonOperation)
187{
188 ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
189 return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
190}
191
192
193bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
194{
195 ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
196 return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
197}
198
199bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
200{
201 ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
202 return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
203}
204
205bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
206{
207 ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
208 return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
209}
210
211bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
212{
213 ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
214 return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
215}
216
217bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
218{
219 ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
220 return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
221}
222
223bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
224{
225 ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
226 return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
227}
228
229bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
230 const Model& model,
231 ConversionData& data,
232 UnaryOperation unaryOperation)
233{
234 ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
235 return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
236}
237
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100238bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
239{
240 ALOGV("hal_1_3::HalPolicy::ConvertElu()");
Sadik Armagan1153d1e2020-04-01 15:09:39 +0100241 return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100242}
243
Kevin May42477c12020-03-26 13:34:14 +0000244bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
245{
246 ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
247 return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
248}
249
Sadik Armagan2e329612020-06-24 10:57:23 +0100250bool HalPolicy::ConvertFill(const Operation& operation, const Model& model, ConversionData& data)
251{
252 ALOGV("hal_1_3::HalPolicy::ConvertFill()");
253 return ::ConvertFill<hal_1_3::HalPolicy>(operation, model, data);
254}
255
Kevin May42477c12020-03-26 13:34:14 +0000256bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
257{
258 ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
259 return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
260}
261
262bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
263{
264 ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
265 return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
266}
267
Teresa Charlinf931af92020-04-10 16:46:53 +0100268bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
269{
270 ALOGV("hal_1_3::HalPolicy::ConvertGather()");
271 return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
272}
273
Kevin May42477c12020-03-26 13:34:14 +0000274bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
275{
276 ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
277 return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
278}
279
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100280bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
281{
282 ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
283 ActivationDescriptor desc;
284 desc.m_Function = ActivationFunction::HardSwish;
285
286 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
287}
288
Kevin May42477c12020-03-26 13:34:14 +0000289bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
290{
291 ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
292 return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
293}
294
295bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
296{
297 ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
298 return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
299}
300
301bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
302{
303 ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
304 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
305}
306
307bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
308 const Model& model,
309 ConversionData& data)
310{
311 ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
312 return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
313}
314
315bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
316{
317 ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
318 return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
319}
320
321bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
322{
323 ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
324 return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
325}
326
327bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
328{
329 ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
330 return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
331}
332
333bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
334{
335 ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
336 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
337}
338
339bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
340{
341 ALOGV("hal_1_3::HalPolicy::ConvertConvertMaximumMaximum()");
342 return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
343}
344
345bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
346{
347 ALOGV("hal_1_3::HalPolicy::ConvertMean()");
348 return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
349}
350
351bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
352{
353 ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
354 return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
355}
356
357bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
358{
359 ALOGV("hal_1_3::HalPolicy::ConvertMul()");
360 return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
361}
362
363bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
364{
365 ALOGV("hal_1_3::HalPolicy::ConvertPad()");
366 return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
367}
368
369bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
370{
371 ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
372 return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
373}
374
375bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
376{
377 ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
378 return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
379}
380
381bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
382{
383 ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
384 return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
385}
386
387bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
388{
389 ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
390 return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
391}
392
Sadik Armagan813f2302020-05-19 14:10:30 +0100393bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
394{
395 ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
396 return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
397}
398
Finn Williamsfc884b42020-06-11 17:35:44 +0100399bool HalPolicy::ConvertRank(const Operation& operation, const Model& model, ConversionData& data)
400{
401 ALOGV("hal_1_3::HalPolicy::ConvertRank()");
402 return ::ConvertRank<hal_1_3::HalPolicy>(operation, model, data);
403}
404
Kevin May42477c12020-03-26 13:34:14 +0000405bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
406{
407 ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
408 return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
409}
410
411bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
412{
413 ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
414 return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
415}
416
417bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
418{
419 ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
420 return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
421}
422
423bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
424{
425 ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
426 return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
427}
428
429bool HalPolicy::ConvertResize(const Operation& operation,
430 const Model& model,
431 ConversionData& data,
432 ResizeMethod resizeMethod)
433{
434 ALOGV("hal_1_3::HalPolicy::ConvertResize()");
435 return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
436}
437
438bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
439{
440 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
441 return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
442}
443
444bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
445{
446 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
447 return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
448}
449
450bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
451{
452 ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
453 return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
454}
455
456bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
457{
458 ALOGV("hal_1_3::HalPolicy::ConvertSub()");
459 return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
460}
461
462bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
463{
464 ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
465 return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
466}
467
468bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
469{
470 ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
471 return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
472}
473
474bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
475{
476 ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
477 ActivationDescriptor desc;
478 desc.m_Function = ActivationFunction::Sqrt;
479
480 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
481}
482
483bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
484{
485 ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
486 return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
487}
488
489bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
490{
491 ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
492 return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
493}
494
495bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
496{
497 ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
498 return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
499}
500
501} // namespace hal_1_3
502} // namespace armnn_driver