diff --git a/build2cmake/src/templates/cpu/preamble.cmake b/build2cmake/src/templates/cpu/preamble.cmake index 18046454..3e2b5de8 100644 --- a/build2cmake/src/templates/cpu/preamble.cmake +++ b/build2cmake/src/templates/cpu/preamble.cmake @@ -42,3 +42,8 @@ endif() {% endif %} add_compile_definitions(CPU_KERNEL) + +check_for_sve(HAVE_SVE) +if(HAVE_SVE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8.2-a+sve") +endif() diff --git a/build2cmake/src/templates/utils.cmake b/build2cmake/src/templates/utils.cmake index d4d4cef2..67c2661c 100644 --- a/build2cmake/src/templates/utils.cmake +++ b/build2cmake/src/templates/utils.cmake @@ -555,3 +555,16 @@ function (define_gpu_extension_target GPU_MOD_NAME) install(TARGETS ${GPU_MOD_NAME} LIBRARY DESTINATION ${GPU_DESTINATION} COMPONENT ${GPU_MOD_NAME}) endfunction() + +include(CheckCXXSourceCompiles) + +macro(check_for_sve HAVE_SVE_VAR) + set(CMAKE_REQUIRED_FLAGS "-march=armv8.2-a+sve") + check_cxx_source_compiles(" + #include + int main() { + svint32_t v = svdup_s32(0); + return svaddv_s32(svptrue_b32(), v); + } + " ${HAVE_SVE_VAR}) +endmacro()