xref: /aosp_15_r20/external/android-nn-driver/1.0/HalPolicy.hpp (revision 3e777be0405cee09af5d5785ff37f7cfb5bee59a)
1*3e777be0SXin Li //
2*3e777be0SXin Li // Copyright © 2017-2021,2023 Arm Ltd and Contributors. All rights reserved.
3*3e777be0SXin Li // SPDX-License-Identifier: MIT
4*3e777be0SXin Li //
5*3e777be0SXin Li 
6*3e777be0SXin Li #pragma once
7*3e777be0SXin Li 
8*3e777be0SXin Li #include "../ConversionUtils.hpp"
9*3e777be0SXin Li 
10*3e777be0SXin Li #include <HalInterfaces.h>
11*3e777be0SXin Li 
12*3e777be0SXin Li namespace V1_0 = ::android::hardware::neuralnetworks::V1_0;
13*3e777be0SXin Li 
14*3e777be0SXin Li namespace armnn_driver
15*3e777be0SXin Li {
16*3e777be0SXin Li namespace hal_1_0
17*3e777be0SXin Li {
18*3e777be0SXin Li 
19*3e777be0SXin Li class HalPolicy
20*3e777be0SXin Li {
21*3e777be0SXin Li public:
22*3e777be0SXin Li     using Model                     = V1_0::Model;
23*3e777be0SXin Li     using Operand                   = V1_0::Operand;
24*3e777be0SXin Li     using OperandLifeTime           = V1_0::OperandLifeTime;
25*3e777be0SXin Li     using OperandType               = V1_0::OperandType;
26*3e777be0SXin Li     using Operation                 = V1_0::Operation;
27*3e777be0SXin Li     using OperationType             = V1_0::OperationType;
28*3e777be0SXin Li     using getSupportedOperations_cb = V1_0::IDevice::getSupportedOperations_cb;
29*3e777be0SXin Li     using ErrorStatus               = V1_0::ErrorStatus;
30*3e777be0SXin Li 
31*3e777be0SXin Li     static bool ConvertOperation(const Operation& operation, const Model& model, ConversionData& data);
32*3e777be0SXin Li 
33*3e777be0SXin Li private:
34*3e777be0SXin Li     static bool ConvertAveragePool2d(const Operation& operation, const Model& model, ConversionData& data);
35*3e777be0SXin Li 
36*3e777be0SXin Li     static bool ConvertConcatenation(const Operation& operation, const Model& model, ConversionData& data);
37*3e777be0SXin Li 
38*3e777be0SXin Li     static bool ConvertConv2d(const Operation& operation, const Model& model, ConversionData& data);
39*3e777be0SXin Li 
40*3e777be0SXin Li     static bool ConvertDepthToSpace(const Operation& operation, const Model& model, ConversionData& data);
41*3e777be0SXin Li 
42*3e777be0SXin Li     static bool ConvertDepthwiseConv2d(const Operation& operation, const Model& model, ConversionData& data);
43*3e777be0SXin Li 
44*3e777be0SXin Li     static bool ConvertDequantize(const Operation& operation, const Model& model, ConversionData& data);
45*3e777be0SXin Li 
46*3e777be0SXin Li     static bool ConvertElementwiseBinary(const Operation& operation,
47*3e777be0SXin Li                                          const Model& model,
48*3e777be0SXin Li                                          ConversionData& data,
49*3e777be0SXin Li                                          armnn::BinaryOperation binaryOperation);
50*3e777be0SXin Li 
51*3e777be0SXin Li     static bool ConvertFloor(const Operation& operation, const Model& model, ConversionData& data);
52*3e777be0SXin Li 
53*3e777be0SXin Li     static bool ConvertFullyConnected(const Operation& operation, const Model& model, ConversionData& data);
54*3e777be0SXin Li 
55*3e777be0SXin Li     static bool ConvertLocalResponseNormalization(const Operation& operation,
56*3e777be0SXin Li                                                   const Model& model,
57*3e777be0SXin Li                                                   ConversionData& data);
58*3e777be0SXin Li 
59*3e777be0SXin Li     static bool ConvertLogistic(const Operation& operation, const Model& model, ConversionData& data);
60*3e777be0SXin Li 
61*3e777be0SXin Li     static bool ConvertLstm(const Operation& operation, const Model& model, ConversionData& data);
62*3e777be0SXin Li 
63*3e777be0SXin Li     static bool ConvertL2Normalization(const Operation& operation, const Model& model, ConversionData& data);
64*3e777be0SXin Li 
65*3e777be0SXin Li     static bool ConvertL2Pool2d(const Operation& operation, const Model& model, ConversionData& data);
66*3e777be0SXin Li 
67*3e777be0SXin Li     static bool ConvertMaxPool2d(const Operation& operation, const Model& model, ConversionData& data);
68*3e777be0SXin Li 
69*3e777be0SXin Li     static bool ConvertReLu(const Operation& operation, const Model& model, ConversionData& data);
70*3e777be0SXin Li 
71*3e777be0SXin Li     static bool ConvertReLu1(const Operation& operation, const Model& model, ConversionData& data);
72*3e777be0SXin Li 
73*3e777be0SXin Li     static bool ConvertReLu6(const Operation& operation, const Model& model, ConversionData& data);
74*3e777be0SXin Li 
75*3e777be0SXin Li     static bool ConvertSoftmax(const Operation& operation, const Model& model, ConversionData& data);
76*3e777be0SXin Li 
77*3e777be0SXin Li     static bool ConvertReshape(const Operation& operation, const Model& model, ConversionData& data);
78*3e777be0SXin Li 
79*3e777be0SXin Li     static bool ConvertResizeBilinear(const Operation& operation, const Model& model, ConversionData& data);
80*3e777be0SXin Li 
81*3e777be0SXin Li     static bool ConvertSpaceToDepth(const Operation& operation, const Model& model, ConversionData& data);
82*3e777be0SXin Li 
83*3e777be0SXin Li     static bool ConvertTanH(const Operation& operation, const Model& model, ConversionData& data);
84*3e777be0SXin Li 
85*3e777be0SXin Li     static bool ValidateConv2dParameters(const Operation& operation);
86*3e777be0SXin Li 
87*3e777be0SXin Li     static bool ValidateDepthwiseConv2dParameters(const Operation& operation);
88*3e777be0SXin Li };
89*3e777be0SXin Li 
90*3e777be0SXin Li } // namespace hal_1_0
91*3e777be0SXin Li } // namespace armnn_driver
92