blob: b25e77ce9c78456bc52c4be76dcb6d39ff4bdbe8 [file] [log] [blame]
# Copyright (c) 2023 Meta Platforms
# SPDX-License-Identifier: Apache-2.0
config ZEPHYR_CMSIS_DSP_MODULE
bool
menuconfig CMSIS_DSP
bool "CMSIS-DSP Library Support"
help
This option enables the CMSIS-DSP library.
if CMSIS_DSP
comment "Components"
config CMSIS_DSP_BASICMATH
bool "Basic Math Functions"
help
This option enables the Basic Math Functions, which support the
following operations:
* Elementwise Clipping
* Vector Absolute Value
* Vector Addition
* Vector Subtraction
* Vector Multiplication
* Vector Dot Product
* Vector Absolute Value
* Vector Negate
* Vector Offset
* Vector Scale
* Vector Shift
* Vector Bitwise AND
* Vector Bitwise OR
* Vector Bitwise Exclusive OR
* Vector Bitwise NOT
config CMSIS_DSP_COMPLEXMATH
bool "Complex Math Functions"
imply CMSIS_DSP_FASTMATH
help
This option enables the Complex Math Functions, which support the
following operations:
* Complex-by-Complex Multiplication
* Complex-by-Real Multiplication
* Complex Dot Product
* Complex Magnitude
* Complex Magnitude Squared
* Complex Conjugate
config CMSIS_DSP_CONTROLLER
bool "Controller Functions"
help
This option enables the Controller Functions, which support the
following operations:
* PID Control
* Vector Clarke Transform
* Vector Inverse Clarke Transform
* Vector Park Transform
* Vector Inverse Park Transform
* Sine-Cosine
These functions can be used to implement a generic PID controller, as
well as field oriented motor control using Space Vector Modulation
algorithm.
config CMSIS_DSP_FASTMATH
bool "Fast Math Functions"
imply CMSIS_DSP_BASICMATH
help
This option enables the Fast Math Functions, which support the
following operations:
* Fixed-Point Division
* Sine
* Cosine
* Square Root
config CMSIS_DSP_FILTERING
bool "Filtering Functions"
imply CMSIS_DSP_BASICMATH
imply CMSIS_DSP_FASTMATH
imply CMSIS_DSP_SUPPORT
help
This option enables the Filtering Functions, which support the
following operations:
* Convolution
* Partial Convolution
* Correlation
* Levinson-Durbin Algorithm
The following filter types are supported:
* FIR (finite impulse response) Filter
* FIR Lattice Filter
* FIR Sparse Filter
* FIR Filter with Decimator
* FIR Filter with Interpolator
* IIR (infinite impulse response) Lattice Filter
* Biquad Cascade IIR Filter, Direct Form I Structure
* Biquad Cascade IIR Filter, Direct Form II Transposed Structure
* High Precision Q31 Biquad Cascade Filter
* LMS (least mean square) Filter
* Normalized LMS Filter
config CMSIS_DSP_INTERPOLATION
bool "Interpolation Functions"
help
This option enables the Interpolation Functions, which support the
following operations:
* Bilinear Interpolation
* Linear Interpolation
* Cubic Spline Interpolation
config CMSIS_DSP_MATRIX
bool "Matrix Functions"
help
This option enables the Matrix Functions, which support the following
operations:
* Matrix Initialization
* Matrix Addition
* Matrix Subtraction
* Matrix Multiplication
* Complex Matrix Multiplication
* Matrix Vector Multiplication
* Matrix Inverse
* Matrix Scale
* Matrix Transpose
* Complex Matrix Transpose
* Cholesky and LDLT Decompositions
config CMSIS_DSP_QUATERNIONMATH
bool "Quaternion Math Functions"
help
This option enables the Quaternion Math Functions, which support the
following operations:
* Quaternion Conversions
* Quaternion Conjugate
* Quaternion Inverse
* Quaternion Norm
* Quaternion Normalization
* Quaternion Product
config CMSIS_DSP_STATISTICS
bool "Statistics Functions"
imply CMSIS_DSP_BASICMATH
imply CMSIS_DSP_FASTMATH
help
This option enables the Statistics Functions, which support the
following operations:
* Minimum
* Absolute Minimum
* Maximum
* Absolute Maximum
* Mean
* Root Mean Square (RMS)
* Variance
* Standard Deviation
* Power
* Entropy
* Kullback-Leibler Divergence
* LogSumExp (LSE)
config CMSIS_DSP_SUPPORT
bool "Support Functions"
help
This option enables the Support Functions, which support the
following operations:
* Vector 8-bit Integer Value Conversion
* Vector 16-bit Integer Value Conversion
* Vector 32-bit Integer Value Conversion
* Vector 16-bit Floating-Point Value Conversion
* Vector 32-bit Floating-Point Value Conversion
* Vector Copy
* Vector Fill
* Vector Sorting
* Weighted Sum
* Barycenter
config CMSIS_DSP_TRANSFORM
bool "Transform Functions"
imply CMSIS_DSP_BASICMATH
help
This option enables the Transform Functions, which support the
following transformations:
* Real Fast Fourier Transform (RFFT)
* Complex Fast Fourier Transform (CFFT)
* Type IV Discrete Cosine Transform (DCT4)
config CMSIS_DSP_SVM
bool "Support Vector Machine Functions"
help
This option enables the Support Vector Machine Functions, which
support the following algorithms:
* Linear
* Polynomial
* Sigmoid
* Radial Basis Function (RBF)
config CMSIS_DSP_BAYES
bool "Bayesian Estimators"
imply CMSIS_DSP_STATISTICS
help
This option enables the Bayesian Estimator Functions, which
implements the naive gaussian Bayes estimator.
config CMSIS_DSP_DISTANCE
bool "Distance Functions"
imply CMSIS_DSP_STATISTICS
help
This option enables the Distance Functions, which support the
following distance computation algorithms:
* Boolean Vectors
* Hamming
* Jaccard
* Kulsinski
* Rogers-Tanimoto
* Russell-Rao
* Sokal-Michener
* Sokal-Sneath
* Yule
* Dice
* Floating-Point Vectors
* Canberra
* Chebyshev
* Cityblock
* Correlation
* Cosine
* Euclidean
* Jensen-Shannon
* Minkowski
* Bray-Curtis
config CMSIS_DSP_WINDOW
bool "Windowing Functions"
help
This option enabled the Window Functions, which support the
following windowing functions:
* Bartlett
* Hamming
* Hanning
* Nuttall
* Blackman Harris
* HFT
comment "Instruction Set"
# NOTE: These configurations should eventually be derived from the arch ISA and
# FP support configurations.
config CMSIS_DSP_NEON
bool "Neon Instruction Set"
default y
depends on CPU_CORTEX_A
help
This option enables the NEON Advanced SIMD instruction set, which is
available on most Cortex-A and some Cortex-R processors.
config CMSIS_DSP_NEON_EXPERIMENTAL
bool "Neon Instruction Set"
depends on CPU_CORTEX_A
help
This option enables the NEON Advanced SIMD instruction set, which is
available on most Cortex-A and some Cortex-R processors.
config CMSIS_DSP_HELIUM_EXPERIMENTAL
bool "Helium Instruction Set"
depends on FP_HARDABI && (ARMV8_1_M_MVEI || ARMV8_1_M_MVEF)
help
This option enables the Helium Advanced SIMD instruction set, which is
available on some Cortex-M processors.
comment "Features"
config CMSIS_DSP_LOOPUNROLL
bool "Loop Unrolling"
help
This option enables manual loop unrolling in the DSP functions.
config CMSIS_DSP_ROUNDING
bool "Rounding"
help
This option enables rounding on the support functions.
config CMSIS_DSP_MATRIXCHECK
bool "Matrix Check"
help
This option enables validation of the input and output sizes of
matrices.
config CMSIS_DSP_AUTOVECTORIZE
bool "Auto Vectorize"
help
This option prefers autovectorizable code to one using C intrinsics
in the DSP functions.
config CMSIS_DSP_FLOAT16
bool "Half-Precision (16-bit Float) Support"
default y
depends on FP16
help
This option enables the half-precision (16-bit) floating-point
operations support.
config CMSIS_DSP_LAX_VECTOR_CONVERSIONS
bool "Lax Vector Conversions"
default y
depends on FP_HARDABI && (ARMV8_1_M_MVEI || ARMV8_1_M_MVEF)
help
This option enables lax vector conversions
endif #CMSIS_DSP