Safe Haskell | None |
---|---|
Language | Haskell98 |
Synthesizer.LLVM.Frame.SerialVector
Description
A special vector type that represents a time-sequence of samples. This way we can distinguish safely between LLVM vectors used for parallel signals and pipelines and those used for chunky processing of scalar signals. For the chunky processing this data type allows us to derive the factor from the type that time constants have to be multiplied with.
- newtype T v = Cons v
- type Plain n a = T (Vector n a)
- type Value n a = T (Value (Vector n a))
- plain :: Vector n a -> Plain n a
- value :: Value (Vector n a) -> Value n a
- constant :: Positive n => a -> T (Constant n a)
- class (Positive (Size v), Sized v, Phi (ReadIt v), Undefined (ReadIt v), Phi v, Undefined v) => Read v where
- type Element v :: *
- type ReadIt v :: *
- extract :: Value Word32 -> v -> CodeGenFunction r (Element v)
- extractAll :: v -> CodeGenFunction r [Element v]
- readStart :: v -> CodeGenFunction r (ReadIterator (ReadIt v) v)
- readNext :: ReadIterator (ReadIt v) v -> CodeGenFunction r (Element v, ReadIterator (ReadIt v) v)
- class (Read v, Phi (WriteIt v), Undefined (WriteIt v)) => C v where
- type WriteIt v :: *
- insert :: Value Word32 -> Element v -> v -> CodeGenFunction r v
- assemble :: [Element v] -> CodeGenFunction r v
- writeStart :: CodeGenFunction r (WriteIterator (WriteIt v) v)
- writeNext :: Element v -> WriteIterator (WriteIt v) v -> CodeGenFunction r (WriteIterator (WriteIt v) v)
- writeStop :: WriteIterator (WriteIt v) v -> CodeGenFunction r v
- class (C v, Phi (WriteIt v), Zero (WriteIt v)) => Zero v where
- writeZero :: CodeGenFunction r (WriteIterator (WriteIt v) v)
- newtype Iterator mode it v = Iterator it
- type ReadIterator = Iterator ReadMode
- type WriteIterator = Iterator WriteMode
- data ReadMode
- data WriteMode
- class Positive (Size valueTuple) => Sized valueTuple where
- type Size valueTuple :: *
- size :: Sized v => v -> Int
- sizeOfIterator :: Sized v => Iterator mode it v -> Int
- withSize :: Sized v => (Int -> m v) -> m v
- insertTraversable :: (C v, Traversable f, Applicative f) => Value Word32 -> f (Element v) -> f v -> CodeGenFunction r (f v)
- extractTraversable :: (Read v, Traversable f) => Value Word32 -> f v -> CodeGenFunction r (f (Element v))
- readStartTraversable :: (Traversable f, Applicative f, Read v) => f v -> CodeGenFunction r (ReadIterator (f (ReadIt v)) (f v))
- readNextTraversable :: (Traversable f, Applicative f, Read v) => ReadIterator (f (ReadIt v)) (f v) -> CodeGenFunction r (f (Element v), ReadIterator (f (ReadIt v)) (f v))
- writeStartTraversable :: (Traversable f, Applicative f, C v) => CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v))
- writeNextTraversable :: (Traversable f, Applicative f, C v) => f (Element v) -> WriteIterator (f (WriteIt v)) (f v) -> CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v))
- writeStopTraversable :: (Traversable f, Applicative f, C v) => WriteIterator (f (WriteIt v)) (f v) -> CodeGenFunction r (f v)
- writeZeroTraversable :: (Traversable f, Applicative f, Zero v) => CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v))
- modify :: C v => Value Word32 -> (Element v -> CodeGenFunction r (Element v)) -> v -> CodeGenFunction r v
- upsample :: C v => Element v -> CodeGenFunction r v
- subsample :: Read v => v -> CodeGenFunction r (Element v)
- cumulate :: (Arithmetic a, Positive n) => Value a -> Value n a -> CodeGenFunction r (Value a, Value n a)
- iterate :: C v => (Element v -> CodeGenFunction r (Element v)) -> Element v -> CodeGenFunction r v
- iteratePlain :: Positive n => (a -> a) -> a -> Plain n a
- reverse :: C v => v -> CodeGenFunction r v
- shiftUp :: C v => Element v -> v -> CodeGenFunction r (Element v, v)
- shiftUpMultiZero :: (C v, Additive (Element v)) => Int -> v -> CodeGenFunction r v
- shiftDownMultiZero :: (C v, Additive (Element v)) => Int -> v -> CodeGenFunction r v
- replicate :: Positive n => a -> Plain n a
- replicateOf :: (Positive n, IsPrimitive a, IsConst a) => a -> Value n a
- fromList :: Positive n => T [] a -> Plain n a
- fromFixedList :: Positive n => FixedList (ToUnary n) a -> Plain n a
- mapPlain :: Positive n => (a -> b) -> Plain n a -> Plain n b
- mapV :: Functor m => (Value (Vector n a) -> m (Value (Vector n b))) -> Value n a -> m (Value n b)
- zipV :: Functor m => (c -> d) -> (Value (Vector n a) -> Value (Vector n b) -> m c) -> Value n a -> Value n b -> m d
Documentation
Constructors
Cons v |
Instances
class (Positive (Size v), Sized v, Phi (ReadIt v), Undefined (ReadIt v), Phi v, Undefined v) => Read v where Source
Methods
extract :: Value Word32 -> v -> CodeGenFunction r (Element v) Source
extractAll :: v -> CodeGenFunction r [Element v] Source
readStart :: v -> CodeGenFunction r (ReadIterator (ReadIt v) v) Source
readNext :: ReadIterator (ReadIt v) v -> CodeGenFunction r (Element v, ReadIterator (ReadIt v) v) Source
Instances
Read v => Read (T v) Source | |
Simple v => Read (T v) Source | This instance also allows to wrap tuples of vectors, but you cannot reasonably use them, because it would mean to serialize vectors with different element types. |
Read v => Read (Nodes13 v) Source | |
Read v => Read (Nodes02 v) Source | |
(Read va, Read vb, (~) * (Size va) (Size vb)) => Read (va, vb) Source | |
(Positive n, IsPrimitive a, IsFirstClass a) => Read (Value n a) Source | The implementation of |
(Read va, Read vb, Read vc, (~) * (Size va) (Size vb), (~) * (Size vb) (Size vc)) => Read (va, vb, vc) Source |
class (Read v, Phi (WriteIt v), Undefined (WriteIt v)) => C v where Source
Minimal complete definition
Methods
insert :: Value Word32 -> Element v -> v -> CodeGenFunction r v Source
assemble :: [Element v] -> CodeGenFunction r v Source
writeStart :: CodeGenFunction r (WriteIterator (WriteIt v) v) Source
writeNext :: Element v -> WriteIterator (WriteIt v) v -> CodeGenFunction r (WriteIterator (WriteIt v) v) Source
writeStop :: WriteIterator (WriteIt v) v -> CodeGenFunction r v Source
Instances
C v => C (T v) Source | |
C v => C (T v) Source | |
C v => C (Nodes13 v) Source | |
C v => C (Nodes02 v) Source | |
(C va, C vb, (~) * (Size va) (Size vb)) => C (va, vb) Source | |
(Positive n, IsPrimitive a, IsFirstClass a) => C (Value n a) Source | The implementation of |
(C va, C vb, C vc, (~) * (Size va) (Size vb), (~) * (Size vb) (Size vc)) => C (va, vb, vc) Source |
class (C v, Phi (WriteIt v), Zero (WriteIt v)) => Zero v where Source
Methods
writeZero :: CodeGenFunction r (WriteIterator (WriteIt v) v) Source
type ReadIterator = Iterator ReadMode Source
type WriteIterator = Iterator WriteMode Source
class Positive (Size valueTuple) => Sized valueTuple Source
The type parameter value
shall be a virtual LLVM register
or a wrapper around one or more virtual LLVM registers.
Instances
Sized (Value a) Source | Basic LLVM types are all counted as scalar values, even LLVM Vectors. This means that an LLVM Vector can be used for parallel handling of data. |
Sized value => Sized (T value) Source | |
Simple v => Sized (T v) Source | |
Sized value => Sized (Nodes13 value) Source | |
Sized value => Sized (Nodes02 value) Source | |
(Sized value0, Sized value1, (~) * (Size value0) (Size value1)) => Sized (value0, value1) Source | |
Positive n => Sized (Value n a) Source | |
(Sized value0, Sized value1, Sized value2, (~) * (Size value0) (Size value1), (~) * (Size value1) (Size value2)) => Sized (value0, value1, value2) Source |
sizeOfIterator :: Sized v => Iterator mode it v -> Int Source
insertTraversable :: (C v, Traversable f, Applicative f) => Value Word32 -> f (Element v) -> f v -> CodeGenFunction r (f v) Source
extractTraversable :: (Read v, Traversable f) => Value Word32 -> f v -> CodeGenFunction r (f (Element v)) Source
readStartTraversable :: (Traversable f, Applicative f, Read v) => f v -> CodeGenFunction r (ReadIterator (f (ReadIt v)) (f v)) Source
readNextTraversable :: (Traversable f, Applicative f, Read v) => ReadIterator (f (ReadIt v)) (f v) -> CodeGenFunction r (f (Element v), ReadIterator (f (ReadIt v)) (f v)) Source
writeStartTraversable :: (Traversable f, Applicative f, C v) => CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v)) Source
writeNextTraversable :: (Traversable f, Applicative f, C v) => f (Element v) -> WriteIterator (f (WriteIt v)) (f v) -> CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v)) Source
writeStopTraversable :: (Traversable f, Applicative f, C v) => WriteIterator (f (WriteIt v)) (f v) -> CodeGenFunction r (f v) Source
writeZeroTraversable :: (Traversable f, Applicative f, Zero v) => CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v)) Source
modify :: C v => Value Word32 -> (Element v -> CodeGenFunction r (Element v)) -> v -> CodeGenFunction r v Source
upsample :: C v => Element v -> CodeGenFunction r v Source
subsample :: Read v => v -> CodeGenFunction r (Element v) Source
cumulate :: (Arithmetic a, Positive n) => Value a -> Value n a -> CodeGenFunction r (Value a, Value n a) Source
iterate :: C v => (Element v -> CodeGenFunction r (Element v)) -> Element v -> CodeGenFunction r v Source
iteratePlain :: Positive n => (a -> a) -> a -> Plain n a Source
reverse :: C v => v -> CodeGenFunction r v Source
shiftUpMultiZero :: (C v, Additive (Element v)) => Int -> v -> CodeGenFunction r v Source
shiftDownMultiZero :: (C v, Additive (Element v)) => Int -> v -> CodeGenFunction r v Source
replicateOf :: (Positive n, IsPrimitive a, IsConst a) => a -> Value n a Source