blob: 5d92f0d66abd7ae37f4de3b081539e1bb58eca20 [file] [log] [blame]
arovir01b0717b52018-09-05 17:03:25 +01001//
Teresa Charlinee5872d2021-12-03 16:07:42 +00002// Copyright © 2017-2021,2023 Arm Ltd and Contributors. All rights reserved.
arovir01b0717b52018-09-05 17:03:25 +01003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Matteo Martincigh8b287c22018-09-07 09:25:10 +01008#include "../ConversionUtils.hpp"
arovir01b0717b52018-09-05 17:03:25 +01009
10#include <HalInterfaces.h>
11
12namespace V1_0 = ::android::hardware::neuralnetworks::V1_0;
13
14namespace armnn_driver
15{
16namespace hal_1_0
17{
18
19class HalPolicy
20{
21public:
22 using Model = V1_0::Model;
Matthew Bentham912b3622019-05-03 15:49:14 +010023 using Operand = V1_0::Operand;
Aron Virginas-Tarcd700e42019-06-14 14:54:52 +010024 using OperandLifeTime = V1_0::OperandLifeTime;
Matthew Bentham912b3622019-05-03 15:49:14 +010025 using OperandType = V1_0::OperandType;
arovir01b0717b52018-09-05 17:03:25 +010026 using Operation = V1_0::Operation;
Nikhil Raj77605822018-09-03 11:25:56 +010027 using OperationType = V1_0::OperationType;
arovir01b0717b52018-09-05 17:03:25 +010028 using getSupportedOperations_cb = V1_0::IDevice::getSupportedOperations_cb;
Kevin May42477c12020-03-26 13:34:14 +000029 using ErrorStatus = V1_0::ErrorStatus;
arovir01b0717b52018-09-05 17:03:25 +010030
31 static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
32
33private:
arovir01b0717b52018-09-05 17:03:25 +010034 static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
35
36 static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
37
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +010038 static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
39
Aron Virginas-Tar8edb16d2019-10-01 13:34:59 +010040 static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
41
Aron Virginas-Tar29404fb2019-07-24 13:55:31 +010042 static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
43
David Monahanacf479a2019-05-29 14:27:04 +010044 static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
45
Teresa Charlinee5872d2021-12-03 16:07:42 +000046 static bool ConvertElementwiseBinary(const Operation& operation,
47 const Model& model,
48 ConversionData& data,
49 armnn::BinaryOperation binaryOperation);
50
arovir01b0717b52018-09-05 17:03:25 +010051 static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
52
53 static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
54
55 static bool ConvertLocalResponseNormalization(const Operation& operation,
56 const Model& model,
57 ConversionData& data);
58
59 static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
60
61 static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
62
63 static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
64
65 static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
66
67 static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
68
arovir01b0717b52018-09-05 17:03:25 +010069 static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
70
71 static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
72
73 static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
74
75 static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
76
arovir01b0717b52018-09-05 17:03:25 +010077 static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
78
79 static bool ConvertResizeBilinear(const Operation& operation, const Model& model, ConversionData& data);
Mike Kellyb5fdf382019-06-11 16:35:25 +010080
Keith Davisa6bc52f2019-06-26 09:39:49 +010081 static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
82
Sadik Armagan61113162019-07-25 09:09:40 +010083 static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
84
Mike Kellyb5fdf382019-06-11 16:35:25 +010085 static bool ValidateConv2dParameters(const Operation& operation);
86
87 static bool ValidateDepthwiseConv2dParameters(const Operation& operation);
arovir01b0717b52018-09-05 17:03:25 +010088};
89
90} // namespace hal_1_0
91} // namespace armnn_driver