Skip to content

reedsolomon-0.0.4.0

Compare
Choose a tag to compare
@NicolasT NicolasT released this 13 Mar 22:59
· 32 commits to master since this release

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.