GHC.Cmm.Expr

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

Safe Haskell | Ignore
Language | GHC2021

GHC.Cmm.Expr

Synopsis

- data CmmExpr
  - = CmmLit !CmmLit
  - | CmmLoad !CmmExpr !CmmType !AlignmentSpec
  - | CmmReg !CmmReg
  - | CmmMachOp MachOp [CmmExpr]
  - | CmmStackSlot Area !Int
  - | CmmRegOff !CmmReg !Int
- cmmExprType :: Platform -> CmmExpr -> CmmType
- cmmExprWidth :: Platform -> CmmExpr -> Width
- cmmExprAlignment :: CmmExpr -> Alignment
- maybeInvertCmmExpr :: CmmExpr -> Maybe CmmExpr
- data CmmReg
  - = CmmLocal !LocalReg
  - | CmmGlobal GlobalRegUse
- cmmRegType :: CmmReg -> CmmType
- cmmRegWidth :: CmmReg -> Width
- data CmmLit
  - = CmmInt !Integer !Width
  - | CmmFloat Rational !Width
  - | CmmVec [CmmLit]
  - | CmmLabel CLabel
  - | CmmLabelOff CLabel !Int
  - | CmmLabelDiffOff CLabel CLabel !Int !Width
  - | CmmBlock !BlockId
  - | CmmHighStackMark
- cmmLitType :: Platform -> CmmLit -> CmmType
- data AlignmentSpec
  - = NaturallyAligned
  - | Unaligned
- data LocalReg = LocalReg !Unique !CmmType
- localRegType :: LocalReg -> CmmType
- data GlobalReg
  - = VanillaReg !Int
  - | FloatReg !Int
  - | DoubleReg !Int
  - | LongReg !Int
  - | XmmReg !Int
  - | YmmReg !Int
  - | ZmmReg !Int
  - | Sp
  - | SpLim
  - | Hp
  - | HpLim
  - | CCCS
  - | CurrentTSO
  - | CurrentNursery
  - | HpAlloc
  - | EagerBlackholeInfo
  - | GCEnter1
  - | GCFun
  - | BaseReg
  - | MachSp
  - | UnwindReturnReg
  - | PicBaseReg
- isArgReg :: GlobalReg -> Bool
- globalRegSpillType :: Platform -> GlobalReg -> CmmType
- data GlobalRegUse = GlobalRegUse {
  - globalRegUse_reg :: !GlobalReg
  - globalRegUse_type :: !CmmType
  }
- spReg :: Platform -> CmmReg
- hpReg :: Platform -> CmmReg
- spLimReg :: Platform -> CmmReg
- hpLimReg :: Platform -> CmmReg
- nodeReg :: Platform -> CmmReg
- currentTSOReg :: Platform -> CmmReg
- currentNurseryReg :: Platform -> CmmReg
- hpAllocReg :: Platform -> CmmReg
- cccsReg :: Platform -> CmmReg
- node :: GlobalReg
- baseReg :: Platform -> CmmReg
- class Ord r => DefinerOfRegs r a
- class Ord r => UserOfRegs r a
- 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
- type LocalRegSet = RegSet LocalReg
- type GlobalRegSet = RegSet GlobalReg
- emptyRegSet :: RegSet r
- 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
- sizeRegSet :: RegSet r -> Int
- nullRegSet :: RegSet r -> Bool
- regSetToList :: RegSet r -> [r]
- isTrivialCmmExpr :: CmmExpr -> Bool
- hasNoGlobalRegs :: CmmExpr -> Bool
- isLit :: CmmExpr -> Bool
- isComparisonExpr :: CmmExpr -> Bool
- data Area
  - = Old
  - | Young !BlockId
- module GHC.Cmm.MachOp
- module GHC.Cmm.Type

# Documentation

data CmmExpr #

Constructors

CmmLit !CmmLit |
CmmLoad !CmmExpr !CmmType !AlignmentSpec |
CmmReg !CmmReg |
CmmMachOp MachOp [CmmExpr] |
CmmStackSlot Area !Int |
CmmRegOff !CmmReg !Int |

#### Instances

Instances details

Show CmmExpr # |
Instance details Defined in GHC.Cmm.Expr Methods showsPrec :: Int -> CmmExpr -> ShowS # show :: CmmExpr -> String # showList :: [CmmExpr] -> ShowS #
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 #

cmmExprType :: Platform -> CmmExpr -> CmmType #

cmmExprWidth :: Platform -> CmmExpr -> Width #

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.

maybeInvertCmmExpr :: CmmExpr -> Maybe CmmExpr #

data CmmReg #

Constructors

CmmLocal !LocalReg |
CmmGlobal GlobalRegUse |

#### Instances

Instances details

Show CmmReg # |
Instance details Defined in GHC.Cmm.Reg Methods showsPrec :: Int -> CmmReg -> ShowS # show :: CmmReg -> String # showList :: [CmmReg] -> ShowS #
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 Methods compare :: CmmReg -> CmmReg -> Ordering # (<) :: CmmReg -> CmmReg -> Bool # (<=) :: CmmReg -> CmmReg -> Bool # (>) :: CmmReg -> CmmReg -> Bool # (>=) :: CmmReg -> CmmReg -> Bool # max :: CmmReg -> CmmReg -> CmmReg # min :: CmmReg -> CmmReg -> CmmReg #
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 #

cmmRegType :: CmmReg -> CmmType #

cmmRegWidth :: CmmReg -> Width #

data CmmLit #

Constructors

CmmInt !Integer !Width |
CmmFloat Rational !Width |
CmmVec [CmmLit] |
CmmLabel CLabel |
CmmLabelOff CLabel !Int |
CmmLabelDiffOff CLabel CLabel !Int !Width |
CmmBlock !BlockId |
CmmHighStackMark |

#### Instances

Instances details

Show CmmLit # |
Instance details Defined in GHC.Cmm.Expr Methods showsPrec :: Int -> CmmLit -> ShowS # show :: CmmLit -> String # showList :: [CmmLit] -> ShowS #
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 #

cmmLitType :: Platform -> CmmLit -> CmmType #

data AlignmentSpec #

Constructors

NaturallyAligned |
Unaligned |

#### Instances

Instances details

Show AlignmentSpec # |
Instance details Defined in GHC.Cmm.Expr Methods showsPrec :: Int -> AlignmentSpec -> ShowS # show :: AlignmentSpec -> String # showList :: [AlignmentSpec] -> ShowS #
Eq AlignmentSpec # |
Instance details Defined in GHC.Cmm.Expr Methods (==) :: AlignmentSpec -> AlignmentSpec -> Bool # (/=) :: AlignmentSpec -> AlignmentSpec -> Bool #
Ord AlignmentSpec # |
Instance details Defined in GHC.Cmm.Expr Methods compare :: AlignmentSpec -> AlignmentSpec -> Ordering # (<) :: AlignmentSpec -> AlignmentSpec -> Bool # (<=) :: AlignmentSpec -> AlignmentSpec -> Bool # (>) :: AlignmentSpec -> AlignmentSpec -> Bool # (>=) :: AlignmentSpec -> AlignmentSpec -> Bool # max :: AlignmentSpec -> AlignmentSpec -> AlignmentSpec # min :: AlignmentSpec -> AlignmentSpec -> AlignmentSpec #

data LocalReg #

Constructors

LocalReg !Unique !CmmType | Parameters: 1. Identifier 2. Type

#### Instances

Instances details

Show LocalReg # |
Instance details Defined in GHC.Cmm.Reg Methods showsPrec :: Int -> LocalReg -> ShowS # show :: LocalReg -> String # showList :: [LocalReg] -> ShowS #
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 Methods (==) :: LocalReg -> LocalReg -> Bool # (/=) :: LocalReg -> LocalReg -> Bool #
Ord LocalReg # |
Instance details Defined in GHC.Cmm.Reg Methods compare :: LocalReg -> LocalReg -> Ordering # (<) :: LocalReg -> LocalReg -> Bool # (<=) :: LocalReg -> LocalReg -> Bool # (>) :: LocalReg -> LocalReg -> Bool # (>=) :: LocalReg -> LocalReg -> Bool # max :: LocalReg -> LocalReg -> LocalReg # min :: LocalReg -> LocalReg -> LocalReg #
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 #

localRegType :: LocalReg -> CmmType #

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 Methods showsPrec :: Int -> GlobalReg -> ShowS # show :: GlobalReg -> String # showList :: [GlobalReg] -> ShowS #
Outputable GlobalReg # |
Instance details Defined in GHC.Cmm.Reg Methods ppr :: GlobalReg -> SDoc #
Eq GlobalReg # |
Instance details Defined in GHC.Cmm.Reg Methods (==) :: GlobalReg -> GlobalReg -> Bool # (/=) :: GlobalReg -> GlobalReg -> Bool #
Ord GlobalReg # |
Instance details Defined in GHC.Cmm.Reg Methods compare :: GlobalReg -> GlobalReg -> Ordering # (<) :: GlobalReg -> GlobalReg -> Bool # (<=) :: GlobalReg -> GlobalReg -> Bool # (>) :: GlobalReg -> GlobalReg -> Bool # (>=) :: GlobalReg -> GlobalReg -> Bool # max :: GlobalReg -> GlobalReg -> GlobalReg # min :: GlobalReg -> GlobalReg -> GlobalReg #
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 #

isArgReg :: GlobalReg -> Bool #

globalRegSpillType :: Platform -> GlobalReg -> CmmType #

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 globalRegUse_reg :: !GlobalReg The underlying `GlobalReg` globalRegUse_type :: !CmmType The `CmmType` at which we are using the `GlobalReg`. Its width must be less than the width of the `GlobalReg`:
      typeWidth ty <= typeWidth (globalRegSpillType platform reg)

#### Instances

Instances details

Show GlobalRegUse # |
Instance details Defined in GHC.Cmm.Reg Methods showsPrec :: Int -> GlobalRegUse -> ShowS # show :: GlobalRegUse -> String # showList :: [GlobalRegUse] -> ShowS #
Outputable GlobalRegUse # |
Instance details Defined in GHC.Cmm.Reg Methods ppr :: GlobalRegUse -> SDoc #
Eq GlobalRegUse # |
Instance details Defined in GHC.Cmm.Reg Methods (==) :: GlobalRegUse -> GlobalRegUse -> Bool # (/=) :: GlobalRegUse -> GlobalRegUse -> Bool #
Ord GlobalRegUse # |
Instance details Defined in GHC.Cmm.Reg Methods compare :: GlobalRegUse -> GlobalRegUse -> Ordering # (<) :: GlobalRegUse -> GlobalRegUse -> Bool # (<=) :: GlobalRegUse -> GlobalRegUse -> Bool # (>) :: GlobalRegUse -> GlobalRegUse -> Bool # (>=) :: GlobalRegUse -> GlobalRegUse -> Bool # max :: GlobalRegUse -> GlobalRegUse -> GlobalRegUse # min :: GlobalRegUse -> GlobalRegUse -> GlobalRegUse #
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 #

spReg :: Platform -> CmmReg #

hpReg :: Platform -> CmmReg #

spLimReg :: Platform -> CmmReg #

hpLimReg :: Platform -> CmmReg #

nodeReg :: Platform -> CmmReg #

currentTSOReg :: Platform -> CmmReg #

currentNurseryReg :: Platform -> CmmReg #

hpAllocReg :: Platform -> CmmReg #

cccsReg :: Platform -> CmmReg #

node :: GlobalReg #

baseReg :: Platform -> CmmReg #

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

type LocalRegSet = RegSet LocalReg #

type GlobalRegSet = RegSet GlobalReg #

emptyRegSet :: RegSet r #

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 #

sizeRegSet :: RegSet r -> Int #

nullRegSet :: RegSet r -> Bool #

regSetToList :: RegSet r -> [r] #

isTrivialCmmExpr :: CmmExpr -> Bool #

hasNoGlobalRegs :: CmmExpr -> Bool #

isLit :: CmmExpr -> Bool #

isComparisonExpr :: CmmExpr -> Bool #

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 #

module GHC.Cmm.MachOp

module GHC.Cmm.Type