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