blob: 1f0b54d7e0fa0f58bd137c21febf77f3525e5120 [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#pragma once
7
8#include "../ConversionUtils.hpp"
9
10#include <HalInterfaces.h>
11
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +010012#include <armnn/Types.hpp>
13
Mike Kellyb5fdf382019-06-11 16:35:25 +010014namespace armnn_driver
15{
16namespace hal_1_2
17{
18
19class HalPolicy
20{
21public:
22 using Model = V1_2::Model;
23 using Operand = V1_2::Operand;
Aron Virginas-Tarcd700e42019-06-14 14:54:52 +010024 using OperandLifeTime = V1_0::OperandLifeTime;
25 using OperandType = V1_2::OperandType;
Mike Kellyb5fdf382019-06-11 16:35:25 +010026 using Operation = V1_2::Operation;
27 using OperationType = V1_2::OperationType;
28 using ExecutionCallback = V1_2::IExecutionCallback;
29 using getSupportedOperations_cb = V1_2::IDevice::getSupportedOperations_1_2_cb;
30
31 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010032
33private:
Kevin May407718f2019-09-09 14:46:41 +010034 static bool ConvertAbs(const Operation& operation, const Model& model, ConversionData& data);
35
Mike Kelly46272802019-08-14 17:00:48 +010036 static bool ConvertAdd(const Operation& operation, const Model& model, ConversionData& data);
37
Francis Murtagha23334e2019-11-19 12:06:47 +000038 static bool ConvertArgMinMax(const Operation& operation,
39 const Model& model,
40 ConversionData& data,
41 armnn::ArgMinMaxFunction argMinMaxFunction);
42
Sadik Armagan15d63e22019-07-26 16:59:35 +010043 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
44
Finn Williams23b87b32019-07-30 11:44:05 +010045 static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
46
Aron Virginas-Tar3e0982b2019-10-29 14:25:09 +000047 static bool ConvertComparison(const Operation& operation,
48 const Model& model,
49 ConversionData& data,
50 armnn::ComparisonOperation comparisonOperation);
51
Mike Kellyb8805202019-07-31 17:25:43 +010052 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
53
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010054 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +010055
Aron Virginas-Tar8edb16d2019-10-01 13:34:59 +010056 static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
57
Aron Virginas-Tar24e699d2019-06-17 14:47:46 +010058 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +010059
Mike Kelly46272802019-08-14 17:00:48 +010060 static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
61
62 static bool ConvertDiv(const Operation& operation, const Model& model, ConversionData& data);
63
Narumol Prangnawarat85f96542019-09-12 16:26:29 +010064 static bool ConvertExpandDims(const Operation& operation, const Model& model, ConversionData& data);
65
Mike Kelly46272802019-08-14 17:00:48 +010066 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
67
68 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
69
Teresa Charlin8f6429d2019-10-01 13:10:15 +010070 static bool ConvertGroupedConv2d(const Operation& operation, const Model& model, ConversionData& data);
71
Aron Virginas-Tara2a73802019-10-09 15:30:40 +010072 static bool ConvertInstanceNormalization(const Operation& operation, const Model& model, ConversionData& data);
73
Mike Kelly46272802019-08-14 17:00:48 +010074 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
75
Sadik Armagan15d63e22019-07-26 16:59:35 +010076 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
77
Mike Kelly46272802019-08-14 17:00:48 +010078 static bool ConvertLocalResponseNormalization(const Operation& operation,
79 const Model& model,
80 ConversionData& data);
81
82 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
83
Aron Virginas-Tar75e67792019-10-15 13:33:03 +010084 static bool ConvertLogSoftmax(const Operation& operation, const Model& model, ConversionData& data);
85
Mike Kelly46272802019-08-14 17:00:48 +010086 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
87
Sadik Armagan15d63e22019-07-26 16:59:35 +010088 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
89
Narumol Prangnawarat95b1ef62019-07-15 12:02:20 +010090 static bool ConvertMaximum(const Operation& operation, const Model& model, ConversionData& data);
91
Mike Kelly46272802019-08-14 17:00:48 +010092 static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
93
Ellen Norris-Thompson1cb29aa2019-07-11 17:27:37 +010094 static bool ConvertMinimum(const Operation& operation, const Model& model, ConversionData& data);
95
Mike Kelly46272802019-08-14 17:00:48 +010096 static bool ConvertMul(const Operation& operation, const Model& model, ConversionData& data);
97
Aron Virginas-Tarc921f6b2019-07-25 10:14:33 +010098 static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
99
Aron Virginas-Tarcb8ac842019-07-05 15:47:07 +0100100 static bool ConvertPadV2(const Operation& operation, const Model& model, ConversionData& data);
101
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100102 static bool ConvertPrelu(const Operation& operation, const Model& model, ConversionData& data);
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +0100103
Sadik Armagan5a476a82019-07-30 09:43:18 +0100104 static bool ConvertQuantize(const Operation& operation, const Model& model, ConversionData& data);
105
Ellen Norris-Thompson7efb46d2019-07-24 17:39:19 +0100106 static bool ConvertQuantizedLstm(const Operation& operation, const Model& model, ConversionData& data);
107
Sadik Armagan61113162019-07-25 09:09:40 +0100108 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
109
110 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
111
112 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
113
Mike Kelly46272802019-08-14 17:00:48 +0100114 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
115
Aron Virginas-Tarfb2fa292019-07-04 11:59:48 +0100116 static bool ConvertResize(const Operation& operation,
117 const Model& model,
118 ConversionData& data,
119 armnn::ResizeMethod resizeMethod);
Keith Davisa6bc52f2019-06-26 09:39:49 +0100120
Aron Virginas-Tarfa6544e2019-09-10 14:42:22 +0100121 static bool ConvertRsqrt(const Operation& operation, const Model& model, ConversionData& data);
122
Francis Murtagh074c25a2019-07-22 16:40:57 +0100123 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
124
Finn Williamsd74c5052019-07-30 17:06:00 +0100125 static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
126
Keith Davisa6bc52f2019-06-26 09:39:49 +0100127 static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
Sadik Armagan61113162019-07-25 09:09:40 +0100128
Sadik Armagan701d9a02019-09-04 15:16:18 +0100129 static bool ConvertSqrt(const Operation& operation, const Model& model, ConversionData& data);
130
Mike Kelly46272802019-08-14 17:00:48 +0100131 static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
132
133 static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
134
Mike Kelly0a879362019-07-29 16:56:31 +0100135 static bool ConvertSub(const Operation& operation, const Model& model, ConversionData& data);
136
Sadik Armagan61113162019-07-25 09:09:40 +0100137 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
Ferran Balaguerb2397fd2019-07-25 12:12:39 +0100138
Mike Kelly46272802019-08-14 17:00:48 +0100139 static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
David Monahan613b49c2019-06-27 11:37:47 +0100140
Aron Virginas-Tar8b991682019-07-31 12:54:59 +0100141 static bool ConvertTransposeConv2d(const Operation& operation, const Model& model, ConversionData& data);
Mike Kellyb5fdf382019-06-11 16:35:25 +0100142};
143
144} // namespace hal_1_2
Matteo Martincigh17ffff32019-06-27 14:12:55 +0100145} // namespace armnn_driver