llvm-extra-0.8.1: Utility functions for the llvm interface

Safe HaskellNone

LLVM.Extra.FastMath

Documentation

data NoNaNs Source

Constructors

NoNaNs 

data NoInfs Source

Constructors

NoInfs 

data Fast Source

Constructors

Fast 

Instances

class Flags flags whereSource

Methods

setFlags :: IsFloating a => Proxy flags -> Bool -> Value a -> CodeGenFunction r ()Source

Instances

Flags Fast 
Flags AllowReciprocal 
Flags NoSignedZeros 
Flags NoInfs 
Flags NoNaNs 
(Flags f0, Flags f1) => Flags (f0, f1) 
(Flags f0, Flags f1, Flags f2) => Flags (f0, f1, f2) 
(Flags f0, Flags f1, Flags f2, Flags f3) => Flags (f0, f1, f2, f3) 
(Flags f0, Flags f1, Flags f2, Flags f3, Flags f4) => Flags (f0, f1, f2, f3, f4) 

setSplitFlags :: (Flags split, IsFloating a) => (flags -> split) -> Proxy flags -> Bool -> Value a -> CodeGenFunction r ()Source

newtype Number flags a Source

Constructors

Number 

Fields

deconsNumber :: a
 

Instances

Eq a => Eq (Number flags a) 
Floating a => Floating (Number flags a) 
Fractional a => Fractional (Number flags a) 
Num a => Num (Number flags a) 
Ord a => Ord (Number flags a) 
Show a => Show (Number flags a) 
Storable a => Storable (Number flags a) 
(Flags flags, MultiValue a, FloatingComparison a) => FloatingComparison (Number flags a) 
(Flags flags, MultiValue a, Comparison a) => Comparison (Number flags a) 
(Flags flags, MultiValue a, Select a) => Select (Number flags a) 
(Flags flags, MultiValue a, Transcendental a) => Transcendental (Number flags a) 
(Flags flags, MultiValue a, Algebraic a) => Algebraic (Number flags a) 
(Flags flags, MultiValue a, Fraction a) => Fraction (Number flags a) 
(Flags flags, MultiValue a, Real a) => Real (Number flags a) 
(Flags flags, MultiValue a, ~ * a (Scalar v), MultiValue v, PseudoModule v) => PseudoModule (Number flags v) 
(Flags flags, MultiValue a, Field a) => Field (Number flags a) 
(Flags flags, MultiValue a, PseudoRing a) => PseudoRing (Number flags a) 
(Flags flags, MultiValue a, Additive a) => Additive (Number flags a) 
(Flags flags, MultiValue a, RationalConstant a) => RationalConstant (Number flags a) 
(Flags flags, MultiValue a, IntegerConstant a) => IntegerConstant (Number flags a) 
(Flags flags, Decompose pa) => Decompose (Number flags pa) 
(Flags flags, Compose a) => Compose (Number flags a) 
MultiValue a => C (Number flags a) 

getNumber :: flags -> Number flags a -> aSource

mvNumber :: T a -> T (Number flags a)Source

mvDenumber :: T (Number flags a) -> T aSource

class C a => MultiValue a whereSource

Methods

setMultiValueFlags :: Flags flags => Proxy flags -> Bool -> T (Number flags a) -> CodeGenFunction r ()Source

type Id a = a -> aSource

liftNumberM :: (m ~ CodeGenFunction r, Flags flags, MultiValue b) => (T a -> m (T b)) -> T (Number flags a) -> m (T (Number flags b))Source

liftNumberM2 :: (m ~ CodeGenFunction r, Flags flags, MultiValue c) => (T a -> T b -> m (T c)) -> T (Number flags a) -> T (Number flags b) -> m (T (Number flags c))Source

class Tuple a whereSource

Methods

setTupleFlags :: Flags flags => Proxy flags -> Bool -> a -> CodeGenFunction r ()Source

Instances

newtype Context flags a Source

Constructors

Context a 

Instances

(Flags flags, Zero a, Tuple a) => Zero (Context flags a) 
(Flags flags, Tuple a, Transcendental a) => Transcendental (Context flags a) 
(Flags flags, Tuple a, Algebraic a) => Algebraic (Context flags a) 
(Flags flags, Tuple a, FloatingComparison a) => FloatingComparison (Context flags a) 
(Flags flags, Tuple a, Comparison a) => Comparison (Context flags a) 
(Flags flags, Tuple a, Fraction a) => Fraction (Context flags a) 
(Flags flags, Tuple a, Real a) => Real (Context flags a) 
(Flags flags, Tuple a, RationalConstant a) => RationalConstant (Context flags a) 
(Flags flags, Tuple v, Field v) => Field (Context flags v) 
(Flags flags, Tuple a, IntegerConstant a) => IntegerConstant (Context flags a) 
(Flags flags, PseudoModule v, Tuple v, ~ * (Scalar v) a, Tuple a) => PseudoModule (Context flags v) 
(Flags flags, PseudoRing a, Tuple a) => PseudoRing (Context flags a) 
(Flags flags, Tuple a, Additive a) => Additive (Context flags a) 

liftContext :: (Flags flags, Tuple b) => (a -> CodeGenFunction r b) -> Context flags a -> CodeGenFunction r (Context flags b)Source

liftContext2 :: (Flags flags, Tuple c) => (a -> b -> CodeGenFunction r c) -> Context flags a -> Context flags b -> CodeGenFunction r (Context flags c)Source