From 17f080e87c1a8d27cab83970c0d6da7c0d5f7a0b Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Mon, 9 Jul 2007 05:37:09 +0000 Subject: [PATCH] Extend vectorisation environment --- compiler/vectorise/Vectorise.hs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index 5fbd053..41b360e 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -86,10 +86,14 @@ initBuiltins } data VEnv = VEnv { - -- Mapping from variables to their vectorised versions. Mapping - -- to expressions instead of just Vars gives us more freedom. + -- Mapping from global variables to their vectorised versions. -- - 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 -- @@ -98,15 +102,27 @@ data VEnv = VEnv { -- Mapping from TyCons to their vectorised versions. -- TyCons which do not have to be vectorised are mapped to -- themselves. + -- , 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 info = 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_tycons = mapNameEnv snd $ vectInfoCCTyCon info + , vect_tycon_pa = emptyNameEnv + , vect_tyvar_pa = emptyVarEnv } -- FIXME -- 1.7.10.4