X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fvectorise%2FVectMonad.hs;h=7b201fafc27de4eee06b37efb50d706706c4d4e7;hb=2ece0f10dd4771b22a6bcd45f799c56ab9a79bb1;hp=2e076971cce92bc27e494b357a40ab4df732eb0c;hpb=d7c0802c7f6219ccbde97e9aacba1c0e4bed49d4;p=ghc-hetmet.git diff --git a/compiler/vectorise/VectMonad.hs b/compiler/vectorise/VectMonad.hs index 2e07697..7b201fa 100644 --- a/compiler/vectorise/VectMonad.hs +++ b/compiler/vectorise/VectMonad.hs @@ -27,6 +27,7 @@ import HscTypes import CoreSyn import Class import TyCon +import DataCon import Type import Var import VarEnv @@ -108,9 +109,9 @@ data GlobalEnv = GlobalEnv { -- , global_tycons :: NameEnv TyCon - -- Mapping from TyCons to their PA dictionaries + -- Mapping from DataCons to their vectorised versions -- - , global_tycon_pa :: NameEnv CoreExpr + , global_datacons :: NameEnv DataCon -- External package inst-env & home-package inst-env for class -- instances @@ -147,7 +148,7 @@ initGlobalEnv info instEnvs famInstEnvs global_vars = mapVarEnv (Var . snd) $ vectInfoVar info , global_exported_vars = emptyVarEnv , global_tycons = mapNameEnv snd $ vectInfoTyCon info - , global_tycon_pa = emptyNameEnv + , global_datacons = mapNameEnv snd $ vectInfoDataCon info , global_inst_env = instEnvs , global_fam_inst_env = famInstEnvs , global_bindings = [] @@ -163,14 +164,15 @@ emptyLocalEnv = LocalEnv { updVectInfo :: GlobalEnv -> TypeEnv -> VectInfo -> VectInfo updVectInfo env tyenv info = info { - vectInfoVar = global_exported_vars env - , vectInfoTyCon = tc_env + vectInfoVar = global_exported_vars env + , vectInfoTyCon = mk_env typeEnvTyCons global_tycons + , vectInfoDataCon = mk_env typeEnvDataCons global_datacons } where - tc_env = mkNameEnv [(tc_name, (tc,tc')) - | tc <- typeEnvTyCons tyenv - , let tc_name = tyConName tc - , Just tc' <- [lookupNameEnv (global_tycons env) tc_name]] + mk_env from_tyenv from_env = mkNameEnv [(name, (from,to)) + | from <- from_tyenv tyenv + , let name = getName from + , Just to <- [lookupNameEnv (from_env env) name]] data VResult a = Yes GlobalEnv LocalEnv a | No