X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FnativeGen%2FReg.hs;h=50d179c00252fc5bd17eefd2572558ceb05360c0;hp=4819d0f3c74a456ed5cb6524bea1e356ba6394b4;hb=f537dd87c4a07526e2b1fc1bd1c125d652833641;hpb=f9288086f935c97812b2d80defcff38baf7b6a6c diff --git a/compiler/nativeGen/Reg.hs b/compiler/nativeGen/Reg.hs index 4819d0f..50d179c 100644 --- a/compiler/nativeGen/Reg.hs +++ b/compiler/nativeGen/Reg.hs @@ -29,7 +29,6 @@ where import Outputable import Unique -import Panic import RegClass import Data.List @@ -56,6 +55,7 @@ data VirtualReg | VirtualRegHi {-# UNPACK #-} !Unique -- High part of 2-word register | VirtualRegF {-# UNPACK #-} !Unique | VirtualRegD {-# UNPACK #-} !Unique + | VirtualRegSSE {-# UNPACK #-} !Unique deriving (Eq, Show, Ord) instance Uniquable VirtualReg where @@ -65,6 +65,7 @@ instance Uniquable VirtualReg where VirtualRegHi u -> u VirtualRegF u -> u VirtualRegD u -> u + VirtualRegSSE u -> u instance Outputable VirtualReg where ppr reg @@ -73,6 +74,7 @@ instance Outputable VirtualReg where VirtualRegHi u -> text "%vHi_" <> pprUnique u VirtualRegF u -> text "%vF_" <> pprUnique u VirtualRegD u -> text "%vD_" <> pprUnique u + VirtualRegSSE u -> text "%vSSE_" <> pprUnique u renameVirtualReg :: Unique -> VirtualReg -> VirtualReg @@ -82,6 +84,7 @@ renameVirtualReg u r VirtualRegHi _ -> VirtualRegHi u VirtualRegF _ -> VirtualRegF u VirtualRegD _ -> VirtualRegD u + VirtualRegSSE _ -> VirtualRegSSE u classOfVirtualReg :: VirtualReg -> RegClass @@ -91,6 +94,7 @@ classOfVirtualReg vr VirtualRegHi{} -> RcInteger VirtualRegF{} -> RcFloat VirtualRegD{} -> RcDouble + VirtualRegSSE{} -> RcDoubleSSE -- Determine the upper-half vreg for a 64-bit quantity on a 32-bit platform @@ -126,8 +130,8 @@ data RealReg instance Uniquable RealReg where getUnique reg = case reg of - RealRegSingle i -> mkUnique 'S' i - RealRegPair r1 r2 -> mkUnique 'P' (r1 * 65536 + r2) + RealRegSingle i -> mkRegSingleUnique i + RealRegPair r1 r2 -> mkRegPairUnique (r1 * 65536 + r2) instance Outputable RealReg where ppr reg @@ -149,8 +153,8 @@ realRegsAlias rr1 rr2 -------------------------------------------------------------------------------- -- | A register, either virtual or real data Reg - = RegVirtual {-# UNPACK #-} !VirtualReg - | RegReal {-# UNPACK #-} !RealReg + = RegVirtual !VirtualReg + | RegReal !RealReg deriving (Eq, Ord) regSingle :: RegNo -> Reg