X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fvectorise%2FVectorise%2FMonad%2FGlobal.hs;h=632845f31039a8656e60bfff5a8c680d6ffbe468;hp=4bd6c770fdb97659b7e2fe6add0820a6a264b73e;hb=2c8aabcad1d2f2c469cb8a10afa7b66beeaedd45;hpb=0e82126ed0bd2d16a1925d8a8a6c5eb6d7762ac5 diff --git a/compiler/vectorise/Vectorise/Monad/Global.hs b/compiler/vectorise/Vectorise/Monad/Global.hs index 4bd6c77..632845f 100644 --- a/compiler/vectorise/Vectorise/Monad/Global.hs +++ b/compiler/vectorise/Vectorise/Monad/Global.hs @@ -4,11 +4,14 @@ module Vectorise.Monad.Global ( setGEnv, updGEnv, - -- * Vars - defGlobalVar, - - -- * Scalars - globalScalars, + -- * Vars + defGlobalVar, + + -- * Vectorisation declarations + lookupVectDecl, + + -- * Scalars + globalScalars, isGlobalScalar, -- * TyCons lookupTyCon, @@ -27,8 +30,12 @@ module Vectorise.Monad.Global ( -- * PR Dictionaries lookupTyConPR ) where + import Vectorise.Monad.Base import Vectorise.Env + +import CoreSyn +import Type import TyCon import DataCon import NameEnv @@ -65,11 +72,25 @@ defGlobalVar v v' = updGEnv $ \env -> | otherwise = env +-- Vectorisation declarations ------------------------------------------------- + +-- |Check whether a variable has a (non-scalar) vectorisation declaration. +-- +lookupVectDecl :: Var -> VM (Maybe (Type, CoreExpr)) +lookupVectDecl var = readGEnv $ \env -> lookupVarEnv (global_vect_decls env) var + + -- Scalars -------------------------------------------------------------------- --- | Get the set of global scalar variables. + +-- |Get the set of global scalar variables. +-- globalScalars :: VM VarSet -globalScalars - = readGEnv global_scalars +globalScalars = readGEnv global_scalar_vars + +-- |Check whether a given variable is in the set of global scalar variables. +-- +isGlobalScalar :: Var -> VM Bool +isGlobalScalar var = readGEnv $ \env -> elemVarSet var (global_scalar_vars env) -- TyCons ---------------------------------------------------------------------