///
/// Copyright (c) 2018-2019 Arm Limited.
///
/// SPDX-License-Identifier: MIT
///
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to
/// deal in the Software without restriction, including without limitation the
/// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
/// sell copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in all
/// copies or substantial portions of the Software.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
/// SOFTWARE.
///
namespace arm_compute
{
/**

@page functions_list List of functions

@tableofcontents

@section S6_1 NEON functions

- @ref IFunction
    - @ref INESimpleFunction
        - @ref NEAbsoluteDifference
        - @ref NEArithmeticAddition
        - @ref NEArithmeticSubtraction
        - @ref NEBoundingBoxTransform
        - @ref NEBox3x3
        - @ref NECast
        - @ref NEComplexPixelWiseMultiplication
        - @ref NEComputeAllAnchors
        - @ref NEConvolution3x3
        - @ref NEConvolutionRectangle
        - @ref NEDilate
        - @ref NEElementwiseComparison
        - @ref NEElementwiseComparisonStatic
        - @ref NEElementwiseDivision
        - @ref NEElementwiseMax
        - @ref NEElementwiseMin
        - @ref NEElementwiseSquaredDiff
        - @ref NEErode
        - @ref NEExpLayer
        - @ref NEGaussian3x3
        - @ref NEIntegralImage
        - @ref NELogicalAnd
        - @ref NELogicalNot
        - @ref NELogicalOr
        - @ref NEMedian3x3
        - @ref NENonLinearFilter
        - @ref NENonMaximaSuppression3x3
        - @ref NEPixelWiseMultiplication
        - @ref NEPReluLayer
        - @ref NERemap
        - @ref NEROIAlignLayer
        - @ref NERoundLayer
        - @ref NERsqrtLayer
        - @ref NEScharr3x3
        - @ref NESelect
        - @ref NESobel3x3
        - @ref NEStridedSlice
        - @ref NEWarpAffine
        - @ref NEWarpPerspective
    - @ref INESimpleFunctionNoBorder
        - @ref NEAccumulate
        - @ref NEAccumulateSquared
        - @ref NEAccumulateWeighted
        - @ref NEActivationLayer
        - @ref NEBatchToSpaceLayer
        - @ref NEBitwiseAnd
        - @ref NEBitwiseNot
        - @ref NEBitwiseOr
        - @ref NEBitwiseXor
        - @ref NEChannelCombine
        - @ref NEChannelExtract
        - @ref NEChannelShuffleLayer
        - @ref NECol2Im
        - @ref NEColorConvert
        - @ref NECopy
        - @ref NEDepthConvertLayer
        - @ref NEFlattenLayer
        - @ref NEFloor
        - @ref NEFullyConnectedLayerReshapeWeights
        - @ref NEGather
        - @ref NEGEMMInterleave4x4
        - @ref NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint
        - @ref NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint
        - @ref NEGEMMTranspose1xW
        - @ref NEHOGDetector
        - @ref NEMagnitude
        - @ref NEMeanStdDevNormalizationLayer
        - @ref NEPermute
        - @ref NEPhase
        - @ref NEPriorBoxLayer
        - @ref NEReorgLayer
        - @ref NEReshapeLayer
        - @ref NEReverse
        - @ref NESlice
        - @ref NETableLookup
        - @ref NEThreshold
        - @ref NETile
        - @ref NETranspose
        - @ref NEYOLOLayer
    - @ref NEArgMinMaxLayer
    - @ref NEBatchNormalizationLayer
    - @ref NECannyEdge
    - @ref NEComplexPixelWiseMultiplication
    - @ref NEConcatenateLayer
    - @ref NEConvertFullyConnectedWeights
    - @ref NEConvolutionLayer
    - @ref NEConvolutionLayerReshapeWeights
    - @ref NEConvolutionSquare <matrix_size>
    - @ref NECropResize
    - @ref NEDeconvolutionLayer
    - @ref NEDepthwiseConvolutionAssemblyDispatch
    - @ref NEDepthwiseConvolutionLayer
    - @ref NEDequantizationLayer
    - @ref NEDerivative
    - @ref NEDetectionPostProcessLayer
    - @ref NEDirectConvolutionLayer
    - @ref NEEqualizeHistogram
    - @ref NEFastCorners
    - @ref NEFFT1D
    - @ref NEFFT2D
    - @ref NEFFTConvolutionLayer
    - @ref NEFill
    - @ref NEFillBorder
    - @ref NEFullyConnectedLayer
    - @ref NEFuseBatchNormalization
    - @ref NEGaussian5x5
    - @ref NEGaussianPyramid
        - @ref NEGaussianPyramidHalf
        - @ref NEGaussianPyramidOrb
    - @ref NEGEMM
    - @ref NEGEMMAssemblyDispatch
    - @ref NEGEMMConv2d
    - @ref NEGEMMConvolutionLayer
    - @ref NEGEMMLowpMatrixMultiplyCore
    - @ref NEGenerateProposalsLayer
    - @ref NEHarrisCorners
    - @ref NEHistogram
    - @ref NEHOGDescriptor
    - @ref NEHOGGradient
    - @ref NEHOGMultiDetection
    - @ref NEIm2Col
    - @ref NEInstanceNormalizationLayer
    - @ref NEL2NormalizeLayer
    - @ref NELaplacianPyramid
    - @ref NELaplacianReconstruct
    - @ref NELocallyConnectedLayer
    - @ref NELSTMLayer
    - @ref NELSTMLayerQuantized
    - @ref NEQLSTMLayer
    - @ref NEMaxUnpoolingLayer
    - @ref NEMeanStdDev
    - @ref NEMinMaxLocation
    - @ref NENormalizationLayer
    - @ref NEOpticalFlow
    - @ref NEPadLayer
    - @ref NEPoolingLayer
    - @ref NEQuantizationLayer
    - @ref NERange
    - @ref NEReduceMean
    - @ref NEReductionOperation
    - @ref NERNNLayer
    - @ref NEROIPoolingLayer
    - @ref NEScale
    - @ref NESobel5x5
    - @ref NESobel7x7
    - @ref NESoftmaxLayerGeneric <IS_LOG>
    - @ref NESpaceToBatchLayer
    - @ref NESpaceToDepthLayer
    - @ref NESplit
    - @ref NEStackLayer
    - @ref NEUnstack
    - @ref NEUpsampleLayer
    - @ref NEWinogradConvolutionLayer

@section S6_2 OpenCL functions

- @ref IFunction
    - @ref CLBatchNormalizationLayer
    - @ref CLBatchToSpaceLayer
    - @ref CLCannyEdge
    - @ref CLComplexPixelWiseMultiplication
    - @ref CLConcatenateLayer
    - @ref CLConvolutionLayer
    - @ref CLConvolutionLayerReshapeWeights
    - @ref CLConvolutionSquare <matrix_size>
    - @ref CLCropResize
    - @ref CLDeconvolutionLayer
    - @ref CLDeconvolutionLayerUpsample
    - @ref CLDepthToSpaceLayer
    - @ref CLDepthwiseConvolutionLayer
    - @ref CLDequantizationLayer
    - @ref CLDirectConvolutionLayer
    - @ref CLDirectDeconvolutionLayer
    - @ref CLEqualizeHistogram
    - @ref CLFastCorners
    - @ref CLFFT1D
    - @ref CLFFT2D
    - @ref CLFFTConvolutionLayer
    - @ref CLFullyConnectedLayer
    - @ref CLFuseBatchNormalization
    - @ref CLGaussian5x5
    - @ref CLGaussianPyramid
        - @ref CLGaussianPyramidHalf
        - @ref CLGaussianPyramidOrb
    - @ref CLGEMM
    - @ref CLGEMMConvolutionLayer
    - @ref CLGEMMDeconvolutionLayer
    - @ref CLGEMMLowpMatrixMultiplyCore
    - @ref CLGenerateProposalsLayer
    - @ref CLHarrisCorners
    - @ref CLHistogram
    - @ref CLHOGDescriptor
    - @ref CLHOGDetector
    - @ref CLHOGGradient
    - @ref CLHOGMultiDetection
    - @ref CLIntegralImage
    - @ref CLL2NormalizeLayer
    - @ref CLLaplacianPyramid
    - @ref CLLaplacianReconstruct
    - @ref CLLocallyConnectedLayer
    - @ref CLLogicalAnd
    - @ref CLLogicalNot
    - @ref CLLogicalOr
    - @ref CLLSTMLayer
    - @ref CLLSTMLayerQuantized
    - @ref CLQLSTMLayer
    - @ref CLMaxUnpoolingLayer
    - @ref CLMeanStdDev
    - @ref CLMinMaxLocation
    - @ref CLNormalizationLayer
    - @ref CLNormalizePlanarYUVLayer
    - @ref CLOpticalFlow
    - @ref CLPadLayer
    - @ref CLQuantizationLayer
    - @ref CLReduceMean
    - @ref CLReductionOperation
    - @ref CLRNNLayer
    - @ref CLSobel5x5
    - @ref CLSobel7x7
    - @ref CLSoftmaxLayerGeneric <IS_LOG>
    - @ref CLSpaceToBatchLayer
    - @ref CLSpaceToDepthLayer
    - @ref CLSplit
    - @ref CLStackLayer
    - @ref CLUnstack
    - @ref CLUpsampleLayer
    - @ref CLWinogradConvolutionLayer
    - @ref ICLSimpleFunction
        - @ref CLAbsoluteDifference
        - @ref CLAccumulate
        - @ref CLAccumulateSquared
        - @ref CLAccumulateWeighted
        - @ref CLActivationLayer
        - @ref CLArgMinMaxLayer
        - @ref CLArithmeticAddition
        - @ref CLArithmeticDivision
        - @ref CLArithmeticSubtraction
        - @ref CLBitwiseAnd
        - @ref CLBitwiseNot
        - @ref CLBitwiseOr
        - @ref CLBitwiseXor
        - @ref CLBoundingBoxTransform
        - @ref CLBox3x3
        - @ref CLCast
        - @ref CLChannelCombine
        - @ref CLChannelExtract
        - @ref CLChannelShuffleLayer
        - @ref CLColorConvert
        - @ref CLComparison
        - @ref CLComparisonStatic
        - @ref CLComputeAllAnchors
        - @ref CLConvertFullyConnectedWeights
        - @ref CLConvolution3x3
        - @ref CLConvolutionRectangle
        - @ref CLCopy
        - @ref CLDepthConvertLayer
        - @ref CLDerivative
        - @ref CLDilate
        - @ref CLElementwiseMax
        - @ref CLElementwiseMin
        - @ref CLElementwiseSquaredDiff
        - @ref CLErode
        - @ref CLExpLayer
        - @ref CLFill
        - @ref CLFillBorder
        - @ref CLFlattenLayer
        - @ref CLFloor
        - @ref CLFullyConnectedLayerReshapeWeights
        - @ref CLGather
        - @ref CLGaussian3x3
        - @ref CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint
        - @ref CLGEMMLowpQuantizeDownInt32ToInt8ScaleByFixedPoint
        - @ref CLGEMMLowpQuantizeDownInt32ScaleByFixedPointKernel
        - @ref CLMagnitude
        - @ref CLMeanStdDevNormalizationLayer
        - @ref CLMedian3x3
        - @ref CLNonLinearFilter
        - @ref CLNonMaximaSuppression3x3
        - @ref CLPermute
        - @ref CLPhase
        - @ref CLPixelWiseMultiplication
        - @ref CLPoolingLayer
        - @ref CLPReluLayer
        - @ref CLPriorBoxLayer
        - @ref CLRange
        - @ref CLRemap
        - @ref CLReorgLayer
        - @ref CLReshapeLayer
        - @ref CLReverse
        - @ref CLROIAlignLayer
        - @ref CLROIPoolingLayer
        - @ref CLRsqrtLayer
        - @ref CLScale
        - @ref CLScharr3x3
        - @ref CLSelect
        - @ref CLSlice
        - @ref CLSobel3x3
        - @ref CLStridedSlice
        - @ref CLTableLookup
        - @ref CLThreshold
        - @ref CLTile
        - @ref CLTranspose
        - @ref CLWarpAffine
        - @ref CLWarpPerspective
        - @ref CLWinogradInputTransform
        - @ref CLYOLOLayer

@section S6_3 GLES Compute functions

- @ref IFunction
    - @ref GCBatchNormalizationLayer
    - @ref GCConcatenateLayer
    - @ref GCConvolutionLayer
    - @ref GCConvolutionLayerReshapeWeights
    - @ref GCDepthwiseConvolutionLayer3x3
    - @ref GCDirectConvolutionLayer
    - @ref GCDropoutLayer
    - @ref GCFullyConnectedLayer
    - @ref GCGEMM
    - @ref GCNormalizationLayer
    - @ref GCNormalizePlanarYUVLayer
    - @ref GCPoolingLayer
    - @ref GCSoftmaxLayer
    - @ref IGCSimpleFunction
        - @ref GCAbsoluteDifference
        - @ref GCActivationLayer
        - @ref GCArithmeticAddition
        - @ref GCFillBorder
        - @ref GCFullyConnectedLayerReshapeWeights
        - @ref GCGEMMInterleave4x4
        - @ref GCGEMMTranspose1xW
        - @ref GCPixelWiseMultiplication
        - @ref GCScale
        - @ref GCTensorShift
        - @ref GCTranspose

@section S6_4 CPP functions

 - @ref IFunction
    - @ref CPPDetectionOutputLayer
    - @ref CPPDetectionPostProcessLayer
    - @ref ICPPSimpleFunction
        - @ref CPPBoxWithNonMaximaSuppressionLimit
        - @ref CPPPermute
        - @ref CPPTopKV
        - @ref CPPUpsample

*/
} // namespace