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

Safe HaskellNone
LanguageHaskell98

Synthesizer.LLVM.Filter.Allpass

Contents

Synopsis

Documentation

data Parameter a #

Instances
Functor Parameter 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Methods

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

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

Applicative Parameter 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Methods

pure :: a -> Parameter a #

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

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

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

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

Foldable Parameter 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Methods

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

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

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

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

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

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

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

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

toList :: Parameter a -> [a] #

null :: Parameter a -> Bool #

length :: Parameter a -> Int #

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

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

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

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

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

Traversable Parameter 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Methods

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

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

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

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

C a v => C a (Parameter v) 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Methods

scaleAndAccumulate :: (a, Parameter v) -> (Parameter v, Parameter v -> Parameter v) #

VectorValue n a => VectorValue n (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type VectorValueOf n (Parameter a) :: Type

Methods

vectorValueOf :: Vector n (Parameter a) -> VectorValueOf n (Parameter a)

Show a => Show (Parameter a) 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Storable a => Storable (Parameter a) 
Instance details

Defined in Synthesizer.Plain.Filter.Recursive.Allpass

Methods

sizeOf :: Parameter a -> Int #

alignment :: Parameter a -> Int #

peekElemOff :: Ptr (Parameter a) -> Int -> IO (Parameter a) #

pokeElemOff :: Ptr (Parameter a) -> Int -> Parameter a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Parameter a) #

pokeByteOff :: Ptr b -> Int -> Parameter a -> IO () #

peek :: Ptr (Parameter a) -> IO (Parameter a) #

poke :: Ptr (Parameter a) -> Parameter a -> IO () #

C a => C (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

pack :: Parameter a -> Struct (Parameter a)

unpack :: Struct (Parameter a) -> Parameter a

C a => C (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Struct (Parameter a) :: Type

Methods

load :: Value (Ptr (Struct (Parameter a))) -> CodeGenFunction r (Parameter a)

store :: Parameter a -> Value (Ptr (Struct (Parameter a))) -> CodeGenFunction r ()

decompose :: Value (Struct (Parameter a)) -> CodeGenFunction r (Parameter a)

compose :: Parameter a -> CodeGenFunction r (Value (Struct (Parameter a)))

C a => C (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Repr (Parameter a) :: Type

Methods

cons :: Parameter a -> T (Parameter a)

undef :: T (Parameter a)

zero :: T (Parameter a)

phi :: BasicBlock -> T (Parameter a) -> CodeGenFunction r (T (Parameter a))

addPhi :: BasicBlock -> T (Parameter a) -> T (Parameter a) -> CodeGenFunction r ()

Phi a => Phi (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

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

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

C a => C (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Repr n (Parameter a) :: Type

Methods

cons :: Positive n => Vector n (Parameter a) -> T n (Parameter a)

undef :: Positive n => T n (Parameter a)

zero :: Positive n => T n (Parameter a)

phi :: Positive n => BasicBlock -> T n (Parameter a) -> CodeGenFunction r (T n (Parameter a))

addPhi :: Positive n => BasicBlock -> T n (Parameter a) -> T n (Parameter a) -> CodeGenFunction r ()

shuffle :: (Positive n, Positive m) => ConstValue (Vector m Word32) -> T n (Parameter a) -> T n (Parameter a) -> CodeGenFunction r (T m (Parameter a))

extract :: Positive n => Value Word32 -> T n (Parameter a) -> CodeGenFunction r (T (Parameter a))

insert :: Positive n => Value Word32 -> T (Parameter a) -> T n (Parameter a) -> CodeGenFunction r (T n (Parameter a))

Undefined a => Undefined (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

undef :: Parameter a

Zero a => Zero (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

zero :: Parameter a

Value a => Value (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type ValueOf (Parameter a) :: Type

Methods

valueOf :: Parameter a -> ValueOf (Parameter a)

C a => C (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

pack :: Parameter a -> Struct (Parameter a)

unpack :: Struct (Parameter a) -> Parameter a

C v => C (Parameter v) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

insert :: Value Word32 -> Element (Parameter v) -> Parameter v -> CodeGenFunction r (Parameter v)

Simple v => Simple (Parameter v) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Element (Parameter v) :: Type

type Size (Parameter v) :: Type

Methods

shuffleMatch :: ConstValue (Vector (Size (Parameter v)) Word32) -> Parameter v -> CodeGenFunction r (Parameter v)

extract :: Value Word32 -> Parameter v -> CodeGenFunction r (Element (Parameter v))

C a => C (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

load :: Value (Ptr (Parameter a)) -> CodeGenFunction r (ValueOf (Parameter a))

store :: ValueOf (Parameter a) -> Value (Ptr (Parameter a)) -> CodeGenFunction r ()

MakeArguments (Parameter a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

makeArgs :: Functor f => f (Parameter a) -> Arguments f (Parameter a) Source #

(Write v, Element v ~ a, PseudoRing a, IntegerConstant a, C a, PseudoRing v, IntegerConstant v) => C (Parameter a) v v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.ControlledPacked

Associated Types

type Output (Parameter a) v :: Type Source #

type Input (Parameter a) v :: Type Source #

Methods

process :: T (Parameter a, v) v Source #

(C ae ve, Aggregate ae a, Aggregate ve v, C a, C v) => C (Parameter a) v v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.Controlled

Associated Types

type Input (Parameter a) v :: Type Source #

type Output (Parameter a) v :: Type Source #

Methods

process :: T (Parameter a, v) v Source #

Aggregate e mv => Aggregate (Parameter e) (Parameter mv) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type MultiValuesOf (Parameter e) :: Type

type ExpressionsOf (Parameter mv) :: Type

Methods

bundle :: Parameter e -> CodeGenFunction r (Parameter mv)

dissect :: Parameter mv -> Parameter e

type Repr n (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Repr n (Parameter a) = Parameter (Repr n a)
type VectorValueOf n (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type VectorValueOf n (Parameter a) = Parameter (VectorValueOf n a)
type Arguments f (Parameter a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Arguments f (Parameter a) = f (Parameter a)
type Struct (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Struct (Parameter a) = Struct a
type Repr (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Repr (Parameter a) = Parameter (Repr a)
type ValueOf (Parameter a) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type ValueOf (Parameter a) = Parameter (ValueOf a)
type Element (Parameter v) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Element (Parameter v) = Parameter (Element v)
type Size (Parameter v) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Size (Parameter v) = Size v
type ExpressionsOf (Parameter mv) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type ExpressionsOf (Parameter mv) = Parameter (ExpressionsOf mv)
type MultiValuesOf (Parameter e) 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type MultiValuesOf (Parameter e) = Parameter (MultiValuesOf e)
type Output (Parameter a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.ControlledPacked

type Output (Parameter a) v = v
type Input (Parameter a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.ControlledPacked

type Input (Parameter a) v = v
type Input (Parameter a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.Controlled

type Input (Parameter a) v = v
type Output (Parameter a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.Controlled

type Output (Parameter a) v = v

parameter #

Arguments

:: C a 
=> a

The phase shift to be achieved for the given frequency.

-> a

The frequency we specified the phase shift for.

-> Parameter a 

Compute the filter parameter such that a given phase shift is achieved at a certain frequency.

Both frequency and phase are with respect to unit 1. This is conform to Phase definition and allows to avoid Transcendental constraint in some cases since we need no factor 2*pi. See for instance parameterApprox. However, it is intended that the phase parameter is not of type Phase, because for the cascadeParameter we divide by the cascade order and then there is a difference between phase pi and 3*pi.

newtype CascadeParameter n a Source #

Constructors

CascadeParameter (Parameter a) 
Instances
VectorValue n a => VectorValue n (CascadeParameter m a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type VectorValueOf n (CascadeParameter m a) :: Type

Methods

vectorValueOf :: Vector n (CascadeParameter m a) -> VectorValueOf n (CascadeParameter m a)

Functor (CascadeParameter n) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

fmap :: (a -> b) -> CascadeParameter n a -> CascadeParameter n b #

(<$) :: a -> CascadeParameter n b -> CascadeParameter n a #

Applicative (CascadeParameter n) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Foldable (CascadeParameter n) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

fold :: Monoid m => CascadeParameter n m -> m #

foldMap :: Monoid m => (a -> m) -> CascadeParameter n a -> m #

foldr :: (a -> b -> b) -> b -> CascadeParameter n a -> b #

foldr' :: (a -> b -> b) -> b -> CascadeParameter n a -> b #

foldl :: (b -> a -> b) -> b -> CascadeParameter n a -> b #

foldl' :: (b -> a -> b) -> b -> CascadeParameter n a -> b #

foldr1 :: (a -> a -> a) -> CascadeParameter n a -> a #

foldl1 :: (a -> a -> a) -> CascadeParameter n a -> a #

toList :: CascadeParameter n a -> [a] #

null :: CascadeParameter n a -> Bool #

length :: CascadeParameter n a -> Int #

elem :: Eq a => a -> CascadeParameter n a -> Bool #

maximum :: Ord a => CascadeParameter n a -> a #

minimum :: Ord a => CascadeParameter n a -> a #

sum :: Num a => CascadeParameter n a -> a #

product :: Num a => CascadeParameter n a -> a #

Traversable (CascadeParameter n) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

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

sequenceA :: Applicative f => CascadeParameter n (f a) -> f (CascadeParameter n a) #

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

sequence :: Monad m => CascadeParameter n (m a) -> m (CascadeParameter n a) #

Storable a => Storable (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

C a => C (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

pack :: CascadeParameter n a -> Struct (CascadeParameter n a)

unpack :: Struct (CascadeParameter n a) -> CascadeParameter n a

C a => C (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Struct (CascadeParameter n a) :: Type

Methods

load :: Value (Ptr (Struct (CascadeParameter n a))) -> CodeGenFunction r (CascadeParameter n a)

store :: CascadeParameter n a -> Value (Ptr (Struct (CascadeParameter n a))) -> CodeGenFunction r ()

decompose :: Value (Struct (CascadeParameter n a)) -> CodeGenFunction r (CascadeParameter n a)

compose :: CascadeParameter n a -> CodeGenFunction r (Value (Struct (CascadeParameter n a)))

C a => C (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Repr (CascadeParameter n a) :: Type

Methods

cons :: CascadeParameter n a -> T (CascadeParameter n a)

undef :: T (CascadeParameter n a)

zero :: T (CascadeParameter n a)

phi :: BasicBlock -> T (CascadeParameter n a) -> CodeGenFunction r (T (CascadeParameter n a))

addPhi :: BasicBlock -> T (CascadeParameter n a) -> T (CascadeParameter n a) -> CodeGenFunction r ()

Phi a => Phi (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

phi :: BasicBlock -> CascadeParameter n a -> CodeGenFunction r (CascadeParameter n a)

addPhi :: BasicBlock -> CascadeParameter n a -> CascadeParameter n a -> CodeGenFunction r ()

C a => C (CascadeParameter m a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Repr n (CascadeParameter m a) :: Type

Methods

cons :: Positive n => Vector n (CascadeParameter m a) -> T n (CascadeParameter m a)

undef :: Positive n => T n (CascadeParameter m a)

zero :: Positive n => T n (CascadeParameter m a)

phi :: Positive n => BasicBlock -> T n (CascadeParameter m a) -> CodeGenFunction r (T n (CascadeParameter m a))

addPhi :: Positive n => BasicBlock -> T n (CascadeParameter m a) -> T n (CascadeParameter m a) -> CodeGenFunction r ()

shuffle :: (Positive n, Positive m0) => ConstValue (Vector m0 Word32) -> T n (CascadeParameter m a) -> T n (CascadeParameter m a) -> CodeGenFunction r (T m0 (CascadeParameter m a))

extract :: Positive n => Value Word32 -> T n (CascadeParameter m a) -> CodeGenFunction r (T (CascadeParameter m a))

insert :: Positive n => Value Word32 -> T (CascadeParameter m a) -> T n (CascadeParameter m a) -> CodeGenFunction r (T n (CascadeParameter m a))

Undefined a => Undefined (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

undef :: CascadeParameter n a

Zero a => Zero (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

zero :: CascadeParameter n a

Value a => Value (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type ValueOf (CascadeParameter n a) :: Type

Methods

valueOf :: CascadeParameter n a -> ValueOf (CascadeParameter n a)

C a => C (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

pack :: CascadeParameter n a -> Struct (CascadeParameter n a)

unpack :: Struct (CascadeParameter n a) -> CascadeParameter n a

C v => C (CascadeParameter n v) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

insert :: Value Word32 -> Element (CascadeParameter n v) -> CascadeParameter n v -> CodeGenFunction r (CascadeParameter n v)

Simple v => Simple (CascadeParameter n v) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type Element (CascadeParameter n v) :: Type

type Size (CascadeParameter n v) :: Type

Methods

shuffleMatch :: ConstValue (Vector (Size (CascadeParameter n v)) Word32) -> CascadeParameter n v -> CodeGenFunction r (CascadeParameter n v)

extract :: Value Word32 -> CascadeParameter n v -> CodeGenFunction r (Element (CascadeParameter n v))

C a => C (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Methods

load :: Value (Ptr (CascadeParameter n a)) -> CodeGenFunction r (ValueOf (CascadeParameter n a))

store :: ValueOf (CascadeParameter n a) -> Value (Ptr (CascadeParameter n a)) -> CodeGenFunction r ()

MakeArguments (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

(Natural n, Write v, Element v ~ a, PseudoRing a, IntegerConstant a, C a, PseudoRing v, RationalConstant v) => C (CascadeParameter n a) v v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.ControlledPacked

Associated Types

type Output (CascadeParameter n a) v :: Type Source #

type Input (CascadeParameter n a) v :: Type Source #

Methods

process :: T (CascadeParameter n a, v) v Source #

(C ae ve, Aggregate ae a, Aggregate ve v, C a, C v, Natural n) => C (CascadeParameter n a) v v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.Controlled

Associated Types

type Input (CascadeParameter n a) v :: Type Source #

type Output (CascadeParameter n a) v :: Type Source #

Methods

process :: T (CascadeParameter n a, v) v Source #

(Aggregate e mv, n ~ m) => Aggregate (CascadeParameter n e) (CascadeParameter m mv) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

Associated Types

type MultiValuesOf (CascadeParameter n e) :: Type

type ExpressionsOf (CascadeParameter m mv) :: Type

Methods

bundle :: CascadeParameter n e -> CodeGenFunction r (CascadeParameter m mv)

dissect :: CascadeParameter m mv -> CascadeParameter n e

type Repr n (CascadeParameter m a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Repr n (CascadeParameter m a) = Parameter (Repr n a)
type VectorValueOf n (CascadeParameter m a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type VectorValueOf n (CascadeParameter m a) = Parameter (VectorValueOf n a)
type Arguments f (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Struct (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Struct (CascadeParameter n a) = Struct a
type Repr (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Repr (CascadeParameter n a) = Parameter (Repr a)
type ValueOf (CascadeParameter n a) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type ValueOf (CascadeParameter n a) = Parameter (ValueOf a)
type Element (CascadeParameter n v) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Element (CascadeParameter n v) = CascadeParameter n (Element v)
type Size (CascadeParameter n v) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type Size (CascadeParameter n v) = Size v
type ExpressionsOf (CascadeParameter m mv) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type ExpressionsOf (CascadeParameter m mv) = CascadeParameter m (ExpressionsOf mv)
type MultiValuesOf (CascadeParameter n e) Source # 
Instance details

Defined in Synthesizer.LLVM.Filter.Allpass

type MultiValuesOf (CascadeParameter n e) = CascadeParameter n (MultiValuesOf e)
type Output (CascadeParameter n a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.ControlledPacked

type Output (CascadeParameter n a) v = v
type Input (CascadeParameter n a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.ControlledPacked

type Input (CascadeParameter n a) v = v
type Input (CascadeParameter n a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.Controlled

type Input (CascadeParameter n a) v = v
type Output (CascadeParameter n a) v Source # 
Instance details

Defined in Synthesizer.LLVM.Causal.Controlled

type Output (CascadeParameter n a) v = v

causal :: (C ae ve, Aggregate ae a, Aggregate ve v, C v) => T (Parameter a, v) v Source #

cascade :: Natural n => (C ae ve, Aggregate ae a, Aggregate ve v, C v) => (Phi a, Undefined a) => (Phi v, Undefined v) => T (CascadeParameter n a, v) v Source #

phaser :: Natural n => (C ae ve, Aggregate ae a, Aggregate ve v, C v) => (Phi a, Undefined a) => (Phi v, Undefined v) => (RationalConstant a, a ~ Scalar v, PseudoModule v) => T (CascadeParameter n a, v) v Source #

cascadePipeline :: (Positive n, C a, ValueOf a ~ ar, PseudoRing a, IntegerConstant a, C a, Vector n a) => T (T (CascadeParameter n a), T a) (T a) Source #

Fast implementation of cascade using vector instructions. However, there must be at least one pipeline stage, primitive element types and we get a delay by the number of pipeline stages.

phaserPipeline :: (Positive n, PseudoRing a, RationalConstant a, C a, Vector n a) => T (CascadeParameter n (T a), T a) (T a) Source #

causalPacked :: (Write v, Element v ~ a, PseudoRing a, IntegerConstant a, C a, PseudoRing v, IntegerConstant v) => T (Parameter a, v) v Source #

cascadePacked :: (Natural n, Write v, Element v ~ a, PseudoRing a, IntegerConstant a, C a, PseudoRing v, RationalConstant v) => T (CascadeParameter n a, v) v Source #

phaserPacked :: (Natural n, Write v, Element v ~ a, PseudoRing a, IntegerConstant a, C a, PseudoRing v, RationalConstant v) => T (CascadeParameter n a, v) v Source #

Orphan instances

VectorValue n a => VectorValue n (Parameter a) Source # 
Instance details

Associated Types

type VectorValueOf n (Parameter a) :: Type

Methods

vectorValueOf :: Vector n (Parameter a) -> VectorValueOf n (Parameter a)

C a => C (Parameter a) Source # 
Instance details

Methods

pack :: Parameter a -> Struct (Parameter a)

unpack :: Struct (Parameter a) -> Parameter a

C a => C (Parameter a) Source # 
Instance details

Associated Types

type Struct (Parameter a) :: Type

Methods

load :: Value (Ptr (Struct (Parameter a))) -> CodeGenFunction r (Parameter a)

store :: Parameter a -> Value (Ptr (Struct (Parameter a))) -> CodeGenFunction r ()

decompose :: Value (Struct (Parameter a)) -> CodeGenFunction r (Parameter a)

compose :: Parameter a -> CodeGenFunction r (Value (Struct (Parameter a)))

C a => C (Parameter a) Source # 
Instance details

Associated Types

type Repr (Parameter a) :: Type

Methods

cons :: Parameter a -> T (Parameter a)

undef :: T (Parameter a)

zero :: T (Parameter a)

phi :: BasicBlock -> T (Parameter a) -> CodeGenFunction r (T (Parameter a))

addPhi :: BasicBlock -> T (Parameter a) -> T (Parameter a) -> CodeGenFunction r ()

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

Methods

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

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

C a => C (Parameter a) Source # 
Instance details

Associated Types

type Repr n (Parameter a) :: Type

Methods

cons :: Positive n => Vector n (Parameter a) -> T n (Parameter a)

undef :: Positive n => T n (Parameter a)

zero :: Positive n => T n (Parameter a)

phi :: Positive n => BasicBlock -> T n (Parameter a) -> CodeGenFunction r (T n (Parameter a))

addPhi :: Positive n => BasicBlock -> T n (Parameter a) -> T n (Parameter a) -> CodeGenFunction r ()

shuffle :: (Positive n, Positive m) => ConstValue (Vector m Word32) -> T n (Parameter a) -> T n (Parameter a) -> CodeGenFunction r (T m (Parameter a))

extract :: Positive n => Value Word32 -> T n (Parameter a) -> CodeGenFunction r (T (Parameter a))

insert :: Positive n => Value Word32 -> T (Parameter a) -> T n (Parameter a) -> CodeGenFunction r (T n (Parameter a))

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

Methods

undef :: Parameter a

Zero a => Zero (Parameter a) Source # 
Instance details

Methods

zero :: Parameter a

Value a => Value (Parameter a) Source # 
Instance details

Associated Types

type ValueOf (Parameter a) :: Type

Methods

valueOf :: Parameter a -> ValueOf (Parameter a)

C a => C (Parameter a) Source # 
Instance details

Methods

pack :: Parameter a -> Struct (Parameter a)

unpack :: Struct (Parameter a) -> Parameter a

C v => C (Parameter v) Source # 
Instance details

Methods

insert :: Value Word32 -> Element (Parameter v) -> Parameter v -> CodeGenFunction r (Parameter v)

Simple v => Simple (Parameter v) Source # 
Instance details

Associated Types

type Element (Parameter v) :: Type

type Size (Parameter v) :: Type

Methods

shuffleMatch :: ConstValue (Vector (Size (Parameter v)) Word32) -> Parameter v -> CodeGenFunction r (Parameter v)

extract :: Value Word32 -> Parameter v -> CodeGenFunction r (Element (Parameter v))

C a => C (Parameter a) Source # 
Instance details

Methods

load :: Value (Ptr (Parameter a)) -> CodeGenFunction r (ValueOf (Parameter a))

store :: ValueOf (Parameter a) -> Value (Ptr (Parameter a)) -> CodeGenFunction r ()

MakeArguments (Parameter a) Source # 
Instance details

Methods

makeArgs :: Functor f => f (Parameter a) -> Arguments f (Parameter a) Source #

Aggregate e mv => Aggregate (Parameter e) (Parameter mv) Source # 
Instance details

Associated Types

type MultiValuesOf (Parameter e) :: Type

type ExpressionsOf (Parameter mv) :: Type

Methods

bundle :: Parameter e -> CodeGenFunction r (Parameter mv)

dissect :: Parameter mv -> Parameter e