1 /* 2 * Copyright (c) Meta Platforms, Inc. and affiliates. 3 * All rights reserved. 4 * 5 * This source code is licensed under both the BSD-style license (found in the 6 * LICENSE file in the root directory of this source tree) and the GPLv2 (found 7 * in the COPYING file in the root directory of this source tree). 8 * You may select, at your option, one of the above-listed licenses. 9 */ 10 11 #ifndef ZSTD_LAZY_H 12 #define ZSTD_LAZY_H 13 14 #include "zstd_compress_internal.h" 15 16 /** 17 * Dedicated Dictionary Search Structure bucket log. In the 18 * ZSTD_dedicatedDictSearch mode, the hashTable has 19 * 2 ** ZSTD_LAZY_DDSS_BUCKET_LOG entries in each bucket, rather than just 20 * one. 21 */ 22 #define ZSTD_LAZY_DDSS_BUCKET_LOG 2 23 24 #define ZSTD_ROW_HASH_TAG_BITS 8 /* nb bits to use for the tag */ 25 26 #if !defined(ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR) \ 27 || !defined(ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR) \ 28 || !defined(ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR) \ 29 || !defined(ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR) 30 U32 ZSTD_insertAndFindFirstIndex(ZSTD_MatchState_t* ms, const BYTE* ip); 31 void ZSTD_row_update(ZSTD_MatchState_t* const ms, const BYTE* ip); 32 33 void ZSTD_dedicatedDictSearch_lazy_loadDictionary(ZSTD_MatchState_t* ms, const BYTE* const ip); 34 35 void ZSTD_preserveUnsortedMark (U32* const table, U32 const size, U32 const reducerValue); /*! used in ZSTD_reduceIndex(). preemptively increase value of ZSTD_DUBT_UNSORTED_MARK */ 36 #endif 37 38 #ifndef ZSTD_EXCLUDE_GREEDY_BLOCK_COMPRESSOR 39 size_t ZSTD_compressBlock_greedy( 40 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 41 void const* src, size_t srcSize); 42 size_t ZSTD_compressBlock_greedy_row( 43 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 44 void const* src, size_t srcSize); 45 size_t ZSTD_compressBlock_greedy_dictMatchState( 46 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 47 void const* src, size_t srcSize); 48 size_t ZSTD_compressBlock_greedy_dictMatchState_row( 49 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 50 void const* src, size_t srcSize); 51 size_t ZSTD_compressBlock_greedy_dedicatedDictSearch( 52 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 53 void const* src, size_t srcSize); 54 size_t ZSTD_compressBlock_greedy_dedicatedDictSearch_row( 55 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 56 void const* src, size_t srcSize); 57 size_t ZSTD_compressBlock_greedy_extDict( 58 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 59 void const* src, size_t srcSize); 60 size_t ZSTD_compressBlock_greedy_extDict_row( 61 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 62 void const* src, size_t srcSize); 63 64 #define ZSTD_COMPRESSBLOCK_GREEDY ZSTD_compressBlock_greedy 65 #define ZSTD_COMPRESSBLOCK_GREEDY_ROW ZSTD_compressBlock_greedy_row 66 #define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE ZSTD_compressBlock_greedy_dictMatchState 67 #define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE_ROW ZSTD_compressBlock_greedy_dictMatchState_row 68 #define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH ZSTD_compressBlock_greedy_dedicatedDictSearch 69 #define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH_ROW ZSTD_compressBlock_greedy_dedicatedDictSearch_row 70 #define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT ZSTD_compressBlock_greedy_extDict 71 #define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT_ROW ZSTD_compressBlock_greedy_extDict_row 72 #else 73 #define ZSTD_COMPRESSBLOCK_GREEDY NULL 74 #define ZSTD_COMPRESSBLOCK_GREEDY_ROW NULL 75 #define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE NULL 76 #define ZSTD_COMPRESSBLOCK_GREEDY_DICTMATCHSTATE_ROW NULL 77 #define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH NULL 78 #define ZSTD_COMPRESSBLOCK_GREEDY_DEDICATEDDICTSEARCH_ROW NULL 79 #define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT NULL 80 #define ZSTD_COMPRESSBLOCK_GREEDY_EXTDICT_ROW NULL 81 #endif 82 83 #ifndef ZSTD_EXCLUDE_LAZY_BLOCK_COMPRESSOR 84 size_t ZSTD_compressBlock_lazy( 85 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 86 void const* src, size_t srcSize); 87 size_t ZSTD_compressBlock_lazy_row( 88 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 89 void const* src, size_t srcSize); 90 size_t ZSTD_compressBlock_lazy_dictMatchState( 91 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 92 void const* src, size_t srcSize); 93 size_t ZSTD_compressBlock_lazy_dictMatchState_row( 94 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 95 void const* src, size_t srcSize); 96 size_t ZSTD_compressBlock_lazy_dedicatedDictSearch( 97 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 98 void const* src, size_t srcSize); 99 size_t ZSTD_compressBlock_lazy_dedicatedDictSearch_row( 100 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 101 void const* src, size_t srcSize); 102 size_t ZSTD_compressBlock_lazy_extDict( 103 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 104 void const* src, size_t srcSize); 105 size_t ZSTD_compressBlock_lazy_extDict_row( 106 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 107 void const* src, size_t srcSize); 108 109 #define ZSTD_COMPRESSBLOCK_LAZY ZSTD_compressBlock_lazy 110 #define ZSTD_COMPRESSBLOCK_LAZY_ROW ZSTD_compressBlock_lazy_row 111 #define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE ZSTD_compressBlock_lazy_dictMatchState 112 #define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE_ROW ZSTD_compressBlock_lazy_dictMatchState_row 113 #define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH ZSTD_compressBlock_lazy_dedicatedDictSearch 114 #define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH_ROW ZSTD_compressBlock_lazy_dedicatedDictSearch_row 115 #define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT ZSTD_compressBlock_lazy_extDict 116 #define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT_ROW ZSTD_compressBlock_lazy_extDict_row 117 #else 118 #define ZSTD_COMPRESSBLOCK_LAZY NULL 119 #define ZSTD_COMPRESSBLOCK_LAZY_ROW NULL 120 #define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE NULL 121 #define ZSTD_COMPRESSBLOCK_LAZY_DICTMATCHSTATE_ROW NULL 122 #define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH NULL 123 #define ZSTD_COMPRESSBLOCK_LAZY_DEDICATEDDICTSEARCH_ROW NULL 124 #define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT NULL 125 #define ZSTD_COMPRESSBLOCK_LAZY_EXTDICT_ROW NULL 126 #endif 127 128 #ifndef ZSTD_EXCLUDE_LAZY2_BLOCK_COMPRESSOR 129 size_t ZSTD_compressBlock_lazy2( 130 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 131 void const* src, size_t srcSize); 132 size_t ZSTD_compressBlock_lazy2_row( 133 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 134 void const* src, size_t srcSize); 135 size_t ZSTD_compressBlock_lazy2_dictMatchState( 136 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 137 void const* src, size_t srcSize); 138 size_t ZSTD_compressBlock_lazy2_dictMatchState_row( 139 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 140 void const* src, size_t srcSize); 141 size_t ZSTD_compressBlock_lazy2_dedicatedDictSearch( 142 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 143 void const* src, size_t srcSize); 144 size_t ZSTD_compressBlock_lazy2_dedicatedDictSearch_row( 145 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 146 void const* src, size_t srcSize); 147 size_t ZSTD_compressBlock_lazy2_extDict( 148 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 149 void const* src, size_t srcSize); 150 size_t ZSTD_compressBlock_lazy2_extDict_row( 151 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 152 void const* src, size_t srcSize); 153 154 #define ZSTD_COMPRESSBLOCK_LAZY2 ZSTD_compressBlock_lazy2 155 #define ZSTD_COMPRESSBLOCK_LAZY2_ROW ZSTD_compressBlock_lazy2_row 156 #define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE ZSTD_compressBlock_lazy2_dictMatchState 157 #define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE_ROW ZSTD_compressBlock_lazy2_dictMatchState_row 158 #define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH ZSTD_compressBlock_lazy2_dedicatedDictSearch 159 #define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH_ROW ZSTD_compressBlock_lazy2_dedicatedDictSearch_row 160 #define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT ZSTD_compressBlock_lazy2_extDict 161 #define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT_ROW ZSTD_compressBlock_lazy2_extDict_row 162 #else 163 #define ZSTD_COMPRESSBLOCK_LAZY2 NULL 164 #define ZSTD_COMPRESSBLOCK_LAZY2_ROW NULL 165 #define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE NULL 166 #define ZSTD_COMPRESSBLOCK_LAZY2_DICTMATCHSTATE_ROW NULL 167 #define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH NULL 168 #define ZSTD_COMPRESSBLOCK_LAZY2_DEDICATEDDICTSEARCH_ROW NULL 169 #define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT NULL 170 #define ZSTD_COMPRESSBLOCK_LAZY2_EXTDICT_ROW NULL 171 #endif 172 173 #ifndef ZSTD_EXCLUDE_BTLAZY2_BLOCK_COMPRESSOR 174 size_t ZSTD_compressBlock_btlazy2( 175 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 176 void const* src, size_t srcSize); 177 size_t ZSTD_compressBlock_btlazy2_dictMatchState( 178 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 179 void const* src, size_t srcSize); 180 size_t ZSTD_compressBlock_btlazy2_extDict( 181 ZSTD_MatchState_t* ms, SeqStore_t* seqStore, U32 rep[ZSTD_REP_NUM], 182 void const* src, size_t srcSize); 183 184 #define ZSTD_COMPRESSBLOCK_BTLAZY2 ZSTD_compressBlock_btlazy2 185 #define ZSTD_COMPRESSBLOCK_BTLAZY2_DICTMATCHSTATE ZSTD_compressBlock_btlazy2_dictMatchState 186 #define ZSTD_COMPRESSBLOCK_BTLAZY2_EXTDICT ZSTD_compressBlock_btlazy2_extDict 187 #else 188 #define ZSTD_COMPRESSBLOCK_BTLAZY2 NULL 189 #define ZSTD_COMPRESSBLOCK_BTLAZY2_DICTMATCHSTATE NULL 190 #define ZSTD_COMPRESSBLOCK_BTLAZY2_EXTDICT NULL 191 #endif 192 193 #endif /* ZSTD_LAZY_H */ 194