set(BUILD_AVX512 ON)
endif ()
+if (NOT FAT_RUNTIME)
+ if (BUILD_SVE2_BITPERM)
+ set(BUILD_SVE2 ON)
+ endif ()
+
+ if (BUILD_SVE2)
+ set(BUILD_SVE ON)
+ endif ()
+endif ()
+
# TODO: per platform config files?
# remove CMake's idea of optimisation
${hs_exec_common_SRCS}
src/util/arch/x86/cpuid_flags.c
)
-elseif (ARCH_ARM32 OR ARCH_AARCH64 OR ARCH_PPC64EL)
+elseif (ARCH_ARM32 OR ARCH_AARCH64)
set (hs_exec_common_SRCS
${hs_exec_common_SRCS}
src/util/arch/arm/cpuid_flags.c
endif ()
endif()
-if (FAT_RUNTIME OR (NOT FAT_RUNTIME AND NOT BUILD_SVE2))
-set (hs_exec_SRCS
- ${hs_exec_SRCS}
+set (hs_exec_neon_SRCS
+ src/nfa/vermicelli_simd.cpp)
+set (hs_exec_sve_SRCS
src/nfa/vermicelli_simd.cpp)
-endif()
set (hs_exec_avx2_SRCS
src/fdr/teddy_avx2.c
set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_avx2_SRCS})
endif()
+ if (NOT BUILD_SVE2)
+ set(hs_exec_SRCS ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
+ endif()
+
if (BUILD_STATIC_LIBS)
add_library(hs_exec OBJECT ${hs_exec_SRCS})
if (ARCH_AARCH64)
set(BUILD_WRAPPER "${PROJECT_SOURCE_DIR}/cmake/build_wrapper.sh")
if (BUILD_STATIC_LIBS)
- add_library(hs_exec_neon OBJECT ${hs_exec_SRCS})
+ set (BUILD_SVE OFF)
+ set (BUILD_SVE2 OFF)
+ set (BUILD_SVE2_BITPERM OFF)
+ add_library(hs_exec_neon OBJECT ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_neon>)
set_target_properties(hs_exec_neon PROPERTIES
COMPILE_FLAGS "-march=armv8-a"
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in"
)
- if (BUILD_SVE)
- add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>)
- set_target_properties(hs_exec_sve PROPERTIES
- COMPILE_FLAGS "-march=armv8-a+sve"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- endif (BUILD_SVE)
- if (BUILD_SVE2)
- add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
- list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>)
- set_target_properties(hs_exec_sve2 PROPERTIES
- COMPILE_FLAGS "-march=armv8-a+sve2"
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- endif (BUILD_SVE2)
+ set (BUILD_SVE ON)
+ add_library(hs_exec_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve>)
+ set_target_properties(hs_exec_sve PROPERTIES
+ COMPILE_FLAGS "-march=armv8-a+sve -DHAVE_SVE"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+ set (BUILD_SVE2 ON)
+ set (BUILD_SVE2_BITPERM ON)
+ add_library(hs_exec_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
+ list(APPEND RUNTIME_LIBS $<TARGET_OBJECTS:hs_exec_sve2>)
+ set_target_properties(hs_exec_sve2 PROPERTIES
+ COMPILE_FLAGS "-march=armv8-a+sve+sve2+sve2-bitperm -DHAVE_SVE -DHAVE_SVE2"
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
add_library(hs_exec_common OBJECT
${hs_exec_common_SRCS}
endif (BUILD_STATIC_LIBS)
if (BUILD_STATIC_AND_SHARED OR BUILD_SHARED_LIBS)
+ set (BUILD_SVE OFF)
+ set (BUILD_SVE2 OFF)
+ set (BUILD_SVE2_BITPERM OFF)
# build shared libs
add_library(hs_compile_shared OBJECT ${hs_compile_SRCS})
set_target_properties(hs_compile_shared PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
- add_library(hs_exec_shared_neon OBJECT ${hs_exec_SRCS})
+ add_library(hs_exec_shared_neon OBJECT ${hs_exec_SRCS} ${hs_exec_neon_SRCS})
list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_neon>)
set_target_properties(hs_exec_shared_neon PROPERTIES
COMPILE_FLAGS "-march=armv8-a"
RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} neon ${CMAKE_MODULE_PATH}/keep.syms.in"
)
- if (BUILD_SVE)
- add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
- list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve>)
- set_target_properties(hs_exec_shared_sve PROPERTIES
- COMPILE_FLAGS "-march=armv8-a+sve"
- POSITION_INDEPENDENT_CODE TRUE
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- endif (BUILD_SVE)
- if (BUILD_SVE2)
- add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
- list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve2>)
- set_target_properties(hs_exec_shared_sve2 PROPERTIES
- COMPILE_FLAGS "-march=armv8-a+sve2"
- POSITION_INDEPENDENT_CODE TRUE
- RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
- )
- endif (BUILD_SVE2)
+ set (BUILD_SVE ON)
+ add_library(hs_exec_shared_sve OBJECT ${hs_exec_SRCS} ${hs_exec_sve_SRCS})
+ list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve>)
+ set_target_properties(hs_exec_shared_sve PROPERTIES
+ COMPILE_FLAGS "-march=armv8-a+sve -DHAVE_SVE"
+ POSITION_INDEPENDENT_CODE TRUE
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
+ set (BUILD_SVE2 ON)
+ set (BUILD_SVE2_BITPERM ON)
+ add_library(hs_exec_shared_sve2 OBJECT ${hs_exec_SRCS} ${hs_exec_sve2_SRCS})
+ list(APPEND RUNTIME_SHLIBS $<TARGET_OBJECTS:hs_exec_shared_sve2>)
+ set_target_properties(hs_exec_shared_sve2 PROPERTIES
+ COMPILE_FLAGS "-march=armv8-a+sve+sve2+sve2-bitperm -DHAVE_SVE -DHAVE_SVE2"
+ POSITION_INDEPENDENT_CODE TRUE
+ RULE_LAUNCH_COMPILE "${BUILD_WRAPPER} sve2 ${CMAKE_MODULE_PATH}/keep.syms.in"
+ )
add_library(hs_exec_common_shared OBJECT
${hs_exec_common_SRCS}
src/dispatcher.c