llvm-extra-0.12.1: Utility functions for the llvm interface
Safe HaskellSafe-Inferred
LanguageHaskell98

LLVM.Extra.FastMath

Synopsis

Documentation

data NoNaNs Source #

Constructors

NoNaNs 

Instances

Instances details
Show NoNaNs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Eq NoNaNs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

(==) :: NoNaNs -> NoNaNs -> Bool #

(/=) :: NoNaNs -> NoNaNs -> Bool #

Flags NoNaNs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

data NoInfs Source #

Constructors

NoInfs 

Instances

Instances details
Show NoInfs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Eq NoInfs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

(==) :: NoInfs -> NoInfs -> Bool #

(/=) :: NoInfs -> NoInfs -> Bool #

Flags NoInfs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

data NoSignedZeros Source #

Constructors

NoSignedZeros 

Instances

Instances details
Show NoSignedZeros Source # 
Instance details

Defined in LLVM.Extra.FastMath

Eq NoSignedZeros Source # 
Instance details

Defined in LLVM.Extra.FastMath

Flags NoSignedZeros Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

data AllowReciprocal Source #

Constructors

AllowReciprocal 

Instances

Instances details
Show AllowReciprocal Source # 
Instance details

Defined in LLVM.Extra.FastMath

Eq AllowReciprocal Source # 
Instance details

Defined in LLVM.Extra.FastMath

Flags AllowReciprocal Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

data Fast Source #

Constructors

Fast 

Instances

Instances details
Show Fast Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

showsPrec :: Int -> Fast -> ShowS #

show :: Fast -> String #

showList :: [Fast] -> ShowS #

Eq Fast Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

(==) :: Fast -> Fast -> Bool #

(/=) :: Fast -> Fast -> Bool #

Flags Fast Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

class Flags flags where Source #

Methods

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

Instances

Instances details
Flags AllowReciprocal Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

Flags Fast Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

Flags NoInfs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

Flags NoNaNs Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

Flags NoSignedZeros Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

(Flags f0, Flags f1) => Flags (f0, f1) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setFlags :: IsFloating a => Proxy (f0, f1) -> Bool -> Value a -> CodeGenFunction r () Source #

(Flags f0, Flags f1, Flags f2) => Flags (f0, f1, f2) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setFlags :: IsFloating a => Proxy (f0, f1, f2) -> Bool -> Value a -> CodeGenFunction r () Source #

(Flags f0, Flags f1, Flags f2, Flags f3) => Flags (f0, f1, f2, f3) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setFlags :: IsFloating a => Proxy (f0, f1, f2, f3) -> Bool -> Value a -> CodeGenFunction r () Source #

(Flags f0, Flags f1, Flags f2, Flags f3, Flags f4) => Flags (f0, f1, f2, f3, f4) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setFlags :: IsFloating a => Proxy (f0, f1, f2, f3, f4) -> Bool -> Value a -> CodeGenFunction r () Source #

newtype Number flags a Source #

Constructors

Number 

Fields

Instances

Instances details
Storable a => Storable (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

sizeOf :: Number flags a -> Int #

alignment :: Number flags a -> Int #

peekElemOff :: Ptr (Number flags a) -> Int -> IO (Number flags a) #

pokeElemOff :: Ptr (Number flags a) -> Int -> Number flags a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Number flags a) #

pokeByteOff :: Ptr b -> Int -> Number flags a -> IO () #

peek :: Ptr (Number flags a) -> IO (Number flags a) #

poke :: Ptr (Number flags a) -> Number flags a -> IO () #

Floating a => Floating (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

pi :: Number flags a #

exp :: Number flags a -> Number flags a #

log :: Number flags a -> Number flags a #

sqrt :: Number flags a -> Number flags a #

(**) :: Number flags a -> Number flags a -> Number flags a #

logBase :: Number flags a -> Number flags a -> Number flags a #

sin :: Number flags a -> Number flags a #

cos :: Number flags a -> Number flags a #

tan :: Number flags a -> Number flags a #

asin :: Number flags a -> Number flags a #

acos :: Number flags a -> Number flags a #

atan :: Number flags a -> Number flags a #

sinh :: Number flags a -> Number flags a #

cosh :: Number flags a -> Number flags a #

tanh :: Number flags a -> Number flags a #

asinh :: Number flags a -> Number flags a #

acosh :: Number flags a -> Number flags a #

atanh :: Number flags a -> Number flags a #

log1p :: Number flags a -> Number flags a #

expm1 :: Number flags a -> Number flags a #

log1pexp :: Number flags a -> Number flags a #

log1mexp :: Number flags a -> Number flags a #

Num a => Num (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

(+) :: Number flags a -> Number flags a -> Number flags a #

(-) :: Number flags a -> Number flags a -> Number flags a #

(*) :: Number flags a -> Number flags a -> Number flags a #

negate :: Number flags a -> Number flags a #

abs :: Number flags a -> Number flags a #

signum :: Number flags a -> Number flags a #

fromInteger :: Integer -> Number flags a #

Fractional a => Fractional (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

(/) :: Number flags a -> Number flags a -> Number flags a #

recip :: Number flags a -> Number flags a #

fromRational :: Rational -> Number flags a #

Show a => Show (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

showsPrec :: Int -> Number flags a -> ShowS #

show :: Number flags a -> String #

showList :: [Number flags a] -> ShowS #

Eq a => Eq (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

(==) :: Number flags a -> Number flags a -> Bool #

(/=) :: Number flags a -> Number flags a -> Bool #

Ord a => Ord (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

compare :: Number flags a -> Number flags a -> Ordering #

(<) :: Number flags a -> Number flags a -> Bool #

(<=) :: Number flags a -> Number flags a -> Bool #

(>) :: Number flags a -> Number flags a -> Bool #

(>=) :: Number flags a -> Number flags a -> Bool #

max :: Number flags a -> Number flags a -> Number flags a #

min :: Number flags a -> Number flags a -> Number flags a #

(Flags flags, NiceValue a, Additive a) => Additive (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

add :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

sub :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

neg :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceValue a, Algebraic a) => Algebraic (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

sqrt :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

NiceValue a => C (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Associated Types

type Repr (Number flags a) Source #

Methods

cons :: Number flags a -> T (Number flags a) Source #

undef :: T (Number flags a) Source #

zero :: T (Number flags a) Source #

phi :: BasicBlock -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

addPhi :: BasicBlock -> T (Number flags a) -> T (Number flags a) -> CodeGenFunction r () Source #

(Flags flags, NiceValue a, Comparison a) => Comparison (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

cmp :: CmpPredicate -> T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T Bool) Source #

(Flags flags, Compose a) => Compose (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Associated Types

type Composed (Number flags a) Source #

Methods

compose :: Number flags a -> T (Composed (Number flags a)) Source #

(Flags flags, Decompose pa) => Decompose (Number flags pa) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

decompose :: Number flags pa -> T (PatternTuple (Number flags pa)) -> Decomposed T (Number flags pa) Source #

(Flags flags, NiceValue a, Field a) => Field (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fdiv :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceValue a, FloatingComparison a) => FloatingComparison (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fcmp :: FPPredicate -> T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T Bool) Source #

(Flags flags, NiceValue a, Fraction a) => Fraction (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

truncate :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

fraction :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceValue a, IntegerConstant a) => IntegerConstant (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fromInteger' :: Integer -> T (Number flags a) Source #

(Flags flags, NiceValue a, a ~ Scalar v, NiceValue v, PseudoModule v) => PseudoModule (Number flags v) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

scale :: T (Scalar (Number flags v)) -> T (Number flags v) -> CodeGenFunction r (T (Number flags v)) Source #

(Flags flags, NiceValue a, PseudoRing a) => PseudoRing (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

mul :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceValue a, RationalConstant a) => RationalConstant (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fromRational' :: Rational -> T (Number flags a) Source #

(Flags flags, NiceValue a, Real a) => Real (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

min :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

max :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

abs :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

signum :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceValue a, Select a) => Select (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

select :: T Bool -> T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceValue a, Transcendental a) => Transcendental (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

pi :: CodeGenFunction r (T (Number flags a)) Source #

sin :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

cos :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

exp :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

log :: T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

pow :: T (Number flags a) -> T (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

(Flags flags, NiceVector a, Additive a) => Additive (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

add :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

sub :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

neg :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, Algebraic a) => Algebraic (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

sqrt :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a) => C (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Associated Types

type Repr n (Number flags a) Source #

Methods

cons :: Positive n => Vector n (Number flags a) -> T n (Number flags a) Source #

undef :: Positive n => T n (Number flags a) Source #

zero :: Positive n => T n (Number flags a) Source #

phi :: Positive n => BasicBlock -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

addPhi :: Positive n => BasicBlock -> T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r () Source #

shuffle :: (Positive n, Positive m) => ConstValue (Vector m Word32) -> T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T m (Number flags a)) Source #

extract :: Positive n => Value Word32 -> T n (Number flags a) -> CodeGenFunction r (T (Number flags a)) Source #

insert :: Positive n => Value Word32 -> T (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, Comparison a) => Comparison (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

cmp :: Positive n => CmpPredicate -> T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n Bool) Source #

(Flags flags, NiceVector a, Field a) => Field (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fdiv :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, FloatingComparison a) => FloatingComparison (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fcmp :: Positive n => FPPredicate -> T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n Bool) Source #

(Flags flags, NiceVector a, Fraction a) => Fraction (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

truncate :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

fraction :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, IntegerConstant a) => IntegerConstant (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fromInteger' :: Positive n => Integer -> T n (Number flags a) Source #

(Flags flags, NiceVector a, PseudoRing a) => PseudoRing (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

mul :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, RationalConstant a) => RationalConstant (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fromRational' :: Positive n => Rational -> T n (Number flags a) Source #

(Flags flags, NiceVector a, Real a) => Real (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

min :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

max :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

abs :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

signum :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, Select a) => Select (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

select :: Positive n => T n Bool -> T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

(Flags flags, NiceVector a, Transcendental a) => Transcendental (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

pi :: Positive n => CodeGenFunction r (T n (Number flags a)) Source #

sin :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

cos :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

exp :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

log :: Positive n => T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

pow :: Positive n => T n (Number flags a) -> T n (Number flags a) -> CodeGenFunction r (T n (Number flags a)) Source #

type Decomposed f (Number flags pa) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type Decomposed f (Number flags pa) = Number flags (Decomposed f pa)
type Repr n (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type Repr n (Number flags a) = Repr n a
type Composed (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type Composed (Number flags a) = Number flags (Composed a)
type PatternTuple (Number flags pa) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type PatternTuple (Number flags pa) = Number flags (PatternTuple pa)
type Repr (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type Repr (Number flags a) = Repr a
type Scalar (Number flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type Scalar (Number flags a) = Number flags (Scalar a)

getNumber :: flags -> Number flags a -> a Source #

nvNumber :: T a -> T (Number flags a) Source #

nvDenumber :: T (Number flags a) -> T a Source #

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

Deprecated: Use nvNumber instead

mvDenumber :: T (Number flags a) -> T a Source #

Deprecated: Use nvDenumber instead

class C a => NiceValue a where Source #

Minimal complete definition

setNiceValueFlags | setMultiValueFlags

Methods

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

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

Deprecated: use setNiceValueFlags instead

Instances

Instances details
NiceValue Double Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setNiceValueFlags :: Flags flags => Proxy flags -> Bool -> T (Number flags Double) -> CodeGenFunction r () Source #

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

NiceValue Float Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setNiceValueFlags :: Flags flags => Proxy flags -> Bool -> T (Number flags Float) -> CodeGenFunction r () Source #

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

attachNiceValueFlags :: (Flags flags, NiceValue a) => Id (CodeGenFunction r (T (Number flags a))) Source #

attachMultiValueFlags :: (Flags flags, NiceValue a) => Id (CodeGenFunction r (T (Number flags a))) Source #

Deprecated: Use attachNiceValueFlags instead.

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

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

nvecNumber :: T n a -> T n (Number flags a) Source #

nvecDenumber :: T n (Number flags a) -> T n a Source #

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

Deprecated: Use nvecNumber instead

mvecDenumber :: T n (Number flags a) -> T n a Source #

Deprecated: Use nvecDenumber instead

class (NiceValue a, C a) => NiceVector a where Source #

Minimal complete definition

setNiceVectorFlags | setMultiVectorFlags

Methods

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

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

Deprecated: use setNiceVectorFlags instead

Instances

Instances details
NiceVector Double Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setNiceVectorFlags :: (Flags flags, Positive n) => Proxy flags -> Bool -> T n (Number flags Double) -> CodeGenFunction r () Source #

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

NiceVector Float Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

setNiceVectorFlags :: (Flags flags, Positive n) => Proxy flags -> Bool -> T n (Number flags Float) -> CodeGenFunction r () Source #

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

attachNiceVectorFlags :: (Positive n, Flags flags, NiceVector a) => Id (CodeGenFunction r (T n (Number flags a))) Source #

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

liftNiceVectorM2 :: (m ~ CodeGenFunction r, Positive n, Flags flags, NiceVector 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 #

attachMultiVectorFlags :: (Positive n, Flags flags, NiceVector a) => Id (CodeGenFunction r (T n (Number flags a))) Source #

Deprecated: Use attachNiceVectorFlags instead.

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

Deprecated: Use liftNiceVectorM instead.

liftMultiVectorM2 :: (m ~ CodeGenFunction r, Positive n, Flags flags, NiceVector 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 #

Deprecated: Use liftNiceVectorM2 instead.

class Tuple a where Source #

Methods

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

Instances

Instances details
IsFloating a => Tuple (Value a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

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

newtype Context flags a Source #

Constructors

Context a 

Instances

Instances details
(Flags flags, Tuple a, Additive a) => Additive (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

zero :: Context flags a Source #

add :: Context flags a -> Context flags a -> CodeGenFunction r (Context flags a) Source #

sub :: Context flags a -> Context flags a -> CodeGenFunction r (Context flags a) Source #

neg :: Context flags a -> CodeGenFunction r (Context flags a) Source #

(Flags flags, Tuple a, Algebraic a) => Algebraic (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

sqrt :: Context flags a -> CodeGenFunction r (Context flags a) Source #

(Flags flags, Tuple a, Comparison a) => Comparison (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Associated Types

type CmpResult (Context flags a) Source #

Methods

cmp :: CmpPredicate -> Context flags a -> Context flags a -> CodeGenFunction r (CmpResult (Context flags a)) Source #

(Flags flags, Tuple v, Field v) => Field (Context flags v) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fdiv :: Context flags v -> Context flags v -> CodeGenFunction r (Context flags v) Source #

(Flags flags, Tuple a, FloatingComparison a) => FloatingComparison (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fcmp :: FPPredicate -> Context flags a -> Context flags a -> CodeGenFunction r (CmpResult (Context flags a)) Source #

(Flags flags, Tuple a, Fraction a) => Fraction (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

truncate :: Context flags a -> CodeGenFunction r (Context flags a) Source #

fraction :: Context flags a -> CodeGenFunction r (Context flags a) Source #

(Flags flags, Tuple a, IntegerConstant a) => IntegerConstant (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fromInteger' :: Integer -> Context flags a Source #

(Flags flags, PseudoModule v, Tuple v, Scalar v ~ a, Tuple a) => PseudoModule (Context flags v) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

scale :: Scalar (Context flags v) -> Context flags v -> CodeGenFunction r (Context flags v) Source #

(Flags flags, PseudoRing a, Tuple a) => PseudoRing (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

mul :: Context flags a -> Context flags a -> CodeGenFunction r (Context flags a) Source #

(Flags flags, Tuple a, RationalConstant a) => RationalConstant (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

fromRational' :: Rational -> Context flags a Source #

(Flags flags, Tuple a, Real a) => Real (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

min :: Context flags a -> Context flags a -> CodeGenFunction r (Context flags a) Source #

max :: Context flags a -> Context flags a -> CodeGenFunction r (Context flags a) Source #

abs :: Context flags a -> CodeGenFunction r (Context flags a) Source #

signum :: Context flags a -> CodeGenFunction r (Context flags a) Source #

(Flags flags, Tuple a, Transcendental a) => Transcendental (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

pi :: CodeGenFunction r (Context flags a) Source #

sin :: Context flags a -> CodeGenFunction r (Context flags a) Source #

cos :: Context flags a -> CodeGenFunction r (Context flags a) Source #

exp :: Context flags a -> CodeGenFunction r (Context flags a) Source #

log :: Context flags a -> CodeGenFunction r (Context flags a) Source #

pow :: Context flags a -> Context flags a -> CodeGenFunction r (Context flags a) Source #

(Flags flags, Zero a, Tuple a) => Zero (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

Methods

zero :: Context flags a Source #

type CmpResult (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type CmpResult (Context flags a) = CmpResult a
type Scalar (Context flags a) Source # 
Instance details

Defined in LLVM.Extra.FastMath

type Scalar (Context flags a) = Context flags (Scalar 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 #