Changeset: dbf21a3450bd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dbf21a3450bd
Modified Files:
gdk/gdk_search.c
gdk/gdk_search.h
Branch: int128
Log Message:
added int128 / "hge" support in gdk/gdk_search.[hc]
diffs (96 lines):
diff --git a/gdk/gdk_search.c b/gdk/gdk_search.c
--- a/gdk/gdk_search.c
+++ b/gdk/gdk_search.c
@@ -335,6 +335,11 @@ BAThash(BAT *b, BUN masksize)
case TYPE_lng:
starthash(lng);
break;
+#ifdef HAVE_HGE
+ case TYPE_hge:
+ starthash(hge);
+ break;
+#endif
default:
for (; r < p; r++) {
ptr v = BUNhead(bi, r);
@@ -367,6 +372,11 @@ BAThash(BAT *b, BUN masksize)
case TYPE_lng:
finishhash(lng);
break;
+#ifdef HAVE_HGE
+ case TYPE_hge:
+ finishhash(hge);
+ break;
+#endif
default:
for (; p < q; p++) {
ptr v = BUNhead(bi, p);
@@ -409,6 +419,10 @@ HASHprobe(Hash *h, const void *v)
case TYPE_dbl:
case TYPE_lng:
return hash_lng(h, v);
+#ifdef HAVE_HGE
+ case TYPE_hge:
+ return hash_hge(h, v);
+#endif
default:
return hash_any(h, v);
}
@@ -576,6 +590,11 @@ SORTfndwhich(BAT *b, const void *v, int
case TYPE_lng:
SORTfndloop(lng, simple_CMP, BUNtloc);
break;
+#ifdef HAVE_HGE
+ case TYPE_hge:
+ SORTfndloop(hge, simple_CMP, BUNtloc);
+ break;
+#endif
case TYPE_flt:
SORTfndloop(flt, simple_CMP, BUNtloc);
break;
@@ -603,6 +622,11 @@ SORTfndwhich(BAT *b, const void *v, int
case TYPE_lng:
SORTfndloop(lng, -simple_CMP, BUNtloc);
break;
+#ifdef HAVE_HGE
+ case TYPE_hge:
+ SORTfndloop(hge, -simple_CMP, BUNtloc);
+ break;
+#endif
case TYPE_flt:
SORTfndloop(flt, -simple_CMP, BUNtloc);
break;
diff --git a/gdk/gdk_search.h b/gdk/gdk_search.h
--- a/gdk/gdk_search.h
+++ b/gdk/gdk_search.h
@@ -88,6 +88,10 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
#define hash_int(H,V) ((BUN) mix_int(*((const unsigned int*) (V))) &
(H)->mask)
/* XXX return size_t-sized value for 8-byte oid? */
#define hash_lng(H,V) ((BUN) mix_int((unsigned int) (*(const lng *)(V)
^ (*(lng *)(V) >> 32))) & (H)->mask)
+#ifdef HAVE_HGE
+#define hash_hge(H,V) ((BUN) mix_int((unsigned int) (*(const hge *)(V)
^ (*(hge *)(V) >> 32) ^ \
+ (*(hge *)(V) >> 64)
^ (*(hge *)(V) >> 96))) & (H)->mask)
+#endif
#if SIZEOF_OID == SIZEOF_INT
#define hash_oid(H,V) ((BUN) mix_int((unsigned int) *((const oid*)
(V))) & (H)->mask)
#else
@@ -154,6 +158,9 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
#define HASHfnd_sht(x,y,z) HASHfnd_TYPE(x,y,z,sht)
#define HASHfnd_int(x,y,z) HASHfnd_TYPE(x,y,z,int)
#define HASHfnd_lng(x,y,z) HASHfnd_TYPE(x,y,z,lng)
+#ifdef HAVE_HGE
+#define HASHfnd_hge(x,y,z) HASHfnd_TYPE(x,y,z,hge)
+#endif
#define HASHfnd_oid(x,y,z) HASHfnd_TYPE(x,y,z,oid)
#define HASHfnd_wrd(x,y,z) HASHfnd_TYPE(x,y,z,wrd)
@@ -231,6 +238,9 @@ gdk_export BUN HASHlist(Hash *h, BUN i);
#define HASHins_sht(h,i,v) HASHins_TYPE(h,i,v,sht)
#define HASHins_int(h,i,v) HASHins_TYPE(h,i,v,int)
#define HASHins_lng(h,i,v) HASHins_TYPE(h,i,v,lng)
+#ifdef HAVE_HGE
+#define HASHins_hge(h,i,v) HASHins_TYPE(h,i,v,hge)
+#endif
#define HASHdel(h, i, v, next) \
do { \
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list