ghc-lib-0.20201101: The GHC API, decoupled from GHC versions
Safe HaskellNone
LanguageHaskell2010

GHC.CmmToAsm.X86.Regs

Synopsis

Documentation

virtualRegSqueeze :: RegClass -> VirtualReg -> Int Source #

regSqueeze_class reg Calculate the maximum number of register colors that could be denied to a node of this class due to having this reg as a neighbour.

realRegSqueeze :: RegClass -> RealReg -> Int Source #

litToImm :: CmmLit -> Imm Source #

data AddrMode Source #

Constructors

AddrBaseIndex EABase EAIndex Displacement 
ImmAddr Imm Int 

spRel Source #

Arguments

:: Platform 
-> Int

desired stack offset in bytes, positive or negative

-> AddrMode 

argRegs :: RegNo -> [Reg] Source #

allArgRegs :: Platform -> [(Reg, Reg)] Source #

allIntArgRegs :: Platform -> [Reg] Source #

callClobberedRegs :: Platform -> [Reg] Source #

these are the regs which we cannot assume stay alive over a C call.

instrClobberedRegs :: Platform -> [Reg] Source #

allMachRegNos :: Platform -> [RegNo] Source #

The complete set of machine registers.

classOfRealReg :: Platform -> RealReg -> RegClass Source #

Take the class of a register.

showReg :: Platform -> RegNo -> String Source #

Get the name of the register with this number. NOTE: fixme, we dont track which "way" the XMM registers are used

data EABase Source #

Constructors

EABaseNone 
EABaseReg Reg 
EABaseRip 

data EAIndex Source #

Constructors

EAIndexNone 
EAIndex Reg Int 

eax :: Reg Source #

ebx :: Reg Source #

ecx :: Reg Source #

edx :: Reg Source #

esi :: Reg Source #

edi :: Reg Source #

ebp :: Reg Source #

esp :: Reg Source #

rax :: Reg Source #

rbx :: Reg Source #

rcx :: Reg Source #

rdx :: Reg Source #

rsi :: Reg Source #

rdi :: Reg Source #

rbp :: Reg Source #

rsp :: Reg Source #

r8 :: Reg Source #

r9 :: Reg Source #

r10 :: Reg Source #

r11 :: Reg Source #

r12 :: Reg Source #

r13 :: Reg Source #

r14 :: Reg Source #

r15 :: Reg Source #

lastint :: Platform -> RegNo Source #

xmm0 :: Reg Source #

xmm1 :: Reg Source #

xmm2 :: Reg Source #

xmm3 :: Reg Source #

xmm4 :: Reg Source #

xmm5 :: Reg Source #

xmm6 :: Reg Source #

xmm7 :: Reg Source #

xmm8 :: Reg Source #

xmm9 :: Reg Source #

xmm10 :: Reg Source #

xmm11 :: Reg Source #

xmm12 :: Reg Source #

xmm13 :: Reg Source #

xmm14 :: Reg Source #

xmm15 :: Reg Source #

xmm :: RegNo -> Reg Source #

firstxmm :: RegNo Source #

lastxmm :: Platform -> RegNo Source #

ripRel :: Displacement -> AddrMode Source #

allFPArgRegs :: Platform -> [Reg] Source #

on 64bit platforms we pass the first 8 float/double arguments in the xmm registers.

allocatableRegs :: Platform -> [RealReg] Source #