Sophie

Sophie

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

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>RegAlloc.Graph.ArchBase</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_RegAlloc-Graph-ArchBase.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">RegAlloc.Graph.ArchBase</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Utils for calculating general worst, bound, squeese and free, functions.
</p><p>as per: <a href="A Generalized Algorithm for Graph-Coloring Register Allocation.html">A Generalized Algorithm for Graph-Coloring Register Allocation</a>
		Michael Smith, Normal Ramsey, Glenn Holloway.
		PLDI 2004
</p><p>These general versions are not used in GHC proper because they are too slow.
	Instead, hand written optimised versions are provided for each architecture
	in MachRegs*.hs 
</p><p>This code is here because we can test the architecture specific code against it.
</p></div></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:RegClass">RegClass</a> <ul class="subs"><li>= <a href="#v:ClassG32">ClassG32</a>  </li><li>| <a href="#v:ClassG16">ClassG16</a>  </li><li>| <a href="#v:ClassG8">ClassG8</a>  </li><li>| <a href="#v:ClassF64">ClassF64</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Reg">Reg</a> <ul class="subs"><li>= <a href="#v:Reg">Reg</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>  </li><li>| <a href="#v:RegSub">RegSub</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegSub">RegSub</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>  </li></ul></li><li class="src short"><span class="keyword">data</span>  <a href="#t:RegSub">RegSub</a> <ul class="subs"><li>= <a href="#v:SubL16">SubL16</a>  </li><li>| <a href="#v:SubL8">SubL8</a>  </li><li>| <a href="#v:SubL8H">SubL8H</a>  </li></ul></li><li class="src short"><a href="#v:worst">worst</a> :: (<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; (<a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:bound">bound</a> :: (<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; (<a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; [<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a>] -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:squeese">squeese</a> :: (<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; (<a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; [(<a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a>)] -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:RegClass" class="def">RegClass</a>  </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:ClassG32" class="def">ClassG32</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ClassG16" class="def">ClassG16</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ClassG8" class="def">ClassG8</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:ClassF64" class="def">ClassF64</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:RegClass" class="caption collapser" onclick="toggleSection('i:RegClass')">Instances</p><div id="section.i:RegClass" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Prelude.html#t:Enum">Enum</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Reg" class="def">Reg</a>  </p><div class="doc"><p>A register of some class
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Reg" class="def">Reg</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:RegSub" class="def">RegSub</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegSub">RegSub</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:Reg" class="caption collapser" onclick="toggleSection('i:Reg')">Instances</p><div id="section.i:Reg" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Unique.html#t:Uniquable">Uniquable</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a></td><td class="doc"><p>so we can put regs in UniqSets
</p></td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:RegSub" class="def">RegSub</a>  </p><div class="doc"><p>A subcomponent of another register
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:SubL16" class="def">SubL16</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:SubL8" class="def">SubL8</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:SubL8H" class="def">SubL8H</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:RegSub" class="caption collapser" onclick="toggleSection('i:RegSub')">Instances</p><div id="section.i:RegSub" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Prelude.html#t:Enum">Enum</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegSub">RegSub</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegSub">RegSub</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegSub">RegSub</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="RegAlloc-Graph-ArchBase.html#t:RegSub">RegSub</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:worst" class="def">worst</a> :: (<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; (<a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a> -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></p><div class="doc"><p>Worst case displacement
</p><p>a node N of classN has some number of neighbors, 
	all of which are from classC.
</p><p>(worst neighbors classN classC) is the maximum number of potential
	colors for N that can be lost by coloring its neighbors.
</p></div></div><div class="top"><p class="src"><a name="v:bound" class="def">bound</a> :: (<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; (<a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; [<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a>] -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></p><div class="doc"><p>For a node N of classN and neighbors of classesC
	(bound classN classesC) is the maximum number of potential 
	colors for N that can be lost by coloring its neighbors.
</p></div></div><div class="top"><p class="src"><a name="v:squeese" class="def">squeese</a> :: (<a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; (<a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a> -&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> <a href="RegAlloc-Graph-ArchBase.html#t:Reg">Reg</a>) -&gt; <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a> -&gt; [(<a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="RegAlloc-Graph-ArchBase.html#t:RegClass">RegClass</a>)] -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></p><div class="doc"><p>The total squeese on a particular node with a list of neighbors.
</p><p>A version of this should be constructed for each particular architecture,
	possibly including uses of bound, so that alised registers don't get counted
	twice, as per the paper.	
</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>