packages feed

hw-simd 0.1.1.1 → 0.1.1.2

raw patch · 2 files changed

+24/−24 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

cbits/simd_avx2.c view
@@ -39,15 +39,15 @@ #if defined(AVX2_ENABLED)   uint32_t *target32 = (uint32_t *)target; -  __m256 v_comparand = _mm256_set1_epi8(byte);+  __m256i v_comparand = _mm256_set1_epi8(byte);    uint32_t *out_mask = (uint32_t*)target;    size_t i;    for (i = 0; i < target_length * 2; ++i) {-    __m256 v_data_a = *(__m256*)(source + (i * 32));-    __m256 v_results_a = _mm256_cmpeq_epi8(v_data_a, v_comparand);+    __m256i v_data_a = *(__m256i *)(source + (i * 32));+    __m256i v_results_a = _mm256_cmpeq_epi8(v_data_a, v_comparand);     uint32_t mask = (uint32_t)_mm256_movemask_epi8(v_results_a);     target32[i] = mask;   }@@ -63,10 +63,10 @@   size_t i;    for (i = 0; i < target_length; i += 32) {-    __m256 v_data_a   = *(__m256*)(source_a + i);-    __m256 v_data_b   = *(__m256*)(source_b + i);-    __m256 v_results  = _mm256_and_si256(v_data_a, v_data_b);-    *(__m256*)(target + i) = v_results;+    __m256i v_data_a   = *(__m256i *)(source_a + i);+    __m256i v_data_b   = *(__m256i *)(source_b + i);+    __m256i v_results  = _mm256_and_si256(v_data_a, v_data_b);+    *(__m256i *)(target + i) = v_results;   } #endif }@@ -80,10 +80,10 @@   size_t i;    for (i = 0; i < target_length; i += 32) {-    __m256 v_data_a   = *(__m256*)(source_a + i);-    __m256 v_data_b   = *(__m256*)(source_b + i);-    __m256 v_results  = _mm256_andnot_si256(v_data_a, v_data_b);-    *(__m256*)(target + i) = v_results;+    __m256i v_data_a   = *(__m256i *)(source_a + i);+    __m256i v_data_b   = *(__m256i *)(source_b + i);+    __m256i v_results  = _mm256_andnot_si256(v_data_a, v_data_b);+    *(__m256i *)(target + i) = v_results;   } #endif }@@ -93,14 +93,14 @@     size_t target_length,     uint8_t *source) { #if defined(AVX2_ENABLED)-  __m256 ones = _mm256_set1_epi8(0xff);+  __m256i ones = _mm256_set1_epi8(0xff);    size_t i;    for (i = 0; i < target_length; i += 32) {-    __m256 v_data     = *(__m256*)(source + i);-    __m256 v_results  = _mm256_xor_si256(v_data, ones);-    *(__m256*)(target + i) = v_results;+    __m256i v_data     = *(__m256i *)(source + i);+    __m256i v_results  = _mm256_xor_si256(v_data, ones);+    *(__m256i *)(target + i) = v_results;   } #endif }@@ -114,10 +114,10 @@   size_t i;    for (i = 0; i < target_length; i += 32) {-    __m256 v_data_a   = *(__m256*)(source_a + i);-    __m256 v_data_b   = *(__m256*)(source_b + i);-    __m256 v_results  = _mm256_or_si256(v_data_a, v_data_b);-    *(__m256*)(target + i) = v_results;+    __m256i v_data_a   = *(__m256i *)(source_a + i);+    __m256i v_data_b   = *(__m256i *)(source_b + i);+    __m256i v_results  = _mm256_or_si256(v_data_a, v_data_b);+    *(__m256i *)(target + i) = v_results;   } #endif }@@ -131,10 +131,10 @@   size_t i;    for (i = 0; i < target_length; i += 32) {-    __m256 v_data_a   = *(__m256*)(source_a + i);-    __m256 v_data_b   = *(__m256*)(source_b + i);-    __m256 v_results  = _mm256_xor_si256(v_data_a, v_data_b);-    *(__m256*)(target + i) = v_results;+    __m256i v_data_a   = *(__m256i *)(source_a + i);+    __m256i v_data_b   = *(__m256i *)(source_b + i);+    __m256i v_results  = _mm256_xor_si256(v_data_a, v_data_b);+    *(__m256i *)(target + i) = v_results;   } #endif }
hw-simd.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           hw-simd-version:        0.1.1.1+version:        0.1.1.2 synopsis:       SIMD library description:    Please see the README on Github at <https://github.com/haskell-works/hw-simd#readme> category:       Data, Bit, SIMD