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

SCM Repository

[smlnj] Log of /sml/trunk/src/MLRISC/flowgraph/buildFlowgraph.sml
[smlnj] / sml / trunk / src / MLRISC / flowgraph / buildFlowgraph.sml  
ViewVC logotype

Log of /sml/trunk/src/MLRISC/flowgraph/buildFlowgraph.sml

Parent Directory Parent Directory


Sticky Revision:
(Current path doesn't exist after revision 2125)

Revision 1192 - (view) (download) (annotate) - [select for diffs]
Modified Wed May 15 14:02:06 2002 UTC (17 years, 5 months ago) by george
File length: 11355 byte(s)
Diff to previous 1168
        All pseudo-ops emitted before the first segment declaration
such as TEXT, DATA, and BSS directives are assumed to be global
declarations and are emitted first in the assembly file. This is
useful in a number of situations where one has pseudo-ops that are not
specific to any segment, and also works around the constraint that one
cannot have client pseudo-ops in the TEXT segment.

        Because no segment is associated with these declarations it is
an error to allocate any space or objects before the first segment
directive and an exception will be raised. However, we cannot make
this check for client pseudo-ops.

        These top level declarations are a field in the CFG graph_info.
In theory you can continue to add to this field after the CFG has been
built -- provided you know what you are doing;-)

Revision 1168 - (view) (download) (annotate) - [select for diffs]
Modified Fri Mar 22 19:19:32 2002 UTC (17 years, 6 months ago) by george
File length: 10944 byte(s)
Diff to previous 1136
Implemented the Ball-Larus branch prediction-heuristic, and
incorporated graphical viewers for control flow graphs.

Ball-Larus Heuristic:
---------------------
See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml.

By design it uses the Dempster-Shafer theory for combining
probabilities.  For example, in the function:

    fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc)

the ball-larus heuristics predicts that the n=0 is unlikely
(OH-heuristic), and the 'then' branch is unlikely because of the
RH-heuristic -- giving the 'then' branch an even lower combined
probability using the Dempster-Shater theory.

Finally, John Reppy's loop analysis in MLRISC, further lowers the
probability of the 'then' branch because of the loop in the else
branch.


Graphical Viewing:
------------------
I merely plugged in Allen's graphical viewers into the compiler. The
additional code is not much. At the top level, saying:

	Control.MLRISC.getFlag "cfg-graphical-view" := true;

will display the graphical view of the control flow graph just before
back-patching.  daVinci must be in your path for this to work. If
daVinci is not available, then the default viewer can be changed
using:

	Control.MLRISC.getString "viewer"

which can be set to "dot" or "vcg" for the corresponding viewers. Of
course, these viewers must be in your path.

The above will display the compilation unit at the level of clusters,
many of which are small, boring, and un-interesting. Also setting:

	Control.MLRISC.getInt "cfg-graphical-view_size"

will display clusters that are larger than the value set by the above.

Revision 1136 - (view) (download) (annotate) - [select for diffs]
Modified Tue Mar 12 19:44:02 2002 UTC (17 years, 7 months ago) by george
File length: 10690 byte(s)
Diff to previous 1125
Integrated jump chaining and static block frequency into the
compiler. More details and numbers later.

Revision 1125 - (view) (download) (annotate) - [select for diffs]
Modified Thu Mar 7 21:04:13 2002 UTC (17 years, 7 months ago) by jhr
File length: 10324 byte(s)
Diff to previous 1102
  Changed representation of probabilities and frequencies.

Revision 1102 - (view) (download) (annotate) - [select for diffs]
Modified Thu Feb 28 18:47:42 2002 UTC (17 years, 7 months ago) by george
File length: 10295 byte(s)
Diff to previous 1051
fix exit edge labels

Revision 1051 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 1 15:04:17 2002 UTC (17 years, 8 months ago) by george
File length: 10305 byte(s)
Diff to previous 1050
Alignment directives were only recognized as being
text segment directives.

Revision 1050 - (view) (download) (annotate) - [select for diffs]
Modified Fri Feb 1 12:23:19 2002 UTC (17 years, 8 months ago) by george
File length: 10197 byte(s)
Diff to previous 1020
  added support for the comment pseudo op

Revision 1020 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jan 16 19:25:17 2002 UTC (17 years, 9 months ago) by george
File length: 10155 byte(s)
Diff to previous 1017
  When building the control flowgraph, both comments and labels
  are sensitive to the current  segment (TEXT/non-TEXT) being
  built.

Revision 1017 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jan 16 14:48:16 2002 UTC (17 years, 9 months ago) by george
File length: 9883 byte(s)
Diff to previous 1016
  fixed various bugs with emitting pseudo-ops

Revision 1016 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jan 15 23:10:06 2002 UTC (17 years, 9 months ago) by george
File length: 10182 byte(s)
Diff to previous 1014
1. Since COPY instructions are no longer native to the architecture,
   a generic functor can be used to implement the expandCopies function.

2. Allowed EXPORT and IMPORT pseudo-op declarations to appear inside a
   TEXT segment.

Revision 1014 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jan 15 16:32:43 2002 UTC (17 years, 9 months ago) by jhr
File length: 10142 byte(s)
Diff to previous 984
  Added code for BSS and SPACE pseudo-ops.

Revision 984 - (view) (download) (annotate) - [select for diffs]
Modified Wed Nov 21 19:00:08 2001 UTC (17 years, 10 months ago) by george
File length: 10058 byte(s)
Diff to previous 959
  Implemented a complete redesign of MLRISC pseudo-ops. Now there
  ought to never be any question of incompatabilities with
  pseudo-op syntax expected by host assemblers.

  For now, only modules supporting GAS syntax are implemented
  but more should follow, such as MASM, and vendor assembler
  syntax, e.g. IBM as, Sun as, etc.

Revision 959 - (view) (download) (annotate) - [select for diffs]
Modified Fri Oct 12 21:21:41 2001 UTC (18 years ago) by george
File length: 8393 byte(s)
Diff to previous 950
X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
Changes from Allen.

Revision 950 - (view) (download) (annotate) - [select for diffs]
Modified Fri Oct 5 20:10:46 2001 UTC (18 years ago) by jhr
File length: 8385 byte(s)
Diff to previous 933
  Changed defineLabel to report an error is one tries to define the same
  label twice in the same cluster.

Revision 933 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 19 19:31:19 2001 UTC (18 years ago) by george
File length: 8544 byte(s)
Diff to previous 906
  cleanup

Revision 906 - (view) (download) (annotate) - [select for diffs]
Added Fri Aug 24 17:36:40 2001 UTC (18 years, 1 month ago) by george
File length: 8835 byte(s)
Initial revision

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

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