X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=blobdiff_plain;f=cmake%2FgmxTestSimd.cmake;h=47213b67f08c01941ddad6d44ce1aa4815d0f780;hb=c723a327aba4d1456902d348a5d710569a2d83d4;hp=f58429a23916aa1436d67214d77ed2b96b99b480;hpb=df876d6c7b594ded534d9b888e84141a054da11d;p=alexxy%2Fgromacs.git diff --git a/cmake/gmxTestSimd.cmake b/cmake/gmxTestSimd.cmake index f58429a239..47213b67f0 100644 --- a/cmake/gmxTestSimd.cmake +++ b/cmake/gmxTestSimd.cmake @@ -249,6 +249,26 @@ elseif(${GMX_SIMD} STREQUAL "AVX2_256") set(GMX_SIMD_X86_AVX2_256 1) set(SIMD_STATUS_MESSAGE "Enabling 256-bit AVX2 SIMD instructions") +elseif(${GMX_SIMD} STREQUAL "ARM_NEON") + + gmx_find_cflag_for_source(CFLAGS_ARM_NEON "C compiler 32-bit ARM NEON flag" + "#include + int main(){float32x4_t x=vdupq_n_f32(0.5);x=vmlaq_f32(x,x,x);return vgetq_lane_f32(x,0)>0;}" + SIMD_C_FLAGS + "-mfpu=neon" "") + gmx_find_cxxflag_for_source(CXXFLAGS_ARM_NEON "C++ compiler 32-bit ARM NEON flag" + "#include + int main(){float32x4_t x=vdupq_n_f32(0.5);x=vmlaq_f32(x,x,x);return vgetq_lane_f32(x,0)>0;}" + SIMD_CXX_FLAGS + "-mfpu=neon" "") + + if(NOT CFLAGS_ARM_NEON OR NOT CXXFLAGS_ARM_NEON) + message(FATAL_ERROR "Cannot find ARM 32-bit NEON compiler flag. Use a newer compiler, or disable NEON SIMD.") + endif() + + set(GMX_SIMD_ARM_NEON 1) + set(SIMD_STATUS_MESSAGE "Enabling 32-bit ARM NEON SIMD instructions") + elseif(${GMX_SIMD} STREQUAL "IBM_QPX") try_compile(TEST_QPX ${CMAKE_BINARY_DIR}