Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/MLRISC/Doc/cluster.html
ViewVC logotype

View of /sml/trunk/src/MLRISC/Doc/cluster.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 499 - (download) (as text) (annotate)
Tue Dec 7 15:44:50 1999 UTC (20 years, 3 months ago) by monnier
File size: 1964 byte(s)
This commit was generated by cvs2svn to compensate for changes in r498,
which included commits to RCS files with non-trunk default branches.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
   <META NAME="GENERATOR" CONTENT="Mozilla/4.07 [en] (X11; I; Linux 2.2.7 i686) [Netscape]">
</HEAD>
<BODY bgcolor="#FFFFFF">

<CENTER>
<H1>
<FONT COLOR="#aa0000">Cluster</FONT></H1></CENTER>

A <em>cluster</em> represents a compilation unit in linearized form.
A compilation unit in MLRISC allows compilation unit tha
It contains information about the control flow, annotations, 
frequencies, and live-in/live-out information.

Its signature is:
<pre>
signature FLOWGRAPH = sig
  structure C : <a href="cells.html"> CELLS </a>
  structure I : <a href="instructions.html"> INSTRUCTIONS </a>
  structure P : <a href="pseudo-ops"> PSEUDO_OPS </a>
  structure W : <a href="freq.html"> FREQ </a>
	  sharing I.C = C

  datatype block =
      PSEUDO of P.pseudo_op
    | LABEL of Label.label
    | BBLOCK of { blknum      : int,
                  freq        : W.freq ref,
                  annotations : Annotations.annotations ref,
		  liveIn      : C.cellset ref,
		  liveOut     : C.cellset ref,
		  succ 	      : edge list ref,
		  pred 	      : edge list ref,
		  insns	      : I.instruction list ref
	        }
    | ENTRY of {blknum : int, freq : W.freq ref, succ : edge list ref}
    | EXIT of {blknum : int, freq : W.freq ref, pred : edge list ref}
  withtype edge = block * W.freq ref

  datatype cluster = 
      CLUSTER of {
        blocks: block list, 
	entry : block,
	exit  : block,	  
        regmap: C.regmap,
        blkCounter : int ref,
        annotations : Annotations.annotations ref
      }
end
</pre>

Clusters are used in
<a href="span-dep.html"> span dependency resolution </a>, 
<a href="delayslots.html"> delay slot filling </a>,
<a href="asm.html"> assembly <a>, and <a href="mc.html"> machine code </a> 
output, since these phases require the code laid out in linearized form.


<HR>

</BODY>
</HTML>

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0