synthesizer-llvm-1.1.0.1: Efficient signal processing using runtime compilation

Safe HaskellNone
LanguageHaskell98

Synthesizer.LLVM.Interpolation

Synopsis

Documentation

class (Applicative nodes, Traversable nodes) => C nodes where Source #

Methods

margin :: Margin (nodes a) Source #

Instances
C Nodes13 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

margin :: Margin (Nodes13 a) Source #

C Nodes02 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

margin :: Margin (Nodes02 a) Source #

loadNodes :: (C nodes, Storable am) => (Value (Ptr am) -> CodeGenFunction r a) -> Value Int -> Value (Ptr am) -> CodeGenFunction r (nodes a) Source #

indexNodes :: C nodes => (Value Word -> CodeGenFunction r v) -> Value Word -> Value Word -> CodeGenFunction r (nodes v) Source #

loadNodesExp :: (C nodes, Storable am) => (Value (Ptr am) -> CodeGenFunction r a) -> T Int -> Value (Ptr am) -> CodeGenFunction r (nodes a) Source #

indexNodesExp :: C nodes => (T Word -> CodeGenFunction r v) -> T Word -> T Word -> CodeGenFunction r (nodes v) Source #

data Margin nodes Source #

Constructors

Margin 
Instances
Eq (Margin nodes) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

(==) :: Margin nodes -> Margin nodes -> Bool #

(/=) :: Margin nodes -> Margin nodes -> Bool #

Show (Margin nodes) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

showsPrec :: Int -> Margin nodes -> ShowS #

show :: Margin nodes -> String #

showList :: [Margin nodes] -> ShowS #

C (Margin nodes) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Repr (Margin nodes) :: Type

Methods

cons :: Margin nodes -> T (Margin nodes)

undef :: T (Margin nodes)

zero :: T (Margin nodes)

phi :: BasicBlock -> T (Margin nodes) -> CodeGenFunction r (T (Margin nodes))

addPhi :: BasicBlock -> T (Margin nodes) -> T (Margin nodes) -> CodeGenFunction r ()

type Repr (Margin nodes) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Repr (Margin nodes) = (Value Int, Value Int)

zipMargin :: T Int -> T Int -> T (Margin nodes) Source #

unzipMargin :: T (Margin nodes) -> (T Int, T Int) Source #

toMargin :: C nodes => (forall r. T r nodes a v) -> Margin (nodes v) Source #

marginNumberExp :: Value val => val (Margin nodes) -> val Int Source #

marginOffsetExp :: Value val => val (Margin nodes) -> val Int Source #

type T r nodes a v = a -> nodes v -> CodeGenFunction r v Source #

data Nodes02 a Source #

Zero nodes before index 0 and two nodes starting from index 0.

Constructors

Nodes02 

Fields

Instances
Functor Nodes02 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

fmap :: (a -> b) -> Nodes02 a -> Nodes02 b #

(<$) :: a -> Nodes02 b -> Nodes02 a #

Applicative Nodes02 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

pure :: a -> Nodes02 a #

(<*>) :: Nodes02 (a -> b) -> Nodes02 a -> Nodes02 b #

liftA2 :: (a -> b -> c) -> Nodes02 a -> Nodes02 b -> Nodes02 c #

(*>) :: Nodes02 a -> Nodes02 b -> Nodes02 b #

(<*) :: Nodes02 a -> Nodes02 b -> Nodes02 a #

Foldable Nodes02 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

fold :: Monoid m => Nodes02 m -> m #

foldMap :: Monoid m => (a -> m) -> Nodes02 a -> m #

foldr :: (a -> b -> b) -> b -> Nodes02 a -> b #

foldr' :: (a -> b -> b) -> b -> Nodes02 a -> b #

foldl :: (b -> a -> b) -> b -> Nodes02 a -> b #

foldl' :: (b -> a -> b) -> b -> Nodes02 a -> b #

foldr1 :: (a -> a -> a) -> Nodes02 a -> a #

foldl1 :: (a -> a -> a) -> Nodes02 a -> a #

toList :: Nodes02 a -> [a] #

null :: Nodes02 a -> Bool #

length :: Nodes02 a -> Int #

elem :: Eq a => a -> Nodes02 a -> Bool #

maximum :: Ord a => Nodes02 a -> a #

minimum :: Ord a => Nodes02 a -> a #

sum :: Num a => Nodes02 a -> a #

product :: Num a => Nodes02 a -> a #

Traversable Nodes02 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

traverse :: Applicative f => (a -> f b) -> Nodes02 a -> f (Nodes02 b) #

sequenceA :: Applicative f => Nodes02 (f a) -> f (Nodes02 a) #

mapM :: Monad m => (a -> m b) -> Nodes02 a -> m (Nodes02 b) #

sequence :: Monad m => Nodes02 (m a) -> m (Nodes02 a) #

C Nodes02 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

margin :: Margin (Nodes02 a) Source #

C l => C (Nodes02 l) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Struct (Nodes02 l) :: Type

Methods

load :: Value (Ptr (Struct (Nodes02 l))) -> CodeGenFunction r (Nodes02 l)

store :: Nodes02 l -> Value (Ptr (Struct (Nodes02 l))) -> CodeGenFunction r ()

decompose :: Value (Struct (Nodes02 l)) -> CodeGenFunction r (Nodes02 l)

compose :: Nodes02 l -> CodeGenFunction r (Value (Struct (Nodes02 l)))

Phi a => Phi (Nodes02 a) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

phi :: BasicBlock -> Nodes02 a -> CodeGenFunction r (Nodes02 a)

addPhi :: BasicBlock -> Nodes02 a -> Nodes02 a -> CodeGenFunction r ()

Undefined a => Undefined (Nodes02 a) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

undef :: Nodes02 a

Write v => Write (Nodes02 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type WriteIt (Nodes02 v) :: Type Source #

Methods

insert :: Value Word32 -> Element (Nodes02 v) -> Nodes02 v -> CodeGenFunction r (Nodes02 v) Source #

assemble :: [Element (Nodes02 v)] -> CodeGenFunction r (Nodes02 v) Source #

writeStart :: CodeGenFunction r (WriteIterator (WriteIt (Nodes02 v)) (Nodes02 v)) Source #

writeNext :: Element (Nodes02 v) -> WriteIterator (WriteIt (Nodes02 v)) (Nodes02 v) -> CodeGenFunction r (WriteIterator (WriteIt (Nodes02 v)) (Nodes02 v)) Source #

writeStop :: WriteIterator (WriteIt (Nodes02 v)) (Nodes02 v) -> CodeGenFunction r (Nodes02 v) Source #

Read v => Read (Nodes02 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Element (Nodes02 v) :: Type Source #

type ReadIt (Nodes02 v) :: Type Source #

Methods

extract :: Value Word32 -> Nodes02 v -> CodeGenFunction r (Element (Nodes02 v)) Source #

dissect :: Nodes02 v -> CodeGenFunction r [Element (Nodes02 v)] Source #

readStart :: Nodes02 v -> CodeGenFunction r (ReadIterator (ReadIt (Nodes02 v)) (Nodes02 v)) Source #

readNext :: ReadIterator (ReadIt (Nodes02 v)) (Nodes02 v) -> CodeGenFunction r (Element (Nodes02 v), ReadIterator (ReadIt (Nodes02 v)) (Nodes02 v)) Source #

Sized value => Sized (Nodes02 value) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Size (Nodes02 value) :: Type Source #

type Struct (Nodes02 l) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Struct (Nodes02 l)
type WriteIt (Nodes02 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Element (Nodes02 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type ReadIt (Nodes02 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type ReadIt (Nodes02 v) = Nodes02 (ReadIt v)
type Size (Nodes02 value) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Size (Nodes02 value) = Size value

linear :: (PseudoRing a, IntegerConstant a) => T r Nodes02 a a Source #

linearVector :: (PseudoModule v, Scalar v ~ a, IntegerConstant a) => T r Nodes02 a v Source #

data Nodes13 a Source #

One node before index 0 and three nodes starting from index 0.

Constructors

Nodes13 
Instances
Functor Nodes13 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

fmap :: (a -> b) -> Nodes13 a -> Nodes13 b #

(<$) :: a -> Nodes13 b -> Nodes13 a #

Applicative Nodes13 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

pure :: a -> Nodes13 a #

(<*>) :: Nodes13 (a -> b) -> Nodes13 a -> Nodes13 b #

liftA2 :: (a -> b -> c) -> Nodes13 a -> Nodes13 b -> Nodes13 c #

(*>) :: Nodes13 a -> Nodes13 b -> Nodes13 b #

(<*) :: Nodes13 a -> Nodes13 b -> Nodes13 a #

Foldable Nodes13 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

fold :: Monoid m => Nodes13 m -> m #

foldMap :: Monoid m => (a -> m) -> Nodes13 a -> m #

foldr :: (a -> b -> b) -> b -> Nodes13 a -> b #

foldr' :: (a -> b -> b) -> b -> Nodes13 a -> b #

foldl :: (b -> a -> b) -> b -> Nodes13 a -> b #

foldl' :: (b -> a -> b) -> b -> Nodes13 a -> b #

foldr1 :: (a -> a -> a) -> Nodes13 a -> a #

foldl1 :: (a -> a -> a) -> Nodes13 a -> a #

toList :: Nodes13 a -> [a] #

null :: Nodes13 a -> Bool #

length :: Nodes13 a -> Int #

elem :: Eq a => a -> Nodes13 a -> Bool #

maximum :: Ord a => Nodes13 a -> a #

minimum :: Ord a => Nodes13 a -> a #

sum :: Num a => Nodes13 a -> a #

product :: Num a => Nodes13 a -> a #

Traversable Nodes13 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

traverse :: Applicative f => (a -> f b) -> Nodes13 a -> f (Nodes13 b) #

sequenceA :: Applicative f => Nodes13 (f a) -> f (Nodes13 a) #

mapM :: Monad m => (a -> m b) -> Nodes13 a -> m (Nodes13 b) #

sequence :: Monad m => Nodes13 (m a) -> m (Nodes13 a) #

C Nodes13 Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

margin :: Margin (Nodes13 a) Source #

C l => C (Nodes13 l) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Struct (Nodes13 l) :: Type

Methods

load :: Value (Ptr (Struct (Nodes13 l))) -> CodeGenFunction r (Nodes13 l)

store :: Nodes13 l -> Value (Ptr (Struct (Nodes13 l))) -> CodeGenFunction r ()

decompose :: Value (Struct (Nodes13 l)) -> CodeGenFunction r (Nodes13 l)

compose :: Nodes13 l -> CodeGenFunction r (Value (Struct (Nodes13 l)))

Phi a => Phi (Nodes13 a) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

phi :: BasicBlock -> Nodes13 a -> CodeGenFunction r (Nodes13 a)

addPhi :: BasicBlock -> Nodes13 a -> Nodes13 a -> CodeGenFunction r ()

Undefined a => Undefined (Nodes13 a) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Methods

undef :: Nodes13 a

Write v => Write (Nodes13 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type WriteIt (Nodes13 v) :: Type Source #

Methods

insert :: Value Word32 -> Element (Nodes13 v) -> Nodes13 v -> CodeGenFunction r (Nodes13 v) Source #

assemble :: [Element (Nodes13 v)] -> CodeGenFunction r (Nodes13 v) Source #

writeStart :: CodeGenFunction r (WriteIterator (WriteIt (Nodes13 v)) (Nodes13 v)) Source #

writeNext :: Element (Nodes13 v) -> WriteIterator (WriteIt (Nodes13 v)) (Nodes13 v) -> CodeGenFunction r (WriteIterator (WriteIt (Nodes13 v)) (Nodes13 v)) Source #

writeStop :: WriteIterator (WriteIt (Nodes13 v)) (Nodes13 v) -> CodeGenFunction r (Nodes13 v) Source #

Read v => Read (Nodes13 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Element (Nodes13 v) :: Type Source #

type ReadIt (Nodes13 v) :: Type Source #

Methods

extract :: Value Word32 -> Nodes13 v -> CodeGenFunction r (Element (Nodes13 v)) Source #

dissect :: Nodes13 v -> CodeGenFunction r [Element (Nodes13 v)] Source #

readStart :: Nodes13 v -> CodeGenFunction r (ReadIterator (ReadIt (Nodes13 v)) (Nodes13 v)) Source #

readNext :: ReadIterator (ReadIt (Nodes13 v)) (Nodes13 v) -> CodeGenFunction r (Element (Nodes13 v), ReadIterator (ReadIt (Nodes13 v)) (Nodes13 v)) Source #

Sized value => Sized (Nodes13 value) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

Associated Types

type Size (Nodes13 value) :: Type Source #

type Struct (Nodes13 l) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Struct (Nodes13 l)
type WriteIt (Nodes13 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Element (Nodes13 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type ReadIt (Nodes13 v) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type ReadIt (Nodes13 v) = Nodes13 (ReadIt v)
type Size (Nodes13 value) Source # 
Instance details

Defined in Synthesizer.LLVM.Interpolation

type Size (Nodes13 value) = Size value

cubic :: (Field a, RationalConstant a) => T r Nodes13 a a Source #

cubicVector :: (PseudoModule v, Scalar v ~ a, Field a, RationalConstant a) => T r Nodes13 a v Source #