Эх сурвалжийг харах

CMSIS-DSP: Added more control for MVE compilation flags.
Now there are ARM_MATH_MVEF and ARM_MATH_MVEI.

Christophe Favergeon 6 жил өмнө
parent
commit
f3c31d5e01

+ 25 - 3
CMSIS/DSP/Include/arm_helium_utils.h

@@ -29,7 +29,12 @@
 #ifndef _ARM_UTILS_HELIUM_H_
 #define _ARM_UTILS_HELIUM_H_
 
-#if defined (ARM_MATH_HELIUM)
+/***************************************
+
+Definitions available for MVEF and MVEI
+
+***************************************/
+#if defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEF) || defined(ARM_MATH_MVEI)
 
 #define nbLanes(sz)             (128/sz)
 
@@ -56,6 +61,18 @@
          const float16_t*: VEC_LANES_F16, \
                   default: "err")
 
+
+
+#define post_incr_vec_size(ptr)         ptr += nb_vec_lanes(ptr)
+
+#endif /* defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEF) || defined(ARM_MATH_MVEI) */
+
+/***************************************
+
+Definitions available for MVEF only
+
+***************************************/
+#if defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEF)
 __STATIC_FORCEINLINE float32_t vecAddAcrossF32Mve(float32x4_t in)
 {
     float32_t acc;
@@ -65,9 +82,14 @@ __STATIC_FORCEINLINE float32_t vecAddAcrossF32Mve(float32x4_t in)
 
     return acc;
 }
+#endif /* defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEF) */
 
-#define post_incr_vec_size(ptr)         ptr += nb_vec_lanes(ptr)
+/***************************************
+
+Definitions available for MVEI only
 
-#endif
+***************************************/
+#if defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEI)
+#endif /* defined (ARM_MATH_HELIUM) || defined(ARM_MATH_MVEI) */
 
 #endif

+ 3 - 1
CMSIS/DSP/Source/CMakeLists.txt

@@ -17,7 +17,9 @@ option(NEONEXPERIMENTAL "Neon experimental acceleration" OFF)
 option(LOOPUNROLL "Loop unrolling" ON)
 option(ROUNDING "Rounding" OFF)
 option(MATRIXCHECK "Matrix Checks" OFF)
-option(HELIUM "Helium acceleration" OFF)
+option(HELIUM "Helium acceleration (MVEF and MVEI supported)" OFF)
+option(MVEF "MVEF intrinsics supported" OFF)
+option(MVEI "MVEI intrinsics supported" OFF)
 
 # Select which parts of the CMSIS-DSP must be compiled.
 # There are some dependencies between the parts but they are not tracked

+ 1 - 1
CMSIS/DSP/Testing/CMakeLists.txt

@@ -33,7 +33,7 @@ function(writeConfig path)
     list(APPEND output ",0")
   endif()
 
-  if (HELIUM)
+  if (HELIUM OR MVEI OR MVEF)
     list(APPEND output ",1")
   else()
     list(APPEND output ",0")

+ 8 - 0
CMSIS/DSP/configCore.cmake

@@ -192,6 +192,14 @@ function(configcore PROJECTNAME ROOT)
     target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_HELIUM)
   endif()
 
+  if (MVEF AND CORTEXM)
+    target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_MVEF)
+  endif()
+
+  if (MVEI AND CORTEXM)
+    target_compile_definitions(${PROJECTNAME} PRIVATE ARM_MATH_MVEI)
+  endif()
+
   compilerSpecificCompileOptions(${PROJECTNAME} ${ROOT})
 
 endfunction()