percona/percona-server
cmake/compiler_features.cmake
:217
add_definitions(-DHAVE_AVX2)
add_definitions(-DHAVE_AVX2)
check_cxx_source_compiles("
#include <immintrin.h>
int main() {
auto a = _mm256_insert_epi8(__m256i(), 0, 0);
(void)a;
auto b = _mm256_add_epi16(__m256i(), __m256i());
(void)b;
return 0;
}
" HAVE_AVX2)
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t32768\n"
"#define CLOCAL_BUFFER_SIZE\t16384\n"
"#define ZLOCAL_BUFFER_SIZE\t12288\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define HAVE_AVX512VL\n"
"#define SLOCAL_BUFFER_SIZE\t28672\n"
"#define DLOCAL_BUFFER_SIZE\t12288\n"
"#define CLOCAL_BUFFER_SIZE\t12288\n"
"#define ZLOCAL_BUFFER_SIZE\t8192\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define HAVE_AVX512VL\n"
"#define HAVE_AVX512BF16\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t12288\n"
"#define CLOCAL_BUFFER_SIZE\t12288\n"
"#define ZLOCAL_BUFFER_SIZE\t8192\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define HAVE_AVX512VL\n"
"#define HAVE_AVX512BF16\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t12288\n"
"#define CLOCAL_BUFFER_SIZE\t12288\n"
"#define ZLOCAL_BUFFER_SIZE\t8192\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t524288\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_SSE4A\n"
"#define HAVE_MISALIGNSSE\n"
"#define HAVE_128BITFPU\n"
"#define HAVE_FASTMOVU\n"
"#define HAVE_CFLUSH\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t32768\n"
"#define CLOCAL_BUFFER_SIZE\t16384\n"
"#define ZLOCAL_BUFFER_SIZE\t12288\n")
unset (HAVE_AVX2)
check_c_source_runs("
#include <immintrin.h>
int main()
{
__m256i a, b, c;
const int src[8] = { 1, 2, 3, 4, 5, 6, 7, 8 };
int dst[8];
a = _mm256_loadu_si256( (__m256i*)src );
b = _mm256_loadu_si256( (__m256i*)src );
c = _mm256_add_epi32( a, b );
_mm256_storeu_si256( (__m256i*)dst, c );
int i = 0;
for( i = 0; i < 8; i++ ){
if( ( src[i] + src[i] ) != dst[i] ){
return -1;
}
}
return 0;
}"
HAVE_AVX2)
else(HAVE_AVX2)
endif(HAVE_AVX2)
check_cxx_source_runs("
#include <immintrin.h>
int main() {
__m256i n = _mm256_set1_epi8(42);
(void)_mm256_movemask_epi8(_mm256_and_si256(n, n));
return 0;
}
" HAVE_AVX2)
list(APPEND simd_definitions HAVE_AVX2)
CHECK_CXX_SOURCE_RUNS("
#include <cstdint>
#include <immintrin.h>
int main() {
const auto a = _mm256_setr_epi32(0, 1, 2, 3, 4, 7, 6, 5);
const auto b = _mm256_permutevar8x32_epi32(a, a);
return 0;
}
" HAVE_AVX2)
add_definitions(-DHAVE_AVX2)
unset (HAVE_AVX2 CACHE)
unset (HAVE_AVX2)
check_c_compiler_flag (${FLAG} HAVE_AVX2)
CHECK_INCLUDE_FILE("immintrin.h" HAVE_AVX2)
add_definitions(-DHAVE_AVX2)
add_definitions(-DHAVE_AVX2)
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t32768\n"
"#define CLOCAL_BUFFER_SIZE\t16384\n"
"#define ZLOCAL_BUFFER_SIZE\t12288\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define HAVE_AVX512VL\n"
"#define SLOCAL_BUFFER_SIZE\t28672\n"
"#define DLOCAL_BUFFER_SIZE\t12288\n"
"#define CLOCAL_BUFFER_SIZE\t12288\n"
"#define ZLOCAL_BUFFER_SIZE\t8192\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define HAVE_AVX512VL\n"
"#define HAVE_AVX512BF16\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t12288\n"
"#define CLOCAL_BUFFER_SIZE\t12288\n"
"#define ZLOCAL_BUFFER_SIZE\t8192\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t262144\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_CMOV\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define HAVE_AVX512VL\n"
"#define HAVE_AVX512BF16\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t12288\n"
"#define CLOCAL_BUFFER_SIZE\t12288\n"
"#define ZLOCAL_BUFFER_SIZE\t8192\n")
file(APPEND ${TARGET_CONF_TEMP}
"#define L1_DATA_SIZE\t32768\n"
"#define L1_DATA_LINESIZE\t64\n"
"#define L2_SIZE\t524288\n"
"#define L2_LINESIZE\t64\n"
"#define DTB_DEFAULT_ENTRIES\t64\n"
"#define DTB_SIZE\t4096\n"
"#define HAVE_MMX\n"
"#define HAVE_SSE\n"
"#define HAVE_SSE2\n"
"#define HAVE_SSE3\n"
"#define HAVE_SSE4_1\n"
"#define HAVE_SSE4_2\n"
"#define HAVE_SSE4A\n"
"#define HAVE_MISALIGNSSE\n"
"#define HAVE_128BITFPU\n"
"#define HAVE_FASTMOVU\n"
"#define HAVE_CFLUSH\n"
"#define HAVE_AVX\n"
"#define HAVE_AVX2\n"
"#define HAVE_FMA3\n"
"#define SLOCAL_BUFFER_SIZE\t20480\n"
"#define DLOCAL_BUFFER_SIZE\t32768\n"
"#define CLOCAL_BUFFER_SIZE\t16384\n"
"#define ZLOCAL_BUFFER_SIZE\t12288\n")
unset (HAVE_AVX2)
check_cxx_source_compiles("
#include <immintrin.h>
int main() {
auto a = _mm256_add_epi16(__m256i(), __m256i());
(void)a;
return 0;
}
" HAVE_AVX2)