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
ViewVC logotype

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

View Directory Listing Directory Listing


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

Revision 1920 - Directory Listing
Modified Tue Apr 11 13:15:55 2006 UTC (13 years, 4 months ago) by jhr
  Minor changes to make the output more compatible with the version of gas
  that Apple uses on Mac OS X.  Also added support for 64-bit integers.

Revision 1679 - Directory Listing
Modified Sat Oct 30 14:09:26 2004 UTC (14 years, 9 months ago) by jhr
  Add support for NEG in LABEXPs.

Revision 1334 - Directory Listing
Modified Thu May 22 22:46:30 2003 UTC (16 years, 3 months ago) by mblume
major cleanup: eliminate all non-exhaustive pattern matches

Revision 1192 - Directory Listing
Modified Wed May 15 14:02:06 2002 UTC (17 years, 3 months ago) by george
        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 1181 - Directory Listing
Modified Wed Mar 27 21:27:27 2002 UTC (17 years, 4 months ago) by blume
provided MLRISC support for all four division ops (div/mod/quot/rem)

Revision 1174 - Directory Listing
Modified Sat Mar 23 21:14:40 2002 UTC (17 years, 4 months ago) by leunga

    Added some new primops for creating/manipulating temporary "C" objects
    allocated on the ml heap.

Revision 1172 - Directory Listing
Modified Fri Mar 22 20:42:01 2002 UTC (17 years, 5 months ago) by jhr
  Added newNode function.

Revision 1168 - Directory Listing
Modified Fri Mar 22 19:19:32 2002 UTC (17 years, 5 months ago) by george
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 1162 - Directory Listing
Modified Fri Mar 22 15:16:46 2002 UTC (17 years, 5 months ago) by jhr
  Added methods to get unique entry and exit blocks.

Revision 1158 - Directory Listing
Modified Fri Mar 22 01:21:25 2002 UTC (17 years, 5 months ago) by leunga
     Improvements to cfg

Revision 1156 - Directory Listing
Modified Thu Mar 21 22:01:11 2002 UTC (17 years, 5 months ago) by leunga

     Bug fixes and improvements to x86 and cfg

Revision 1136 - Directory Listing
Modified Tue Mar 12 19:44:02 2002 UTC (17 years, 5 months ago) by george
Integrated jump chaining and static block frequency into the
compiler. More details and numbers later.

Revision 1135 - Directory Listing
Modified Tue Mar 12 16:09:26 2002 UTC (17 years, 5 months ago) by jhr
  Added functor to compute block and edge frequencies from edge
  probabilities.

Revision 1133 - Directory Listing
Modified Tue Mar 12 03:56:23 2002 UTC (17 years, 5 months ago) by george
Tested the jump chain elimination on all architectures (except the
hppa).  This is on by default right now and is profitable for the
alpha and x86, however, it may not be profitable for the sparc and ppc
when compiling the compiler.

The gc test will typically jump to a label at the end of the cluster,
where there is another jump to an external cluster containing the actual
code to invoke gc. This is to allow factoring of common gc invocation
sequences. That is to say, we generate:

	f:
	   testgc
	   ja	L1	% jump if above to L1

	L1:
	   jmp L2


After jump chain elimination the 'ja L1' instructions is converted to
'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end
up being implemented in their long form (if L2 is far away) using:

	jbe	L3	% jump if below or equal to L3
        jmp 	L2
     L3:
	...


For large compilation units L2  may be far away.

Revision 1126 - Directory Listing
Modified Thu Mar 7 21:16:28 2002 UTC (17 years, 5 months ago) by blume
implemented generic Controls module and used it for
all compiler flags/tuneable knobs/...;
more command-line options accepted (for setting the above controls);
some minor bug fixes

Revision 1125 - Directory Listing
Modified Thu Mar 7 21:04:13 2002 UTC (17 years, 5 months ago) by jhr
  Changed representation of probabilities and frequencies.

Revision 1118 - Directory Listing
Modified Wed Mar 6 15:30:25 2002 UTC (17 years, 5 months ago) by jhr
  Added dumpBlock printing routine.

Revision 1107 - Directory Listing
Modified Thu Feb 28 20:03:26 2002 UTC (17 years, 5 months ago) by jhr
  Documentation update.

Revision 1104 - Directory Listing
Modified Thu Feb 28 19:56:53 2002 UTC (17 years, 5 months ago) by jhr
  Added dump function to CFG module (this can replace the PrintFlowgraph
  functor).

Revision 1103 - Directory Listing
Modified Thu Feb 28 19:29:30 2002 UTC (17 years, 5 months ago) by jhr
  Removing unused (and incomplete) file.

Revision 1102 - Directory Listing
Modified Thu Feb 28 18:47:42 2002 UTC (17 years, 5 months ago) by george
fix exit edge labels

Revision 1084 - Directory Listing
Modified Thu Feb 21 18:52:44 2002 UTC (17 years, 5 months ago) by jhr
  Removed SIDEEXIT edge kind and HYPER block kind.  Added FLOWSTO edge kind.

Revision 1051 - Directory Listing
Modified Fri Feb 1 15:04:17 2002 UTC (17 years, 6 months ago) by george
Alignment directives were only recognized as being
text segment directives.

Revision 1050 - Directory Listing
Modified Fri Feb 1 12:23:19 2002 UTC (17 years, 6 months ago) by george
  added support for the comment pseudo op

Revision 1026 - Directory Listing
Modified Fri Jan 18 14:54:17 2002 UTC (17 years, 7 months ago) by jhr
  More pseudo-op fixes; added first-cut at MacOS X assembler support.

Revision 1023 - Directory Listing
Modified Thu Jan 17 14:02:05 2002 UTC (17 years, 7 months ago) by jhr
  Fixing formatting of pseudo-ops.

Revision 1022 - Directory Listing
Modified Thu Jan 17 13:39:45 2002 UTC (17 years, 7 months ago) by jhr
  Fixed generated comment syntax to use C syntax (not SML!).

Revision 1020 - Directory Listing
Modified Wed Jan 16 19:25:17 2002 UTC (17 years, 7 months ago) by george
  When building the control flowgraph, both comments and labels
  are sensitive to the current  segment (TEXT/non-TEXT) being
  built.

Revision 1019 - Directory Listing
Modified Wed Jan 16 18:34:31 2002 UTC (17 years, 7 months ago) by george
bug fix for external/import declarations

Revision 1018 - Directory Listing
Modified Wed Jan 16 17:21:14 2002 UTC (17 years, 7 months ago) by george
Bug fixes:

  1. Emit a .text at the beginning of an assembly listing.

  2. Implement the ASCIIZ pseudo-op using .ascii and String.toCString.

Revision 1017 - Directory Listing
Modified Wed Jan 16 14:48:16 2002 UTC (17 years, 7 months ago) by george
  fixed various bugs with emitting pseudo-ops

Revision 1016 - Directory Listing
Modified Tue Jan 15 23:10:06 2002 UTC (17 years, 7 months ago) by george
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 - Directory Listing
Modified Tue Jan 15 16:32:43 2002 UTC (17 years, 7 months ago) by jhr
  Added code for BSS and SPACE pseudo-ops.

Revision 1012 - Directory Listing
Modified Tue Jan 15 16:16:39 2002 UTC (17 years, 7 months ago) by george
  added BSS and SPACE as basic pseudo-ops

Revision 992 - Directory Listing
Modified Thu Nov 22 16:29:06 2001 UTC (17 years, 8 months ago) by george
 endian related functions

Revision 991 - Directory Listing
Modified Thu Nov 22 14:25:12 2001 UTC (17 years, 8 months ago) by george
  Fixed a bug on non-x86 architectures related to backpatching
  and the new pseudo-ops.

Revision 984 - Directory Listing
Modified Wed Nov 21 19:00:08 2001 UTC (17 years, 9 months ago) by george
  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 - Directory Listing
Modified Fri Oct 12 21:21:41 2001 UTC (17 years, 10 months ago) by george
X86RA now uses a valid (instead of dummy) PrintFlowgraph module.
Changes from Allen.

Revision 950 - Directory Listing
Modified Fri Oct 5 20:10:46 2001 UTC (17 years, 10 months ago) by jhr
  Changed defineLabel to report an error is one tries to define the same
  label twice in the same cluster.

Revision 933 - Directory Listing
Modified Wed Sep 19 19:31:19 2001 UTC (17 years, 11 months ago) by george
  cleanup

Revision 926 - Directory Listing
Modified Fri Sep 14 15:49:15 2001 UTC (17 years, 11 months ago) by jhr
  Added show_edge to exported values.

Revision 924 - Directory Listing
Modified Fri Sep 14 15:13:26 2001 UTC (17 years, 11 months ago) by jhr
Added Allen's CFG fixes

Revision 906 - Directory Listing
Added Fri Aug 24 17:36:40 2001 UTC (17 years, 11 months ago) by george
Initial revision

Sort log by:

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