summaryrefslogtreecommitdiff
path: root/deps/v8/third_party/zlib/patches/0010-cmake-enable-simd.patch
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/third_party/zlib/patches/0010-cmake-enable-simd.patch')
-rw-r--r--deps/v8/third_party/zlib/patches/0010-cmake-enable-simd.patch96
1 files changed, 96 insertions, 0 deletions
diff --git a/deps/v8/third_party/zlib/patches/0010-cmake-enable-simd.patch b/deps/v8/third_party/zlib/patches/0010-cmake-enable-simd.patch
new file mode 100644
index 0000000000..3893101b7c
--- /dev/null
+++ b/deps/v8/third_party/zlib/patches/0010-cmake-enable-simd.patch
@@ -0,0 +1,96 @@
+diff --git a/third_party/zlib/CMakeLists.txt b/third_party/zlib/CMakeLists.txt
+index b412dc7feb732..0431278405046 100644
+--- a/third_party/zlib/CMakeLists.txt
++++ b/third_party/zlib/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 2.4.4)
++cmake_minimum_required(VERSION 3.0)
+ set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON)
+
+ project(zlib C)
+@@ -21,6 +21,26 @@ check_include_file(sys/types.h HAVE_SYS_TYPES_H)
+ check_include_file(stdint.h HAVE_STDINT_H)
+ check_include_file(stddef.h HAVE_STDDEF_H)
+
++option(ENABLE_SIMD_OPTIMIZATIONS "Enable all SIMD optimizations" OFF)
++
++# TODO(cavalcantii): add support for other OSes (e.g. Android, fuchsia, osx)
++# and architectures (e.g. Arm).
++if (ENABLE_SIMD_OPTIMIZATIONS)
++ add_definitions(-DINFLATE_CHUNK_SIMD_SSE2)
++ add_definitions(-DADLER32_SIMD_SSSE3)
++ add_definitions(-DINFLATE_CHUNK_READ_64LE)
++ add_definitions(-DCRC32_SIMD_SSE42_PCLMUL)
++ add_definitions(-DDEFLATE_SLIDE_HASH_SSE2)
++ add_compile_options(-msse4.2 -mpclmul)
++ # Required by CPU features detection code.
++ add_definitions(-DX86_NOT_WINDOWS)
++ # Apparently some environments (e.g. CentOS) require to explicitly link
++ # with pthread and that is required by the CPU features detection code.
++ find_package (Threads REQUIRED)
++ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread")
++ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
++endif()
++
+ #
+ # Check to see if we have large file support
+ #
+@@ -120,10 +140,25 @@ set(ZLIB_SRCS
+ zutil.c
+ )
+
+-if(NOT MINGW)
+- set(ZLIB_DLL_SRCS
+- win32/zlib1.rc # If present will override custom build rule below.
+- )
++
++#============================================================================
++# Update list of source files if optimizations were enabled
++#============================================================================
++if (ENABLE_SIMD_OPTIMIZATIONS)
++ list(REMOVE_ITEM ZLIB_SRCS inflate.c)
++
++ list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/adler32_simd.h)
++ list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/chunkcopy.h)
++ list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/inffast_chunk.h)
++ list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/cpu_features.h)
++ list(APPEND ZLIB_PRIVATE_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/crc32_simd.h)
++
++ list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/adler32_simd.c)
++ list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/inffast_chunk.c)
++ list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/contrib/optimizations/inflate.c)
++ list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/cpu_features.c)
++ list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/crc32_simd.c)
++ list(APPEND ZLIB_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/crc_folding.c)
+ endif()
+
+ # parse the full version number from zlib.h and include in ZLIB_FULL_VERSION
+@@ -191,23 +226,9 @@ if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL )
+ endif()
+
+ #============================================================================
+-# Example binaries
++# Benchmarker
+ #============================================================================
+-
+-add_executable(example test/example.c)
+-target_link_libraries(example zlib)
+-add_test(example example)
+-
+-add_executable(minigzip test/minigzip.c)
+-target_link_libraries(minigzip zlib)
+-
+-if(HAVE_OFF64_T)
+- add_executable(example64 test/example.c)
+- target_link_libraries(example64 zlib)
+- set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+- add_test(example64 example64)
+-
+- add_executable(minigzip64 test/minigzip.c)
+- target_link_libraries(minigzip64 zlib)
+- set_target_properties(minigzip64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64")
+-endif()
++enable_language(CXX)
++set(CMAKE_CXX_STANDARD 14) # workaround for older compilers (e.g. g++ 5.4).
++add_executable(zlib_bench contrib/bench/zlib_bench.cc)
++target_link_libraries(zlib_bench zlib)