| Safe Haskell | None |
|---|
CmmExpr
- 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
- | CCCS
- | CurrentTSO
- | CurrentNursery
- | HpAlloc
- | EagerBlackholeInfo
- | GCEnter1
- | GCFun
- | BaseReg
- | PicBaseReg
- globalRegType :: GlobalReg -> CmmType
- spReg :: CmmReg
- hpReg :: CmmReg
- spLimReg :: CmmReg
- nodeReg :: CmmReg
- node :: GlobalReg
- baseReg :: CmmReg
- 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
- plusRegSet :: RegSet -> RegSet -> RegSet
- minusRegSet :: RegSet -> RegSet -> RegSet
- timesRegSet :: 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
Constructors
| CmmInt Integer Width | |
| CmmFloat Rational Width | |
| CmmLabel CLabel | |
| CmmLabelOff CLabel Int | |
| CmmLabelDiffOff CLabel CLabel Int | |
| CmmBlock BlockId | |
| CmmHighStackMark |
Instances
cmmLitType :: CmmLit -> CmmTypeSource
class DefinerOfLocalRegs a whereSource
Methods
foldRegsDefd :: (b -> LocalReg -> b) -> b -> a -> bSource
Instances
| 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
Methods
foldRegsUsed :: (b -> LocalReg -> b) -> b -> a -> bSource
Instances
| UserOfLocalRegs RegSet | |
| UserOfLocalRegs LocalReg | |
| UserOfLocalRegs CmmReg | |
| UserOfLocalRegs CmmExpr | |
| UserOfLocalRegs ForeignTarget | |
| UserOfLocalRegs CmmCallTarget | |
| UserOfLocalRegs CmmStmt | enable us to fold used registers over '[CmmActual]' and '[CmmFormal]' |
| 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
Methods
foldSlotsDefd :: (b -> SubArea -> b) -> b -> a -> bSource
Instances
| DefinerOfSlots SubArea | |
| DefinerOfSlots a => DefinerOfSlots [a] | |
| DefinerOfSlots (CmmNode e x) |
class UserOfSlots a whereSource
Methods
foldSlotsUsed :: (b -> SubArea -> b) -> b -> a -> bSource
Instances
| UserOfSlots CmmExpr | |
| UserOfSlots ForeignTarget | |
| UserOfSlots CmmCallTarget | |
| 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
plusRegSet :: RegSet -> RegSet -> RegSetSource
minusRegSet :: RegSet -> RegSet -> RegSetSource
timesRegSet :: 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.
Instances
type SubAreaSet = Map Area [SubArea]Source
isStackSlotOf :: CmmExpr -> LocalReg -> BoolSource
module CmmMachOp
module CmmType