Update vectoriser now that PData instances have moved.
[ghc-hetmet.git] / compiler / vectorise / Vectorise / Builtins / Modules.hs
1
2 -- | Modules that contain builtin functions used by the vectoriser.
3 module Vectorise.Builtins.Modules
4         ( Modules(..)
5         , dph_Modules
6         , dph_Orphans)
7 where
8 import Module
9 import FastString
10         
11 -- | Ids of the modules that contain our DPH builtins.
12 data Modules 
13   = Modules 
14   { dph_PArray_Base             :: Module
15   , dph_PArray_Scalar           :: Module
16   , dph_PArray_PRepr            :: Module
17   , dph_PArray_PReprInstances   :: Module
18   , dph_PArray_PData            :: Module
19   , dph_PArray_PDataInstances   :: Module
20   , dph_PArray_Types            :: Module
21         
22   , dph_Repr                    :: Module
23   , dph_Closure                 :: Module
24   , dph_Unboxed                 :: Module
25   , dph_Combinators             :: Module
26   , dph_Scalar                  :: Module
27
28   , dph_Prelude_PArr            :: Module
29   , dph_Prelude_Int             :: Module
30   , dph_Prelude_Word8           :: Module
31   , dph_Prelude_Double          :: Module
32   , dph_Prelude_Bool            :: Module
33   , dph_Prelude_Tuple           :: Module
34   }
35
36
37 -- | The locations of builtins in the current DPH library.
38 dph_Modules :: PackageId -> Modules
39 dph_Modules pkg 
40   = Modules 
41   { dph_PArray_Base             = mk (fsLit "Data.Array.Parallel.PArray.Base")
42   , dph_PArray_Scalar           = mk (fsLit "Data.Array.Parallel.PArray.Scalar")
43   , dph_PArray_PRepr            = mk (fsLit "Data.Array.Parallel.PArray.PRepr")
44   , dph_PArray_PReprInstances   = mk (fsLit "Data.Array.Parallel.PArray.PReprInstances")
45   , dph_PArray_PData            = mk (fsLit "Data.Array.Parallel.PArray.PData")
46   , dph_PArray_PDataInstances   = mk (fsLit "Data.Array.Parallel.PArray.PDataInstances")
47   , dph_PArray_Types            = mk (fsLit "Data.Array.Parallel.PArray.Types")
48         
49   , dph_Repr                    = mk (fsLit "Data.Array.Parallel.Lifted.Repr")
50   , dph_Closure                 = mk (fsLit "Data.Array.Parallel.Lifted.Closure")
51   , dph_Unboxed                 = mk (fsLit "Data.Array.Parallel.Lifted.Unboxed")
52   , dph_Combinators             = mk (fsLit "Data.Array.Parallel.Lifted.Combinators")
53   , dph_Scalar                  = mk (fsLit "Data.Array.Parallel.Lifted.Scalar")
54
55   , dph_Prelude_PArr            = mk (fsLit "Data.Array.Parallel.Prelude.Base.PArr")
56   , dph_Prelude_Int             = mk (fsLit "Data.Array.Parallel.Prelude.Base.Int")
57   , dph_Prelude_Word8           = mk (fsLit "Data.Array.Parallel.Prelude.Base.Word8")
58   , dph_Prelude_Double          = mk (fsLit "Data.Array.Parallel.Prelude.Base.Double")
59   , dph_Prelude_Bool            = mk (fsLit "Data.Array.Parallel.Prelude.Base.Bool")
60   , dph_Prelude_Tuple           = mk (fsLit "Data.Array.Parallel.Prelude.Base.Tuple")
61   }
62   where mk = mkModule pkg . mkModuleNameFS
63
64
65 -- | Project out ids of modules that contain orphan instances that we need to load.
66 dph_Orphans :: [Modules -> Module]
67 dph_Orphans 
68  =      [ dph_Repr
69         , dph_PArray_PReprInstances
70         , dph_PArray_PDataInstances ]