|
#define | kLazySkippingStep 8 |
|
#define | NEXT_IN_CHAIN(d, mask) |
|
#define | ZSTD_ROW_HASH_TAG_MASK ((1u << ZSTD_ROW_HASH_TAG_BITS) - 1) |
|
#define | ZSTD_ROW_HASH_MAX_ENTRIES 64 /* absolute maximum number of entries per row, for all configurations */ |
|
#define | ZSTD_ROW_HASH_CACHE_MASK (ZSTD_ROW_HASH_CACHE_SIZE - 1) |
|
#define | ZSTD_BT_SEARCH_FN(dictMode, mls) |
|
#define | ZSTD_HC_SEARCH_FN(dictMode, mls) |
|
#define | ZSTD_ROW_SEARCH_FN(dictMode, mls, rowLog) |
|
#define | ZSTD_SEARCH_FN_ATTRS FORCE_NOINLINE |
|
#define | GEN_ZSTD_BT_SEARCH_FN(dictMode, mls) |
|
#define | GEN_ZSTD_HC_SEARCH_FN(dictMode, mls) |
|
#define | GEN_ZSTD_ROW_SEARCH_FN(dictMode, mls, rowLog) |
|
#define | ZSTD_FOR_EACH_ROWLOG(X, dictMode, mls) |
|
#define | ZSTD_FOR_EACH_MLS_ROWLOG(X, dictMode) |
|
#define | ZSTD_FOR_EACH_MLS(X, dictMode) |
|
#define | ZSTD_FOR_EACH_DICT_MODE(X, ...) |
|
#define | GEN_ZSTD_CALL_BT_SEARCH_FN(dictMode, mls) |
|
#define | GEN_ZSTD_CALL_HC_SEARCH_FN(dictMode, mls) |
|
#define | GEN_ZSTD_CALL_ROW_SEARCH_FN(dictMode, mls, rowLog) |
|
#define | ZSTD_SWITCH_MLS(X, dictMode) |
|
#define | ZSTD_SWITCH_ROWLOG(dictMode, mls) |
|
#define | ZSTD_SWITCH_SEARCH_METHOD(dictMode) |
|
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_BtFindBestMatch (ZSTD_matchState_t *ms, const BYTE *const ip, const BYTE *const iLimit, size_t *offBasePtr, const U32 mls, const ZSTD_dictMode_e dictMode) |
|
void | ZSTD_dedicatedDictSearch_lazy_loadDictionary (ZSTD_matchState_t *ms, const BYTE *const ip) |
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_dedicatedDictSearch_lazy_search (size_t *offsetPtr, size_t ml, U32 nbAttempts, const ZSTD_matchState_t *const dms, const BYTE *const ip, const BYTE *const iLimit, const BYTE *const prefixStart, const U32 curr, const U32 dictLimit, const size_t ddsIdx) |
|
FORCE_INLINE_TEMPLATE U32 | ZSTD_insertAndFindFirstIndex_internal (ZSTD_matchState_t *ms, const ZSTD_compressionParameters *const cParams, const BYTE *ip, U32 const mls, U32 const lazySkipping) |
|
U32 | ZSTD_insertAndFindFirstIndex (ZSTD_matchState_t *ms, const BYTE *ip) |
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_HcFindBestMatch (ZSTD_matchState_t *ms, const BYTE *const ip, const BYTE *const iLimit, size_t *offsetPtr, const U32 mls, const ZSTD_dictMode_e dictMode) |
|
MEM_STATIC U32 | ZSTD_VecMask_next (ZSTD_VecMask val) |
|
FORCE_INLINE_TEMPLATE U32 | ZSTD_row_nextIndex (BYTE *const tagRow, U32 const rowMask) |
|
MEM_STATIC int | ZSTD_isAligned (void const *ptr, size_t align) |
|
FORCE_INLINE_TEMPLATE void | ZSTD_row_prefetch (U32 const *hashTable, BYTE const *tagTable, U32 const relRow, U32 const rowLog) |
|
FORCE_INLINE_TEMPLATE void | ZSTD_row_fillHashCache (ZSTD_matchState_t *ms, const BYTE *base, U32 const rowLog, U32 const mls, U32 idx, const BYTE *const iLimit) |
|
FORCE_INLINE_TEMPLATE U32 | ZSTD_row_nextCachedHash (U32 *cache, U32 const *hashTable, BYTE const *tagTable, BYTE const *base, U32 idx, U32 const hashLog, U32 const rowLog, U32 const mls, U64 const hashSalt) |
|
FORCE_INLINE_TEMPLATE void | ZSTD_row_update_internalImpl (ZSTD_matchState_t *ms, U32 updateStartIdx, U32 const updateEndIdx, U32 const mls, U32 const rowLog, U32 const rowMask, U32 const useCache) |
|
FORCE_INLINE_TEMPLATE void | ZSTD_row_update_internal (ZSTD_matchState_t *ms, const BYTE *ip, U32 const mls, U32 const rowLog, U32 const rowMask, U32 const useCache) |
|
void | ZSTD_row_update (ZSTD_matchState_t *const ms, const BYTE *ip) |
|
FORCE_INLINE_TEMPLATE U32 | ZSTD_row_matchMaskGroupWidth (const U32 rowEntries) |
|
FORCE_INLINE_TEMPLATE ZSTD_VecMask | ZSTD_row_getMatchMask (const BYTE *const tagRow, const BYTE tag, const U32 headGrouped, const U32 rowEntries) |
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_RowFindBestMatch (ZSTD_matchState_t *ms, const BYTE *const ip, const BYTE *const iLimit, size_t *offsetPtr, const U32 mls, const ZSTD_dictMode_e dictMode, const U32 rowLog) |
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_searchMax (ZSTD_matchState_t *ms, const BYTE *ip, const BYTE *iend, size_t *offsetPtr, U32 const mls, U32 const rowLog, searchMethod_e const searchMethod, ZSTD_dictMode_e const dictMode) |
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_compressBlock_lazy_generic (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], const void *src, size_t srcSize, const searchMethod_e searchMethod, const U32 depth, ZSTD_dictMode_e const dictMode) |
|
size_t | ZSTD_compressBlock_btlazy2 (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2 (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_btlazy2_dictMatchState (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_dictMatchState (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_dictMatchState (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy_dictMatchState (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_dedicatedDictSearch (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_dedicatedDictSearch (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy_dedicatedDictSearch (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_dictMatchState_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_dictMatchState_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy_dictMatchState_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_dedicatedDictSearch_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_dedicatedDictSearch_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy_dedicatedDictSearch_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
FORCE_INLINE_TEMPLATE size_t | ZSTD_compressBlock_lazy_extDict_generic (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], const void *src, size_t srcSize, const searchMethod_e searchMethod, const U32 depth) |
|
size_t | ZSTD_compressBlock_greedy_extDict (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_extDict (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_extDict (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_btlazy2_extDict (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_greedy_extDict_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy_extDict_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
size_t | ZSTD_compressBlock_lazy2_extDict_row (ZSTD_matchState_t *ms, seqStore_t *seqStore, U32 rep[ZSTD_REP_NUM], void const *src, size_t srcSize) |
|
#define ZSTD_BT_SEARCH_FN |
( |
| dictMode, |
|
|
| mls ) |
Value:ZSTD_BtFindBestMatch_##dictMode##
_##mls
#define _(msgid)
Definition getopt.c:49
Generate search functions templated on (dictMode, mls, rowLog). These functions are outlined for code size & compilation time. ZSTD_searchMax() dispatches to the correct implementation function.
TODO: The start of the search function involves loading and calculating a bunch of constants from the ZSTD_matchState_t. These computations could be done in an initialization function, and saved somewhere in the match state. Then we could pass a pointer to the saved state instead of the match state, and avoid duplicate computations.
TODO: Move the match re-winding into searchMax. This improves compression ratio, and unlocks further simplifications with the next TODO.
TODO: Try moving the repcode search into searchMax. After the re-winding and repcode search are in searchMax, there is no more logic in the match finder loop that requires knowledge about the dictMode. So we should be able to avoid force inlining it, and we can join the extDict loop with the single segment loop. It should go in searchMax instead of its own function to avoid having multiple virtual function calls per search.