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