llvm-extra-0.13.0.1: llvm-extra.cabal
Cabal-Version: 2.2
Name: llvm-extra
Version: 0.13.0.1
License: BSD-3-Clause
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",
.
* storing and reading Haskell values in an LLVM compatible format
in "LLVM.Extra.Marshal",
.
* LLVM functions for loading and storing values in Haskell's @Storable@ format
in "LLVM.Extra.Storable",
.
* support value tuples and instance declarations of LLVM classes
in "LLVM.Extra.Tuple",
.
* 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"
.
* more functional loop construction using "LLVM.Extra.Iterator"
.
* complex Haskell values mapped to LLVM values in "LLVM.Extra.Nice.Value"
.
* 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"
Stability: Experimental
Tested-With: GHC==7.0.4, GHC==7.4.2, GHC==7.8.4
Tested-With: GHC==8.4.4, GHC==8.6.5, GHC==8.8.1
Build-Type: Simple
Extra-Source-Files:
Makefile
Extra-Doc-Files:
Changes.md
Flag buildExamples
description: Build example executables
default: False
Source-Repository this
Tag: 0.13.0.1
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:
private,
llvm-tf >=12.1 && <21.1,
tfp >=1.0 && <1.1,
non-empty >=0.2.1 && <0.4,
fixed-length >=0.2.1 && <0.3,
containers >=0.1 && <0.9,
enumset >=0.0.5 && <0.2,
storable-record >=0.0.5 && <0.1,
storable-enum >=0.0 && <0.1,
bool8 >=0.0 && <0.1,
transformers >=0.1.1 && <0.7,
tagged >=0.7 && <0.9,
utility-ht >=0.0.15 && <0.1,
prelude-compat >=0.0 && <0.0.1,
base-orphans >= 0.5 && <1,
base >=4.8 && <5
Default-Language: Haskell98
GHC-Options: -Wall
Hs-source-dirs: src
Exposed-Modules:
LLVM.Extra.Arithmetic
LLVM.Extra.Monad
LLVM.Extra.Memory
LLVM.Extra.Marshal
LLVM.Extra.Storable
LLVM.Extra.Maybe
LLVM.Extra.MaybeContinuation
LLVM.Extra.Either
LLVM.Extra.Tuple
LLVM.Extra.Struct
LLVM.Extra.Control
LLVM.Extra.Function
LLVM.Extra.Array
LLVM.Extra.Scalar
LLVM.Extra.Vector
LLVM.Extra.ScalarOrVector
LLVM.Extra.FastMath
LLVM.Extra.Iterator
LLVM.Extra.Nice.Iterator
LLVM.Extra.Nice.Value
LLVM.Extra.Nice.Value.Vector
LLVM.Extra.Nice.Value.Marshal
LLVM.Extra.Nice.Value.Storable
LLVM.Extra.Nice.Vector
LLVM.Extra.Nice.Vector.Instance
LLVM.Extra.Nice.Class
-- retained for compatibility
LLVM.Extra.Multi.Iterator
LLVM.Extra.Multi.Value
LLVM.Extra.Multi.Value.Vector
LLVM.Extra.Multi.Value.Marshal
LLVM.Extra.Multi.Value.Storable
LLVM.Extra.Multi.Vector
LLVM.Extra.Multi.Vector.Instance
LLVM.Extra.Multi.Class
Other-Modules:
LLVM.Extra.Storable.Array
LLVM.Extra.Storable.Private
LLVM.Extra.TuplePrivate
LLVM.Extra.MaybePrivate
LLVM.Extra.EitherPrivate
LLVM.Extra.Nice.Value.Private
LLVM.Extra.Nice.Value.Array
Library private
Build-Depends:
llvm-tf,
tfp,
non-empty,
utility-ht,
base >=3 && <5
Default-Language: Haskell98
GHC-Options: -Wall
Hs-source-dirs: private
Exposed-Modules:
LLVM.Extra.ScalarOrVectorPrivate
LLVM.Extra.ArithmeticPrivate
Executable tone-llvm
If flag(buildExamples)
Build-Depends:
llvm-extra,
llvm-tf,
tfp,
non-empty,
containers >=0.1 && <0.9,
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
Test-Suite llvm-extra-test
Type: exitcode-stdio-1.0
Build-Depends:
doctest-exitcode-stdio >=0.0 && <0.1,
QuickCheck >=2.11 && <3,
private,
llvm-extra,
llvm-tf,
tfp,
storable-record,
utility-ht >=0.0.1 && <0.1,
transformers,
base >=3 && <5
Default-Language: Haskell98
GHC-Options: -Wall
Hs-Source-Dirs: test
Main-Is: Main.hs
Other-Modules:
Test.Storable
Test.Vector
LLVM.Extra.VectorAlt