-- This file has been generated from package.yaml by hpack version 0.18.1.
--
-- see: https://github.com/sol/hpack

name:           hw-simd
version:        0.0.0.3
synopsis:       SIMD library
description:    Please see the README on Github at <https://github.com/haskell-works/hw-simd#readme>
category:       Text, Web, CSV
homepage:       https://github.com/haskell-works/hw-simd#readme
bug-reports:    https://github.com/haskell-works/hw-simd/issues
author:         John Ky
maintainer:     newhoggy@gmail.com
copyright:      2018 John Ky
license:        BSD3
license-file:   LICENSE
tested-with:    GHC == 8.4.3, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3
build-type:     Simple
cabal-version:  >= 1.10

extra-source-files:
    cbits/simd.h
    ChangeLog.md
    README.md

source-repository head
  type: git
  location: https://github.com/haskell-works/hw-simd

flag avx2
  description: Enable avx2 instruction set
  manual: False
  default: False

flag bmi2
  description: Enable bmi2 instruction set
  manual: False
  default: False

flag sse42
  description: Enable SSE 4.2 optimisations.
  manual: False
  default: True

library
  hs-source-dirs:
      src
  ghc-options: -O2 -Wall
  include-dirs:
      cbits
  c-sources:
      cbits/simd.c
  build-depends:
      base                  >= 4.7      && < 5
    , bits-extra            >= 0.0.1.2  && < 0.1
    , bytestring            >= 0.10     && < 0.11
    , deepseq               >= 1.4      && < 1.5
    , hw-bits               >= 0.7.0.2  && < 0.8
    , hw-rankselect         >= 0.12.0.2 && < 0.13
    , hw-rankselect-base    >= 0.3.2.0  && < 0.4
    , hw-prim               >= 0.6.2.0  && < 0.7
    , vector                >= 0.12.0.1 && < 0.13
  build-tools:
      c2hs
  if flag(sse42)
    ghc-options: -msse4.2
    cc-options: -msse4.2
  if flag(bmi2)
    cc-options: -mbmi2 -DBMI2_ENABLED
  if (flag(bmi2)) && (impl(ghc >=8.4.1))
    ghc-options: -mbmi2 -msse4.2
  if flag(avx2)
    cc-options: -mavx2 -DAVX2_ENABLED
  if (flag(avx2)) && (impl(ghc >=8.4.1))
    ghc-options: -mbmi2 -msse4.2
    cpp-options: -DBMI2_ENABLED -DAVX2_ENABLED
  if (impl(ghc >=8.0.1))
    ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
  if (!impl(ghc >=8.0.1))
    build-depends:
        transformers          >= 0.4        && < 0.6
      , semigroups            >= 0.8.4      && < 0.19
  exposed-modules:
      HaskellWorks.Data.Simd.Capabilities
      HaskellWorks.Data.Simd.Comparison
      HaskellWorks.Data.Simd.Comparison.Avx2
      HaskellWorks.Data.Simd.Comparison.Stock
      HaskellWorks.Data.Simd.Internal.Bits
      HaskellWorks.Data.Simd.Internal.Broadword
      HaskellWorks.Data.Simd.Internal.ByteString
      HaskellWorks.Data.Simd.Internal.ByteString.Lazy
      HaskellWorks.Data.Simd.Internal.Foreign
  other-modules:
      Paths_hw_simd
  default-language: Haskell2010

test-suite hw-simd-test
  type: exitcode-stdio-1.0
  main-is: Spec.hs
  hs-source-dirs:
      test
  ghc-options: -O2 -Wall -threaded -rtsopts -with-rtsopts=-N
  build-depends:
      base                  >= 4.7      && < 5
    , bits-extra            >= 0.0.1.2  && < 0.1
    , bytestring            >= 0.10     && < 0.11
    , deepseq               >= 1.4      && < 1.5
    , hw-bits               >= 0.7.0.2  && < 0.8
    , hw-rankselect         >= 0.12.0.2 && < 0.13
    , hw-rankselect-base    >= 0.3.2.0  && < 0.4
    , hw-prim               >= 0.6.2.0  && < 0.7
    , vector                >= 0.12.0.1 && < 0.13
    , directory               >= 1.2.2      && < 1.4
    , hw-simd
    , hedgehog                >= 0.5        && < 0.7
    , hspec                   >= 2.4        && < 3
    , hw-hspec-hedgehog       >= 0.1.0.4    && < 0.2
    , text                    >= 1.2.2      && < 2.0
  if flag(sse42)
    ghc-options: -msse4.2
    cc-options: -msse4.2
  if flag(bmi2)
    cc-options: -mbmi2 -DBMI2_ENABLED
  if (flag(bmi2)) && (impl(ghc >=8.4.1))
    ghc-options: -mbmi2 -msse4.2
  if flag(avx2)
    cc-options: -mavx2 -DAVX2_ENABLED
  if (flag(avx2)) && (impl(ghc >=8.4.1))
    ghc-options: -mbmi2 -msse4.2
    cpp-options: -DBMI2_ENABLED -DAVX2_ENABLED
  if (impl(ghc >=8.0.1))
    ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
  if (!impl(ghc >=8.0.1))
    build-depends:
        transformers          >= 0.4        && < 0.6
      , semigroups            >= 0.8.4      && < 0.19
  other-modules:
      HaskellWorks.Data.Simd.BroadwordSpec
  default-language: Haskell2010

benchmark bench
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs:
      bench
  ghc-options: -O2 -Wall -msse4.2
  build-depends:
      base                  >= 4.7      && < 5
    , bits-extra            >= 0.0.1.2  && < 0.1
    , bytestring            >= 0.10     && < 0.11
    , deepseq               >= 1.4      && < 1.5
    , hw-bits               >= 0.7.0.2  && < 0.8
    , hw-rankselect         >= 0.12.0.2 && < 0.13
    , hw-rankselect-base    >= 0.3.2.0  && < 0.4
    , hw-prim               >= 0.6.2.0  && < 0.7
    , vector                >= 0.12.0.1 && < 0.13
    , cassava               >= 0.5.1.0    && < 0.6
    , containers
    , criterion             >= 1.4.1.0    && < 1.5
    , directory             >= 1.3.1.5    && < 1.4
    , hw-simd
    , mmap                  >= 0.5.9      && < 0.6
  if flag(sse42)
    ghc-options: -msse4.2
    cc-options: -msse4.2
  if flag(bmi2)
    cc-options: -mbmi2 -DBMI2_ENABLED
  if (flag(bmi2)) && (impl(ghc >=8.4.1))
    ghc-options: -mbmi2 -msse4.2
  if flag(avx2)
    cc-options: -mavx2 -DAVX2_ENABLED
  if (flag(avx2)) && (impl(ghc >=8.4.1))
    ghc-options: -mbmi2 -msse4.2
    cpp-options: -DBMI2_ENABLED -DAVX2_ENABLED
  if (impl(ghc >=8.0.1))
    ghc-options: -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
  if (!impl(ghc >=8.0.1))
    build-depends:
        transformers          >= 0.4        && < 0.6
      , semigroups            >= 0.8.4      && < 0.19
  default-language: Haskell2010