xref: /aosp_15_r20/external/android-nn-driver/1.1/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_1 = ::android::hardware::neuralnetworks::V1_1;
13*3e777be0SXin Li 
14*3e777be0SXin Li namespace armnn_driver
15*3e777be0SXin Li {
16*3e777be0SXin Li namespace hal_1_1
17*3e777be0SXin Li {
18*3e777be0SXin Li 
19*3e777be0SXin Li class HalPolicy
20*3e777be0SXin Li {
21*3e777be0SXin Li public:
22*3e777be0SXin Li     using Model                     = V1_1::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_1::Operation;
27*3e777be0SXin Li     using OperationType             = V1_1::OperationType;
28*3e777be0SXin Li     using getSupportedOperations_cb = V1_1::IDevice::getSupportedOperations_1_1_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 ConvertElementwiseBinary(const Operation& operation,
35*3e777be0SXin Li                                          const Model& model,
36*3e777be0SXin Li                                          ConversionData& data,
37*3e777be0SXin Li                                          armnn::BinaryOperation binaryOperation);
38*3e777be0SXin Li 
39*3e777be0SXin Li     static bool ConvertMean(const Operation& operation, const Model& model, ConversionData& data);
40*3e777be0SXin Li     static bool ConvertPad(const Operation& operation, const Model& model, ConversionData& data);
41*3e777be0SXin Li     static bool ConvertSpaceToBatchNd(const Operation& operation, const Model& model, ConversionData& data);
42*3e777be0SXin Li     static bool ConvertSqueeze(const Operation& operation, const Model& model, ConversionData& data);
43*3e777be0SXin Li     static bool ConvertStridedSlice(const Operation& operation, const Model& model, ConversionData& data);
44*3e777be0SXin Li     static bool ConvertTranspose(const Operation& operation, const Model& model, ConversionData& data);
45*3e777be0SXin Li     static bool ConvertBatchToSpaceNd(const Operation& operation, const Model& model, ConversionData& data);
46*3e777be0SXin Li };
47*3e777be0SXin Li 
48*3e777be0SXin Li } // namespace hal_1_1
49*3e777be0SXin Li } // namespace armnn_driver
50