Safe Haskell | None |
---|---|
Language | Haskell98 |
Synthesizer.LLVM.Frame.SerialVector.Class
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.
Synopsis
- newtype Constant n a = Constant a
- constant :: Positive n => a -> Constant n a
- class (Sized v, Phi (ReadIt v), Undefined (ReadIt v), Phi v, Undefined v) => Read v
- type family Element v
- type family ReadIt v
- extract :: Read v => Value Word32 -> v -> CodeGenFunction r (Element v)
- readStart :: Read v => v -> CodeGenFunction r (ReadIterator (ReadIt v) v)
- readNext :: Read v => ReadIterator (ReadIt v) v -> CodeGenFunction r (Element v, ReadIterator (ReadIt v) v)
- class (Read v, Phi (WriteIt v), Undefined (WriteIt v)) => Write v
- type family WriteIt v
- insert :: Write v => Value Word32 -> Element v -> v -> CodeGenFunction r v
- writeStart :: Write v => CodeGenFunction r (WriteIterator (WriteIt v) v)
- writeNext :: Write v => Element v -> WriteIterator (WriteIt v) v -> CodeGenFunction r (WriteIterator (WriteIt v) v)
- writeStop :: Write v => WriteIterator (WriteIt v) v -> CodeGenFunction r v
- class (Write v, Phi (WriteIt v), Zero (WriteIt v)) => Zero v
- writeZero :: Zero v => 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 v) => Sized v
- type family Size v
- size :: (Sized v, Integral i) => v -> i
- sizeOfIterator :: (Sized v, Integral i) => Iterator mode it v -> i
- withSize :: Sized v => (Int -> m v) -> m v
- insertTraversable :: (Write 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, Write v) => CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v))
- writeNextTraversable :: (Traversable f, Applicative f, Write v) => f (Element v) -> WriteIterator (f (WriteIt v)) (f v) -> CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v))
- writeStopTraversable :: (Traversable f, Applicative f, Write 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))
- dissect :: Read v => v -> CodeGenFunction r [Element v]
- assemble :: Write v => [Element v] -> CodeGenFunction r v
- modify :: (Write v, Element v ~ a) => Value Word32 -> (a -> CodeGenFunction r a) -> v -> CodeGenFunction r v
- upsample :: Write v => Element v -> CodeGenFunction r v
- subsample :: Read v => v -> CodeGenFunction r (Element v)
- last :: Read v => v -> CodeGenFunction r (Element v)
- iterate :: Write v => (Element v -> CodeGenFunction r (Element v)) -> Element v -> CodeGenFunction r v
- reverse :: Write v => v -> CodeGenFunction r v
- shiftUp :: Write v => Element v -> v -> CodeGenFunction r (Element v, v)
- shiftUpMultiZero :: (Write v, Additive (Element v)) => Int -> v -> CodeGenFunction r v
- shiftDownMultiZero :: (Write v, Additive (Element v)) => Int -> v -> CodeGenFunction r v
Documentation
Constructors
Constant a |
Instances
class (Sized v, Phi (ReadIt v), Undefined (ReadIt v), Phi v, Undefined v) => Read v Source #
Instances
Read v => Read (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods extract :: Value Word32 -> T v -> CodeGenFunction r (Element (T v)) Source # dissect :: T v -> CodeGenFunction r [Element (T v)] Source # readStart :: T v -> CodeGenFunction r (ReadIterator (ReadIt (T v)) (T v)) Source # readNext :: ReadIterator (ReadIt (T v)) (T v) -> CodeGenFunction r (Element (T v), ReadIterator (ReadIt (T v)) (T v)) Source # | |
Read v => Read (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal Methods extract :: Value Word32 -> Result v -> CodeGenFunction r (Element (Result v)) Source # dissect :: Result v -> CodeGenFunction r [Element (Result v)] Source # readStart :: Result v -> CodeGenFunction r (ReadIterator (ReadIt (Result v)) (Result v)) Source # readNext :: ReadIterator (ReadIt (Result v)) (Result v) -> CodeGenFunction r (Element (Result v), ReadIterator (ReadIt (Result v)) (Result v)) Source # | |
Read v => Read (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation 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 # | |
Read v => Read (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation 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 # | |
(Read va, Read vb, Size va ~ Size vb) => Read (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods extract :: Value Word32 -> (va, vb) -> CodeGenFunction r (Element (va, vb)) Source # dissect :: (va, vb) -> CodeGenFunction r [Element (va, vb)] Source # readStart :: (va, vb) -> CodeGenFunction r (ReadIterator (ReadIt (va, vb)) (va, vb)) Source # readNext :: ReadIterator (ReadIt (va, vb)) (va, vb) -> CodeGenFunction r (Element (va, vb), ReadIterator (ReadIt (va, vb)) (va, vb)) Source # | |
(Positive n, C a) => Read (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods extract :: Value Word32 -> T n a -> CodeGenFunction r (Element (T n a)) Source # dissect :: T n a -> CodeGenFunction r [Element (T n a)] Source # readStart :: T n a -> CodeGenFunction r (ReadIterator (ReadIt (T n a)) (T n a)) Source # readNext :: ReadIterator (ReadIt (T n a)) (T n a) -> CodeGenFunction r (Element (T n a), ReadIterator (ReadIt (T n a)) (T n a)) Source # | |
(Positive n, Phi a, Undefined a) => Read (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods extract :: Value Word32 -> Constant n a -> CodeGenFunction r (Element (Constant n a)) Source # dissect :: Constant n a -> CodeGenFunction r [Element (Constant n a)] Source # readStart :: Constant n a -> CodeGenFunction r (ReadIterator (ReadIt (Constant n a)) (Constant n a)) Source # readNext :: ReadIterator (ReadIt (Constant n a)) (Constant n a) -> CodeGenFunction r (Element (Constant n a), ReadIterator (ReadIt (Constant n a)) (Constant n a)) Source # | |
(Read va, Read vb, Read vc, Size va ~ Size vb, Size vb ~ Size vc) => Read (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods extract :: Value Word32 -> (va, vb, vc) -> CodeGenFunction r (Element (va, vb, vc)) Source # dissect :: (va, vb, vc) -> CodeGenFunction r [Element (va, vb, vc)] Source # readStart :: (va, vb, vc) -> CodeGenFunction r (ReadIterator (ReadIt (va, vb, vc)) (va, vb, vc)) Source # readNext :: ReadIterator (ReadIt (va, vb, vc)) (va, vb, vc) -> CodeGenFunction r (Element (va, vb, vc), ReadIterator (ReadIt (va, vb, vc)) (va, vb, vc)) Source # |
type family Element v Source #
Instances
type Element (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Element (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal | |
type Element (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Element (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Element (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Element (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class type Element (T n a) = T a | |
type Element (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Element (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class |
Instances
type ReadIt (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type ReadIt (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal | |
type ReadIt (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type ReadIt (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type ReadIt (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type ReadIt (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class type ReadIt (T n a) = T n a | |
type ReadIt (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type ReadIt (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class |
readNext :: Read v => ReadIterator (ReadIt v) v -> CodeGenFunction r (Element v, ReadIterator (ReadIt v) v) Source #
class (Read v, Phi (WriteIt v), Undefined (WriteIt v)) => Write v Source #
Minimal complete definition
Instances
Write v => Write (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods insert :: Value Word32 -> Element (T v) -> T v -> CodeGenFunction r (T v) Source # assemble :: [Element (T v)] -> CodeGenFunction r (T v) Source # writeStart :: CodeGenFunction r (WriteIterator (WriteIt (T v)) (T v)) Source # writeNext :: Element (T v) -> WriteIterator (WriteIt (T v)) (T v) -> CodeGenFunction r (WriteIterator (WriteIt (T v)) (T v)) Source # writeStop :: WriteIterator (WriteIt (T v)) (T v) -> CodeGenFunction r (T v) Source # | |
Write v => Write (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal Methods insert :: Value Word32 -> Element (Result v) -> Result v -> CodeGenFunction r (Result v) Source # assemble :: [Element (Result v)] -> CodeGenFunction r (Result v) Source # writeStart :: CodeGenFunction r (WriteIterator (WriteIt (Result v)) (Result v)) Source # writeNext :: Element (Result v) -> WriteIterator (WriteIt (Result v)) (Result v) -> CodeGenFunction r (WriteIterator (WriteIt (Result v)) (Result v)) Source # writeStop :: WriteIterator (WriteIt (Result v)) (Result v) -> CodeGenFunction r (Result v) Source # | |
Write v => Write (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation 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 # | |
Write v => Write (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation 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 # | |
(Write va, Write vb, Size va ~ Size vb) => Write (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods insert :: Value Word32 -> Element (va, vb) -> (va, vb) -> CodeGenFunction r (va, vb) Source # assemble :: [Element (va, vb)] -> CodeGenFunction r (va, vb) Source # writeStart :: CodeGenFunction r (WriteIterator (WriteIt (va, vb)) (va, vb)) Source # writeNext :: Element (va, vb) -> WriteIterator (WriteIt (va, vb)) (va, vb) -> CodeGenFunction r (WriteIterator (WriteIt (va, vb)) (va, vb)) Source # writeStop :: WriteIterator (WriteIt (va, vb)) (va, vb) -> CodeGenFunction r (va, vb) Source # | |
(Positive n, C a) => Write (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods insert :: Value Word32 -> Element (T n a) -> T n a -> CodeGenFunction r (T n a) Source # assemble :: [Element (T n a)] -> CodeGenFunction r (T n a) Source # writeStart :: CodeGenFunction r (WriteIterator (WriteIt (T n a)) (T n a)) Source # writeNext :: Element (T n a) -> WriteIterator (WriteIt (T n a)) (T n a) -> CodeGenFunction r (WriteIterator (WriteIt (T n a)) (T n a)) Source # writeStop :: WriteIterator (WriteIt (T n a)) (T n a) -> CodeGenFunction r (T n a) Source # | |
(Write va, Write vb, Write vc, Size va ~ Size vb, Size vb ~ Size vc) => Write (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods insert :: Value Word32 -> Element (va, vb, vc) -> (va, vb, vc) -> CodeGenFunction r (va, vb, vc) Source # assemble :: [Element (va, vb, vc)] -> CodeGenFunction r (va, vb, vc) Source # writeStart :: CodeGenFunction r (WriteIterator (WriteIt (va, vb, vc)) (va, vb, vc)) Source # writeNext :: Element (va, vb, vc) -> WriteIterator (WriteIt (va, vb, vc)) (va, vb, vc) -> CodeGenFunction r (WriteIterator (WriteIt (va, vb, vc)) (va, vb, vc)) Source # writeStop :: WriteIterator (WriteIt (va, vb, vc)) (va, vb, vc) -> CodeGenFunction r (va, vb, vc) Source # |
type family WriteIt v Source #
Instances
type WriteIt (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type WriteIt (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal | |
type WriteIt (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type WriteIt (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type WriteIt (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type WriteIt (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class type WriteIt (T n a) = T n a | |
type WriteIt (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class |
writeStart :: Write v => CodeGenFunction r (WriteIterator (WriteIt v) v) Source #
writeNext :: Write v => Element v -> WriteIterator (WriteIt v) v -> CodeGenFunction r (WriteIterator (WriteIt v) v) Source #
class (Write v, Phi (WriteIt v), Zero (WriteIt v)) => Zero v Source #
Minimal complete definition
Instances
Zero v => Zero (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
(Zero va, Zero vb, Size va ~ Size vb) => Zero (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods writeZero :: CodeGenFunction r (WriteIterator (WriteIt (va, vb)) (va, vb)) Source # | |
(Positive n, C a) => Zero (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods writeZero :: CodeGenFunction r (WriteIterator (WriteIt (T n a)) (T n a)) Source # | |
(Zero va, Zero vb, Zero vc, Size va ~ Size vb, Size vb ~ Size vc) => Zero (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods writeZero :: CodeGenFunction r (WriteIterator (WriteIt (va, vb, vc)) (va, vb, vc)) Source # |
newtype Iterator mode it v Source #
Constructors
Iterator it |
Instances
C it => C (Iterator mode it v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class Methods load :: Value (Ptr (Struct (Iterator mode it v))) -> CodeGenFunction r (Iterator mode it v) store :: Iterator mode it v -> Value (Ptr (Struct (Iterator mode it v))) -> CodeGenFunction r () decompose :: Value (Struct (Iterator mode it v)) -> CodeGenFunction r (Iterator mode it v) compose :: Iterator mode it v -> CodeGenFunction r (Value (Struct (Iterator mode it v))) | |
Phi it => Phi (Iterator mode it v) Source # | |
Undefined it => Undefined (Iterator mode it v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Struct (Iterator mode it v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class type Struct (Iterator mode it v) = Struct it |
type ReadIterator = Iterator ReadMode Source #
type WriteIterator = Iterator WriteMode Source #
class Positive (Size v) => Sized v Source #
The type parameter v
shall be a MultiVector
or MultiValue Serial
or a wrapper around one or more such things sharing the same size.
Instances
Sized value => Sized (T value) Source # | |
Sized v => Sized (Result v) Source # | |
Sized value => Sized (Nodes13 value) Source # | |
Sized value => Sized (Nodes02 value) Source # | |
(Sized va, Sized vb, Size va ~ Size vb) => Sized (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
Positive n => Sized (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
Positive n => Sized (Constant n a) Source # | |
(Sized va, Sized vb, Sized vc, Size va ~ Size vb, Size vb ~ Size vc) => Sized (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class |
Instances
type Size (T value) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Size (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal | |
type Size (Nodes13 value) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Size (Nodes02 value) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Size (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Size (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class type Size (T n a) = n | |
type Size (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Size (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class |
insertTraversable :: (Write 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, Write v) => CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v)) Source #
writeNextTraversable :: (Traversable f, Applicative f, Write v) => f (Element v) -> WriteIterator (f (WriteIt v)) (f v) -> CodeGenFunction r (WriteIterator (f (WriteIt v)) (f v)) Source #
writeStopTraversable :: (Traversable f, Applicative f, Write 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 :: (Write v, Element v ~ a) => Value Word32 -> (a -> CodeGenFunction r a) -> v -> CodeGenFunction r v Source #