- data CmmExpr
- cmmExprType :: CmmExpr -> CmmType
- cmmExprWidth :: CmmExpr -> Width
- maybeInvertCmmExpr :: CmmExpr -> Maybe CmmExpr
- data CmmReg
- cmmRegType :: CmmReg -> CmmType
- data CmmLit
- cmmLitType :: CmmLit -> CmmType
- data LocalReg = LocalReg !Unique CmmType
- localRegType :: LocalReg -> CmmType
- data GlobalReg
- = VanillaReg !Int VGcPtr
- | FloatReg !Int
- | DoubleReg !Int
- | LongReg !Int
- | Sp
- | SpLim
- | Hp
- | HpLim
- | CurrentTSO
- | CurrentNursery
- | HpAlloc
- | EagerBlackholeInfo
- | GCEnter1
- | GCFun
- | BaseReg
- | PicBaseReg
- globalRegType :: GlobalReg -> CmmType
- baseReg, nodeReg, spLimReg, hpReg, spReg :: CmmReg
- node :: GlobalReg
- data VGcPtr
- vgcFlag :: CmmType -> VGcPtr
- class DefinerOfLocalRegs a where
- foldRegsDefd :: (b -> LocalReg -> b) -> b -> a -> b
- class UserOfLocalRegs a where
- foldRegsUsed :: (b -> LocalReg -> b) -> b -> a -> b
- filterRegsUsed :: UserOfLocalRegs e => (LocalReg -> Bool) -> e -> RegSet
- class DefinerOfSlots a where
- foldSlotsDefd :: (b -> SubArea -> b) -> b -> a -> b
- class UserOfSlots a where
- foldSlotsUsed :: (b -> SubArea -> b) -> b -> a -> b
- type RegSet = UniqSet LocalReg
- emptyRegSet :: RegSet
- elemRegSet :: LocalReg -> RegSet -> Bool
- extendRegSet :: RegSet -> LocalReg -> RegSet
- deleteFromRegSet :: RegSet -> LocalReg -> RegSet
- mkRegSet :: [LocalReg] -> RegSet
- minusRegSet, timesRegSet, plusRegSet :: RegSet -> RegSet -> RegSet
- regUsedIn :: CmmReg -> CmmExpr -> Bool
- regSlot :: LocalReg -> CmmExpr
- data Area
- data AreaId
- type SubArea = (Area, Int, Int)
- type SubAreaSet = Map Area [SubArea]
- type AreaMap = Map Area Int
- isStackSlotOf :: CmmExpr -> LocalReg -> Bool
- module CmmMachOp
- module CmmType
Documentation
cmmExprType :: CmmExpr -> CmmTypeSource
cmmExprWidth :: CmmExpr -> WidthSource
cmmRegType :: CmmReg -> CmmTypeSource
cmmLitType :: CmmLit -> CmmTypeSource
class DefinerOfLocalRegs a whereSource
foldRegsDefd :: (b -> LocalReg -> b) -> b -> a -> bSource
DefinerOfLocalRegs LocalReg | |
DefinerOfLocalRegs CmmReg | |
DefinerOfLocalRegs a => DefinerOfLocalRegs [a] | |
DefinerOfLocalRegs a => DefinerOfLocalRegs (Maybe a) | |
DefinerOfLocalRegs a => DefinerOfLocalRegs (CmmHinted a) | |
DefinerOfLocalRegs (CmmNode e x) | |
DefinerOfLocalRegs (n e x) => DefinerOfLocalRegs (WithRegUsage n e x) |
class UserOfLocalRegs a whereSource
foldRegsUsed :: (b -> LocalReg -> b) -> b -> a -> bSource
UserOfLocalRegs RegSet | |
UserOfLocalRegs LocalReg | |
UserOfLocalRegs CmmReg | |
UserOfLocalRegs CmmExpr | |
UserOfLocalRegs CmmCallTarget | |
UserOfLocalRegs CmmStmt | enable us to fold used registers over '[CmmActual]' and '[CmmFormal]' |
UserOfLocalRegs ForeignTarget | |
UserOfLocalRegs a => UserOfLocalRegs [a] | |
UserOfLocalRegs a => UserOfLocalRegs (CmmHinted a) | |
UserOfLocalRegs i => UserOfLocalRegs (GenBasicBlock i) | |
UserOfLocalRegs (CmmNode e x) | |
UserOfLocalRegs (n e x) => UserOfLocalRegs (WithRegUsage n e x) |
filterRegsUsed :: UserOfLocalRegs e => (LocalReg -> Bool) -> e -> RegSetSource
class DefinerOfSlots a whereSource
foldSlotsDefd :: (b -> SubArea -> b) -> b -> a -> bSource
DefinerOfSlots SubArea | |
DefinerOfSlots a => DefinerOfSlots [a] | |
DefinerOfSlots (CmmNode e x) |
class UserOfSlots a whereSource
foldSlotsUsed :: (b -> SubArea -> b) -> b -> a -> bSource
UserOfSlots CmmExpr | |
UserOfSlots CmmCallTarget | |
UserOfSlots ForeignTarget | |
UserOfSlots a => UserOfSlots [a] | |
UserOfSlots a => UserOfSlots (CmmHinted a) | |
UserOfSlots (CmmNode e x) |
elemRegSet :: LocalReg -> RegSet -> BoolSource
extendRegSet :: RegSet -> LocalReg -> RegSetSource
deleteFromRegSet :: RegSet -> LocalReg -> RegSetSource
minusRegSet, timesRegSet, plusRegSet :: RegSet -> RegSet -> RegSetSource
A stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.
type SubAreaSet = Map Area [SubArea]Source
isStackSlotOf :: CmmExpr -> LocalReg -> BoolSource
module CmmMachOp
module CmmType