X86.CodeGen

ghc-8.8.0.20190424: The GHC API

Safe Haskell | None
Language | Haskell2010

X86.CodeGen

Synopsis

- cmmTopCodeGen :: RawCmmDecl -> NatM [NatCmmDecl (Alignment, CmmStatics) Instr]
- generateJumpTableForInstr :: DynFlags -> Instr -> Maybe (NatCmmDecl (Alignment, CmmStatics) Instr)
- extractUnwindPoints :: [Instr] -> [UnwindPoint]
- invertCondBranches :: CFG -> LabelMap a -> [NatBasicBlock Instr] -> [NatBasicBlock Instr]
- type InstrBlock = OrdList Instr

# Documentation

cmmTopCodeGen :: RawCmmDecl -> NatM [NatCmmDecl (Alignment, CmmStatics) Instr] Source #

generateJumpTableForInstr :: DynFlags -> Instr -> Maybe (NatCmmDecl (Alignment, CmmStatics) Instr) Source #

extractUnwindPoints :: [Instr] -> [UnwindPoint] Source #

invertCondBranches :: CFG -> LabelMap a -> [NatBasicBlock Instr] -> [NatBasicBlock Instr] Source #

This works on the invariant that all jumps in the given blocks are required. Starting from there we try to make a few more jumps redundant by reordering them.

type InstrBlock = OrdList Instr Source #

`InstrBlock`s 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.