GHC.Cmm.Expr
Documentation
Constructors
CmmLit !CmmLit | |
CmmLoad !CmmExpr !CmmType !AlignmentSpec | |
CmmReg !CmmReg | |
CmmMachOp MachOp [CmmExpr] | |
CmmStackSlot Area !Int | |
CmmRegOff !CmmReg !Int |
cmmExprAlignment :: CmmExpr -> Alignment Source #
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.
Instances
Show CmmReg Source # | |
Outputable CmmReg Source # | |
Eq CmmReg Source # | |
Ord CmmReg Source # | |
DefinerOfRegs GlobalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
DefinerOfRegs LocalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
UserOfRegs GlobalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
UserOfRegs LocalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr |
Constructors
CmmInt !Integer !Width | |
CmmFloat Rational !Width | |
CmmVec [CmmLit] | |
CmmLabel CLabel | |
CmmLabelOff CLabel !Int | |
CmmLabelDiffOff CLabel CLabel !Int !Width | |
CmmBlock !BlockId | |
CmmHighStackMark |
data AlignmentSpec Source #
Constructors
NaturallyAligned | |
Unaligned |
Instances
Show AlignmentSpec Source # | |
Defined in GHC.Cmm.Expr | |
Eq AlignmentSpec Source # | |
Defined in GHC.Cmm.Expr Methods (==) :: AlignmentSpec -> AlignmentSpec -> Bool # (/=) :: AlignmentSpec -> AlignmentSpec -> Bool # | |
Ord AlignmentSpec Source # | |
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 # |
Instances
Show LocalReg Source # | |
Uniquable LocalReg Source # | |
Outputable LocalReg Source # | |
Eq LocalReg Source # | |
Ord LocalReg Source # | |
Defined in GHC.Cmm.Expr | |
DefinerOfRegs LocalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
UserOfRegs LocalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
DefinerOfRegs LocalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node | |
UserOfRegs LocalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node |
localRegType :: LocalReg -> CmmType Source #
Constructors
Instances
Show GlobalReg Source # | |
Outputable GlobalReg Source # | |
Eq GlobalReg Source # | |
Ord GlobalReg Source # | |
DefinerOfRegs GlobalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
UserOfRegs GlobalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
OutputableP env GlobalReg Source # | |
DefinerOfRegs GlobalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node | |
UserOfRegs GlobalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node |
hpAllocReg :: CmmReg Source #
class Ord r => DefinerOfRegs r a Source #
Minimal complete definition
Instances
DefinerOfRegs GlobalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
DefinerOfRegs LocalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
Ord r => DefinerOfRegs r r Source # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> r -> b) -> b -> r -> b Source # | |
DefinerOfRegs r a => DefinerOfRegs r [a] Source # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> r -> b) -> b -> [a] -> b Source # | |
DefinerOfRegs GlobalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node | |
DefinerOfRegs LocalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node |
class Ord r => UserOfRegs r a Source #
Minimal complete definition
Instances
UserOfRegs GlobalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
UserOfRegs LocalReg CmmReg Source # | |
Defined in GHC.Cmm.Expr | |
(Ord r, UserOfRegs r CmmReg) => UserOfRegs r CmmExpr Source # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> r -> b) -> b -> CmmExpr -> b Source # | |
(Ord r, UserOfRegs r CmmReg) => UserOfRegs r ForeignTarget Source # | |
Defined in GHC.Cmm.Node Methods foldRegsUsed :: Platform -> (b -> r -> b) -> b -> ForeignTarget -> b Source # | |
Ord r => UserOfRegs r r Source # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> r -> b) -> b -> r -> b Source # | |
UserOfRegs r a => UserOfRegs r [a] Source # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> r -> b) -> b -> [a] -> b Source # | |
UserOfRegs GlobalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node | |
UserOfRegs LocalReg (CmmNode e x) Source # | |
Defined in GHC.Cmm.Node |
foldRegsDefd :: DefinerOfRegs r a => Platform -> (b -> r -> b) -> b -> a -> b Source #
foldRegsUsed :: UserOfRegs r a => Platform -> (b -> r -> b) -> b -> a -> b Source #
foldLocalRegsDefd :: DefinerOfRegs LocalReg a => Platform -> (b -> LocalReg -> b) -> b -> a -> b Source #
foldLocalRegsUsed :: UserOfRegs LocalReg a => Platform -> (b -> LocalReg -> b) -> b -> a -> b Source #
type LocalRegSet = RegSet LocalReg Source #
type GlobalRegSet = RegSet GlobalReg Source #
emptyRegSet :: RegSet r Source #
sizeRegSet :: RegSet r -> Int Source #
nullRegSet :: RegSet r -> Bool Source #
regSetToList :: RegSet r -> [r] Source #
A stack area is either the stack slot where a variable is spilled or the stack space where function arguments and results are passed.
module GHC.Cmm.MachOp
module GHC.Cmm.Type