| ghc-6.10.4: The GHC API | Contents | Index

MachRegs

Contents

Immediate values
Addressing modes
The `Reg` type
Global registers
Machine-dependent register-related stuff

Synopsis

data Imm

= ImmInt Int
| ImmInteger Integer
| ImmCLbl CLabel
| ImmLit Doc
| ImmIndex CLabel Int
| ImmFloat Rational
| ImmDouble Rational
| ImmConstantSum Imm Imm
| ImmConstantDiff Imm Imm

strImmLit
litToImm :: CmmLit -> Imm

data AddrMode

= AddrBaseIndex EABase EAIndex Displacement
| ImmAddr Imm Int

addrOffset :: AddrMode -> Int -> Maybe AddrMode
type RegNo = Int

data Reg

= RealReg !RegNo
| VirtualRegI !Unique
| VirtualRegHi !Unique
| VirtualRegF !Unique
| VirtualRegD !Unique

isRealReg :: Reg -> Bool
isVirtualReg :: Reg -> Bool
renameVirtualReg :: Unique -> Reg -> Reg

data RegClass

= RcInteger
| RcFloat
| RcDouble

regClass
trivColorable :: RegClass -> UniqSet Reg -> UniqSet Reg -> Bool
getHiVRegFromLo
mkVReg :: Unique -> MachRep -> Reg
get_GlobalReg_reg_or_addr :: GlobalReg -> Either Reg CmmExpr
allocatableRegs :: [RegNo]
argRegs :: RegNo -> [Reg]
allArgRegs :: [Reg]
callClobberedRegs :: [Reg]
allocatableRegsInClass :: RegClass -> Int
freeReg :: RegNo -> FastBool
spRel :: Int -> AddrMode

data EABase

= EABaseNone
| EABaseReg Reg
| EABaseRip

data EAIndex

= EAIndexNone
| EAIndex Reg Int

eax :: Reg
ebx :: Reg
ecx :: Reg
edx :: Reg
esi :: Reg
edi :: Reg
ebp :: Reg
esp :: Reg
fake0 :: Reg
fake1 :: Reg
fake2 :: Reg
fake3 :: Reg
fake4 :: Reg
fake5 :: Reg
addrModeRegs :: AddrMode -> [Reg]

Immediate values
data Imm

Constructors

ImmInt Int |
ImmInteger Integer |
ImmCLbl CLabel |
ImmLit Doc |
ImmIndex CLabel Int |
ImmFloat Rational |
ImmDouble Rational |
ImmConstantSum Imm Imm |
ImmConstantDiff Imm Imm |

strImmLit
litToImm :: CmmLit -> Imm
Addressing modes
data AddrMode

Constructors

AddrBaseIndex EABase EAIndex Displacement |
ImmAddr Imm Int |

addrOffset :: AddrMode -> Int -> Maybe AddrMode
The `Reg` type
type RegNo = Int
data Reg

Constructors

RealReg !RegNo |
VirtualRegI !Unique |
VirtualRegHi !Unique |
VirtualRegF !Unique |
VirtualRegD !Unique |

Instances

Eq Reg
Ord Reg
Show Reg
Outputable Reg
Uniquable Reg

isRealReg :: Reg -> Bool
isVirtualReg :: Reg -> Bool
renameVirtualReg :: Unique -> Reg -> Reg
data RegClass

Constructors

RcInteger |
RcFloat |
RcDouble |

Instances

Eq RegClass
Outputable RegClass
Uniquable RegClass

regClass
trivColorable :: RegClass -> UniqSet Reg -> UniqSet Reg -> Bool
getHiVRegFromLo
mkVReg :: Unique -> MachRep -> Reg
Global registers
get_GlobalReg_reg_or_addr :: GlobalReg -> Either Reg CmmExpr
Machine-dependent register-related stuff
allocatableRegs :: [RegNo]
argRegs :: RegNo -> [Reg]
allArgRegs :: [Reg]
callClobberedRegs :: [Reg]
allocatableRegsInClass :: RegClass -> Int
The number of regs in each class. We go via top level CAFs to ensure that we're not recomputing the length of these lists each time the fn is called.
freeReg :: RegNo -> FastBool
spRel :: Int -> AddrMode
data EABase

Constructors

EABaseNone |
EABaseReg Reg |
EABaseRip |

data EAIndex

Constructors

EAIndexNone |
EAIndex Reg Int |

eax :: Reg
ebx :: Reg
ecx :: Reg
edx :: Reg
esi :: Reg
edi :: Reg
ebp :: Reg
esp :: Reg
fake0 :: Reg
fake1 :: Reg
fake2 :: Reg
fake3 :: Reg
fake4 :: Reg
fake5 :: Reg
addrModeRegs :: AddrMode -> [Reg]
Produced by Haddock version 2.4.2