diff --git a/CMakeLists.txt b/CMakeLists.txt index 95667e42e9fa1a492a85aa6429cc1a62895341bb..4ce52db80be1586ee89b430e0b26ca8873fadbcb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,10 +204,12 @@ if(EXISTS "/proc/cpuinfo") file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1) message("AVX512 is ${AVX512}") message("AVX2 is ${AVX2}") + # The following intrinsics are assumed to be available on any x86 system used to build the software (avx, f16c, fma, gnfi, mmx, pclmul, sse, sse2, sse3, xop) + set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE") if ("${AVX512}" STREQUAL "False") - set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE4_1_NATIVE -DSIMDE_X86_SSE4_2_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_SSSE3_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE") + set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native") else() - set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512") + set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512") endif() if (CPUINFO MATCHES "avx2" AND "${AVX2}" STREQUAL "True") set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE") diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 396c8dd4aaa4fb4e3968192c1127488b8e5987c3..423389aadc627300a69d36c69c2c79d2eae2fa6b 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -33,7 +33,7 @@ OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed " case "$OS_DISTRO" in fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;; rhel) OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;; - centos) OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;; + centos) OS_BASEDISTRO="centos"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;; debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;; ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;; esac diff --git a/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c b/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c index d3b777100778df90e708d7c08ef27e9ae3646dc4..ca62ceab6c0ecae2ca7d212b2ef9049297708aa8 100644 --- a/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c +++ b/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c @@ -359,14 +359,14 @@ void *trx_eth_write_udp_cmd(udpTXelem_t *udpTXelem) { #if defined(__x86_64__) || defined(__i386__) __m256i *buff256 = (__m256i *)&(((int32_t*)buff[aid])[offset]); for (int j=0; j<32; j+=8) { - buff_tx[1+j] = _mm256_slli_epi16(buff256[j],4); - buff_tx[2+j] = _mm256_slli_epi16(buff256[j+1],4); - buff_tx[3+j] = _mm256_slli_epi16(buff256[j+2],4); - buff_tx[4+j] = _mm256_slli_epi16(buff256[j+3],4); - buff_tx[5+j] = _mm256_slli_epi16(buff256[j+4],4); - buff_tx[6+j] = _mm256_slli_epi16(buff256[j+5],4); - buff_tx[7+j] = _mm256_slli_epi16(buff256[j+6],4); - buff_tx[8+j] = _mm256_slli_epi16(buff256[j+7],4); + buff_tx[1+j] = simde_mm256_slli_epi16(buff256[j],4); + buff_tx[2+j] = simde_mm256_slli_epi16(buff256[j+1],4); + buff_tx[3+j] = simde_mm256_slli_epi16(buff256[j+2],4); + buff_tx[4+j] = simde_mm256_slli_epi16(buff256[j+3],4); + buff_tx[5+j] = simde_mm256_slli_epi16(buff256[j+4],4); + buff_tx[6+j] = simde_mm256_slli_epi16(buff256[j+5],4); + buff_tx[7+j] = simde_mm256_slli_epi16(buff256[j+6],4); + buff_tx[8+j] = simde_mm256_slli_epi16(buff256[j+7],4); } #elif defined(__arm__) int16x8_t *buff128 = (__int16x8_t*)&buff[aid][offset];