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

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

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