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/compiler/CodeGen/main/machine-gen.sml
[smlnj] / sml / trunk / src / compiler / CodeGen / main / machine-gen.sml  
ViewVC logotype

Log of /sml/trunk/src/compiler/CodeGen/main/machine-gen.sml

Parent Directory Parent Directory


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

Revision 1173 - (view) (download) (annotate) - [select for diffs]
Modified Sat Mar 23 04:18:51 2002 UTC (18 years, 4 months ago) by george
File length: 5990 byte(s)
Diff to previous 1168
Edge colors  during graphical viewing is based on
execution frequency of the edge. I used the same
color scale employed in yahoo weather maps.

Revision 1168 - (view) (download) (annotate) - [select for diffs]
Modified Fri Mar 22 19:19:32 2002 UTC (18 years, 4 months ago) by george
File length: 5990 byte(s)
Diff to previous 1141
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 1141 - (view) (download) (annotate) - [select for diffs]
Modified Wed Mar 13 19:37:54 2002 UTC (18 years, 4 months ago) by george
File length: 5104 byte(s)
Diff to previous 1136
  adapted to new jump chaining interface

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

Revision 1133 - (view) (download) (annotate) - [select for diffs]
Modified Tue Mar 12 03:56:23 2002 UTC (18 years, 4 months ago) by george
File length: 4697 byte(s)
Diff to previous 1016
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 1016 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jan 15 23:10:06 2002 UTC (18 years, 6 months ago) by george
File length: 4355 byte(s)
Diff to previous 1009
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 1009 - (view) (download) (annotate) - [select for diffs]
Modified Wed Jan 9 19:44:22 2002 UTC (18 years, 7 months ago) by george
File length: 4774 byte(s)
Diff to previous 984
	Removed the native COPY and FCOPY instructions
	from all the architectures and replaced it with the
	explicit COPY instruction from the previous commit.

	It is now possible to simplify many of the optimizations
	modules that manipulate copies. This has not been
	done in this change.

Revision 984 - (view) (download) (annotate) - [select for diffs]
Modified Wed Nov 21 19:00:08 2001 UTC (18 years, 8 months ago) by george
File length: 4008 byte(s)
Diff to previous 909
  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 909 - (view) (download) (annotate) - [select for diffs]
Modified Fri Aug 24 17:48:53 2001 UTC (18 years, 11 months ago) by george
File length: 3879 byte(s)
Diff to previous 838
removed clusters from MLRISC

Revision 838 - (view) (download) (annotate) - [select for diffs]
Modified Tue Jun 5 19:10:21 2001 UTC (19 years, 2 months ago) by blume
File length: 3858 byte(s)
Diff to previous 823
index-file generation in CM; small changes to c-calls API

Revision 823 - (view) (download) (annotate) - [select for diffs]
Modified Tue May 8 21:25:15 2001 UTC (19 years, 3 months ago) by george
File length: 3892 byte(s)
Diff to previous 773
omit frame pointer optimization

Revision 773 - (view) (download) (annotate) - [select for diffs]
Modified Mon Jan 8 16:18:37 2001 UTC (19 years, 7 months ago) by blume
File length: 3391 byte(s)
Diff to previous 744
merging changes from private branch

Revision 744 - (view) (download) (annotate) - [select for diffs]
Modified Fri Dec 8 04:11:42 2000 UTC (19 years, 8 months ago) by leunga
File length: 3220 byte(s)
Diff to previous 717

   A CVS update record!

   Changed type cell from int to datatype, and numerous other changes.
   Affect every client of MLRISC.  Lal says this can be bootstrapped on all
   machines.  See smlnj/HISTORY for details.

   Tag:  leunga-20001207-cell-monster-hack

Revision 717 - (view) (download) (annotate) - [select for diffs]
Modified Sun Nov 5 15:07:51 2000 UTC (19 years, 9 months ago) by george
File length: 3218 byte(s)
Diff to previous 651
support for sqrt and trig functions on the x86

Revision 651 - (view) (download) (annotate) - [select for diffs]
Modified Thu Jun 1 18:34:03 2000 UTC (20 years, 2 months ago) by monnier
File length: 3179 byte(s)
Diff to previous 585
bring revisions from the vendor branch to the trunk

Revision 585 - (view) (download) (annotate) - [select for diffs]
Modified Wed Mar 29 23:55:35 2000 UTC (20 years, 4 months ago) by leunga
File length: 3179 byte(s)
Diff to previous 555

   This update contains major changes to the code generator and various
back ends.  Please see the entry leunga-20000327-mlriscGen_hppa_alpha_x86
in the file sml/HISTORY for details.

Revision 555 - (view) (download) (annotate) - [select for diffs]
Modified Fri Mar 3 16:10:30 2000 UTC (20 years, 5 months ago) by george
File length: 3227 byte(s)
Diff to previous 499
lal-20000303-new mltree -- take II

Revision 499 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 7 15:44:50 1999 UTC (20 years, 8 months ago) by monnier
File length: 3083 byte(s)
Copied from: sml/branches/SMLNJ/src/compiler/CodeGen/main/machine-gen.sml revision 498
Diff to previous 498
This commit was generated by cvs2svn to compensate for changes in r498,
which included commits to RCS files with non-trunk default branches.

Revision 498 - (view) (download) (annotate) - [select for diffs]
Modified Tue Dec 7 15:44:50 1999 UTC (20 years, 8 months ago) by monnier
Original Path: sml/branches/SMLNJ/src/compiler/CodeGen/main/machine-gen.sml
File length: 3083 byte(s)
Diff to previous 469
version 110.25

Revision 469 - (view) (download) (annotate) - [select for diffs]
Modified Wed Nov 10 22:42:52 1999 UTC (20 years, 9 months ago) by monnier
Original Path: sml/branches/SMLNJ/src/compiler/CodeGen/main/machine-gen.sml
File length: 3106 byte(s)
Diff to previous 428
version 110.23

Revision 428 - (view) (download) (annotate) - [select for diffs]
Modified Wed Sep 8 09:47:00 1999 UTC (20 years, 11 months ago) by
Original Path: sml/branches/SMLNJ/src/compiler/CodeGen/main/machine-gen.sml
File length: 3209 byte(s)
Copied from: sml/trunk/src/compiler/CodeGen/main/machine-gen.sml revision 427
Diff to previous 427
This commit was manufactured by cvs2svn to create branch 'SMLNJ'.

Revision 427 - (view) (download) (annotate) - [select for diffs]
Added Wed Sep 8 09:40:08 1999 UTC (20 years, 11 months ago) by monnier
File length: 3209 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