build: add optional NUMA and CPU counts detection
[dpdk.git] / config / x86 / meson.build
index 34b1164..29f3dea 100644 (file)
@@ -10,6 +10,19 @@ if not is_windows
     endif
 endif
 
+# check if compiler is working with _mm512_extracti64x4_epi64
+# Ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82887
+if cc.has_argument('-mavx512f')
+    code = '''#include <immintrin.h>
+    void test(__m512i zmm){
+        __m256i ymm = _mm512_extracti64x4_epi64(zmm, 0);}'''
+    result = cc.compiles(code, args : '-mavx512f', name : 'AVX512 checking')
+    if result == false
+        machine_args += '-mno-avx512f'
+        warning('Broken _mm512_extracti64x4_epi64, disabling AVX512 support')
+    endif
+endif
+
 # we require SSE4.2 for DPDK
 if cc.get_define('__SSE4_2__', args: machine_args) == ''
     message('SSE 4.2 not enabled by default, explicitly enabling')
@@ -22,18 +35,18 @@ foreach f:base_flags
 endforeach
 
 optional_flags = [
-    'AES',
-    'AVX',
-    'AVX2',
-    'AVX512BW',
-    'AVX512CD',
-    'AVX512DQ',
-    'AVX512F',
-    'AVX512VL',
-    'PCLMUL',
-    'RDRND',
-    'RDSEED',
-    'VPCLMULQDQ',
+        'AES',
+        'AVX',
+        'AVX2',
+        'AVX512BW',
+        'AVX512CD',
+        'AVX512DQ',
+        'AVX512F',
+        'AVX512VL',
+        'PCLMUL',
+        'RDRND',
+        'RDSEED',
+        'VPCLMULQDQ',
 ]
 foreach f:optional_flags
     if cc.get_define('__@0@__'.format(f), args: machine_args) == '1'
@@ -57,3 +70,5 @@ else
 endif
 
 dpdk_conf.set('RTE_CACHE_LINE_SIZE', 64)
+dpdk_conf.set('RTE_MAX_LCORE', 128)
+dpdk_conf.set('RTE_MAX_NUMA_NODES', 32)