From ac25a2ea6abe9041a5cb58b794ff4581a00e89a3 Mon Sep 17 00:00:00 2001 From: Vladislav Shchapov Date: Sat, 3 Feb 2024 21:26:57 +0500 Subject: [PATCH] Split CPU features checks and CPU-specific function prototypes and reduce include-dependencies. Signed-off-by: Vladislav Shchapov --- CMakeLists.txt | 15 ++-- arch/arm/arm_features.h | 46 +--------- arch/arm/arm_functions.h | 35 ++++++++ arch/generic/Makefile.in | 8 +- arch/generic/adler32_fold_c.c | 1 - arch/generic/adler32_fold_c.h | 11 --- arch/generic/crc32_fold_c.c | 3 +- arch/generic/crc32_fold_c.h | 13 --- ...generic_features.h => generic_functions.h} | 24 ++++-- arch/power/power_features.h | 38 +-------- arch/power/power_functions.h | 30 +++++++ arch/riscv/riscv_features.h | 27 +----- arch/riscv/riscv_functions.h | 25 ++++++ arch/s390/crc32-vx.c | 2 +- arch/s390/s390_features.h | 12 +-- arch/s390/s390_functions.h | 12 +++ arch/x86/adler32_avx512.c | 2 +- arch/x86/adler32_avx512_vnni.c | 2 +- arch/x86/x86_features.h | 85 +------------------ arch/x86/x86_functions.h | 73 ++++++++++++++++ cpu_features.h | 2 - cpu_functions.h | 29 +++++++ crc32_braid_p.h | 2 - functable.c | 1 + functable.h | 5 +- test/benchmarks/benchmark_adler32.cc | 1 + test/benchmarks/benchmark_adler32_copy.cc | 1 + test/benchmarks/benchmark_compare256.cc | 1 + test/benchmarks/benchmark_compare256_rle.cc | 1 - test/benchmarks/benchmark_crc32.cc | 1 + test/benchmarks/benchmark_slidehash.cc | 1 + test/test_adler32.cc | 1 + test/test_compare256.cc | 1 + test/test_crc32.cc | 1 + win32/Makefile.a64 | 4 +- win32/Makefile.arm | 4 +- win32/Makefile.msc | 6 +- 37 files changed, 265 insertions(+), 261 deletions(-) create mode 100644 arch/arm/arm_functions.h delete mode 100644 arch/generic/adler32_fold_c.h delete mode 100644 arch/generic/crc32_fold_c.h rename arch/generic/{generic_features.h => generic_functions.h} (78%) create mode 100644 arch/power/power_functions.h create mode 100644 arch/riscv/riscv_functions.h create mode 100644 arch/s390/s390_functions.h create mode 100644 arch/x86/x86_functions.h create mode 100644 cpu_functions.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 18ef824910..f13abb1626 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -560,7 +560,7 @@ endif() set(GENERIC_ARCHDIR "arch/generic") set(ZLIB_ARCH_SRCS) -set(ZLIB_ARCH_HDRS ${GENERIC_ARCHDIR}/generic_features.h) +set(ZLIB_ARCH_HDRS ${GENERIC_ARCHDIR}/generic_functions.h) if(BASEARCH_ARM_FOUND) set(ARCHDIR "arch/arm") @@ -647,7 +647,7 @@ if(WITH_OPTIM) endif() endif() endif() - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm_features.h) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/arm_features.h ${ARCHDIR}/arm_functions.h) list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/arm_features.c) if(WITH_ACLE) check_acle_compiler_flag() @@ -719,7 +719,7 @@ if(WITH_OPTIM) add_definitions(-DPOWER_FEATURES) endif() if(HAVE_VMX OR HAVE_POWER8_INTRIN OR HAVE_POWER9_INTRIN) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/power_features.h) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/power_features.h ${ARCHDIR}/power_functions.h) list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/power_features.c) endif() # VMX specific options and files @@ -769,7 +769,7 @@ if(WITH_OPTIM) if(HAVE_RVV_INTRIN) add_definitions(-DRISCV_FEATURES) add_definitions(-DRISCV_RVV) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/riscv_features.h) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/riscv_features.h ${ARCHDIR}/riscv_functions.h) list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/riscv_features.c) # FIXME: we will not set compile flags for riscv_features.c when # the kernels update hwcap or hwprobe for riscv @@ -784,7 +784,7 @@ if(WITH_OPTIM) check_s390_intrinsics() if(HAVE_S390_INTRIN) add_definitions(-DS390_FEATURES) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/s390_features.h) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/s390_features.h ${ARCHDIR}/s390_functions.h) list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/s390_features.c) endif() if(WITH_DFLTCC_DEFLATE OR WITH_DFLTCC_INFLATE) @@ -811,7 +811,7 @@ if(WITH_OPTIM) endif() elseif(BASEARCH_X86_FOUND) add_definitions(-DX86_FEATURES) - list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/x86_features.h) + list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/x86_features.h ${ARCHDIR}/x86_functions.h) list(APPEND ZLIB_ARCH_SRCS ${ARCHDIR}/x86_features.c) if(MSVC) list(APPEND ZLIB_ARCH_HDRS fallback_builtins.h) @@ -1002,11 +1002,10 @@ set(ZLIB_PUBLIC_HDRS ${CMAKE_CURRENT_BINARY_DIR}/zlib${SUFFIX}.h ) set(ZLIB_PRIVATE_HDRS - arch/generic/adler32_fold_c.h - arch/generic/crc32_fold_c.h adler32_p.h chunkset_tpl.h compare256_rle.h + cpu_functions.h cpu_features.h crc32_braid_p.h crc32_braid_comb_p.h diff --git a/arch/arm/arm_features.h b/arch/arm/arm_features.h index e0faaaf738..d968e02fbb 100644 --- a/arch/arm/arm_features.h +++ b/arch/arm/arm_features.h @@ -2,8 +2,8 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef ARM_H_ -#define ARM_H_ +#ifndef ARM_FEATURES_H_ +#define ARM_FEATURES_H_ struct arm_cpu_features { int has_simd; @@ -13,44 +13,4 @@ struct arm_cpu_features { void Z_INTERNAL arm_check_features(struct arm_cpu_features *features); -#ifdef CPU_FEATURES_H_ - -#ifdef ARM_NEON -uint32_t adler32_neon(uint32_t adler, const uint8_t *buf, size_t len); -uint32_t chunksize_neon(void); -uint8_t* chunkmemset_safe_neon(uint8_t *out, unsigned dist, unsigned len, unsigned left); - -# ifdef HAVE_BUILTIN_CTZLL - uint32_t compare256_neon(const uint8_t *src0, const uint8_t *src1); -# ifdef DEFLATE_H_ - uint32_t longest_match_neon(deflate_state *const s, Pos cur_match); - uint32_t longest_match_slow_neon(deflate_state *const s, Pos cur_match); -# endif -# endif -# ifdef DEFLATE_H_ - void slide_hash_neon(deflate_state *s); -# endif -# ifdef INFLATE_H_ - void inflate_fast_neon(PREFIX3(stream) *strm, uint32_t start); -# endif -#endif - -#ifdef ARM_ACLE -uint32_t crc32_acle(uint32_t crc, const uint8_t *buf, size_t len); - -# ifdef DEFLATE_H_ - void insert_string_acle(deflate_state *const s, const uint32_t str, uint32_t count); - Pos quick_insert_string_acle(deflate_state *const s, const uint32_t str); - uint32_t update_hash_acle(deflate_state *const s, uint32_t h, uint32_t val); -# endif -#endif - -#ifdef ARM_SIMD -# ifdef DEFLATE_H_ - void slide_hash_armv6(deflate_state *s); -# endif -#endif - -#endif - -#endif /* ARM_H_ */ +#endif /* ARM_FEATURES_H_ */ diff --git a/arch/arm/arm_functions.h b/arch/arm/arm_functions.h new file mode 100644 index 0000000000..bf867e93cc --- /dev/null +++ b/arch/arm/arm_functions.h @@ -0,0 +1,35 @@ +/* arm_functions.h -- ARM implementations for arch-specific functions. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifndef ARM_FUNCTIONS_H_ +#define ARM_FUNCTIONS_H_ + + +#ifdef ARM_NEON +uint32_t adler32_neon(uint32_t adler, const uint8_t *buf, size_t len); +uint32_t chunksize_neon(void); +uint8_t* chunkmemset_safe_neon(uint8_t *out, unsigned dist, unsigned len, unsigned left); + +# ifdef HAVE_BUILTIN_CTZLL +uint32_t compare256_neon(const uint8_t *src0, const uint8_t *src1); +uint32_t longest_match_neon(deflate_state *const s, Pos cur_match); +uint32_t longest_match_slow_neon(deflate_state *const s, Pos cur_match); +# endif +void slide_hash_neon(deflate_state *s); +void inflate_fast_neon(PREFIX3(stream) *strm, uint32_t start); +#endif + +#ifdef ARM_ACLE +uint32_t crc32_acle(uint32_t crc, const uint8_t *buf, size_t len); + +void insert_string_acle(deflate_state *const s, const uint32_t str, uint32_t count); +Pos quick_insert_string_acle(deflate_state *const s, const uint32_t str); +uint32_t update_hash_acle(deflate_state *const s, uint32_t h, uint32_t val); +#endif + +#ifdef ARM_SIMD +void slide_hash_armv6(deflate_state *s); +#endif + +#endif /* ARM_FUNCTIONS_H_ */ diff --git a/arch/generic/Makefile.in b/arch/generic/Makefile.in index fd32b3ec54..412b41a5ee 100644 --- a/arch/generic/Makefile.in +++ b/arch/generic/Makefile.in @@ -29,10 +29,10 @@ adler32_c.o: $(SRCDIR)/adler32_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/adler32_p.h adler32_c.lo: $(SRCDIR)/adler32_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/adler32_p.h $(CC) $(SFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/adler32_c.c -adler32_fold_c.o: $(SRCDIR)/adler32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(SRCDIR)/adler32_fold_c.h +adler32_fold_c.o: $(SRCDIR)/adler32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/adler32_fold_c.c -adler32_fold_c.lo: $(SRCDIR)/adler32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(SRCDIR)/adler32_fold_c.h +adler32_fold_c.lo: $(SRCDIR)/adler32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(CC) $(SFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/adler32_fold_c.c chunkset_c.o: $(SRCDIR)/chunkset_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/chunkset_tpl.h $(SRCTOP)/inffast_tpl.h @@ -53,10 +53,10 @@ crc32_braid_c.o: $(SRCDIR)/crc32_braid_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/crc32_b crc32_braid_c.lo: $(SRCDIR)/crc32_braid_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/crc32_braid_p.h $(SRCTOP)/crc32_braid_tbl.h $(CC) $(SFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/crc32_braid_c.c -crc32_fold_c.o: $(SRCDIR)/crc32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(SRCDIR)/crc32_fold_c.h +crc32_fold_c.o: $(SRCDIR)/crc32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/crc32_fold_c.c -crc32_fold_c.lo: $(SRCDIR)/crc32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(SRCDIR)/crc32_fold_c.h +crc32_fold_c.lo: $(SRCDIR)/crc32_fold_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/functable.h $(CC) $(SFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/crc32_fold_c.c insert_string_c.o: $(SRCDIR)/insert_string_c.c $(SRCTOP)/zbuild.h $(SRCTOP)/deflate.h $(SRCTOP)/insert_string_tpl.h diff --git a/arch/generic/adler32_fold_c.c b/arch/generic/adler32_fold_c.c index abefdc5b63..24aa1cf1bc 100644 --- a/arch/generic/adler32_fold_c.c +++ b/arch/generic/adler32_fold_c.c @@ -5,7 +5,6 @@ #include "zbuild.h" #include "functable.h" -#include "adler32_fold_c.h" #include diff --git a/arch/generic/adler32_fold_c.h b/arch/generic/adler32_fold_c.h deleted file mode 100644 index b231b1a99e..0000000000 --- a/arch/generic/adler32_fold_c.h +++ /dev/null @@ -1,11 +0,0 @@ -/* adler32_fold.h -- adler32 folding interface - * Copyright (C) 2022 Adam Stylinski - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#ifndef ADLER32_FOLD_C_H_ -#define ADLER32_FOLD_C_H_ - -Z_INTERNAL uint32_t adler32_fold_copy_c(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); - -#endif diff --git a/arch/generic/crc32_fold_c.c b/arch/generic/crc32_fold_c.c index 404c6e2110..7628932780 100644 --- a/arch/generic/crc32_fold_c.c +++ b/arch/generic/crc32_fold_c.c @@ -3,11 +3,10 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ #include "zbuild.h" +#include "zutil.h" #include "functable.h" #include "crc32.h" -#include "crc32_fold_c.h" - Z_INTERNAL uint32_t crc32_fold_reset_c(crc32_fold *crc) { crc->value = CRC32_INITIAL_VALUE; return crc->value; diff --git a/arch/generic/crc32_fold_c.h b/arch/generic/crc32_fold_c.h deleted file mode 100644 index f68689c09e..0000000000 --- a/arch/generic/crc32_fold_c.h +++ /dev/null @@ -1,13 +0,0 @@ -/* crc32_fold.h -- crc32 folding interface - * Copyright (C) 2021 Nathan Moinvaziri - * For conditions of distribution and use, see copyright notice in zlib.h - */ -#ifndef CRC32_FOLD_C_H_ -#define CRC32_FOLD_C_H_ - -Z_INTERNAL uint32_t crc32_fold_reset_c(crc32_fold *crc); -Z_INTERNAL void crc32_fold_copy_c(crc32_fold *crc, uint8_t *dst, const uint8_t *src, size_t len); -Z_INTERNAL void crc32_fold_c(crc32_fold *crc, const uint8_t *src, size_t len, uint32_t init_crc); -Z_INTERNAL uint32_t crc32_fold_final_c(crc32_fold *crc); - -#endif diff --git a/arch/generic/generic_features.h b/arch/generic/generic_functions.h similarity index 78% rename from arch/generic/generic_features.h rename to arch/generic/generic_functions.h index 511bce0336..a12b47cea5 100644 --- a/arch/generic/generic_features.h +++ b/arch/generic/generic_functions.h @@ -1,20 +1,29 @@ -/* generic_features.h -- generic C implementations for arch-specific features +/* generic_functions.h -- generic C implementations for arch-specific functions. * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef GENERIC_FEATURES_H_ -#define GENERIC_FEATURES_H_ +#ifndef GENERIC_FUNCTIONS_H_ +#define GENERIC_FUNCTIONS_H_ + +#include "zendian.h" + +Z_INTERNAL uint32_t crc32_fold_reset_c(crc32_fold *crc); +Z_INTERNAL void crc32_fold_copy_c(crc32_fold *crc, uint8_t *dst, const uint8_t *src, size_t len); +Z_INTERNAL void crc32_fold_c(crc32_fold *crc, const uint8_t *src, size_t len, uint32_t init_crc); +Z_INTERNAL uint32_t crc32_fold_final_c(crc32_fold *crc); + +Z_INTERNAL uint32_t adler32_fold_copy_c(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); + typedef uint32_t (*adler32_func)(uint32_t adler, const uint8_t *buf, size_t len); typedef uint32_t (*compare256_func)(const uint8_t *src0, const uint8_t *src1); typedef uint32_t (*crc32_func)(uint32_t crc32, const uint8_t *buf, size_t len); uint32_t adler32_c(uint32_t adler, const uint8_t *buf, size_t len); + uint32_t chunksize_c(void); uint8_t* chunkmemset_safe_c(uint8_t *out, unsigned dist, unsigned len, unsigned left); -#ifdef INFLATE_H_ void inflate_fast_c(PREFIX3(stream) *strm, uint32_t start); -#endif uint32_t PREFIX(crc32_braid)(uint32_t crc, const uint8_t *buf, size_t len); @@ -29,8 +38,7 @@ uint32_t compare256_unaligned_16(const uint8_t *src0, const uint8_t *src1); # endif #endif -#ifdef DEFLATE_H_ -typedef void (*slide_hash_func)(deflate_state *s); +typedef void (*slide_hash_func)(deflate_state *s); void insert_string_c(deflate_state *const s, const uint32_t str, uint32_t count); Pos quick_insert_string_c(deflate_state *const s, const uint32_t str); @@ -58,5 +66,3 @@ uint32_t longest_match_slow_c(deflate_state *const s, Pos cur_match); # endif #endif - -#endif diff --git a/arch/power/power_features.h b/arch/power/power_features.h index acb618115e..1ff51de5dd 100644 --- a/arch/power/power_features.h +++ b/arch/power/power_features.h @@ -4,8 +4,8 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef POWER_H_ -#define POWER_H_ +#ifndef POWER_FEATURES_H_ +#define POWER_FEATURES_H_ struct power_cpu_features { int has_altivec; @@ -15,36 +15,4 @@ struct power_cpu_features { void Z_INTERNAL power_check_features(struct power_cpu_features *features); -#ifdef CPU_FEATURES_H_ - -#ifdef PPC_VMX -uint32_t adler32_vmx(uint32_t adler, const uint8_t *buf, size_t len); -# ifdef DEFLATE_H_ - void slide_hash_vmx(deflate_state *s); -# endif -#endif - -#ifdef POWER8_VSX -uint32_t adler32_power8(uint32_t adler, const uint8_t *buf, size_t len); -uint32_t chunksize_power8(void); -uint8_t* chunkmemset_safe_power8(uint8_t *out, unsigned dist, unsigned len, unsigned left); -uint32_t crc32_power8(uint32_t crc, const uint8_t *buf, size_t len); -# ifdef DEFLATE_H_ - void slide_hash_power8(deflate_state *s); -# endif -# ifdef INFLATE_H_ - void inflate_fast_power8(PREFIX3(stream) *strm, uint32_t start); -# endif -#endif - -#ifdef POWER9 -uint32_t compare256_power9(const uint8_t *src0, const uint8_t *src1); -# ifdef DEFLATE_H_ - uint32_t longest_match_power9(deflate_state *const s, Pos cur_match); - uint32_t longest_match_slow_power9(deflate_state *const s, Pos cur_match); -# endif -#endif - -#endif - -#endif /* POWER_H_ */ +#endif /* POWER_FEATURES_H_ */ diff --git a/arch/power/power_functions.h b/arch/power/power_functions.h new file mode 100644 index 0000000000..c64eafcdbe --- /dev/null +++ b/arch/power/power_functions.h @@ -0,0 +1,30 @@ +/* power_functions.h -- POWER implementations for arch-specific functions. + * Copyright (C) 2020 Matheus Castanho , IBM + * Copyright (C) 2021 Mika T. Lindqvist + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifndef POWER_FUNCTIONS_H_ +#define POWER_FUNCTIONS_H_ + +#ifdef PPC_VMX +uint32_t adler32_vmx(uint32_t adler, const uint8_t *buf, size_t len); +void slide_hash_vmx(deflate_state *s); +#endif + +#ifdef POWER8_VSX +uint32_t adler32_power8(uint32_t adler, const uint8_t *buf, size_t len); +uint32_t chunksize_power8(void); +uint8_t* chunkmemset_safe_power8(uint8_t *out, unsigned dist, unsigned len, unsigned left); +uint32_t crc32_power8(uint32_t crc, const uint8_t *buf, size_t len); +void slide_hash_power8(deflate_state *s); +void inflate_fast_power8(PREFIX3(stream) *strm, uint32_t start); +#endif + +#ifdef POWER9 +uint32_t compare256_power9(const uint8_t *src0, const uint8_t *src1); +uint32_t longest_match_power9(deflate_state *const s, Pos cur_match); +uint32_t longest_match_slow_power9(deflate_state *const s, Pos cur_match); +#endif + +#endif /* POWER_FUNCTIONS_H_ */ diff --git a/arch/riscv/riscv_features.h b/arch/riscv/riscv_features.h index 51901e83c8..b1593acc25 100644 --- a/arch/riscv/riscv_features.h +++ b/arch/riscv/riscv_features.h @@ -6,8 +6,8 @@ * For conditions of distribution and use, see copyright notice in zlib.h */ -#ifndef RISCV_H_ -#define RISCV_H_ +#ifndef RISCV_FEATURES_H_ +#define RISCV_FEATURES_H_ struct riscv_cpu_features { int has_rvv; @@ -15,25 +15,4 @@ struct riscv_cpu_features { void Z_INTERNAL riscv_check_features(struct riscv_cpu_features *features); -#ifdef CPU_FEATURES_H_ - -#ifdef RISCV_RVV -uint32_t adler32_rvv(uint32_t adler, const uint8_t *buf, size_t len); -uint32_t adler32_fold_copy_rvv(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); -uint32_t chunksize_rvv(void); -uint8_t* chunkmemset_safe_rvv(uint8_t *out, unsigned dist, unsigned len, unsigned left); -uint32_t compare256_rvv(const uint8_t *src0, const uint8_t *src1); - -# ifdef DEFLATE_H_ - uint32_t longest_match_rvv(deflate_state *const s, Pos cur_match); - uint32_t longest_match_slow_rvv(deflate_state *const s, Pos cur_match); - void slide_hash_rvv(deflate_state *s); -# endif -# ifdef INFLATE_H_ - void inflate_fast_rvv(PREFIX3(stream) *strm, uint32_t start); -# endif -#endif - -#endif - -#endif /* RISCV_H_ */ +#endif /* RISCV_FEATURES_H_ */ diff --git a/arch/riscv/riscv_functions.h b/arch/riscv/riscv_functions.h new file mode 100644 index 0000000000..90b398fbb0 --- /dev/null +++ b/arch/riscv/riscv_functions.h @@ -0,0 +1,25 @@ +/* riscv_functions.h -- RISCV implementations for arch-specific functions. + * + * Copyright (C) 2023 SiFive, Inc. All rights reserved. + * Contributed by Alex Chiang + * + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifndef RISCV_FUNCTIONS_H_ +#define RISCV_FUNCTIONS_H_ + +#ifdef RISCV_RVV +uint32_t adler32_rvv(uint32_t adler, const uint8_t *buf, size_t len); +uint32_t adler32_fold_copy_rvv(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); +uint32_t chunksize_rvv(void); +uint8_t* chunkmemset_safe_rvv(uint8_t *out, unsigned dist, unsigned len, unsigned left); +uint32_t compare256_rvv(const uint8_t *src0, const uint8_t *src1); + +uint32_t longest_match_rvv(deflate_state *const s, Pos cur_match); +uint32_t longest_match_slow_rvv(deflate_state *const s, Pos cur_match); +void slide_hash_rvv(deflate_state *s); +void inflate_fast_rvv(PREFIX3(stream) *strm, uint32_t start); +#endif + +#endif /* RISCV_FUNCTIONS_H_ */ diff --git a/arch/s390/crc32-vx.c b/arch/s390/crc32-vx.c index 82b8532e5a..f794e3bdd2 100644 --- a/arch/s390/crc32-vx.c +++ b/arch/s390/crc32-vx.c @@ -13,7 +13,7 @@ */ #include "zbuild.h" -#include "crc32_braid_p.h" +#include "cpu_functions.h" #include diff --git a/arch/s390/s390_features.h b/arch/s390/s390_features.h index 02eec995ba..fb2ac14b26 100644 --- a/arch/s390/s390_features.h +++ b/arch/s390/s390_features.h @@ -1,3 +1,7 @@ +/* s390_features.h -- check for s390 features. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + #ifndef S390_FEATURES_H_ #define S390_FEATURES_H_ @@ -7,12 +11,4 @@ struct s390_cpu_features { void Z_INTERNAL s390_check_features(struct s390_cpu_features *features); -#ifdef CPU_FEATURES_H_ - -#ifdef S390_CRC32_VX -uint32_t crc32_s390_vx(uint32_t crc, const uint8_t *buf, size_t len); -#endif - -#endif - #endif diff --git a/arch/s390/s390_functions.h b/arch/s390/s390_functions.h new file mode 100644 index 0000000000..e9f3cda47d --- /dev/null +++ b/arch/s390/s390_functions.h @@ -0,0 +1,12 @@ +/* s390_functions.h -- s390 implementations for arch-specific functions. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifndef S390_FUNCTIONS_H_ +#define S390_FUNCTIONS_H_ + +#ifdef S390_CRC32_VX +uint32_t crc32_s390_vx(uint32_t crc, const uint8_t *buf, size_t len); +#endif + +#endif diff --git a/arch/x86/adler32_avx512.c b/arch/x86/adler32_avx512.c index cc6bfa641d..49101f0915 100644 --- a/arch/x86/adler32_avx512.c +++ b/arch/x86/adler32_avx512.c @@ -10,7 +10,7 @@ #include "zbuild.h" #include "adler32_p.h" -#include "cpu_features.h" +#include "cpu_functions.h" #include #include "x86_intrins.h" #include "adler32_avx512_p.h" diff --git a/arch/x86/adler32_avx512_vnni.c b/arch/x86/adler32_avx512_vnni.c index 3dd26d7db7..bfcb944c75 100644 --- a/arch/x86/adler32_avx512_vnni.c +++ b/arch/x86/adler32_avx512_vnni.c @@ -11,7 +11,7 @@ #include "zbuild.h" #include "adler32_p.h" -#include "cpu_features.h" +#include "cpu_functions.h" #include #include "x86_intrins.h" #include "adler32_avx512_p.h" diff --git a/arch/x86/x86_features.h b/arch/x86/x86_features.h index 6e8ba799a8..fc56ae2f44 100644 --- a/arch/x86/x86_features.h +++ b/arch/x86/x86_features.h @@ -21,87 +21,4 @@ struct x86_cpu_features { void Z_INTERNAL x86_check_features(struct x86_cpu_features *features); -#ifdef CPU_FEATURES_H_ - -#include "fallback_builtins.h" -#include "crc32.h" - -#ifdef X86_SSE2 -uint32_t chunksize_sse2(void); -uint8_t* chunkmemset_safe_sse2(uint8_t *out, unsigned dist, unsigned len, unsigned left); - -# ifdef HAVE_BUILTIN_CTZ - uint32_t compare256_sse2(const uint8_t *src0, const uint8_t *src1); -# ifdef DEFLATE_H_ - uint32_t longest_match_sse2(deflate_state *const s, Pos cur_match); - uint32_t longest_match_slow_sse2(deflate_state *const s, Pos cur_match); - void slide_hash_sse2(deflate_state *s); -# endif -# endif -# ifdef INFLATE_H_ - void inflate_fast_sse2(PREFIX3(stream)* strm, uint32_t start); -# endif -#endif - -#ifdef X86_SSSE3 -uint32_t adler32_ssse3(uint32_t adler, const uint8_t *buf, size_t len); -uint8_t* chunkmemset_safe_ssse3(uint8_t *out, unsigned dist, unsigned len, unsigned left); -# ifdef INFLATE_H_ - void inflate_fast_ssse3(PREFIX3(stream) *strm, uint32_t start); -# endif -#endif - -#ifdef X86_SSE42 -uint32_t adler32_fold_copy_sse42(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); -# ifdef DEFLATE_H_ - void insert_string_sse42(deflate_state *const s, const uint32_t str, uint32_t count); - Pos quick_insert_string_sse42(deflate_state *const s, const uint32_t str); - uint32_t update_hash_sse42(deflate_state *const s, uint32_t h, uint32_t val); -# endif -#endif - -#ifdef X86_AVX2 -uint32_t adler32_avx2(uint32_t adler, const uint8_t *buf, size_t len); -uint32_t adler32_fold_copy_avx2(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); -uint32_t chunksize_avx2(void); -uint8_t* chunkmemset_safe_avx2(uint8_t *out, unsigned dist, unsigned len, unsigned left); - -# ifdef HAVE_BUILTIN_CTZ - uint32_t compare256_avx2(const uint8_t *src0, const uint8_t *src1); -# ifdef DEFLATE_H_ - uint32_t longest_match_avx2(deflate_state *const s, Pos cur_match); - uint32_t longest_match_slow_avx2(deflate_state *const s, Pos cur_match); - void slide_hash_avx2(deflate_state *s); -# endif -# endif -# ifdef INFLATE_H_ - void inflate_fast_avx2(PREFIX3(stream)* strm, uint32_t start); -# endif -#endif -#ifdef X86_AVX512 -uint32_t adler32_avx512(uint32_t adler, const uint8_t *buf, size_t len); -uint32_t adler32_fold_copy_avx512(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); -#endif -#ifdef X86_AVX512VNNI -uint32_t adler32_avx512_vnni(uint32_t adler, const uint8_t *buf, size_t len); -uint32_t adler32_fold_copy_avx512_vnni(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); -#endif - -#ifdef X86_PCLMULQDQ_CRC -uint32_t crc32_fold_pclmulqdq_reset(crc32_fold *crc); -void crc32_fold_pclmulqdq_copy(crc32_fold *crc, uint8_t *dst, const uint8_t *src, size_t len); -void crc32_fold_pclmulqdq(crc32_fold *crc, const uint8_t *src, size_t len, uint32_t init_crc); -uint32_t crc32_fold_pclmulqdq_final(crc32_fold *crc); -uint32_t crc32_pclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len); -#endif -#ifdef X86_VPCLMULQDQ_CRC -uint32_t crc32_fold_vpclmulqdq_reset(crc32_fold *crc); -void crc32_fold_vpclmulqdq_copy(crc32_fold *crc, uint8_t *dst, const uint8_t *src, size_t len); -void crc32_fold_vpclmulqdq(crc32_fold *crc, const uint8_t *src, size_t len, uint32_t init_crc); -uint32_t crc32_fold_vpclmulqdq_final(crc32_fold *crc); -uint32_t crc32_vpclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len); -#endif - -#endif - -#endif /* CPU_H_ */ +#endif /* X86_FEATURES_H_ */ diff --git a/arch/x86/x86_functions.h b/arch/x86/x86_functions.h new file mode 100644 index 0000000000..5807c96600 --- /dev/null +++ b/arch/x86/x86_functions.h @@ -0,0 +1,73 @@ +/* x86_functions.h -- x86 implementations for arch-specific functions. + * Copyright (C) 2013 Intel Corporation Jim Kukunas + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifndef X86_FUNCTIONS_H_ +#define X86_FUNCTIONS_H_ + +#ifdef X86_SSE2 +uint32_t chunksize_sse2(void); +uint8_t* chunkmemset_safe_sse2(uint8_t *out, unsigned dist, unsigned len, unsigned left); + +# ifdef HAVE_BUILTIN_CTZ + uint32_t compare256_sse2(const uint8_t *src0, const uint8_t *src1); + uint32_t longest_match_sse2(deflate_state *const s, Pos cur_match); + uint32_t longest_match_slow_sse2(deflate_state *const s, Pos cur_match); + void slide_hash_sse2(deflate_state *s); +# endif + void inflate_fast_sse2(PREFIX3(stream)* strm, uint32_t start); +#endif + +#ifdef X86_SSSE3 +uint32_t adler32_ssse3(uint32_t adler, const uint8_t *buf, size_t len); +uint8_t* chunkmemset_safe_ssse3(uint8_t *out, unsigned dist, unsigned len, unsigned left); +void inflate_fast_ssse3(PREFIX3(stream) *strm, uint32_t start); +#endif + +#ifdef X86_SSE42 +uint32_t adler32_fold_copy_sse42(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); +void insert_string_sse42(deflate_state *const s, const uint32_t str, uint32_t count); +Pos quick_insert_string_sse42(deflate_state *const s, const uint32_t str); +uint32_t update_hash_sse42(deflate_state *const s, uint32_t h, uint32_t val); +#endif + +#ifdef X86_AVX2 +uint32_t adler32_avx2(uint32_t adler, const uint8_t *buf, size_t len); +uint32_t adler32_fold_copy_avx2(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); +uint32_t chunksize_avx2(void); +uint8_t* chunkmemset_safe_avx2(uint8_t *out, unsigned dist, unsigned len, unsigned left); + +# ifdef HAVE_BUILTIN_CTZ + uint32_t compare256_avx2(const uint8_t *src0, const uint8_t *src1); + uint32_t longest_match_avx2(deflate_state *const s, Pos cur_match); + uint32_t longest_match_slow_avx2(deflate_state *const s, Pos cur_match); + void slide_hash_avx2(deflate_state *s); +# endif + void inflate_fast_avx2(PREFIX3(stream)* strm, uint32_t start); +#endif +#ifdef X86_AVX512 +uint32_t adler32_avx512(uint32_t adler, const uint8_t *buf, size_t len); +uint32_t adler32_fold_copy_avx512(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); +#endif +#ifdef X86_AVX512VNNI +uint32_t adler32_avx512_vnni(uint32_t adler, const uint8_t *buf, size_t len); +uint32_t adler32_fold_copy_avx512_vnni(uint32_t adler, uint8_t *dst, const uint8_t *src, size_t len); +#endif + +#ifdef X86_PCLMULQDQ_CRC +uint32_t crc32_fold_pclmulqdq_reset(crc32_fold *crc); +void crc32_fold_pclmulqdq_copy(crc32_fold *crc, uint8_t *dst, const uint8_t *src, size_t len); +void crc32_fold_pclmulqdq(crc32_fold *crc, const uint8_t *src, size_t len, uint32_t init_crc); +uint32_t crc32_fold_pclmulqdq_final(crc32_fold *crc); +uint32_t crc32_pclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len); +#endif +#ifdef X86_VPCLMULQDQ_CRC +uint32_t crc32_fold_vpclmulqdq_reset(crc32_fold *crc); +void crc32_fold_vpclmulqdq_copy(crc32_fold *crc, uint8_t *dst, const uint8_t *src, size_t len); +void crc32_fold_vpclmulqdq(crc32_fold *crc, const uint8_t *src, size_t len, uint32_t init_crc); +uint32_t crc32_fold_vpclmulqdq_final(crc32_fold *crc); +uint32_t crc32_vpclmulqdq(uint32_t crc32, const uint8_t *buf, size_t len); +#endif + +#endif /* X86_FUNCTIONS_H_ */ diff --git a/cpu_features.h b/cpu_features.h index 149ed18724..d74b1d6e03 100644 --- a/cpu_features.h +++ b/cpu_features.h @@ -18,8 +18,6 @@ # include "arch/riscv/riscv_features.h" #endif -#include "arch/generic/generic_features.h" - struct cpu_features { #if defined(X86_FEATURES) struct x86_cpu_features x86; diff --git a/cpu_functions.h b/cpu_functions.h new file mode 100644 index 0000000000..d2a925fd84 --- /dev/null +++ b/cpu_functions.h @@ -0,0 +1,29 @@ +/* cpu_functions.h -- CPU-specific function prototypes. + * Copyright (C) 2017 Hans Kristian Rosbach + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +#ifndef CPU_FUNCTIONS_H_ +#define CPU_FUNCTIONS_H_ + +#include "zbuild.h" +#include "zutil.h" +#include "crc32.h" +#include "deflate.h" +#include "fallback_builtins.h" + +#include "arch/generic/generic_functions.h" + +#if defined(X86_FEATURES) +# include "arch/x86/x86_functions.h" +#elif defined(ARM_FEATURES) +# include "arch/arm/arm_functions.h" +#elif defined(PPC_FEATURES) || defined(POWER_FEATURES) +# include "arch/power/power_functions.h" +#elif defined(S390_FEATURES) +# include "arch/s390/s390_functions.h" +#elif defined(RISCV_FEATURES) +# include "arch/riscv/riscv_functions.h" +#endif + +#endif diff --git a/crc32_braid_p.h b/crc32_braid_p.h index 45c05e3c4a..003bf91920 100644 --- a/crc32_braid_p.h +++ b/crc32_braid_p.h @@ -61,6 +61,4 @@ /* CRC polynomial. */ #define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */ -extern uint32_t PREFIX(crc32_braid)(uint32_t crc, const uint8_t *buf, size_t len); - #endif /* CRC32_BRAID_P_H_ */ diff --git a/functable.c b/functable.c index ac6bd99d73..8905c16ca1 100644 --- a/functable.c +++ b/functable.c @@ -7,6 +7,7 @@ #include "zendian.h" #include "functable.h" #include "cpu_features.h" +#include "cpu_functions.h" #if defined(_MSC_VER) # include diff --git a/functable.h b/functable.h index 353f7a6038..21021770cd 100644 --- a/functable.h +++ b/functable.h @@ -7,10 +7,7 @@ #define FUNCTABLE_H_ #include "deflate.h" -#include "arch/generic/crc32_fold_c.h" -#include "arch/generic/adler32_fold_c.h" -#include "inftrees.h" -#include "inflate.h" +#include "crc32.h" struct functable_s { void (* force_init) (void); diff --git a/test/benchmarks/benchmark_adler32.cc b/test/benchmarks/benchmark_adler32.cc index 8c5bf67d39..1d0433f2ee 100644 --- a/test/benchmarks/benchmark_adler32.cc +++ b/test/benchmarks/benchmark_adler32.cc @@ -11,6 +11,7 @@ extern "C" { # include "zbuild.h" # include "zutil_p.h" +# include "cpu_functions.h" # include "../test_cpu_features.h" } diff --git a/test/benchmarks/benchmark_adler32_copy.cc b/test/benchmarks/benchmark_adler32_copy.cc index 9a4a5ff420..57d07aec5a 100644 --- a/test/benchmarks/benchmark_adler32_copy.cc +++ b/test/benchmarks/benchmark_adler32_copy.cc @@ -12,6 +12,7 @@ extern "C" { # include "zbuild.h" # include "zutil_p.h" +# include "cpu_functions.h" # include "../test_cpu_features.h" } diff --git a/test/benchmarks/benchmark_compare256.cc b/test/benchmarks/benchmark_compare256.cc index db5ba83f6c..34e8557fd2 100644 --- a/test/benchmarks/benchmark_compare256.cc +++ b/test/benchmarks/benchmark_compare256.cc @@ -10,6 +10,7 @@ extern "C" { # include "zbuild.h" # include "zutil_p.h" +# include "cpu_functions.h" # include "../test_cpu_features.h" } diff --git a/test/benchmarks/benchmark_compare256_rle.cc b/test/benchmarks/benchmark_compare256_rle.cc index c96d185810..3b1eced453 100644 --- a/test/benchmarks/benchmark_compare256_rle.cc +++ b/test/benchmarks/benchmark_compare256_rle.cc @@ -11,7 +11,6 @@ extern "C" { # include "zbuild.h" # include "zutil_p.h" # include "compare256_rle.h" -# include "cpu_features.h" } #define MAX_COMPARE_SIZE (256) diff --git a/test/benchmarks/benchmark_crc32.cc b/test/benchmarks/benchmark_crc32.cc index e78c0f1297..5b45a3c320 100644 --- a/test/benchmarks/benchmark_crc32.cc +++ b/test/benchmarks/benchmark_crc32.cc @@ -11,6 +11,7 @@ extern "C" { # include "zbuild.h" # include "zutil_p.h" +# include "cpu_functions.h" # include "../test_cpu_features.h" } diff --git a/test/benchmarks/benchmark_slidehash.cc b/test/benchmarks/benchmark_slidehash.cc index e098c815e8..b2af8fb9d3 100644 --- a/test/benchmarks/benchmark_slidehash.cc +++ b/test/benchmarks/benchmark_slidehash.cc @@ -11,6 +11,7 @@ extern "C" { # include "zbuild.h" # include "zutil_p.h" # include "deflate.h" +# include "cpu_functions.h" # include "../test_cpu_features.h" } diff --git a/test/test_adler32.cc b/test/test_adler32.cc index 1ed6e22486..87ae258890 100644 --- a/test/test_adler32.cc +++ b/test/test_adler32.cc @@ -10,6 +10,7 @@ extern "C" { # include "zbuild.h" +# include "cpu_functions.h" # include "test_cpu_features.h" } diff --git a/test/test_compare256.cc b/test/test_compare256.cc index b85dc1b40b..4151fab12b 100644 --- a/test/test_compare256.cc +++ b/test/test_compare256.cc @@ -10,6 +10,7 @@ extern "C" { # include "zbuild.h" # include "zutil.h" +# include "cpu_functions.h" # include "test_cpu_features.h" } diff --git a/test/test_crc32.cc b/test/test_crc32.cc index 237112741e..40b5975d81 100644 --- a/test/test_crc32.cc +++ b/test/test_crc32.cc @@ -11,6 +11,7 @@ extern "C" { # include "zbuild.h" +# include "cpu_functions.h" # include "test_cpu_features.h" } diff --git a/win32/Makefile.a64 b/win32/Makefile.a64 index b32b2ce1e5..ecaaaa93e9 100644 --- a/win32/Makefile.a64 +++ b/win32/Makefile.a64 @@ -183,7 +183,7 @@ SRCDIR = $(TOP) # Keep the dependences in sync with top-level Makefile.in adler32.obj: $(SRCDIR)/adler32.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h adler32_c.obj: $(SRCDIR)/arch/generic/adler32_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h -adler32_fold_c.obj: $(SRCDIR)/arch/generic/adler32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/arch/generic/adler32_fold_c.h +adler32_fold_c.obj: $(SRCDIR)/arch/generic/adler32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h chunkset_c.obj: $(SRCDIR)/arch/generic/chunkset_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/chunkset_tpl.h $(SRCDIR)/inffast_tpl.h compare256_c.obj: $(SRCDIR)/arch/generic/compare256_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil_p.h $(SRCDIR)/deflate.h $(SRCDIR)/fallback_builtins.h functable.obj: $(SRCDIR)/functable.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/zendian.h $(SRCDIR)/arch/x86/x86_features.h @@ -196,7 +196,7 @@ cpu_features.obj: $(SRCDIR)/cpu_features.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h crc32.obj: $(SRCDIR)/crc32.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/crc32_braid_tbl.h crc32_braid_c.obj: $(SRCDIR)/arch/generic/crc32_braid_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h crc32_braid_comb.obj: $(SRCDIR)/crc32_braid_comb.c $(SRCDIR)/zutil.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h $(SRCDIR)/crc32_braid_comb_p.h -crc32_fold_c.obj: $(SRCDIR)/arch/generic/crc32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/arch/generic/crc32_fold_c.h +crc32_fold_c.obj: $(SRCDIR)/arch/generic/crc32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h deflate_huff.obj: $(SRCDIR)/deflate_huff.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h diff --git a/win32/Makefile.arm b/win32/Makefile.arm index 3f6ca3b931..79ff7a5778 100644 --- a/win32/Makefile.arm +++ b/win32/Makefile.arm @@ -204,7 +204,7 @@ SRCDIR = $(TOP) # Keep the dependences in sync with top-level Makefile.in adler32.obj: $(SRCDIR)/adler32.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h adler32_c.obj: $(SRCDIR)/arch/generic/adler32_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/adler32_p.h -adler32_fold_c.obj: $(SRCDIR)/arch/generic/adler32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/arch/generic/adler32_fold_c.h +adler32_fold_c.obj: $(SRCDIR)/arch/generic/adler32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h functable.obj: $(SRCDIR)/functable.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/zendian.h $(SRCDIR)/arch/x86/x86_features.h gzlib.obj: $(SRCDIR)/gzlib.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h gzread.obj: $(SRCDIR)/gzread.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h @@ -217,7 +217,7 @@ cpu_features.obj: $(SRCDIR)/cpu_features.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h crc32.obj: $(SRCDIR)/crc32.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/crc32_braid_tbl.h crc32_braid_c.obj: $(SRCDIR)/arch/generic/crc32_braid_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h crc32_braid_comb.obj: $(SRCDIR)/crc32_braid_comb.c $(SRCDIR)/zutil.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h $(SRCDIR)/crc32_braid_comb_p.h -crc32_fold_c.obj: $(SRCDIR)/arch/generic/crc32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/arch/generic/crc32_fold_c.h +crc32_fold_c.obj: $(SRCDIR)/arch/generic/crc32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h deflate_huff.obj: $(SRCDIR)/deflate_huff.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h diff --git a/win32/Makefile.msc b/win32/Makefile.msc index d3b2a85b2a..9bde54841b 100644 --- a/win32/Makefile.msc +++ b/win32/Makefile.msc @@ -199,7 +199,7 @@ adler32_sse42.obj: $(SRCDIR)/arch/x86/adler32_sse42.c $(SRCDIR)/zbuild.h $(SRCDI $(SRCDIR)/arch/x86/adler32_ssse3_p.h adler32_ssse3.obj: $(SRCDIR)/arch/x86/adler32_ssse3.c $(SRCDIR)/zbuild.h $(SRCDIR)/cpu_features.h $(SRCDIR)/adler32_p.h \ $(SRCDIR)/arch/x86/adler32_ssse3_p.h -adler32_fold_c.obj: $(SRCDIR)/arch/generic/adler32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/arch/generic/adler32_fold_c.h +adler32_fold_c.obj: $(SRCDIR)/arch/generic/adler32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h functable.obj: $(SRCDIR)/functable.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/zendian.h $(SRCDIR)/arch/x86/x86_features.h gzlib.obj: $(SRCDIR)/gzlib.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h gzread.obj: $(SRCDIR)/gzread.c $(SRCDIR)/zbuild.h $(SRCDIR)/gzguts.h $(SRCDIR)/zutil_p.h @@ -217,9 +217,9 @@ cpu_features.obj: $(SRCDIR)/cpu_features.c $(SRCDIR)/zbuild.h $(SRCDIR)/zutil.h crc32.obj: $(SRCDIR)/crc32.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/crc32_braid_tbl.h crc32_braid_c.obj: $(SRCDIR)/arch/generic/crc32_braid_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h crc32_braid_comb.obj: $(SRCDIR)/crc32_braid_comb.c $(SRCDIR)/zutil.h $(SRCDIR)/crc32_braid_p.h $(SRCDIR)/crc32_braid_tbl.h $(SRCDIR)/crc32_braid_comb_p.h -crc32_fold_c.obj: $(SRCDIR)/arch/generic/crc32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h $(SRCDIR)/arch/generic/crc32_fold_c.h +crc32_fold_c.obj: $(SRCDIR)/arch/generic/crc32_fold_c.c $(SRCDIR)/zbuild.h $(SRCDIR)/functable.h crc32_pclmulqdq.obj: $(SRCDIR)/arch/x86/crc32_pclmulqdq.c $(SRCDIR)/arch/x86/crc32_pclmulqdq_tpl.h $(SRCDIR)/arch/x86/crc32_fold_pclmulqdq_tpl.h \ - $(SRCDIR)/arch/generic/crc32_fold_c.h $(SRCDIR)/zbuild.h + $(SRCDIR)/zbuild.h deflate.obj: $(SRCDIR)/deflate.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h deflate_fast.obj: $(SRCDIR)/deflate_fast.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h deflate_huff.obj: $(SRCDIR)/deflate_huff.c $(SRCDIR)/zbuild.h $(SRCDIR)/deflate.h $(SRCDIR)/deflate_p.h $(SRCDIR)/functable.h