xref: /isa-l/igzip/lz0a_const.asm (revision 8965584ae349f85b595c84f7bddb540ffe7e2e91)
1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2;  Copyright(c) 2011-2016 Intel Corporation All rights reserved.
3;
4;  Redistribution and use in source and binary forms, with or without
5;  modification, are permitted provided that the following conditions
6;  are met:
7;    * Redistributions of source code must retain the above copyright
8;      notice, this list of conditions and the following disclaimer.
9;    * Redistributions in binary form must reproduce the above copyright
10;      notice, this list of conditions and the following disclaimer in
11;      the documentation and/or other materials provided with the
12;      distribution.
13;    * Neither the name of Intel Corporation nor the names of its
14;      contributors may be used to endorse or promote products derived
15;      from this software without specific prior written permission.
16;
17;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29
30%include "options.asm"
31
32%assign K      1024
33%assign D      IGZIP_HIST_SIZE        ;; Amount of history
34%assign LA     18 * 16      ;; Max look-ahead, rounded up to 32 byte boundary
35%assign BSIZE  2*IGZIP_HIST_SIZE + LA     ;; Nominal buffer size
36
37;; Constants for stateless compression
38%define LAST_BYTES_COUNT	3 ;; Bytes to prevent reading out of array bounds
39%define LA_STATELESS	258	;; No round up since no data is copied to a buffer
40
41%assign IGZIP_LVL0_HASH_SIZE  (8 * K)
42%assign IGZIP_HASH8K_HASH_SIZE  (8 * K)
43%assign IGZIP_HASH_HIST_HASH_SIZE IGZIP_HIST_SIZE
44%assign IGZIP_HASH_MAP_HASH_SIZE  IGZIP_HIST_SIZE
45
46%xdefine LVL0_HASH_MASK  (IGZIP_LVL0_HASH_SIZE - 1)
47%xdefine HASH8K_HASH_MASK  (IGZIP_HASH8K_HASH_SIZE - 1)
48%xdefine HASH_HIST_HASH_MASK  (IGZIP_HASH_HIST_HASH_SIZE - 1)
49%xdefine HASH_MAP_HASH_MASK  (IGZIP_HASH_MAP_HASH_SIZE - 1)
50
51%assign MIN_DEF_MATCH 3 	; Minimum length of a match in deflate
52%assign SHORTEST_MATCH  4
53
54%assign SLOP 8
55
56%define ICF_CODE_BYTES 4
57%define LIT_LEN_BIT_COUNT 10
58%define DIST_LIT_BIT_COUNT 9
59
60%define LIT_LEN_MASK ((1 << LIT_LEN_BIT_COUNT) - 1)
61%define LIT_DIST_MASK ((1 << DIST_LIT_BIT_COUNT) - 1)
62
63%define DIST_OFFSET	LIT_LEN_BIT_COUNT
64%define EXTRA_BITS_OFFSET	(DIST_OFFSET + DIST_LIT_BIT_COUNT)
65%define LIT (0x1E << DIST_OFFSET)
66