rewire-frontend-2.8: A Haskell-to-Verilog/VHDL compiler, front end (GHC driver, Eidos, Synolon)
Safe HaskellTrustworthy
LanguageHaskell2010

ReWire.Builtins

Description

The compiler's primitive operations, shared between the rwc pipeline (Eidos IR) and the rewire-embedder pipeline (Atmo IR).

Documentation

data Builtin Source #

Instances

Instances details
NFData Builtin Source # 
Instance details

Defined in ReWire.Builtins

Methods

rnf :: Builtin -> () #

Data Builtin Source # 
Instance details

Defined in ReWire.Builtins

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Builtin -> c Builtin #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Builtin #

toConstr :: Builtin -> Constr #

dataTypeOf :: Builtin -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Builtin) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Builtin) #

gmapT :: (forall b. Data b => b -> b) -> Builtin -> Builtin #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Builtin -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Builtin -> r #

gmapQ :: (forall d. Data d => d -> u) -> Builtin -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Builtin -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Builtin -> m Builtin #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Builtin -> m Builtin #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Builtin -> m Builtin #

Bounded Builtin Source # 
Instance details

Defined in ReWire.Builtins

Enum Builtin Source # 
Instance details

Defined in ReWire.Builtins

Generic Builtin Source # 
Instance details

Defined in ReWire.Builtins

Associated Types

type Rep Builtin 
Instance details

Defined in ReWire.Builtins

type Rep Builtin = D1 ('MetaData "Builtin" "ReWire.Builtins" "rewire-frontend-2.8-6fn13RghMuk7zNqk4evZ4E" 'False) (((((C1 ('MetaCons "Error" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Extern" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Cryptol" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Bind" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Return" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Put" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Get" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Signal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Lift" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Extrude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecFromList" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "VecReplicate" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecReverse" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "VecSlice" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecRSlice" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "VecIndex" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "VecIndexProxy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecConcat" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "VecMap" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecGenerate" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Finite" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FiniteMinBound" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FiniteMaxBound" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ToFinite" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ToFiniteMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FromFinite" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NatVal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Bits" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Resize" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BitSlice" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "BitIndex" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Add" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Sub" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Mul" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Div" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Mod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Pow" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "LAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LOr" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "And" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Or" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "XOr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XNor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LShift" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RShift" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "RShiftArith" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Eq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Gt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "GtEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Lt" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LtEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LNot" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Not" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RAnd" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RNAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ROr" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "RNor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RXOr" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RXNor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MSBit" 'PrefixI 'False) (U1 :: Type -> Type)))))))

Methods

from :: Builtin -> Rep Builtin x #

to :: Rep Builtin x -> Builtin #

Show Builtin Source # 
Instance details

Defined in ReWire.Builtins

Eq Builtin Source # 
Instance details

Defined in ReWire.Builtins

Methods

(==) :: Builtin -> Builtin -> Bool #

(/=) :: Builtin -> Builtin -> Bool #

Ord Builtin Source # 
Instance details

Defined in ReWire.Builtins

Hashable Builtin Source # 
Instance details

Defined in ReWire.Builtins

Methods

hashWithSalt :: Int -> Builtin -> Int

hash :: Builtin -> Int

Pretty Builtin Source # 
Instance details

Defined in ReWire.Builtins

Methods

pretty :: Builtin -> Doc ann #

prettyList :: [Builtin] -> Doc ann

TextShow Builtin Source # 
Instance details

Defined in ReWire.Builtins

type Rep Builtin Source # 
Instance details

Defined in ReWire.Builtins

type Rep Builtin = D1 ('MetaData "Builtin" "ReWire.Builtins" "rewire-frontend-2.8-6fn13RghMuk7zNqk4evZ4E" 'False) (((((C1 ('MetaCons "Error" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Extern" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Cryptol" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Bind" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Return" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Put" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Get" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Signal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Lift" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Extrude" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecFromList" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "VecReplicate" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecReverse" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "VecSlice" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecRSlice" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "VecIndex" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "VecIndexProxy" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecConcat" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "VecMap" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "VecGenerate" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Finite" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FiniteMinBound" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "FiniteMaxBound" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ToFinite" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ToFiniteMod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "FromFinite" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "NatVal" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Bits" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Resize" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "BitSlice" 'PrefixI 'False) (U1 :: Type -> Type)))))) :+: ((((C1 ('MetaCons "BitIndex" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Add" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Sub" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Mul" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Div" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Mod" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Pow" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "LAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LOr" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "And" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Or" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "XOr" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "XNor" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LShift" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RShift" 'PrefixI 'False) (U1 :: Type -> Type))))) :+: (((C1 ('MetaCons "RShiftArith" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Eq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Gt" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "GtEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Lt" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "LtEq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LNot" 'PrefixI 'False) (U1 :: Type -> Type)))) :+: (((C1 ('MetaCons "Not" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RAnd" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RNAnd" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ROr" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "RNor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RXOr" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RXNor" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "MSBit" 'PrefixI 'False) (U1 :: Type -> Type)))))))