diff --git a/CMakeLists.txt b/CMakeLists.txt index f246932c..5b457626 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -312,6 +312,9 @@ elseif (ARCH_ARM32 OR ARCH_AARCH64) CHECK_INCLUDE_FILE_CXX(arm_neon.h HAVE_C_ARM_NEON_H) if (BUILD_SVE OR BUILD_SVE2 OR BUILD_SVE2_BITPERM) CHECK_INCLUDE_FILE_CXX(arm_sve.h HAVE_C_ARM_SVE_H) + if (NOT HAVE_C_ARM_SVE_H) + message(FATAL_ERROR "arm_sve.h is required to build for SVE.") + endif() endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flax-vector-conversions") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flax-vector-conversions") diff --git a/cmake/arch.cmake b/cmake/arch.cmake index 15ec067e..073f26c5 100644 --- a/cmake/arch.cmake +++ b/cmake/arch.cmake @@ -41,10 +41,10 @@ if (ARCH_AARCH64) svuint8_t a = svbsl(svdup_u8(1), svdup_u8(2), svdup_u8(3)); (void)a; }" HAVE_SVE2) - if (HAVE_SVE2) - add_definitions(-DHAVE_SVE2) - endif () endif() + if (HAVE_SVE2 OR HAVE_SVE2_BITPERM) + add_definitions(-DHAVE_SVE2) + endif () if (BUILD_SVE) set(CMAKE_C_FLAGS "-march=${GNUCC_ARCH} ${CMAKE_C_FLAGS}") CHECK_C_SOURCE_COMPILES("#include @@ -52,9 +52,9 @@ if (ARCH_AARCH64) svuint8_t a = svdup_u8(1); (void)a; }" HAVE_SVE) - if (HAVE_SVE) - add_definitions(-DHAVE_SVE) - endif () + endif () + if (HAVE_SVE OR HAVE_SVE2 OR HAVE_SVE2_BITPERM) + add_definitions(-DHAVE_SVE) endif () set(CMAKE_C_FLAGS "${PREV_FLAGS}") endif() diff --git a/src/util/intrinsics.h b/src/util/intrinsics.h index 33beb497..099c8f91 100644 --- a/src/util/intrinsics.h +++ b/src/util/intrinsics.h @@ -47,15 +47,6 @@ #if defined(HAVE_C_ARM_NEON_H) # define USE_ARM_NEON_H -# if defined(HAVE_C_ARM_SVE_H) -# define USE_ARM_SVE -# if defined(BUILD_SVE2) -# define USE_ARM_SVE2 -# if defined(BUILD_SVE2_BITPERM) -# define USE_ARM_SVE2_BITPERM -# endif -# endif -# endif #endif #ifdef __cplusplus @@ -74,7 +65,7 @@ #include #elif defined(USE_ARM_NEON_H) #include -# if defined(USE_ARM_SVE) +# if defined(HAVE_SVE) # include # endif #else