# Copyright (c) 2023 Meta Platforms
# SPDX-License-Identifier: Apache-2.0

config ZEPHYR_CMSIS_NN_MODULE
	bool

menuconfig CMSIS_NN
	bool "CMSIS-NN Library Support"
	depends on CPU_CORTEX_M
	select CMSIS_DSP
	help
	  This option enables the CMSIS-NN library.

if CMSIS_NN

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.

config CMSIS_NN_LSTM
	bool "Long Short-Term Memory"
	help
	  This option enables the NN libraries for Long Short-Term Memory.

config CMSIS_NN_PAD
	bool "Pad"
	help
	  This option enables the NN libraries for the pad layers.

config CMSIS_NN_TRANSPOSE
	bool "Transpose"
	help
	  This option enables the NN libraries for the transpose layers.

endif #CMSIS_NN
