| # 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 |