| ghc-6.10.4: The GHC API | Contents | Index
CmmExpr
Synopsis
data CmmExpr
= CmmLit CmmLit
| CmmLoad CmmExpr MachRep
| CmmReg CmmReg
| CmmMachOp MachOp [CmmExpr]
| CmmRegOff CmmReg Int
| CmmStackSlot Area Int
cmmExprRep :: CmmExpr -> MachRep
maybeInvertCmmExpr :: CmmExpr -> Maybe CmmExpr
data CmmReg
= CmmLocal LocalReg
| CmmGlobal GlobalReg
cmmRegRep :: CmmReg -> MachRep
data CmmLit
= CmmInt Integer MachRep
| CmmFloat Rational MachRep
| CmmLabel CLabel
| CmmLabelOff CLabel Int
| CmmLabelDiffOff CLabel CLabel Int
cmmLitRep :: CmmLit -> MachRep
data LocalReg = LocalReg !Unique MachRep GCKind
localRegRep :: LocalReg -> MachRep
localRegGCFollow :: LocalReg -> GCKind
data GCKind
= GCKindPtr
| GCKindNonPtr
data GlobalReg
= VanillaReg !Int
| FloatReg !Int
| DoubleReg !Int
| LongReg !Int
| Sp
| SpLim
| Hp
| HpLim
| CurrentTSO
| CurrentNursery
| HpAlloc
| GCEnter1
| GCFun
| BaseReg
| PicBaseReg
globalRegRep :: GlobalReg -> MachRep
spReg :: CmmReg
hpReg :: CmmReg
spLimReg :: CmmReg
nodeReg :: CmmReg
node :: GlobalReg
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
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
data Area
= RegSlot LocalReg
| CallArea BlockId Int Int
type StackSlotMap = FiniteMap LocalReg CmmExpr
getSlot :: StackSlotMap -> LocalReg -> (StackSlotMap, CmmExpr)
mkCallArea :: BlockId -> [a] -> Maybe [b] -> Area
outgoingSlot :: Area -> CmmExpr
areaId :: Area -> BlockId
areaSize :: Area -> Int
narrowU :: MachRep -> Integer -> Integer
narrowS :: MachRep -> Integer -> Integer
Documentation
data CmmExpr
Constructors
CmmLit CmmLit |
CmmLoad CmmExpr MachRep |
CmmReg CmmReg |
CmmMachOp MachOp [CmmExpr] |
CmmRegOff CmmReg Int |
CmmStackSlot Area Int |
Instances
Eq CmmExpr
Outputable CmmExpr
UserOfLocalRegs CmmExpr
cmmExprRep :: CmmExpr -> MachRep
maybeInvertCmmExpr :: CmmExpr -> Maybe CmmExpr
data CmmReg
Constructors
CmmLocal LocalReg |
CmmGlobal GlobalReg |
Instances
Eq CmmReg
Ord CmmReg
Outputable CmmReg
DefinerOfLocalRegs CmmReg
UserOfLocalRegs CmmReg
cmmRegRep :: CmmReg -> MachRep
data CmmLit
Constructors
CmmInt Integer MachRep |
CmmFloat Rational MachRep |
CmmLabel CLabel |
CmmLabelOff CLabel Int |
CmmLabelDiffOff CLabel CLabel Int |
Instances
Eq CmmLit
Outputable CmmLit
cmmLitRep :: CmmLit -> MachRep
data LocalReg
Constructors
LocalReg !Unique MachRep GCKind | Parameters: 1. Identifier 2. Type 3. Should the GC follow as a pointer
Instances
Eq LocalReg
Ord LocalReg
Outputable LocalReg
Uniquable LocalReg
DefinerOfLocalRegs LocalReg
UserOfLocalRegs LocalReg
localRegRep :: LocalReg -> MachRep
localRegGCFollow :: LocalReg -> GCKind
data GCKind
Whether a `LocalReg` is a GC followable pointer
Constructors
GCKindPtr |
GCKindNonPtr |
Instances
Eq GCKind
data GlobalReg
Constructors
VanillaReg !Int |
FloatReg !Int |
DoubleReg !Int |
LongReg !Int |
Sp |
SpLim |
Hp |
HpLim |
CurrentTSO |
CurrentNursery |
HpAlloc |
GCEnter1 |
GCFun |
BaseReg |
PicBaseReg |
Instances
Eq GlobalReg
Ord GlobalReg
Show GlobalReg
Outputable GlobalReg
globalRegRep :: GlobalReg -> MachRep
spReg :: CmmReg
hpReg :: CmmReg
spLimReg :: CmmReg
nodeReg :: CmmReg
node :: GlobalReg
class DefinerOfLocalRegs a where
Methods
foldRegsDefd :: (b -> LocalReg -> b) -> b -> a -> b
Instances
DefinerOfLocalRegs LocalReg
DefinerOfLocalRegs CmmReg
DefinerOfLocalRegs Last
DefinerOfLocalRegs Middle
DefinerOfLocalRegs a => DefinerOfLocalRegs ([] a)
DefinerOfLocalRegs a => DefinerOfLocalRegs (CmmKinded a)
class UserOfLocalRegs a where
Methods
foldRegsUsed :: (b -> LocalReg -> b) -> b -> a -> b
Instances
UserOfLocalRegs RegSet
UserOfLocalRegs LocalReg
UserOfLocalRegs CmmReg
UserOfLocalRegs CmmExpr
UserOfLocalRegs CmmCallTarget
UserOfLocalRegs CmmStmt
UserOfLocalRegs Last
UserOfLocalRegs Middle
UserOfLocalRegs a => UserOfLocalRegs ([] a)
UserOfLocalRegs a => UserOfLocalRegs (ZLast a)
UserOfLocalRegs a => UserOfLocalRegs (CmmKinded a)
UserOfLocalRegs i => UserOfLocalRegs (GenBasicBlock i)
UserOfLocalRegs m => UserOfLocalRegs (ExtendWithSpills m)
filterRegsUsed :: UserOfLocalRegs e => (LocalReg -> Bool) -> e -> RegSet
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
data Area
A stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.
Constructors
RegSlot LocalReg |
CallArea BlockId Int Int |
Instances
Eq Area
Ord Area
Outputable Area
type StackSlotMap = FiniteMap LocalReg CmmExpr
getSlot :: StackSlotMap -> LocalReg -> (StackSlotMap, CmmExpr)
mkCallArea :: BlockId -> [a] -> Maybe [b] -> Area
outgoingSlot :: Area -> CmmExpr
areaId :: Area -> BlockId
areaSize :: Area -> Int
narrowU :: MachRep -> Integer -> Integer
narrowS :: MachRep -> Integer -> Integer
Produced by Haddock version 2.4.2