// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include #include #include namespace armnn { class ClLayerSupport : public ILayerSupport { // TODO implement }; bool IsClDirectConvolution2dSupported(const TensorInfo& weightInfo, const Convolution2dDescriptor& desc); bool IsClDepthwiseConvolution2dDescParamsSupported(Optional reasonIfUnsupported, const DepthwiseConvolution2dDescriptor& parameters, const TensorInfo& weights); bool IsActivationSupportedCl(const TensorInfo& input, const TensorInfo& output, const ActivationDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsAdditionSupportedCl(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsBatchNormalizationSupportedCl(const TensorInfo& input, const TensorInfo& output, const TensorInfo& mean, const TensorInfo& var, const TensorInfo& beta, const TensorInfo& gamma, const BatchNormalizationDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsConstantSupportedCl(const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsConvolution2dSupportedCl(const TensorInfo& input, const TensorInfo& output, const Convolution2dDescriptor& descriptor, const TensorInfo& weights, const Optional& biases, Optional reasonIfUnsupported = EmptyOptional()); bool IsDepthwiseConvolutionSupportedCl(const TensorInfo& input, const TensorInfo& output, const DepthwiseConvolution2dDescriptor& descriptor, const TensorInfo& weights, const Optional& biases, Optional reasonIfUnsupported = EmptyOptional()); bool IsDivisionSupportedCl(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsSubtractionSupportedCl(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsFullyConnectedSupportedCl(const TensorInfo& input, const TensorInfo& output, const TensorInfo& weights, const TensorInfo& biases, const FullyConnectedDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsInputSupportedCl(const TensorInfo& input, Optional reasonIfUnsupported = EmptyOptional()); bool IsL2NormalizationSupportedCl(const TensorInfo& input, const TensorInfo& output, const L2NormalizationDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsLstmSupportedCl(const TensorInfo& input, const TensorInfo& outputStateIn, const TensorInfo& cellStateIn, const TensorInfo& scratchBuffer, const TensorInfo& outputStateOut, const TensorInfo& cellStateOut, const TensorInfo& output, const LstmDescriptor& descriptor, const TensorInfo& inputToForgetWeights, const TensorInfo& inputToCellWeights, const TensorInfo& inputToOutputWeights, const TensorInfo& recurrentToForgetWeights, const TensorInfo& recurrentToCellWeights, const TensorInfo& recurrentToOutputWeights, const TensorInfo& forgetGateBias, const TensorInfo& cellBias, const TensorInfo& outputGateBias, const TensorInfo* inputToInputWeights, const TensorInfo* recurrentToInputWeights, const TensorInfo* cellToInputWeights, const TensorInfo* inputGateBias, const TensorInfo* projectionWeights, const TensorInfo* projectionBias, const TensorInfo* cellToForgetWeights, const TensorInfo* cellToOutputWeights, Optional reasonIfUnsupported = EmptyOptional()); bool IsMergerSupportedCl(const std::vector inputs, const OriginsDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsMultiplicationSupportedCl(const TensorInfo& input0, const TensorInfo& input1, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsNormalizationSupportedCl(const TensorInfo& input, const TensorInfo& output, const NormalizationDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsOutputSupportedCl(const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsPermuteSupportedCl(const TensorInfo& input, const TensorInfo& output, const PermuteDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsPooling2dSupportedCl(const TensorInfo& input, const TensorInfo& output, const Pooling2dDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsResizeBilinearSupportedCl(const TensorInfo& input, Optional reasonIfUnsupported = EmptyOptional()); bool IsSoftmaxSupportedCl(const TensorInfo& input, const TensorInfo& output, const SoftmaxDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsSplitterSupportedCl(const TensorInfo& input, const ViewsDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsFakeQuantizationSupportedCl(const TensorInfo& input, const FakeQuantizationDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsReshapeSupportedCl(const TensorInfo& input, Optional reasonIfUnsupported = EmptyOptional()); bool IsFloorSupportedCl(const TensorInfo& input, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsConvertFp16ToFp32SupportedCl(const TensorInfo& input, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsConvertFp32ToFp16SupportedCl(const TensorInfo& input, const TensorInfo& output, Optional reasonIfUnsupported = EmptyOptional()); bool IsMeanSupportedCl(const TensorInfo& input, const TensorInfo& output, const MeanDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); bool IsPadSupportedCl(const TensorInfo& input, const TensorInfo& output, const PadDescriptor& descriptor, Optional reasonIfUnsupported = EmptyOptional()); }