The goal of the SIMD project is to allow GHC and Haskell libraries to take advantage of SIMD vector instructions. Please see the proposed design and the current implementation status for further details.
Building the SIMD branch
SIMD support currently requires a version of ghc built from the simd branch. Vectors primops only work when compiling with -fllvm. You will also need patched versions of the dph and vector libraries. Here are the steps to get the SIMD branch up and running.
- Set up a ghc tree as you normally would. See Building/GettingTheSources. Be sure to checkout out the simd branch, e.g.,
$ git clone -b simd http://darcs.haskell.org/ghc.git/
- Replace libraries/dph with the simd branch checked out from email@example.com:mainland/dph.git.
- Replace libraries/vector with the simd branch checked out from firstname.lastname@example.org:mainland/vector.git.
- Use the fingerprint.py script to set your repository state to match the simd branch. The fingerint file is located in the github repository mainland/ghc-simd-test here.
$ ./utils/fingerprint/fingerprint.py restore -f simd.fp
- Configure and build as you would normally (see Building), but choose the perf-llvm BuildFlavour in your mk/build.mk file.