From 60eab38d4719cb51a525806e08f915095c2ad9f1 Mon Sep 17 00:00:00 2001 From: x Date: Fri, 8 Sep 2017 17:31:16 +0200 Subject: [PATCH] IcBench App: External libs --- ext/beplugc_.c | 20 ++++++++++---------- ext/beplugcs_.c | 4 ++-- ext/beplugd_.c | 12 ++++++------ ext/varintg8iu.c | 2 ++ 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/ext/beplugc_.c b/ext/beplugc_.c index 8b17655..1d6041b 100644 --- a/ext/beplugc_.c +++ b/ext/beplugc_.c @@ -6,10 +6,10 @@ #if C_FASTPFOR case FP_FASTPFOR: { size_t nvalue = outsize/4; - FastPForLib::FastPFor<4> ic; ic.encodeArray((const int32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); + FastPForLib::FastPFor<4> ic; ic.encodeArray((const uint32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); if(n & 127) { size_t nvalue2 = outsize/4 - nvalue; - FastPForLib::VariableByte vc; vc.encodeArray((const int32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); + FastPForLib::VariableByte vc; vc.encodeArray((const uint32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); nvalue += nvalue2; } ctou32(out) = nvalue; @@ -17,10 +17,10 @@ } case FP_SIMDFASTPFOR: { size_t nvalue = outsize/4; - FastPForLib::SIMDFastPFor<4> ic; ic.encodeArray((const int32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); + FastPForLib::SIMDFastPFor<4> ic; ic.encodeArray((const uint32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); if(n & 127) { size_t nvalue2 = outsize/4 - nvalue; - FastPForLib::VariableByte vc; vc.encodeArray((const int32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); + FastPForLib::VariableByte vc; vc.encodeArray((const uint32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); nvalue += nvalue2; } ctou32(out) = nvalue; @@ -28,10 +28,10 @@ } case FP_SIMDOPTPFOR: { size_t nvalue = outsize/4; - FastPForLib::SIMDOPTPFor<4> ic; ic.encodeArray((const int32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); + FastPForLib::SIMDOPTPFor<4> ic; ic.encodeArray((const uint32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); if(n & 127) { size_t nvalue2 = outsize/4 - nvalue; - FastPForLib::VariableByte vc; vc.encodeArray((const int32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); + FastPForLib::VariableByte vc; vc.encodeArray((const uint32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); nvalue += nvalue2; } ctou32(out) = nvalue; @@ -39,17 +39,17 @@ } case FP_GROUPSIMPLE: { size_t nvalue = outsize/4; - FastPForLib::SIMDGroupSimple ic; ic.encodeArray((const int32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); + FastPForLib::SIMDGroupSimple ic; ic.encodeArray((const uint32_t *)in, n & (~127), (uint32_t *)(out+4), nvalue); if(n & 127) { size_t nvalue2 = outsize/4 - nvalue; - FastPForLib::VariableByte vc; vc.encodeArray((const int32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); + FastPForLib::VariableByte vc; vc.encodeArray((const uint32_t *)(in + (n & (~127))), n & 127, (uint32_t *)(out + 4 + nvalue*4), nvalue2); nvalue += nvalue2; } ctou32(out) = nvalue; return out+4+nvalue*4; } - case FP_VBYTE: { size_t nvalue=outsize/4; FastPForLib::VariableByte ic; ic.encodeArray((const int32_t *)in, (const size_t)n, (uint32_t *)(out+4), nvalue); ctou32(out)=nvalue; return out+4+nvalue*4; } - case FP_SIMPLE8BRLE:{ size_t nvalue=outsize/4; FastPForLib::Simple8b_RLE ic; ic.encodeArray((const int32_t *)in, (const size_t)n, (uint32_t *)(out+4), nvalue); ctou32(out)=nvalue; return out+4+nvalue*4; } + case FP_VBYTE: { size_t nvalue=outsize/4; FastPForLib::VariableByte ic; ic.encodeArray((const uint32_t *)in, (const size_t)n, (uint32_t *)(out+4), nvalue); ctou32(out)=nvalue; return out+4+nvalue*4; } + case FP_SIMPLE8BRLE:{ size_t nvalue=outsize/4; FastPForLib::Simple8b_RLE ic; ic.encodeArray((const uint32_t *)in, (const size_t)n, (uint32_t *)(out+4), nvalue); ctou32(out)=nvalue; return out+4+nvalue*4; } #endif #if C_LIBFOR diff --git a/ext/beplugcs_.c b/ext/beplugcs_.c index 623d316..5defbc5 100644 --- a/ext/beplugcs_.c +++ b/ext/beplugcs_.c @@ -73,8 +73,8 @@ case LZ4_BIT: bitdienc32(in, n, (unsigned *)out, -mdelta, mdelta); BITSHUFFLE((unsigned char *)out, _n, sbuf,lev); return out + LZ4_compress((char *)sbuf, (char *)out, _n); #endif case LZ4_ : return out + LZ4_compress((char *)in, (char *)out, _n); - case LZ4_NIBBLE:{ bitdienc32(in, n, (unsigned *)out, -mdelta, in); tp4enc((unsigned char *)out, _n, sbuf,lev); return out + LZ4_compress((char *)sbuf, (char *)out, _n); } - case LZ4_BYTE: { bitdienc32(in, n, (unsigned *)out, -mdelta, mdelta); tpenc( (unsigned char *)out, _n, sbuf,lev); return out + LZ4_compress((char *)sbuf, (char *)out, _n); } + case LZ4_NIBBLE:{ bitdienc32(in, n, (uint32_t *)out, -mdelta, mdelta); tp4enc((unsigned char *)out, _n, sbuf,lev); return out + LZ4_compress((char *)sbuf, (char *)out, _n); } + case LZ4_BYTE: { bitdienc32(in, n, (uint32_t *)out, -mdelta, mdelta); tpenc( (unsigned char *)out, _n, sbuf,lev); return out + LZ4_compress((char *)sbuf, (char *)out, _n); } #endif #if C_ZLIB diff --git a/ext/beplugd_.c b/ext/beplugd_.c index 9795a4c..93ac42d 100644 --- a/ext/beplugd_.c +++ b/ext/beplugd_.c @@ -9,7 +9,7 @@ #if C_FASTPFOR case FP_FASTPFOR: { size_t nvalue = n; - FastPForLib::FastPFor<4> ic; const uint32_t *ip = ic.decodeArray((const int32_t *)(in+4), ctou32(in), out, nvalue); + FastPForLib::FastPFor<4> ic; const uint32_t *ip = ic.decodeArray((const uint32_t *)(in+4), ctou32(in), out, nvalue); if(n & 127) { nvalue = n - nvalue; FastPForLib::VariableByte vc; @@ -20,7 +20,7 @@ case FP_SIMDFASTPFOR: { size_t nvalue = n; - FastPForLib::SIMDFastPFor<4> ic; const uint32_t *ip = ic.decodeArray((const int32_t *)(in+4), ctou32(in), out, nvalue); + FastPForLib::SIMDFastPFor<4> ic; const uint32_t *ip = ic.decodeArray((const uint32_t *)(in+4), ctou32(in), out, nvalue); if(n & 127) { nvalue = n - nvalue; FastPForLib::VariableByte vc; @@ -30,7 +30,7 @@ } case FP_SIMDOPTPFOR: { size_t nvalue = n; - FastPForLib::SIMDOPTPFor<4> ic; const uint32_t *ip = ic.decodeArray((const int32_t *)(in+4), ctou32(in), out, nvalue); + FastPForLib::SIMDOPTPFor<4> ic; const uint32_t *ip = ic.decodeArray((const uint32_t *)(in+4), ctou32(in), out, nvalue); if(n & 127) { nvalue = n - nvalue; FastPForLib::VariableByte vc; @@ -40,7 +40,7 @@ } case FP_GROUPSIMPLE: { size_t nvalue = n; - FastPForLib::SIMDGroupSimple ic; const uint32_t *ip = ic.decodeArray((const int32_t *)(in+4), ctou32(in), out, nvalue); + FastPForLib::SIMDGroupSimple ic; const uint32_t *ip = ic.decodeArray((const uint32_t *)(in+4), ctou32(in), out, nvalue); if(n & 127) { nvalue = n - nvalue; FastPForLib::VariableByte vc; @@ -50,9 +50,9 @@ } case FP_VBYTE: //return vbytedec( in, n, out); - { size_t nvalue=n; FastPForLib::VariableByte ic; return (unsigned char *)ic.decodeArray((const int32_t *)(in+4), ctou32(in), (uint32_t *)out, nvalue); } + { size_t nvalue=n; FastPForLib::VariableByte ic; return (unsigned char *)ic.decodeArray((const uint32_t *)(in+4), ctou32(in), (uint32_t *)out, nvalue); } case FP_SIMPLE8BRLE: - { size_t nvalue=n; FastPForLib::Simple8b_RLE ic; ic.decodeArray((const int32_t *)(in+4), ctou32(in), (uint32_t *)out, nvalue); return in+4+ctou32(in)*4; } + { size_t nvalue=n; FastPForLib::Simple8b_RLE ic; ic.decodeArray((const uint32_t *)(in+4), ctou32(in), (uint32_t *)out, nvalue); return in+4+ctou32(in)*4; } #endif #if C_LIBFOR diff --git a/ext/varintg8iu.c b/ext/varintg8iu.c index dfca2cc..969f422 100644 --- a/ext/varintg8iu.c +++ b/ext/varintg8iu.c @@ -141,6 +141,8 @@ unsigned char *vintg8enc(const uint32_t *__restrict in, const size_t length, uns return out; //out + ((compressed_size + 3)/ 4); } +#define __builtin_ia32_storedqu(dst, result) _mm_storeu_si128(dst,result) + unsigned char *vintg8dec(unsigned char *__restrict in, const size_t length, uint32_t *__restrict out) { size_t srclength = length * 4; const unsigned *out_ = out + length; //uint32_t * dest = out;size_t nvalue = length * 4; //uint32_t uncompressSize = 0;