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

Reply via email to