Skip to content

Commit 41a4579

Browse files
committed
TurboPFor: Integer Compression c/c++ header
1 parent a97d5df commit 41a4579

File tree

1 file changed

+58
-30
lines changed

1 file changed

+58
-30
lines changed

include/ic.h

100644100755
+58-30
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,35 @@ void bitzdec(unsigned char *in, unsigned n, unsigned esize);
537537
#define FLOAT2INT(fval, scalse, bias) round(fval * scale + bias)
538538
#define INT2FLOAT(ival, scalse, bias) ((ival - bias) / scale)
539539

540+
//------- Quantization : b number of bits quantized in out ----------------
541+
#if defined(FLT16_BUILTIN)
542+
void fpquant8e16( _Float16 *in, size_t n, uint8_t *out, unsigned b, _Float16 *pfmin, _Float16 *pfmax);
543+
void fpquant16e16(_Float16 *in, size_t n, uint16_t *out, unsigned b, _Float16 *pfmin, _Float16 *pfmax);
544+
#endif
545+
546+
void fpquant8e32( float *in, size_t n, uint8_t *out, unsigned b, float *pfmin, float *pfmax);
547+
void fpquant16e32( float *in, size_t n, uint16_t *out, unsigned b, float *pfmin, float *pfmax);
548+
void fpquant32e32( float *in, size_t n, uint32_t *out, unsigned b, float *pfmin, float *pfmax);
549+
550+
void fpquant8e64( double *in, size_t n, uint8_t *out, unsigned b, double *pfmin, double *pfmax);
551+
void fpquant16e64( double *in, size_t n, uint16_t *out, unsigned b, double *pfmin, double *pfmax);
552+
void fpquant32e64( double *in, size_t n, uint32_t *out, unsigned b, double *pfmin, double *pfmax);
553+
void fpquant64e64( double *in, size_t n, uint64_t *out, unsigned b, double *pfmin, double *pfmax);
554+
555+
#if defined(FLT16_BUILTIN)
556+
void fpquant8d16( uint8_t *in, size_t n, _Float16 *out, unsigned b, _Float16 fmin, _Float16 fmax);
557+
void fpquant16d16(uint16_t *in, size_t n, _Float16 *out, unsigned b, _Float16 fmin, _Float16 fmax);
558+
#endif
559+
560+
void fpquant8d32( uint8_t *in, size_t n, float *out, unsigned b, float fmin, float fmax);
561+
void fpquant16d32(uint16_t *in, size_t n, float *out, unsigned b, float fmin, float fmax);
562+
void fpquant32d32(uint32_t *in, size_t n, float *out, unsigned b, float fmin, float fmax);
563+
564+
void fpquant8d64( uint8_t *in, size_t n, double *out, unsigned b, double fmin, double fmax);
565+
void fpquant16d64(uint16_t *in, size_t n, double *out, unsigned b, double fmin, double fmax);
566+
void fpquant32d64(uint32_t *in, size_t n, double *out, unsigned b, double fmin, double fmax);
567+
void fpquant64d64(uint64_t *in, size_t n, double *out, unsigned b, double fmin, double fmax);
568+
540569
//------- Lossy floating point transform: pad the trailing mantissa bits with zeros according to the error e (ex. e=0.00001)
541570
// must include float.h to use _Float16 (see icapp.c)
542571
#if defined(__clang__) && defined(__is_identifier)
@@ -983,35 +1012,35 @@ unsigned trled( const unsigned char *__restrict in, unsigned inlen, unsigned c
9831012
}
9841013
#endif
9851014

986-
//-- "Integer Compression" variable length encoding with bitio ------------------
987-
988-
#ifdef __cplusplus
989-
extern "C" {
990-
#endif
991-
//-- Gamma coding (length limited) : Full 32 bit range
992-
size_t bitgenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
993-
size_t bitgdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
994-
995-
//-- Rice Coding (adaptive length limited) : Full 32 bit range ---
996-
size_t bitrenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
997-
size_t bitrdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
998-
999-
size_t vlcenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits
1000-
size_t vlcdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1001-
1002-
size_t vlcenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits
1003-
size_t vlcdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1004-
1005-
size_t vlczenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits zigzag
1006-
size_t vlczdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1007-
1008-
size_t vlczenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits zigzag
1009-
size_t vlczdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1010-
1011-
#ifdef __cplusplus
1012-
}
1013-
#endif
1014-
1015+
//-- "Integer Compression" variable length encoding with bitio ------------------
1016+
1017+
#ifdef __cplusplus
1018+
extern "C" {
1019+
#endif
1020+
//-- Gamma coding (length limited) : Full 32 bit range
1021+
size_t bitgenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
1022+
size_t bitgdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1023+
1024+
//-- Rice Coding (adaptive length limited) : Full 32 bit range ---
1025+
size_t bitrenc32( unsigned char *_in, size_t _inlen, unsigned char *out);
1026+
size_t bitrdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1027+
1028+
size_t vlcenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits
1029+
size_t vlcdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1030+
1031+
size_t vlcenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits
1032+
size_t vlcdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1033+
1034+
size_t vlczenc16( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 16 bits zigzag
1035+
size_t vlczdec16( unsigned char *in, size_t _outlen, unsigned char *_out);
1036+
1037+
size_t vlczenc32( unsigned char *_in, size_t _inlen, unsigned char *out); // TurboVLC 32 bits zigzag
1038+
size_t vlczdec32( unsigned char *in, size_t _outlen, unsigned char *_out);
1039+
1040+
#ifdef __cplusplus
1041+
}
1042+
#endif
1043+
10151044
//-- "Integer Compression" variable byte (scalar TurboVByte+ SIMD TurboByte) ---------------------------------------------------------------
10161045

10171046
#ifdef __cplusplus
@@ -1632,4 +1661,3 @@ unsigned char *vsdec64(unsigned char *__restrict in, size_t n, uint64_t *
16321661
#ifdef __cplusplus
16331662
}
16341663
#endif
1635-

0 commit comments

Comments
 (0)