Commit 17f080e8 authored by rl@cse.unsw.edu.au's avatar rl@cse.unsw.edu.au
Browse files

Extend vectorisation environment

parent b715bd16
...@@ -86,10 +86,14 @@ initBuiltins ...@@ -86,10 +86,14 @@ initBuiltins
} }
data VEnv = VEnv { data VEnv = VEnv {
-- Mapping from variables to their vectorised versions. Mapping -- Mapping from global variables to their vectorised versions.
-- to expressions instead of just Vars gives us more freedom.
-- --
vect_vars :: VarEnv CoreExpr vect_global_vars :: VarEnv CoreExpr
-- Mapping from local variables to their vectorised and lifted
-- versions.
--
, vect_local_vars :: VarEnv (CoreExpr, CoreExpr)
-- Exported variables which have a vectorised version -- Exported variables which have a vectorised version
-- --
...@@ -98,15 +102,27 @@ data VEnv = VEnv { ...@@ -98,15 +102,27 @@ data VEnv = VEnv {
-- Mapping from TyCons to their vectorised versions. -- Mapping from TyCons to their vectorised versions.
-- TyCons which do not have to be vectorised are mapped to -- TyCons which do not have to be vectorised are mapped to
-- themselves. -- themselves.
--
, vect_tycons :: NameEnv TyCon , vect_tycons :: NameEnv TyCon
-- Mapping from TyCons to their PA dictionaries
--
, vect_tycon_pa :: NameEnv CoreExpr
-- Mapping from tyvars to their PA dictionaries
--
, vect_tyvar_pa :: VarEnv CoreExpr
} }
initVEnv :: VectInfo -> DsM VEnv initVEnv :: VectInfo -> DsM VEnv
initVEnv info initVEnv info
= return $ VEnv { = return $ VEnv {
vect_vars = mapVarEnv (Var . snd) $ vectInfoCCVar info vect_global_vars = mapVarEnv (Var . snd) $ vectInfoCCVar info
, vect_local_vars = emptyVarEnv
, vect_exported_vars = emptyVarEnv , vect_exported_vars = emptyVarEnv
, vect_tycons = mapNameEnv snd $ vectInfoCCTyCon info , vect_tycons = mapNameEnv snd $ vectInfoCCTyCon info
, vect_tycon_pa = emptyNameEnv
, vect_tyvar_pa = emptyVarEnv
} }
-- FIXME -- FIXME
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment