1 /********************************************************************** 2 Copyright(c) 2019 Arm 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 Arm 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 #ifndef __LZ0A_CONST_AARCH64_H__ 31 #define __LZ0A_CONST_AARCH64_H__ 32 #include "options_aarch64.h" 33 34 #ifdef __ASSEMBLY__ 35 .set K , 1024 36 .set D , IGZIP_HIST_SIZE // Amount of history 37 .set LA , 18 * 16 // Max look-ahead, rounded up to 32 byte boundary 38 .set BSIZE , 2*IGZIP_HIST_SIZE + LA // Nominal buffer size 39 40 /// Constants for stateless compression 41 #define LAST_BYTES_COUNT 3 // Bytes to prevent reading out of array bounds 42 #define LA_STATELESS 258 // No round up since no data is copied to a buffer 43 44 .set IGZIP_LVL0_HASH_SIZE , (8 * K) 45 .set IGZIP_HASH8K_HASH_SIZE , (8 * K) 46 .set IGZIP_HASH_HIST_HASH_SIZE , IGZIP_HIST_SIZE 47 .set IGZIP_HASH_MAP_HASH_SIZE , IGZIP_HIST_SIZE 48 49 #define LVL0_HASH_MASK (IGZIP_LVL0_HASH_SIZE - 1) 50 #define HASH8K_HASH_MASK (IGZIP_HASH8K_HASH_SIZE - 1) 51 #define HASH_HIST_HASH_MASK (IGZIP_HASH_HIST_HASH_SIZE - 1) 52 #define HASH_MAP_HASH_MASK (IGZIP_HASH_MAP_HASH_SIZE - 1) 53 54 .set MIN_DEF_MATCH , 3 // Minimum length of a match in deflate 55 .set SHORTEST_MATCH , 4 56 57 .set SLOP , 8 58 59 #define ICF_CODE_BYTES 4 60 #define LIT_LEN_BIT_COUNT 10 61 #define DIST_LIT_BIT_COUNT 9 62 63 #define LIT_LEN_MASK ((1 << LIT_LEN_BIT_COUNT) - 1) 64 #define LIT_DIST_MASK ((1 << DIST_LIT_BIT_COUNT) - 1) 65 66 #define DIST_OFFSET LIT_LEN_BIT_COUNT 67 #define EXTRA_BITS_OFFSET (DIST_OFFSET + DIST_LIT_BIT_COUNT) 68 #define LIT (0x1E << DIST_OFFSET) 69 70 71 #endif 72 #endif 73