X86.Instr

ghc-8.10.1: 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 |
UNWIND CLabel UnwindTable |
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 |
X87Store Format AddrMode |
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 JumpDest] Section CLabel |
CALL | X86 call instruction
Fields (Either Imm Reg) Jump target [Reg] Arguments (required for register allocation)
CLTD Format |
FETCHGOT Reg |
FETCHPC Reg |
POPCNT Format Operand Reg |
LZCNT Format Operand Reg |
TZCNT Format Operand Reg |
BSF Format Operand Reg |
BSR Format Operand Reg |
PDEP Format Operand Operand Reg |
PEXT Format Operand Operand Reg |
PREFETCH PrefetchVariant Format Operand |
LOCK Instr |
XADD Format Operand Operand |
CMPXCHG Format Operand Operand |
MFENCE |

#### Instances

Instances details

Outputable Instr # |
Instance details Defined in X86.Ppr Methods ppr :: Instr -> SDoc Source # pprPrec :: Rational -> Instr -> SDoc Source #
Instruction Instr # | Instruction instance for x86 instruction set.
Instance details Defined in X86.Instr 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 #

Constructors

DestBlockId BlockId |
DestImm Imm |

#### Instances

Instances details

Outputable JumpDest # |
Instance details Defined in X86.Instr Methods ppr :: JumpDest -> SDoc Source # pprPrec :: Rational -> JumpDest -> SDoc 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 #

allocMoreStack :: Platform -> Int -> NatCmmDecl statics Instr -> UniqSM (NatCmmDecl statics Instr, [(BlockId, BlockId)]) Source #

maxSpillSlots :: DynFlags -> Int Source #

archWordFormat :: Bool -> Format Source #