ghc-lib-parser-9.8.1.20231009: The GHC API, decoupled from GHC versions
Safe HaskellSafe-Inferred
LanguageHaskell2010

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].

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 #

DefinerOfRegs GlobalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

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

UserOfRegs GlobalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

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

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 #

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 GlobalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsDefd :: Platform -> (b -> GlobalReg -> 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 GlobalReg (CmmNode e x) # 
Instance details

Defined in GHC.Cmm.Node

Methods

foldRegsUsed :: Platform -> (b -> GlobalReg -> 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 #