# Copyright (c) 2021, Commonwealth Scientific and Industrial Research
# Organisation (CSIRO) ABN 41 687 119 230.
# SPDX-License-Identifier: Apache-2.0

comment "CMSIS-NN Components"

config CMSIS_NN_ACTIVATION
	bool "Activation"
	help
	  This option enables the NN libraries for the activation layers
	  It can perform activation layers, including ReLU (Rectified
	  Linear Unit), sigmoid and tanh.

config CMSIS_NN_BASICMATH
	bool "Basic Math for NN"
	help
	  This option enables the NN libraries for the basic maths operations.
	  It adds functionality for element-wise add and multiplication functions.

config CMSIS_NN_CONCATENATION
	bool "Concatenation"
	help
	  This option enables the NN libraries for the concatenation layers.

config CMSIS_NN_CONVOLUTION
	bool "Convolution"
	imply CMSIS_NN_NNSUPPORT
	help
	  Collection of convolution, depthwise convolution functions and
	  their variants. The convolution is implemented in 2 steps: im2col
	  and GEMM. GEMM is performed with CMSIS-DSP arm_mat_mult similar options.

config CMSIS_NN_FULLYCONNECTED
	bool "Fully Connected"
	imply CMSIS_NN_NNSUPPORT
	help
	  Collection of fully-connected and matrix multiplication functions.

config CMSIS_NN_NNSUPPORT
	bool "NN Support"
	help
	  When off, its default behavior is all tables are included.

config CMSIS_NN_POOLING
	bool "Pooling"
	imply CMSIS_NN_NNSUPPORT
	help
	  This option enables pooling layers, including max pooling
	  and average pooling.

config CMSIS_NN_RESHAPE
	bool "Reshape"
	help
	  This option enables the NN libraries for the reshape layers.

config CMSIS_NN_SOFTMAX
	bool "Softmax"
	help
	  This option enables the NN libraries for the softmax layers (exp2 based).

config CMSIS_NN_SVD
	bool "SVD"
	imply CMSIS_NN_NNSUPPORT
	help
	  This option enabled the NN libraries for Single Value Decomposition Filter layers.
