| Safe Haskell | Ignore |
|---|---|
| Language | GHC2021 |
GHC.Cmm.Reg
Synopsis
- data CmmReg
- cmmRegType :: CmmReg -> CmmType
- cmmRegWidth :: CmmReg -> Width
- 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
- pprGlobalReg :: IsLine doc => GlobalReg -> doc
- 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
- data GlobalRegUse = GlobalRegUse {}
- pprGlobalRegUse :: IsLine doc => GlobalRegUse -> doc
- data GlobalArgRegs
Cmm Registers
Constructors
| CmmLocal !LocalReg | |
| CmmGlobal GlobalRegUse |
Instances
| Show CmmReg # | |
| Outputable CmmReg # | |
Defined in GHC.Cmm.Reg | |
| Eq CmmReg # | |
| Ord CmmReg # | |
| DefinerOfRegs GlobalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b # | |
| DefinerOfRegs GlobalRegUse CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b # | |
| DefinerOfRegs LocalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b # | |
| UserOfRegs GlobalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b # | |
| UserOfRegs GlobalRegUse CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> GlobalRegUse -> b) -> b -> CmmReg -> b # | |
| UserOfRegs LocalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b # | |
cmmRegType :: CmmReg -> CmmType #
cmmRegWidth :: CmmReg -> Width #
Local registers
Instances
| Show LocalReg # | |
| Uniquable LocalReg # | |
Defined in GHC.Cmm.Reg | |
| Outputable LocalReg # | |
Defined in GHC.Cmm.Reg | |
| Eq LocalReg # | |
| Ord LocalReg # | |
Defined in GHC.Cmm.Reg | |
| DefinerOfRegs LocalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b # | |
| UserOfRegs LocalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmReg -> b # | |
| DefinerOfRegs LocalReg (CmmNode e x) # | |
Defined in GHC.Cmm.Node Methods foldRegsDefd :: Platform -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b # | |
| UserOfRegs LocalReg (CmmNode e x) # | |
Defined in GHC.Cmm.Node Methods foldRegsUsed :: Platform -> (b -> LocalReg -> b) -> b -> CmmNode e x -> b # | |
localRegType :: LocalReg -> CmmType #
Global registers
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
| Show GlobalReg # | |
| Outputable GlobalReg # | |
Defined in GHC.Cmm.Reg | |
| Eq GlobalReg # | |
| Ord GlobalReg # | |
| DefinerOfRegs GlobalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsDefd :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b # | |
| UserOfRegs GlobalReg CmmReg # | |
Defined in GHC.Cmm.Expr Methods foldRegsUsed :: Platform -> (b -> GlobalReg -> b) -> b -> CmmReg -> b # | |
| OutputableP env GlobalReg # | |
Defined in GHC.Cmm.Reg | |
globalRegSpillType :: Platform -> GlobalReg -> CmmType #
pprGlobalReg :: IsLine doc => GlobalReg -> doc #
currentTSOReg :: Platform -> CmmReg #
currentNurseryReg :: Platform -> CmmReg #
hpAllocReg :: Platform -> CmmReg #
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
pprGlobalRegUse :: IsLine doc => GlobalRegUse -> doc #
data GlobalArgRegs #
Global registers used for argument passing.
See Note [realArgRegsCover] in GHC.Cmm.CallConv.
Constructors
| GP_ARG_REGS | General-purpose (integer) argument-passing registers. |
| SCALAR_ARG_REGS | Scalar (integer & floating-point) argument-passing registers. |
| V16_ARG_REGS | 16 byte vector argument-passing registers, together with integer & floating-point argument-passing scalar registers. |
| V32_ARG_REGS | 32 byte vector argument-passing registers, together with integer & floating-point argument-passing scalar registers. |
| V64_ARG_REGS | 64 byte vector argument-passing registers, together with integer & floating-point argument-passing scalar registers. |
Instances
| Show GlobalArgRegs # | |
Defined in GHC.Cmm.Reg Methods showsPrec :: Int -> GlobalArgRegs -> ShowS # show :: GlobalArgRegs -> String # showList :: [GlobalArgRegs] -> ShowS # | |
| Eq GlobalArgRegs # | |
Defined in GHC.Cmm.Reg Methods (==) :: GlobalArgRegs -> GlobalArgRegs -> Bool # (/=) :: GlobalArgRegs -> GlobalArgRegs -> Bool # | |
| Ord GlobalArgRegs # | |
Defined in GHC.Cmm.Reg Methods compare :: GlobalArgRegs -> GlobalArgRegs -> Ordering # (<) :: GlobalArgRegs -> GlobalArgRegs -> Bool # (<=) :: GlobalArgRegs -> GlobalArgRegs -> Bool # (>) :: GlobalArgRegs -> GlobalArgRegs -> Bool # (>=) :: GlobalArgRegs -> GlobalArgRegs -> Bool # max :: GlobalArgRegs -> GlobalArgRegs -> GlobalArgRegs # min :: GlobalArgRegs -> GlobalArgRegs -> GlobalArgRegs # | |