From f48024918206e5303e1a9aad8a4caffd7286edd5 Mon Sep 17 00:00:00 2001 From: x Date: Thu, 23 Mar 2023 11:29:37 +0100 Subject: [PATCH] TurboPFor: bitunpack include --- lib/bitunpack_.h | 500 ++++++++++++++++++++++++----------------------- 1 file changed, 252 insertions(+), 248 deletions(-) diff --git a/lib/bitunpack_.h b/lib/bitunpack_.h index 0239bce..1e70ab4 100644 --- a/lib/bitunpack_.h +++ b/lib/bitunpack_.h @@ -3103,17 +3103,21 @@ BITUNBLK64_64(ip, 31, op, nb,parm); OPI(op, nb,parm); ip += 64*4/sizeof(ip[0]);\ } +#define BU(_b_,_usize_) unsigned char *in_=in+PAD8(n*_b_),*ip, bin[PAD8(64*_b_)+1]; T3(uint,_usize_,_t) *out_=out+n,bout[64],*op; \ + do { ip=in+PAD8(32*_b_); op = out+32; if(op > out_) { memcpy(bin, in, in_-in); ip = NULL; in = bin; out = bout; } T2(BITUNPACK64_,_b_)(in, out, _b_,start); PREFETCH(in+384,0); in = ip; out = op; \ +} while(out < out_); if(!ip) { op-=32; memcpy(op,bout,(out_-op)*(_usize_/8)); } return in_ + #ifndef DELTA #define USIZE 8 -unsigned char *T2(_BITUNPACK_,8_0)(const unsigned char *__restrict in, unsigned n, uint8_t *__restrict out ) { unsigned char *in_=in+PAD8(n*0); const uint8_t *out_ = out+n; do { BITUNPACK64_0( in, out, 0,start); PREFETCH(in+512,0); } while(out