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

SCM Repository

[smlnj] Diff of /sml/trunk/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 583, Thu Mar 23 21:52:30 2000 UTC revision 643, Fri May 12 08:29:15 2000 UTC
# Line 12  Line 12 
12  Tag: <post-commit CVS tag>  Tag: <post-commit CVS tag>
13  Description:  Description:
14  ----------------------------------------------------------------------  ----------------------------------------------------------------------
15    Name: Matthias Blume
16    Date: 2000/05/12 17:30:00 JST
17    Tag: blume-20000512-anchors
18    Description:
19    
20    !!! NEW BOOT FILES !!!
21    
22    This change is in preparation of fading out support for "implicitly
23    anchored path names".  I went through all sources and used the
24    explicit (and relatively new) $-notation.  See system/README and the
25    CM manual for more info on this.
26    
27    I also modified the anchoring scheme for some things such as "smlnj",
28    "MLRISC", "cm", etc. to take advantage of the fact that explicit
29    anchors are more expressive: anchor name and first arc do not have to
30    coincide.  This entails the following user-visible change:
31    
32    You have to write $smlnj/foo/bar instead of smlnj/foo/bar.  In
33    particular, when you fire up sml with a command-line argument, say,
34    e.g.:
35    
36       sml '$smlnj/cmb.cm'
37    
38    At the ML toplevel prompt:
39    
40       CM.autoload "$smlnj/cmb.cm";
41    
42    There is also a new controller in CM.Control that can be used to turn
43    off all remaining support for implicit anchors by saying:
44    
45        CM.autoload "$smlnj/
46        #set CM.Control.implicit_anchors false;
47    
48    This causes CM to reject implicitly anchored paths.  This is (for the
49    time being) less permissive than the "final" version where there will
50    be no more such implicit anchors and relative paths will be just that:
51    relative.
52    
53    The next step (version after next version?) will be to make the
54    default for CM.Control.implicit_anchors false.  After the dust has
55    settled, I can then produce the "final" version of this...
56    
57    Note: Since bootstrapping is a bit tricky, I provided new boot files.
58    
59    ----------------------------------------------------------------------
60    Name: Matthias Blume
61    Date: 2000/05/11 16:30:00 JST
62    Tag: blume-20000511-sources
63    Description:
64    
65    The main change is that I added function CM.sources as a generalized
66    version of the earlier CM.makedepend.  This entails the following
67    additional changes:
68    
69      - CM.makedepend has been dropped.
70    
71      - CM manual has been updated.
72    
73      - TOOLS signature and API have been changed.
74    
75    ----------------------------------------------------------------------
76    Name: Allen Leung
77    Date: 2000/05/10 21:17 EDT
78    Tag: leunga-20000510-moby-c--ssa
79    Description:
80    
81      Various bug fixes and new features for C--, Moby and MLRISC optimizations.
82    None of these affect SML/NJ.
83    
84    1. Register Allocation
85    
86        a. A new ra spilling module (ra/ra-spill-with-renaming) is implemented.
87           This module tries to remove local (i.e. basic block level) redundancies
88           during spilling.
89    
90        b. A new framework for performing region based register allocation.
91           Not yet entirely functional.
92    
93    2. X86
94    
95       a. DefUse for POP was missing the stack pointer [found by Lal]
96       b. Reload for CALL was incorrect in X86Spill [found by John]
97       c. Various fixes in X86Spill so that it can be used correctly for
98          the new spilling module.
99    
100    3. SSA/IR
101    
102       a. New module ir/dj-dataflow.sml implements elimination based
103          data flow analysis.
104    
105    4. MLRiscGen
106    
107       a. Fix for gc type annotation
108    
109    5. MDGen
110    
111       Various fixes for machine description -> ml code translation.  For ssa
112       only.
113    
114    ----------------------------------------------------------------------
115    Name: Allen Leung
116    Date: 2000/05/08 22:17 EDT
117    Tag: leunga-20000508-labexp
118    Description:
119    
120      Fermin has found a few assembly problems with constant expressions
121      generated in LabelExp.  Mostly, the problems involve extra parentheses,
122      which choke on dumb assemblers.  This is his fix.
123    
124    ----------------------------------------------------------------------
125    Name: Dave MacQueen
126    Date: 2000/04/09 14:00 EDT
127    Tag: dbm-20000502-Version_110_28
128    Description:
129    
130    1. Updated src/compiler/TopLevel/main/version.sml to version 110.28
131    
132    2. Updated config/version to 110.28
133    
134    3. Updated config/srcarchiveurl
135    
136    3. New boot files!
137       ftp://ftp.research.bell-labs.com/dist/smlnj/working/110.28/
138    
139    ----------------------------------------------------------------------
140    Name: Matthias Blume
141    Date: 2000/05/01 19:05:00 JST
142    Tag: blume-20000501-noweb
143    Description:
144    
145    A new noweb tool has been added.  The existing system is entirely
146    unaffected by this, but some CM users have asked for renewed noweb
147    support.  Everything is documented in the CM manual.
148    
149    New (plugin) libraries:
150    
151       noweb-tool.cm
152       nw-ext.cm
153    
154    ----------------------------------------------------------------------
155    Name: Dave MacQueen
156    Date: 2000/04/30 12:40PM EDT
157    Tag: dbm-20000430-bug_fixes
158    Description:
159    
160    1. Fix for bug 1498
161       smlnj/src/system/Basis/Implementation/Unsafe/object.sig
162       smlnj/src/system/Basis/Implementation/Unsafe/object.sml
163         added toRealArray function
164       smlnj/src/compiler/MiscUtil/print/ppobj.sml
165         added check for tag Obj.RealArray to array printing case in ppObj
166    
167    2. Fix for bug 1510
168       smlnj/src/compiler/Semant/types/typesutil.sml
169         fixed definition of dummyargs (used by equalTycon) so that
170         dummy args are distinct types
171    
172    ----------------------------------------------------------------------
173    Name: Matthias Blume
174    Date: 2000/04/30 01:00:00 JST
175    Tag: blume-20000430-versions
176    Description:
177    
178    1. CM version numbering added.  This is an implementation of Lal's
179       proposal for adding version numbers and version checking to .cm
180       files.  Lal said that his proposal was just that -- a proposal.
181       For the time being I went ahead and implemented it so that people
182       can comment on it.  Everything is completely backward-compatible
183       (except for the stable library format, i.e., new bootfiles!).
184    
185       As usual, see the CM manual for details.
186    
187    2. An alternative syntax for anchored paths has been implemented.
188       Dave has recently voiced the same concerns that I had when I did
189       this, so there should be some support.  My take is that eventually
190       I will let support for the current syntax (where anchors are
191       "implicit") fade out in favor of the new, explicit syntax.
192       In order to be backward-compatible, both old and new syntax are
193       currently supported.
194    
195       Again, see the CM manual for details.
196    
197    3. Parallel make is trying to be slightly smarter:  When the master
198       process finds a "bottleneck", i.e., when there is only one
199       compilation unit that can be compiled and everybody else is
200       waiting on it, then it will simply compile it directly instead
201       of clumsily telling one of the slaves to do it.
202    
203    4. Support for "unsharing" added.  This is necessary in order to be
204       able to have two different versions of the same library running
205       at the same time (e.g., for trying out a new MLRISC while still
206       having the old MLRISC linked into the current compiler, etc.)
207       See the CM manual.
208    
209    5. Simple "makedepend" functionality added for generating Makefile
210       dependency information.  (This is rather crude at the moment.
211       Expect some changes here in the future.)
212    
213    6. ".fun" added as a recognized suffix for ML files. Also documented
214       explicitly in the manual that the fallback behavior (unknown suffix
215       -> ML file) is not an official feature!
216    
217    7. Small changes to the pickler for stable libraries.
218    
219    8. Several internal changes to CM (for cleanup/improvement).
220    
221    
222    !!!! NEW BINFILES !!!!
223    
224    ----------------------------------------------------------------------
225    Name: Matthias Blume
226    Date: 2000/04/28 17:30:00 JST
227    Tag: blume-20000428-pathconfig
228    Description:
229    
230    1. I changed config/install.sh to remove duplicate entries from the
231       lib/pathconfig file at the end.  Moreover, the final version of
232       lib/pathconfig is sorted alphabetically.  The same (sorting) is done
233       in src/system/installml.
234    
235    2. The config/install.sh script now consistently uses relative
236       pathnames in lib/pathconfig whenever the anchor is in the lib
237       directory.  (So far this was true for the libraries that come
238       pre-compiled and bundled as part of the bootfiles but not for
239       libraries that are compiled by the script itself.)
240    
241    ----------------------------------------------------------------------
242    Name: Matthias Blume
243    Date: 2000/04/26 13:10:00 JST
244    Tag: blume-20000426-fun_suffix
245    Description:
246    
247    Added ".fun" as a recognized file name suffix (for ML code).
248    
249    ----------------------------------------------------------------------
250    Name: Allen Leung
251    Date: 2000/04/25 17:00:00 EST
252    Tag: leunga-20000425-alpha-ra
253    Description:
254    
255    1. Alpha
256    
257        PSEUDOARITH was missing in AlphaRewrite.  This causes an endless loop
258    in C--.
259    
260    2. RA
261    
262       Added a flag "ra-dump-size" to print out the size of the flowgraph
263       and the interference graph.
264    
265    ----------------------------------------------------------------------
266    Name: Dave MacQueen
267    Date: 2000/04/25/
268    Tag: dbm-20000425-mlyacc_doc_examples
269    Description:
270      Updated mlyacc.tex sections 5 and 7 for SML '97 and CM.
271      Updated all three examples in src/ml-yacc/examples to run
272      under 110.* using CM.make.
273    
274    ----------------------------------------------------------------------
275    Name: Allen Leung
276    Date: 2000/04/20 23:04:00 EST
277    Tag: leunga-20000420-ssa-c---stuff
278    Description:
279    
280      This update synchronizes my repository with Yale's.  Most of these
281    changes, however, do not affect SML/NJ at all (the RA is an exception).
282    
283    1. Register Allocator
284    
285       a. An improvement in the interference graph construction:
286          Given a copy
287    
288                s <- t
289    
290          no interference edge between s and t is added for this definition of s.
291    
292       b. I've added two new spill heuristic modules that Fermin and I developed
293          (in the new library RA.cm). These are unused in SML/NJ but maybe
294          useful for others (Moby?)
295    
296    2. X86
297    
298       a. Various fixes in the backend provided by Fermin [C--] and Lal.
299    
300    3. Alpha
301    
302       a. Added the BSR instruction and code generation that goes with it [C--]
303       b. Other fixes too numerous to recount provided by Fermin [C--]
304    
305    4. Regmaps
306    
307       a. The regmaps are not initialized with the identity physical bindings
308          at creation time.  This is unneeded.
309    
310    5. MLRISC Optimizations
311    
312       a. The DJ-Graph module can now compute the iterated dominance frontiers
313          intersects with liveness incrementally in linear time! Woohoo!
314          This is now used in my new SSA construction algorithm.
315    
316       b. THe branch reorganization module is now smarter about linear chains of
317          basic blocks.
318    
319    
320    ----------------------------------------------------------------------
321    Name: Matthias Blume
322    Date: 2000/04/12 13:52:00 JST
323    Tag: blume_main_v110p27_1
324    Description:
325    
326    Changed install.sh script to handle archive files without version number
327    and to use "boot.<arch>-<os>" instead of "sml.boot.<arch>-<os>" for the
328    name of the boot file archive.
329    
330    ----------------------------------------------------------------------
331    Name: Dave MacQueen
332    Date: 2000/04/09 14:00 EDT
333    Tag: dbm-20000410-Version_110_27
334    Description:
335    
336    1. Updated src/compiler/TopLevel/main/version.sml to version 110.27
337    
338    2. Updated src/config/version to 110.27
339    
340    3. New boot files!
341    
342    ----------------------------------------------------------------------
343    Name: Allen Leung
344    Date: 2000/04/09 19:09:00 EST
345    Tag: leunga-20000409-misc
346    Description:
347    
348    1.  Yet another fix for x86 assembly for idivl, imull, mull and friends.
349    
350    2.  Miscellaneous improvements to MLRISC (unused in sml/nj)
351    
352    ----------------------------------------------------------------------
353    Name: Stefan
354    Date: 2000/04/07 10:00:00 EDT
355    Tag: monnier-20000406-branch-handling
356    Description:
357    
358    Improved handling of branches (mostly those generated from
359    polymorphic equality), removed switchoff and changed the
360    default optimization settings (more cpsopt and less flintopt).
361    
362    ----------------------------------------------------------------------
363    Name: Allen Leung
364    Date: 2000/04/06 01:30:00 EST
365    Tag: leunga-20000406-peephole-x86-SSA-2
366    Description:
367    
368       Forgot a few files.
369    
370    ----------------------------------------------------------------------
371    Name: Allen Leung
372    Date: 2000/04/06 00:36:00 EST
373    Tag: leunga-20000406-peephole-x86-SSA
374    Description:
375    
376    1.  New Peephole code
377    
378    2.  Minor improvement to X86 instruction selection
379    
380    3.  Various fixes to SSA and machine description -> code translator
381    
382    ----------------------------------------------------------------------
383    Name: Matthias Blume
384    Date: 2000/04/05 12:30:00 JST
385    Tag: blume_main_v110p26p2_3
386    Description:
387    
388    This update just merges three minor cosmetic updates to CM's sources
389    to get ready for the 110.27 code freeze on Friday.  No functionality
390    has changed.
391    
392    ----------------------------------------------------------------------
393    Name: Allen Leung
394    Date: 2000/04/04 19:39:00 EST
395    Tag: leunga-20000404-x86-asm
396    Description:
397    
398    1.  Fixed a problem in X86 assembly.
399    
400        Things like
401    
402           jmp %eax
403           jmp (%eax)
404    
405        should be output as
406    
407           jmp *%eax
408           jmp *(%eax)
409    
410    2.  Assembly output
411    
412          Added a new flag
413    
414              "asm-indent-copies" (default to false)
415    
416          When this flag is on, parallel copies will be indented an extra level.
417    
418    ----------------------------------------------------------------------
419    Name: Allen Leung
420    Date: 2000/04/04 03:18:00 EST
421    Tag: leunga-20000404-C--Moby
422    Description:
423    
424        All of these fixes are related to C--, Moby, and my own optimization
425        stuff; so they shouldn't affect SML/NJ.
426    
427    1.  X86
428    
429        Various fixes related floating point, and extensions.
430    
431    2.  Alpha
432    
433        Some extra patterns related to loads with signed/zero extension
434        provided by Fermin.
435    
436    3.  Assembly
437    
438        When generating assemby, resolve the value of client defined constants,
439        instead of generating symbolic values.  This is controlled by the
440        new flag "asm-resolve-constants", which is default to true.
441    
442    4.  Machine Descriptions
443    
444        a. The precedence parser was slightly broken when parsing infixr symbols.
445        b. The type generalizing code had the bound variables reversed, resulting
446           in a problem during arity raising.
447        c. Various fixes in machine descriptions.
448    
449    ----------------------------------------------------------------------
450    Name: Matthias Blume
451    Date: 2000/04/03 16:05:00 JST
452    Tag: blume_main_v110p26p2_2
453    Description:
454    
455    I eliminated coreEnv from compInfo.  Access to the "Core" structure is
456    now done via the ordinary static environment that is context to each
457    compilation unit.
458    
459    To this end, I arranged that instead of "structure Core" as "structure
460    _Core" is bound in the pervasive environment.  Core access is done via
461    _Core (which can never be accidentially rebound because _Core is not a
462    legal surface-syntax symbol).
463    
464    The current solution is much cleaner because the core environment is
465    now simply part of the pervasive environment which is part of every
466    compilation unit's context anyway.  In particular, this eliminates all
467    special-case handling that was necessary until now in order to deal
468    with dynamic and symbolic parts of the core environment.
469    
470    Remaining hackery (to bind the "magic" symbol _Core) is localized in the
471    compilation mananger's bootstrap compiler (actually: in the "init group"
472    handling).  See the comments in src/system/smlnj/init/init.cmi for
473    more details.
474    
475    I also tried to track down all mentions of "Core" (as string argument
476    to Symbol.strSymbol) in the compiler and replaced them with a
477    reference to the new CoreSym.coreSym.  Seems cleaner since the actual
478    name appears in one place only.
479    
480    Binfile and bootfile format have not changed, but the switchover from
481    the old "init.cmi" to the new one is a bit tricky, so I supplied new
482    bootfiles anyway.
483    
484    ----------------------------------------------------------------------
485    Name: Allen Leung
486    Date: 2000/04/02 21:17:00 EST
487    Tag: leunga-20000402-mltree
488    Description:
489    
490       1. Renamed the constructor CALL in MLTREE by popular demand.
491       2. Added a bunch of files from my repository.  These are currently
492          used by other non-SMLNJ backends.
493    
494    ----------------------------------------------------------------------
495    Name: Allen Leung
496    Date: 2000/03/31 21:15:00 EST
497    Tag: leunga-20000331-aliasing
498    Description:
499    
500    This update contains a rewritten (and hopefully more correct) module
501    for extracting aliasing information from CPS.
502    
503       To turn on this feature:
504    
505            Compiler.Control.CG.memDisambiguate := true
506    
507       To pretty print the region information with assembly
508    
509           Compiler.Control.MLRISC.getFlag "asm-show-region" := true;
510    
511       To control how many levels of aliasing information are printed, use:
512    
513           Compiler.Control.MLRISC.getInt "points-to-show-level" := n
514    
515       The default of n is 3.
516    
517    ----------------------------------------------------------------------
518    Name: David MacQueen
519    Date: 2000/03/31 11:15:00 EST
520    Tag: dbm-20000331-runtime_fix
521    Description:
522    
523    This update contains:
524    
525    1. runtime/c-lib/c-libraries.c
526       includes added in revision 1.2 caused compilation errors on hppa-hpux
527    
528    2. fix for bug 1556
529       system/Basis/Implementation/NJ/internal-signals.sml
530    
531    ----------------------------------------------------------------------
532    Name: Matthias Blume
533    Date: 2000/03/31 18:00:00 JST
534    Tag: blume_main_v110p26p2_1
535    Description:
536    
537    This update contains:
538    
539    1. A small change to CM's handling of stable libraries:
540       CM now maintains one "global" modmap that is used for all stable
541       libraries.  The use of such a global modmap maximizes sharing and
542       minimizes the need for re-traversing parts of environments during
543       modmap construction.  (However, this has minor impact since modmap
544       construction seems to account for just one percent or less of total
545       compile time.)
546    
547    2. I added a "genmap" phase to the statistics.  This is where I got the
548       "one percent" number (see above).
549    
550    3. CM's new tool parameter mechanism just became _even_ better. :)
551       - The parser understands named parameters and recursive options.
552       - The "make" and "shell" tools use these new features.
553         (This makes it a lot easier to cascade these tools.)
554       - There is a small syntax change: named parameters use a
555    
556           <name> : ( <option> ... )            or
557           <name> : <string>
558    
559         syntax.  Previously, named parameters were implemented in an
560         ad-hoc fashion by each tool individually (by parsing strings)
561         and had the form
562    
563           <name>=<string>
564    
565       See the CM manual for a full description of these issues.
566    
567    ----------------------------------------------------------------------
568    Name: Matthias Blume
569    Date: 2000/03/30 18:00:00 JST
570    Tag: blume_main_v110p26p2_0
571    Description:
572    
573    !!!!! WARNING !!!!!!
574    !!  New binfiles  !!
575    !!!!!!!!!!!!!!!!!!!!
576    
577    This update contains:
578    
579    1. Moderate changes to CM:
580    
581       - Changes to CM's tools mechanism.  In particular, it is now possible
582       to have tools that accept additional "command line" parameters
583       (specified in the .cm file at each instance where the tool's class is
584       used).
585    
586       This was done to accomodate the new "make" and "shell" tools which
587       facilitate fairly seemless hookup to portions of code managed using
588       Makefiles or Shell scripts.
589    
590       There are no classes "shared" or "private" anymore.  Instead, the
591       sharing annotation is now a parameter to the "sml" class.
592    
593       There is a bit of generic machinery for implementing one's own
594       tools that accept command-line parameters.  However, I am not yet fully
595       satisfied with that part, so expect changes here in the future.
596    
597       All existing tools are described in the CM manual.
598    
599       - Slightly better error handling.  (CM now surpresses many followup
600       error messages that tended to be more annoying than helpful.)
601    
602    2. Major changes to the compiler's static environment data structures.
603    
604       - no CMStaticEnv anymore.
605            - no CMEnv, no "BareEnvironment" (actually, _only_ BareEnvironment,
606              but it is called Environment), no conversions between different
607              kinds of static environments
608    
609       - There is still a notion of a "modmap", but such modmaps are generated
610         on demand at the time when they are needed.  This sounds slow, but I
611         sped up the code that generates modmaps enough for this not to lead to
612         a slowdown of the compiler (at least I didn't detect any).
613    
614       - To facilitate rapid modmap generation, static environments now
615         contain an (optional) "modtree" structure.  Modtree annotations are
616         constructed by the unpickler during unpickling.  (This means that
617         the elaborator does not have to worry about modtrees at all.)
618         Modtrees have the advantage that they are compositional in the same
619         way as the environment data structure itself is compositional.
620         As a result, modtrees never hang on to parts of an environment that
621         has already been rendered "stale" by filtering or rebinding.
622    
623       - I went through many, many trials and errors before arriving at the
624         current solution.  (The initial idea of "linkpaths" did not work.)
625         But the result of all this is that I have touched a lot of files that
626         depend on the "modules" and "types" data structures (most of the
627         elaborator). There were a lot of changes during my "linkpath" trials
628         that could have been reverted to their original state but weren't.
629         Please, don't be too harsh on me for messing with this code a bit more
630         than what was strictly necessary...  (I _did_ resist the tempation
631         of doing any "global reformatting" to avoid an untimely death at
632         Dave's hands. :)
633    
634       - One positive aspect of the previous point:  At least I made sure that
635         all files that I touched now compile without warnings (other than
636         "polyEqual").
637    
638       - compiler now tends to run "leaner" (i.e., ties up less memory in
639         redundant modmaps)
640    
641    ----------------------------------------------------------------------
642    Name: Allen Leung
643    Date: 2000/03/29 18:00:00
644    Tag: leunga-20000327-mlriscGen_hppa_alpha_x86
645    Boot files (optional): ftp://react-ilp.cs.nyu.edu/leunga/110.26.1-sml.boot.x86-unix-20000330.tar.gz
646    Description:
647    
648       This update contains *MAJOR* changes to the way code is generated from CPS
649    in the module mlriscGen, and in various backend modules.
650    
651    CHANGES
652    =======
653    
654    1. MLRiscGen: forward propagation fix.
655    
656       There was a bug in forward propagation introduced at about the same time
657       as the MLRISC x86 backend, which prohibits coalescing to be
658       performed effectively in loops.
659    
660       Effect: speed up of loops in RISC architectures.
661               By itself, this actually slowed down certain benchmarks on the x86.
662    
663    2. MLRiscGen:  forward propagating addresses from consing.
664    
665       I've changed the way consing code is generated.  Basically I separated
666       out the initialization part:
667    
668            store tag,   offset(allocptr)
669            store elem1, offset+4(allocptr)
670            store elem2, offset+8(allocptr)
671            ...
672            store elemn, offset+4n(allocptr)
673    
674       and the address computation part:
675    
676            celladdr <- offset+4+alloctpr
677    
678       and move the address computation part
679    
680       Effect:  register pressure is generally lower as a result.  This
681                makes compilation of certain expressions much faster, such as
682                long lists with non-trivial elements.
683    
684                 [(0,0), (0,0), .... (0,0)]
685    
686    3. MLRiscGen: base pointer elimination.
687    
688        As part of the linkage mechanism, we generate the sequence:
689    
690         L:  ...  <- start of the code fragment
691    
692         L1:
693             base pointer <- linkreg - L1 + L
694    
695         The base pointer was then used for computing relocatable addresses
696       in the code fragment.  Frequently (such as in lots of continuations)
697       this is not needed.  We now eliminate this sequence whenever possible.
698    
699         For compile time efficiency, I'm using a very stupid local heuristic.
700       But in general, this should be done as a control flow analysis.
701    
702       Effect:  Smaller code size.  Speed up of most programs.
703    
704    4. Hppa back end
705    
706         Long jumps in span dependence resolution used to depend on the existence
707      of the base pointer.
708    
709         A jump to a long label L was expanded into the following sequence:
710    
711          LDIL %hi(L-8192), %r29
712          LDO  %lo(L-8192)(%r29), %r29
713          ADD  %r29, baseptr, %r29
714          BV,n %r0(%r29)
715    
716         In the presence of change (3) above, this will not work.  I've changed
717       it so that the following sequence of instructions are generated, which
718       doesn't mention the base pointer at all:
719    
720             BL,n  L', %r29           /* branch and link, L' + 4 -> %r29 */
721        L':  ADDIL L-(L'+4), %r29     /* Compute address of L */
722             BV,n  %r0(%r29)          /* Jump */
723    
724    5. Alpha back end
725    
726          New alpha instructions LDB/LDW have been added, as per Fermin's
727       suggestions.   This is unrelated to all other changes.
728    
729    6. X86 back end
730    
731         I've changed andl to testl in the floating point test sequence
732         whenever appropriate.  The Intel optimization guide states that
733         testl is perferable to andl.
734    
735    7. RA (x86 only)
736    
737         I've improved the spill propagation algorithm, using an approximation
738       of maximal weighted independent sets.   This seems to be necessary to
739       alleviate the negative effect in light of the slow down in (1).
740    
741         I'll write down the algorithm one of these days.
742    
743    8. MLRiscGen: frequencies
744    
745         I've added an annotation that states that all call gc blocks have zero
746       execution frequencies.  This improves register allocation on the x86.
747    
748    BENCHMARKS
749    ==========
750    
751       I've only perform the comparison on 110.25.
752    
753       The platforms are:
754    
755        HPPA  A four processor HP machine (E9000) with 5G of memory.
756        X86   A 300Hhz Pentium II with 128M of memory, and
757        SPARC An Ultra sparc 2 with 512M of memory.
758    
759       I used the following parameters for the SML benchmarks:
760    
761                 @SMLalloc
762         HPPA    256k
763         SPARC   512k
764         X86     256k
765    
766    COMPILATION TIME
767    ----------------
768       Here are the numbers comparing the compilation times of the compilers.
769       I've only compared 110.25 compiling the new sources versus
770       a fixpoint version of the new compiler compiling the same.
771    
772                     110.25                                  New
773               Total  Time in RA  Spill+Reload   Total  Time In RA Spill+Reload
774         HPPA   627s    116s        2684+3584     599s    95s       1003+1879
775         SPARC  892s    173s        2891+3870     708s    116s      1004+1880
776         X86    999s    315s       94006+130691   987s    296s    108877+141957
777    
778                   110.25         New
779                Code Size      Code Size
780         HPPA   8596736         8561421
781         SPARC  8974299         8785143
782         X86    9029180         8716783
783    
784       So in summary, things are at least as good as before.   Dramatic
785       reduction in compilation is obtained on the Sparc; I can't explain it,
786       but it is reproducible.  Perhaps someone should try to reproduce this
787       on their own machines.
788    
789    SML BENCHMARKS
790    --------------
791    
792        On the average, all benchmarks perform at least as well as before.
793    
794          HPPA         Compilation Time     Spill+Reload      Run Time
795                     110.25  New            110.25    New   110.25  New
796    
797          barnesHut  3.158  3.015  4.75%    1+1       0+0   2.980  2.922   2.00%
798              boyer  6.152  5.708  7.77%    0+0       0+0   0.218  0.213   2.34%
799       count-graphs  1.168  1.120  4.32%    0+0       0+0  22.705 23.073  -1.60%
800                fft  0.877  0.792 10.74%    1+3       1+3   0.602  0.587   2.56%
801        knuthBendix  3.180  2.857 11.32%    0+0       0+0   0.675  0.662   2.02%
802             lexgen  6.190  5.290 17.01%    0+0       0+0   0.913  0.788  15.86%
803               life  0.803  0.703 14.22%   25+25      0+0   0.153  0.140   9.52%
804              logic  2.048  2.007  2.08%    6+6       1+1   4.133  4.008   3.12%
805         mandelbrot  0.077  0.080 -4.17%    0+0       0+0   0.765  0.712   7.49%
806             mlyacc 22.932 20.937  9.53%  154+181    32+57  0.468  0.430   8.91%
807            nucleic  5.183  5.060  2.44%    2+2       0+0   0.125  0.120   4.17%
808      ratio-regions  3.357  3.142  6.84%    0+0       0+0  116.225 113.173 2.70%
809                ray  1.283  1.290 -0.52%    0+0       0+0   2.887  2.855   1.11%
810             simple  6.307  6.032  4.56%   28+30      5+7   3.705  3.658   1.28%
811                tsp  0.888  0.862  3.09%    0+0       0+0   7.040  6.893   2.13%
812               vliw 24.378 23.455  3.94%  106+127    25+45  2.758  2.707   1.91%
813      --------------------------------------------------------------------------
814       Average                     6.12%                                   4.09%
815    
816          SPARC        Compilation Time     Spill+Reload      Run Time
817                     110.25  New            110.25    New   110.25  New
818    
819          barnesHut  3.778  3.592  5.20%    2+2       0+0   3.648  3.453    5.65%
820              boyer  6.632  6.110  8.54%    0+0       0+0   0.258  0.242    6.90%
821       count-graphs  1.435  1.325  8.30%    0+0       0+0  33.672 34.737   -3.07%
822                fft  0.980  0.940  4.26%    3+9       2+6   0.838  0.827    1.41%
823        knuthBendix  3.590  3.138 14.39%    0+0       0+0   0.962  0.967   -0.52%
824             lexgen  6.593  6.072  8.59%    1+1       0+0   1.077  1.078   -0.15%
825               life  0.972  0.868 11.90%   26+26      0+0   0.143  0.140    2.38%
826              logic  2.525  2.387  5.80%    7+7       1+1   5.625  5.158    9.05%
827         mandelbrot  0.090  0.093 -3.57%    0+0       0+0   0.855  0.728   17.39%
828             mlyacc 26.732 23.827 12.19%  162+189    32+57  0.550  0.560   -1.79%
829            nucleic  6.233  6.197  0.59%    3+3       0+0   0.163  0.173   -5.77%
830      ratio-regions  3.780  3.507  7.79%    0+0       0+0 133.993 131.035   2.26%
831                ray  1.595  1.550  2.90%    1+1       0+0   3.440  3.418    0.63%
832             simple  6.972  6.487  7.48%   29+32      5+7   3.523  3.525   -0.05%
833                tsp  1.115  1.063  4.86%    0+0       0+0   7.393  7.265    1.77%
834               vliw 27.765 24.818 11.87%  110+135    25+45  2.265  2.135    6.09%
835      ----------------------------------------------------------------------------
836       Average                     6.94%                                    2.64%
837    
838          X86          Compilation Time     Spill+Reload      Run Time
839                     110.25  New            110.25    New   110.25  New
840    
841          barnesHut  5.530  5.420  2.03%  593+893   597+915   3.532  3.440   2.66%
842              boyer  8.768  7.747 13.19%  493+199   301+289   0.327  0.297  10.11%
843       count-graphs  2.040  2.010  1.49%  298+394   315+457  26.578 28.660  -7.26%
844                fft  1.327  1.302  1.92%  112+209   115+210   1.055  0.962   9.71%
845        knuthBendix  5.218  5.475 -4.69%  451+598   510+650   0.928  0.932  -0.36%
846             lexgen  9.970  9.623  3.60% 1014+841  1157+885   0.947  0.928   1.97%
847               life  1.183  1.183  0.00%  162+182   145+148   0.127  0.103  22.58%
848              logic  3.285  3.512 -6.45%  514+684   591+836   5.682  5.577   1.88%
849         mandelbrot  0.147  0.143  2.33%   38+41     33+54    0.703  0.690   1.93%
850             mlyacc 35.457 32.763  8.22% 3496+4564 3611+4860  0.552  0.550   0.30%
851            nucleic  7.100  6.888  3.07%  239+168   201+158   0.175  0.173   0.96%
852      ratio-regions  6.388  6.843 -6.65% 1182+257   981+300  120.142 120.345 -0.17%
853                ray  2.332  2.338 -0.29%  346+398   402+494   3.593  3.540   1.51%
854             simple  9.912  9.903  0.08% 1475+941  1579+1168  3.057  3.178  -3.83%
855                tsp  1.623  1.532  5.98%  266+200   250+211   8.045  7.878   2.12%
856               vliw 33.947 35.470 -4.29% 2629+2774 2877+3171  2.072  1.890   9.61%
857      ----------------------------------------------------------------------------
858       Average                     1.22%                                     3.36%
859    
860    ----------------------------------------------------------------------
861  Name: Allen Leung  Name: Allen Leung
862  Date: 2000/03/23 16:25:00  Date: 2000/03/23 16:25:00
863  Tag: leunga-20000323-fix_x86_alpha  Tag: leunga-20000323-fix_x86_alpha

Legend:
Removed from v.583  
changed lines
  Added in v.643

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