Lines Matching +full:ctrl +full:- +full:len
2 FastLZ - lightning-fast lossless compression library
70 * Prevent accessing more than 8-bit at once, except on x86 architectures.
105 #define HASH_MASK (HASH_SIZE - 1)
109 (v>>(16 - HASH_LOG));\
131 #define MAX_FARDISTANCE (65535 + MAX_DISTANCE - 1)
185 const unsigned char *ip_bound = ip + length - 2; in FASTLZ_COMPRESSOR()
186 const unsigned char *ip_limit = ip + length - 12; in FASTLZ_COMPRESSOR()
200 *op++ = length - 1; in FASTLZ_COMPRESSOR()
215 *op++ = MAX_COPY - 1; in FASTLZ_COMPRESSOR()
225 unsigned int len = 3; in FASTLZ_COMPRESSOR() local
227 /* comparison starting-point */ in FASTLZ_COMPRESSOR()
232 if (ip[0] == ip[-1] && in FASTLZ_COMPRESSOR()
233 FASTLZ_READU16(ip - 1) == FASTLZ_READU16(ip + 1)) { in FASTLZ_COMPRESSOR()
236 ref = anchor - 1 + 3; in FASTLZ_COMPRESSOR()
247 distance = anchor - ref; in FASTLZ_COMPRESSOR()
266 /* far, needs at least 5-byte match */ in FASTLZ_COMPRESSOR()
270 len += 2; in FASTLZ_COMPRESSOR()
277 ip = anchor + len; in FASTLZ_COMPRESSOR()
280 distance--; in FASTLZ_COMPRESSOR()
284 unsigned char x = ip[-1]; in FASTLZ_COMPRESSOR()
319 *(op - copy - 1) = copy - 1; in FASTLZ_COMPRESSOR()
322 op--; in FASTLZ_COMPRESSOR()
328 ip -= 3; in FASTLZ_COMPRESSOR()
329 len = ip - anchor; in FASTLZ_COMPRESSOR()
334 if (len < 7) { in FASTLZ_COMPRESSOR()
335 *op++ = (len << 5) + (distance >> 8); in FASTLZ_COMPRESSOR()
339 for (len -= 7; len >= 255; len -= 255) in FASTLZ_COMPRESSOR()
341 *op++ = len; in FASTLZ_COMPRESSOR()
346 if (len < 7) { in FASTLZ_COMPRESSOR()
347 distance -= MAX_DISTANCE; in FASTLZ_COMPRESSOR()
348 *op++ = (len << 5) + 31; in FASTLZ_COMPRESSOR()
353 distance -= MAX_DISTANCE; in FASTLZ_COMPRESSOR()
355 for (len -= 7; len >= 255; len -= 255) in FASTLZ_COMPRESSOR()
357 *op++ = len; in FASTLZ_COMPRESSOR()
365 if (FASTLZ_UNEXPECT_CONDITIONAL(len > MAX_LEN - 2)) in FASTLZ_COMPRESSOR()
366 while (len > MAX_LEN - 2) { in FASTLZ_COMPRESSOR()
368 *op++ = MAX_LEN - 2 - 7 - 2; in FASTLZ_COMPRESSOR()
370 len -= MAX_LEN - 2; in FASTLZ_COMPRESSOR()
373 if (len < 7) { in FASTLZ_COMPRESSOR()
374 *op++ = (len << 5) + (distance >> 8); in FASTLZ_COMPRESSOR()
378 *op++ = len - 7; in FASTLZ_COMPRESSOR()
390 *op++ = MAX_COPY - 1; in FASTLZ_COMPRESSOR()
400 *op++ = MAX_COPY - 1; in FASTLZ_COMPRESSOR()
404 /* left-over as literal copy */ in FASTLZ_COMPRESSOR()
411 *op++ = MAX_COPY - 1; in FASTLZ_COMPRESSOR()
417 *(op - copy - 1) = copy - 1; in FASTLZ_COMPRESSOR()
419 op--; in FASTLZ_COMPRESSOR()
426 return op - (unsigned char *)output; in FASTLZ_COMPRESSOR()
436 unsigned int ctrl = (*ip++) & 31; in FASTLZ_DECOMPRESSOR() local
441 unsigned int len = ctrl >> 5; in FASTLZ_DECOMPRESSOR() local
442 unsigned int ofs = (ctrl & 31) << 8; in FASTLZ_DECOMPRESSOR()
444 if (ctrl >= 32) { in FASTLZ_DECOMPRESSOR()
448 len--; in FASTLZ_DECOMPRESSOR()
449 ref -= ofs; in FASTLZ_DECOMPRESSOR()
450 if (len == 7 - 1) in FASTLZ_DECOMPRESSOR()
452 len += *ip++; in FASTLZ_DECOMPRESSOR()
453 ref -= *ip++; in FASTLZ_DECOMPRESSOR()
457 len += code; in FASTLZ_DECOMPRESSOR()
460 ref -= code; in FASTLZ_DECOMPRESSOR()
462 /* match from 16-bit distance */ in FASTLZ_DECOMPRESSOR()
468 ref = op - ofs - MAX_DISTANCE; in FASTLZ_DECOMPRESSOR()
473 if (FASTLZ_UNEXPECT_CONDITIONAL(op + len + 3 > in FASTLZ_DECOMPRESSOR()
477 if (FASTLZ_UNEXPECT_CONDITIONAL(ref - 1 < in FASTLZ_DECOMPRESSOR()
484 ctrl = *ip++; in FASTLZ_DECOMPRESSOR()
490 unsigned char b = ref[-1]; in FASTLZ_DECOMPRESSOR()
494 for (; len; --len) in FASTLZ_DECOMPRESSOR()
502 ref--; in FASTLZ_DECOMPRESSOR()
509 if (len & 1) { in FASTLZ_DECOMPRESSOR()
511 len--; in FASTLZ_DECOMPRESSOR()
514 /* copy 16-bit at once */ in FASTLZ_DECOMPRESSOR()
516 op += len; in FASTLZ_DECOMPRESSOR()
518 for (len >>= 1; len > 4; len -= 4) { in FASTLZ_DECOMPRESSOR()
524 for (; len; --len) in FASTLZ_DECOMPRESSOR()
527 for (; len; --len) in FASTLZ_DECOMPRESSOR()
532 ctrl++; in FASTLZ_DECOMPRESSOR()
534 if (FASTLZ_UNEXPECT_CONDITIONAL(op + ctrl > op_limit)) in FASTLZ_DECOMPRESSOR()
536 if (FASTLZ_UNEXPECT_CONDITIONAL(ip + ctrl > ip_limit)) in FASTLZ_DECOMPRESSOR()
541 for (--ctrl; ctrl; ctrl--) in FASTLZ_DECOMPRESSOR()
546 ctrl = *ip++; in FASTLZ_DECOMPRESSOR()
550 return op - (unsigned char *)output; in FASTLZ_DECOMPRESSOR()