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

Safe HaskellNone
LanguageHaskell98

LLVM.Extra.Multi.Class

Documentation

class C value where Source

Associated Types

type Size value :: * Source

Methods

switch :: f T -> f (T (Size value)) -> f value Source

Instances

C T 
Positive n => C (T n) 

newtype Const a value Source

Constructors

Const 

Fields

getConst :: value a
 

undef :: (C value, Size value ~ n, Positive n, C a) => value a Source

zero :: (C value, Size value ~ n, Positive n, C a) => value a Source

newtype Op0 r a value Source

Constructors

Op0 

Fields

runOp0 :: CodeGenFunction r (value a)
 

newtype Op1 r a b value Source

Constructors

Op1 

Fields

runOp1 :: value a -> CodeGenFunction r (value b)
 

newtype Op2 r a b c value Source

Constructors

Op2 

Fields

runOp2 :: value a -> value b -> CodeGenFunction r (value c)
 

add :: (Positive n, Additive a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

sub :: (Positive n, Additive a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

neg :: (Positive n, Additive a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

mul :: (Positive n, PseudoRing a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

fdiv :: (Positive n, Field a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

scale :: (Positive n, PseudoModule v, n ~ Size value, C value) => value (Scalar v) -> value v -> CodeGenFunction r (value v) Source

min :: (Positive n, Real a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

max :: (Positive n, Real a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

abs :: (Positive n, Real a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

signum :: (Positive n, Real a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

truncate :: (Positive n, Fraction a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

fraction :: (Positive n, Fraction a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

sqrt :: (Positive n, Algebraic a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

pi :: (Positive n, Transcendental a, n ~ Size value, C value) => CodeGenFunction r (value a) Source

sin :: (Positive n, Transcendental a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

log :: (Positive n, Transcendental a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

exp :: (Positive n, Transcendental a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

cos :: (Positive n, Transcendental a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source

pow :: (Positive n, Transcendental a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

cmp :: (Positive n, Comparison a, n ~ Size value, C value) => CmpPredicate -> value a -> value a -> CodeGenFunction r (value Bool) Source

fcmp :: (Positive n, FloatingComparison a, n ~ Size value, C value) => FPPredicate -> value a -> value a -> CodeGenFunction r (value Bool) Source

and :: (Positive n, Logic a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

xor :: (Positive n, Logic a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

or :: (Positive n, Logic a, n ~ Size value, C value) => value a -> value a -> CodeGenFunction r (value a) Source

inv :: (Positive n, Logic a, n ~ Size value, C value) => value a -> CodeGenFunction r (value a) Source