About

Metadata

  • Last updated , by HenningThielemann
  • License BSD-3-Clause
  • Categories FFI, Compilers and Interpreters
  • Maintained by: Henning Thielemann <haskell@henning-thielemann.de>

  • Lottery factor: 1

Links

Installation

Tested Compilers

  1. 8.8.1
  2. 8.6.5
  3. 8.4.4

Package Flags

Use the -f option with cabal commands to enable flags

    buildexamples (off by default)

    Build example executables

Readme

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