HORIZON HASKELLDocslts/ghc-10.0.x8174fa42026-10-11Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 8174fa4 · 2026-10-11

Moduleghc-10.0.0.20260917GHC2024

GHC.Cmm.Reg

  • 5 types
  • 18 values

Cmm Registers

3 declarations
datadata CmmReg
#
Instances10Eq, Ord, Show, Outputable, DefinerOfRegs, UserOfRegs, …

Local registers

2 declarations
datadata LocalReg
#

Constructors

Instances9Eq, Ord, Show, Outputable, Uniquable, DefinerOfRegs, …

Global registers

18 declarations
datadata 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).

Instances7Eq, Ord, Show, Outputable, DefinerOfRegs, UserOfRegs, …
datadata 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

Instances8Eq, Ord, Show, Outputable, DefinerOfRegs, UserOfRegs, …
datadata 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.

Instances3Eq, Ord, Show