-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A compiler for Copilot targeting C99. -- -- This is a back-end from Copilot to the Atom DSL. Please see README.mk -- for more details. @package copilot-c99 @version 0.2 module Copilot.Compile.C99.Common mkTmpExtFunVarName :: Name -> Tag -> String typeSpec :: Type a -> String module Copilot.Compile.C99.Witness data ExprInst a ExprInst :: ExprInst a exprInst :: Type a -> ExprInst a data AssignInst a AssignInst :: AssignInst a assignInst :: Type a -> AssignInst a data EqEInst a EqEInst :: EqEInst a eqEInst :: Eq a => Type a -> EqEInst a data OrdEInst a OrdEInst :: OrdEInst a ordEInst :: Ord a => Type a -> OrdEInst a data NumEInst a NumEInst :: NumEInst a numEInst :: Num a => Type a -> NumEInst a data IntegralEInst a IntegralEInst :: IntegralEInst a integralEInst :: Integral a => Type a -> IntegralEInst a data FloatingEInst a FloatingEInst :: FloatingEInst a floatingEInst :: Floating a => Type a -> FloatingEInst a data BitsEInst a BitsEInst :: BitsEInst a bitsEInst :: Bits a => Type a -> BitsEInst a module Copilot.Compile.C99.Queue data Queue a dropFirstElemAndSnoc :: Assign a => E a -> Queue a -> Atom () lookahead :: Expr a => Int -> Queue a -> E a size :: Queue a -> QueueIndexType queue :: Expr a => String -> [a] -> Atom (Queue a) module Copilot.Compile.C99.MetaTable data StreamInfo StreamInfo :: Queue a -> V a -> Type a -> StreamInfo streamInfoQueue :: StreamInfo -> Queue a streamInfoTempVar :: StreamInfo -> V a streamInfoType :: StreamInfo -> Type a data ExternInfo ExternInfo :: V a -> Type a -> ExternInfo externInfoVar :: ExternInfo -> V a externInfoType :: ExternInfo -> Type a data ExternArrayInfo ExternArrayInfo :: V b -> Expr a -> Type a -> Type b -> ExternArrayInfo externArrayInfoVar :: ExternArrayInfo -> V b externArrayInfoIdxExpr :: ExternArrayInfo -> Expr a externArrayInfoIdxType :: ExternArrayInfo -> Type a externArrayInfoElemType :: ExternArrayInfo -> Type b data ExternFunInfo ExternFunInfo :: [UExpr] -> V a -> Type a -> ExternFunInfo externFunInfoArgs :: ExternFunInfo -> [UExpr] externFunInfoVar :: ExternFunInfo -> V a externFunInfoType :: ExternFunInfo -> Type a type StreamInfoMap = Map Id StreamInfo type ExternInfoMap = Map Name ExternInfo type ExternFunInfoMap = Map (Name, Tag) ExternFunInfo data MetaTable MetaTable :: StreamInfoMap -> ExternInfoMap -> ExternArrayInfoMap -> ExternFunInfoMap -> MetaTable streamInfoMap :: MetaTable -> StreamInfoMap externInfoMap :: MetaTable -> ExternInfoMap externArrayInfoMap :: MetaTable -> ExternArrayInfoMap externFunInfoMap :: MetaTable -> ExternFunInfoMap allocMetaTable :: Spec -> Atom MetaTable module Copilot.Compile.C99.C2A c2aExpr :: MetaTable -> Expr a -> E a c2aType :: Type a -> Type module Copilot.Compile.C99.Test.Iteration newtype Iteration Iteration :: (Map String [Output]) -> Iteration iterationOutputs :: Iteration -> (Map String [Output]) execTraceToIterations :: ExecTrace -> [Iteration] instance Eq Iteration instance Show Iteration module Copilot.Compile.C99.Test.ReadCSV iterationsFromCSV :: ByteString -> [Iteration] module Copilot.Compile.C99.Test.Driver driver :: ExternalEnv -> Int -> Spec -> Text module Copilot.Compile.C99.Params data Params Params :: Maybe String -> Bool -> Params prefix :: Params -> Maybe String verbose :: Params -> Bool defaultParams :: Params withPrefix :: Maybe String -> String -> String module Copilot.Compile.C99.Phases schedulePhases :: Params -> MetaTable -> Spec -> Atom () numberOfPhases :: Int instance Bounded Phase instance Eq Phase instance Enum Phase instance Ord Phase instance Show Phase module Copilot.Compile.C99.PrePostCode preCode :: Params -> Spec -> String postCode :: Params -> Spec -> String module Copilot.Compile.C99 compile :: Params -> Spec -> IO () module Copilot.Compile.C99.Test.CheckSpec checkSpec :: Int -> Spec -> IO Bool