reedsolomon-0.0.4.0
Highlights since version 0.0.3.0:
SIMD support for ARM NEON and PowerPC AltiVec
The Galois field multiplication code implemented in C to optimize these calculations compared to native Haskell functions used to provide a generic implementation, and SIMD implementations for Intel SSSE3, AVX and AVX2.
The generic implementation was supposed to work on non-Intel platforms, but is significantly slower than the SIMD versions. This version of the library is the first to contain SIMD versions of the code for non-Intel platforms:
- ARM NEON
- ARM NEON, optimized for AArch64 using
vqtbl1q_u8
- PowerPC AltiVec
- PowerPC AltiVec, optimized for POWER8 using
vec_vsrd
Note: The library is tested on these platforms only at the C level by running some tests using Qemu's platform emulation, which could not trigger certain bugs. If you want to use this library on a foreign platform, make sure to run the full (Haskell) test-suite on it.
Examples are no longer built and installed by default
When building the library (e.g. as a dependency of your application), the examples shipped with the library are no longer built and installed by default. Enable the Cabal examples
flag to build and install them anyway.
Extended configure
checks and refactored C code
The configure
script has been extended, some bugs in it have been fixed, and the C code in cbits
was refactored to make it simpler and more maintainable, and allow the C compiler to perform more optimizations.