packages feed

llvm-extra-0.7.2: llvm-extra.cabal

Name:           llvm-extra
Version:        0.7.2
License:        BSD3
License-File:   LICENSE
Author:         Henning Thielemann <haskell@henning-thielemann.de>
Maintainer:     Henning Thielemann <haskell@henning-thielemann.de>
Homepage:       https://wiki.haskell.org/LLVM
Category:       Compilers/Interpreters, Code Generation
Synopsis:       Utility functions for the llvm interface
Description:
  The Low-Level Virtual-Machine is a compiler back-end with optimizer.
  You may also call it a high-level portable assembler.
  This package provides various utility functions
  for the Haskell interface to LLVM, for example:
  .
  * arithmetic operations with more general types
    but better type inference than the @llvm@ interface
    in "LLVM.Extra.Arithmetic",
  .
  * a type class for loading and storing sets of values with one command (macro)
    in "LLVM.Extra.Memory",
  .
  * support instance declarations of LLVM classes
    in "LLVM.Extra.Class",
  .
  * handling of termination by a custom monad on top of @CodeGenFunction@
    in "LLVM.Extra.MaybeContinuation"
  .
  * various kinds of loops (while) and condition structures (if-then-else)
    in "LLVM.Extra.Control"
  .
  * automatic adaption to target specific extensions,
    currently used for access of vector operations
    that are specific to an SSE level on x86 processors
    in "LLVM.Extra.Extension"
    (On x86 architectures we depend on the cpuid package
     that is needed for automatic detection of available features.)
  .
  * advanced vector operations
    such as sum of all vector elements, cumulative sum,
    floor, non-negative fraction, absolute value
    in "LLVM.Extra.Vector"
  .
  * type classes for handling scalar and vector operations
    in a uniform way
    in "LLVM.Extra.ScalarOrVector"
  .
  * a Makefile and a description
    of how to run LLVM code from within GHCi.
Stability:      Experimental
Tested-With:    GHC==6.10.4, GHC==6.12.3
Tested-With:    GHC==7.0.4, GHC==7.4.1, GHC==7.6.3
Cabal-Version:  >=1.14
Build-Type:     Simple
Extra-Source-Files:
  Makefile
  Problems.txt
  x86/cpuid/LLVM/Extra/ExtensionCheck/X86.hs
  x86/none/LLVM/Extra/ExtensionCheck/X86.hs

Flag buildExamples
  description: Build example executables
  default:     False

Flag buildTools
  description: Build intrinsic translator
  default:     False

Flag cpuid
  description: Use CPUID for host feature detection if available on the architecture
  default:     True

Source-Repository this
  Tag:         0.7.2
  Type:        darcs
  Location:    http://code.haskell.org/~thielema/llvm-extra/

Source-Repository head
  Type:        darcs
  Location:    http://code.haskell.org/~thielema/llvm-extra/

Library
  Build-Depends:
    -- llvm must be imported with restrictive version bounds,
    -- because we import implicitly and unqualified
    llvm-tf >=3.0.3 && <3.2,
    tfp >=1.0 && <1.1,
    non-empty >=0.2.1 && <0.4,
    containers >=0.1 && <0.6,
    transformers >=0.1.1 && <0.6,
    utility-ht >=0.0.1 && <0.1

  Build-Depends:
    base >=3 && <5

  If (arch(i386) || arch(x86_64)) && flag(cpuid)
    Build-Depends:
      unsafe >=0.0 && <0.1,
      cpuid >=0.2.3 && <0.3
    Hs-Source-Dirs: x86/cpuid
  Else
    -- Instead of calling the cpuid instruction directly
    -- we may ask LLVM's Subtarget detection.
    -- This would also enable cross compilation.
    -- However in LLVM-2.6 this is only available in the C++ interface.
    Hs-Source-Dirs: x86/none

  Default-Language: Haskell98
  GHC-Options: -Wall
  Hs-source-dirs: src
  Exposed-Modules:
    LLVM.Extra.Arithmetic
    LLVM.Extra.Monad
    LLVM.Extra.Memory
    LLVM.Extra.Maybe
    LLVM.Extra.MaybeContinuation
    LLVM.Extra.Either
    LLVM.Extra.Class
    LLVM.Extra.Control
    LLVM.Extra.Extension
    LLVM.Extra.Extension.X86
    LLVM.Extra.ExtensionCheck.X86
    LLVM.Extra.Array
    LLVM.Extra.Scalar
    LLVM.Extra.Vector
    LLVM.Extra.ScalarOrVector
    LLVM.Extra.Multi.Value
    LLVM.Extra.Multi.Value.Memory
    LLVM.Extra.Multi.Vector
    LLVM.Extra.Multi.Vector.Memory
    LLVM.Extra.Multi.Class
  Other-Modules:
    LLVM.Extra.ArithmeticPrivate
    LLVM.Extra.MaybePrivate
    LLVM.Extra.EitherPrivate
    LLVM.Extra.MemoryPrivate
    LLVM.Extra.Extension.X86Auto

Executable tone-llvm
  If flag(buildExamples)
    Build-Depends:
      llvm-extra,
      llvm-tf,
      tfp,
      non-empty,
      containers >=0.1 && <0.6,
      transformers,
      utility-ht >=0.0.1 && <0.1,
      base >=3 && <5
  Else
    Buildable: False
  Default-Language: Haskell98
  GHC-Options: -Wall
  Main-Is: src/Array.hs

Executable prepare-intrinsics
  If flag(buildTools)
    Build-Depends:
      parsec >=2.1 && <3.2,
      containers >=0.1 && <0.6,
      transformers,
      utility-ht >=0.0.1 && <0.1,
      base >=3 && <5
  Else
    Buildable: False
  Default-Language: Haskell98
  GHC-Options: -Wall
  Main-Is: src/PrepareIntrinsics.hs