This BIG PATCH contains most of the work for the New Coercion Representation
[ghc-hetmet.git] / compiler / vectorise / Vectorise / Builtins / Initialise.hs
index 992a880..ecb8a98 100644 (file)
@@ -24,7 +24,6 @@ import CoreSyn
 import Type
 import Name
 import Module
-import Var
 import Id
 import FastString
 import Outputable
@@ -46,12 +45,15 @@ initBuiltins pkg
       let [parrayDataCon] = tyConDataCons parrayTyCon
 
       pdataTyCon       <- externalTyCon        dph_PArray      (fsLit "PData")
-      paTyCon          <- externalClassTyCon   dph_PArray      (fsLit "PA")
-      let [paDataCon]  = tyConDataCons paTyCon
+      paClass           <- externalClass        dph_PArray      (fsLit "PA")
+      let paTyCon     = classTyCon paClass
+          [paDataCon] = tyConDataCons paTyCon
+          paPRSel     = classSCSelId paClass 0
 
       preprTyCon       <- externalTyCon        dph_PArray      (fsLit "PRepr")
-      prTyCon          <- externalClassTyCon   dph_PArray      (fsLit "PR")
-      let [prDataCon]  = tyConDataCons prTyCon
+      prClass           <- externalClass        dph_PArray      (fsLit "PR")
+      let prTyCon     = classTyCon prClass
+          [prDataCon] = tyConDataCons prTyCon
 
       closureTyCon     <- externalTyCon dph_Closure            (fsLit ":->")
 
@@ -125,9 +127,12 @@ initBuiltins pkg
                , parrayTyCon      = parrayTyCon
                , parrayDataCon    = parrayDataCon
                , pdataTyCon       = pdataTyCon
+               , paClass          = paClass
                , paTyCon          = paTyCon
                , paDataCon        = paDataCon
+               , paPRSel          = paPRSel
                , preprTyCon       = preprTyCon
+               , prClass          = prClass
                , prTyCon          = prTyCon
                , prDataCon        = prDataCon
                , voidTyCon        = voidTyCon
@@ -185,10 +190,11 @@ initBuiltins pkg
              $ mkFastString ("elementsSel" ++ show i ++ "_" ++ show j ++ "#")
           return ((i,j), Var v)
 
-
 -- | Get the mapping of names in the Prelude to names in the DPH library.
-initBuiltinVars :: Builtins -> DsM [(Var, Var)]
-initBuiltinVars (Builtins { dphModules = mods })
+--
+initBuiltinVars :: Bool   -- FIXME
+                -> Builtins -> DsM [(Var, Var)]
+initBuiltinVars compilingDPH (Builtins { dphModules = mods })
   = do
       uvars <- zipWithM externalVar umods ufs
       vvars <- zipWithM externalVar vmods vfs
@@ -197,7 +203,7 @@ initBuiltinVars (Builtins { dphModules = mods })
                ++ zip (map dataConWorkId cons) cvars
                ++ zip uvars vvars
   where
-    (umods, ufs, vmods, vfs) = unzip4 (preludeVars mods)
+    (umods, ufs, vmods, vfs) = if compilingDPH then ([], [], [], []) else unzip4 (preludeVars mods)
     (cons, cmods, cfs)       = unzip3 (preludeDataCons mods)
 
     defaultDataConWorkers :: [DataCon]
@@ -267,12 +273,12 @@ initBuiltinBoxedTyCons
        builtinBoxedTyCons _ 
                = [(tyConName intPrimTyCon, intTyCon)]
 
-
 -- | Get a list of all scalar functions in the mock prelude.
-initBuiltinScalars :: Builtins -> DsM [Var]
-initBuiltinScalars bi
-  = mapM (uncurry externalVar) (preludeScalars $ dphModules bi)
-
+--
+initBuiltinScalars :: Bool 
+                   -> Builtins -> DsM [Var]
+initBuiltinScalars True  _bi = return []
+initBuiltinScalars False bi  = mapM (uncurry externalVar) (preludeScalars $ dphModules bi)
 
 -- | Lookup some variable given its name and the module that contains it.
 externalVar :: Module -> FastString -> DsM Var
@@ -305,9 +311,3 @@ externalClass :: Module -> FastString -> DsM Class
 externalClass mod fs
   = dsLookupClass =<< lookupOrig mod (mkClsOccFS fs)
 
-
--- | Like `externalClass`, but get the TyCon of of the class.
-externalClassTyCon :: Module -> FastString -> DsM TyCon
-externalClassTyCon mod fs = liftM classTyCon (externalClass mod fs)
-
-