| Safe Haskell | None |
|---|
SPARC.CodeGen.Base
- type InstrBlock = OrdList Instr
- data CondCode = CondCode Bool Cond InstrBlock
- data ChildCode64 = ChildCode64 InstrBlock Reg
- data Amode = Amode AddrMode InstrBlock
- data Register
- = Fixed Size Reg InstrBlock
- | Any Size (Reg -> InstrBlock)
- setSizeOfRegister :: Register -> Size -> Register
- getRegisterReg :: CmmReg -> Reg
- mangleIndexTree :: CmmExpr -> CmmExpr
Documentation
type InstrBlock = OrdList Instr
InstrBlocks are the insn sequences generated by the insn selectors.
They are really trees of insns to facilitate fast appending, where a
left-to-right traversal yields the insns in the correct order.
data ChildCode64
a.k.a Register64 Reg is the lower 32-bit temporary which contains the result. Use getHiVRegFromLo to find the other VRegUnique.
Rules of this simplified insn selection game are therefore that the returned Reg may be modified
Constructors
| ChildCode64 InstrBlock Reg |
data Register
Code to produce a result into a register. If the result must go in a specific register, it comes out as Fixed. Otherwise, the parent can decide which register to put it in.
Constructors
| Fixed Size Reg InstrBlock | |
| Any Size (Reg -> InstrBlock) |
setSizeOfRegister :: Register -> Size -> Register
Change the size field in a Register.
getRegisterReg :: CmmReg -> Reg
Grab the Reg for a CmmReg
mangleIndexTree :: CmmExpr -> CmmExpr