Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 3143

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Vectorise.Env</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Vectorise-Env.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">Vectorise.Env</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Local Environments
</a></li><li><a href="#g:2">Global Environments
</a></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span>  <a href="#t:Scope">Scope</a> a b<ul class="subs"><li>= <a href="#v:Global">Global</a> a  </li><li>| <a href="#v:Local">Local</a> b  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:LocalEnv">LocalEnv</a>  = <a href="#v:LocalEnv">LocalEnv</a> {<ul class="subs"><li><a href="#v:local_vars">local_vars</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> (<a href="Var.html#t:Var">Var</a>, <a href="Var.html#t:Var">Var</a>)</li><li><a href="#v:local_tyvars">local_tyvars</a> :: [<a href="Var.html#t:TyVar">TyVar</a>]</li><li><a href="#v:local_tyvar_pa">local_tyvar_pa</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a></li><li><a href="#v:local_bind_name">local_bind_name</a> :: <a href="FastString.html#t:FastString">FastString</a></li></ul>}</li><li class="src short"><a href="#v:emptyLocalEnv">emptyLocalEnv</a> :: <a href="Vectorise-Env.html#t:LocalEnv">LocalEnv</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:GlobalEnv">GlobalEnv</a>  = <a href="#v:GlobalEnv">GlobalEnv</a> {<ul class="subs"><li><a href="#v:global_vars">global_vars</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> <a href="Var.html#t:Var">Var</a></li><li><a href="#v:global_vect_decls">global_vect_decls</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> (<a href="Type.html#t:Type">Type</a>, <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>)</li><li><a href="#v:global_scalar_vars">global_scalar_vars</a> :: <a href="VarSet.html#t:VarSet">VarSet</a></li><li><a href="#v:global_scalar_tycons">global_scalar_tycons</a> :: <a href="NameSet.html#t:NameSet">NameSet</a></li><li><a href="#v:global_novect_vars">global_novect_vars</a> :: <a href="VarSet.html#t:VarSet">VarSet</a></li><li><a href="#v:global_tycons">global_tycons</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="TyCon.html#t:TyCon">TyCon</a></li><li><a href="#v:global_datacons">global_datacons</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="DataCon.html#t:DataCon">DataCon</a></li><li><a href="#v:global_pa_funs">global_pa_funs</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="Var.html#t:Var">Var</a></li><li><a href="#v:global_pr_funs">global_pr_funs</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="Var.html#t:Var">Var</a></li><li><a href="#v:global_inst_env">global_inst_env</a> :: (<a href="InstEnv.html#t:InstEnv">InstEnv</a>, <a href="InstEnv.html#t:InstEnv">InstEnv</a>)</li><li><a href="#v:global_fam_inst_env">global_fam_inst_env</a> :: <a href="FamInstEnv.html#t:FamInstEnvs">FamInstEnvs</a></li><li><a href="#v:global_bindings">global_bindings</a> :: [(<a href="Var.html#t:Var">Var</a>, <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>)]</li></ul>}</li><li class="src short"><a href="#v:initGlobalEnv">initGlobalEnv</a> :: <a href="HscTypes.html#t:VectInfo">VectInfo</a> -&gt; [<a href="CoreSyn.html#t:CoreVect">CoreVect</a>] -&gt; (<a href="InstEnv.html#t:InstEnv">InstEnv</a>, <a href="InstEnv.html#t:InstEnv">InstEnv</a>) -&gt; <a href="FamInstEnv.html#t:FamInstEnvs">FamInstEnvs</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></li><li class="src short"><a href="#v:extendImportedVarsEnv">extendImportedVarsEnv</a> :: [(<a href="Var.html#t:Var">Var</a>, <a href="Var.html#t:Var">Var</a>)] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></li><li class="src short"><a href="#v:extendFamEnv">extendFamEnv</a> :: [<a href="FamInstEnv.html#t:FamInst">FamInst</a>] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></li><li class="src short"><a href="#v:setPAFunsEnv">setPAFunsEnv</a> :: [(<a href="Name.html#t:Name">Name</a>, <a href="Var.html#t:Var">Var</a>)] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></li><li class="src short"><a href="#v:setPRFunsEnv">setPRFunsEnv</a> :: [(<a href="Name.html#t:Name">Name</a>, <a href="Var.html#t:Var">Var</a>)] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></li><li class="src short"><a href="#v:modVectInfo">modVectInfo</a> :: <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; [<a href="Var.html#t:Id">Id</a>] -&gt; [<a href="TyCon.html#t:TyCon">TyCon</a>] -&gt; [<a href="CoreSyn.html#t:CoreVect">CoreVect</a>] -&gt; <a href="HscTypes.html#t:VectInfo">VectInfo</a> -&gt; <a href="HscTypes.html#t:VectInfo">VectInfo</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Scope" class="def">Scope</a> a b </p><div class="doc"><p>Indicates what scope something (a variable) is in.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Global" class="def">Global</a> a</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:Local" class="def">Local</a> b</td><td class="doc empty">&nbsp;</td></tr></table></div></div><h1 id="g:1">Local Environments
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:LocalEnv" class="def">LocalEnv</a>  </p><div class="doc"><p>The local environment.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:LocalEnv" class="def">LocalEnv</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:local_vars" class="def">local_vars</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> (<a href="Var.html#t:Var">Var</a>, <a href="Var.html#t:Var">Var</a>)</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:local_tyvars" class="def">local_tyvars</a> :: [<a href="Var.html#t:TyVar">TyVar</a>]</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:local_tyvar_pa" class="def">local_tyvar_pa</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:local_bind_name" class="def">local_bind_name</a> :: <a href="FastString.html#t:FastString">FastString</a></dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><a name="v:emptyLocalEnv" class="def">emptyLocalEnv</a> :: <a href="Vectorise-Env.html#t:LocalEnv">LocalEnv</a></p><div class="doc"><p>Create an empty local environment.
</p></div></div><h1 id="g:2">Global Environments
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:GlobalEnv" class="def">GlobalEnv</a>  </p><div class="doc"><p>The global environment: entities that exist at top-level.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:GlobalEnv" class="def">GlobalEnv</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:global_vars" class="def">global_vars</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> <a href="Var.html#t:Var">Var</a></dt><dd class="doc"><p>Mapping from global variables to their vectorised versions &#8212; aka the /vectorisation
 map/.
</p></dd><dt class="src"><a name="v:global_vect_decls" class="def">global_vect_decls</a> :: <a href="VarEnv.html#t:VarEnv">VarEnv</a> (<a href="Type.html#t:Type">Type</a>, <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>)</dt><dd class="doc"><p>Mapping from global variables that have a vectorisation declaration to the right-hand
 side of that declaration and its type.  This mapping only applies to non-scalar
 vectorisation declarations.  All variables with a scalar vectorisation declaration are
 mentioned in <code>global_scalars_vars</code>.
</p></dd><dt class="src"><a name="v:global_scalar_vars" class="def">global_scalar_vars</a> :: <a href="VarSet.html#t:VarSet">VarSet</a></dt><dd class="doc"><p>Purely scalar variables. Code which mentions only these variables doesn't have to be
 lifted.  This includes variables from the current module that have a scalar
 vectorisation declaration and those that the vectoriser determines to be scalar.
</p></dd><dt class="src"><a name="v:global_scalar_tycons" class="def">global_scalar_tycons</a> :: <a href="NameSet.html#t:NameSet">NameSet</a></dt><dd class="doc"><p>Type constructors whose values can only contain scalar data.  This includes type
 constructors that appear in a 'VECTORISE SCALAR type' pragma or 'VECTORISE type' pragma
 *without* a right-hand side in the current or an imported module as well as type
 constructors that are automatically identified as scalar by the vectoriser (in
 <code><a href="Vectorise-Type.html#t:Env">Env</a></code>).  Scalar code may only operate on such data.
</p><p>NB: Not all type constructors in that set are members of the <code>Scalar</code> type class
     (which can be trivially marshalled across scalar code boundaries).
</p></dd><dt class="src"><a name="v:global_novect_vars" class="def">global_novect_vars</a> :: <a href="VarSet.html#t:VarSet">VarSet</a></dt><dd class="doc"><p>Variables that are not vectorised.  (They may be referenced in the right-hand sides
 of vectorisation declarations, though.)
</p></dd><dt class="src"><a name="v:global_tycons" class="def">global_tycons</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="TyCon.html#t:TyCon">TyCon</a></dt><dd class="doc"><p>Mapping from TyCons to their vectorised versions.
 TyCons which do not have to be vectorised are mapped to themselves.
</p></dd><dt class="src"><a name="v:global_datacons" class="def">global_datacons</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="DataCon.html#t:DataCon">DataCon</a></dt><dd class="doc"><p>Mapping from DataCons to their vectorised versions.
</p></dd><dt class="src"><a name="v:global_pa_funs" class="def">global_pa_funs</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="Var.html#t:Var">Var</a></dt><dd class="doc"><p>Mapping from TyCons to their PA dfuns.
</p></dd><dt class="src"><a name="v:global_pr_funs" class="def">global_pr_funs</a> :: <a href="NameEnv.html#t:NameEnv">NameEnv</a> <a href="Var.html#t:Var">Var</a></dt><dd class="doc"><p>Mapping from TyCons to their PR dfuns.
</p></dd><dt class="src"><a name="v:global_inst_env" class="def">global_inst_env</a> :: (<a href="InstEnv.html#t:InstEnv">InstEnv</a>, <a href="InstEnv.html#t:InstEnv">InstEnv</a>)</dt><dd class="doc"><p>External package inst-env &amp; home-package inst-env for class instances.
</p></dd><dt class="src"><a name="v:global_fam_inst_env" class="def">global_fam_inst_env</a> :: <a href="FamInstEnv.html#t:FamInstEnvs">FamInstEnvs</a></dt><dd class="doc"><p>External package inst-env &amp; home-package inst-env for family instances.
</p></dd><dt class="src"><a name="v:global_bindings" class="def">global_bindings</a> :: [(<a href="Var.html#t:Var">Var</a>, <a href="CoreSyn.html#t:CoreExpr">CoreExpr</a>)]</dt><dd class="doc"><p>Hoisted bindings.
</p></dd></dl><div class="clear"></div></div></td></tr></table></div></div><div class="top"><p class="src"><a name="v:initGlobalEnv" class="def">initGlobalEnv</a> :: <a href="HscTypes.html#t:VectInfo">VectInfo</a> -&gt; [<a href="CoreSyn.html#t:CoreVect">CoreVect</a>] -&gt; (<a href="InstEnv.html#t:InstEnv">InstEnv</a>, <a href="InstEnv.html#t:InstEnv">InstEnv</a>) -&gt; <a href="FamInstEnv.html#t:FamInstEnvs">FamInstEnvs</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></p><div class="doc"><p>Create an initial global environment.
</p><p>We add scalar variables and type constructors identified by vectorisation pragmas already here
 to the global table, so that we can query scalarness during vectorisation, and especially, when
 vectorising the scalar entities' definitions themselves.
</p></div></div><div class="top"><p class="src"><a name="v:extendImportedVarsEnv" class="def">extendImportedVarsEnv</a> :: [(<a href="Var.html#t:Var">Var</a>, <a href="Var.html#t:Var">Var</a>)] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></p><div class="doc"><p>Extend the list of global variables in an environment.
</p></div></div><div class="top"><p class="src"><a name="v:extendFamEnv" class="def">extendFamEnv</a> :: [<a href="FamInstEnv.html#t:FamInst">FamInst</a>] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></p><div class="doc"><p>Extend the list of type family instances.
</p></div></div><div class="top"><p class="src"><a name="v:setPAFunsEnv" class="def">setPAFunsEnv</a> :: [(<a href="Name.html#t:Name">Name</a>, <a href="Var.html#t:Var">Var</a>)] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></p><div class="doc"><p>Set the list of PA functions in an environment.
</p></div></div><div class="top"><p class="src"><a name="v:setPRFunsEnv" class="def">setPRFunsEnv</a> :: [(<a href="Name.html#t:Name">Name</a>, <a href="Var.html#t:Var">Var</a>)] -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a></p><div class="doc"><p>Set the list of PR functions in an environment.
</p></div></div><div class="top"><p class="src"><a name="v:modVectInfo" class="def">modVectInfo</a> :: <a href="Vectorise-Env.html#t:GlobalEnv">GlobalEnv</a> -&gt; [<a href="Var.html#t:Id">Id</a>] -&gt; [<a href="TyCon.html#t:TyCon">TyCon</a>] -&gt; [<a href="CoreSyn.html#t:CoreVect">CoreVect</a>] -&gt; <a href="HscTypes.html#t:VectInfo">VectInfo</a> -&gt; <a href="HscTypes.html#t:VectInfo">VectInfo</a></p><div class="doc"><p>Compute vectorisation information that goes into <code><a href="HscTypes.html#t:ModGuts">ModGuts</a></code> (and is stored in interface files).
 The incoming <code>vectInfo</code> is that from the <code><a href="HscTypes.html#t:HscEnv">HscEnv</a></code> and <code><a href="HscTypes.html#v:EPS">EPS</a></code>.  The outgoing one contains only the
 declarations for the currently compiled module; this includes variables, type constructors, and
 data constructors referenced in VECTORISE pragmas, even if they are defined in an imported
 module.
</p><p>The variables explicitly include class selectors and dfuns.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>