[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgRetConv.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface CgRetConv where
3 import AbsCSyn(AbstractC, CAddrMode, MagicId)
4 import CLabelInfo(CLabel)
5 import Class(Class)
6 import Id(Id, IdDetails)
7 import IdInfo(IdInfo)
8 import Maybes(Labda)
9 import NameTypes(FullName)
10 import PrimKind(PrimKind)
11 import PrimOps(PrimOp)
12 import TyCon(TyCon)
13 import TyVar(TyVarTemplate)
14 import UniType(UniType)
15 import Unique(Unique)
16 data MagicId    {-# GHC_PRAGMA BaseReg | StkOReg | VanillaReg PrimKind Int# | FloatReg Int# | DoubleReg Int# | TagReg | RetReg | SpA | SuA | SpB | SuB | Hp | HpLim | LivenessReg | ActivityReg | StdUpdRetVecReg | StkStubReg | CurCostCentre | VoidReg #-}
17 data CLabel 
18 data CtrlReturnConvention   = VectoredReturn Int | UnvectoredReturn Int
19 data DataReturnConvention   = ReturnInHeap | ReturnInRegs [MagicId]
20 data Id         {-# GHC_PRAGMA Id Unique UniType IdInfo IdDetails #-}
21 data PrimKind   {-# GHC_PRAGMA PtrKind | CodePtrKind | DataPtrKind | RetKind | InfoPtrKind | CostCentreKind | CharKind | IntKind | WordKind | AddrKind | FloatKind | DoubleKind | MallocPtrKind | StablePtrKind | ArrayKind | ByteArrayKind | VoidKind #-}
22 data TyCon      {-# GHC_PRAGMA SynonymTyCon Unique FullName Int [TyVarTemplate] UniType Bool | DataTyCon Unique FullName Int [TyVarTemplate] [Id] [Class] Bool | TupleTyCon Int | PrimTyCon Unique FullName Int ([PrimKind] -> PrimKind) | SpecTyCon TyCon [Labda UniType] #-}
23 assignPrimOpResultRegs :: PrimOp -> [MagicId]
24         {-# GHC_PRAGMA _A_ 1 _U_ 1 _N_ _S_ "S" _N_ _N_ #-}
25 assignRegs :: [MagicId] -> [PrimKind] -> ([MagicId], [PrimKind])
26         {-# GHC_PRAGMA _A_ 2 _U_ 22 _N_ _S_ "LS" _N_ _N_ #-}
27 ctrlReturnConvAlg :: TyCon -> CtrlReturnConvention
28         {-# GHC_PRAGMA _A_ 1 _U_ 1 _N_ _S_ "S" _N_ _N_ #-}
29 dataReturnConvAlg :: Id -> DataReturnConvention
30         {-# GHC_PRAGMA _A_ 1 _U_ 1 _N_ _S_ "U(AAAS)" {_A_ 1 _U_ 2 _N_ _N_ _N_ _N_} _N_ _N_ #-}
31 dataReturnConvPrim :: PrimKind -> MagicId
32         {-# GHC_PRAGMA _A_ 1 _U_ 2 _N_ _S_ "E" _N_ _N_ #-}
33 makePrimOpArgsRobust :: PrimOp -> [CAddrMode] -> ([CAddrMode], Int, AbstractC)
34         {-# GHC_PRAGMA _A_ 2 _U_ 02 _N_ _S_ "AL" {_A_ 1 _U_ 2 _N_ _N_ _N_ _N_} _N_ _N_ #-}
35 mkLiveRegsBitMask :: [MagicId] -> Int
36         {-# GHC_PRAGMA _A_ 1 _U_ 2 _N_ _S_ "S" _N_ _N_ #-}
37 noLiveRegsMask :: Int
38         {-# GHC_PRAGMA _A_ 0 _N_ _N_ _N_ _F_ _IF_ARGS_ 0 0 X 2 _!_ I# [] [0#] _N_ #-}
39