llvm-extra-0.10: 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) 

newtype Number flags a Source

Constructors

Number 

Fields

deconsNumber :: a
 

Instances

VectorValue n a => VectorValue n (Number flags a) 
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) 
Value a => Value (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) 
(Flags flags, MultiVector a, FloatingComparison a) => FloatingComparison (Number flags a) 
(Flags flags, MultiVector a, Comparison a) => Comparison (Number flags a) 
(Flags flags, MultiVector a, Select a) => Select (Number flags a) 
(Flags flags, MultiVector a, Transcendental a) => Transcendental (Number flags a) 
(Flags flags, MultiVector a, Algebraic a) => Algebraic (Number flags a) 
(Flags flags, MultiVector a, Fraction a) => Fraction (Number flags a) 
(Flags flags, MultiVector a, Real a) => Real (Number flags a) 
(Flags flags, MultiVector a, Field a) => Field (Number flags a) 
(Flags flags, MultiVector a, PseudoRing a) => PseudoRing (Number flags a) 
(Flags flags, MultiVector a, Additive a) => Additive (Number flags a) 
(Flags flags, MultiVector a, RationalConstant a) => RationalConstant (Number flags a) 
(Flags flags, MultiVector a, IntegerConstant a) => IntegerConstant (Number flags a) 
(Flags flags, MultiVector 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

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

mvecNumber :: T n a -> T n (Number flags a)Source

mvecDenumber :: T n (Number flags a) -> T n aSource

class (MultiValue a, C a) => MultiVector a whereSource

Methods

setMultiVectorFlags :: (Flags flags, Positive n) => Proxy flags -> Bool -> T n (Number flags a) -> CodeGenFunction r ()Source

liftMultiVectorM :: (m ~ CodeGenFunction r, Positive n, Flags flags, MultiVector b) => (T n a -> m (T n b)) -> T n (Number flags a) -> m (T n (Number flags b))Source

liftMultiVectorM2 :: (m ~ CodeGenFunction r, Positive n, Flags flags, MultiVector c) => (T n a -> T n b -> m (T n c)) -> T n (Number flags a) -> T n (Number flags b) -> m (T n (Number flags c))Source

class Tuple a whereSource

Methods

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

Instances

IsFloating a => Tuple (Value a) 

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) 

attachTupleFlags :: (Flags flags, Tuple a) => Id (CodeGenFunction r (Context flags a))Source

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