1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface MachDesc where
3 import AbsCSyn(AbstractC, CAddrMode, CExprMacro, CStmtMacro, MagicId, RegRelative, ReturnInfo)
4 import BasicLit(BasicLit)
5 import CLabelInfo(CLabel)
7 import ClosureInfo(ClosureInfo)
8 import CmdLineOpts(GlobalSwitch, SwitchResult)
9 import CostCentre(CostCentre)
10 import HeapOffs(HeapOffset)
12 import PreludePS(_PackedString)
13 import PreludeRatio(Ratio(..))
14 import Pretty(PprStyle)
15 import PrimKind(PrimKind)
16 import PrimOps(PrimOp)
18 import SplitUniq(SUniqSM(..), SplitUniqSupply)
19 import Stix(CodeSegment, StixReg, StixTree, StixTreeList(..))
21 import Unpretty(Unpretty(..))
32 data RegLoc = Save StixTree | Always StixTree
39 type SUniqSM a = SplitUniqSupply -> a
42 type StixTreeList = [StixTree] -> [StixTree]
43 data Target = Target Int (SMRep -> Int) (MagicId -> RegLoc) (PrimKind -> Int) (HeapOffset -> Int) (CAddrMode -> StixTree) (CAddrMode -> StixTree) ([MagicId] -> [StixTree], [MagicId] -> [StixTree], Int, Int, StixTree, StixTree, [CAddrMode] -> PrimOp -> [CAddrMode] -> SplitUniqSupply -> [StixTree] -> [StixTree], CStmtMacro -> [CAddrMode] -> SplitUniqSupply -> [StixTree] -> [StixTree], StixTree -> StixTree -> StixTree -> SplitUniqSupply -> [StixTree] -> [StixTree])
46 amodeToStix :: Target -> CAddrMode -> StixTree
47 amodeToStix' :: Target -> CAddrMode -> StixTree
48 charLikeClosureSize :: Target -> Int
49 dataHS :: Target -> StixTree
50 fixedHeaderSize :: Target -> Int
51 heapCheck :: Target -> StixTree -> StixTree -> StixTree -> SplitUniqSupply -> [StixTree] -> [StixTree]
52 hpRel :: Target -> HeapOffset -> Int
53 intLikeClosureSize :: Target -> Int
54 macroCode :: Target -> CStmtMacro -> [CAddrMode] -> SplitUniqSupply -> [StixTree] -> [StixTree]
55 mkTarget :: Int -> (SMRep -> Int) -> (MagicId -> RegLoc) -> (PrimKind -> Int) -> (HeapOffset -> Int) -> (CAddrMode -> StixTree) -> (CAddrMode -> StixTree) -> ([MagicId] -> [StixTree], [MagicId] -> [StixTree], Int, Int, StixTree, StixTree, [CAddrMode] -> PrimOp -> [CAddrMode] -> SplitUniqSupply -> [StixTree] -> [StixTree], CStmtMacro -> [CAddrMode] -> SplitUniqSupply -> [StixTree] -> [StixTree], StixTree -> StixTree -> StixTree -> SplitUniqSupply -> [StixTree] -> [StixTree]) -> Target
56 mutHS :: Target -> StixTree
57 primToStix :: Target -> [CAddrMode] -> PrimOp -> [CAddrMode] -> SplitUniqSupply -> [StixTree] -> [StixTree]
58 saveLoc :: Target -> MagicId -> StixTree
59 sizeof :: Target -> PrimKind -> Int
60 stgReg :: Target -> MagicId -> RegLoc
61 varHeaderSize :: Target -> SMRep -> Int
62 volatileRestores :: Target -> [MagicId] -> [StixTree]
63 volatileSaves :: Target -> [MagicId] -> [StixTree]