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 +23/−23
- hw-simd.cabal +1/−1
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