From b87458ae50ddafd82230d8a268d7f8a9edea1ea8 Mon Sep 17 00:00:00 2001 From: x Date: Sun, 26 Feb 2017 14:22:11 +0100 Subject: [PATCH] TurboPFor: Bit Packing --- bitpack.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bitpack.c b/bitpack.c index 9b31a43..db15828 100644 --- a/bitpack.c +++ b/bitpack.c @@ -44,9 +44,11 @@ typedef unsigned char *(*BITPACK_D64)(uint64_t *__restrict out, unsigned n, cons #define PREFETCH(_ip_) __builtin_prefetch(_ip_+768)//#define PREFETCH(ip) #if 0 +#define IP0(_ip_,_x_) *_ip_ #define IP( _ip_,_x_) *_ip_++ #define IPI(_ip_) #else +#define IP0(_ip_,_x_) _ip_[_x_] #define IP( _ip_,_x_) _ip_[_x_] #define IPI(_ip_) _ip_ += 32 #endif @@ -62,7 +64,7 @@ typedef unsigned char *(*BITPACK_D64)(uint64_t *__restrict out, unsigned n, cons #define DELTA -#define IPB(_ip_,_x_, _parm_) v = IP(_ip_,_x_) - start; start = IP(_ip_,_x_) +#define IPB(_ip_,_x_, _parm_) v = IP0(_ip_,_x_) - start; start = IP(_ip_,_x_) #define IPV(_ip_,_x_) v #define IPX(_ip_,_x_) (v = IP(_ip_,_x_) - start) #define IPP(_ip_,_x_, _parm_) start = IP(_ip_,_x_) @@ -76,7 +78,7 @@ typedef unsigned char *(*BITPACK_D64)(uint64_t *__restrict out, unsigned n, cons #define _BITPACK_ bitfpack #include "bitpack_.h" -#define IPB( _ip_,_x_, _parm_) v = IP(_ip_,_x_) - start - 1; start = IP(_ip_,_x_) +#define IPB( _ip_,_x_, _parm_) v = IP0(_ip_,_x_) - start - 1; start = IP(_ip_,_x_) #define IPV( _ip_,_x_) v #define IPX(_ip_,_x_) (v = IP(_ip_,_x_) - start - 1) #define IPP(_ip_,_x_, _parm_) start = IP(_ip_,_x_)