GHC.Platform.Reg
An architecture independent description of a register. This needs to stay architecture independent because it is used by NCGMonad and the register allocators, which are shared by all architectures.
Documentation
A register, either virtual or real
Constructors
RegVirtual !VirtualReg | |
RegReal !RealReg |
realRegSingle :: RegNo -> RealReg Source #
isVirtualReg :: Reg -> Bool Source #
takeVirtualReg :: Reg -> Maybe VirtualReg Source #
data VirtualReg Source #
Constructors
VirtualRegI !Unique | |
VirtualRegHi !Unique | |
VirtualRegF !Unique | |
VirtualRegD !Unique |
Instances
Show VirtualReg Source # | |
Defined in GHC.Platform.Reg | |
Uniquable VirtualReg Source # | |
Defined in GHC.Platform.Reg Methods getUnique :: VirtualReg -> Unique Source # | |
Outputable VirtualReg Source # | |
Defined in GHC.Platform.Reg Methods ppr :: VirtualReg -> SDoc Source # | |
Eq VirtualReg Source # | |
Defined in GHC.Platform.Reg | |
Ord VirtualReg Source # | |
Defined in GHC.Platform.Reg Methods compare :: VirtualReg -> VirtualReg -> Ordering # (<) :: VirtualReg -> VirtualReg -> Bool # (<=) :: VirtualReg -> VirtualReg -> Bool # (>) :: VirtualReg -> VirtualReg -> Bool # (>=) :: VirtualReg -> VirtualReg -> Bool # max :: VirtualReg -> VirtualReg -> VirtualReg # min :: VirtualReg -> VirtualReg -> VirtualReg # |
renameVirtualReg :: Unique -> VirtualReg -> VirtualReg Source #
getHiVRegFromLo :: Reg -> Reg Source #
RealRegs are machine regs which are available for allocation, in the usual way. We know what class they are, because that's part of the processor's architecture.
Constructors
RealRegSingle RegNo |
regNosOfRealReg :: RealReg -> [RegNo] Source #
liftPatchFnToRegReg :: (VirtualReg -> RealReg) -> Reg -> Reg Source #
The patch function supplied by the allocator maps VirtualReg to RealReg regs, but sometimes we want to apply it to plain old Reg.