- data E a where
- VRef :: V a -> E a
- Const :: a -> E a
- Cast :: (NumE a, NumE b) => E a -> E b
- Add :: NumE a => E a -> E a -> E a
- Sub :: NumE a => E a -> E a -> E a
- Mul :: NumE a => E a -> E a -> E a
- Div :: NumE a => E a -> E a -> E a
- Mod :: IntegralE a => E a -> E a -> E a
- Not :: E Bool -> E Bool
- And :: E Bool -> E Bool -> E Bool
- BWNot :: IntegralE a => E a -> E a
- BWAnd :: IntegralE a => E a -> E a -> E a
- BWOr :: IntegralE a => E a -> E a -> E a
- Shift :: IntegralE a => E a -> Int -> E a
- Eq :: (EqE a, OrdE a) => E a -> E a -> E Bool
- Lt :: OrdE a => E a -> E a -> E Bool
- Mux :: E Bool -> E a -> E a -> E a
- F2B :: E Float -> E Word32
- D2B :: E Double -> E Word64
- B2F :: E Word32 -> E Float
- B2D :: E Word64 -> E Double
- data V a = V UV
- data UE
- data UV = UV UVLocality
- data UVLocality
- data A a = A UA
- data UA = UA Int String [Const]
- class Eq a => Expr a where
- data Expression
- data Variable
- data Type
- data Const
- class Width a where
- class TypeOf a where
- bytes :: Width a => a -> Int
- ue :: Expr a => E a -> UE
- uv :: V a -> UV
- ueUpstream :: UE -> [UE]
- class (Num a, Expr a, EqE a, OrdE a) => NumE a
- class (NumE a, Integral a) => IntegralE a
- class (RealFloat a, NumE a, OrdE a) => FloatingE a
- class (Eq a, Expr a) => EqE a
- class (Eq a, Ord a, EqE a) => OrdE a
- true :: E Bool
- false :: E Bool
- value :: V a -> E a
- not_ :: E Bool -> E Bool
- (&&.) :: E Bool -> E Bool -> E Bool
- (||.) :: E Bool -> E Bool -> E Bool
- and_ :: [E Bool] -> E Bool
- or_ :: [E Bool] -> E Bool
- any_ :: (a -> E Bool) -> [a] -> E Bool
- all_ :: (a -> E Bool) -> [a] -> E Bool
- (==.) :: (EqE a, OrdE a) => E a -> E a -> E Bool
- (/=.) :: (EqE a, OrdE a) => E a -> E a -> E Bool
- (<.) :: OrdE a => E a -> E a -> E Bool
- (<=.) :: OrdE a => E a -> E a -> E Bool
- (>.) :: OrdE a => E a -> E a -> E Bool
- (>=.) :: OrdE a => E a -> E a -> E Bool
- min_ :: OrdE a => E a -> E a -> E a
- minimum_ :: OrdE a => [E a] -> E a
- max_ :: OrdE a => E a -> E a -> E a
- maximum_ :: OrdE a => [E a] -> E a
- limit :: OrdE a => E a -> E a -> E a -> E a
- div_ :: IntegralE a => E a -> E a -> E a
- mod_ :: IntegralE a => E a -> E a -> E a
- mux :: Expr a => E Bool -> E a -> E a -> E a
- (!) :: (Expr a, IntegralE b) => A a -> E b -> V a
- (!.) :: (Expr a, IntegralE b) => A a -> E b -> E a
- ubool :: Bool -> UE
- unot :: UE -> UE
- uand :: UE -> UE -> UE
- uor :: UE -> UE -> UE
- ueq :: UE -> UE -> UE
- umux :: UE -> UE -> UE -> UE
Types
A typed expression.
VRef :: V a -> E a | |
Const :: a -> E a | |
Cast :: (NumE a, NumE b) => E a -> E b | |
Add :: NumE a => E a -> E a -> E a | |
Sub :: NumE a => E a -> E a -> E a | |
Mul :: NumE a => E a -> E a -> E a | |
Div :: NumE a => E a -> E a -> E a | |
Mod :: IntegralE a => E a -> E a -> E a | |
Not :: E Bool -> E Bool | |
And :: E Bool -> E Bool -> E Bool | |
BWNot :: IntegralE a => E a -> E a | |
BWAnd :: IntegralE a => E a -> E a -> E a | |
BWOr :: IntegralE a => E a -> E a -> E a | |
Shift :: IntegralE a => E a -> Int -> E a | |
Eq :: (EqE a, OrdE a) => E a -> E a -> E Bool | |
Lt :: OrdE a => E a -> E a -> E Bool | |
Mux :: E Bool -> E a -> E a -> E a | |
F2B :: E Float -> E Word32 | |
D2B :: E Double -> E Word64 | |
B2F :: E Word32 -> E Float | |
B2D :: E Word64 -> E Double |
Variables updated by state transition rules.
An untyped term.
data UVLocality Source
UV locality.
class Eq a => Expr a whereSource
expression :: E a -> ExpressionSource
data Expression Source
The type of a E
.
ueUpstream :: UE -> [UE]Source
The list of UEs adjacent upstream of a UE.