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 /pages/trunk/NEWS/110.16-README.html
ViewVC logotype

View of /pages/trunk/NEWS/110.16-README.html

Parent Directory Parent Directory | Revision Log Revision Log

Revision 953 - (download) (as text) (annotate)
Thu Oct 11 09:52:12 2001 UTC (18 years, 7 months ago) by macqueen
File size: 3972 byte(s)
Initial revision
    <title>SML/NJ Version 110.15 NEWS</title>

  <body bgcolor="white">
   <center><h1>Standard ML of New Jersey<BR>
        Version 110.16, April 16, 1999</h1>

      <tt> http://cm.bell-labs.com/cm/cs/what/smlnj/index.html </tt>

<h2> Warning </h2>
  	This version is intended for compiler hackers.  
	We are in the midst of substantial structural changes, 
	and this is a snapshot.  It only  supports the Sparc, 
	Alpha, HPPA, and PowerPC architectures.  Furthermore, 
	there are performance bugs that have to be fixed.

  This version is primarily intended to have a working x86 back  
  end that  will aid in migrating FLINT changes into the central 

<h2>X86 back end</h2>

  The new x86 back end in this version is one point in a series 
  of experiments aimed at code generation for the x86. 
  See the paper X86-k32 under:
    <a href="../compiler-notes/index.html">Compiler notes</a>.

  In summary, on a 433MHz Pentium II, floating point programs 
  show a better improvement (over a factor of 2 for mandelbrot) 
  than integer programs, when compared with 110.0.3. 
<TABLE border>
<TR><TH> Name <TH>    110.0.3 <TH>  New <TH>   Speedup </TR>
<TR><TD>    tsp	     <TD>       7.55<TD>    6.49<TD>     16.39%</TR>
<TR><TD>    logic    <TD>       5.45<TD>    4.87<TD>     11.84%</TR>
<TR><TD>    fft      <TD>       1.11<TD>    0.81<TD>     37.89%</TR>
<TR><TD>    barnesHut<TD>       3.89<TD>    3.04<TD>     27.64%</TR>
<TR><TD>    ray      <TD>       3.93<TD>    3.26<TD>     20.28%</TR>
<TR><TD>    mandelbrot <TD>     1.32<TD>    0.56<TD>    134.22%</TR>
<TR><TD>    simple   <TD>       2.85<TD>    2.76<TD>      3.02%</TR>
<TR><TD>    vliw     <TD>       2.20<TD>    1.78<TD>     23.64%</TR>
<TR><TD>    mlyacc   <TD>       0.49<TD>    0.47<TD>      3.86%</TR>
<TR><TD>    lexgen   <TD>       0.97<TD>    0.91<TD>      6.99%</TR>
<TR><TD>    knuthBendix<TD>     1.05<TD>    0.78<TD>     34.98%</TR>
<TR><TD>    life     <TD>       0.14<TD>    0.12<TD>     13.51%</TR>
<TR><TD>    boyer    <TD>       0.25<TD>    0.22<TD>     13.74%</TR>
  Compile time however, has uniformly increased by 40%. The compiler
  compiles itself in 10.51 minutes, which is reasonable for the time

  For very fast compile times, a quick and simple code generator is 
  possible, but my priority right now is execution speed.

<h2>Compiler changes</h2>

  The CPS compiler will frequently generate a sequence of
  and use the result in the rest of the function. This is bad
  for the x86, which will normally spill the result of the select, 
  reload it at the use, only to have it written into the heap. 
  Many of these selects are used just once, and so the MLRisc 
  generator moves these pure operations to the point of their use, 
  to reduce register pressure. It turns out that this optimization
  is also useful for RISC machines. 
  110.16 on a 533MHz DEC Alpha, compiles itself in 5.92 minutes
  whereas 110.15 compiles the sources for 110.16 in 6.72 minutes
  an improvement of 14%. 


  The interface to the register allocator now takes a list of 
  registers to prohibit from spilling.

    <font size=-2>
    <address><a href="mailto:george@research.bell-labs.com">
		Lal George</a></address>
<!-- Created: Thu Aug  6 00:13:09 EDT 1998 -->
<!-- hhmts start -->
Last modified: Thu Jun  3 11:20:13 EDT 1999
<!-- hhmts end -->

ViewVC Help
Powered by ViewVC 1.0.0