summaryrefslogtreecommitdiff
path: root/functable.c
AgeCommit message (Collapse)Author
2021-12-24Standardize crc32_stubMatheus Castanho
Reorganize statements inside crc32_stub() to match more closely the format used for other function stubs in functable.c.
2021-06-22[functable] Add missing call to cpu_check_features().Mika Lindqvist
2020-11-02Fixed conditional expression is constant maintainer warnings.Nathan Moinvaziri
chunkset_tpl.h(42,47): warning C4127: conditional expression is constant functable.c(381,44): warning C4127: conditional expression is constant
2020-09-11Added AVX support to chunkset functions.Nathan Moinvaziri
2020-08-31Fix numerous sign-conversion warnings in compare256/compare258 andHans Kristian Rosbach
longest_match related code.
2020-08-31Rename ZLIB_INTERNAL to Z_INTERNAL for consistency.Nathan Moinvaziri
2020-08-23Add optional support for thread local storage. (#733)Nathan Moinvaziri
2020-08-21Remove return value from insert_string, since it is always ignored andHans Kristian Rosbach
quick_insert_string is being used instead.
2020-08-20Harmonize the CPU architecture preprocessor definitions.Nathan Moinvaziri
2020-08-14Fixed many possible loss of data warnings where insert_string and ↵Nathan Moinvaziri
quick_insert_string function used on Windows.
2020-08-02Remove forward declarations for stub functions and have one forward ↵Nathan Moinvaziri
declaration for functable instead.
2020-06-28Rename from memchunk to chunkset.Nathan Moinvaziri
2020-06-28Split memcopy by architecture.Nathan Moinvaziri
Use uint8_t[8] struct on big-endian machines for speed.
2020-06-28Apply compiler flags only to source files that require them in CMake.Nathan Moinvaziri
2020-06-27Add POWER8_VSX_SLIDEHASH macroMatheus Castanho
The slide_hash optimization for POWER currently depends on POWER8 macro to be enabled. Switch this to use POWER8_VSX_SLIDEHASH instead to better match the naming scheme used by other archs.
2020-06-25Adler32 vector optimization for Power.Rogerio Alves
This commit implements a Power (POWER8+) vector optimization for Adler32 checksum using VSX (vector) instructions. The VSX adler32 checksum is up to 10x fast than the adler32 baseline code. Author: Rogerio Alves <rcardoso@linux.ibm.com>
2020-06-09Disable unaligned access of > 4 bytes on 32-bit armNiLuJe
2020-06-08Added Adler32 SSSE3 and AVX2 implementations to functable.Nathan Moinvaziri
Co-authored-by: Brian Bockelman <bockelman@gmail.com> Co-authored-by: Mika T. Lindqvist <postmaster@raasu.org>
2020-06-08Add optimized slide_hash for POWER processorsMatheus Castanho
This commit introduces a new slide_hash function that uses VSX vector instructions to slide 8 hash elements at a time, instead of just one as the standard code does.
2020-06-08Preparation for POWER optimizationsMatheus Castanho
Add the scaffolding for future optimizations for POWER processors. Now the build is capable of correctly detecting multiple processor sub-architectures (ppc, ppc64 and ppc64le) and also if features needed for the optimizations are available during build and runtime. With these changes, adding a new optimized function for POWER should be as simple as adding a new file under arch/power/, appending build instructions to the build files and editing functable.c accordingly. The UNALIGNED_OK flag is now also added by default for powerpc64le targets.
2020-05-30Remove IPos typedef which also helps to reduce casting warnings.Nathan Moinvaziri
2020-05-25Remove support for DYNAMIC_CRC_TABLE which was broken.Nathan Moinvaziri
2020-05-24Converted compare258 to static and convert longest_match to template.Nathan Moinvaziri
2020-05-24Added support for AVX2 intrinsics to compare258.Nathan Moinvaziri
2020-05-24Abstracted out architecture specific implementations of 258 byte comparison ↵Nathan Moinvaziri
to compare258.
2020-05-02Fix ARM64 build with Visual C++.Mika Lindqvist
2020-05-01Standardize fill_window implementations and abstract out slide_hash_neon for ↵Nathan Moinvaziri
ARM.
2020-04-30Standardize insert_string functionality across architectures. Added ↵Nathan Moinvaziri
unaligned conditionally compiled code for insert_string and quick_insert_string. Unify sse42 crc32 assembly between insert_string and quick_insert_string. Modified quick_insert_string to work across architectures.
2020-02-07Fixed formatting, 4 spaces for code intent, 2 spaces for preprocessor ↵Nathan Moinvaziri
indent, initial function brace on the same line as definition, removed extraneous spaces and new lines.
2019-09-21Unify detection of ARM getauxval code availability.Hans Kristian Rosbach
We don't want to compile arch-specific code when WITH_OPTIM is not set, and the current checks don't take that into account.
2019-09-04Add slide_hash to functable, and enable the sse2-optimized version.Hans Kristian Rosbach
Add necessary code to cmake and configure. Fix slide_hash_sse2 to compile with zlib-ng.
2019-09-04Changes to support compilation with MSVC ARM & ARM64 (#386)Nathan Moinvaziri
* Merge aarch64 and arm cmake sections. * Updated MSVC compiler support for ARM and ARM64. * Moved detection for -mfpu=neon to where the flag is set to simplify add_intrinsics_option. * Only add ${ACLEFLAG} on aarch64 if not WITH_NEON. * Rename arch/x86/ctzl.h to fallback_builtins.h.
2019-08-23Rename #defines for consistency (#378)Nathan Moinvaziri
2019-08-06Rename gzendian to zendian since it is included in more than just the gzip ↵Nathan Moinvaziri
library code.
2019-05-29Fix build when DYNAMIC_CRC_TABLE is defined.Mika T. Lindqvist
2019-03-08Default sse2 to be available on x86_64 arch.Hans Kristian Rosbach
Allow x86 arch to force sse2 availability. It still depends on sse2 intrinsics being detected and optimizations enabled.
2019-03-08unify uses of __ARM_FEATURE_CRC32Sebastian Pop
2019-03-06unify uses of __ARM_NEON__ and __ARM_NEONSebastian Pop
2019-03-06rename X86_SSE2_FILL_WINDOW to X86_SSE2Sebastian Pop
2019-03-01ARM: check cpu feature once at init timeSebastian Pop
This makes the checks for arm cpu features as inexpensive as on the x86 side by calling the runtime feature detection once in deflate/inflate init and then storing the result in a global variable.
2018-12-12[ARM/AArch64] Add run-time detection of ACLE and NEON instructions under Linux.Mika Lindqvist
* Use getauxval() to check support for ACLE CRC32 instructions * Allow disabling CRC32 instruction check
2018-11-01Revert "[ARM/AArch64] Add run-time detection of ACLE and NEON instructions ↵Hans Kristian Rosbach
under Linux. * Use getauxval() to check support for ACLE CRC32 instructions * Allow disabling CRC32 instruction check" This reverts commit e7e80f4cd22346a2ea3cadad57ed574078aa5576.
2018-10-30[ARM/AArch64] Add run-time detection of ACLE and NEON instructions under Linux.Mika Lindqvist
* Use getauxval() to check support for ACLE CRC32 instructions * Allow disabling CRC32 instruction check
2018-09-17Make functable thread-local.Mika Lindqvist
2018-03-22Move private defines from zconf.h and zconf-ng.h to zbuild.hMika Lindqvist
* move definition of z_size_t to zbuild.h
2018-02-16wrap crc32 in functable (#145)Daniel Black
* wrap crc32 in functable * change internal crc32 api to use uint64_t rather than size_t for length
2018-02-09[ARM/AArch64] Allow disabling NEON support in adler32_stub.Mika Lindqvist
2017-08-17Make sure we don't export internal functionsHans Kristian Rosbach
2017-05-03Lazily initialize functable members. (#108)Mika Lindqvist
- Split functableInit() function as separate functions for each functable member, so we don't need to initialize full functable in multiple places in the zlib-ng code, or to check for NULL on every invocation. - Optimized function for each functable member is detected on first invocation and the functable item is updated for subsequent invocations. - Remove NULL check in adler32() and adler32_z() as it is no longer needed.
2017-04-24- Add adler32 to functableHans Kristian Rosbach
- Add missing call to functableinit from inflateinit - Fix external direct calls to adler32 functions without calling functableinit