Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
huf_decompress.c File Reference

Data Structures

struct  DTableDesc
 
struct  HUF_DecompressFastArgs
 
struct  HUF_DEltX1
 
struct  HUF_ReadDTableX1_Workspace
 
struct  HUF_DEltX2
 
struct  sortedSymbol_t
 
struct  HUF_ReadDTableX2_Workspace
 
struct  algo_time_t
 

Macros

#define HUF_DECODER_FAST_TABLELOG   11
 
#define HUF_ENABLE_FAST_DECODE   1
 
#define HUF_FAST_BMI2_ATTRS
 
#define HUF_EXTERN_C
 
#define HUF_ASM_DECL   HUF_EXTERN_C
 
#define HUF_NEED_BMI2_FUNCTION   0
 
#define HUF_isError   ERR_isError
 
#define HUF_ALIGN(x, a)
 
#define HUF_ALIGN_MASK(x, mask)
 
#define HUF_DGEN(fn)
 
#define HUF_4X_FOR_EACH_STREAM(X)
 
#define HUF_4X_FOR_EACH_STREAM_WITH_VAR(X, var)
 
#define HUF_DECODE_SYMBOLX1_0(ptr, DStreamPtr)
 
#define HUF_DECODE_SYMBOLX1_1(ptr, DStreamPtr)
 
#define HUF_DECODE_SYMBOLX1_2(ptr, DStreamPtr)
 
#define HUF_4X1_DECODE_SYMBOL(_stream, _symbol)
 
#define HUF_4X1_RELOAD_STREAM(_stream)
 
#define HUF_DECODE_SYMBOLX2_0(ptr, DStreamPtr)
 
#define HUF_DECODE_SYMBOLX2_1(ptr, DStreamPtr)
 
#define HUF_DECODE_SYMBOLX2_2(ptr, DStreamPtr)
 
#define HUF_4X2_DECODE_SYMBOL(_stream, _decode3)
 
#define HUF_4X2_RELOAD_STREAM(_stream)
 

Typedefs

typedef size_t(* HUF_DecompressUsingDTableFn) (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable)
 
typedef void(* HUF_DecompressFastLoopFn) (HUF_DecompressFastArgs *)
 

Functions

size_t HUF_readDTableX1_wksp (HUF_DTable *DTable, const void *src, size_t srcSize, void *workSpace, size_t wkspSize, int flags)
 
FORCE_INLINE_TEMPLATE BYTE HUF_decodeSymbolX1 (BIT_DStream_t *Dstream, const HUF_DEltX1 *dt, const U32 dtLog)
 
HINT_INLINE size_t HUF_decodeStreamX1 (BYTE *p, BIT_DStream_t *const bitDPtr, BYTE *const pEnd, const HUF_DEltX1 *const dt, const U32 dtLog)
 
FORCE_INLINE_TEMPLATE size_t HUF_decompress1X1_usingDTable_internal_body (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable)
 
FORCE_INLINE_TEMPLATE size_t HUF_decompress4X1_usingDTable_internal_body (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable)
 
size_t HUF_readDTableX2_wksp (HUF_DTable *DTable, const void *src, size_t srcSize, void *workSpace, size_t wkspSize, int flags)
 
FORCE_INLINE_TEMPLATE U32 HUF_decodeSymbolX2 (void *op, BIT_DStream_t *DStream, const HUF_DEltX2 *dt, const U32 dtLog)
 
FORCE_INLINE_TEMPLATE U32 HUF_decodeLastSymbolX2 (void *op, BIT_DStream_t *DStream, const HUF_DEltX2 *dt, const U32 dtLog)
 
HINT_INLINE size_t HUF_decodeStreamX2 (BYTE *p, BIT_DStream_t *bitDPtr, BYTE *const pEnd, const HUF_DEltX2 *const dt, const U32 dtLog)
 
FORCE_INLINE_TEMPLATE size_t HUF_decompress1X2_usingDTable_internal_body (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable)
 
FORCE_INLINE_TEMPLATE size_t HUF_decompress4X2_usingDTable_internal_body (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable)
 
size_t HUF_decompress1X2_DCtx_wksp (HUF_DTable *DCtx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, void *workSpace, size_t wkspSize, int flags)
 
U32 HUF_selectDecoder (size_t dstSize, size_t cSrcSize)
 
size_t HUF_decompress1X_DCtx_wksp (HUF_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, void *workSpace, size_t wkspSize, int flags)
 
size_t HUF_decompress1X_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable, int flags)
 
size_t HUF_decompress1X1_DCtx_wksp (HUF_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, void *workSpace, size_t wkspSize, int flags)
 
size_t HUF_decompress4X_usingDTable (void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable, int flags)
 
size_t HUF_decompress4X_hufOnly_wksp (HUF_DTable *dctx, void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, void *workSpace, size_t wkspSize, int flags)
 

Macro Definition Documentation

◆ HUF_4X1_DECODE_SYMBOL

#define HUF_4X1_DECODE_SYMBOL ( _stream,
_symbol )
Value:
do { \
int const index = (int)(bits[(_stream)] >> 53); \
int const entry = (int)dtable[index]; \
bits[(_stream)] <<= (entry & 0x3F); \
op[(_stream)][(_symbol)] = (BYTE)((entry >> 8) & 0xFF); \
} while (0)
unsigned char BYTE
Definition lz4.c:314
#define op
int
Definition lzoconf.h:340

◆ HUF_4X1_RELOAD_STREAM

#define HUF_4X1_RELOAD_STREAM ( _stream)
Value:
do { \
int const ctz = ZSTD_countTrailingZeros64(bits[(_stream)]); \
int const nbBits = ctz & 7; \
int const nbBytes = ctz >> 3; \
op[(_stream)] += 5; \
ip[(_stream)] -= nbBytes; \
bits[(_stream)] = MEM_read64(ip[(_stream)]) | 1; \
bits[(_stream)] <<= nbBits; \
} while (0)
#define ip
MEM_STATIC U64 MEM_read64(const void *memPtr)
Definition mem.h:121
MEM_STATIC unsigned ZSTD_countTrailingZeros64(U64 val)
Definition bits.h:90

◆ HUF_4X2_DECODE_SYMBOL

#define HUF_4X2_DECODE_SYMBOL ( _stream,
_decode3 )
Value:
do { \
if ((_decode3) || (_stream) != 3) { \
int const index = (int)(bits[(_stream)] >> 53); \
HUF_DEltX2 const entry = dtable[index]; \
MEM_write16(op[(_stream)], entry.sequence); \
bits[(_stream)] <<= (entry.nbBits) & 0x3F; \
op[(_stream)] += (entry.length); \
} \
} while (0)
Definition huf_decompress.c:819
U16 sequence
Definition huf_decompress.c:819
BYTE length
Definition huf_decompress.c:819
BYTE nbBits
Definition huf_decompress.c:819

◆ HUF_4X2_RELOAD_STREAM

#define HUF_4X2_RELOAD_STREAM ( _stream)
Value:
do { \
HUF_4X2_DECODE_SYMBOL(3, 1); \
{ \
int const ctz = ZSTD_countTrailingZeros64(bits[(_stream)]); \
int const nbBits = ctz & 7; \
int const nbBytes = ctz >> 3; \
ip[(_stream)] -= nbBytes; \
bits[(_stream)] = MEM_read64(ip[(_stream)]) | 1; \
bits[(_stream)] <<= nbBits; \
} \
} while (0)

◆ HUF_4X_FOR_EACH_STREAM

#define HUF_4X_FOR_EACH_STREAM ( X)
Value:
do { \
X(0); \
X(1); \
X(2); \
X(3); \
} while (0)

◆ HUF_4X_FOR_EACH_STREAM_WITH_VAR

#define HUF_4X_FOR_EACH_STREAM_WITH_VAR ( X,
var )
Value:
do { \
X(0, (var)); \
X(1, (var)); \
X(2, (var)); \
X(3, (var)); \
} while (0)

◆ HUF_ALIGN

#define HUF_ALIGN ( x,
a )
Value:
HUF_ALIGN_MASK((x), (a) - 1)
#define a(i)
Definition sha256.c:41
#define HUF_ALIGN_MASK(x, mask)
Definition huf_decompress.c:81

◆ HUF_ALIGN_MASK

#define HUF_ALIGN_MASK ( x,
mask )
Value:
(((x) + (mask)) & ~(mask))

◆ HUF_ASM_DECL

#define HUF_ASM_DECL   HUF_EXTERN_C

◆ HUF_DECODE_SYMBOLX1_0

#define HUF_DECODE_SYMBOLX1_0 ( ptr,
DStreamPtr )
Value:
do { *ptr++ = HUF_decodeSymbolX1(DStreamPtr, dt, dtLog); } while (0)
FORCE_INLINE_TEMPLATE BYTE HUF_decodeSymbolX1(BIT_DStream_t *Dstream, const HUF_DEltX1 *dt, const U32 dtLog)
Definition huf_decompress.c:481

◆ HUF_DECODE_SYMBOLX1_1

#define HUF_DECODE_SYMBOLX1_1 ( ptr,
DStreamPtr )
Value:
do { \
if (MEM_64bits() || (HUF_TABLELOG_MAX<=12)) \
HUF_DECODE_SYMBOLX1_0(ptr, DStreamPtr); \
} while (0)
MEM_STATIC unsigned MEM_64bits(void)
Definition mem.h:95
#define HUF_TABLELOG_MAX
Definition huf.h:42

◆ HUF_DECODE_SYMBOLX1_2

#define HUF_DECODE_SYMBOLX1_2 ( ptr,
DStreamPtr )
Value:
do { \
if (MEM_64bits()) \
HUF_DECODE_SYMBOLX1_0(ptr, DStreamPtr); \
} while (0)

◆ HUF_DECODE_SYMBOLX2_0

#define HUF_DECODE_SYMBOLX2_0 ( ptr,
DStreamPtr )
Value:
do { ptr += HUF_decodeSymbolX2(ptr, DStreamPtr, dt, dtLog); } while (0)
FORCE_INLINE_TEMPLATE U32 HUF_decodeSymbolX2(void *op, BIT_DStream_t *DStream, const HUF_DEltX2 *dt, const U32 dtLog)
Definition huf_decompress.c:1139

◆ HUF_DECODE_SYMBOLX2_1

#define HUF_DECODE_SYMBOLX2_1 ( ptr,
DStreamPtr )
Value:
do { \
if (MEM_64bits() || (HUF_TABLELOG_MAX<=12)) \
ptr += HUF_decodeSymbolX2(ptr, DStreamPtr, dt, dtLog); \
} while (0)

◆ HUF_DECODE_SYMBOLX2_2

#define HUF_DECODE_SYMBOLX2_2 ( ptr,
DStreamPtr )
Value:
do { \
if (MEM_64bits()) \
ptr += HUF_decodeSymbolX2(ptr, DStreamPtr, dt, dtLog); \
} while (0)

◆ HUF_DECODER_FAST_TABLELOG

#define HUF_DECODER_FAST_TABLELOG   11

◆ HUF_DGEN

#define HUF_DGEN ( fn)
Value:
static size_t fn(void* dst, size_t dstSize, void const* cSrc, \
size_t cSrcSize, HUF_DTable const* DTable, int flags) \
{ \
(void)flags; \
return fn##_body(dst, dstSize, cSrc, cSrcSize, DTable); \
}
char * dst
Definition lz4.h:833
uint32_t flags
Definition container.h:628
U32 HUF_DTable
Definition huf.h:69

◆ HUF_ENABLE_FAST_DECODE

#define HUF_ENABLE_FAST_DECODE   1

◆ HUF_EXTERN_C

#define HUF_EXTERN_C

◆ HUF_FAST_BMI2_ATTRS

#define HUF_FAST_BMI2_ATTRS

◆ HUF_isError

#define HUF_isError   ERR_isError

◆ HUF_NEED_BMI2_FUNCTION

#define HUF_NEED_BMI2_FUNCTION   0

Typedef Documentation

◆ HUF_DecompressFastLoopFn

typedef void(* HUF_DecompressFastLoopFn) (HUF_DecompressFastArgs *)

◆ HUF_DecompressUsingDTableFn

typedef size_t(* HUF_DecompressUsingDTableFn) (void *dst, size_t dstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable)

Function Documentation

◆ HUF_decodeLastSymbolX2()

FORCE_INLINE_TEMPLATE U32 HUF_decodeLastSymbolX2 ( void * op,
BIT_DStream_t * DStream,
const HUF_DEltX2 * dt,
const U32 dtLog )

◆ HUF_decodeStreamX1()

HINT_INLINE size_t HUF_decodeStreamX1 ( BYTE * p,
BIT_DStream_t *const bitDPtr,
BYTE *const pEnd,
const HUF_DEltX1 *const dt,
const U32 dtLog )

◆ HUF_decodeStreamX2()

HINT_INLINE size_t HUF_decodeStreamX2 ( BYTE * p,
BIT_DStream_t * bitDPtr,
BYTE *const pEnd,
const HUF_DEltX2 *const dt,
const U32 dtLog )

◆ HUF_decodeSymbolX1()

FORCE_INLINE_TEMPLATE BYTE HUF_decodeSymbolX1 ( BIT_DStream_t * Dstream,
const HUF_DEltX1 * dt,
const U32 dtLog )

◆ HUF_decodeSymbolX2()

FORCE_INLINE_TEMPLATE U32 HUF_decodeSymbolX2 ( void * op,
BIT_DStream_t * DStream,
const HUF_DEltX2 * dt,
const U32 dtLog )

◆ HUF_decompress1X1_DCtx_wksp()

size_t HUF_decompress1X1_DCtx_wksp ( HUF_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
void * workSpace,
size_t wkspSize,
int flags )

◆ HUF_decompress1X1_usingDTable_internal_body()

FORCE_INLINE_TEMPLATE size_t HUF_decompress1X1_usingDTable_internal_body ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
const HUF_DTable * DTable )

◆ HUF_decompress1X2_DCtx_wksp()

size_t HUF_decompress1X2_DCtx_wksp ( HUF_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
void * workSpace,
size_t wkspSize,
int flags )

double-symbols decoder

◆ HUF_decompress1X2_usingDTable_internal_body()

FORCE_INLINE_TEMPLATE size_t HUF_decompress1X2_usingDTable_internal_body ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
const HUF_DTable * DTable )

◆ HUF_decompress1X_DCtx_wksp()

size_t HUF_decompress1X_DCtx_wksp ( HUF_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
void * workSpace,
size_t wkspSize,
int flags )

◆ HUF_decompress1X_usingDTable()

size_t HUF_decompress1X_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUF_DTable * DTable,
int flags )

◆ HUF_decompress4X1_usingDTable_internal_body()

FORCE_INLINE_TEMPLATE size_t HUF_decompress4X1_usingDTable_internal_body ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
const HUF_DTable * DTable )

◆ HUF_decompress4X2_usingDTable_internal_body()

FORCE_INLINE_TEMPLATE size_t HUF_decompress4X2_usingDTable_internal_body ( void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
const HUF_DTable * DTable )

◆ HUF_decompress4X_hufOnly_wksp()

size_t HUF_decompress4X_hufOnly_wksp ( HUF_DTable * dctx,
void * dst,
size_t dstSize,
const void * cSrc,
size_t cSrcSize,
void * workSpace,
size_t wkspSize,
int flags )

◆ HUF_decompress4X_usingDTable()

size_t HUF_decompress4X_usingDTable ( void * dst,
size_t maxDstSize,
const void * cSrc,
size_t cSrcSize,
const HUF_DTable * DTable,
int flags )

◆ HUF_readDTableX1_wksp()

size_t HUF_readDTableX1_wksp ( HUF_DTable * DTable,
const void * src,
size_t srcSize,
void * workSpace,
size_t wkspSize,
int flags )

◆ HUF_readDTableX2_wksp()

size_t HUF_readDTableX2_wksp ( HUF_DTable * DTable,
const void * src,
size_t srcSize,
void * workSpace,
size_t wkspSize,
int flags )

◆ HUF_selectDecoder()

U32 HUF_selectDecoder ( size_t dstSize,
size_t cSrcSize )

HUF_selectDecoder() : Tells which decoder is likely to decode faster, based on a set of pre-computed metrics.

Returns
: 0==HUF_decompress4X1, 1==HUF_decompress4X2 . Assumption : 0 < dstSize <= 128 KB