Changeset: c2d796f92952 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c2d796f92952
Modified Files:
        gdk/gdk_ssort.c
        gdk/gdk_ssort_impl.h
Branch: int128
Log Message:

added int128 / "hge" support in gdk/gdk_ssort.c & gdk/gdk_ssort_impl.h


diffs (110 lines):

diff --git a/gdk/gdk_ssort.c b/gdk/gdk_ssort.c
--- a/gdk/gdk_ssort.c
+++ b/gdk/gdk_ssort.c
@@ -148,6 +148,9 @@ merge_getmem(MergeState *ms, ssize_t nee
 #define COPY_sht(d,s,w)                (* (sht *) (d) = * (sht *) (s))
 #define COPY_int(d,s,w)                (* (int *) (d) = * (int *) (s))
 #define COPY_lng(d,s,w)                (* (lng *) (d) = * (lng *) (s))
+#ifdef HAVE_HGE
+#define COPY_hge(d,s,w)                (* (hge *) (d) = * (hge *) (s))
+#endif
 #define COPY_flt(d,s,w)                (* (flt *) (d) = * (flt *) (s))
 #define COPY_dbl(d,s,w)                (* (dbl *) (d) = * (dbl *) (s))
 #define COPY_oid(d,s,w)                (* (oid *) (d) = * (oid *) (s))
@@ -217,6 +220,9 @@ merge_getmem(MergeState *ms, ssize_t nee
 #define ISLT_sht(X, Y, ms)     (* (sht *) (X) < * (sht *) (Y))
 #define ISLT_int(X, Y, ms)     (* (int *) (X) < * (int *) (Y))
 #define ISLT_lng(X, Y, ms)     (* (lng *) (X) < * (lng *) (Y))
+#ifdef HAVE_HGE
+#define ISLT_hge(X, Y, ms)     (* (hge *) (X) < * (hge *) (Y))
+#endif
 #define ISLT_flt(X, Y, ms)     (* (flt *) (X) < * (flt *) (Y))
 #define ISLT_dbl(X, Y, ms)     (* (dbl *) (X) < * (dbl *) (Y))
 #define ISLT_oid(X, Y, ms)     (* (oid *) (X) < * (oid *) (Y))
@@ -224,6 +230,9 @@ merge_getmem(MergeState *ms, ssize_t nee
 #define ISLT_sht_rev(X, Y, ms) (* (sht *) (X) > * (sht *) (Y))
 #define ISLT_int_rev(X, Y, ms) (* (int *) (X) > * (int *) (Y))
 #define ISLT_lng_rev(X, Y, ms) (* (lng *) (X) > * (lng *) (Y))
+#ifdef HAVE_HGE
+#define ISLT_hge_rev(X, Y, ms) (* (hge *) (X) > * (hge *) (Y))
+#endif
 #define ISLT_flt_rev(X, Y, ms) (* (flt *) (X) > * (flt *) (Y))
 #define ISLT_dbl_rev(X, Y, ms) (* (dbl *) (X) > * (dbl *) (Y))
 #define ISLT_oid_rev(X, Y, ms) (* (oid *) (X) > * (oid *) (Y))
@@ -397,6 +406,40 @@ merge_compute_minrun(ssize_t n)
 
 #undef COPY
 
+#ifdef HAVE_HGE
+#define COPY           COPY_hge
+
+#define binarysort     binarysort_hge
+#define do_ssort       do_ssort_hge
+#define gallop_left    gallop_left_hge
+#define gallop_right   gallop_right_hge
+#define ISLT           ISLT_hge
+#define merge_at       merge_at_hge
+#include "gdk_ssort_impl.h"
+#undef binarysort
+#undef do_ssort
+#undef gallop_left
+#undef gallop_right
+#undef ISLT
+#undef merge_at
+
+#define binarysort     binarysort_hge_rev
+#define do_ssort       do_ssort_hge_rev
+#define gallop_left    gallop_left_hge_rev
+#define gallop_right   gallop_right_hge_rev
+#define ISLT           ISLT_hge_rev
+#define merge_at       merge_at_hge_rev
+#include "gdk_ssort_impl.h"
+#undef binarysort
+#undef do_ssort
+#undef gallop_left
+#undef gallop_right
+#undef ISLT
+#undef merge_at
+
+#undef COPY
+#endif
+
 #define COPY           COPY_flt
 
 #define binarysort     binarysort_flt
@@ -527,6 +570,9 @@ merge_compute_minrun(ssize_t n)
 #define do_ssort_sht   do_ssort_sht_rev
 #define do_ssort_int   do_ssort_int_rev
 #define do_ssort_lng   do_ssort_lng_rev
+#ifdef HAVE_HGE
+#define do_ssort_hge   do_ssort_hge_rev
+#endif
 #define do_ssort_flt   do_ssort_flt_rev
 #define do_ssort_dbl   do_ssort_dbl_rev
 #define do_ssort_oid   do_ssort_oid_rev
@@ -539,6 +585,9 @@ merge_compute_minrun(ssize_t n)
 #undef do_ssort_sht
 #undef do_ssort_int
 #undef do_ssort_lng
+#ifdef HAVE_HGE
+#undef do_ssort_hge
+#endif
 #undef do_ssort_flt
 #undef do_ssort_dbl
 #undef do_ssort_oid
diff --git a/gdk/gdk_ssort_impl.h b/gdk/gdk_ssort_impl.h
--- a/gdk/gdk_ssort_impl.h
+++ b/gdk/gdk_ssort_impl.h
@@ -865,6 +865,12 @@ GDKssortimpl(void *h, void *t, const voi
                if (do_ssort_lng(&ms, nremaining, lo, hi, minrun) < 0)
                        goto fail;
                break;
+#ifdef HAVE_HGE
+       case TYPE_hge:
+               if (do_ssort_hge(&ms, nremaining, lo, hi, minrun) < 0)
+                       goto fail;
+               break;
+#endif
        case TYPE_flt:
                if (do_ssort_flt(&ms, nremaining, lo, hi, minrun) < 0)
                        goto fail;
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to