ghc-8.0.2: The GHC API

Safe Haskell | None
Language | Haskell2010

X86.Instr

# Documentation

data Instr Source #

Constructors

COMMENT FastString |
LOCATION Int Int Int String |
LDATA Section (Alignment, CmmStatics) |
NEWBLOCK BlockId |
DELTA Int |
MOV Format Operand Operand |
CMOV Cond Format Operand Reg |
MOVZxL Format Operand Operand |
MOVSxL Format Operand Operand |
LEA Format Operand Operand |
ADD Format Operand Operand |
ADC Format Operand Operand |
SUB Format Operand Operand |
SBB Format Operand Operand |
MUL Format Operand Operand |
MUL2 Format Operand |
IMUL Format Operand Operand |
IMUL2 Format Operand |
DIV Format Operand |
IDIV Format Operand |
ADD_CC Format Operand Operand |
SUB_CC Format Operand Operand |
AND Format Operand Operand |
OR Format Operand Operand |
XOR Format Operand Operand |
NOT Format Operand |
NEGI Format Operand |
BSWAP Format Reg |
SHL Format Operand Operand |
SAR Format Operand Operand |
SHR Format Operand Operand |
BT Format Imm Operand |
NOP |
GMOV Reg Reg |
GLD Format AddrMode Reg |
GST Format Reg AddrMode |
GLDZ Reg |
GLD1 Reg |
GFTOI Reg Reg |
GDTOI Reg Reg |
GITOF Reg Reg |
GITOD Reg Reg |
GDTOF Reg Reg |
GADD Format Reg Reg Reg |
GDIV Format Reg Reg Reg |
GSUB Format Reg Reg Reg |
GMUL Format Reg Reg Reg |
GCMP Cond Reg Reg |
GABS Format Reg Reg |
GNEG Format Reg Reg |
GSQRT Format Reg Reg |
GSIN Format CLabel CLabel Reg Reg |
GCOS Format CLabel CLabel Reg Reg |
GTAN Format CLabel CLabel Reg Reg |
GFREE |
CVTSS2SD Reg Reg |
CVTSD2SS Reg Reg |
CVTTSS2SIQ Format Operand Reg |
CVTTSD2SIQ Format Operand Reg |
CVTSI2SS Format Operand Reg |
CVTSI2SD Format Operand Reg |
FDIV Format Operand Operand |
SQRT Format Operand Reg |
TEST Format Operand Operand |
CMP Format Operand Operand |
SETCC Cond Operand |
PUSH Format Operand |
POP Format Operand |
JMP Operand [Reg] |
JXX Cond BlockId |
JXX_GBL Cond Imm |
JMP_TBL Operand [Maybe BlockId] Section CLabel |
CALL (Either Imm Reg) [Reg] |
CLTD Format |
FETCHGOT Reg |
FETCHPC Reg |
POPCNT Format Operand Reg |
BSF Format Operand Reg |
BSR Format Operand Reg |
PREFETCH PrefetchVariant Format Operand |
LOCK Instr |
XADD Format Operand Operand |
CMPXCHG Format Operand Operand |
MFENCE |

Instances

Instruction Instr # | Instruction instance for x86 instruction set.
Methods regUsageOfInstr :: Platform -> Instr -> RegUsage Source # patchRegsOfInstr :: Instr -> (Reg -> Reg) -> Instr Source # isJumpishInstr :: Instr -> Bool Source # jumpDestsOfInstr :: Instr -> [BlockId] Source # patchJumpInstr :: Instr -> (BlockId -> BlockId) -> Instr Source # mkSpillInstr :: DynFlags -> Reg -> Int -> Int -> Instr Source # mkLoadInstr :: DynFlags -> Reg -> Int -> Int -> Instr Source # takeDeltaInstr :: Instr -> Maybe Int Source # isMetaInstr :: Instr -> Bool Source # mkRegRegMoveInstr :: Platform -> Reg -> Reg -> Instr Source # takeRegRegMoveInstr :: Instr -> Maybe (Reg, Reg) Source # mkJumpInstr :: BlockId -> [Instr] Source # mkStackAllocInstr :: Platform -> Int -> Instr Source # mkStackDeallocInstr :: Platform -> Int -> Instr Source #

data Operand Source #

Constructors

OpReg Reg |
OpImm Imm |
OpAddr AddrMode |

data PrefetchVariant Source #

Constructors

NTA |
Lvl0 |
Lvl1 |
Lvl2 |

data JumpDest Source #

getJumpDestBlockId :: JumpDest -> Maybe BlockId Source #

canShortcut :: Instr -> Maybe JumpDest Source #

shortcutStatics :: (BlockId -> Maybe JumpDest) -> (Alignment, CmmStatics) -> (Alignment, CmmStatics) Source #

shortcutJump :: (BlockId -> Maybe JumpDest) -> Instr -> Instr Source #

i386_insert_ffrees :: [GenBasicBlock Instr] -> [GenBasicBlock Instr] Source #

allocMoreStack :: Platform -> Int -> NatCmmDecl statics Instr -> UniqSM (NatCmmDecl statics Instr) Source #

maxSpillSlots :: DynFlags -> Int Source #

archWordFormat :: Bool -> Format Source #