From 0e915a0458122f0273009183a32bc66e3354664d Mon Sep 17 00:00:00 2001 From: Christophe Favergeon Date: Thu, 26 Sep 2019 15:11:29 +0200 Subject: [PATCH] CMSIS-DSP: Added ARM_MATH_AUTOVECTORIZE and AUTOVECTORIZE to cmake It is to provide more control and to disable intrinsics version of some kernels when the C code is simple enough to benefit from vectorization. Since the result is compiler dependent, this option is optional. (And it is not yet added to the source files). Compilation flags may have to be tuned (-O3 for instance ...) --- Source/configDsp.cmake | 6 ++++++ Toolchain/AC6.cmake | 2 +- configLib.cmake | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/configDsp.cmake b/Source/configDsp.cmake index ccdf5cba..b472be0d 100644 --- a/Source/configDsp.cmake +++ b/Source/configDsp.cmake @@ -18,8 +18,14 @@ if (MATRIXCHECK) target_compile_definitions(${project} PRIVATE ARM_MATH_MATRIX_CHECK) endif() +if (AUTOVECTORIZE) + target_compile_definitions(${project} PRIVATE ARM_MATH_AUTOVECTORIZE) +endif() + if (NEON OR NEONEXPERIMENTAL) target_include_directories(${project} PRIVATE "${root}/CMSIS/DSP/ComputeLibrary/Include") endif() + + endfunction() \ No newline at end of file diff --git a/Toolchain/AC6.cmake b/Toolchain/AC6.cmake index 8604f0ce..6cde1df3 100644 --- a/Toolchain/AC6.cmake +++ b/Toolchain/AC6.cmake @@ -17,7 +17,7 @@ function(compilerSpecificCompileOptions PROJECTNAME ROOT) get_target_property(DISABLEOPTIM ${PROJECTNAME} DISABLEOPTIMIZATION) if ((OPTIMIZED) AND (NOT DISABLEOPTIM)) #cmake_print_variables(DISABLEOPTIM) - target_compile_options(${PROJECTNAME} PRIVATE "-O2") + target_compile_options(${PROJECTNAME} PRIVATE "-O3") endif() if (FASTMATHCOMPUTATIONS) diff --git a/configLib.cmake b/configLib.cmake index ab35b353..1b7abc09 100755 --- a/configLib.cmake +++ b/configLib.cmake @@ -5,6 +5,7 @@ include(Toolchain/Tools) option(OPTIMIZED "Compile for speed" ON) +option(AUTOVECTORIZE "Prefer autovectorizable code to one using C intrinsics" OFF) enable_language(CXX C ASM)