Update vectoriser now that PRepr has 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            :: Module
15         , dph_Repr              :: Module
16         , dph_Closure           :: Module
17         , dph_Unboxed           :: Module
18         , dph_Instances         :: Module
19         , dph_Combinators       :: Module
20         , dph_Scalar            :: Module
21         , dph_PArray_Scalar     :: Module
22         , dph_PArray_PRepr      :: Module
23         , dph_PArray_PData      :: Module
24         , dph_Prelude_PArr      :: Module
25         , dph_Prelude_Int       :: Module
26         , dph_Prelude_Word8     :: Module
27         , dph_Prelude_Double    :: Module
28         , dph_Prelude_Bool      :: Module
29         , dph_Prelude_Tuple     :: Module
30         }
31
32
33 -- | The locations of builtins in the current DPH library.
34 dph_Modules :: PackageId -> Modules
35 dph_Modules pkg 
36         = Modules 
37         { dph_PArray         = mk (fsLit "Data.Array.Parallel.Lifted.PArray")
38         , dph_Repr           = mk (fsLit "Data.Array.Parallel.Lifted.Repr")
39         , dph_Closure        = mk (fsLit "Data.Array.Parallel.Lifted.Closure")
40         , dph_Unboxed        = mk (fsLit "Data.Array.Parallel.Lifted.Unboxed")
41         , dph_Instances      = mk (fsLit "Data.Array.Parallel.Lifted.Instances")
42         , dph_Combinators    = mk (fsLit "Data.Array.Parallel.Lifted.Combinators")
43         , dph_Scalar         = mk (fsLit "Data.Array.Parallel.Lifted.Scalar")
44
45         , dph_PArray_Scalar  = mk (fsLit "Data.Array.Parallel.PArray.Scalar")
46         , dph_PArray_PRepr   = mk (fsLit "Data.Array.Parallel.PArray.PRepr")
47         , dph_PArray_PData   = mk (fsLit "Data.Array.Parallel.PArray.PData")
48
49         , dph_Prelude_PArr   = mk (fsLit "Data.Array.Parallel.Prelude.Base.PArr")
50         , dph_Prelude_Int    = mk (fsLit "Data.Array.Parallel.Prelude.Base.Int")
51         , dph_Prelude_Word8  = mk (fsLit "Data.Array.Parallel.Prelude.Base.Word8")
52         , dph_Prelude_Double = mk (fsLit "Data.Array.Parallel.Prelude.Base.Double")
53         , dph_Prelude_Bool   = mk (fsLit "Data.Array.Parallel.Prelude.Base.Bool")
54         , dph_Prelude_Tuple  = mk (fsLit "Data.Array.Parallel.Prelude.Base.Tuple")
55         }
56         where   mk = mkModule pkg . mkModuleNameFS
57
58
59 -- | Project out ids of modules that contain orphan instances that we need to load.
60 dph_Orphans :: [Modules -> Module]
61 dph_Orphans = [dph_Repr, dph_Instances]