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

SCM Repository

[smlnj] Annotation of /pages/trunk/NEWS/110.13-README
ViewVC logotype

Annotation of /pages/trunk/NEWS/110.13-README

Parent Directory Parent Directory | Revision Log Revision Log


Revision 953 - (view) (download)

1 : macqueen 953 S M L / N J
2 :    
3 :     1 1 0 . 1 3 N E W S
4 :    
5 :     January 16, 1999
6 :    
7 :     WARNING
8 :    
9 :     This version is intended for compiler hackers only.
10 :     We are in the midst of substantial structural changes,
11 :     and this is a snapshot. It only supports the Sparc,
12 :     Alpha, and HPPA architectures. Furthermore, there are
13 :     performance bugs that have to be fixed.
14 :    
15 :     http://cm.bell-labs.com/cm/cs/what/smlnj/index.html
16 :    
17 :     Summary:
18 :     This version provides support for loading the sources files for the
19 :     MLRISC Optimizer, and hooking it into the interactive loop. For now,
20 :     the only source files that are loaded are ones that build all the
21 :     fundamental compiler optimization data structures, and graphically
22 :     viewers for them.
23 :    
24 :    
25 :     Demo:
26 :    
27 :     Requires daVinci: ftp://ftp.uni-bremen.de/pub/graphics/daVinci, or
28 :     vcg: http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html
29 :    
30 :     The following steps exercises the current changes.
31 :    
32 :     1. Loading the optimizer sources and set the hook using:
33 :    
34 :     CM.make'{force_relink=false,
35 :     group="src/compiler/MLRISC-OPTIMIZER.cm"};
36 :    
37 :     2. At the top level execute:
38 :    
39 :     structure M = Compiler.Control.MLRISC;
40 :    
41 :     M.mlrisc :=true; (* enable optimizer *)
42 :     M.Visual.viewer := "daVinci"; (* set viewer *)
43 :     M.view_IR := true; (* enable viewer *)
44 :     M.mlrisc_phases := (* set phases *)
45 :     ["cluster->cfg", "view-dom", "cfg->cluster"];
46 :    
47 :    
48 :     3. Compiling anything from here onwards, will go through the
49 :     optimizer.
50 :    
51 :     Currently, the optimizer uses two different representations:
52 :     the cluster and the IR. The cluster is the old representation used
53 :     in the register allocator and instruction selection. The IR
54 :     is the new representation. Most new optimizations operate on
55 :     the new IR.
56 :    
57 :     Several phases are possible in the mlrisc_phases list such as:
58 :    
59 :     a. view-cfg -- view control flow graph
60 :     b. view-dom -- view dominator tree
61 :     c. view-pdom -- view post dominator tree
62 :     d. view-doms -- view dominator tree and post dominator tree together.
63 :     The post dominator is upside down.
64 :     e. view-cdg -- view control dependence graph
65 :     f. view-loop -- show loop nesting tree
66 :     g. guess -- apply static branch prediction
67 :     (this need better machine descriptions)
68 :     h. reshape -- reorder the branch structure using frequencies
69 :     gathered by static branch prediction
70 :    
71 :     All phases above transform IR into IR, so
72 :     they must be enclosed in phases "cluster->cfg", and "cfg->cluster",
73 :     which translate clusters into IRs and vice versa. In addition,
74 :     there is a phase "copy-prop", which performs copy propagation on
75 :     clusters.
76 :    
77 :     Changes:
78 :    
79 :     . The compiler uses compiler/MLRISC.cm instead of the full
80 :     MLRISC/MLRISC.cm.
81 :    
82 :     . FLOWGEN (MLRISC/cluster/flowgen.sml) now takes two functions:
83 :    
84 :     val optimize : (cluster->cluster) option ref
85 :     val output : cluster->unit
86 :    
87 :     Each of the CodeGen/<arch>/<arch>CG.sml file were changed to have
88 :     these.
89 :    
90 :     . CodeGen/main/mlrisc-export.sml defines a structure of all modules
91 :     that must currently be exported from within the compiler. This
92 :     structure is quite small (for now at least).
93 :    
94 :     . To get (6) above to work, I needed to establish the MLRISC
95 :     environment as normally seen
96 :     (CodeGen/optimizer/mlrisc-environment.sml), and set the
97 :     interactive optimizer hook to the new optimizer
98 :     (CodeGen/optimizer/mlrisc-optimizer.sml).
99 :    
100 :     Files:
101 :     Deleted:
102 :     TopLevel/main/codes.sig
103 :     CodeGen/main/cpsgen.sig
104 :     Added:
105 :     MLRISC.cm
106 :     MLRISC-OPTIMIZER.cm
107 :     TopLevel/main/code-generator.sig
108 :     CodeGen/main/machine.sig
109 :     CodeGen/main/machine-gen.sig
110 :     CodeGen/main/mlrisc-export.sml
111 :     CodeGen/optimizer/mlrisc-environment.sml
112 :     CodeGen/optimizer/mlrisc-optimizer.sml

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