xref: /openbmc/linux/lib/zstd/compress/clevels.h (revision 2aa14b1a)
1*2aa14b1aSNick Terrell /*
2*2aa14b1aSNick Terrell  * Copyright (c) Yann Collet, Facebook, Inc.
3*2aa14b1aSNick Terrell  * All rights reserved.
4*2aa14b1aSNick Terrell  *
5*2aa14b1aSNick Terrell  * This source code is licensed under both the BSD-style license (found in the
6*2aa14b1aSNick Terrell  * LICENSE file in the root directory of this source tree) and the GPLv2 (found
7*2aa14b1aSNick Terrell  * in the COPYING file in the root directory of this source tree).
8*2aa14b1aSNick Terrell  * You may select, at your option, one of the above-listed licenses.
9*2aa14b1aSNick Terrell  */
10*2aa14b1aSNick Terrell 
11*2aa14b1aSNick Terrell #ifndef ZSTD_CLEVELS_H
12*2aa14b1aSNick Terrell #define ZSTD_CLEVELS_H
13*2aa14b1aSNick Terrell 
14*2aa14b1aSNick Terrell #define ZSTD_STATIC_LINKING_ONLY  /* ZSTD_compressionParameters  */
15*2aa14b1aSNick Terrell #include <linux/zstd.h>
16*2aa14b1aSNick Terrell 
17*2aa14b1aSNick Terrell /*-=====  Pre-defined compression levels  =====-*/
18*2aa14b1aSNick Terrell 
19*2aa14b1aSNick Terrell #define ZSTD_MAX_CLEVEL     22
20*2aa14b1aSNick Terrell 
21*2aa14b1aSNick Terrell __attribute__((__unused__))
22*2aa14b1aSNick Terrell 
23*2aa14b1aSNick Terrell static const ZSTD_compressionParameters ZSTD_defaultCParameters[4][ZSTD_MAX_CLEVEL+1] = {
24*2aa14b1aSNick Terrell {   /* "default" - for any srcSize > 256 KB */
25*2aa14b1aSNick Terrell     /* W,  C,  H,  S,  L, TL, strat */
26*2aa14b1aSNick Terrell     { 19, 12, 13,  1,  6,  1, ZSTD_fast    },  /* base for negative levels */
27*2aa14b1aSNick Terrell     { 19, 13, 14,  1,  7,  0, ZSTD_fast    },  /* level  1 */
28*2aa14b1aSNick Terrell     { 20, 15, 16,  1,  6,  0, ZSTD_fast    },  /* level  2 */
29*2aa14b1aSNick Terrell     { 21, 16, 17,  1,  5,  0, ZSTD_dfast   },  /* level  3 */
30*2aa14b1aSNick Terrell     { 21, 18, 18,  1,  5,  0, ZSTD_dfast   },  /* level  4 */
31*2aa14b1aSNick Terrell     { 21, 18, 19,  3,  5,  2, ZSTD_greedy  },  /* level  5 */
32*2aa14b1aSNick Terrell     { 21, 18, 19,  3,  5,  4, ZSTD_lazy    },  /* level  6 */
33*2aa14b1aSNick Terrell     { 21, 19, 20,  4,  5,  8, ZSTD_lazy    },  /* level  7 */
34*2aa14b1aSNick Terrell     { 21, 19, 20,  4,  5, 16, ZSTD_lazy2   },  /* level  8 */
35*2aa14b1aSNick Terrell     { 22, 20, 21,  4,  5, 16, ZSTD_lazy2   },  /* level  9 */
36*2aa14b1aSNick Terrell     { 22, 21, 22,  5,  5, 16, ZSTD_lazy2   },  /* level 10 */
37*2aa14b1aSNick Terrell     { 22, 21, 22,  6,  5, 16, ZSTD_lazy2   },  /* level 11 */
38*2aa14b1aSNick Terrell     { 22, 22, 23,  6,  5, 32, ZSTD_lazy2   },  /* level 12 */
39*2aa14b1aSNick Terrell     { 22, 22, 22,  4,  5, 32, ZSTD_btlazy2 },  /* level 13 */
40*2aa14b1aSNick Terrell     { 22, 22, 23,  5,  5, 32, ZSTD_btlazy2 },  /* level 14 */
41*2aa14b1aSNick Terrell     { 22, 23, 23,  6,  5, 32, ZSTD_btlazy2 },  /* level 15 */
42*2aa14b1aSNick Terrell     { 22, 22, 22,  5,  5, 48, ZSTD_btopt   },  /* level 16 */
43*2aa14b1aSNick Terrell     { 23, 23, 22,  5,  4, 64, ZSTD_btopt   },  /* level 17 */
44*2aa14b1aSNick Terrell     { 23, 23, 22,  6,  3, 64, ZSTD_btultra },  /* level 18 */
45*2aa14b1aSNick Terrell     { 23, 24, 22,  7,  3,256, ZSTD_btultra2},  /* level 19 */
46*2aa14b1aSNick Terrell     { 25, 25, 23,  7,  3,256, ZSTD_btultra2},  /* level 20 */
47*2aa14b1aSNick Terrell     { 26, 26, 24,  7,  3,512, ZSTD_btultra2},  /* level 21 */
48*2aa14b1aSNick Terrell     { 27, 27, 25,  9,  3,999, ZSTD_btultra2},  /* level 22 */
49*2aa14b1aSNick Terrell },
50*2aa14b1aSNick Terrell {   /* for srcSize <= 256 KB */
51*2aa14b1aSNick Terrell     /* W,  C,  H,  S,  L,  T, strat */
52*2aa14b1aSNick Terrell     { 18, 12, 13,  1,  5,  1, ZSTD_fast    },  /* base for negative levels */
53*2aa14b1aSNick Terrell     { 18, 13, 14,  1,  6,  0, ZSTD_fast    },  /* level  1 */
54*2aa14b1aSNick Terrell     { 18, 14, 14,  1,  5,  0, ZSTD_dfast   },  /* level  2 */
55*2aa14b1aSNick Terrell     { 18, 16, 16,  1,  4,  0, ZSTD_dfast   },  /* level  3 */
56*2aa14b1aSNick Terrell     { 18, 16, 17,  3,  5,  2, ZSTD_greedy  },  /* level  4.*/
57*2aa14b1aSNick Terrell     { 18, 17, 18,  5,  5,  2, ZSTD_greedy  },  /* level  5.*/
58*2aa14b1aSNick Terrell     { 18, 18, 19,  3,  5,  4, ZSTD_lazy    },  /* level  6.*/
59*2aa14b1aSNick Terrell     { 18, 18, 19,  4,  4,  4, ZSTD_lazy    },  /* level  7 */
60*2aa14b1aSNick Terrell     { 18, 18, 19,  4,  4,  8, ZSTD_lazy2   },  /* level  8 */
61*2aa14b1aSNick Terrell     { 18, 18, 19,  5,  4,  8, ZSTD_lazy2   },  /* level  9 */
62*2aa14b1aSNick Terrell     { 18, 18, 19,  6,  4,  8, ZSTD_lazy2   },  /* level 10 */
63*2aa14b1aSNick Terrell     { 18, 18, 19,  5,  4, 12, ZSTD_btlazy2 },  /* level 11.*/
64*2aa14b1aSNick Terrell     { 18, 19, 19,  7,  4, 12, ZSTD_btlazy2 },  /* level 12.*/
65*2aa14b1aSNick Terrell     { 18, 18, 19,  4,  4, 16, ZSTD_btopt   },  /* level 13 */
66*2aa14b1aSNick Terrell     { 18, 18, 19,  4,  3, 32, ZSTD_btopt   },  /* level 14.*/
67*2aa14b1aSNick Terrell     { 18, 18, 19,  6,  3,128, ZSTD_btopt   },  /* level 15.*/
68*2aa14b1aSNick Terrell     { 18, 19, 19,  6,  3,128, ZSTD_btultra },  /* level 16.*/
69*2aa14b1aSNick Terrell     { 18, 19, 19,  8,  3,256, ZSTD_btultra },  /* level 17.*/
70*2aa14b1aSNick Terrell     { 18, 19, 19,  6,  3,128, ZSTD_btultra2},  /* level 18.*/
71*2aa14b1aSNick Terrell     { 18, 19, 19,  8,  3,256, ZSTD_btultra2},  /* level 19.*/
72*2aa14b1aSNick Terrell     { 18, 19, 19, 10,  3,512, ZSTD_btultra2},  /* level 20.*/
73*2aa14b1aSNick Terrell     { 18, 19, 19, 12,  3,512, ZSTD_btultra2},  /* level 21.*/
74*2aa14b1aSNick Terrell     { 18, 19, 19, 13,  3,999, ZSTD_btultra2},  /* level 22.*/
75*2aa14b1aSNick Terrell },
76*2aa14b1aSNick Terrell {   /* for srcSize <= 128 KB */
77*2aa14b1aSNick Terrell     /* W,  C,  H,  S,  L,  T, strat */
78*2aa14b1aSNick Terrell     { 17, 12, 12,  1,  5,  1, ZSTD_fast    },  /* base for negative levels */
79*2aa14b1aSNick Terrell     { 17, 12, 13,  1,  6,  0, ZSTD_fast    },  /* level  1 */
80*2aa14b1aSNick Terrell     { 17, 13, 15,  1,  5,  0, ZSTD_fast    },  /* level  2 */
81*2aa14b1aSNick Terrell     { 17, 15, 16,  2,  5,  0, ZSTD_dfast   },  /* level  3 */
82*2aa14b1aSNick Terrell     { 17, 17, 17,  2,  4,  0, ZSTD_dfast   },  /* level  4 */
83*2aa14b1aSNick Terrell     { 17, 16, 17,  3,  4,  2, ZSTD_greedy  },  /* level  5 */
84*2aa14b1aSNick Terrell     { 17, 16, 17,  3,  4,  4, ZSTD_lazy    },  /* level  6 */
85*2aa14b1aSNick Terrell     { 17, 16, 17,  3,  4,  8, ZSTD_lazy2   },  /* level  7 */
86*2aa14b1aSNick Terrell     { 17, 16, 17,  4,  4,  8, ZSTD_lazy2   },  /* level  8 */
87*2aa14b1aSNick Terrell     { 17, 16, 17,  5,  4,  8, ZSTD_lazy2   },  /* level  9 */
88*2aa14b1aSNick Terrell     { 17, 16, 17,  6,  4,  8, ZSTD_lazy2   },  /* level 10 */
89*2aa14b1aSNick Terrell     { 17, 17, 17,  5,  4,  8, ZSTD_btlazy2 },  /* level 11 */
90*2aa14b1aSNick Terrell     { 17, 18, 17,  7,  4, 12, ZSTD_btlazy2 },  /* level 12 */
91*2aa14b1aSNick Terrell     { 17, 18, 17,  3,  4, 12, ZSTD_btopt   },  /* level 13.*/
92*2aa14b1aSNick Terrell     { 17, 18, 17,  4,  3, 32, ZSTD_btopt   },  /* level 14.*/
93*2aa14b1aSNick Terrell     { 17, 18, 17,  6,  3,256, ZSTD_btopt   },  /* level 15.*/
94*2aa14b1aSNick Terrell     { 17, 18, 17,  6,  3,128, ZSTD_btultra },  /* level 16.*/
95*2aa14b1aSNick Terrell     { 17, 18, 17,  8,  3,256, ZSTD_btultra },  /* level 17.*/
96*2aa14b1aSNick Terrell     { 17, 18, 17, 10,  3,512, ZSTD_btultra },  /* level 18.*/
97*2aa14b1aSNick Terrell     { 17, 18, 17,  5,  3,256, ZSTD_btultra2},  /* level 19.*/
98*2aa14b1aSNick Terrell     { 17, 18, 17,  7,  3,512, ZSTD_btultra2},  /* level 20.*/
99*2aa14b1aSNick Terrell     { 17, 18, 17,  9,  3,512, ZSTD_btultra2},  /* level 21.*/
100*2aa14b1aSNick Terrell     { 17, 18, 17, 11,  3,999, ZSTD_btultra2},  /* level 22.*/
101*2aa14b1aSNick Terrell },
102*2aa14b1aSNick Terrell {   /* for srcSize <= 16 KB */
103*2aa14b1aSNick Terrell     /* W,  C,  H,  S,  L,  T, strat */
104*2aa14b1aSNick Terrell     { 14, 12, 13,  1,  5,  1, ZSTD_fast    },  /* base for negative levels */
105*2aa14b1aSNick Terrell     { 14, 14, 15,  1,  5,  0, ZSTD_fast    },  /* level  1 */
106*2aa14b1aSNick Terrell     { 14, 14, 15,  1,  4,  0, ZSTD_fast    },  /* level  2 */
107*2aa14b1aSNick Terrell     { 14, 14, 15,  2,  4,  0, ZSTD_dfast   },  /* level  3 */
108*2aa14b1aSNick Terrell     { 14, 14, 14,  4,  4,  2, ZSTD_greedy  },  /* level  4 */
109*2aa14b1aSNick Terrell     { 14, 14, 14,  3,  4,  4, ZSTD_lazy    },  /* level  5.*/
110*2aa14b1aSNick Terrell     { 14, 14, 14,  4,  4,  8, ZSTD_lazy2   },  /* level  6 */
111*2aa14b1aSNick Terrell     { 14, 14, 14,  6,  4,  8, ZSTD_lazy2   },  /* level  7 */
112*2aa14b1aSNick Terrell     { 14, 14, 14,  8,  4,  8, ZSTD_lazy2   },  /* level  8.*/
113*2aa14b1aSNick Terrell     { 14, 15, 14,  5,  4,  8, ZSTD_btlazy2 },  /* level  9.*/
114*2aa14b1aSNick Terrell     { 14, 15, 14,  9,  4,  8, ZSTD_btlazy2 },  /* level 10.*/
115*2aa14b1aSNick Terrell     { 14, 15, 14,  3,  4, 12, ZSTD_btopt   },  /* level 11.*/
116*2aa14b1aSNick Terrell     { 14, 15, 14,  4,  3, 24, ZSTD_btopt   },  /* level 12.*/
117*2aa14b1aSNick Terrell     { 14, 15, 14,  5,  3, 32, ZSTD_btultra },  /* level 13.*/
118*2aa14b1aSNick Terrell     { 14, 15, 15,  6,  3, 64, ZSTD_btultra },  /* level 14.*/
119*2aa14b1aSNick Terrell     { 14, 15, 15,  7,  3,256, ZSTD_btultra },  /* level 15.*/
120*2aa14b1aSNick Terrell     { 14, 15, 15,  5,  3, 48, ZSTD_btultra2},  /* level 16.*/
121*2aa14b1aSNick Terrell     { 14, 15, 15,  6,  3,128, ZSTD_btultra2},  /* level 17.*/
122*2aa14b1aSNick Terrell     { 14, 15, 15,  7,  3,256, ZSTD_btultra2},  /* level 18.*/
123*2aa14b1aSNick Terrell     { 14, 15, 15,  8,  3,256, ZSTD_btultra2},  /* level 19.*/
124*2aa14b1aSNick Terrell     { 14, 15, 15,  8,  3,512, ZSTD_btultra2},  /* level 20.*/
125*2aa14b1aSNick Terrell     { 14, 15, 15,  9,  3,512, ZSTD_btultra2},  /* level 21.*/
126*2aa14b1aSNick Terrell     { 14, 15, 15, 10,  3,999, ZSTD_btultra2},  /* level 22.*/
127*2aa14b1aSNick Terrell },
128*2aa14b1aSNick Terrell };
129*2aa14b1aSNick Terrell 
130*2aa14b1aSNick Terrell 
131*2aa14b1aSNick Terrell 
132*2aa14b1aSNick Terrell #endif  /* ZSTD_CLEVELS_H */
133