@@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 2.8.11)
2
2
project (hyperscan C CXX)
3
3
4
4
set (HS_MAJOR_VERSION 5)
5
- set (HS_MINOR_VERSION 3 )
5
+ set (HS_MINOR_VERSION 4 )
6
6
set (HS_PATCH_VERSION 0)
7
7
set (HS_VERSION ${HS_MAJOR_VERSION} .${HS_MINOR_VERSION} .${HS_PATCH_VERSION} )
8
8
@@ -133,6 +133,13 @@ CMAKE_DEPENDENT_OPTION(DISABLE_ASSERTS "Disable assert(); Asserts are enabled in
133
133
option (BUILD_AVX512 "Experimental: support avx512 in the fat runtime"
134
134
OFF )
135
135
136
+ option (BUILD_AVX512VBMI "Experimental: support avx512vbmi in the fat runtime"
137
+ OFF )
138
+
139
+ if (BUILD_AVX512VBMI)
140
+ set (BUILD_AVX512 ON )
141
+ endif ()
142
+
136
143
option (WINDOWS_ICC "Use Intel C++ Compiler on Windows, default off, requires ICC to be set in project" OFF )
137
144
138
145
# TODO: per platform config files?
@@ -277,6 +284,7 @@ else()
277
284
set (SKYLAKE_FLAG "-xCORE-AVX512" )
278
285
else ()
279
286
set (SKYLAKE_FLAG "-march=skylake-avx512" )
287
+ set (ICELAKE_FLAG "-march=icelake-server" )
280
288
endif ()
281
289
endif ()
282
290
@@ -1197,6 +1205,9 @@ else (FAT_RUNTIME)
1197
1205
if (NOT BUILD_AVX512)
1198
1206
set (DISPATCHER_DEFINE "-DDISABLE_AVX512_DISPATCH" )
1199
1207
endif (NOT BUILD_AVX512)
1208
+ if (NOT BUILD_AVX512VBMI)
1209
+ set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DDISABLE_AVX512VBMI_DISPATCH" )
1210
+ endif (NOT BUILD_AVX512VBMI)
1200
1211
set_source_files_properties (src/dispatcher.c PROPERTIES
1201
1212
COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE} " )
1202
1213
@@ -1229,6 +1240,14 @@ else (FAT_RUNTIME)
1229
1240
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH} /keep.syms.in"
1230
1241
)
1231
1242
endif (BUILD_AVX512)
1243
+ if (BUILD_AVX512VBMI)
1244
+ add_library (hs_exec_avx512vbmi OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS} )
1245
+ list (APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_avx512vbmi>)
1246
+ set_target_properties (hs_exec_avx512vbmi PROPERTIES
1247
+ COMPILE_FLAGS "${ICELAKE_FLAG} "
1248
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi ${CMAKE_MODULE_PATH} /keep.syms.in"
1249
+ )
1250
+ endif (BUILD_AVX512VBMI)
1232
1251
1233
1252
add_library (hs_exec_common OBJECT
1234
1253
${hs_exec_common_SRCS}
@@ -1287,6 +1306,15 @@ else (FAT_RUNTIME)
1287
1306
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512 ${CMAKE_MODULE_PATH} /keep.syms.in"
1288
1307
)
1289
1308
endif (BUILD_AVX512)
1309
+ if (BUILD_AVX512VBMI)
1310
+ add_library (hs_exec_shared_avx512vbmi OBJECT ${hs_exec_SRCS} ${hs_exec_avx2_SRCS} )
1311
+ list (APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_avx512vbmi>)
1312
+ set_target_properties (hs_exec_shared_avx512vbmi PROPERTIES
1313
+ COMPILE_FLAGS "${ICELAKE_FLAG} "
1314
+ POSITION_INDEPENDENT_CODE TRUE
1315
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} avx512vbmi ${CMAKE_MODULE_PATH} /keep.syms.in"
1316
+ )
1317
+ endif (BUILD_AVX512VBMI)
1290
1318
add_library (hs_exec_common_shared OBJECT
1291
1319
${hs_exec_common_SRCS}
1292
1320
src/dispatcher.c
@@ -1380,7 +1408,7 @@ if (NOT BUILD_STATIC_LIBS)
1380
1408
add_library (hs ALIAS hs_shared)
1381
1409
endif ()
1382
1410
1383
-
1384
- if (NOT WIN32 )
1411
+ option (BUILD_EXAMPLES "Build Hyperscan example code (default TRUE)" TRUE )
1412
+ if (NOT WIN32 AND BUILD_EXAMPLES )
1385
1413
add_subdirectory (examples)
1386
1414
endif ()
0 commit comments