Skip to content

Support Fractional-Power-of-Two Window Sizes in Compression #4275

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 21 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
22572d6
Separate Public and Private CParam Structs
felixhandte Jan 29, 2025
768a55c
Also Separate Public and Private Params Structs
felixhandte Jan 29, 2025
aa76d3f
Add a `windowFrac` Field to `ZSTD_CParams`
felixhandte Jan 29, 2025
139b725
Add Public `ZSTD_c_windowFrac` CCtxParam
felixhandte Jan 29, 2025
7e695b8
Fix Fuzzer Tests
felixhandte Jan 30, 2025
4dbc1a1
Implement Support for Fractional Window Sizes
felixhandte Jan 29, 2025
3e308e2
Easy: Rename Arg to `ZSTD_cycleLog`
felixhandte Jan 30, 2025
a8da454
Trivial `fuzzer.c` Additions
felixhandte Jan 30, 2025
301a34d
Macro Guard to Control Picking Fractional Window Sizes
felixhandte Jan 30, 2025
a2f3b98
A Little More Bounds-Checking
felixhandte Feb 3, 2025
0561a50
Add Enablement Flag to Some GitHub Workflows
felixhandte Feb 3, 2025
fe80106
Only Apply `windowFrac` when `windowLog` is Also Set
felixhandte Feb 3, 2025
abc3d6f
Avoid Illegal WL and WF Combos
felixhandte Feb 5, 2025
78996a6
Correct Corner-Case Bugs in Window Sizing
felixhandte Feb 6, 2025
9848c21
Exhaustive Testing of Window Sizing Combinations
felixhandte Feb 5, 2025
705a5b2
Add WindowFrac Param to Fuzz Tests
felixhandte Feb 6, 2025
d720558
Add Advanced Parameter to CLI to Set Window Fraction
felixhandte Feb 6, 2025
8b12bd6
Add Man Page Documentation
felixhandte Feb 6, 2025
2af69f9
Add CLI Test for Fractional Window Size Param
felixhandte Feb 6, 2025
72c38c9
Fix Various Contbuild Warnings
felixhandte Feb 7, 2025
80bf084
Fix Hash-Table Sizing of Small Inputs
felixhandte Feb 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions .github/workflows/dev-long-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
- name: make test
run: make test
run: MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" make test

# lasts ~26mn
make-test-macos:
Expand All @@ -51,7 +51,7 @@ jobs:
sudo apt-get -qqq update
make libc6install
make clean
CFLAGS="-m32 -O2" make -j test V=1
CFLAGS="-m32 -O2" MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" make -j test V=1

no-intrinsics-fuzztest:
runs-on: ubuntu-latest
Expand All @@ -72,7 +72,7 @@ jobs:
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
- name: ub + address sanitizer on zstreamtest
run: CC=clang make uasan-test-zstream
run: CC=clang MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" make uasan-test-zstream

# lasts ~15mn
tsan-fuzztest:
Expand All @@ -91,7 +91,7 @@ jobs:
run: |
sudo apt-get -qqq update
make libc6install
CC=clang make -C tests test-zstream32 FUZZER_FLAGS="--big-tests"
CC=clang MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" make -C tests test-zstream32 FUZZER_FLAGS="--big-tests"

# lasts ~23mn
gcc-8-asan-ubsan-testzstd:
Expand Down Expand Up @@ -121,7 +121,7 @@ jobs:
run: |
sudo apt-get -qqq update
make libc6install
make -j uasan-test-zstd32 V=1
MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" make -j uasan-test-zstd32 V=1

# Note : external libraries must be turned off when using MSAN tests,
# because they are not msan-instrumented,
Expand All @@ -144,7 +144,7 @@ jobs:
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
- name: clang + ASan + UBSan + Fuzz Test
run: CC=clang FUZZER_FLAGS="--long-tests" make clean uasan-fuzztest
run: CC=clang FUZZER_FLAGS="--long-tests" MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" make clean uasan-fuzztest

gcc-asan-ubsan-fuzz32:
runs-on: ubuntu-latest
Expand All @@ -154,7 +154,7 @@ jobs:
run: |
sudo apt-get -qqq update
make libc6install
CFLAGS="-O3 -m32" FUZZER_FLAGS="--long-tests" make uasan-fuzztest
CFLAGS="-O3 -m32" MOREFLAGS="-DZSTD_WINDOW_ALLOW_PICKING_FRACTIONAL_SIZES=1" FUZZER_FLAGS="--long-tests" make uasan-fuzztest

clang-asan-fuzz32:
runs-on: ubuntu-latest
Expand Down
196 changes: 98 additions & 98 deletions lib/compress/clevels.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#ifndef ZSTD_CLEVELS_H
#define ZSTD_CLEVELS_H

#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_compressionParameters */
#define ZSTD_STATIC_LINKING_ONLY /* ZSTD_CParams */
#include "../zstd.h"

/*-===== Pre-defined compression levels =====-*/
Expand All @@ -22,110 +22,110 @@
__attribute__((__unused__))
#endif

static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEVEL+1] = {
static const ZSTD_CParams ZSTD_defaultCParameters[4][ZSTD_MAX_CLEVEL+1] = {
{ /* "default" - for any srcSize > 256 KB */
/* W, C, H, S, L, TL, strat */
{ 19, 12, 13, 1, 6, 1, ZSTD_fast }, /* base for negative levels */
{ 19, 13, 14, 1, 7, 0, ZSTD_fast }, /* level 1 */
{ 20, 15, 16, 1, 6, 0, ZSTD_fast }, /* level 2 */
{ 21, 16, 17, 1, 5, 0, ZSTD_dfast }, /* level 3 */
{ 21, 18, 18, 1, 5, 0, ZSTD_dfast }, /* level 4 */
{ 21, 18, 19, 3, 5, 2, ZSTD_greedy }, /* level 5 */
{ 21, 18, 19, 3, 5, 4, ZSTD_lazy }, /* level 6 */
{ 21, 19, 20, 4, 5, 8, ZSTD_lazy }, /* level 7 */
{ 21, 19, 20, 4, 5, 16, ZSTD_lazy2 }, /* level 8 */
{ 22, 20, 21, 4, 5, 16, ZSTD_lazy2 }, /* level 9 */
{ 22, 21, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 10 */
{ 22, 21, 22, 6, 5, 16, ZSTD_lazy2 }, /* level 11 */
{ 22, 22, 23, 6, 5, 32, ZSTD_lazy2 }, /* level 12 */
{ 22, 22, 22, 4, 5, 32, ZSTD_btlazy2 }, /* level 13 */
{ 22, 22, 23, 5, 5, 32, ZSTD_btlazy2 }, /* level 14 */
{ 22, 23, 23, 6, 5, 32, ZSTD_btlazy2 }, /* level 15 */
{ 22, 22, 22, 5, 5, 48, ZSTD_btopt }, /* level 16 */
{ 23, 23, 22, 5, 4, 64, ZSTD_btopt }, /* level 17 */
{ 23, 23, 22, 6, 3, 64, ZSTD_btultra }, /* level 18 */
{ 23, 24, 22, 7, 3,256, ZSTD_btultra2}, /* level 19 */
{ 25, 25, 23, 7, 3,256, ZSTD_btultra2}, /* level 20 */
{ 26, 26, 24, 7, 3,512, ZSTD_btultra2}, /* level 21 */
{ 27, 27, 25, 9, 3,999, ZSTD_btultra2}, /* level 22 */
/* W, WF, C, H, S, L, TL, strat */
{ 19, 0, 12, 13, 1, 6, 1, ZSTD_fast }, /* base for negative levels */
{ 19, 0, 13, 14, 1, 7, 0, ZSTD_fast }, /* level 1 */
{ 20, 0, 15, 16, 1, 6, 0, ZSTD_fast }, /* level 2 */
{ 21, 0, 16, 17, 1, 5, 0, ZSTD_dfast }, /* level 3 */
{ 21, 0, 18, 18, 1, 5, 0, ZSTD_dfast }, /* level 4 */
{ 21, 0, 18, 19, 3, 5, 2, ZSTD_greedy }, /* level 5 */
{ 21, 0, 18, 19, 3, 5, 4, ZSTD_lazy }, /* level 6 */
{ 21, 0, 19, 20, 4, 5, 8, ZSTD_lazy }, /* level 7 */
{ 21, 0, 19, 20, 4, 5, 16, ZSTD_lazy2 }, /* level 8 */
{ 22, 0, 20, 21, 4, 5, 16, ZSTD_lazy2 }, /* level 9 */
{ 22, 0, 21, 22, 5, 5, 16, ZSTD_lazy2 }, /* level 10 */
{ 22, 0, 21, 22, 6, 5, 16, ZSTD_lazy2 }, /* level 11 */
{ 22, 0, 22, 23, 6, 5, 32, ZSTD_lazy2 }, /* level 12 */
{ 22, 0, 22, 22, 4, 5, 32, ZSTD_btlazy2 }, /* level 13 */
{ 22, 0, 22, 23, 5, 5, 32, ZSTD_btlazy2 }, /* level 14 */
{ 22, 0, 23, 23, 6, 5, 32, ZSTD_btlazy2 }, /* level 15 */
{ 22, 0, 22, 22, 5, 5, 48, ZSTD_btopt }, /* level 16 */
{ 23, 0, 23, 22, 5, 4, 64, ZSTD_btopt }, /* level 17 */
{ 23, 0, 23, 22, 6, 3, 64, ZSTD_btultra }, /* level 18 */
{ 23, 0, 24, 22, 7, 3,256, ZSTD_btultra2}, /* level 19 */
{ 25, 0, 25, 23, 7, 3,256, ZSTD_btultra2}, /* level 20 */
{ 26, 0, 26, 24, 7, 3,512, ZSTD_btultra2}, /* level 21 */
{ 27, 0, 27, 25, 9, 3,999, ZSTD_btultra2}, /* level 22 */
},
{ /* for srcSize <= 256 KB */
/* W, C, H, S, L, T, strat */
{ 18, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
{ 18, 13, 14, 1, 6, 0, ZSTD_fast }, /* level 1 */
{ 18, 14, 14, 1, 5, 0, ZSTD_dfast }, /* level 2 */
{ 18, 16, 16, 1, 4, 0, ZSTD_dfast }, /* level 3 */
{ 18, 16, 17, 3, 5, 2, ZSTD_greedy }, /* level 4.*/
{ 18, 17, 18, 5, 5, 2, ZSTD_greedy }, /* level 5.*/
{ 18, 18, 19, 3, 5, 4, ZSTD_lazy }, /* level 6.*/
{ 18, 18, 19, 4, 4, 4, ZSTD_lazy }, /* level 7 */
{ 18, 18, 19, 4, 4, 8, ZSTD_lazy2 }, /* level 8 */
{ 18, 18, 19, 5, 4, 8, ZSTD_lazy2 }, /* level 9 */
{ 18, 18, 19, 6, 4, 8, ZSTD_lazy2 }, /* level 10 */
{ 18, 18, 19, 5, 4, 12, ZSTD_btlazy2 }, /* level 11.*/
{ 18, 19, 19, 7, 4, 12, ZSTD_btlazy2 }, /* level 12.*/
{ 18, 18, 19, 4, 4, 16, ZSTD_btopt }, /* level 13 */
{ 18, 18, 19, 4, 3, 32, ZSTD_btopt }, /* level 14.*/
{ 18, 18, 19, 6, 3,128, ZSTD_btopt }, /* level 15.*/
{ 18, 19, 19, 6, 3,128, ZSTD_btultra }, /* level 16.*/
{ 18, 19, 19, 8, 3,256, ZSTD_btultra }, /* level 17.*/
{ 18, 19, 19, 6, 3,128, ZSTD_btultra2}, /* level 18.*/
{ 18, 19, 19, 8, 3,256, ZSTD_btultra2}, /* level 19.*/
{ 18, 19, 19, 10, 3,512, ZSTD_btultra2}, /* level 20.*/
{ 18, 19, 19, 12, 3,512, ZSTD_btultra2}, /* level 21.*/
{ 18, 19, 19, 13, 3,999, ZSTD_btultra2}, /* level 22.*/
/* W, WF, C, H, S, L, T, strat */
{ 18, 0, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
{ 18, 0, 13, 14, 1, 6, 0, ZSTD_fast }, /* level 1 */
{ 18, 0, 14, 14, 1, 5, 0, ZSTD_dfast }, /* level 2 */
{ 18, 0, 16, 16, 1, 4, 0, ZSTD_dfast }, /* level 3 */
{ 18, 0, 16, 17, 3, 5, 2, ZSTD_greedy }, /* level 4.*/
{ 18, 0, 17, 18, 5, 5, 2, ZSTD_greedy }, /* level 5.*/
{ 18, 0, 18, 19, 3, 5, 4, ZSTD_lazy }, /* level 6.*/
{ 18, 0, 18, 19, 4, 4, 4, ZSTD_lazy }, /* level 7 */
{ 18, 0, 18, 19, 4, 4, 8, ZSTD_lazy2 }, /* level 8 */
{ 18, 0, 18, 19, 5, 4, 8, ZSTD_lazy2 }, /* level 9 */
{ 18, 0, 18, 19, 6, 4, 8, ZSTD_lazy2 }, /* level 10 */
{ 18, 0, 18, 19, 5, 4, 12, ZSTD_btlazy2 }, /* level 11.*/
{ 18, 0, 19, 19, 7, 4, 12, ZSTD_btlazy2 }, /* level 12.*/
{ 18, 0, 18, 19, 4, 4, 16, ZSTD_btopt }, /* level 13 */
{ 18, 0, 18, 19, 4, 3, 32, ZSTD_btopt }, /* level 14.*/
{ 18, 0, 18, 19, 6, 3,128, ZSTD_btopt }, /* level 15.*/
{ 18, 0, 19, 19, 6, 3,128, ZSTD_btultra }, /* level 16.*/
{ 18, 0, 19, 19, 8, 3,256, ZSTD_btultra }, /* level 17.*/
{ 18, 0, 19, 19, 6, 3,128, ZSTD_btultra2}, /* level 18.*/
{ 18, 0, 19, 19, 8, 3,256, ZSTD_btultra2}, /* level 19.*/
{ 18, 0, 19, 19, 10, 3,512, ZSTD_btultra2}, /* level 20.*/
{ 18, 0, 19, 19, 12, 3,512, ZSTD_btultra2}, /* level 21.*/
{ 18, 0, 19, 19, 13, 3,999, ZSTD_btultra2}, /* level 22.*/
},
{ /* for srcSize <= 128 KB */
/* W, C, H, S, L, T, strat */
{ 17, 12, 12, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
{ 17, 12, 13, 1, 6, 0, ZSTD_fast }, /* level 1 */
{ 17, 13, 15, 1, 5, 0, ZSTD_fast }, /* level 2 */
{ 17, 15, 16, 2, 5, 0, ZSTD_dfast }, /* level 3 */
{ 17, 17, 17, 2, 4, 0, ZSTD_dfast }, /* level 4 */
{ 17, 16, 17, 3, 4, 2, ZSTD_greedy }, /* level 5 */
{ 17, 16, 17, 3, 4, 4, ZSTD_lazy }, /* level 6 */
{ 17, 16, 17, 3, 4, 8, ZSTD_lazy2 }, /* level 7 */
{ 17, 16, 17, 4, 4, 8, ZSTD_lazy2 }, /* level 8 */
{ 17, 16, 17, 5, 4, 8, ZSTD_lazy2 }, /* level 9 */
{ 17, 16, 17, 6, 4, 8, ZSTD_lazy2 }, /* level 10 */
{ 17, 17, 17, 5, 4, 8, ZSTD_btlazy2 }, /* level 11 */
{ 17, 18, 17, 7, 4, 12, ZSTD_btlazy2 }, /* level 12 */
{ 17, 18, 17, 3, 4, 12, ZSTD_btopt }, /* level 13.*/
{ 17, 18, 17, 4, 3, 32, ZSTD_btopt }, /* level 14.*/
{ 17, 18, 17, 6, 3,256, ZSTD_btopt }, /* level 15.*/
{ 17, 18, 17, 6, 3,128, ZSTD_btultra }, /* level 16.*/
{ 17, 18, 17, 8, 3,256, ZSTD_btultra }, /* level 17.*/
{ 17, 18, 17, 10, 3,512, ZSTD_btultra }, /* level 18.*/
{ 17, 18, 17, 5, 3,256, ZSTD_btultra2}, /* level 19.*/
{ 17, 18, 17, 7, 3,512, ZSTD_btultra2}, /* level 20.*/
{ 17, 18, 17, 9, 3,512, ZSTD_btultra2}, /* level 21.*/
{ 17, 18, 17, 11, 3,999, ZSTD_btultra2}, /* level 22.*/
/* W, WF, C, H, S, L, T, strat */
{ 17, 0, 12, 12, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
{ 17, 0, 12, 13, 1, 6, 0, ZSTD_fast }, /* level 1 */
{ 17, 0, 13, 15, 1, 5, 0, ZSTD_fast }, /* level 2 */
{ 17, 0, 15, 16, 2, 5, 0, ZSTD_dfast }, /* level 3 */
{ 17, 0, 17, 17, 2, 4, 0, ZSTD_dfast }, /* level 4 */
{ 17, 0, 16, 17, 3, 4, 2, ZSTD_greedy }, /* level 5 */
{ 17, 0, 16, 17, 3, 4, 4, ZSTD_lazy }, /* level 6 */
{ 17, 0, 16, 17, 3, 4, 8, ZSTD_lazy2 }, /* level 7 */
{ 17, 0, 16, 17, 4, 4, 8, ZSTD_lazy2 }, /* level 8 */
{ 17, 0, 16, 17, 5, 4, 8, ZSTD_lazy2 }, /* level 9 */
{ 17, 0, 16, 17, 6, 4, 8, ZSTD_lazy2 }, /* level 10 */
{ 17, 0, 17, 17, 5, 4, 8, ZSTD_btlazy2 }, /* level 11 */
{ 17, 0, 18, 17, 7, 4, 12, ZSTD_btlazy2 }, /* level 12 */
{ 17, 0, 18, 17, 3, 4, 12, ZSTD_btopt }, /* level 13.*/
{ 17, 0, 18, 17, 4, 3, 32, ZSTD_btopt }, /* level 14.*/
{ 17, 0, 18, 17, 6, 3,256, ZSTD_btopt }, /* level 15.*/
{ 17, 0, 18, 17, 6, 3,128, ZSTD_btultra }, /* level 16.*/
{ 17, 0, 18, 17, 8, 3,256, ZSTD_btultra }, /* level 17.*/
{ 17, 0, 18, 17, 10, 3,512, ZSTD_btultra }, /* level 18.*/
{ 17, 0, 18, 17, 5, 3,256, ZSTD_btultra2}, /* level 19.*/
{ 17, 0, 18, 17, 7, 3,512, ZSTD_btultra2}, /* level 20.*/
{ 17, 0, 18, 17, 9, 3,512, ZSTD_btultra2}, /* level 21.*/
{ 17, 0, 18, 17, 11, 3,999, ZSTD_btultra2}, /* level 22.*/
},
{ /* for srcSize <= 16 KB */
/* W, C, H, S, L, T, strat */
{ 14, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
{ 14, 14, 15, 1, 5, 0, ZSTD_fast }, /* level 1 */
{ 14, 14, 15, 1, 4, 0, ZSTD_fast }, /* level 2 */
{ 14, 14, 15, 2, 4, 0, ZSTD_dfast }, /* level 3 */
{ 14, 14, 14, 4, 4, 2, ZSTD_greedy }, /* level 4 */
{ 14, 14, 14, 3, 4, 4, ZSTD_lazy }, /* level 5.*/
{ 14, 14, 14, 4, 4, 8, ZSTD_lazy2 }, /* level 6 */
{ 14, 14, 14, 6, 4, 8, ZSTD_lazy2 }, /* level 7 */
{ 14, 14, 14, 8, 4, 8, ZSTD_lazy2 }, /* level 8.*/
{ 14, 15, 14, 5, 4, 8, ZSTD_btlazy2 }, /* level 9.*/
{ 14, 15, 14, 9, 4, 8, ZSTD_btlazy2 }, /* level 10.*/
{ 14, 15, 14, 3, 4, 12, ZSTD_btopt }, /* level 11.*/
{ 14, 15, 14, 4, 3, 24, ZSTD_btopt }, /* level 12.*/
{ 14, 15, 14, 5, 3, 32, ZSTD_btultra }, /* level 13.*/
{ 14, 15, 15, 6, 3, 64, ZSTD_btultra }, /* level 14.*/
{ 14, 15, 15, 7, 3,256, ZSTD_btultra }, /* level 15.*/
{ 14, 15, 15, 5, 3, 48, ZSTD_btultra2}, /* level 16.*/
{ 14, 15, 15, 6, 3,128, ZSTD_btultra2}, /* level 17.*/
{ 14, 15, 15, 7, 3,256, ZSTD_btultra2}, /* level 18.*/
{ 14, 15, 15, 8, 3,256, ZSTD_btultra2}, /* level 19.*/
{ 14, 15, 15, 8, 3,512, ZSTD_btultra2}, /* level 20.*/
{ 14, 15, 15, 9, 3,512, ZSTD_btultra2}, /* level 21.*/
{ 14, 15, 15, 10, 3,999, ZSTD_btultra2}, /* level 22.*/
/* W, WF, C, H, S, L, T, strat */
{ 14, 0, 12, 13, 1, 5, 1, ZSTD_fast }, /* base for negative levels */
{ 14, 0, 14, 15, 1, 5, 0, ZSTD_fast }, /* level 1 */
{ 14, 0, 14, 15, 1, 4, 0, ZSTD_fast }, /* level 2 */
{ 14, 0, 14, 15, 2, 4, 0, ZSTD_dfast }, /* level 3 */
{ 14, 0, 14, 14, 4, 4, 2, ZSTD_greedy }, /* level 4 */
{ 14, 0, 14, 14, 3, 4, 4, ZSTD_lazy }, /* level 5.*/
{ 14, 0, 14, 14, 4, 4, 8, ZSTD_lazy2 }, /* level 6 */
{ 14, 0, 14, 14, 6, 4, 8, ZSTD_lazy2 }, /* level 7 */
{ 14, 0, 14, 14, 8, 4, 8, ZSTD_lazy2 }, /* level 8.*/
{ 14, 0, 15, 14, 5, 4, 8, ZSTD_btlazy2 }, /* level 9.*/
{ 14, 0, 15, 14, 9, 4, 8, ZSTD_btlazy2 }, /* level 10.*/
{ 14, 0, 15, 14, 3, 4, 12, ZSTD_btopt }, /* level 11.*/
{ 14, 0, 15, 14, 4, 3, 24, ZSTD_btopt }, /* level 12.*/
{ 14, 0, 15, 14, 5, 3, 32, ZSTD_btultra }, /* level 13.*/
{ 14, 0, 15, 15, 6, 3, 64, ZSTD_btultra }, /* level 14.*/
{ 14, 0, 15, 15, 7, 3,256, ZSTD_btultra }, /* level 15.*/
{ 14, 0, 15, 15, 5, 3, 48, ZSTD_btultra2}, /* level 16.*/
{ 14, 0, 15, 15, 6, 3,128, ZSTD_btultra2}, /* level 17.*/
{ 14, 0, 15, 15, 7, 3,256, ZSTD_btultra2}, /* level 18.*/
{ 14, 0, 15, 15, 8, 3,256, ZSTD_btultra2}, /* level 19.*/
{ 14, 0, 15, 15, 8, 3,512, ZSTD_btultra2}, /* level 20.*/
{ 14, 0, 15, 15, 9, 3,512, ZSTD_btultra2}, /* level 21.*/
{ 14, 0, 15, 15, 10, 3,999, ZSTD_btultra2}, /* level 22.*/
},
};

Expand Down
Loading