Update vectoriser now that PData instances have moved.
authorBen Lippmeier <benl@ouroborus.net>
Mon, 9 May 2011 01:26:48 +0000 (11:26 +1000)
committerBen Lippmeier <benl@ouroborus.net>
Thu, 12 May 2011 10:36:21 +0000 (20:36 +1000)
compiler/vectorise/Vectorise/Builtins/Base.hs
compiler/vectorise/Vectorise/Builtins/Initialise.hs
compiler/vectorise/Vectorise/Builtins/Modules.hs
compiler/vectorise/Vectorise/Builtins/Prelude.hs

index 165dbda..8456d34 100644 (file)
@@ -13,7 +13,7 @@ module Vectorise.Builtins.Base (
        indexBuiltin,
        
        -- * Projections
-       selTy,
+        selTy,
        selReplicate,
        selPick,
        selTags,
index b37f559..a8cb2e8 100644 (file)
@@ -79,15 +79,23 @@ initBuiltins pkg
       -- From dph-common:Data.Array.Parallel.Lifted.PArray
       --   A PArray (Parallel Array) holds the array length and some array elements
       --   represented by the PData type family.
-      parrayTyCon      <- externalTyCon        dph_PArray      (fsLit "PArray")
+      parrayTyCon      <- externalTyCon        dph_PArray_Base   (fsLit "PArray")
       let [parrayDataCon] = tyConDataCons parrayTyCon
 
+      -- From dph-common:Data.Array.Parallel.PArray.Types
+      voidTyCon                <- externalTyCon        dph_PArray_Types  (fsLit "Void")
+      voidVar           <- externalVar          dph_PArray_Types  (fsLit "void")
+      fromVoidVar       <- externalVar          dph_PArray_Types  (fsLit "fromVoid")
+      wrapTyCon                <- externalTyCon        dph_PArray_Types  (fsLit "Wrap")
+      sum_tcs          <- mapM (externalTyCon  dph_PArray_Types) (numbered "Sum" 2 mAX_DPH_SUM)
+
+      -- from dph-common:Data.Array.Parallel.PArray.PDataInstances
+      pvoidVar          <- externalVar dph_PArray_PDataInstances  (fsLit "pvoid")
+      punitVar          <- externalVar dph_PArray_PDataInstances  (fsLit "punit")
+
 
       closureTyCon     <- externalTyCon dph_Closure             (fsLit ":->")
 
-      -- From dph-common:Data.Array.Parallel.Lifted.Repr
-      voidTyCon                <- externalTyCon        dph_Repr        (fsLit "Void")
-      wrapTyCon                <- externalTyCon        dph_Repr        (fsLit "Wrap")
 
       -- From dph-common:Data.Array.Parallel.Lifted.Unboxed
       sel_tys          <- mapM (externalType dph_Unboxed)
@@ -105,8 +113,6 @@ initBuiltins pkg
       sel_els          <- mapM mk_elements
                                [(i,j) | i <- [2..mAX_DPH_SUM], j <- [0..i-1]]
 
-      sum_tcs          <- mapM (externalTyCon dph_Repr)
-                               (numbered "Sum" 2 mAX_DPH_SUM)
 
       let selTys        = listArray (2, mAX_DPH_SUM) sel_tys
           selReplicates = listArray (2, mAX_DPH_SUM) sel_replicates
@@ -116,17 +122,14 @@ initBuiltins pkg
           sumTyCons     = listArray (2, mAX_DPH_SUM) sum_tcs
 
 
-      voidVar          <- externalVar dph_Repr         (fsLit "void")
-      pvoidVar         <- externalVar dph_Repr         (fsLit "pvoid")
-      fromVoidVar      <- externalVar dph_Repr         (fsLit "fromVoid")
-      punitVar         <- externalVar dph_Repr         (fsLit "punit")
+
       closureVar       <- externalVar dph_Closure      (fsLit "closure")
       applyVar         <- externalVar dph_Closure      (fsLit "$:")
       liftedClosureVar <- externalVar dph_Closure      (fsLit "liftedClosure")
       liftedApplyVar   <- externalVar dph_Closure      (fsLit "liftedApply")
 
       scalar_map       <- externalVar  dph_Scalar      (fsLit "scalar_map")
-      scalar_zip2      <- externalVar  dph_Scalar      (fsLit "scalar_zipWith")
+      scalar_zip2   <- externalVar     dph_Scalar      (fsLit "scalar_zipWith")
       scalar_zips      <- mapM (externalVar dph_Scalar)
                                (numbered "scalar_zipWith" 3 mAX_DPH_SCALAR_ARGS)
 
@@ -185,14 +188,16 @@ initBuiltins pkg
     -- These are the modules from the DPH base library that contain
     --  the primitive array types and functions that vectorised code uses.
     mods@(Modules 
-                { dph_PArray            = dph_PArray
-                , dph_PArray_Scalar     = dph_PArray_Scalar
-                , dph_PArray_PRepr      = dph_PArray_PRepr
-                , dph_PArray_PData      = dph_PArray_PData
-                , dph_Repr              = dph_Repr
-                , dph_Closure           = dph_Closure
-                , dph_Scalar            = dph_Scalar
-                , dph_Unboxed           = dph_Unboxed
+                { dph_PArray_Base               = dph_PArray_Base
+                , dph_PArray_Scalar             = dph_PArray_Scalar
+                , dph_PArray_PRepr              = dph_PArray_PRepr
+                , dph_PArray_PData              = dph_PArray_PData
+                , dph_PArray_PDataInstances     = dph_PArray_PDataInstances
+                , dph_PArray_Types              = dph_PArray_Types
+                , dph_Repr                      = dph_Repr
+                , dph_Closure                   = dph_Closure
+                , dph_Scalar                    = dph_Scalar
+                , dph_Unboxed                   = dph_Unboxed
                 })
       = dph_Modules pkg
 
index f562d5c..eafb0ca 100644 (file)
@@ -10,52 +10,61 @@ import FastString
        
 -- | Ids of the modules that contain our DPH builtins.
 data Modules 
-       = Modules 
-       { dph_PArray            :: Module
-        , dph_Repr             :: Module
-        , dph_Closure          :: Module
-        , dph_Unboxed          :: Module
-        , dph_Instances                :: Module
-        , dph_Combinators      :: Module
-        , dph_Scalar           :: Module
-        , dph_PArray_Scalar     :: Module
-        , dph_PArray_PRepr      :: Module
-        , dph_PArray_PData      :: Module
-        , dph_Prelude_PArr     :: Module
-        , dph_Prelude_Int      :: Module
-        , dph_Prelude_Word8    :: Module
-        , dph_Prelude_Double   :: Module
-        , dph_Prelude_Bool     :: Module
-        , dph_Prelude_Tuple    :: Module
-       }
+  = Modules 
+  { dph_PArray_Base             :: Module
+  , dph_PArray_Scalar           :: Module
+  , dph_PArray_PRepr            :: Module
+  , dph_PArray_PReprInstances   :: Module
+  , dph_PArray_PData            :: Module
+  , dph_PArray_PDataInstances   :: Module
+  , dph_PArray_Types            :: Module
+       
+  , dph_Repr                   :: Module
+  , dph_Closure                        :: Module
+  , dph_Unboxed                        :: Module
+  , dph_Combinators             :: Module
+  , dph_Scalar                 :: Module
+
+  , dph_Prelude_PArr            :: Module
+  , dph_Prelude_Int             :: Module
+  , dph_Prelude_Word8           :: Module
+  , dph_Prelude_Double          :: Module
+  , dph_Prelude_Bool            :: Module
+  , dph_Prelude_Tuple           :: Module
+  }
 
 
 -- | The locations of builtins in the current DPH library.
 dph_Modules :: PackageId -> Modules
 dph_Modules pkg 
-       = Modules 
-       { dph_PArray         = mk (fsLit "Data.Array.Parallel.Lifted.PArray")
-       , dph_Repr           = mk (fsLit "Data.Array.Parallel.Lifted.Repr")
-       , dph_Closure        = mk (fsLit "Data.Array.Parallel.Lifted.Closure")
-       , dph_Unboxed        = mk (fsLit "Data.Array.Parallel.Lifted.Unboxed")
-       , dph_Instances      = mk (fsLit "Data.Array.Parallel.Lifted.Instances")
-       , dph_Combinators    = mk (fsLit "Data.Array.Parallel.Lifted.Combinators")
-       , dph_Scalar         = mk (fsLit "Data.Array.Parallel.Lifted.Scalar")
-
-        , dph_PArray_Scalar  = mk (fsLit "Data.Array.Parallel.PArray.Scalar")
-        , dph_PArray_PRepr   = mk (fsLit "Data.Array.Parallel.PArray.PRepr")
-        , dph_PArray_PData   = mk (fsLit "Data.Array.Parallel.PArray.PData")
+  = Modules 
+  { dph_PArray_Base             = mk (fsLit "Data.Array.Parallel.PArray.Base")
+  , dph_PArray_Scalar           = mk (fsLit "Data.Array.Parallel.PArray.Scalar")
+  , dph_PArray_PRepr            = mk (fsLit "Data.Array.Parallel.PArray.PRepr")
+  , dph_PArray_PReprInstances   = mk (fsLit "Data.Array.Parallel.PArray.PReprInstances")
+  , dph_PArray_PData            = mk (fsLit "Data.Array.Parallel.PArray.PData")
+  , dph_PArray_PDataInstances   = mk (fsLit "Data.Array.Parallel.PArray.PDataInstances")
+  , dph_PArray_Types            = mk (fsLit "Data.Array.Parallel.PArray.Types")
+       
+  , dph_Repr                    = mk (fsLit "Data.Array.Parallel.Lifted.Repr")
+  , dph_Closure                 = mk (fsLit "Data.Array.Parallel.Lifted.Closure")
+  , dph_Unboxed                 = mk (fsLit "Data.Array.Parallel.Lifted.Unboxed")
+  , dph_Combinators             = mk (fsLit "Data.Array.Parallel.Lifted.Combinators")
+  , dph_Scalar                  = mk (fsLit "Data.Array.Parallel.Lifted.Scalar")
 
-       , dph_Prelude_PArr   = mk (fsLit "Data.Array.Parallel.Prelude.Base.PArr")
-       , dph_Prelude_Int    = mk (fsLit "Data.Array.Parallel.Prelude.Base.Int")
-       , dph_Prelude_Word8  = mk (fsLit "Data.Array.Parallel.Prelude.Base.Word8")
-       , dph_Prelude_Double = mk (fsLit "Data.Array.Parallel.Prelude.Base.Double")
-       , dph_Prelude_Bool   = mk (fsLit "Data.Array.Parallel.Prelude.Base.Bool")
-       , dph_Prelude_Tuple  = mk (fsLit "Data.Array.Parallel.Prelude.Base.Tuple")
-       }
-       where   mk = mkModule pkg . mkModuleNameFS
+  , dph_Prelude_PArr            = mk (fsLit "Data.Array.Parallel.Prelude.Base.PArr")
+  , dph_Prelude_Int             = mk (fsLit "Data.Array.Parallel.Prelude.Base.Int")
+  , dph_Prelude_Word8           = mk (fsLit "Data.Array.Parallel.Prelude.Base.Word8")
+  , dph_Prelude_Double          = mk (fsLit "Data.Array.Parallel.Prelude.Base.Double")
+  , dph_Prelude_Bool            = mk (fsLit "Data.Array.Parallel.Prelude.Base.Bool")
+  , dph_Prelude_Tuple           = mk (fsLit "Data.Array.Parallel.Prelude.Base.Tuple")
+  }
+  where        mk = mkModule pkg . mkModuleNameFS
 
 
 -- | Project out ids of modules that contain orphan instances that we need to load.
 dph_Orphans :: [Modules -> Module]
-dph_Orphans = [dph_Repr, dph_Instances]
+dph_Orphans 
+ =      [ dph_Repr
+        , dph_PArray_PReprInstances
+        , dph_PArray_PDataInstances ]
index b0f305d..438bddd 100644 (file)
@@ -25,7 +25,6 @@ preludeVars :: Modules
        -> [( Module, FastString        --   Maps the original variable to the one in the DPH 
            , Module, FastString)]      --   packages that it should be rewritten to.
 preludeVars (Modules { dph_Combinators    = _dph_Combinators
-                     , dph_PArray         = _dph_PArray
                      , dph_Prelude_Int    = dph_Prelude_Int
                      , dph_Prelude_Word8  = dph_Prelude_Word8
                      , dph_Prelude_Double = dph_Prelude_Double