RSSA backend

Stephen Weeks MLton@sourcelight.com
Tue, 15 Jan 2002 18:41:48 -0800


I've checked in a version that passes all tests.  See the logs.

Matthew, have a go at getting it to work with the x86-codegen when you
get the chance.  The main problems you may encounter that I can think
of are the new stack pointer convention and the liveness info in the
Machine IL.  Let me know if you have problems or when it's ready and
I'll merge RSSA in to the main line.

One other strangeness, I ran all the benchmarks comparing the current
stable MLton and the (just checked in) RSSA version, both using the C
codegen.  Weirdly enough, the RSSA version was noticeable faster in
most cases.  I have no explanation.  Here are the timings.

MLton0 -- /usr/local/bin/mlton -native false
MLton1 -- mlton -native false

run time ratio
benchmark         MLton1
barnes-hut          0.86
checksum            0.99
count-graphs        0.95
DLXSimulator        0.93
fft                 0.95
fib                 0.99
hamlet              1.02
imp-for             0.84
knuth-bendix        0.94
lexgen              1.20
life                0.83
logic               1.23
mandelbrot          0.73
matrix-multiply     0.82
md5                 0.97
merge               1.11
mlyacc              0.91
mpuz                0.77
nucleic             0.92
peek                1.11
psdes-random        0.94
ratio-regions       0.82
ray                 1.02
raytrace            0.93
simple              0.92
smith-normal-form   0.99
tailfib             0.98
tak                 0.93
tensor              0.98
tsp                 1.02
tyan                0.99
vector-concat       0.88
vector-rev          0.92
vliw                0.88
wc-input1           0.72
wc-scanStream       0.70
zebra               0.47
zern                0.89

size
benchmark            MLton0    MLton1
barnes-hut           68,197    64,189
checksum             20,885    20,893
count-graphs         43,933    41,989
DLXSimulator         97,933    81,885
fft                  33,949    32,645
fib                  20,757    20,813
hamlet            1,367,888 1,429,680
imp-for              20,765    20,805
knuth-bendix         60,622    61,838
lexgen              154,573   140,069
life                 37,669    37,165
logic                62,717    63,285
mandelbrot           20,709    20,781
matrix-multiply      21,333    21,405
md5                  32,014    33,062
merge                21,709    21,789
mlyacc              573,637   524,909
mpuz                 26,069    25,541
nucleic              48,657    48,161
peek                 29,326    29,630
psdes-random         21,549    21,477
ratio-regions        54,269    46,005
ray                  79,240    78,504
raytrace            258,477   180,165
simple              202,461   195,541
smith-normal-form   144,101   139,285
tailfib              20,477    20,565
tak                  20,741    20,845
tensor               70,556    65,828
tsp                  36,188    37,588
tyan                 91,974    85,094
vector-concat        21,517    21,461
vector-rev           21,325    21,253
vliw                319,377   293,841
wc-input1            43,526    41,758
wc-scanStream        44,814    42,814
zebra               148,158    91,054
zern                 27,876    26,948