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

finished int128 / "hge" support in gdk/gdk_calc.c:

now, also multiplication is done.


diffs (truncated from 899 to 300 lines):

diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -4542,6 +4542,40 @@ mul_##TYPE1##_##TYPE2##_##TYPE3(const TY
        return nils;                                                    \
 }
 
+#ifdef HAVE_HGE
+
+#define MUL_2TYPE_hge(TYPE1, TYPE2)                                    \
+static BUN                                                             \
+mul_##TYPE1##_##TYPE2##_hge(const TYPE1 *lft, int incr1,               \
+                           const TYPE2 *rgt, int incr2,                \
+                           hge *dst, BUN cnt, BUN start,               \
+                           BUN end, const oid *cand,                   \
+                           const oid *candend, oid candoff,            \
+                           int abort_on_error)                         \
+{                                                                      \
+       BUN i, j, k;                                                    \
+       BUN nils = 0;                                                   \
+                                                                       \
+       CANDLOOP(dst, k, hge_nil, 0, start);                            \
+       for (i = start * incr1, j = start * incr2, k = start;           \
+            k < end; i += incr1, j += incr2, k++) {                    \
+               CHECKCAND(dst, k, candoff, hge_nil);                    \
+               if (lft[i] == TYPE1##_nil || rgt[j] == TYPE2##_nil) {   \
+                       dst[k] = hge_nil;                               \
+                       nils++;                                         \
+               } else {                                                \
+                       HGEMUL_CHECK(TYPE1, lft[i],                     \
+                                    TYPE2, rgt[j],                     \
+                                    dst[k],                            \
+                                    ON_OVERFLOW(TYPE1, TYPE2, "*"));   \
+               }                                                       \
+       }                                                               \
+       CANDLOOP(dst, k, hge_nil, end, cnt);                            \
+       return nils;                                                    \
+}
+
+#else
+
 #ifdef HAVE__MUL128
 #include <intrin.h>
 #pragma intrinsic(_mul128)
@@ -4615,6 +4649,8 @@ mul_##TYPE1##_##TYPE2##_lng(const TYPE1 
 }
 #endif
 
+#endif
+
 #define MUL_2TYPE_float(TYPE1, TYPE2, TYPE3)                           \
 static BUN                                                             \
 mul_##TYPE1##_##TYPE2##_##TYPE3(const TYPE1 *lft, int incr1,           \
@@ -4656,6 +4692,9 @@ MUL_3TYPE_enlarge(bte, bte, sht)
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(bte, bte, int)
 MUL_3TYPE_enlarge(bte, bte, lng)
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(bte, bte, hge)
+#endif
 MUL_3TYPE_enlarge(bte, bte, flt)
 MUL_3TYPE_enlarge(bte, bte, dbl)
 #endif
@@ -4663,24 +4702,40 @@ MUL_4TYPE(bte, sht, sht, int)
 MUL_3TYPE_enlarge(bte, sht, int)
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(bte, sht, lng)
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(bte, sht, hge)
+#endif
 MUL_3TYPE_enlarge(bte, sht, flt)
 MUL_3TYPE_enlarge(bte, sht, dbl)
 #endif
 MUL_4TYPE(bte, int, int, lng)
 MUL_3TYPE_enlarge(bte, int, lng)
 #ifdef FULL_IMPLEMENTATION
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(bte, int, hge)
+#endif
 MUL_3TYPE_enlarge(bte, int, flt)
 MUL_3TYPE_enlarge(bte, int, dbl)
 #endif
-#ifdef HAVE___INT128
-MUL_4TYPE(bte, lng, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(bte, lng, lng, hge)
 #else
 MUL_2TYPE_lng(bte, lng)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(bte, lng, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(bte, lng, flt)
 MUL_3TYPE_enlarge(bte, lng, dbl)
 #endif
+#ifdef HAVE_HGE
+MUL_2TYPE_hge(bte, hge)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(bte, hge, flt)
+MUL_3TYPE_enlarge(bte, hge, dbl)
+#endif
+#endif
 MUL_2TYPE_float(bte, flt, flt)
 MUL_3TYPE_enlarge(bte, flt, dbl)
 MUL_2TYPE_float(bte, dbl, dbl)
@@ -4688,6 +4743,9 @@ MUL_4TYPE(sht, bte, sht, int)
 MUL_3TYPE_enlarge(sht, bte, int)
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(sht, bte, lng)
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(sht, bte, hge)
+#endif
 MUL_3TYPE_enlarge(sht, bte, flt)
 MUL_3TYPE_enlarge(sht, bte, dbl)
 #endif
@@ -4695,96 +4753,180 @@ MUL_4TYPE(sht, sht, sht, int)
 MUL_3TYPE_enlarge(sht, sht, int)
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(sht, sht, lng)
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(sht, sht, hge)
+#endif
 MUL_3TYPE_enlarge(sht, sht, flt)
 MUL_3TYPE_enlarge(sht, sht, dbl)
 #endif
 MUL_4TYPE(sht, int, int, lng)
 MUL_3TYPE_enlarge(sht, int, lng)
 #ifdef FULL_IMPLEMENTATION
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(sht, int, hge)
+#endif
 MUL_3TYPE_enlarge(sht, int, flt)
 MUL_3TYPE_enlarge(sht, int, dbl)
 #endif
-#ifdef HAVE___INT128
-MUL_4TYPE(sht, lng, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(sht, lng, lng, hge)
 #else
 MUL_2TYPE_lng(sht, lng)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(sht, lng, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(sht, lng, flt)
 MUL_3TYPE_enlarge(sht, lng, dbl)
 #endif
+#ifdef HAVE_HGE
+MUL_2TYPE_hge(sht, hge)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(sht, hge, flt)
+MUL_3TYPE_enlarge(sht, hge, dbl)
+#endif
+#endif
 MUL_2TYPE_float(sht, flt, flt)
 MUL_3TYPE_enlarge(sht, flt, dbl)
 MUL_2TYPE_float(sht, dbl, dbl)
 MUL_4TYPE(int, bte, int, lng)
 MUL_3TYPE_enlarge(int, bte, lng)
 #ifdef FULL_IMPLEMENTATION
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(int, bte, hge)
+#endif
 MUL_3TYPE_enlarge(int, bte, flt)
 MUL_3TYPE_enlarge(int, bte, dbl)
 #endif
 MUL_4TYPE(int, sht, int, lng)
 MUL_3TYPE_enlarge(int, sht, lng)
 #ifdef FULL_IMPLEMENTATION
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(int, sht, hge)
+#endif
 MUL_3TYPE_enlarge(int, sht, flt)
 MUL_3TYPE_enlarge(int, sht, dbl)
 #endif
 MUL_4TYPE(int, int, int, lng)
 MUL_3TYPE_enlarge(int, int, lng)
 #ifdef FULL_IMPLEMENTATION
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(int, int, hge)
+#endif
 MUL_3TYPE_enlarge(int, int, flt)
 MUL_3TYPE_enlarge(int, int, dbl)
 #endif
-#ifdef HAVE___INT128
-MUL_4TYPE(int, lng, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(int, lng, lng, hge)
 #else
 MUL_2TYPE_lng(int, lng)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(int, lng, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(int, lng, flt)
 MUL_3TYPE_enlarge(int, lng, dbl)
 #endif
+#ifdef HAVE_HGE
+MUL_2TYPE_hge(int, hge)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(int, hge, flt)
+MUL_3TYPE_enlarge(int, hge, dbl)
+#endif
+#endif
 MUL_2TYPE_float(int, flt, flt)
 MUL_3TYPE_enlarge(int, flt, dbl)
 MUL_2TYPE_float(int, dbl, dbl)
-#ifdef HAVE___INT128
-MUL_4TYPE(lng, bte, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(lng, bte, lng, hge)
 #else
 MUL_2TYPE_lng(lng, bte)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(lng, bte, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(lng, bte, flt)
 MUL_3TYPE_enlarge(lng, bte, dbl)
 #endif
-#ifdef HAVE___INT128
-MUL_4TYPE(lng, sht, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(lng, sht, lng, hge)
 #else
 MUL_2TYPE_lng(lng, sht)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(lng, sht, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(lng, sht, flt)
 MUL_3TYPE_enlarge(lng, sht, dbl)
 #endif
-#ifdef HAVE___INT128
-MUL_4TYPE(lng, int, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(lng, int, lng, hge)
 #else
 MUL_2TYPE_lng(lng, int)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(lng, int, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(lng, int, flt)
 MUL_3TYPE_enlarge(lng, int, dbl)
 #endif
-#ifdef HAVE___INT128
-MUL_4TYPE(lng, lng, lng, __int128)
+#ifdef HAVE_HGE
+MUL_4TYPE(lng, lng, lng, hge)
 #else
 MUL_2TYPE_lng(lng, lng)
 #endif
+#ifdef HAVE_HGE
+MUL_3TYPE_enlarge(lng, lng, hge)
+#endif
 #ifdef FULL_IMPLEMENTATION
 MUL_3TYPE_enlarge(lng, lng, flt)
 MUL_3TYPE_enlarge(lng, lng, dbl)
 #endif
+#ifdef HAVE_HGE
+MUL_2TYPE_hge(lng, hge)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(lng, hge, flt)
+MUL_3TYPE_enlarge(lng, hge, dbl)
+#endif
+#endif
 MUL_2TYPE_float(lng, flt, flt)
 MUL_3TYPE_enlarge(lng, flt, dbl)
 MUL_2TYPE_float(lng, dbl, dbl)
+#ifdef HAVE_HGE
+MUL_2TYPE_hge(hge, bte)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(hge, bte, flt)
+MUL_3TYPE_enlarge(hge, bte, dbl)
+#endif
+MUL_2TYPE_hge(hge, sht)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(hge, sht, flt)
+MUL_3TYPE_enlarge(hge, sht, dbl)
+#endif
+MUL_2TYPE_hge(hge, int)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(hge, int, flt)
+MUL_3TYPE_enlarge(hge, int, dbl)
+#endif
+MUL_2TYPE_hge(hge, lng)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(hge, lng, flt)
+MUL_3TYPE_enlarge(hge, lng, dbl)
+#endif
+MUL_2TYPE_hge(hge, hge)
+#ifdef FULL_IMPLEMENTATION
+MUL_3TYPE_enlarge(hge, hge, flt)
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to