name: primitive-simd version: 0.1.0.0 synopsis: SIMD data types and functions description: This package provides a lifted version of the SIMD data types and instructions from ghc-prim. . The implementation is based on type families to provide a uniform interface to all different vector types. Instances for numeric operations, 'Prim', 'Storable' and unboxed vector instances are provided. . Although not all processors support 256 or 512-bit vectors this package provides a uniform interface. Vectors which are bigger than supported are modeled by combining smaller vectors. If the same code is compiled on a computer supporting larger vectors the smaller vectors are replaced by larger vectors. . Note: This package needs to be compiled with LLVM as the NCG does not know how to deal with SIMD-instructions. If LLVM is not available, use -f no-vec to disable the use of SIMD instructions. While this will give you no speedup, it will work with plain Haskell (and should even work with GHCJS). license: BSD3 license-file: LICENSE author: Anselm Jonas Scholl maintainer: anselm.scholl@tu-harburg.de copyright: (c) 2015 Anselm Jonas Scholl category: Data build-type: Simple extra-source-files: src-generate/Generator.hs, generate.sh, src-no-vec/Data/Primitive/SIMD.hs, src-no-vec/Data/Primitive/SIMD/Class.hs, src-no-vec/Data/Primitive/SIMD/Int8X16.hs, src-no-vec/Data/Primitive/SIMD/Int8X32.hs, src-no-vec/Data/Primitive/SIMD/Int8X64.hs, src-no-vec/Data/Primitive/SIMD/Int16X8.hs, src-no-vec/Data/Primitive/SIMD/Int16X16.hs, src-no-vec/Data/Primitive/SIMD/Int16X32.hs, src-no-vec/Data/Primitive/SIMD/Int32X4.hs, src-no-vec/Data/Primitive/SIMD/Int32X8.hs, src-no-vec/Data/Primitive/SIMD/Int32X16.hs, src-no-vec/Data/Primitive/SIMD/Int64X2.hs, src-no-vec/Data/Primitive/SIMD/Int64X4.hs, src-no-vec/Data/Primitive/SIMD/Int64X8.hs, src-no-vec/Data/Primitive/SIMD/Word8X16.hs, src-no-vec/Data/Primitive/SIMD/Word8X32.hs, src-no-vec/Data/Primitive/SIMD/Word8X64.hs, src-no-vec/Data/Primitive/SIMD/Word16X8.hs, src-no-vec/Data/Primitive/SIMD/Word16X16.hs, src-no-vec/Data/Primitive/SIMD/Word16X32.hs, src-no-vec/Data/Primitive/SIMD/Word32X4.hs, src-no-vec/Data/Primitive/SIMD/Word32X8.hs, src-no-vec/Data/Primitive/SIMD/Word32X16.hs, src-no-vec/Data/Primitive/SIMD/Word64X2.hs, src-no-vec/Data/Primitive/SIMD/Word64X4.hs, src-no-vec/Data/Primitive/SIMD/Word64X8.hs, src-no-vec/Data/Primitive/SIMD/FloatX4.hs, src-no-vec/Data/Primitive/SIMD/FloatX8.hs, src-no-vec/Data/Primitive/SIMD/FloatX16.hs, src-no-vec/Data/Primitive/SIMD/DoubleX2.hs, src-no-vec/Data/Primitive/SIMD/DoubleX4.hs, src-no-vec/Data/Primitive/SIMD/DoubleX8.hs, src-no-vec/Data/Primitive/SIMD/DoubleX16.hs, src-128/Data/Primitive/SIMD.hs, src-128/Data/Primitive/SIMD/Class.hs, src-128/Data/Primitive/SIMD/Int8X16.hs, src-128/Data/Primitive/SIMD/Int8X32.hs, src-128/Data/Primitive/SIMD/Int8X64.hs, src-128/Data/Primitive/SIMD/Int16X8.hs, src-128/Data/Primitive/SIMD/Int16X16.hs, src-128/Data/Primitive/SIMD/Int16X32.hs, src-128/Data/Primitive/SIMD/Int32X4.hs, src-128/Data/Primitive/SIMD/Int32X8.hs, src-128/Data/Primitive/SIMD/Int32X16.hs, src-128/Data/Primitive/SIMD/Int64X2.hs, src-128/Data/Primitive/SIMD/Int64X4.hs, src-128/Data/Primitive/SIMD/Int64X8.hs, src-128/Data/Primitive/SIMD/Word8X16.hs, src-128/Data/Primitive/SIMD/Word8X32.hs, src-128/Data/Primitive/SIMD/Word8X64.hs, src-128/Data/Primitive/SIMD/Word16X8.hs, src-128/Data/Primitive/SIMD/Word16X16.hs, src-128/Data/Primitive/SIMD/Word16X32.hs, src-128/Data/Primitive/SIMD/Word32X4.hs, src-128/Data/Primitive/SIMD/Word32X8.hs, src-128/Data/Primitive/SIMD/Word32X16.hs, src-128/Data/Primitive/SIMD/Word64X2.hs, src-128/Data/Primitive/SIMD/Word64X4.hs, src-128/Data/Primitive/SIMD/Word64X8.hs, src-128/Data/Primitive/SIMD/FloatX4.hs, src-128/Data/Primitive/SIMD/FloatX8.hs, src-128/Data/Primitive/SIMD/FloatX16.hs, src-128/Data/Primitive/SIMD/DoubleX2.hs, src-128/Data/Primitive/SIMD/DoubleX4.hs, src-128/Data/Primitive/SIMD/DoubleX8.hs, src-128/Data/Primitive/SIMD/DoubleX16.hs, src-256/Data/Primitive/SIMD.hs, src-256/Data/Primitive/SIMD/Class.hs, src-256/Data/Primitive/SIMD/Int8X16.hs, src-256/Data/Primitive/SIMD/Int8X32.hs, src-256/Data/Primitive/SIMD/Int8X64.hs, src-256/Data/Primitive/SIMD/Int16X8.hs, src-256/Data/Primitive/SIMD/Int16X16.hs, src-256/Data/Primitive/SIMD/Int16X32.hs, src-256/Data/Primitive/SIMD/Int32X4.hs, src-256/Data/Primitive/SIMD/Int32X8.hs, src-256/Data/Primitive/SIMD/Int32X16.hs, src-256/Data/Primitive/SIMD/Int64X2.hs, src-256/Data/Primitive/SIMD/Int64X4.hs, src-256/Data/Primitive/SIMD/Int64X8.hs, src-256/Data/Primitive/SIMD/Word8X16.hs, src-256/Data/Primitive/SIMD/Word8X32.hs, src-256/Data/Primitive/SIMD/Word8X64.hs, src-256/Data/Primitive/SIMD/Word16X8.hs, src-256/Data/Primitive/SIMD/Word16X16.hs, src-256/Data/Primitive/SIMD/Word16X32.hs, src-256/Data/Primitive/SIMD/Word32X4.hs, src-256/Data/Primitive/SIMD/Word32X8.hs, src-256/Data/Primitive/SIMD/Word32X16.hs, src-256/Data/Primitive/SIMD/Word64X2.hs, src-256/Data/Primitive/SIMD/Word64X4.hs, src-256/Data/Primitive/SIMD/Word64X8.hs, src-256/Data/Primitive/SIMD/FloatX4.hs, src-256/Data/Primitive/SIMD/FloatX8.hs, src-256/Data/Primitive/SIMD/FloatX16.hs, src-256/Data/Primitive/SIMD/DoubleX2.hs, src-256/Data/Primitive/SIMD/DoubleX4.hs, src-256/Data/Primitive/SIMD/DoubleX8.hs, src-256/Data/Primitive/SIMD/DoubleX16.hs, src-512/Data/Primitive/SIMD.hs, src-512/Data/Primitive/SIMD/Class.hs, src-512/Data/Primitive/SIMD/Int8X16.hs, src-512/Data/Primitive/SIMD/Int8X32.hs, src-512/Data/Primitive/SIMD/Int8X64.hs, src-512/Data/Primitive/SIMD/Int16X8.hs, src-512/Data/Primitive/SIMD/Int16X16.hs, src-512/Data/Primitive/SIMD/Int16X32.hs, src-512/Data/Primitive/SIMD/Int32X4.hs, src-512/Data/Primitive/SIMD/Int32X8.hs, src-512/Data/Primitive/SIMD/Int32X16.hs, src-512/Data/Primitive/SIMD/Int64X2.hs, src-512/Data/Primitive/SIMD/Int64X4.hs, src-512/Data/Primitive/SIMD/Int64X8.hs, src-512/Data/Primitive/SIMD/Word8X16.hs, src-512/Data/Primitive/SIMD/Word8X32.hs, src-512/Data/Primitive/SIMD/Word8X64.hs, src-512/Data/Primitive/SIMD/Word16X8.hs, src-512/Data/Primitive/SIMD/Word16X16.hs, src-512/Data/Primitive/SIMD/Word16X32.hs, src-512/Data/Primitive/SIMD/Word32X4.hs, src-512/Data/Primitive/SIMD/Word32X8.hs, src-512/Data/Primitive/SIMD/Word32X16.hs, src-512/Data/Primitive/SIMD/Word64X2.hs, src-512/Data/Primitive/SIMD/Word64X4.hs, src-512/Data/Primitive/SIMD/Word64X8.hs, src-512/Data/Primitive/SIMD/FloatX4.hs, src-512/Data/Primitive/SIMD/FloatX8.hs, src-512/Data/Primitive/SIMD/FloatX16.hs, src-512/Data/Primitive/SIMD/DoubleX2.hs, src-512/Data/Primitive/SIMD/DoubleX4.hs, src-512/Data/Primitive/SIMD/DoubleX8.hs, src-512/Data/Primitive/SIMD/DoubleX16.hs cabal-version: >=1.10 flag no-vec Description: Disable all vector hardware instructions. Your code will run on all hardware but also be a lot slower. Default: False Manual: True flag vec256 Description: Enable 256-bit vector hardware instructions. Your code will only run if your CPU supports 256-bit vector instructions. Default: False Manual: True flag vec512 Description: Enable 512-bit vector hardware instructions. Your code will only run if your CPU supports 512-bit vector instructions. Default: False Manual: True library exposed-modules: Data.Primitive.SIMD other-modules: Data.Primitive.SIMD.Class Data.Primitive.SIMD.Int8X16 Data.Primitive.SIMD.Int8X32 Data.Primitive.SIMD.Int8X64 Data.Primitive.SIMD.Int16X8 Data.Primitive.SIMD.Int16X16 Data.Primitive.SIMD.Int16X32 Data.Primitive.SIMD.Int32X4 Data.Primitive.SIMD.Int32X8 Data.Primitive.SIMD.Int32X16 Data.Primitive.SIMD.Int64X2 Data.Primitive.SIMD.Int64X4 Data.Primitive.SIMD.Int64X8 Data.Primitive.SIMD.Word8X16 Data.Primitive.SIMD.Word8X32 Data.Primitive.SIMD.Word8X64 Data.Primitive.SIMD.Word16X8 Data.Primitive.SIMD.Word16X16 Data.Primitive.SIMD.Word16X32 Data.Primitive.SIMD.Word32X4 Data.Primitive.SIMD.Word32X8 Data.Primitive.SIMD.Word32X16 Data.Primitive.SIMD.Word64X2 Data.Primitive.SIMD.Word64X4 Data.Primitive.SIMD.Word64X8 Data.Primitive.SIMD.FloatX4 Data.Primitive.SIMD.FloatX8 Data.Primitive.SIMD.FloatX16 Data.Primitive.SIMD.DoubleX2 Data.Primitive.SIMD.DoubleX4 Data.Primitive.SIMD.DoubleX8 Data.Primitive.SIMD.DoubleX16 other-extensions: UnboxedTuples, MagicHash, TypeFamilies, DeriveDataTypeable, BangPatterns, MultiParamTypeClasses, CPP build-depends: base >=4.7 && < 5, ghc-prim >= 0.3.1, primitive >= 0.5, vector >= 0.10 if flag(no-vec) hs-source-dirs: src-no-vec else ghc-options: -fllvm if flag(vec512) hs-source-dirs: src-512 ghc-options: -mavx512f else if flag(vec256) hs-source-dirs: src-256 ghc-options: -mavx2 else hs-source-dirs: src-128 ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-record-updates -fwarn-monomorphism-restriction -fwarn-incomplete-uni-patterns default-language: Haskell2010 benchmark bench type: exitcode-stdio-1.0 main-is: Bench.hs hs-source-dirs: bench ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-record-updates -fwarn-monomorphism-restriction -fwarn-incomplete-uni-patterns ghc-options: -fllvm default-language: Haskell2010 build-depends: base >= 4.6 && < 5, primitive-simd, criterion, vector, deepseq, random source-repository head type: git location: git://github.com/ajscholl/primitive-simd.git