llvm-extra: Utility functions for the llvm interface
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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.MaybeContinuationvarious 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.Multi.Value
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.
Properties
Versions | 0.1, 0.2, 0.2.0.1, 0.2.0.2, 0.3, 0.3.0.1, 0.4.1, 0.4.1.1, 0.4.2, 0.5, 0.6, 0.6.0.1, 0.6.0.2, 0.7, 0.7.0.1, 0.7.1, 0.7.2, 0.7.3, 0.8, 0.8.0.1, 0.8.0.2, 0.8.0.3, 0.8.1, 0.8.2, 0.8.3, 0.8.3, 0.9, 0.9.1, 0.10, 0.10.1, 0.11, 0.12, 0.12.0.1, 0.12.1 |
---|---|
Change log | Changes.md |
Dependencies | base (>=3 && <5), bool8 (>=0.0 && <0.1), containers (>=0.1 && <0.7), cpuid (>=0.2.3 && <0.3), enumset (>=0.0.5 && <0.1), llvm-extra, llvm-tf (>=3.1.2 && <3.2), non-empty (>=0.2.1 && <0.4), parsec (>=2.1 && <3.2), prelude-compat (>=0.0 && <0.0.1), storable-enum (>=0.0 && <0.1), tagged (>=0.7 && <0.9), tfp (>=1.0 && <1.1), transformers (>=0.1.1 && <0.6), unsafe (>=0.0 && <0.1), utility-ht (>=0.0.11 && <0.1) [details] |
License | BSD-3-Clause |
Author | Henning Thielemann <haskell@henning-thielemann.de> |
Maintainer | Henning Thielemann <haskell@henning-thielemann.de> |
Category | Compilers/Interpreters, Code Generation |
Home page | https://wiki.haskell.org/LLVM |
Source repo | this: darcs get http://code.haskell.org/~thielema/llvm-extra/ --tag 0.8.3 head: darcs get http://code.haskell.org/~thielema/llvm-extra/ |
Uploaded | by HenningThielemann at 2019-12-11T11:59:14Z |
Modules
- LLVM
- Extra
- LLVM.Extra.Arithmetic
- LLVM.Extra.Array
- LLVM.Extra.Class
- LLVM.Extra.Control
- LLVM.Extra.Either
- LLVM.Extra.Extension
- LLVM.Extra.Extension.X86
- ExtensionCheck
- LLVM.Extra.ExtensionCheck.X86
- LLVM.Extra.FastMath
- LLVM.Extra.Iterator
- LLVM.Extra.Maybe
- LLVM.Extra.MaybeContinuation
- LLVM.Extra.Memory
- LLVM.Extra.Monad
- Multi
- LLVM.Extra.Multi.Class
- LLVM.Extra.Multi.Iterator
- LLVM.Extra.Multi.Value
- LLVM.Extra.Multi.Value.Memory
- LLVM.Extra.Multi.Value.Vector
- LLVM.Extra.Multi.Vector
- LLVM.Extra.Multi.Vector.Instance
- LLVM.Extra.Multi.Vector.Memory
- LLVM.Extra.Scalar
- LLVM.Extra.ScalarOrVector
- LLVM.Extra.Vector
- Extra
Flags
Automatic Flags
Name | Description | Default |
---|---|---|
buildexamples | Build example executables | Disabled |
buildtools | Build intrinsic translator | Disabled |
cpuid | Use CPUID for host feature detection if available on the architecture | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- llvm-extra-0.8.3.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees