611eead67d11d219fff686a07b9c70dd11760a05
[ghc-hetmet.git] / ghc / compiler / simplCore / SimplMonad.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface SimplMonad where
3 import BasicLit(BasicLit)
4 import BinderInfo(BinderInfo, DuplicationDanger, FunOrArg, InsideSCC)
5 import CoreSyn(CoreAtom, CoreBinding, CoreCaseAlternatives, CoreExpr)
6 import CostCentre(CostCentre)
7 import Id(Id)
8 import PrimOps(PrimOp)
9 import SimplEnv(SimplEnv)
10 import SplitUniq(SplitUniqSupply)
11 import TyVar(TyVar)
12 import UniType(UniType)
13 infixr 9 `thenSmpl`
14 infixr 9 `thenSmpl_`
15 data BinderInfo 
16 data CoreExpr a b 
17 data Id 
18 data PrimOp 
19 data SimplCount 
20 type SmplM a = SplitUniqSupply -> SimplCount -> (a, SimplCount)
21 data SplitUniqSupply 
22 data TickType   = UnfoldingDone | MagicUnfold | ConReused | CaseFloatFromLet | CaseOfCase | LetFloatFromLet | LetFloatFromCase | KnownBranch | Let2Case | CaseMerge | CaseElim | CaseIdentity | AtomicRhs | EtaExpansion | CaseOfError | TyBetaReduction | BetaReduction | FoldrBuild | FoldrAugment | Foldr_Nil | Foldr_List | FoldlBuild | FoldlAugment | Foldl_Nil | Foldl_List | Foldr_Cons_Nil | Foldr_Cons | Str_FoldrStr | Str_UnpackCons | Str_UnpackNil
23 data TyVar 
24 data UniType 
25 cloneId :: SimplEnv -> (Id, BinderInfo) -> SplitUniqSupply -> SimplCount -> (Id, SimplCount)
26 cloneIds :: SimplEnv -> [(Id, BinderInfo)] -> SplitUniqSupply -> SimplCount -> ([Id], SimplCount)
27 cloneTyVarSmpl :: TyVar -> SplitUniqSupply -> SimplCount -> (TyVar, SimplCount)
28 combineSimplCounts :: SimplCount -> SimplCount -> SimplCount
29 detailedSimplCount :: SplitUniqSupply -> SimplCount -> (SimplCount, SimplCount)
30 initSmpl :: SplitUniqSupply -> (SplitUniqSupply -> SimplCount -> (a, SimplCount)) -> (a, SimplCount)
31 mapAndUnzipSmpl :: (a -> SplitUniqSupply -> SimplCount -> ((b, c), SimplCount)) -> [a] -> SplitUniqSupply -> SimplCount -> (([b], [c]), SimplCount)
32 mapSmpl :: (a -> SplitUniqSupply -> SimplCount -> (b, SimplCount)) -> [a] -> SplitUniqSupply -> SimplCount -> ([b], SimplCount)
33 newId :: UniType -> SplitUniqSupply -> SimplCount -> (Id, SimplCount)
34 newIds :: [UniType] -> SplitUniqSupply -> SimplCount -> ([Id], SimplCount)
35 returnSmpl :: a -> SplitUniqSupply -> SimplCount -> (a, SimplCount)
36 showSimplCount :: SimplCount -> [Char]
37 simplCount :: SplitUniqSupply -> SimplCount -> (Int, SimplCount)
38 thenSmpl :: (SplitUniqSupply -> SimplCount -> (a, SimplCount)) -> (a -> SplitUniqSupply -> SimplCount -> (b, SimplCount)) -> SplitUniqSupply -> SimplCount -> (b, SimplCount)
39 thenSmpl_ :: (SplitUniqSupply -> SimplCount -> (a, SimplCount)) -> (SplitUniqSupply -> SimplCount -> (b, SimplCount)) -> SplitUniqSupply -> SimplCount -> (b, SimplCount)
40 tick :: TickType -> SplitUniqSupply -> SimplCount -> ((), SimplCount)
41 tickN :: TickType -> Int -> SplitUniqSupply -> SimplCount -> ((), SimplCount)
42 zeroSimplCount :: SimplCount
43 instance Eq TickType
44 instance Ix TickType
45 instance Ord TickType
46 instance Text TickType
47