summaryrefslogtreecommitdiff
path: root/arch/arm/insert_string_acle.c
AgeCommit message (Collapse)Author
2022-05-13Port zlib-ng to the Android platformHEADsugisawa-mr1Danny Lin
- Add Soong blueprint - Add CRC32 fixes - Add NDK mappings All changes were based on the Android fork of Chromium zlib. Change-Id: Icf0f00d95e1534a0f5683cce40679916a464cc12
2020-06-28Clean up header includes for Win32 and ARM.Nathan Moinvaziri
Fixed MSVC compiler warning in storechunk for ARM Neon. Fixed arm_neon.h include for memchunk for ARM Neon.
2020-06-28Apply compiler flags only to source files that require them in CMake.Nathan Moinvaziri
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-10-22Clean up LIKELY/UNLIKELY definitions, making them upper-case to improve ↵Hans Kristian Rosbach
visibility. Add LIKELY_NULL hint. Add PREFETCH_L1, PREFETCH_L2 and PREFETCH_RW for GCC, Clang, ICC and MSVC.
2019-08-22use relative header pathcielavenir
2019-03-26fix all ASan errors on arm/aarch64Sebastian Pop
2018-12-13return an index for hash map collisions in insert_stringSebastian Pop
The current version of insert_string_c and variations for sse2, arm, and aarch64 in zlib-ng has changed semantics from the original code of INSERT_STRING macro in zlib: #define INSERT_STRING(s, str, match_head) \ (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ s->head[s->ins_h] = (Pos)(str)) The code of INSERT_STRING assigns match_head with the content of s->head[s->ins_h]. In zlib-ng, the assignment to match_head happens in the caller of insert_string(). zlib-ng's insert_string_*() functions return 0 instead of str+idx in case of collision, i.e., when if (s->head[s->ins_h] == str+idx). The effect of returning 0 instead of the content of s->head[s->ins_h] is that the search for a longest_match through s->prev[] chains will be cut short when arriving at 0. This leads to a shorter compression time at the expense of a worse compression rate: returning 0 cuts out the search space. With this patch: Performance counter stats for './minigzip -9 llvm.tar': 13422.379017 task-clock (msec) # 1.000 CPUs utilized 20 context-switches # 0.001 K/sec 0 cpu-migrations # 0.000 K/sec 130 page-faults # 0.010 K/sec 58,926,104,511 cycles # 4.390 GHz <not supported> stalled-cycles-frontend <not supported> stalled-cycles-backend 77,543,740,646 instructions # 1.32 insns per cycle 17,158,892,214 branches # 1278.379 M/sec 198,433,680 branch-misses # 1.16% of all branches 13.423365095 seconds time elapsed 45408 -rw-rw-r-- 1 spop spop 46493896 Dec 11 11:47 llvm.tar.gz Without this patch the compressed file is larger: Performance counter stats for './minigzip -9 llvm.tar': 13459.342312 task-clock (msec) # 1.000 CPUs utilized 25 context-switches # 0.002 K/sec 0 cpu-migrations # 0.000 K/sec 129 page-faults # 0.010 K/sec 59,088,391,808 cycles # 4.390 GHz <not supported> stalled-cycles-frontend <not supported> stalled-cycles-backend 77,600,766,958 instructions # 1.31 insns per cycle 17,486,130,785 branches # 1299.182 M/sec 196,281,761 branch-misses # 1.12% of all branches 13.463512830 seconds time elapsed 45408 -rw-rw-r-- 1 spop spop 46493896 Dec 11 11:48 llvm.tar.gz
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-03-22Move private defines from zconf.h and zconf-ng.h to zbuild.hMika Lindqvist
* move definition of z_size_t to zbuild.h
2017-10-07Update insert_string_acle.cMika Lindqvist
Build fix.
2017-08-24Fix that s->prev is not used uninitialized in insert_string_*Mika Lindqvist
2017-03-24Add support for ARM ACLE instructions.Mika Lindqvist