etternagame/etterna
extern/fftw-3.3.8/CMakeLists.txt
:180
unset (HAVE_FMA CACHE)
unset (HAVE_FMA CACHE)
check_c_compiler_flag (${FLAG} HAVE_FMA)
add_definitions("-DHAVE_FMA")
endif(HAVE_FMA)
check_cxx_compiler_flag("-mfma" HAVE_FMA)
add_definitions("-DHAVE_FMA")
message(STATUS "HAVE_FMA: ${HAVE_FMA}")
endif(HAVE_FMA)
endif (HAVE_FMA)
check_c_source_runs("
#include <immintrin.h>
int main()
{
__m256 a, b, c, r;
const float src[8] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f };
float dst[8];
a = _mm256_loadu_ps( src );
b = _mm256_loadu_ps( src );
c = _mm256_loadu_ps( src );
r = _mm256_fmadd_ps( a, b, c );
_mm256_storeu_ps( dst, r );
int i = 0;
for( i = 0; i < 8; i++ ){
if( ( src[i] * src[i] + src[i] ) != dst[i] ){
return -1;
}
}
return 0;
}"
HAVE_FMA)
mark_as_advanced(HAVE_SSE, HAVE_AVX, HAVE_AVX2, HAVE_FMA, HAVE_AVX512)