packages feed

hashtables 1.0.1.0 → 1.0.1.1

raw patch · 2 files changed

+23/−13 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

cbits/cfuncs.c view
@@ -1,13 +1,16 @@ #include <signal.h> #include <stdint.h> #include <stdio.h>+#ifdef WIN32+#include <windows.h>+#else #include <unistd.h>+#endif  #if defined(USE_SSE_4_1) #include <smmintrin.h> #endif - #if defined(__GNUC__) #define PREFETCH_READ(x) (__builtin_prefetch(x, 0, 3)) #define PREFETCH_WRITE(x) (__builtin_prefetch(x, 1, 3))@@ -233,7 +236,7 @@     case 14: m |= (mask(*p, x1) | mask(*p, x2) | mask(*p, x3)) & 0x4000; ++p;     case 15: m |= (mask(*p, x1) | mask(*p, x2) | mask(*p, x3)) & 0x8000; ++p;     }-    +     return m >> offset; } @@ -289,7 +292,7 @@ uint64_t lineMask64(uint64_t* array, int start0, uint64_t v1) {     int offset = start0 & 0x7;     int start  = start0 & ~0x7;-    +     __m128i* p = (__m128i*) (&array[start]);     __m128i x1 = _mm_cvtsi32_si128(0);     x1 = _mm_insert_epi64(x1, v1, 0);@@ -297,7 +300,7 @@     uint64_t dest_mask = 0;      // x1 contains two 64-bit copies of the value to look for-    +     // words 0, 1     __m128i x = _mm_load_si128(p);     dest_mask = cmp_and_mask(x, x1);@@ -312,7 +315,7 @@     x = _mm_load_si128(p);     dest_mask |= (cmp_and_mask(x, x1) << 4);     p = (__m128i*) (&array[start+6]);-    +     // words 6, 7     x = _mm_load_si128(p);     dest_mask |= (cmp_and_mask(x, x1) << 6);@@ -324,7 +327,7 @@ uint64_t lineMask64_2(uint64_t* array, int start0, uint64_t v1, uint64_t v2) {     int offset = start0 & 0x7;     int start  = start0 & ~0x7;-    +     __m128i* p = (__m128i*) (&array[start]);     __m128i x1 = _mm_cvtsi32_si128(0);     x1 = _mm_insert_epi64(x1, v1, 0);@@ -350,7 +353,7 @@     x = _mm_load_si128(p);     dest_mask |= (cmp_and_mask_2(x, x1, x2) << 4);     p = (__m128i*) (&array[start+6]);-    +     // words 6, 7     x = _mm_load_si128(p);     dest_mask |= (cmp_and_mask_2(x, x1, x2) << 6);@@ -363,7 +366,7 @@                       uint64_t v1, uint64_t v2, uint64_t v3) {     int offset = start0 & 0x7;     int start  = start0 & ~0x7;-    +     __m128i* p = (__m128i*) (&array[start]);     __m128i x1 = _mm_cvtsi32_si128(0);     x1 = _mm_insert_epi64(x1, v1, 0);@@ -393,7 +396,7 @@     x = _mm_load_si128(p);     dest_mask |= (cmp_and_mask_3(x, x1, x2, x3) << 4);     p = (__m128i*) (&array[start+6]);-    +     // words 6, 7     x = _mm_load_si128(p);     dest_mask |= (cmp_and_mask_3(x, x1, x2, x3) << 6);@@ -462,7 +465,7 @@     case 6: m |= (mask(*p, x1) | mask(*p, x2) | mask(*p, x3)) & 0x40; ++p;     case 7: m |= (mask(*p, x1) | mask(*p, x2) | mask(*p, x3)) & 0x80; ++p;     }-    +     return m >> offset; } @@ -498,10 +501,17 @@ void suicide(volatile int* check, int t) {     int secs = (3*t + 999999) / 1000000;     if (secs < 1) secs = 1;-+#ifdef WIN32+    Sleep(secs * 1000);+#else     sleep(secs);+#endif     if (*check) {         printf("timeout expired, dying!!\n");+#ifdef WIN32+        abort();+#else         raise(SIGKILL);+#endif     } }
hashtables.cabal view
@@ -1,5 +1,5 @@ Name:                hashtables-Version:             1.0.1.0+Version:             1.0.1.1 Synopsis:            Mutable hash tables in the ST monad Homepage:            http://github.com/gregorycollins/hashtables License:             BSD3@@ -46,7 +46,7 @@        and lookup performance for higher space efficiency and much shorter        delays when expanding the table. In most cases, benchmarks show this        table to be currently slightly faster than @Data.HashTable@ from the-       Haskell base library. +       Haskell base library.   .   It is recommended to create a concrete type alias in your code when using this   package, i.e.: