blob: 707ef7266d1d3548487b01bb2b78022b3cb6bdba [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);
54 case V1_3::OperationType::FLOOR:
55 return ConvertFloor(operation, model, data);
56 case V1_3::OperationType::FULLY_CONNECTED:
57 return ConvertFullyConnected(operation, model, data);
Teresa Charlinf931af92020-04-10 16:46:53 +010058 case V1_3::OperationType::GATHER:
59 return ConvertGather(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000060 case V1_3::OperationType::GREATER:
61 return ConvertComparison(operation, model, data, ComparisonOperation::Greater);
62 case V1_3::OperationType::GREATER_EQUAL:
63 return ConvertComparison(operation, model, data, ComparisonOperation::GreaterOrEqual);
64 case V1_3::OperationType::GROUPED_CONV_2D:
65 return ConvertGroupedConv2d(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +010066 case V1_3::OperationType::HARD_SWISH:
67 return ConvertHardSwish(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +000068 case V1_3::OperationType::INSTANCE_NORMALIZATION:
69 return ConvertInstanceNormalization(operation, model, data);
70 case V1_3::OperationType::L2_NORMALIZATION:
71 return ConvertL2Normalization(operation, model, data);
72 case V1_3::OperationType::L2_POOL_2D:
73 return ConvertL2Pool2d(operation, model, data);
74 case V1_3::OperationType::LESS:
75 return ConvertComparison(operation, model, data, ComparisonOperation::Less);
76 case V1_3::OperationType::LESS_EQUAL:
77 return ConvertComparison(operation, model, data, ComparisonOperation::LessOrEqual);
78 case V1_3::OperationType::LOCAL_RESPONSE_NORMALIZATION:
79 return ConvertLocalResponseNormalization(operation, model, data);
80 case V1_3::OperationType::LOGISTIC:
81 return ConvertLogistic(operation, model, data);
82 case V1_3::OperationType::LOG_SOFTMAX:
83 return ConvertLogSoftmax(operation, model, data);
84 case V1_3::OperationType::LSTM:
85 return ConvertLstm(operation, model, data);
86 case V1_3::OperationType::MAX_POOL_2D:
87 return ConvertMaxPool2d(operation, model, data);
88 case V1_3::OperationType::MAXIMUM:
89 return ConvertMaximum(operation, model, data);
90 case V1_3::OperationType::MEAN:
91 return ConvertMean(operation, model, data);
92 case V1_3::OperationType::MINIMUM:
93 return ConvertMinimum(operation, model, data);
94 case V1_3::OperationType::MUL:
95 return ConvertMul(operation, model, data);
96 case V1_3::OperationType::NEG:
97 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Neg);
98 case V1_3::OperationType::NOT_EQUAL:
99 return ConvertComparison(operation, model, data, ComparisonOperation::NotEqual);
100 case V1_3::OperationType::PAD:
101 return ConvertPad(operation, model, data);
102 case V1_3::OperationType::PAD_V2:
103 return ConvertPadV2(operation, model, data);
104 case V1_3::OperationType::PRELU:
105 return ConvertPrelu(operation, model, data);
106 case V1_3::OperationType::QUANTIZE:
107 return ConvertQuantize(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100108 case V1_3::OperationType::QUANTIZED_LSTM:
Kevin May42477c12020-03-26 13:34:14 +0000109 return ConvertQuantizedLstm(operation, model, data);
Sadik Armagan813f2302020-05-19 14:10:30 +0100110 case V1_3::OperationType::QUANTIZED_16BIT_LSTM:
111 return ConvertQuantized16BitLstm(operation, model, data);
Kevin May42477c12020-03-26 13:34:14 +0000112 case V1_3::OperationType::RELU:
113 return ConvertReLu(operation, model, data);
114 case V1_3::OperationType::RELU1:
115 return ConvertReLu1(operation, model, data);
116 case V1_3::OperationType::RELU6:
117 return ConvertReLu6(operation, model, data);
118 case V1_3::OperationType::RESHAPE:
119 return ConvertReshape(operation, model, data);
120 case V1_3::OperationType::RESIZE_BILINEAR:
121 return ConvertResize(operation, model, data, ResizeMethod::Bilinear);
122 case V1_3::OperationType::RESIZE_NEAREST_NEIGHBOR:
123 return ConvertResize(operation, model, data, ResizeMethod::NearestNeighbor);
124 case V1_3::OperationType::RSQRT:
125 return ConvertElementwiseUnary(operation, model, data, UnaryOperation::Rsqrt);
126 case V1_3::OperationType::SQRT:
127 return ConvertSqrt(operation, model, data);
128 case V1_3::OperationType::SQUEEZE:
129 return ConvertSqueeze(operation, model, data);
130 case V1_3::OperationType::STRIDED_SLICE:
131 return ConvertStridedSlice(operation, model, data);
132 case V1_3::OperationType::TRANSPOSE:
133 return ConvertTranspose(operation, model, data);
134 case V1_3::OperationType::TRANSPOSE_CONV_2D:
135 return ConvertTransposeConv2d(operation, model, data);
136 case V1_3::OperationType::SOFTMAX:
137 return ConvertSoftmax(operation, model, data);
138 case V1_3::OperationType::SPACE_TO_BATCH_ND :
139 return ConvertSpaceToBatchNd(operation, model, data);
140 case V1_3::OperationType::SPACE_TO_DEPTH:
141 return ConvertSpaceToDepth(operation, model, data);
142 case V1_3::OperationType::SUB:
143 return ConvertSub(operation, model, data);
144 case V1_3::OperationType::TANH:
145 return ConvertTanH(operation, model, data);
146 default:
147 return Fail("%s: Operation type %s not supported in ArmnnDriver",
148 __func__, toString(operation.type).c_str());
149 }
150}
151
152bool HalPolicy::ConvertAdd(const Operation& operation, const Model& model, ConversionData& data)
153{
154 ALOGV("hal_1_3::HalPolicy::ConvertAdd()");
155 return ::ConvertAdd<hal_1_3::HalPolicy>(operation, model, data);
156}
157
158bool HalPolicy::ConvertArgMinMax(const V1_3::Operation& operation,
159 const V1_3::Model& model,
160 ConversionData& data,
161 armnn::ArgMinMaxFunction argMinMaxFunction)
162{
163 ALOGV("hal_1_3::HalPolicy::ConvertArgMinMax()");
164 return ::ConvertArgMinMax<hal_1_3::HalPolicy>(operation, model, data, argMinMaxFunction);
165}
166
167bool HalPolicy::ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data)
168{
169 ALOGV("hal_1_3::HalPolicy::ConvertAveragePool2d()");
170 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Average, model, data);
171}
172
173bool HalPolicy::ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data)
174{
175 ALOGV("hal_1_3::HalPolicy::ConvertBatchToSpaceNd()");
176 return ::ConvertBatchToSpaceNd<hal_1_3::HalPolicy>(operation, model, data);
177}
178
179bool HalPolicy::ConvertComparison(const Operation& operation,
180 const Model& model,
181 ConversionData& data,
182 ComparisonOperation comparisonOperation)
183{
184 ALOGV("hal_1_3::HalPolicy::ConvertComparison()");
185 return ::ConvertComparison_1_2<hal_1_3::HalPolicy>(operation, model, data, comparisonOperation);
186}
187
188
189bool HalPolicy::ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data)
190{
191 ALOGV("hal_1_3::HalPolicy::ConvertConcatenation()");
192 return ::ConvertConcatenation<hal_1_3::HalPolicy>(operation, model, data);
193}
194
195bool HalPolicy::ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data)
196{
197 ALOGV("hal_1_3::HalPolicy::ConvertConv2d()");
198 return ::ConvertConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
199}
200
201bool HalPolicy::ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data)
202{
203 ALOGV("hal_1_3::HalPolicy::ConvertDepthToSpace()");
204 return ::ConvertDepthToSpace<hal_1_3::HalPolicy>(operation, model, data);
205}
206
207bool HalPolicy::ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data)
208{
209 ALOGV("hal_1_3::HalPolicy::ConvertDepthwiseConv2d()");
210 return ::ConvertDepthwiseConv2d_1_2<hal_1_3::HalPolicy>(operation, model, data);
211}
212
213bool HalPolicy::ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data)
214{
215 ALOGV("hal_1_3::HalPolicy::ConvertDequantize()");
216 return ::ConvertDequantize_1_2<hal_1_3::HalPolicy>(operation, model, data);
217}
218
219bool HalPolicy::ConvertDiv(const Operation& operation, const Model& model, ConversionData& data)
220{
221 ALOGV("hal_1_3::HalPolicy::ConvertDiv()");
222 return ::ConvertDiv<hal_1_3::HalPolicy>(operation, model, data);
223}
224
225bool HalPolicy::ConvertElementwiseUnary(const Operation& operation,
226 const Model& model,
227 ConversionData& data,
228 UnaryOperation unaryOperation)
229{
230 ALOGV("hal_1_3::HalPolicy::ConvertElementwiseUnary()");
231 return ::ConvertElementwiseUnary<hal_1_3::HalPolicy>(operation, model, data, unaryOperation);
232}
233
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100234bool HalPolicy::ConvertElu(const Operation& operation, const Model& model, ConversionData& data)
235{
236 ALOGV("hal_1_3::HalPolicy::ConvertElu()");
Sadik Armagan1153d1e2020-04-01 15:09:39 +0100237 return ::ConvertElu<hal_1_3::HalPolicy>(operation, model, data);
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100238}
239
Kevin May42477c12020-03-26 13:34:14 +0000240bool HalPolicy::ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data)
241{
242 ALOGV("hal_1_3::HalPolicy::ConvertExpandDims()");
243 return ::ConvertExpandDims<hal_1_3::HalPolicy>(operation, model, data);
244}
245
246bool HalPolicy::ConvertFloor(const Operation& operation, const Model& model, ConversionData& data)
247{
248 ALOGV("hal_1_3::HalPolicy::ConvertFloor()");
249 return ::ConvertFloor<hal_1_3::HalPolicy>(operation, model, data);
250}
251
252bool HalPolicy::ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data)
253{
254 ALOGV("hal_1_3::HalPolicy::ConvertFullyConnected()");
255 return ::ConvertFullyConnected<hal_1_3::HalPolicy>(operation, model, data);
256}
257
Teresa Charlinf931af92020-04-10 16:46:53 +0100258bool HalPolicy::ConvertGather(const Operation& operation, const Model& model, ConversionData& data)
259{
260 ALOGV("hal_1_3::HalPolicy::ConvertGather()");
261 return ::ConvertGather<hal_1_3::HalPolicy>(operation, model, data);
262}
263
Kevin May42477c12020-03-26 13:34:14 +0000264bool HalPolicy::ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data)
265{
266 ALOGV("hal_1_3::HalPolicy::ConvertGroupedConv2d()");
267 return ::ConvertGroupedConv2d<hal_1_3::HalPolicy>(operation, model, data);
268}
269
Sadik Armagan51ba2c62020-03-31 15:36:25 +0100270bool HalPolicy::ConvertHardSwish(const Operation& operation, const Model& model, ConversionData& data)
271{
272 ALOGV("hal_1_3::HalPolicy::ConvertHardSwish()");
273 ActivationDescriptor desc;
274 desc.m_Function = ActivationFunction::HardSwish;
275
276 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
277}
278
Kevin May42477c12020-03-26 13:34:14 +0000279bool HalPolicy::ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data)
280{
281 ALOGV("hal_1_3::HalPolicy::ConvertInstanceNormalization()");
282 return ::ConvertInstanceNormalization<hal_1_3::HalPolicy>(operation, model, data);
283}
284
285bool HalPolicy::ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data)
286{
287 ALOGV("hal_1_3::HalPolicy::ConvertL2Normalization()");
288 return ::ConvertL2Normalization<hal_1_3::HalPolicy>(operation, model, data);
289}
290
291bool HalPolicy::ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data)
292{
293 ALOGV("hal_1_3::HalPolicy::ConvertL2Pool2d()");
294 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::L2, model, data);
295}
296
297bool HalPolicy::ConvertLocalResponseNormalization(const Operation& operation,
298 const Model& model,
299 ConversionData& data)
300{
301 ALOGV("hal_1_3::HalPolicy::ConvertLocalResponseNormalization()");
302 return ::ConvertLocalResponseNormalization<hal_1_3::HalPolicy>(operation, model, data);
303}
304
305bool HalPolicy::ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data)
306{
307 ALOGV("hal_1_3::HalPolicy::ConvertLogistic()");
308 return ::ConvertLogistic<hal_1_3::HalPolicy>(operation, model, data);
309}
310
311bool HalPolicy::ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data)
312{
313 ALOGV("hal_1_3::HalPolicy::ConvertLogSoftmax()");
314 return ::ConvertLogSoftmax<hal_1_3::HalPolicy>(operation, model, data);
315}
316
317bool HalPolicy::ConvertLstm(const Operation& operation, const Model& model, ConversionData& data)
318{
319 ALOGV("hal_1_3::HalPolicy::ConvertLstm()");
320 return ::ConvertLstm<hal_1_3::HalPolicy>(operation, model, data);
321}
322
323bool HalPolicy::ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data)
324{
325 ALOGV("hal_1_3::HalPolicy::ConvertMaxPool2d()");
326 return ConvertPooling2d<hal_1_3::HalPolicy>(operation, __func__, PoolingAlgorithm::Max, model, data);
327}
328
329bool HalPolicy::ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data)
330{
331 ALOGV("hal_1_3::HalPolicy::ConvertConvertMaximumMaximum()");
332 return ::ConvertMaximum<hal_1_3::HalPolicy>(operation, model, data);
333}
334
335bool HalPolicy::ConvertMean(const Operation& operation, const Model& model, ConversionData& data)
336{
337 ALOGV("hal_1_3::HalPolicy::ConvertMean()");
338 return ::ConvertMean<hal_1_3::HalPolicy>(operation, model, data);
339}
340
341bool HalPolicy::ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data)
342{
343 ALOGV("hal_1_3::HalPolicy::ConvertMinimum()");
344 return ::ConvertMinimum<hal_1_3::HalPolicy>(operation, model, data);
345}
346
347bool HalPolicy::ConvertMul(const Operation& operation, const Model& model, ConversionData& data)
348{
349 ALOGV("hal_1_3::HalPolicy::ConvertMul()");
350 return ::ConvertMul<hal_1_3::HalPolicy>(operation, model, data);
351}
352
353bool HalPolicy::ConvertPad(const Operation& operation, const Model& model, ConversionData& data)
354{
355 ALOGV("hal_1_3::HalPolicy::ConvertPad()");
356 return ::ConvertPad<hal_1_3::HalPolicy>(operation, model, data);
357}
358
359bool HalPolicy::ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data)
360{
361 ALOGV("hal_1_3::HalPolicy::ConvertPadV2()");
362 return ::ConvertPadV2<hal_1_3::HalPolicy>(operation, model, data);
363}
364
365bool HalPolicy::ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data)
366{
367 ALOGV("hal_1_3::HalPolicy::ConvertPrelu()");
368 return ::ConvertPrelu<hal_1_3::HalPolicy>(operation, model, data);
369}
370
371bool HalPolicy::ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data)
372{
373 ALOGV("hal_1_3::HalPolicy::ConvertQuantize()");
374 return ::ConvertQuantize<hal_1_3::HalPolicy>(operation, model, data);
375}
376
377bool HalPolicy::ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data)
378{
379 ALOGV("hal_1_3::HalPolicy::ConvertQuantizedLstm()");
380 return ::ConvertQuantizedLstm<hal_1_3::HalPolicy>(operation, model, data);
381}
382
Sadik Armagan813f2302020-05-19 14:10:30 +0100383bool HalPolicy::ConvertQuantized16BitLstm(const Operation& operation, const Model& model, ConversionData& data)
384{
385 ALOGV("hal_1_3::HalPolicy::ConvertQuantized16BitLstm()");
386 return ::ConvertQuantized16BitLstm<hal_1_3::HalPolicy>(operation, model, data);
387}
388
Kevin May42477c12020-03-26 13:34:14 +0000389bool HalPolicy::ConvertReLu(const Operation& operation, const Model& model, ConversionData& data)
390{
391 ALOGV("hal_1_3::HalPolicy::ConvertReLu()");
392 return ::ConvertReLu<hal_1_3::HalPolicy>(operation, model, data);
393}
394
395bool HalPolicy::ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data)
396{
397 ALOGV("hal_1_3::HalPolicy::ConvertReLu1()");
398 return ::ConvertReLu1<hal_1_3::HalPolicy>(operation, model, data);
399}
400
401bool HalPolicy::ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data)
402{
403 ALOGV("hal_1_3::HalPolicy::ConvertReLu6()");
404 return ::ConvertReLu6<hal_1_3::HalPolicy>(operation, model, data);
405}
406
407bool HalPolicy::ConvertReshape(const Operation& operation, const Model& model, ConversionData& data)
408{
409 ALOGV("hal_1_3::HalPolicy::ConvertReshape()");
410 return ::ConvertReshape<hal_1_3::HalPolicy>(operation, model, data);
411}
412
413bool HalPolicy::ConvertResize(const Operation& operation,
414 const Model& model,
415 ConversionData& data,
416 ResizeMethod resizeMethod)
417{
418 ALOGV("hal_1_3::HalPolicy::ConvertResize()");
419 return ::ConvertResize<hal_1_3::HalPolicy>(operation, model, data, resizeMethod);
420}
421
422bool HalPolicy::ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data)
423{
424 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToBatchNd()");
425 return ::ConvertSpaceToBatchNd<hal_1_3::HalPolicy>(operation, model, data);
426}
427
428bool HalPolicy::ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data)
429{
430 ALOGV("hal_1_3::HalPolicy::ConvertSpaceToDepth()");
431 return ::ConvertSpaceToDepth<hal_1_3::HalPolicy>(operation, model, data);
432}
433
434bool HalPolicy::ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data)
435{
436 ALOGV("hal_1_3::HalPolicy::ConvertSoftmax()");
437 return ::ConvertSoftmax<hal_1_3::HalPolicy>(operation, model, data);
438}
439
440bool HalPolicy::ConvertSub(const Operation& operation, const Model& model, ConversionData& data)
441{
442 ALOGV("hal_1_3::HalPolicy::ConvertSub()");
443 return ::ConvertSub<hal_1_3::HalPolicy>(operation, model, data);
444}
445
446bool HalPolicy::ConvertTanH(const Operation& operation, const Model& model, ConversionData& data)
447{
448 ALOGV("hal_1_3::HalPolicy::ConvertTanH()");
449 return ::ConvertTanH<hal_1_3::HalPolicy>(operation, model, data);
450}
451
452bool HalPolicy::ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data)
453{
454 ALOGV("hal_1_3::HalPolicy::ConvertTransposeConv2d()");
455 return ::ConvertTransposeConv2d<hal_1_3::HalPolicy>(operation, model, data);
456}
457
458bool HalPolicy::ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data)
459{
460 ALOGV("hal_1_3::HalPolicy::ConvertSqrt()");
461 ActivationDescriptor desc;
462 desc.m_Function = ActivationFunction::Sqrt;
463
464 return ::ConvertToActivation<hal_1_3::HalPolicy>(operation, __func__, desc, model, data);
465}
466
467bool HalPolicy::ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data)
468{
469 ALOGV("hal_1_3::HalPolicy::ConvertSqueeze()");
470 return ::ConvertSqueeze<hal_1_3::HalPolicy>(operation, model, data);
471}
472
473bool HalPolicy::ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data)
474{
475 ALOGV("hal_1_3::HalPolicy::ConvertStridedSlice()");
476 return ::ConvertStridedSlice<hal_1_3::HalPolicy>(operation, model, data);
477}
478
479bool HalPolicy::ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data)
480{
481 ALOGV("hal_1_3::HalPolicy::ConvertTranspose()");
482 return ::ConvertTranspose<hal_1_3::HalPolicy>(operation, model, data);
483}
484
485} // namespace hal_1_3
486} // namespace armnn_driver