Add utility functions for accessing PA info during vectorisation
[ghc-hetmet.git] / compiler / vectorise / Vectorise.hs
index e3f8008..bbfa562 100644 (file)
@@ -67,10 +67,11 @@ vectModule guts
           inst_env'     = extendInstEnvList (mg_inst_env guts) insts
       updGEnv (setInstEnvs inst_env' fam_inst_env')
      
-      dicts  <- mapM buildPADict pa_insts 
-      binds' <- mapM vectTopBind (mg_binds guts)
+      dicts   <- mapM buildPADict pa_insts
+      workers <- mapM vectDataConWorkers pa_insts
+      binds'  <- mapM vectTopBind (mg_binds guts)
       return $ guts { mg_types        = types'
-                    , mg_binds        = Rec (concat dicts) : binds'
+                    , mg_binds        = Rec (concat workers ++ concat dicts) : binds'
                     , mg_inst_env     = inst_env'
                     , mg_fam_inst_env = fam_inst_env'
                     , mg_insts        = mg_insts guts ++ insts
@@ -101,10 +102,8 @@ vectTopBind b@(Rec bs)
 vectTopBinder :: Var -> VM Var
 vectTopBinder var
   = do
-      vty <- vectType (idType var)
-      name <- cloneName mkVectOcc (getName var)
-      let var' | isExportedId var = Id.mkExportedLocalId name vty
-               | otherwise        = Id.mkLocalId         name vty
+      vty  <- vectType (idType var)
+      var' <- cloneId mkVectOcc var vty
       defGlobalVar var var'
       return var'