ghc-lib-parser-9.14.1.20251220: The GHC API, decoupled from GHC versions
Safe HaskellIgnore
LanguageGHC2021

GHC.Cmm.Expr

Synopsis

Documentation

data CmmExpr #

Instances

Instances details
Show CmmExpr # 
Instance details

Defined in GHC.Cmm.Expr

Eq CmmExpr # 
Instance details

Defined in GHC.Cmm.Expr

Methods

(==) :: CmmExpr -> CmmExpr -> Bool #

(/=) :: CmmExpr -> CmmExpr -> Bool #

(Ord r, UserOfRegs r CmmReg) => UserOfRegs r CmmExpr # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> r -> b) -> b -> CmmExpr -> b #

OutputableP Platform CmmExpr # 
Instance details

Defined in GHC.Cmm.Expr

Methods

pdoc :: Platform -> CmmExpr -> SDoc #

cmmExprAlignment :: CmmExpr -> Alignment #

Returns an alignment in bytes of a CmmExpr when it's a statically known integer constant, otherwise returns an alignment of 1 byte. The caller is responsible for using with a sensible CmmExpr argument.

data CmmReg #

Instances

Instances details
Show CmmReg # 
Instance details

Defined in GHC.Cmm.Reg

Outputable CmmReg # 
Instance details

Defined in GHC.Cmm.Reg

Methods

ppr :: CmmReg -> SDoc #

Eq CmmReg # 
Instance details

Defined in GHC.Cmm.Reg

Methods

(==) :: CmmReg -> CmmReg -> Bool #

(/=) :: CmmReg -> CmmReg -> Bool #

Ord CmmReg # 
Instance details

Defined in GHC.Cmm.Reg

DefinerOfRegs GlobalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs GlobalRegUse CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b #

DefinerOfRegs LocalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

UserOfRegs GlobalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

UserOfRegs GlobalRegUse CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b #

UserOfRegs LocalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

data CmmLit #

Instances

Instances details
Show CmmLit # 
Instance details

Defined in GHC.Cmm.Expr

Outputable CmmLit # 
Instance details

Defined in GHC.Cmm.Expr

Methods

ppr :: CmmLit -> SDoc #

Eq CmmLit # 
Instance details

Defined in GHC.Cmm.Expr

Methods

(==) :: CmmLit -> CmmLit -> Bool #

(/=) :: CmmLit -> CmmLit -> Bool #

OutputableP Platform CmmLit # 
Instance details

Defined in GHC.Cmm.Expr

Methods

pdoc :: Platform -> CmmLit -> SDoc #

data LocalReg #

Constructors

LocalReg !Unique !CmmType

Parameters: 1. Identifier 2. Type

Instances

Instances details
Show LocalReg # 
Instance details

Defined in GHC.Cmm.Reg

Uniquable LocalReg # 
Instance details

Defined in GHC.Cmm.Reg

Methods

getUnique :: LocalReg -> Unique #

Outputable LocalReg # 
Instance details

Defined in GHC.Cmm.Reg

Methods

ppr :: LocalReg -> SDoc #

Eq LocalReg # 
Instance details

Defined in GHC.Cmm.Reg

Ord LocalReg # 
Instance details

Defined in GHC.Cmm.Reg

DefinerOfRegs LocalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

UserOfRegs LocalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs LocalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

UserOfRegs LocalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

data GlobalReg #

An abstract global register for the STG machine.

See also GlobalRegUse, which denotes a usage of a register at a particular type (e.g. using a 32-bit wide register to store an 8-bit wide value), as per Note [GlobalReg vs GlobalRegUse].

Constructors

VanillaReg !Int 
FloatReg !Int 
DoubleReg !Int 
LongReg !Int 
XmmReg !Int 
YmmReg !Int 
ZmmReg !Int 
Sp

Stack ptr; points to last occupied stack location.

SpLim

Stack limit

Hp

Heap ptr; points to last occupied heap location.

HpLim

Heap limit register

CCCS

Current cost-centre stack

CurrentTSO

pointer to current thread's TSO

CurrentNursery

pointer to allocation area

HpAlloc

allocation count for heap check failure

EagerBlackholeInfo

address of stg_EAGER_BLACKHOLE_info

GCEnter1

address of stg_gc_enter_1

GCFun

address of stg_gc_fun

BaseReg

Base offset for the register table, used for accessing registers which do not have real registers assigned to them. This register will only appear after we have expanded GlobalReg into memory accesses (where necessary) in the native code generator.

MachSp

The register used by the platform for the C stack pointer. This is a break in the STG abstraction used exclusively to setup stack unwinding information.

UnwindReturnReg

A dummy register used to indicate to the stack unwinder where a routine would return to.

PicBaseReg

Base Register for PIC (position-independent code) calculations.

Only used inside the native code generator. Its exact meaning differs from platform to platform (see module PositionIndependentCode).

Instances

Instances details
Show GlobalReg # 
Instance details

Defined in GHC.Cmm.Reg

Outputable GlobalReg # 
Instance details

Defined in GHC.Cmm.Reg

Methods

ppr :: GlobalReg -> SDoc #

Eq GlobalReg # 
Instance details

Defined in GHC.Cmm.Reg

Ord GlobalReg # 
Instance details

Defined in GHC.Cmm.Reg

DefinerOfRegs GlobalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

UserOfRegs GlobalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

OutputableP env GlobalReg # 
Instance details

Defined in GHC.Cmm.Reg

Methods

pdoc :: env -> GlobalReg -> SDoc #

data GlobalRegUse #

A use of a global register at a particular type.

While a GlobalReg identifies a global register in the STG machine, a GlobalRegUse also contains information about the type we are storing in the register.

See Note [GlobalReg vs GlobalRegUse] for more information.

Constructors

GlobalRegUse 

Fields

Instances

Instances details
Show GlobalRegUse # 
Instance details

Defined in GHC.Cmm.Reg

Outputable GlobalRegUse # 
Instance details

Defined in GHC.Cmm.Reg

Methods

ppr :: GlobalRegUse -> SDoc #

Eq GlobalRegUse # 
Instance details

Defined in GHC.Cmm.Reg

Ord GlobalRegUse # 
Instance details

Defined in GHC.Cmm.Reg

DefinerOfRegs GlobalRegUse CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b #

UserOfRegs GlobalRegUse CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b #

DefinerOfRegs GlobalRegUse (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsDefd :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmNode e x -> b #

UserOfRegs GlobalRegUse (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsUsed :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmNode e x -> b #

class Ord r => DefinerOfRegs r a #

Minimal complete definition

foldRegsDefd

Instances

Instances details
DefinerOfRegs GlobalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

DefinerOfRegs GlobalRegUse CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b #

DefinerOfRegs LocalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

Ord r => DefinerOfRegs r r # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> r -> b) -> b -> r -> b #

DefinerOfRegs r a => DefinerOfRegs r [a] # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsDefd :: Platform -> (b -> r -> b) -> b -> [a] -> b #

DefinerOfRegs GlobalRegUse (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsDefd :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmNode e x -> b #

DefinerOfRegs LocalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

class Ord r => UserOfRegs r a #

Minimal complete definition

foldRegsUsed

Instances

Instances details
UserOfRegs GlobalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b #

UserOfRegs GlobalRegUse CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b #

UserOfRegs LocalReg CmmReg # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b #

(Ord r, UserOfRegs r CmmReg) => UserOfRegs r CmmExpr # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> r -> b) -> b -> CmmExpr -> b #

(Ord r, UserOfRegs r CmmReg) => UserOfRegs r ForeignTarget # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsUsed :: Platform -> (b -> r -> b) -> b -> ForeignTarget -> b #

Ord r => UserOfRegs r r # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> r -> b) -> b -> r -> b #

UserOfRegs r a => UserOfRegs r [a] # 
Instance details

Defined in GHC.Cmm.Expr

Methods

foldRegsUsed :: Platform -> (b -> r -> b) -> b -> [a] -> b #

UserOfRegs GlobalRegUse (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsUsed :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmNode e x -> b #

UserOfRegs LocalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b #

foldRegsDefd :: DefinerOfRegs r a => Platform -> (b -> r -> b) -> b -> a -> b #

foldRegsUsed :: UserOfRegs r a => Platform -> (b -> r -> b) -> b -> a -> b #

foldLocalRegsDefd :: DefinerOfRegs LocalReg a => Platform -> (b -> LocalReg -> b) -> b -> a -> b #

foldLocalRegsUsed :: UserOfRegs LocalReg a => Platform -> (b -> LocalReg -> b) -> b -> a -> b #

type RegSet r = Set r #

Sets of registers

elemRegSet :: Ord r => r -> RegSet r -> Bool #

extendRegSet :: Ord r => RegSet r -> r -> RegSet r #

deleteFromRegSet :: Ord r => RegSet r -> r -> RegSet r #

mkRegSet :: Ord r => [r] -> RegSet r #

plusRegSet :: Ord r => RegSet r -> RegSet r -> RegSet r #

minusRegSet :: Ord r => RegSet r -> RegSet r -> RegSet r #

timesRegSet :: Ord r => RegSet r -> RegSet r -> RegSet r #

regSetToList :: RegSet r -> [r] #

data Area #

A stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.

Constructors

Old 
Young !BlockId 

Instances

Instances details
Show Area # 
Instance details

Defined in GHC.Cmm.Expr

Methods

showsPrec :: Int -> Area -> ShowS #

show :: Area -> String #

showList :: [Area] -> ShowS #

Outputable Area # 
Instance details

Defined in GHC.Cmm.Expr

Methods

ppr :: Area -> SDoc #

Eq Area # 
Instance details

Defined in GHC.Cmm.Expr

Methods

(==) :: Area -> Area -> Bool #

(/=) :: Area -> Area -> Bool #

Ord Area # 
Instance details

Defined in GHC.Cmm.Expr

Methods

compare :: Area -> Area -> Ordering #

(<) :: Area -> Area -> Bool #

(<=) :: Area -> Area -> Bool #

(>) :: Area -> Area -> Bool #

(>=) :: Area -> Area -> Bool #

max :: Area -> Area -> Area #

min :: Area -> Area -> Area #