@hackage llvm-extra0.12.0.1

Utility functions for the llvm interface

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.Multi.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