]> git.ipfire.org Git - thirdparty/zstd.git/log
thirdparty/zstd.git
3 years ago[huf] Fix OSS-Fuzz assert 2808/head
Nick Terrell [Mon, 27 Sep 2021 20:56:07 +0000 (13:56 -0700)] 
[huf] Fix OSS-Fuzz assert

PR #2784 introduced a bug in the decompressor that caused some valid
inputs to fail to decompress. The bitstream isn't reloaded after the 4X*
loop if the number of elements remaining is small enough, causing us to
read more bits than are available in the bitcontainer.

This was caught by the MSAN fuzzer in OSS-Fuzz because the assembly
implementation isn't used in the MSAN build.

Credit to OSS-Fuzz.

3 years agominor : fix comment
Yann Collet [Sun, 26 Sep 2021 15:44:18 +0000 (08:44 -0700)] 
minor : fix comment

provide correct reasons to include zstd_internal.h

3 years agoadded link to RFC
Yann Collet [Sun, 26 Sep 2021 13:58:10 +0000 (06:58 -0700)] 
added link to RFC

3 years agominor : makes the "stable" property of Zstandard format more prominent
Yann Collet [Sun, 26 Sep 2021 13:48:52 +0000 (06:48 -0700)] 
minor : makes the "stable" property of Zstandard format more prominent

3 years agoMerge pull request #2790 from solbjorn/huf-asm-kernel
Nick Terrell [Fri, 24 Sep 2021 19:42:03 +0000 (12:42 -0700)] 
Merge pull request #2790 from solbjorn/huf-asm-kernel

[contrib][linux] Fix build after introducing ASM HUF implementation

3 years agoMerge pull request #2796 from terrelln/linux-fixes
Nick Terrell [Thu, 23 Sep 2021 23:11:53 +0000 (16:11 -0700)] 
Merge pull request #2796 from terrelln/linux-fixes

[lib] Make lib compatible with `-Wfall-through` excepting legacy

3 years agoMerge pull request #2799 from terrelln/oss-fuzz-build
Nick Terrell [Thu, 23 Sep 2021 22:55:10 +0000 (15:55 -0700)] 
Merge pull request #2799 from terrelln/oss-fuzz-build

[build] Fix oss-fuzz build with the dataflow sanitizer

3 years agoMerge pull request #2798 from abxhr/typo-fix
Nick Terrell [Thu, 23 Sep 2021 20:11:45 +0000 (13:11 -0700)] 
Merge pull request #2798 from abxhr/typo-fix

Fix typo

3 years ago[build] Fix oss-fuzz build with the dataflow sanitizer 2799/head
Nick Terrell [Thu, 23 Sep 2021 18:48:39 +0000 (11:48 -0700)] 
[build] Fix oss-fuzz build with the dataflow sanitizer

The dataflow sanitizer requires all code to be instrumented. We can't
instrument the ASM function, so we have to disable it.

3 years agoMerge pull request #2797 from facebook/btconst
Yann Collet [Thu, 23 Sep 2021 18:37:15 +0000 (11:37 -0700)] 
Merge pull request #2797 from facebook/btconst

minor: constify MatchState* parameter when possible

3 years agoFix typo 2798/head
Abshar Mohammed Aslam [Thu, 23 Sep 2021 17:54:38 +0000 (21:54 +0400)] 
Fix typo

3 years ago[lib] Make lib compatible with `-Wfall-through` excepting legacy 2796/head
Nick Terrell [Thu, 23 Sep 2021 02:56:07 +0000 (19:56 -0700)] 
[lib] Make lib compatible with `-Wfall-through` excepting legacy

Switch to a macro `ZSTD_FALLTHROUGH;` instead of a comment. On supported
compilers this uses an attribute, otherwise it becomes a comment.

This is necessary to be compatible with clang's `-Wfall-through`, and
gcc's `-Wfall-through=2` which don't support comments. Without this the
linux build emits a bunch of warnings.

Also add a test to CI to ensure that we don't regress.

3 years agoconstify MatchState* parameter when possible 2797/head
Yann Collet [Thu, 23 Sep 2021 15:27:44 +0000 (08:27 -0700)] 
constify MatchState* parameter when possible

turns out, it's possible to constify MatchState* parameter
in some parts of the binary tree algorithm,
making it a pure read-only parameter,
as opposed to a mutable state.

This is supposed to be helpful for both maintenance and the compiler.

3 years ago[contrib][linux] Add contrib/linux-kernel/linux to .gitignore 2790/head
Alexander Lobakin [Thu, 23 Sep 2021 14:33:24 +0000 (16:33 +0200)] 
[contrib][linux] Add contrib/linux-kernel/linux to .gitignore

The mentioned path is being created/used by the 'import' rule for
generating source files for Linux kernel.

Signed-off-by: Alexander Lobakin <alobakin@pm.me>
3 years ago[contrib][linux] Add huf_decompress_amd64.o target to Makefile
Alexander Lobakin [Tue, 21 Sep 2021 18:17:34 +0000 (20:17 +0200)] 
[contrib][linux] Add huf_decompress_amd64.o target to Makefile

Commit a5f2c4552803 ("Huffman ASM") added a new ASM source file,
but it wasn't added to the kernel Makefile despite that it received
support for Huffman ASM according to the internal definitions. This
leads to undefined references, as huf_decompress.o now calls those
ASM functions.
Add it to the list of sources when building inside the kernel tree.
Kbuild can handle .S files just fine, so none additional rules
needed.

Fixes: a5f2c4552803 ("Huffman ASM")
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
3 years ago[contrib][linux] Fix build with CONFIG_WERROR
Alexander Lobakin [Tue, 21 Sep 2021 18:06:49 +0000 (20:06 +0200)] 
[contrib][linux] Fix build with CONFIG_WERROR

Linux 5.15 introduces a new Kconfig option, CONFIG_WERROR, which
forces -Werror for the entire kernel.
Current in-kernel ZSTD implementation uses functions deprecated
in 1.5.0, and thus fails on -Wdeprecated-declarations.
Turn this particular error into warning to be able to build the
kernel with CONFIG_WERROR. I'm not disabling them completely to
make sure they'll be visible and [hopefully] fixed sooner or later.

Signed-off-by: Alexander Lobakin <alobakin@pm.me>
3 years agoMerge pull request #2780 from senhuang42/blocksplit_stack_reduce
sen [Thu, 23 Sep 2021 13:48:04 +0000 (09:48 -0400)] 
Merge pull request #2780 from senhuang42/blocksplit_stack_reduce

Reduce stack usage of block splitter

3 years agoMove block splitter from stack to CCtx 2780/head
senhuang42 [Wed, 22 Sep 2021 15:16:46 +0000 (11:16 -0400)] 
Move block splitter from stack to CCtx

3 years agoMerge pull request #2795 from terrelln/linux-fixes
Nick Terrell [Thu, 23 Sep 2021 02:56:53 +0000 (19:56 -0700)] 
Merge pull request #2795 from terrelln/linux-fixes

[contrib][linux] Reduce stack usage by 80 bytes

3 years ago[contrib][linux] Reduce stack usage by 80 bytes 2795/head
Nick Terrell [Thu, 23 Sep 2021 01:13:02 +0000 (18:13 -0700)] 
[contrib][linux] Reduce stack usage by 80 bytes

Instead of calling `ZSTD_compress_advanced()` and
`ZSTD_initCStream_advanced()`, which each take a `ZSTD_parameters` by
value, use the new advanced API.

Stack usage went from 2024 -> 1944.

3 years agoMerge pull request #2794 from terrelln/spdx-license
Nick Terrell [Thu, 23 Sep 2021 00:33:31 +0000 (17:33 -0700)] 
Merge pull request #2794 from terrelln/spdx-license

[contrib][linux] Fix up SPDX license identifiers

3 years agoMerge pull request #2793 from facebook/rdoc
Yann Collet [Thu, 23 Sep 2021 00:07:49 +0000 (17:07 -0700)] 
Merge pull request #2793 from facebook/rdoc

Minor documentation update

3 years ago[contrib][linux] Fix up SPDX license identifiers 2794/head
Nick Terrell [Wed, 22 Sep 2021 22:06:08 +0000 (15:06 -0700)] 
[contrib][linux] Fix up SPDX license identifiers

Correctly identify that we are GPL v2+ or BSD 3 clause, as pointed out
in issue #2663.

3 years agoregenerated zstdless.1 2793/head
Yann Collet [Wed, 22 Sep 2021 21:48:51 +0000 (14:48 -0700)] 
regenerated zstdless.1

3 years agoupdated zstdgrep man page
Yann Collet [Wed, 22 Sep 2021 21:30:59 +0000 (14:30 -0700)] 
updated zstdgrep man page

3 years agoupdate zstdgrep doc
Yann Collet [Wed, 22 Sep 2021 21:30:06 +0000 (14:30 -0700)] 
update zstdgrep doc

to mention ripgrep alternative which transparently supports zstd-compressed files.

3 years agoupdated man pages
Yann Collet [Wed, 22 Sep 2021 21:18:24 +0000 (14:18 -0700)] 
updated man pages

using ronn-ng

3 years agoemphasize usage of -r in documentation
Yann Collet [Wed, 22 Sep 2021 21:00:20 +0000 (14:00 -0700)] 
emphasize usage of -r in documentation

notably as a way to overcome shell expansion limitations,
notably in a scenario of dictionary training.

3 years agoMerge pull request #2779 from senhuang42/fse_fix
sen [Wed, 22 Sep 2021 17:51:21 +0000 (13:51 -0400)] 
Merge pull request #2779 from senhuang42/fse_fix

Fix NCountWriteBound

3 years agoMerge pull request #2788 from senhuang42/param_switch
sen [Wed, 22 Sep 2021 17:27:55 +0000 (13:27 -0400)] 
Merge pull request #2788 from senhuang42/param_switch

Use new paramSwitch enum for row matchfinder and block splitter

3 years agoMerge pull request #2791 from terrelln/huf-asm-fixes
Nick Terrell [Wed, 22 Sep 2021 16:59:02 +0000 (09:59 -0700)] 
Merge pull request #2791 from terrelln/huf-asm-fixes

[huf] Fix compilation when DYNAMIC_BMI2=0 && BMI2 is supported

3 years agoAdd test case for FSE over-write 2779/head
senhuang42 [Wed, 22 Sep 2021 15:27:56 +0000 (11:27 -0400)] 
Add test case for FSE over-write

3 years ago[huf] Fix compilation when DYNAMIC_BMI2=0 && BMI2 is supported 2791/head
Nick Terrell [Tue, 21 Sep 2021 23:36:33 +0000 (16:36 -0700)] 
[huf] Fix compilation when DYNAMIC_BMI2=0 && BMI2 is supported

* Fix compilation issues pointed out in PR #2790.
* Add test cases to GitHub actions that test all combinations of
  `DYNAMIC_BMI2` BMI2 support.

3 years agoUse new paramSwitch enum for LDM 2788/head
senhuang42 [Tue, 21 Sep 2021 15:56:02 +0000 (11:56 -0400)] 
Use new paramSwitch enum for LDM

3 years agoUse new paramSwitch enum for LCM, row matchfinder, and block splitter
senhuang42 [Mon, 20 Sep 2021 13:04:07 +0000 (09:04 -0400)] 
Use new paramSwitch enum for LCM, row matchfinder, and block splitter

3 years agoMerge pull request #2722 from terrelln/huf-asm
Nick Terrell [Tue, 21 Sep 2021 00:32:30 +0000 (17:32 -0700)] 
Merge pull request #2722 from terrelln/huf-asm

Assembly implementation of 4X1 & 4X2 Huffman

3 years agoHuffman ASM 2722/head
Nick Terrell [Fri, 17 Sep 2021 18:43:04 +0000 (11:43 -0700)] 
Huffman ASM

3 years agoMerge pull request #2784 from terrelln/huf-asm-fuzzer
Nick Terrell [Mon, 20 Sep 2021 18:57:27 +0000 (11:57 -0700)] 
Merge pull request #2784 from terrelln/huf-asm-fuzzer

[fuzzer] Add Huffman decompression fuzzer

3 years agoMerge pull request #2787 from animalize/msvc2019
Yann Collet [Mon, 20 Sep 2021 18:14:51 +0000 (11:14 -0700)] 
Merge pull request #2787 from animalize/msvc2019

add msvc2019 to build.generic.cmd

3 years agoadd msvc2019 to build.generic.cmd 2787/head
Ma Lin [Sun, 19 Sep 2021 01:57:06 +0000 (09:57 +0800)] 
add msvc2019 to build.generic.cmd

3 years ago[fuzzer] Add huf_decompress fuzzer 2784/head
Nick Terrell [Fri, 17 Sep 2021 19:58:04 +0000 (12:58 -0700)] 
[fuzzer] Add huf_decompress fuzzer

Add a fuzzer for Huffman decompression. Fix several bugs in Huffman
decompression, mostly related to `op == NULL` and pointer underflow.

3 years agoMerge pull request #2783 from terrelln/huf-asm-makefiles
Nick Terrell [Fri, 17 Sep 2021 21:56:47 +0000 (14:56 -0700)] 
Merge pull request #2783 from terrelln/huf-asm-makefiles

[build] Add support for ASM files in Make + CMake

3 years ago[build] Add support for ASM files in Make + CMake 2783/head
Nick Terrell [Fri, 17 Sep 2021 18:42:08 +0000 (11:42 -0700)] 
[build] Add support for ASM files in Make + CMake

* Extract out common portion of `lib/Makefile` into `lib/libzstd.mk`.
  Most relevantly, the way we find library files.
* Use `lib/libzstd.mk` in the other Makefiles instead of repeating the
  same code.
* Add a test `tests/test-variants.sh` that checks that the builds of
  `make -C programs allVariants` are correct, and run it in Actions.
* Adds support for ASM files in the CMake build.

The Meson build is not updated because it lists every file in zstd,
and supports ASM off the bat, so the Huffman ASM commit will just add
the ASM file to the list.

The Visual Studios build is not updated because I'm not adding ASM
support to Visual Studios yet.

3 years agoMerge pull request #2778 from senhuang42/opt_inlining_revert
sen [Wed, 15 Sep 2021 18:22:10 +0000 (14:22 -0400)] 
Merge pull request #2778 from senhuang42/opt_inlining_revert

Revert opt outlining change

3 years agoFix NCountWriteBound
Sen Huang [Wed, 15 Sep 2021 16:51:42 +0000 (09:51 -0700)] 
Fix NCountWriteBound

3 years agoRevert opt outlining change 2778/head
Sen Huang [Wed, 15 Sep 2021 16:08:41 +0000 (09:08 -0700)] 
Revert opt outlining change

3 years agoMerge pull request #2777 from terrelln/oss-fuzz-fix
Nick Terrell [Tue, 14 Sep 2021 20:20:22 +0000 (13:20 -0700)] 
Merge pull request #2777 from terrelln/oss-fuzz-fix

[rsyncable] Fix test failures

3 years ago[rsyncable] Fix test failures 2777/head
Nick Terrell [Tue, 14 Sep 2021 18:57:26 +0000 (11:57 -0700)] 
[rsyncable] Fix test failures

Test failures showed up on the daily cron job. They didn't show up
in CI because the condition is somewhat rare, and didn't trigger
during the CI tests.

This PR fixes up the logic in `findSynchronizationPoint()` to correctly
handle the edge case. It also un-comments an assert that helps catch the
issue, and verify that rsyncable mode is calculating the correct hash.

After the fix, the test that failed passes:

```
./zstreamtest --newapi -t1 --no-big-tests -s9680
```

3 years agoMerge pull request #2771 from facebook/opt_investigation
Yann Collet [Tue, 14 Sep 2021 17:36:34 +0000 (10:36 -0700)] 
Merge pull request #2771 from facebook/opt_investigation

Improve optimal parser performance on small data

3 years agoMerge pull request #2776 from terrelln/oss-fuzz-fix
Nick Terrell [Tue, 14 Sep 2021 16:37:43 +0000 (09:37 -0700)] 
Merge pull request #2776 from terrelln/oss-fuzz-fix

[rsyncable] Ensure ZSTD_compressBound() is respected

3 years agoMerge branch 'dev' into opt_investigation 2771/head
Yann Collet [Tue, 14 Sep 2021 08:15:51 +0000 (01:15 -0700)] 
Merge branch 'dev' into opt_investigation

3 years agoMerge pull request #2773 from senhuang42/huffman_bugix
sen [Tue, 14 Sep 2021 01:02:42 +0000 (21:02 -0400)] 
Merge pull request #2773 from senhuang42/huffman_bugix

Fix dictionary training huffman segfault and small speed improvement

3 years ago[rsyncable] Ensure ZSTD_compressBound() is respected 2776/head
Nick Terrell [Mon, 13 Sep 2021 23:59:20 +0000 (16:59 -0700)] 
[rsyncable] Ensure ZSTD_compressBound() is respected

In degenerate cases `--rsyncable` could create very small blocks (1
byte). This causes the compressed output to be larger than
`ZSTD_compressBound()`. Fix the issue by ensuring that rsyncable mode
never outputs blocks smaller than 128 KB.

The minimum job size is 512 KB, so we shouldn't lose many
synchronization points from skipping any that cause blocks smaller than
128 KB. And even if we do, that is fine, because we'll find the next
one.

This fixes the `raw_dictionary_round_trip` oss-fuzz assert.

Credit to OSS-Fuzz

3 years agoUpdate regression test 2773/head
Sen Huang [Thu, 9 Sep 2021 16:02:21 +0000 (09:02 -0700)] 
Update regression test

3 years agoAdd a dictionary training large corpus test
Sen Huang [Thu, 9 Sep 2021 15:55:43 +0000 (08:55 -0700)] 
Add a dictionary training large corpus test

3 years agoUse 32 buckets for log2 bucketing in huffman sort
Sen Huang [Thu, 9 Sep 2021 15:28:12 +0000 (08:28 -0700)] 
Use 32 buckets for log2 bucketing in huffman sort

3 years agoupdated regression tests
Yann Collet [Sun, 12 Sep 2021 17:22:35 +0000 (10:22 -0700)] 
updated regression tests

3 years agoMerge branch 'dev' into opt_investigation
Yann Collet [Sun, 12 Sep 2021 08:42:49 +0000 (01:42 -0700)] 
Merge branch 'dev' into opt_investigation

3 years agofix automated_benchmarking
Yann Collet [Sun, 12 Sep 2021 08:36:18 +0000 (01:36 -0700)] 
fix automated_benchmarking

make it able to process text output sent into either stdout or stderr

3 years agoMerge pull request #2775 from eli-schwartz/meson
Yann Collet [Fri, 10 Sep 2021 12:47:52 +0000 (05:47 -0700)] 
Merge pull request #2775 from eli-schwartz/meson

meson: fix type error for integer option

3 years agomeson: fix type error for integer option 2775/head
Eli Schwartz [Mon, 6 Sep 2021 20:04:48 +0000 (16:04 -0400)] 
meson: fix type error for integer option

meson forgave using the wrong type, but this isn't guaranteed. muon
simply failed.

3 years agoMerge pull request #2749 from felixhandte/zstd-fast-pipelined
Felix Handte [Thu, 9 Sep 2021 21:05:30 +0000 (17:05 -0400)] 
Merge pull request #2749 from felixhandte/zstd-fast-pipelined

Pipelined Implementation of ZSTD_fast (~+5% Speed)

3 years agomake automated-benchmarking faster
Yann Collet [Wed, 8 Sep 2021 22:12:28 +0000 (15:12 -0700)] 
make automated-benchmarking faster

by employing parallel compilation of object files.

3 years agouse ZSTD_memcpy() for better portability
Yann Collet [Wed, 8 Sep 2021 21:45:53 +0000 (14:45 -0700)] 
use ZSTD_memcpy() for better portability

notably within kernel space

3 years agoupdate regression tests
Yann Collet [Wed, 8 Sep 2021 21:37:42 +0000 (14:37 -0700)] 
update regression tests

3 years agochange update rate to 12/11/11/11
Yann Collet [Wed, 8 Sep 2021 21:05:57 +0000 (14:05 -0700)] 
change update rate to 12/11/11/11

better for large files, and sources with relatively "stable" entropy,
like silesia.tar.
slightly worse for files with rapidly changing entropy,
like Calgary.tar/.

Updated small files tests in fuzzer

3 years agochange update rate to 11/10/10/10
Yann Collet [Wed, 8 Sep 2021 15:58:28 +0000 (08:58 -0700)] 
change update rate to 11/10/10/10

better for larger blocks,
very small inefficiency on small block.

3 years agoremoved frequency booster for stat initialization of btultra2
Yann Collet [Wed, 8 Sep 2021 14:56:43 +0000 (07:56 -0700)] 
removed frequency booster for stat initialization of btultra2

used to be necessary to counter-balance the fixed-weight frequency update
which has been recently changed for an adaptive rate (targeting stable starting frequency stats).

3 years agoupdated regression tests
Yann Collet [Tue, 7 Sep 2021 16:55:14 +0000 (09:55 -0700)] 
updated regression tests

3 years agoMerge pull request #2769 from senhuang42/typo_fix
sen [Tue, 7 Sep 2021 15:09:55 +0000 (11:09 -0400)] 
Merge pull request #2769 from senhuang42/typo_fix

[easy] Fix patch-from help msg typo

3 years agoFix patch-from help msg typo 2769/head
senhuang42 [Tue, 7 Sep 2021 14:08:35 +0000 (10:08 -0400)] 
Fix patch-from help msg typo

3 years agonew statistics update policy
Yann Collet [Sat, 4 Sep 2021 07:52:44 +0000 (00:52 -0700)] 
new statistics update policy

small general compression ratio improvement for btopt+ strategies/

3 years agonew starting offcode table for zstd_opt
Yann Collet [Sat, 4 Sep 2021 00:41:42 +0000 (17:41 -0700)] 
new starting offcode table for zstd_opt

3 years agonew initializer for ll price
Yann Collet [Fri, 3 Sep 2021 23:07:31 +0000 (16:07 -0700)] 
new initializer for ll price

3 years agoDisable console notification by default within the library
Yann Collet [Fri, 3 Sep 2021 20:44:07 +0000 (13:44 -0700)] 
Disable console notification by default within the library

As a library, the default shouldn't be to write anything on console.
`cover` and `fastcover` have a `g_displayLevel` variable to control this behavior.
It's now set to 0 (no display) by default.
Setting notification to a higher level should be an explicit operation by a console application.

3 years agoremoved pretty-print of sizes in benchmark
Yann Collet [Fri, 3 Sep 2021 19:51:02 +0000 (12:51 -0700)] 
removed pretty-print of sizes in benchmark

This is less appropriate for this mode :
benchmark is about accuracy,
it's important to read the exact values.

3 years agoMerge pull request #2763 from senhuang42/opt_compiletime
sen [Thu, 2 Sep 2021 15:59:02 +0000 (11:59 -0400)] 
Merge pull request #2763 from senhuang42/opt_compiletime

Improve compile speed and binary size in `opt`

3 years agoMerge pull request #2762 from facebook/level13
Yann Collet [Thu, 2 Sep 2021 03:32:53 +0000 (20:32 -0700)] 
Merge pull request #2762 from facebook/level13

minor rebalancing of level 13

3 years agoMerge pull request #2761 from senhuang42/fse_wksp_fix
sen [Wed, 1 Sep 2021 21:09:45 +0000 (17:09 -0400)] 
Merge pull request #2761 from senhuang42/fse_wksp_fix

Add 8 bytes to FSE_buildCTable wksp

3 years agoRemove inlining for opt 2763/head
Sen Huang [Wed, 1 Sep 2021 20:48:11 +0000 (13:48 -0700)] 
Remove inlining for opt

3 years agoupdated regression tests 2762/head
Yann Collet [Wed, 1 Sep 2021 20:26:39 +0000 (13:26 -0700)] 
updated regression tests

3 years agominor rebalancing of level 13
Yann Collet [Wed, 1 Sep 2021 20:02:07 +0000 (13:02 -0700)] 
minor rebalancing of level 13

This new setup is slighly better on `silesia.tar` :
Ratio : 3.649 -> 3.655
Speed : 11.9 MB/s -> 12.2 MB/s
At the cost of more memory : 24 MB -> 32 MB
The new memory budget is a reasonable interpolation between neighboring levels 12 and 14:
level 12 : 24 MB
level 13 : 32 MB (increased from 24 MB)
level 14 : 48 MB
Window size remains unaffected (4 MB)

3 years agoAdd 8 bytes to FSE workspace 2761/head
senhuang42 [Wed, 1 Sep 2021 16:25:20 +0000 (12:25 -0400)] 
Add 8 bytes to FSE workspace

3 years agoUpdate results.csv 2749/head
W. Felix Handte [Wed, 1 Sep 2021 18:45:00 +0000 (14:45 -0400)] 
Update results.csv

3 years agoFix VS Build: Explicitly Cast to Narrow Ints
W. Felix Handte [Mon, 30 Aug 2021 16:27:49 +0000 (12:27 -0400)] 
Fix VS Build: Explicitly Cast to Narrow Ints

3 years agoChange Target Size in Fuzzer
W. Felix Handte [Thu, 26 Aug 2021 17:46:32 +0000 (13:46 -0400)] 
Change Target Size in Fuzzer

It's a bit strange, because this is hitting the dictionary special case where
the dictionary is contiguous with the input and still runs in the single-
segment path.

We should probably change that to hit the `extDict` path instead?

3 years agoDeduplicate Implementations
W. Felix Handte [Thu, 26 Aug 2021 17:29:58 +0000 (13:29 -0400)] 
Deduplicate Implementations

This removes the old `ZSTD_compressBlock_fast_generic()` and renames the new
`ZSTD_compressBlock_fast_generic_pipelined()` to replace it. This is
functionally a no-op.

3 years agoTweak Step
W. Felix Handte [Fri, 20 Aug 2021 21:06:41 +0000 (17:06 -0400)] 
Tweak Step

3 years agoUnroll Loop Core; Reduce Frequency of Repcode Check & Step Calc (+>1% Speed)
W. Felix Handte [Fri, 20 Aug 2021 19:56:14 +0000 (15:56 -0400)] 
Unroll Loop Core; Reduce Frequency of Repcode Check & Step Calc (+>1% Speed)

Unrolling the loop to handle 2 positions in each iteration allows us to reduce
the frequency of some operations that don't need to happen at every position.
One such operation is the step calculation, which is a very rough heuristic
anyways. It's fine if we do this a position later. The other operation is the
repcode check. But since the repcode check already tries expanding back one
position, we're really not missing much of importance by only trying it every
other position.

This commit also slightly reorders some operations.

3 years agoAdd `ip1 + 128` Prefetch; Tiny Cleanup
W. Felix Handte [Thu, 19 Aug 2021 17:58:09 +0000 (13:58 -0400)] 
Add `ip1 + 128` Prefetch; Tiny Cleanup

3 years agoNit: Only Store 2 Hash Variables
W. Felix Handte [Wed, 18 Aug 2021 20:15:53 +0000 (16:15 -0400)] 
Nit: Only Store 2 Hash Variables

3 years agoNit: Dedup idx0 and idx1
W. Felix Handte [Wed, 18 Aug 2021 20:11:22 +0000 (16:11 -0400)] 
Nit: Dedup idx0 and idx1

3 years agoGive Up on Searching End of Block
W. Felix Handte [Wed, 18 Aug 2021 20:02:01 +0000 (16:02 -0400)] 
Give Up on Searching End of Block

Amusingly, it seems to be a non-trivial performance hit to add in final
searches or even hash table insertions during cleanup. So let's not. It seems
to not make any meaningful difference in compression ratio.

3 years agoPrefetch Input in Incompressible Sections (+0.25% Speed)
W. Felix Handte [Wed, 18 Aug 2021 19:21:43 +0000 (15:21 -0400)] 
Prefetch Input in Incompressible Sections (+0.25% Speed)

3 years agoShrink Pipeline from 4 Positions to 3
W. Felix Handte [Wed, 18 Aug 2021 17:44:27 +0000 (13:44 -0400)] 
Shrink Pipeline from 4 Positions to 3

3 years agoRe-Order Operations for Slightly Better Performance
W. Felix Handte [Wed, 18 Aug 2021 16:47:48 +0000 (12:47 -0400)] 
Re-Order Operations for Slightly Better Performance

3 years agoTrack Step Size Statefully, Rather than Recalculating Every Time
W. Felix Handte [Wed, 18 Aug 2021 16:47:14 +0000 (12:47 -0400)] 
Track Step Size Statefully, Rather than Recalculating Every Time

3 years agoInitial Pipelined Implementation for ZSTD_fast
W. Felix Handte [Tue, 17 Aug 2021 16:42:39 +0000 (12:42 -0400)] 
Initial Pipelined Implementation for ZSTD_fast

3 years agoFix Benchmark Corruption Display
W. Felix Handte [Tue, 17 Aug 2021 15:31:15 +0000 (11:31 -0400)] 
Fix Benchmark Corruption Display

3 years agoMerge pull request #2758 from facebook/qemu
Yann Collet [Tue, 31 Aug 2021 16:56:50 +0000 (09:56 -0700)] 
Merge pull request #2758 from facebook/qemu

added qemu tests