Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
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
Constant a |
Instances
class (Sized v, Phi (ReadIt v), Undefined (ReadIt v), Phi v, Undefined v) => Read v Source #
Instances
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 (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Element (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Element (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Element (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Element (va, vb) 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 (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type ReadIt (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type ReadIt (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type ReadIt (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type ReadIt (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type ReadIt (va, vb, vc) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class |
readStart :: Read v => v -> CodeGenFunction r (ReadIterator (ReadIt v) v) Source #
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 #
Instances
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 (Nodes02 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type WriteIt (Nodes13 v) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type WriteIt (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type WriteIt (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
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 #
writeStop :: Write v => WriteIterator (WriteIt v) v -> CodeGenFunction r v Source #
class (Write v, Phi (WriteIt v), Zero (WriteIt v)) => Zero v Source #
Instances
Zero v => Zero (T v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class writeZero :: CodeGenFunction r (WriteIterator (WriteIt (T v)) (T v)) Source # | |
(Positive n, C a) => Zero (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class writeZero :: CodeGenFunction r (WriteIterator (WriteIt (T n a)) (T n a)) Source # | |
(Zero va, Zero vb, Size va ~ Size vb) => Zero (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class writeZero :: CodeGenFunction r (WriteIterator (WriteIt (va, vb)) (va, vb)) 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 writeZero :: CodeGenFunction r (WriteIterator (WriteIt (va, vb, vc)) (va, vb, vc)) Source # |
writeZero :: Zero v => CodeGenFunction r (WriteIterator (WriteIt v) v) Source #
newtype Iterator mode it v Source #
Iterator it |
Instances
C it => C (Iterator mode it v) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class 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 # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class phi :: BasicBlock -> Iterator mode it v -> CodeGenFunction r (Iterator mode it v) # addPhi :: BasicBlock -> Iterator mode it v -> Iterator mode it v -> CodeGenFunction r () # | |
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 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 # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
Sized v => Sized (Result v) Source # | |
Defined in Synthesizer.LLVM.Filter.Universal | |
Sized value => Sized (Nodes02 value) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
Sized value => Sized (Nodes13 value) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
Positive n => Sized (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
Positive n => Sized (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
(Sized va, Sized vb, Size va ~ Size vb) => Sized (va, vb) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
(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 (Nodes02 value) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Size (Nodes13 value) Source # | |
Defined in Synthesizer.LLVM.Interpolation | |
type Size (T n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Size (Constant n a) Source # | |
Defined in Synthesizer.LLVM.Frame.SerialVector.Class | |
type Size (va, vb) 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 #
iterate :: Write v => (Element v -> CodeGenFunction r (Element v)) -> Element v -> CodeGenFunction r v Source #
reverse :: Write v => v -> CodeGenFunction r v Source #
shiftUpMultiZero :: (Write v, Additive (Element v)) => Int -> v -> CodeGenFunction r v Source #
shiftDownMultiZero :: (Write v, Additive (Element v)) => Int -> v -> CodeGenFunction r v Source #