Backport autofoo simd optimization

Change-Id: I5d58154bf8266eabedf550b54f18845612f514c6
Reviewed-on: https://code.wireshark.org/review/2206
Reviewed-by: Jörg Mayer <jmayer@loplof.de>
This commit is contained in:
Joerg Mayer 2014-06-13 17:59:02 +02:00 committed by Jörg Mayer
parent a4a7d2cfec
commit 935280317a
3 changed files with 49 additions and 1 deletions

View File

@ -169,6 +169,8 @@ if( CMAKE_C_COMPILER_ID MATCHES "MSVC")
# This avoids conflicts with the C++ standard library.
/DNOMINMAX
)
set(WIRESHARK_SIMD_TESTS
)
if(NOT WIN64)
set(LOCAL_CFLAGS ${LOCAL_CFLAGS} "/D_BIND_TO_CURRENT_CRT_VERSION=1")
@ -313,6 +315,18 @@ else()
set(WIRESHARK_CPP_ONLY_FLAGS ${WIRESHARK_CPP_ONLY_FLAGS} ${WIRESHARK_EXTRA_COMPILER_CPP_ONLY_FLAGS})
endif()
set(WIRESHARK_SIMD_TESTS
-faltivec
-mmmx
-msse
-msse2
-msse3
-mssse3
-msse4.1
-msse4.2
-mavx
)
add_definitions(
-DG_DISABLE_DEPRECATED
-DG_DISABLE_SINGLE_INCLUDES
@ -361,6 +375,23 @@ foreach(THIS_FLAG ${CPP_FLAG_TESTS})
endforeach()
message(STATUS "C-Flags: ${CMAKE_C_FLAGS}\nCXX-Flags: ${CMAKE_CXX_FLAGS}")
foreach(THIS_FLAG ${WIRESHARK_SIMD_TESTS})
string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
set(${F} ${THIS_FLAG})
set(V C_${F}_VALID)
message(STATUS "Checking for c-compiler SIMD flag: ${THIS_FLAG}")
check_c_compiler_flag(${${F}} ${V})
if (${${V}})
set(WIRESHARK_SIMD_FLAGS "${WIRESHARK_SIMD_FLAGS} ${${F}}")
endif()
endforeach()
string(REGEX MATCH -msse4.2
HAVE_SSE4_2
${WIRESHARK_SIMD_FLAGS}
)
message( STATUS "HAVE_SSE4_2: ${HAVE_SSE4_2}" )
check_c_compiler_flag(-fvisibility=hidden FVHIDDEN)
if(FVHIDDEN)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")

View File

@ -15,6 +15,9 @@
/* Directory for data */
#define DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}"
/* Build wsutil with SIMD optimization */
#cmakedefine HAVE_SSE4_2 1
/* Path to Python. */
#cmakedefine PYTHON_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}/python/${CPACK_PACKAGE_VERSION}"

View File

@ -21,7 +21,7 @@
include(UseABICheck)
IF(WIN32)
if(WIN32)
set(WSUTIL_PLATFORM_FILES
file_util.c
inet_aton.c
@ -32,6 +32,12 @@ IF(WIN32)
)
ENDIF(WIN32)
if(HAVE_SSE4_2)
set( WSUTIL_SSE42_FILES
ws_mempbrk_sse42.c
)
endif()
set(WSUTIL_FILES
adler32.c
aes.c
@ -76,6 +82,7 @@ set(WSUTIL_FILES
nghttp2/nghttp2_hd_huffman_data.c
nghttp2/nghttp2_helper.c
${WSUTIL_PLATFORM_FILES}
${WSUTIL_SSE42_FILES}
)
set(wsutil_LIBS
@ -99,6 +106,13 @@ if (WERROR)
COMPILE_FLAGS -Werror
)
endif()
if (HAVE_SSE4_2)
set_source_files_properties(
${WSUTIL_SSE42_FILES}
PROPERTIES
COMPILE_FLAGS -msse4.2
)
endif()
add_library(wsutil ${LINK_MODE_LIB}
${WSUTIL_FILES}