{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE PatternSynonyms #-}
module GHC.Platform.Reg.Class.Separate
( RegClass ( RcInteger, RcFloat, RcVector )
, pprRegClass, allRegClasses
)
where
import GHC.Utils.Outputable ( SDoc, text )
import GHC.Platform.Reg.Class ( RegClass(..) )
pattern RcInteger, RcFloat, RcVector :: RegClass
pattern $bRcInteger :: RegClass
$mRcInteger :: forall {r}. RegClass -> ((# #) -> r) -> ((# #) -> r) -> r
RcInteger = RegClass 0
pattern $bRcFloat :: RegClass
$mRcFloat :: forall {r}. RegClass -> ((# #) -> r) -> ((# #) -> r) -> r
RcFloat = RegClass 1
pattern $bRcVector :: RegClass
$mRcVector :: forall {r}. RegClass -> ((# #) -> r) -> ((# #) -> r) -> r
RcVector = RegClass 2
{-# COMPLETE RcInteger, RcFloat, RcVector #-}
pprRegClass :: RegClass -> SDoc
pprRegClass :: RegClass -> SDoc
pprRegClass = \case
RegClass
RcInteger -> String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"I"
RegClass
RcFloat -> String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"F"
RegClass
RcVector -> String -> SDoc
forall doc. IsLine doc => String -> doc
text String
"V"
allRegClasses :: [RegClass]
allRegClasses :: [RegClass]
allRegClasses = [RegClass
RcInteger, RegClass
RcFloat, RegClass
RcVector]