X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FnativeGen%2FTargetReg.hs;h=35b49d1809bf98789b5a00554bb234e36a13b83f;hp=848f72bf1822f3733d9808b3a391ac3f8ad1b530;hb=927df6486bc0dcb598b82702ca40c8fad0d9b25f;hpb=f9288086f935c97812b2d80defcff38baf7b6a6c diff --git a/compiler/nativeGen/TargetReg.hs b/compiler/nativeGen/TargetReg.hs index 848f72b..35b49d1 100644 --- a/compiler/nativeGen/TargetReg.hs +++ b/compiler/nativeGen/TargetReg.hs @@ -27,7 +27,7 @@ import Reg import RegClass import Size -import CmmExpr (wordWidth) +import CmmType (wordWidth) import Outputable import Unique import FastTypes @@ -39,7 +39,6 @@ import qualified X86.RegInfo as X86 #elif powerpc_TARGET_ARCH import qualified PPC.Regs as PPC -import qualified PPC.RegInfo as PPC #elif sparc_TARGET_ARCH import qualified SPARC.Regs as SPARC @@ -48,64 +47,39 @@ import qualified SPARC.Regs as SPARC #error "RegAlloc.Graph.TargetReg: not defined" #endif +targetVirtualRegSqueeze :: RegClass -> VirtualReg -> FastInt +targetRealRegSqueeze :: RegClass -> RealReg -> FastInt +targetClassOfRealReg :: RealReg -> RegClass +targetWordSize :: Size +targetMkVirtualReg :: Unique -> Size -> VirtualReg +targetRegDotColor :: RealReg -> SDoc + -- x86 ------------------------------------------------------------------------- #if i386_TARGET_ARCH || x86_64_TARGET_ARCH -targetRegClasses :: Reg -> [RegClass] -targetRegClasses = X86.regClasses - -targetRegSupportsClass :: Reg -> RegClass -> Bool -targetRegSupportsClass = X86.regSupportsClass - -targetWordSize :: Size -targetWordSize = intSize wordWidth - -targetMkVReg :: Unique -> Size -> Reg -targetMkVReg = X86.mkVReg - -targetRegDotColor :: Reg -> SDoc -targetRegDotColor = X86.regDotColor - +targetVirtualRegSqueeze = X86.virtualRegSqueeze +targetRealRegSqueeze = X86.realRegSqueeze +targetClassOfRealReg = X86.classOfRealReg +targetWordSize = intSize wordWidth +targetMkVirtualReg = X86.mkVirtualReg +targetRegDotColor = X86.regDotColor -- ppc ------------------------------------------------------------------------- #elif powerpc_TARGET_ARCH -targetRegClasses :: Reg -> [RegClass] -targetRegClasses = PPC.regClasses - -targetRegSupportsClass :: Reg -> RegClass -> Bool -targetRegSupportsClass = PPC.regSupportsClass - -targetWordSize :: Size -targetWordSize = intSize wordWidth - -targetMkVReg :: Unique -> Size -> Reg -targetMkVReg = PPC.mkVReg - -targetRegDotColor :: Reg -> SDoc -targetRegDotColor = PPC.regDotColor - +targetVirtualRegSqueeze = PPC.virtualRegSqueeze +targetRealRegSqueeze = PPC.realRegSqueeze +targetClassOfRealReg = PPC.classOfRealReg +targetWordSize = intSize wordWidth +targetMkVirtualReg = PPC.mkVirtualReg +targetRegDotColor = PPC.regDotColor -- sparc ----------------------------------------------------------------------- #elif sparc_TARGET_ARCH - -targetVirtualRegSqueeze :: RegClass -> VirtualReg -> FastInt targetVirtualRegSqueeze = SPARC.virtualRegSqueeze - -targetRealRegSqueeze :: RegClass -> RealReg -> FastInt -targetRealRegSqueeze = SPARC.realRegSqueeze - -targetClassOfRealReg :: RealReg -> RegClass -targetClassOfRealReg = SPARC.classOfRealReg - --- | Size of a machine word. --- This is big enough to hold a pointer. -targetWordSize :: Size -targetWordSize = intSize wordWidth - -targetMkVirtualReg :: Unique -> Size -> VirtualReg -targetMkVirtualReg = SPARC.mkVirtualReg - -targetRegDotColor :: RealReg -> SDoc -targetRegDotColor = SPARC.regDotColor +targetRealRegSqueeze = SPARC.realRegSqueeze +targetClassOfRealReg = SPARC.classOfRealReg +targetWordSize = intSize wordWidth +targetMkVirtualReg = SPARC.mkVirtualReg +targetRegDotColor = SPARC.regDotColor -------------------------------------------------------------------------------- #else