]> git.ipfire.org Git - thirdparty/zlib-ng.git/log
thirdparty/zlib-ng.git
3 months agoAdd elf_aux_info() support on FreeBSD/OpenBSD for PMULL and EOR3
Brad Smith [Tue, 13 Jan 2026 02:38:35 +0000 (18:38 -0800)] 
Add elf_aux_info() support on FreeBSD/OpenBSD for PMULL and EOR3

Use elf_aux_info() to detect PMULL and EOR3 on FreeBSD and OpenBSD
aarch64.

3 months agoRemove unnecessary ARM_AUXV_HAS_NEON preprocessor check
Nathan Moinvaziri [Tue, 13 Jan 2026 03:25:57 +0000 (19:25 -0800)] 
Remove unnecessary ARM_AUXV_HAS_NEON preprocessor check

3 months agoRemove unnecessary ARM_AUXV_HAS_CRC32 preprocessor check
Nathan Moinvaziri [Tue, 13 Jan 2026 02:39:13 +0000 (18:39 -0800)] 
Remove unnecessary ARM_AUXV_HAS_CRC32 preprocessor check

3 months agoUse ARCH_64BIT preprocessor define in arm feature checks.
Nathan Moinvaziri [Tue, 13 Jan 2026 03:13:22 +0000 (19:13 -0800)] 
Use ARCH_64BIT preprocessor define in arm feature checks.

3 months agoClean up arm feature check return values.
Nathan Moinvaziri [Tue, 13 Jan 2026 03:35:34 +0000 (19:35 -0800)] 
Clean up arm feature check return values.

3 months agoPre-calculate last vector check ptr in compare256 for sse2 and lsx
Nathan Moinvaziri [Thu, 8 Jan 2026 07:51:08 +0000 (23:51 -0800)] 
Pre-calculate last vector check ptr in compare256 for sse2 and lsx

3 months agoAdd "None" for sanitizer option
Pavel P [Tue, 20 Jan 2026 19:52:13 +0000 (21:52 +0200)] 
Add "None" for sanitizer option

3 months agoMove cleanup undefs to insert_string_tpl.h
Pavel P [Tue, 20 Jan 2026 19:50:58 +0000 (21:50 +0200)] 
Move cleanup undefs to insert_string_tpl.h

3 months agoFix integer overflow in gz_compress_mmap
Vladislav Shchapov [Sat, 17 Jan 2026 13:46:50 +0000 (18:46 +0500)] 
Fix integer overflow in gz_compress_mmap

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoFix CI configure workflow failure artifact upload
Hans Kristian Rosbach [Tue, 13 Jan 2026 21:01:44 +0000 (22:01 +0100)] 
Fix CI configure workflow failure artifact upload

3 months agoExpand configure script testing.
Hans Kristian Rosbach [Sun, 11 Jan 2026 21:50:21 +0000 (22:50 +0100)] 
Expand configure script testing.
- Remove 2 redundant jobs.
- Add 1 new jobs.
- Test multiple non-conflicting options in more of the jobs.

3 months agoEnable codecov for more CI jobs.
Hans Kristian Rosbach [Sun, 11 Jan 2026 14:14:11 +0000 (15:14 +0100)] 
Enable codecov for more CI jobs.
Disable codecov where -O1 or higher is requested, since codecov sets -O0.
Disable codecov where tests are not run.
Add comments for jobs where codecov is not enabled.

3 months agoUse default clang version for most builds.
Hans Kristian Rosbach [Sun, 11 Jan 2026 17:17:26 +0000 (18:17 +0100)] 
Use default clang version for most builds.
Let one job use clang-15, and a few clang-20

3 months agoCombine ARM CI jobs testing non-NEON with non-ARMv8, as these have no common optimized
Hans Kristian Rosbach [Sun, 11 Jan 2026 22:05:51 +0000 (23:05 +0100)] 
Combine ARM CI jobs testing non-NEON with non-ARMv8, as these have no common optimized
functions. For Aarch64, use no-opt config for testing bothwithout Neon/Armv8.
This reduced cmake and configure jobs by 3 each.
Also reorder and rename a few other jobs to try to use a common style.

3 months agoRemove separate MMAP CI job by folding into another.
Hans Kristian Rosbach [Sun, 11 Jan 2026 18:03:27 +0000 (19:03 +0100)] 
Remove separate MMAP CI job by folding into another.
Remove separate REDUCED_MEM CI job by folding into another.
Make sure both are present for both GCC and Clang.
Add ZLIB_COMPAT to clang debug job.

3 months agoFix codecov parameter placement warnings.
Hans Kristian Rosbach [Sun, 11 Jan 2026 18:16:28 +0000 (19:16 +0100)] 
Fix codecov parameter placement warnings.

3 months agoAdd configured compiler defines to informational output,
Hans Kristian Rosbach [Sun, 11 Jan 2026 13:51:31 +0000 (14:51 +0100)] 
Add configured compiler defines to informational output,
this eases debugging, especially in CI where further inspection is hard.

3 months agoImprove detection of compiler code coverage support.
Hans Kristian Rosbach [Sun, 11 Jan 2026 13:49:06 +0000 (14:49 +0100)] 
Improve detection of compiler code coverage support.

3 months agoUnify baseline benchmarking for both adler32 and crc32.
Hans Kristian Rosbach [Thu, 15 Jan 2026 22:42:19 +0000 (23:42 +0100)] 
Unify baseline benchmarking for both adler32 and crc32.
Fix missing benchmarks of _copy functions for some platforms.

3 months agoUnify compare256/compare256_rle benchmarks and add rolling misalignment
Hans Kristian Rosbach [Wed, 14 Jan 2026 20:18:56 +0000 (21:18 +0100)] 
Unify compare256/compare256_rle benchmarks and add rolling misalignment

3 months agoUnify adler32/crc32 benchmarks and add rotating misalignment
Hans Kristian Rosbach [Wed, 14 Jan 2026 16:18:02 +0000 (17:18 +0100)] 
Unify adler32/crc32 benchmarks and add rotating misalignment
Add aligned benchmarks for adler32/crc32

3 months agoUse aligned alloc for insert_string benchmark
Hans Kristian Rosbach [Wed, 14 Jan 2026 20:20:47 +0000 (21:20 +0100)] 
Use aligned alloc for insert_string benchmark

3 months agoFix name collision in inflate benchmark
Hans Kristian Rosbach [Wed, 14 Jan 2026 22:37:34 +0000 (23:37 +0100)] 
Fix name collision in inflate benchmark

3 months agoMake deflate output deterministic if PREFIX3(stream) is reused after deflateReset
Vladislav Shchapov [Tue, 13 Jan 2026 20:02:47 +0000 (01:02 +0500)] 
Make deflate output deterministic if PREFIX3(stream) is reused after deflateReset

Co-authored-by: Marcin Kowalczyk <QrczakMK@gmail.com>
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoPrefix macros with z in crc32_vpclmulqdq for clarity
Nathan Moinvaziri [Tue, 13 Jan 2026 18:04:55 +0000 (10:04 -0800)] 
Prefix macros with z in crc32_vpclmulqdq for clarity

3 months agoUse epi32 variants for older MSVC (v141/v140) to avoid cast warnings
Nathan Moinvaziri [Tue, 13 Jan 2026 16:43:26 +0000 (08:43 -0800)] 
Use epi32 variants for older MSVC (v141/v140) to avoid cast warnings

3 months agoFix cast truncates constant value warnings with ternarylogic on Win v141
Nathan Moinvaziri [Mon, 12 Jan 2026 01:16:36 +0000 (17:16 -0800)] 
Fix cast truncates constant value warnings with ternarylogic on Win v141

3 months agoUse epi64 intrinsics for VPCLMULQDQ operations
Nathan Moinvaziri [Sun, 11 Jan 2026 22:53:45 +0000 (14:53 -0800)] 
Use epi64 intrinsics for VPCLMULQDQ operations

PCLMULQDQ operates on 64-bit polynomial elements, so use epi64 intrinsics
throughout to provide accurate type information to the compiler.

3 months agoUse masked load/store in partial folding in crc32_vpclmulqdq.
Nathan Moinvaziri [Sun, 11 Jan 2026 20:05:46 +0000 (12:05 -0800)] 
Use masked load/store in partial folding in crc32_vpclmulqdq.

3 months agoCombine final_fold function to remove extra len branch
Nathan Moinvaziri [Sun, 11 Jan 2026 20:03:26 +0000 (12:03 -0800)] 
Combine final_fold function to remove extra len branch

3 months agoEliminate extra vmovdqu instruction folding xmm into zmm.
Nathan Moinvaziri [Sun, 11 Jan 2026 19:32:44 +0000 (11:32 -0800)] 
Eliminate extra vmovdqu instruction folding xmm into zmm.

Fixed by using _mm512_castsi128_si512() and removing redundant insert.

3 months agoClean up variable names for readability in zmm path.
Nathan Moinvaziri [Sat, 3 Jan 2026 07:47:34 +0000 (23:47 -0800)] 
Clean up variable names for readability in zmm path.

3 months agoDon't compile in Chorba for vpclmulqdq because it is never used
Nathan Moinvaziri [Sat, 3 Jan 2026 02:14:24 +0000 (18:14 -0800)] 
Don't compile in Chorba for vpclmulqdq because it is never used

By the time Chorba if statement is hit, len is already reduced to < 256.

3 months agoCombine partial and final fold and reduce the number of operations
Nathan Moinvaziri [Sun, 11 Jan 2026 19:34:45 +0000 (11:34 -0800)] 
Combine partial and final fold and reduce the number of operations

We do the partial fold after we have folded the crc32 state into a single
128-bit value.

3 months agoGenerate shuffle masks in registers for partial_fold.
Nathan Moinvaziri [Fri, 2 Jan 2026 23:03:33 +0000 (15:03 -0800)] 
Generate shuffle masks in registers for partial_fold.

Faster than loading table into memory.

3 months agoUse mm_blend_epi16 in crc32_(v)pclmulqdq final reduction
Nathan Moinvaziri [Fri, 2 Jan 2026 22:47:53 +0000 (14:47 -0800)] 
Use mm_blend_epi16 in crc32_(v)pclmulqdq final reduction

This is the preferred operation mentioned in
https://www.corsix.org/content/alternative-exposition-crc32_4k_pclmulqdq

3 months agoUse ternarylogic when available in crc32_vpclmulqdq.
Nathan Moinvaziri [Sun, 11 Jan 2026 20:17:34 +0000 (12:17 -0800)] 
Use ternarylogic when available in crc32_vpclmulqdq.

3 months agoHoist folding constants to function scope to avoid repeated loads
Nathan Moinvaziri [Sat, 3 Jan 2026 02:26:16 +0000 (18:26 -0800)] 
Hoist folding constants to function scope to avoid repeated loads

3 months agoBatch PCLMULQDQ operations to reduce latency
Nathan Moinvaziri [Sun, 11 Jan 2026 21:28:20 +0000 (13:28 -0800)] 
Batch PCLMULQDQ operations to reduce latency

3 months agoMove remaining fold calls before load to hide latency
Nathan Moinvaziri [Fri, 2 Jan 2026 08:46:36 +0000 (00:46 -0800)] 
Move remaining fold calls before load to hide latency

All fold calls are now consistent in this respect.

3 months agoRevert "Move fold calls closer to last change in xmm_crc# variables."
Nathan Moinvaziri [Fri, 2 Jan 2026 03:26:14 +0000 (19:26 -0800)] 
Revert "Move fold calls closer to last change in xmm_crc# variables."

The fold calls were in a better spot before begin located after loads to
reduce latency.

This reverts commit cda0827b6d522acdb2656114e2c4b7b18b6c1c20.

3 months agoRemove old comments about crc32 folding from crc32 benchmark.
Nathan Moinvaziri [Wed, 31 Dec 2025 23:18:38 +0000 (15:18 -0800)] 
Remove old comments about crc32 folding from crc32 benchmark.

3 months agoRemove unnecessary casts from crc32_(v)pclmulqdq.
Nathan Moinvaziri [Fri, 2 Jan 2026 06:49:56 +0000 (22:49 -0800)] 
Remove unnecessary casts from crc32_(v)pclmulqdq.

Originally, some compilers and older versions of intrinsics libraries only
provided _mm_xor_ps (for __m128) and not _mm_xor_si128 (for __m128i).
Developers would cast integer vectors to float vectors to use the XOR
operation, then cast back. Modern compilers and intrinsics headers provide
_mm_xor_si128, making these casts unnecessary.

3 months agoSimplify CRC32 complement operations using bitwise NOT operator
Nathan Moinvaziri [Tue, 13 Jan 2026 00:47:43 +0000 (16:47 -0800)] 
Simplify CRC32 complement operations using bitwise NOT operator

3 months agoFix space indentation formatting in crc32_zbc
Nathan Moinvaziri [Tue, 13 Jan 2026 00:44:48 +0000 (16:44 -0800)] 
Fix space indentation formatting in crc32_zbc

3 months agoAdd fallback for __has_builtin to prevent unmatched parenthesis warning
Nathan Moinvaziri [Sun, 11 Jan 2026 21:11:08 +0000 (13:11 -0800)] 
Add fallback for __has_builtin to prevent unmatched parenthesis warning

Occurs on MSVC.

3 months agoAdd ARM __builtin_bitreverse16 fallback implementation for GCC.
Nathan Moinvaziri [Tue, 13 Jan 2026 17:01:11 +0000 (09:01 -0800)] 
Add ARM __builtin_bitreverse16 fallback implementation for GCC.

3 months agoRemove compiler check for builtin_bitreverse16 since we check in code
Nathan Moinvaziri [Sun, 11 Jan 2026 00:22:43 +0000 (16:22 -0800)] 
Remove compiler check for builtin_bitreverse16 since we check in code

And we have a generic fallback

3 months ago__builtin_bitreverse16 CMake compiler check fails for GCC 13
Nathan Moinvaziri [Sat, 10 Jan 2026 01:38:55 +0000 (17:38 -0800)] 
__builtin_bitreverse16 CMake compiler check fails for GCC 13

Provide a final check for __builtin_bitreverse16 in code.

3 months agoUse GCC's may_alias attribute for access to buffers in crc32_chorba
Vladislav Shchapov [Wed, 7 Jan 2026 19:30:19 +0000 (00:30 +0500)] 
Use GCC's may_alias attribute for access to buffers in crc32_chorba

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoAdd Z_UNREACHABLE compiler hint
Hans Kristian Rosbach [Tue, 13 Jan 2026 14:32:53 +0000 (15:32 +0100)] 
Add Z_UNREACHABLE compiler hint

3 months agoFix (impossible) infinite loop in gz_fetch() detected by GCC-14 static analyzer.
Hans Kristian Rosbach [Tue, 13 Jan 2026 13:55:37 +0000 (14:55 +0100)] 
Fix (impossible) infinite loop in gz_fetch() detected by GCC-14 static analyzer.
According to the comment, gz_fetch() also assumes that state->x.have == 0, so
lets add an Assert to that effect.

3 months agoUpdate static analyzer from targeting GCC v10 to v14
Hans Kristian Rosbach [Mon, 12 Jan 2026 19:52:47 +0000 (20:52 +0100)] 
Update static analyzer from targeting GCC v10 to v14

3 months agoFix symbol mangling so symbols in shared library are exported correctly
Mika T. Lindqvist [Mon, 12 Jan 2026 01:42:13 +0000 (03:42 +0200)] 
Fix symbol mangling so symbols in shared library are exported correctly
* We need to mangle symbols in the map file, otherwise none of the symbols are exported
* Fix gz_error name conflict with zlib-ng API

3 months agoRemove extra indirection calling into crc32_z functions.
Nathan Moinvaziri [Mon, 12 Jan 2026 22:57:50 +0000 (14:57 -0800)] 
Remove extra indirection calling into crc32_z functions.

This also prevents the double-checking of buf == NULL.

3 months agoClean up buf == NULL handling on adler32 functions and test strings.
Nathan Moinvaziri [Mon, 12 Jan 2026 19:18:56 +0000 (11:18 -0800)] 
Clean up buf == NULL handling on adler32 functions and test strings.

3 months agoFixed UB in adler32_avx512_copy storemask when len is 0.
Nathan Moinvaziri [Sun, 11 Jan 2026 00:13:54 +0000 (16:13 -0800)] 
Fixed UB in adler32_avx512_copy storemask when len is 0.

3 months agoRename and reorder properties in hash_test.
Nathan Moinvaziri [Thu, 8 Jan 2026 19:02:08 +0000 (11:02 -0800)] 
Rename and reorder properties in hash_test.

3 months agoMerge adler32 and crc32 hash test strings.
Nathan Moinvaziri [Sat, 10 Jan 2026 18:29:05 +0000 (10:29 -0800)] 
Merge adler32 and crc32 hash test strings.

3 months agoAdd adler32_copy unit test
Nathan Moinvaziri [Wed, 7 Jan 2026 08:39:25 +0000 (00:39 -0800)] 
Add adler32_copy unit test

3 months agoSeparate adler32 test strings into their own source header
Nathan Moinvaziri [Wed, 7 Jan 2026 08:34:02 +0000 (00:34 -0800)] 
Separate adler32 test strings into their own source header

3 months agoSimplify the gzread.c name mangling workaround by splitting out just
Hans Kristian Rosbach [Sat, 10 Jan 2026 21:08:13 +0000 (22:08 +0100)] 
Simplify the gzread.c name mangling workaround by splitting out just
the workaround into a separate file. This allows us to browse gzread.c
with code highlighting and it allows codecov to record coverage data.

3 months agoDon't count tests/tools towards overall project coverage.
Hans Kristian Rosbach [Sat, 10 Jan 2026 22:32:49 +0000 (23:32 +0100)] 
Don't count tests/tools towards overall project coverage.
Set project coverage target to 80%.
Loosen project coverage reduction threshold to 10% to avoid failing coverage
tests when CI happens to run on hosts that do not support AVX-512.
Set component coverage reduction thresholds low, except for common and
arch_x86 that need higher limits due to the AVX-512 CI hosts.

3 months agoUpdate to GoogleTest 1.16.0.
Vladislav Shchapov [Fri, 9 Jan 2026 20:02:11 +0000 (01:02 +0500)] 
Update to GoogleTest 1.16.0.
This requires minimum CMake 3.13 and C++14, this matches nicely with zlib-ng 2.3.x requirements.

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoReplace deprecated FetchContent_Populate with FetchContent_MakeAvailable
Vladislav Shchapov [Fri, 9 Jan 2026 19:47:20 +0000 (00:47 +0500)] 
Replace deprecated FetchContent_Populate with FetchContent_MakeAvailable

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoRemove always TRUE or FALSE CMake version checks
Vladislav Shchapov [Fri, 9 Jan 2026 19:01:03 +0000 (00:01 +0500)] 
Remove always TRUE or FALSE CMake version checks

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoSet minimum and upper compatible CMake version
Vladislav Shchapov [Fri, 9 Jan 2026 18:55:13 +0000 (23:55 +0500)] 
Set minimum and upper compatible CMake version

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agodeflateinit was still checking for failed secondary allocations, this is
Hans Kristian Rosbach [Sat, 10 Jan 2026 20:31:06 +0000 (21:31 +0100)] 
deflateinit was still checking for failed secondary allocations, this is
no longer necessary as we only allocate a single buffer and has already
been checked for failure before this.

3 months agoExplicitly define the __SSE__ and __SSE2__ macros, since starting with MSVS 2012...
Vladislav Shchapov [Thu, 8 Jan 2026 19:27:55 +0000 (00:27 +0500)] 
Explicitly define the __SSE__ and __SSE2__ macros, since starting with MSVS 2012 the default instruction set is SSE2

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoCleanup preprocessor indents in fallback_builtins.
Nathan Moinvaziri [Thu, 8 Jan 2026 19:13:00 +0000 (11:13 -0800)] 
Cleanup preprocessor indents in fallback_builtins.

3 months agoAdd missing compiler preprocessor defines for 32-bit architectures
Nathan Moinvaziri [Thu, 8 Jan 2026 00:47:06 +0000 (16:47 -0800)] 
Add missing compiler preprocessor defines for 32-bit architectures

3 months agoAdd ARCH defines to code to make the ifdef logic easier
Nathan Moinvaziri [Thu, 8 Jan 2026 00:50:11 +0000 (16:50 -0800)] 
Add ARCH defines to code to make the ifdef logic easier

3 months agoAdd ARCH_32BIT and ARCH_64BIT defines for better code clarity
Nathan Moinvaziri [Thu, 8 Jan 2026 00:47:54 +0000 (16:47 -0800)] 
Add ARCH_32BIT and ARCH_64BIT defines for better code clarity

3 months agoIgnore benchmarks in codecov coverage reports.
Hans Kristian Rosbach [Sat, 10 Jan 2026 12:54:23 +0000 (13:54 +0100)] 
Ignore benchmarks in codecov coverage reports.
We already avoid collecting coverage when running benchmarks because the
benchmarks do not perform most error checking, thus even though they might
code increase coverage, they won't detect most bugs unless it actually
crashes the whole benchmark.

3 months agoAdd missing resets of compiler flags after completing each test,
Hans Kristian Rosbach [Fri, 9 Jan 2026 14:17:58 +0000 (15:17 +0100)] 
Add missing resets of compiler flags after completing each test,
avoids the next test inheriting the previous flags.

3 months agoAdded separate components.
Hans Kristian Rosbach [Fri, 9 Jan 2026 19:58:17 +0000 (20:58 +0100)] 
Added separate components.
Wait for CI completion before posting status report, avoids emailing an inital report with very low coverage based on pigz tests only.
Make report informational, low coverage will not be a CI failure.
Disable Github Annotations, these are deprecated due to API limits.

3 months agoDisable downloading extra test corpora for WITH_SANITIZER builds,
Hans Kristian Rosbach [Fri, 9 Jan 2026 20:45:05 +0000 (21:45 +0100)] 
Disable downloading extra test corpora for WITH_SANITIZER builds,
those tests are much too slow, upwards of 1 hour or more.

3 months agoResolve merge conflicts in coverage data, instead of aborting.
Hans Kristian Rosbach [Fri, 9 Jan 2026 15:08:38 +0000 (16:08 +0100)] 
Resolve merge conflicts in coverage data, instead of aborting.

3 months agoFix possible loss of data warning in benchmark_inflate on MSVC 2026
Nathan Moinvaziri [Thu, 8 Jan 2026 18:31:35 +0000 (10:31 -0800)] 
Fix possible loss of data warning in benchmark_inflate on MSVC 2026

benchmark_inflate.cc(131,51): warning C4267: '=': conversion from 'size_
t' to 'uint32_t', possible loss of dat

3 months agoFix warning: 'sprintf' is deprecated
Vladislav Shchapov [Wed, 31 Dec 2025 10:57:08 +0000 (15:57 +0500)] 
Fix warning: 'sprintf' is deprecated

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoRebalance benchmark_compress size ranges
Hans Kristian Rosbach [Sun, 28 Dec 2025 18:05:31 +0000 (19:05 +0100)] 
Rebalance benchmark_compress size ranges

3 months agoImprove benchmark_compress and benchmark_uncompress.
Hans Kristian Rosbach [Sat, 27 Dec 2025 21:53:46 +0000 (22:53 +0100)] 
Improve benchmark_compress and benchmark_uncompress.
- These now use the same generated data as benchmark_inflate.
- benchmark_uncompress now also uses level 9 for compression, so that
  we also get 3-byte matches to uncompress.
- Improve error checking
- Unify code with benchmark_inflate

3 months agoAdd new benchmark inflate_nocrc. This lets us benchmark just the
Hans Kristian Rosbach [Sat, 27 Dec 2025 21:51:22 +0000 (22:51 +0100)] 
Add new benchmark inflate_nocrc. This lets us benchmark just the
inflate process more accurately. Also adds a new shared function for
generating highly compressible data that avoids very long matches.

3 months agoUse Z_FORCEINLINE for all adler32 or crc32 implementation functions
Nathan Moinvaziri [Thu, 1 Jan 2026 03:50:10 +0000 (19:50 -0800)] 
Use Z_FORCEINLINE for all adler32 or crc32 implementation functions

3 months agoSimplify crc32 pre/post conditioning for consistency
Nathan Moinvaziri [Sun, 4 Jan 2026 07:54:18 +0000 (23:54 -0800)] 
Simplify crc32 pre/post conditioning for consistency

3 months agoSimplify alignment checks in crc32_loongarch64
Nathan Moinvaziri [Sun, 4 Jan 2026 07:22:39 +0000 (23:22 -0800)] 
Simplify alignment checks in crc32_loongarch64

3 months agoSimplify alignment checks in crc32_armv8_pmull_eor3
Nathan Moinvaziri [Sun, 4 Jan 2026 07:09:13 +0000 (23:09 -0800)] 
Simplify alignment checks in crc32_armv8_pmull_eor3

3 months agoSimplify alignment checks in crc32_armv8
Nathan Moinvaziri [Sun, 4 Jan 2026 07:09:25 +0000 (23:09 -0800)] 
Simplify alignment checks in crc32_armv8

3 months agoRemove unnecessary buf variables in crc32_armv8.
Nathan Moinvaziri [Sun, 4 Jan 2026 04:46:57 +0000 (20:46 -0800)] 
Remove unnecessary buf variables in crc32_armv8.

3 months agoRemove unnecessary buf variables in crc32_loongarch64.
Nathan Moinvaziri [Sun, 4 Jan 2026 04:46:57 +0000 (20:46 -0800)] 
Remove unnecessary buf variables in crc32_loongarch64.

3 months agoAdd ALIGN_DIFF to perform alignment needed to next boundary
Nathan Moinvaziri [Sun, 4 Jan 2026 07:52:27 +0000 (23:52 -0800)] 
Add ALIGN_DIFF to perform alignment needed to next boundary

3 months agoConsume bits before branches in inflate_fast.
Dougall Johnson [Sun, 28 Dec 2025 23:41:02 +0000 (15:41 -0800)] 
Consume bits before branches in inflate_fast.

3 months agoUnroll some of the adler checksum for LASX
Vladislav Shchapov [Sat, 27 Dec 2025 19:58:55 +0000 (00:58 +0500)] 
Unroll some of the adler checksum for LASX

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months ago[CI] Add workflow with no AVX512VNNI
Mika Lindqvist [Mon, 5 Jan 2026 00:08:42 +0000 (02:08 +0200)] 
[CI] Add workflow with no AVX512VNNI
* This adds coverage with optimizations that have versions for both AVX512 and AVX512VNNI

3 months agoUse bitrev instruction on LoongArch.
Vladislav Shchapov [Sat, 20 Dec 2025 14:06:59 +0000 (19:06 +0500)] 
Use bitrev instruction on LoongArch.

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoBump actions/upload-artifact from 5 to 6
dependabot[bot] [Thu, 1 Jan 2026 07:04:31 +0000 (07:04 +0000)] 
Bump actions/upload-artifact from 5 to 6

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 months agoBump actions/download-artifact from 6 to 7
dependabot[bot] [Thu, 1 Jan 2026 07:04:21 +0000 (07:04 +0000)] 
Bump actions/download-artifact from 6 to 7

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
3 months agoCheck CPU info for fast PMULL support.
Nathan Moinvaziri [Mon, 8 Dec 2025 02:44:30 +0000 (18:44 -0800)] 
Check CPU info for fast PMULL support.

armv8_pmull_eor3 is beneficial only if the CPU has multiple PMULL
execution units.

Co-authored-by: Adam Stylinski <kungfujesus06@gmail.com>
3 months agoIntegrate ARMv8 PMULL+EOR3 crc32 algorithm from Peter Cawley
Nathan Moinvaziri [Sun, 28 Dec 2025 22:47:44 +0000 (14:47 -0800)] 
Integrate ARMv8 PMULL+EOR3 crc32 algorithm from Peter Cawley

https://github.com/corsix/fast-crc32
https://github.com/zlib-ng/zlib-ng/pull/2023#discussion_r2573303259

Co-authored-by: Peter Cawley <corsix@corsix.org>
3 months agoLoongArch64 and e2k has 8-byte general-purpose registers.
Vladislav Shchapov [Thu, 25 Dec 2025 09:40:17 +0000 (14:40 +0500)] 
LoongArch64 and e2k has 8-byte general-purpose registers.

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>