X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?a=blobdiff_plain;f=cmake%2FgmxTestSimd.cmake;h=090ba65cf8adc18eda20afec5d3c49ca443d9822;hb=fe90f1c1c71a3a43a27ec9ba76e772ae54786c7f;hp=db57dd3f36771c081bf0d5693486ec9e9b57cd17;hpb=15191e1aede147b28201efd57b7b0fc2647b9975;p=alexxy%2Fgromacs.git diff --git a/cmake/gmxTestSimd.cmake b/cmake/gmxTestSimd.cmake index db57dd3f36..090ba65cf8 100644 --- a/cmake/gmxTestSimd.cmake +++ b/cmake/gmxTestSimd.cmake @@ -333,6 +333,26 @@ elseif(${GMX_SIMD} STREQUAL "IBM_VMX") set(GMX_SIMD_IBM_VMX 1) set(SIMD_STATUS_MESSAGE "Enabling IBM VMX SIMD instructions") +elseif(${GMX_SIMD} STREQUAL "IBM_VSX") + + gmx_find_cflag_for_source(CFLAGS_IBM_VSX "C compiler IBM VSX SIMD flag" + "#include + int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}" + SIMD_C_FLAGS + "-mvsx" "-maltivec -mabi=altivec" "-qarch=auto -qaltivec") + gmx_find_cxxflag_for_source(CXXFLAGS_IBM_VSX "C++ compiler IBM VSX SIMD flag" + "#include + int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}" + SIMD_CXX_FLAGS + "-mvsx" "-maltivec -mabi=altivec" "-qarch=auto -qaltivec") + + if(NOT CFLAGS_IBM_VSX OR NOT CXXFLAGS_IBM_VSX) + message(FATAL_ERROR "Cannot find IBM VSX SIMD compiler flag. Use a newer compiler, or disable VSX SIMD.") + endif() + + set(GMX_SIMD_IBM_VSX 1) + set(SIMD_STATUS_MESSAGE "Enabling IBM VSX SIMD instructions") + elseif(${GMX_SIMD} STREQUAL "SPARC64_HPC_ACE") # Note that GMX_RELAXED_DOUBLE_PRECISION is enabled by default in the top-level CMakeLists.txt