dph-lifted-vseg: add more of the vectoriser interface
authorBen Lippmeier <benl@ouroborus.net>
Fri, 14 Oct 2011 04:39:07 +0000 (15:39 +1100)
committerBen Lippmeier <benl@ouroborus.net>
Fri, 14 Oct 2011 04:39:07 +0000 (15:39 +1100)
dph-lifted-vseg/Data/Array/Parallel.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Unit.hs
dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Void.hs [new file with mode: 0644]
dph-lifted-vseg/Data/Array/Parallel/PArray/PRepr/Instances.hs
dph-lifted-vseg/Data/Array/Parallel/Prelude/Tuple.hs [new file with mode: 0644]
dph-lifted-vseg/Data/Array/Parallel/VectDepend.hs
dph-lifted-vseg/dph-lifted-vseg.cabal
dph-prim-par/dph-prim-par.cabal

index f17e0d6..34e41ee 100644 (file)
@@ -81,30 +81,29 @@ nope    = P.error "Data.Array.Parallel: can't use unvectorised definition"
 -- Constructors ---------------------------------------------------------------
 -- | Construct an empty array, with no elements.
 emptyP :: [:a:]
-emptyP          = [::]
+emptyP          = emptyPArr
 {-# NOINLINE  emptyP #-}
 {-# VECTORISE emptyP = emptyPP #-}
 
 
 -- | Construct an array with a single element.
 singletonP :: a -> [:a:]
-singletonP !_   = [::]
+singletonP      = singletonPArr
 {-# NOINLINE  singletonP #-}
 {-# VECTORISE singletonP = singletonPP #-}
 
 
 -- | Construct an array by replicating the given element some number of times.
 replicateP :: Int -> a -> [:a:]
-replicateP !_ !_  = [::]
+replicateP      = replicatePArr
 {-# NOINLINE  replicateP #-}
 {-# VECTORISE replicateP = replicatePP #-}
 
 
-
 -- Projections ----------------------------------------------------------------
 -- | Lookup a single element from the source array.
 (!:) :: [:a:] -> Int -> a
-(!:) !arr !ix   = indexPArr arr ix
+(!:)            = indexPArr
 {-# NOINLINE  (!:) #-}
 {-# VECTORISE (!:) = indexPP #-}
 
index a31acc8..c373c39 100644 (file)
@@ -6,7 +6,8 @@ module Data.Array.Parallel.PArray.PData
         , module Data.Array.Parallel.PArray.PData.Double
         , module Data.Array.Parallel.PArray.PData.Nested
         , module Data.Array.Parallel.PArray.PData.Unit
-        , module Data.Array.Parallel.PArray.PData.Tuple)
+        , module Data.Array.Parallel.PArray.PData.Tuple
+        , module Data.Array.Parallel.PArray.PData.Void)
 where
 import Data.Array.Parallel.PArray.PData.Base
 import Data.Array.Parallel.PArray.PData.Wrap
@@ -15,5 +16,6 @@ import Data.Array.Parallel.PArray.PData.Double
 import Data.Array.Parallel.PArray.PData.Nested
 import Data.Array.Parallel.PArray.PData.Unit
 import Data.Array.Parallel.PArray.PData.Tuple
+import Data.Array.Parallel.PArray.PData.Void
 
 
index 6bb7aa3..41df23b 100644 (file)
@@ -18,6 +18,9 @@ import Text.PrettyPrint
 data instance PData ()
         = PUnit Int
 
+punit :: PData ()
+punit =  PUnit 0
+
 deriving instance Show (PData ())
 
 instance PprPhysical (PData ()) where
diff --git a/dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Void.hs b/dph-lifted-vseg/Data/Array/Parallel/PArray/PData/Void.hs
new file mode 100644 (file)
index 0000000..99e3912
--- /dev/null
@@ -0,0 +1,17 @@
+
+module Data.Array.Parallel.PArray.PData.Void where
+import Data.Array.Parallel.PArray.PData.Base
+import Data.Array.Parallel.PArray.Types
+import Data.Array.Parallel.PArray.PRepr.Base
+
+-- | The Void type is used when representing enumerations. 
+--   A type like Bool is represented as @Sum2 Void Void@, meaning that we only
+--   only care about the tag of the data constructor and not its argumnent.
+--
+data instance PData Void
+
+pvoid :: PData Void
+pvoid =  error "Data.Array.Parallel.PData Void"
+
+instance PR Void where
+        
\ No newline at end of file
index e5c941c..27faf7e 100644 (file)
@@ -8,6 +8,7 @@ module Data.Array.Parallel.PArray.PRepr.Instances where
 import Data.Array.Parallel.PArray.Types
 import Data.Array.Parallel.PArray.PRepr.Base
 import Data.Array.Parallel.PArray.PData.Base
+import Data.Array.Parallel.PArray.PData.Void
 import Data.Array.Parallel.PArray.PData.Wrap
 import Data.Array.Parallel.PArray.PData.Unit
 import Data.Array.Parallel.PArray.PData.Nested
@@ -15,6 +16,15 @@ import Data.Array.Parallel.PArray.PData.Tuple
 import Data.Array.Parallel.PArray.PData.Int
 import Data.Array.Parallel.PArray.PData.Double
 
+-- Void -----------------------------------------------------------------------
+type instance PRepr Void = Void
+
+instance PA Void where
+  toPRepr      = id
+  fromPRepr    = id
+  toArrPRepr   = id
+  fromArrPRepr = id
+
 
 -- Unit -----------------------------------------------------------------------
 type instance PRepr () = ()
diff --git a/dph-lifted-vseg/Data/Array/Parallel/Prelude/Tuple.hs b/dph-lifted-vseg/Data/Array/Parallel/Prelude/Tuple.hs
new file mode 100644 (file)
index 0000000..7ad84ce
--- /dev/null
@@ -0,0 +1,16 @@
+module Data.Array.Parallel.Prelude.Tuple (
+  tup2, tup3
+) where
+  
+import Data.Array.Parallel.Lifted.Closure
+import Data.Array.Parallel.PArray.PData.Tuple
+import Data.Array.Parallel.PArray.PRepr
+
+
+tup2 :: (PA a, PA b) => a :-> b :-> (a, b)
+{-# INLINE tup2 #-}
+tup2 = closure2 (,) (error "tup2") -- zipPA#
+
+tup3 :: (PA a, PA b, PA c) => a :-> b :-> c :-> (a, b, c)
+{-# INLINE tup3 #-}
+tup3 = closure3 (,,) (error "tup3") -- zip3PA#
index 09d693d..cee9c65 100644 (file)
@@ -24,9 +24,12 @@ import Data.Array.Parallel.PArray.PData.Int             ()
 import Data.Array.Parallel.PArray.PData.Nested          ()
 import Data.Array.Parallel.PArray.PData.Tuple           ()
 import Data.Array.Parallel.PArray.PData.Unit            ()
+import Data.Array.Parallel.PArray.PData.Void            ()
+import Data.Array.Parallel.PArray.PData.Wrap            ()
 import Data.Array.Parallel.PArray.PData                 ()
 import Data.Array.Parallel.PArray.PRepr                 ()
 import Data.Array.Parallel.PArray.PRepr.Base            ()
 import Data.Array.Parallel.PArray.Scalar                ()
 import Data.Array.Parallel.Lifted.Closure               ()
 import Data.Array.Parallel.Lifted.Combinators           ()
+import Data.Array.Parallel.Prelude.Tuple                ()
\ No newline at end of file
index 42c5e7e..0dd83b6 100644 (file)
@@ -50,7 +50,8 @@ Library
         BangPatterns, MagicHash, UnboxedTuples, TypeOperators,
         PatternGuards,
         FlexibleContexts,
-        FlexibleInstances
+        FlexibleInstances,
+        EmptyDataDecls
         
 
   GHC-Options: 
index b195bdf..f270c17 100644 (file)
@@ -56,6 +56,7 @@ Library
               BangPatterns, MagicHash, UnboxedTuples, TypeOperators,
               FlexibleInstances, FlexibleContexts
 
+
   GHC-Options: -Odph -funbox-strict-fields -fcpr-off -Werror
 
   Build-Depends: