[project @ 2001-08-22 12:24:41 by simonmar]
[ghc-hetmet.git] / ghc / tests / programs / jeff-bug / VRegister.hs
diff --git a/ghc/tests/programs/jeff-bug/VRegister.hs b/ghc/tests/programs/jeff-bug/VRegister.hs
deleted file mode 100644 (file)
index 3d25f34..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-module VRegister where
-
-import Ix
-import Register
-import Cell
-import Trans
-
-
--- Begin Signature -------------------------------------------------
-
-{- 
-  Given two register sets, VRegister facilitates the mapping
-  between them.  See the P6 model for an example of register renaming
-  with VRegister
--}
-
-data Virtual r v 
-   = Real r
-   | Virtual v (Maybe r)
-        deriving (Read,Show,Ord)
-
-isReal         :: Virtual a b -> Bool
-isVirtual      :: Virtual a b -> Bool
-
-{-instance (Ix a, Ix b,Bounded a,Bounded b) => Ix (Virtual a b)-}
-{-instance (Enum a,Bounded a,Enum b,Bounded b) => Enum (Virtual a b)-}
-{-instance (Bounded a,Bounded b) => Bounded (Virtual a b)-}
-{-instance (Register a,Register b) => Register (Virtual a b)-}
-{-instance Eq Virtual r v-}
-{-instance Register Int-}
-
-
-
-
--- End Signature -------------------------------------------------
-
-instance Register Int where
-        pc = error "Int does not have a PC"
-        specpc = error "Int does not have a SPECPC"
-        isspecpc _ = False
-        ispc _ = False
-
-
-
-virtual x = Virtual x Nothing
-
-isReal (Real _) = True
-isReal  _       = False
-
-isVirtual (Virtual _ _) = True
-isVirtual  _       = False
-
------------------------Instances--------------------------------
-
-instance (Eq a,Eq b) => Eq (Virtual a b) where
-  (Virtual x _) == (Virtual y _) = x == y 
-  (Real x) == (Real y) = x == y 
-  _ == _  = False
-  (Virtual x _) /= (Virtual y _) = x /= y 
-  (Real x) /= (Real y) = x /= y 
-  _ /= _  = True
-
-instance (Register a,Register b) => Register (Virtual a b) where
-  readOnly (Virtual v x) = readOnly v
-  readOnly (Real v) = readOnly v
-  ispc (Virtual n (Just x)) = ispc x
-  ispc (Real x) = ispc x
-  isspecpc (Virtual n (Just x)) = isspecpc x
-  isspecpc (Real x) = isspecpc x
-  pc = Real pc
-  specpc = Real specpc
-
-
-instance (Ix a, Ix b,Bounded a,Bounded b) => Ix (Virtual a b) where
---  range :: (a,a) -> [a]
-    range (Real r, Real r')       = map Real $ range (r,r')
-    range (Virtual r _, Virtual r' _) = map (\x -> Virtual x Nothing) $ range (r,r')
-    range (Real r, Virtual r' _) = range1 ++ range2
-         where range1 = map Real $ range (r,maxBound)
-               range2 = map (\x -> Virtual x Nothing) $ range (minBound,r')
-    range (Virtual r _, Real r') = []
---  index :: (a,a) -> a -> Int
-    index (Virtual r _,Virtual r' _) (Virtual r'' _) = index (r,r') r''
-    index (Real r,Real r') (Real r'') = index (r,r') r''
-    index (Virtual r _,Virtual r' _) _ = error "index: Real Reg out of range"
-    index (Real r,Real r') _ = error "index: Virtual Reg out of range"
-    index (Virtual r _,Real r') _ = error "index: Virtual Reg out of range"
-    index (Real r,Virtual r' _) (Real x) = index(r,maxBound) x
-    index (Real r,Virtual r' _) (Virtual x _) = index(minBound,r') x
---  inRange :: (a,a) -> a -> Bool
-    inRange (Virtual x _,Virtual y _) (Virtual z _) = inRange (x,y) z
-    inRange (Real x,Real y) (Real z) = inRange (x,y) z
-    inRange (Virtual x _,Virtual y _) _ = False
-    inRange (Real x,Real y) _ = False
-    inRange (Virtual x _,Real y) _ = False
-    inRange (Real y,_) (Real r) = inRange (y,maxBound) r
-    inRange (_,Virtual y _) (Virtual r _) = inRange (minBound,y) r
-
-
-instance (Enum a,Bounded a,Enum b,Bounded b) => Enum (Virtual a b) where
---  toEnum :: Int -> a
---  toEnum = Virtual . toEnum
-    toEnum x = error "Virtual.toEnum"
-
---  fromEnum :: a -> Int
---  fromEnum (Virtual x) = fromEnum x
-    fromEnum x = error "Virtual.fromEnum"
-
---  enumFrom :: a -> [a]
-    enumFrom (Virtual x _) = map virtual (enumFrom x)
-    enumFrom (Real x) = map Real (enumFrom x) ++ enumFrom (virtual minBound)
-
---  enumFromThen :: a -> a -> [a]
-    enumFromThen  _ _ = error "Virtual.enumFromThen"
-
---  enumFromTo :: a -> a -> [a]
-    enumFromTo (Virtual x _) (Virtual y _)  
-              = map virtual (enumFromTo x y)
-    enumFromTo (Real x) (Real y)  
-              = map Real (enumFromTo x y)
-    enumFromTo (Real x) (Virtual y z)  
-              = enumFrom (Real x) ++ 
-                enumFromTo (Virtual minBound Nothing) (Virtual y z)
---  enumFromThenTo :: a -> a -> a -> [a]
-    enumFromThenTo _ _ _ = error "Virtual.enumFromThenTo"
-
-instance (Bounded a,Bounded b) => Bounded (Virtual a b) where
--- minBound :: a
-   minBound = Real minBound
--- maxBound :: a
-   maxBound = Virtual maxBound Nothing
-