| 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