]> git.ipfire.org Git - thirdparty/zlib-ng.git/log
thirdparty/zlib-ng.git
2 days agoMake test options dependent on ZLIB_ENABLE_TESTS develop
Cameron Cawley [Fri, 11 Jul 2025 12:19:02 +0000 (13:19 +0100)] 
Make test options dependent on ZLIB_ENABLE_TESTS

9 days agoUpdate incorrect comment
Hans Kristian Rosbach [Sat, 12 Jul 2025 11:08:05 +0000 (13:08 +0200)] 
Update incorrect comment

9 days agoRevert "Inserting strings is not slow any longer, remove bypass in deflate_medium()."
Hans Kristian Rosbach [Sat, 12 Jul 2025 10:48:10 +0000 (12:48 +0200)] 
Revert "Inserting strings is not slow any longer, remove bypass in deflate_medium()."

This reverts commit 322753f36e833343ae030e499564691da15eef32.

9 days agoRevert "Clean up insert_match() in deflate_medium"
Hans Kristian Rosbach [Sat, 12 Jul 2025 10:48:03 +0000 (12:48 +0200)] 
Revert "Clean up insert_match() in deflate_medium"

This reverts commit 56d3d9851a824aeb921c9853042776866aa195a3.

2 weeks agoPrep for 2.3.0 beta
Hans Kristian Rosbach [Tue, 15 Jul 2025 20:50:46 +0000 (22:50 +0200)] 
Prep for 2.3.0 beta

2 weeks agoRemove usage of aligned alloc implementations and instead use malloc
Hans Kristian Rosbach [Fri, 4 Jul 2025 10:40:33 +0000 (12:40 +0200)] 
Remove usage of aligned alloc implementations and instead use malloc
and handle alignment internally. We already always have to do those
checks because we have to support external alloc implementations.

2 weeks agoRewrite LoongArch64 CRC32 implementation based on ARMv8 with manual alignment
Vladislav Shchapov [Thu, 3 Jul 2025 15:58:16 +0000 (20:58 +0500)] 
Rewrite LoongArch64 CRC32 implementation based on ARMv8 with manual alignment

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoLoongArch64 micro-optimizations
Vladislav Shchapov [Fri, 20 Jun 2025 16:56:47 +0000 (21:56 +0500)] 
LoongArch64 micro-optimizations

Co-authored-by: junchao-zhao <zhaojunchao@loongson.cn>
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoUpdate README.md
Vladislav Shchapov [Wed, 18 Jun 2025 20:22:09 +0000 (01:22 +0500)] 
Update README.md

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 (LASX) adler32, adler32_fold_copy implementation
Vladislav Shchapov [Sat, 14 Jun 2025 20:44:38 +0000 (01:44 +0500)] 
Add LoongArch64 (LASX) adler32, adler32_fold_copy implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 (LSX) adler32, adler32_fold_copy implementation
Vladislav Shchapov [Sat, 14 Jun 2025 12:04:23 +0000 (17:04 +0500)] 
Add LoongArch64 (LSX) adler32, adler32_fold_copy implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 (LASX) chunkmemset family of functions implementation
Vladislav Shchapov [Fri, 13 Jun 2025 15:49:34 +0000 (20:49 +0500)] 
Add LoongArch64 (LASX) chunkmemset family of functions implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 (LSX) chunkmemset family of functions implementation
Vladislav Shchapov [Thu, 12 Jun 2025 15:34:26 +0000 (20:34 +0500)] 
Add LoongArch64 (LSX) chunkmemset family of functions implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 compare256, longest_match, longest_match_slow implementation
Vladislav Shchapov [Thu, 12 Jun 2025 10:25:23 +0000 (15:25 +0500)] 
Add LoongArch64 compare256, longest_match, longest_match_slow implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoImprove LoongArch64 crc32_fold* implementation
Vladislav Shchapov [Tue, 10 Jun 2025 16:42:21 +0000 (21:42 +0500)] 
Improve LoongArch64 crc32_fold* implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 slide_hash implementation
Vladislav Shchapov [Tue, 10 Jun 2025 15:35:02 +0000 (20:35 +0500)] 
Add LoongArch64 slide_hash implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 check for LSX, LASX features
Vladislav Shchapov [Tue, 10 Jun 2025 11:46:36 +0000 (16:46 +0500)] 
Add LoongArch64 check for LSX, LASX features

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd LoongArch64 CRC32 implementation
Vladislav Shchapov [Mon, 9 Jun 2025 16:01:07 +0000 (21:01 +0500)] 
Add LoongArch64 CRC32 implementation

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoAdd support for cross-compiling for LoongArch64
Vladislav Shchapov [Sun, 8 Jun 2025 16:53:47 +0000 (21:53 +0500)] 
Add support for cross-compiling for LoongArch64

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 weeks agoRemove volatile keyword from ARM inline assembler
Cameron Cawley [Tue, 29 Apr 2025 14:15:34 +0000 (15:15 +0100)] 
Remove volatile keyword from ARM inline assembler

2 weeks agoCheck ZMM support when detecting VPCLMULQDQ support
Cameron Cawley [Thu, 10 Jul 2025 11:47:52 +0000 (12:47 +0100)] 
Check ZMM support when detecting VPCLMULQDQ support

2 weeks agoAdd .gitignore to allow run tests with zlib-ng/corpora and local dataset from working...
Vladislav Shchapov [Fri, 20 Jun 2025 19:40:49 +0000 (00:40 +0500)] 
Add .gitignore to allow run tests with zlib-ng/corpora and local dataset from working copy

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 weeks agoFix building with runtime CPU detection disabled
Cameron Cawley [Wed, 9 Jul 2025 12:21:09 +0000 (13:21 +0100)] 
Fix building with runtime CPU detection disabled

3 weeks agoFix broken actions-runner
Hans Kristian Rosbach [Fri, 4 Jul 2025 22:50:52 +0000 (00:50 +0200)] 
Fix broken actions-runner

5 weeks agoOptimize chunkcopy_rvv:
LFF [Sat, 7 Jun 2025 08:23:29 +0000 (16:23 +0800)] 
Optimize chunkcopy_rvv:

1. Skip aligning memcpy when dist >= len.
Obviously aligning memcpy is redundant when dist >= len which
contains extra very slow load&store instrutions. And I noticed
that dist is way larger than len in most cases by adding printf in
chunkcopy_rvv with apt install (very narrow situation but makes
sense). So I tend to move the comparing before aligning memcpy
since it is only needed by the overlap situation.

2. Make the largest copy while len > dist.
Chunkcopy_rvv only copies as much memory as possible once after
aligning memcpy then uses sizeof(chunk_t) to finish the rest
copying. However, we should do the largest copy as long as
len < dist.

5 weeks agoSimplify compatibility intrinsics for x86
Vladislav Shchapov [Wed, 18 Jun 2025 13:43:26 +0000 (18:43 +0500)] 
Simplify compatibility intrinsics for x86

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
6 weeks agoAdd bindir into zlib.pc.in for compatibility with Cygwin and Msys2
Vladislav Shchapov [Fri, 6 Jun 2025 16:39:02 +0000 (21:39 +0500)] 
Add bindir into zlib.pc.in for compatibility with Cygwin and Msys2

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
6 weeks agoReplace deprecated windows-2019 with windows-2022
Vladislav Shchapov [Tue, 10 Jun 2025 17:50:33 +0000 (22:50 +0500)] 
Replace deprecated windows-2019 with windows-2022

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
2 months ago[configure] Add support for RISC-V ZBC extension
Mika Lindqvist [Tue, 20 May 2025 18:57:42 +0000 (21:57 +0300)] 
[configure] Add support for RISC-V ZBC extension

2 months agoFix 32bit large chorba
Sam Russell [Mon, 12 May 2025 08:34:21 +0000 (10:34 +0200)] 
Fix 32bit large chorba

2 months ago[WebAssembly] Fix stack overflow in crc32_chorba_118960_nondestructive.
Mika Lindqvist [Fri, 16 May 2025 22:10:28 +0000 (01:10 +0300)] 
[WebAssembly] Fix stack overflow in crc32_chorba_118960_nondestructive.

2 months agoAdd large 1mb buffer test for crc32 hashing.
Nathan Moinvaziri [Mon, 12 May 2025 17:16:27 +0000 (13:16 -0400)] 
Add large 1mb buffer test for crc32 hashing.

2 months agoriscv: add bash configure script and related ci support for riscv
yintong [Fri, 25 Apr 2025 03:23:43 +0000 (11:23 +0800)] 
riscv: add  bash configure script and related ci support for riscv

3 months agoRemove unnecessary extern
Pavel P [Sat, 26 Apr 2025 19:07:29 +0000 (21:07 +0200)] 
Remove unnecessary extern

3 months agoMatch function declaration for chorba_small_nondestructive_sse2
Pavel P [Sat, 26 Apr 2025 19:02:32 +0000 (21:02 +0200)] 
Match function declaration for chorba_small_nondestructive_sse2

3 months agoriscv: add crc32 optimization using zbc extension
yintong [Tue, 22 Apr 2025 02:58:52 +0000 (10:58 +0800)] 
riscv: add crc32 optimization using zbc extension

3 months agoSSE4.1 optimized chorba
Adam Stylinski [Tue, 11 Mar 2025 01:17:25 +0000 (21:17 -0400)] 
SSE4.1 optimized chorba

This is ~25-30% faster than the SSE2 variant on a core2 quad. The main reason
for this has to do with the fact that, while incurring far fewer shifts,
an entirely separate stack buffer has to be managed that is the size of
the L1 cache on most CPUs. This was one of the main reasons the 32k
specialized function was slower for the scalar counterpart, despite auto
vectorizing. The auto vectorized loop was setting up the stack buffer at
unaligned offsets, which is detrimental to performance pre-nehalem.
Additionally, we were losing a fair bit of time to the zero
initialization, which we are now doing more selectively.

There are a ton of loads and stores happening, and for sure we are bound
on the fill buffer + store forwarding. An SSE2 version of this code is
probably possible by simply replacing the shifts with unpacks with zero
and the palignr's with shufpd's. I'm just not sure it'll be all that worth
it, though. We are gating against SSE4.1 not because we are using specifically
a 4.1 instruction but because that marks when Wolfdale came out and palignr
became a lot faster.

3 months agoport: Use __cpuid only, when available.
Detlef Riekenberg [Mon, 14 Apr 2025 23:59:47 +0000 (01:59 +0200)] 
port: Use __cpuid only, when available.

Add a fallback, when __cpuid is not available

3 months agoAdd AVX512 version of compare256
Hans Kristian Rosbach [Thu, 10 Apr 2025 22:46:06 +0000 (00:46 +0200)] 
Add AVX512 version of compare256

Improve the speed of sub-16 byte matches by first using a
128-bit intrinsic, after that use only 512-bit intrinsics.
This requires us to overlap on the last run, but this is cheaper than
processing the tail using a 256-bit and then a 128-bit run.

Change benchmark steps to avoid it hitting chunk boundaries
of one or the other function as much, this gives more fair benchmarks.

3 months agoSpeed up benchmarks when run as part of gtest as it does not check data
Hans Kristian Rosbach [Mon, 17 Mar 2025 14:09:26 +0000 (15:09 +0100)] 
Speed up benchmarks when run as part of gtest as it does not check data
for correctness, making it only run each benchmark for 1 iteration, instead
of thousands or hundreds of thousands.

Add a separate CI step to crashtest benchmarks without collecting any coverage data.

Activate benchmarks in more arches.

Disable some warnings to avoid errors in compiling google benchmark.

Remove separate benchmark CI job, now included in other jobs instead.

3 months agoRemove NMake build projects
Nathan Moinvaziri [Thu, 10 Apr 2025 14:59:59 +0000 (07:59 -0700)] 
Remove NMake build projects

Reduce development burden by getting rid of NMake files that are manually
kept up to date. For continued NMake support please generate NMake project
files using CMake.

3 months ago[FreeBSD] Define _XOPEN_SOURCE for gtest_zlib
Mika Lindqvist [Thu, 10 Apr 2025 21:53:33 +0000 (00:53 +0300)] 
[FreeBSD] Define _XOPEN_SOURCE for gtest_zlib
* Without defining _XOPEN_SOURCE as 700, isascii() is not available on FreeBSD 14.

3 months agoRemove late enable_language calls.
Vladislav Shchapov [Mon, 14 Apr 2025 12:06:51 +0000 (17:06 +0500)] 
Remove late enable_language calls.

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
3 months agoFix CXXFLAGS when coverage enabled.
Mika T. Lindqvist [Fri, 11 Apr 2025 17:02:27 +0000 (20:02 +0300)] 
Fix CXXFLAGS when coverage enabled.

3 months agoFix SPARC64 packages for Ubuntu 24.
Nathan Moinvaziri [Tue, 8 Apr 2025 22:56:44 +0000 (15:56 -0700)] 
Fix SPARC64 packages for Ubuntu 24.

3 months agoFix PPC64LE CI run when targeting power8.
Nathan Moinvaziri [Tue, 8 Apr 2025 17:15:49 +0000 (10:15 -0700)] 
Fix PPC64LE CI run when targeting power8.

3 months agoRemove deprecated ubuntu-20.04 image from CI.
Nathan Moinvaziri [Tue, 8 Apr 2025 17:00:37 +0000 (10:00 -0700)] 
Remove deprecated ubuntu-20.04 image from CI.

3 months agoPass POSIX_C_SOURCE for std::alligned_alloc try_compile checks
Cristi Vîjdea [Fri, 4 Apr 2025 13:32:36 +0000 (16:32 +0300)] 
Pass POSIX_C_SOURCE for std::alligned_alloc try_compile checks

On FreeBSD 11, definining POSIX_C_SOURCE to a lower level has the efect of inhibiting the language level (__ISO_C_VISIBLE ) to be lower than C11, even in the presence of -std=c11

Since the check_symbol_exists runs without setting POSIX_C_SOURCE, this means that we will spuriously define HAVE_ALIGNED_ALLOC, while in the actual build it is not going to be defined

ref: https://github.com/freebsd/freebsd-src/blob/stable/11/sys/sys/cdefs.h#L738

3 months agoFix pointer type mismatch.
Mika Lindqvist [Fri, 4 Apr 2025 17:44:15 +0000 (20:44 +0300)] 
Fix pointer type mismatch.

3 months agoCI: Preinstall packages needed for testing and benchmark.
Hans Kristian Rosbach [Wed, 2 Apr 2025 19:42:45 +0000 (21:42 +0200)] 
CI: Preinstall packages needed for testing and benchmark.
Avoids having to compile gtest and google benchmark in every CI job.

To make sure we also test downloading and building ourself, don't
install for jobs that specify any matrix.packages.

4 months agoExplicit SSE2 vectorization of Chorba CRC method
Adam Stylinski [Sun, 16 Feb 2025 17:13:00 +0000 (12:13 -0500)] 
Explicit SSE2 vectorization of Chorba CRC method

The version that's currently in the generic implementation for 32768
byte buffers leverages the stack. It manages to autovectorize but
unfortunately the trips to the stack hurt its performance for CPUs which
need this the most. This version is explicitly SIMD vectorized and
doesn't use trips to the stack.  In my testing it's ~10% faster than the
"small" variant, and about 42% faster than the "32768" variant.

4 months agoriscv: chunkset_rvv: fix SIGSEGV in CHUNKCOPY
Icenowy Zheng [Mon, 24 Mar 2025 08:50:37 +0000 (16:50 +0800)] 
riscv: chunkset_rvv: fix SIGSEGV in CHUNKCOPY

The chunkset_tpl comment allows negative dist (out - from) as long as
the length is smaller than the absolute value of dist (i.e. memory does
not overlap). However this case is currently broken in the RVV override
of CHUNKCOPY -- it compares dist (which is a ptrdiff_t, a value that
should be of the same size with size_t but signed) with the result of
sizeof (which is a size_t), and this triggers the implicit conversion
from signed to unsigned (thus losing negative values).

As it's promised to be not overlapping when dist is negative, just use a
gaint memcpy() call to copy everything.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
4 months agoFix a bug on the 32k and greater chorba specializations
Adam Stylinski [Tue, 25 Mar 2025 21:58:19 +0000 (17:58 -0400)] 
Fix a bug on the 32k and greater chorba specializations

In testing a SIMD vectorization for this, I wrote a gtest which stumbled
onto the fact that this had a bug on big endian. Before the initial CRC
had been mixed in it needed to be byte swapped.

4 months agoci: add a Clang RISCV test target
Icenowy Zheng [Tue, 25 Mar 2025 14:37:02 +0000 (22:37 +0800)] 
ci: add a Clang RISCV test target

Similar to the GCC one, this test target uses system toolchain and QEMU
too.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
4 months agoci: add a GCC RISCV test target with latest Ubuntu and system toolchain
Icenowy Zheng [Tue, 25 Mar 2025 08:29:56 +0000 (16:29 +0800)] 
ci: add a GCC RISCV test target with latest Ubuntu and system toolchain

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
4 months agoci: drop RISC-V Clang test
Icenowy Zheng [Tue, 25 Mar 2025 08:23:31 +0000 (16:23 +0800)] 
ci: drop RISC-V Clang test

The SiFive GitHub organization now deploys an IP allowlist which blocked
GitHub Actions, which makes this test always fail. In addition, this is
a quite different test than other non-x86 tests.

Drop it now.

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
4 months agoDisable MSVC optimizations for AVX512 GET_CHUNK_MAG #1883
Nathan Moinvaziri [Fri, 7 Mar 2025 03:03:11 +0000 (19:03 -0800)] 
Disable MSVC optimizations for AVX512 GET_CHUNK_MAG #1883

MSVC compiler (VS 17.11.x) incorrectly optimizes the GET_CHUNK_MAG code on
older versions. Appears to be resolved in VS 17.13.2. The compiler would
optimize the code in such a way that it would cause a decompression failure.
It only happens when /Os flag is set.

4 months ago[CI] Instead of selecting the most recent tag, select the highest version number.
Hans Kristian Rosbach [Mon, 17 Mar 2025 15:29:01 +0000 (16:29 +0100)] 
[CI] Instead of selecting the most recent tag, select the highest version number.

4 months agoports: Use memalign or _aligned_malloc, when available. Fallback to malloc
Detlef Riekenberg [Tue, 11 Mar 2025 12:38:54 +0000 (13:38 +0100)] 
ports: Use memalign or _aligned_malloc, when available. Fallback to malloc

Using "_WIN32" to decide,
if the MSVC extensions _aligned_malloc / _aligned_free are available
is a bug that breaks other Compiler on Windows. (OpenWatcom as Example)

Regards ... Detlef

4 months agofix the url of the s390x actions worker patch
Eddy S. [Thu, 6 Mar 2025 08:13:48 +0000 (09:13 +0100)] 
fix the url of the s390x actions worker patch

gaplib changed their patch name scheme with 1a5e012.

4 months agoFold a copy into the adler32 function for UPDATEWINDOW for neon
Adam Stylinski [Sat, 30 Nov 2024 17:01:28 +0000 (12:01 -0500)] 
Fold a copy into the adler32 function for UPDATEWINDOW for neon

So a lot of alterations had to be done to make this not worse and
so far, it's not really better, either. I had to force inlining for
the adler routine, I had to remove the x4 load instruction otherwise
pipelining stalled, and I had to use restrict pointers with a copy
idiom for GCC to inline a copy routine for the tail.

Still, we see a small benefit in benchmarks, particularly when done
with size of our window or larger. There's also an added benefit that
this will fix #1824.

4 months agoFix incorrect declaration of FORCE_SSE2
Vladislav Shchapov [Tue, 25 Feb 2025 06:42:48 +0000 (11:42 +0500)] 
Fix incorrect declaration of FORCE_SSE2

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
4 months agoChange flags to "-Werror=unguarded-availability", "-Werror=unguarded-availability...
Vladislav Shchapov [Mon, 24 Feb 2025 16:58:59 +0000 (21:58 +0500)] 
Change flags to "-Werror=unguarded-availability", "-Werror=unguarded-availability-new" and add it to maybe affected symbol checking

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
4 months agoRestore support macOS prior 10.15
Vladislav Shchapov [Sun, 23 Feb 2025 15:42:41 +0000 (20:42 +0500)] 
Restore support macOS prior 10.15

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
5 months agoMake Chorba configurable,and add a few missing header files to CMake config.
Hans Kristian Rosbach [Mon, 17 Feb 2025 20:22:51 +0000 (21:22 +0100)] 
Make Chorba configurable,and add a few missing header files to CMake config.
Add CI run without chorba enabled.

5 months agoUse OPTIMAL_CMP instead of BRAID_W to test for optimal size for Chorba.
Hans Kristian Rosbach [Mon, 17 Feb 2025 19:16:09 +0000 (20:16 +0100)] 
Use OPTIMAL_CMP instead of BRAID_W to test for optimal size for Chorba.

5 months agoClean up internal crc32 function handling.
Hans Kristian Rosbach [Mon, 17 Feb 2025 19:01:15 +0000 (20:01 +0100)] 
Clean up internal crc32 function handling.
Mark crc32_c and crc32_braid functions as internal, and remove prefix.
Reorder contents of generic_functions, and remove Z_INTERNAL hints from declarations.
Add test/benchmark output to indicate whether Chorba is used.

5 months agoReplace DO1/DO8 macros
Hans Kristian Rosbach [Mon, 17 Feb 2025 19:37:55 +0000 (20:37 +0100)] 
Replace DO1/DO8 macros

5 months agoMove Chorba defines
Hans Kristian Rosbach [Mon, 17 Feb 2025 18:57:08 +0000 (19:57 +0100)] 
Move Chorba defines

5 months agoClean up crc32_braid.
Hans Kristian Rosbach [Mon, 17 Feb 2025 18:18:22 +0000 (19:18 +0100)] 
Clean up crc32_braid.
- Rename N and W to BRAID_N and BRAID_W
- Remove override capabilities for BRAID_N and BRAID_W
- Fix formatting in crc32_braid_tbl.h
- Make makecrct not rely on crc32_braid_p.h

5 months agoAdded --installnamedir
Andrew Murray [Sun, 9 Feb 2025 21:58:39 +0000 (08:58 +1100)] 
Added --installnamedir

5 months agoimplement chorba algorithm
Sam Russell [Fri, 14 Feb 2025 11:20:54 +0000 (12:20 +0100)] 
implement chorba algorithm

5 months agoProvide --without-acle/-DWITH_ACLE options for backward compatibility
Cameron Cawley [Fri, 7 Feb 2025 20:51:02 +0000 (20:51 +0000)] 
Provide --without-acle/-DWITH_ACLE options for backward compatibility

5 months agoUse -Wa,-march with older ARM toolchains
Cameron Cawley [Thu, 29 Feb 2024 21:56:20 +0000 (21:56 +0000)] 
Use -Wa,-march with older ARM toolchains

5 months agoProvide an inline asm fallback for the ARMv8 intrinsics
Cameron Cawley [Thu, 29 Feb 2024 21:20:25 +0000 (21:20 +0000)] 
Provide an inline asm fallback for the ARMv8 intrinsics

5 months agoRename most ACLE references to ARMv8
Cameron Cawley [Thu, 29 Feb 2024 18:34:01 +0000 (18:34 +0000)] 
Rename most ACLE references to ARMv8

5 months ago2.2.4 Release 2.2.x stable 2.2.4
Hans Kristian Rosbach [Sun, 9 Feb 2025 12:19:01 +0000 (13:19 +0100)] 
2.2.4 Release

5 months agoFix shift overflow in inflate and send_code.
Mika Lindqvist [Sun, 26 Jan 2025 19:31:36 +0000 (21:31 +0200)] 
Fix shift overflow in inflate and send_code.

5 months agoFix an unfortunate bug with Visual Studio 2015
Adam Stylinski [Mon, 3 Feb 2025 02:05:37 +0000 (21:05 -0500)] 
Fix an unfortunate bug with Visual Studio 2015

Evidently this instruction, despite the intrinsic having a register operand,
is a memory-register instruction. There seems to be no alignment requirement
for the source operand. Because of this, compilers when not optimized are doing
the unaligned load and then dumping back to the stack to do the broadcasting load.
In doing this, MSVC seems to be dumping to the stack with an aligned move at an
unaligned address, causing a segfault.  GCC does not seem to make this mistake, as
it stashes to an aligned address.

If we're on Visual Studio 2015, let's just do the longer 9 cycle sequence of a 128
bit load followed by a vinserti128. This _should_ fix this (issue #1861).

5 months agoFix -Wmaybe-uninitialized warnings in benchmarks.
Hans Kristian Rosbach [Wed, 29 Jan 2025 17:46:34 +0000 (18:46 +0100)] 
Fix -Wmaybe-uninitialized warnings in benchmarks.

5 months agoAdd uncompress benchmark
Hans Kristian Rosbach [Wed, 29 Jan 2025 15:54:36 +0000 (16:54 +0100)] 
Add uncompress benchmark

6 months agos390x: Add workaround to install custom Clang 19.1.5 rpms to actions-runner
Hans Kristian Rosbach [Sun, 26 Jan 2025 14:05:24 +0000 (15:05 +0100)] 
s390x: Add workaround to install custom Clang 19.1.5 rpms to actions-runner
image in order to avoid the VX compiler bug in older clang versions.

6 months agoRemove unused include directories
Vladislav Shchapov [Thu, 23 Jan 2025 20:45:41 +0000 (01:45 +0500)] 
Remove unused include directories

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
6 months agoRename "arch/power/fallback_builtins.h" to avoid possible conflict with "fallback_bui...
Vladislav Shchapov [Thu, 23 Jan 2025 20:45:26 +0000 (01:45 +0500)] 
Rename "arch/power/fallback_builtins.h" to avoid possible conflict with "fallback_builtins.h" in zlib-ng sources directory

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
6 months ago[abicheck] Regenerate ABI files for zlib
Mika Lindqvist [Sun, 26 Jan 2025 11:19:08 +0000 (13:19 +0200)] 
[abicheck] Regenerate ABI files for zlib
* Generate using Ubuntu 24.04.1 LTS to fix mismatch in function signatures of gzseek() and gztell()

6 months agoDisable CRC32-VX Extention for some Clang versions
Eduard Stefes [Tue, 21 Jan 2025 09:48:07 +0000 (10:48 +0100)] 
Disable CRC32-VX Extention for some Clang versions
We have to disable the CRC32-VX implementation for some Clang versions
(18 <= version < 19.1.2) that generate bad code for the IBM S390 VGFMA intrinsics.

6 months agoIncrease cmake workflow timeout
Vladislav Shchapov [Thu, 23 Jan 2025 18:25:09 +0000 (23:25 +0500)] 
Increase cmake workflow timeout

Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
6 months agoUse Ubuntu 20.04 for PPC64LE tests due to broken qemu.
Nathan Moinvaziri [Mon, 20 Jan 2025 18:26:51 +0000 (10:26 -0800)] 
Use Ubuntu 20.04 for PPC64LE tests due to broken qemu.

6 months agoUse Ubuntu 22.04 for AARCH64 tests
Nathan Moinvaziri [Thu, 9 Jan 2025 23:47:06 +0000 (15:47 -0800)] 
Use Ubuntu 22.04 for AARCH64 tests

It seems that qemu might be failing. Tests on Raspberry Pi 5 with Ubuntu 24.04
appear to work just fine.

6 months agoAdd missing compiler-rt libraries for Ubuntu 24. #1840
Nathan Moinvaziri [Sun, 5 Jan 2025 16:01:41 +0000 (08:01 -0800)] 
Add missing compiler-rt libraries for Ubuntu 24. #1840

6 months agoIgnore gcovr parser errors.
Nathan Moinvaziri [Thu, 2 Jan 2025 00:20:17 +0000 (16:20 -0800)] 
Ignore gcovr parser errors.

6 months agoDon't pin gcovr version any longer. #1840
Nathan Moinvaziri [Wed, 1 Jan 2025 22:41:27 +0000 (14:41 -0800)] 
Don't pin gcovr version any longer. #1840

6 months agoUse correct version of gcov for cross-compilers.
Nathan Moinvaziri [Sun, 5 Jan 2025 06:05:25 +0000 (22:05 -0800)] 
Use correct version of gcov for cross-compilers.

6 months agoUse Ubuntu 24 crossbuild-essential packages.
Nathan Moinvaziri [Thu, 2 Jan 2025 23:17:33 +0000 (15:17 -0800)] 
Use Ubuntu 24 crossbuild-essential packages.

6 months agoRemove package qemu for Ubuntu 24. #1840
Nathan Moinvaziri [Wed, 1 Jan 2025 22:46:59 +0000 (14:46 -0800)] 
Remove package qemu for Ubuntu 24. #1840

6 months agoUpgrade CI from Clang-11 to Clang 15 for Ubuntu 24. #1840
Nathan Moinvaziri [Wed, 1 Jan 2025 22:38:12 +0000 (14:38 -0800)] 
Upgrade CI from Clang-11 to Clang 15 for Ubuntu 24. #1840

6 months agoImprove image/container rebuild script to work properly under cron.
Hans Kristian Rosbach [Sat, 4 Jan 2025 20:19:42 +0000 (21:19 +0100)] 
Improve image/container rebuild script to work properly under cron.

6 months agoWorkaround error G6E97C40B
Dmitry Kurtaev [Wed, 15 Jan 2025 17:28:44 +0000 (20:28 +0300)] 
Workaround error G6E97C40B

Warning as an error with GCC from Uubuntu 24.04:
```
/home/runner/work/dotnet_riscv/dotnet_riscv/runtime/src/native/external/zlib-ng/arch/riscv/riscv_features.c(25,33): error G6E97C40B: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] [/home/runner/work/dotnet_riscv/dotnet_riscv/runtime/src/native/libs/build-native.proj]
```

6 months agocmake: disable LTO for some configure checks
Sam James [Thu, 9 Jan 2025 11:36:40 +0000 (11:36 +0000)] 
cmake: disable LTO for some configure checks

Some of zlib-ng's configure tests define a function expecting it to be compiled but
don't call that function, or don't use its return value. This is risky with
LTO where the whole thing may be optimised out, which has happened before:
* https://github.com/zlib-ng/zlib-ng/issues/1616
* https://github.com/zlib-ng/zlib-ng/pull/1622
* https://gitlab.kitware.com/cmake/cmake/-/issues/26103

Closes: https://github.com/zlib-ng/zlib-ng/issues/1841
6 months agoForce use of latest Windows SDK with 32-bit ARM support for release workflows
Vladislav Shchapov [Wed, 1 Jan 2025 08:53:16 +0000 (13:53 +0500)] 
Force use of latest Windows SDK with 32-bit ARM support for release workflows

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