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 /sml/trunk/src/MLRISC/cluster/flowgraph.sml
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/cluster/flowgraph.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 245 - (view) (download)
Original Path: sml/branches/SMLNJ/src/MLRISC/cluster/flowgraph.sml

1 : monnier 245 (* flowgraph.sml
2 :     *
3 :     * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
4 :     *
5 :     * Defines the flowgraph data structure used as the intermediate program
6 :     * representation.
7 :     *
8 :     *)
9 :    
10 :     signature FLOWGRAPH = sig
11 :    
12 :     structure B : BLOCK_NAMES
13 :     structure C : CELLS
14 :     structure I : INSTRUCTIONS
15 :     structure P : PSEUDO_OPS
16 :     sharing I.C = C
17 :    
18 :    
19 :    
20 :     datatype block =
21 :     PSEUDO of P.pseudo_op
22 :     | LABEL of Label.label
23 :     | BBLOCK of { blknum : int,
24 :     name : B.name,
25 :     liveIn : C.cellset ref,
26 :     liveOut : C.cellset ref,
27 :     succ : block list ref,
28 :     pred : block list ref,
29 :     insns : I.instruction list ref
30 :     }
31 :     | ENTRY of {blknum : int,
32 :     succ : block list ref}
33 :     | EXIT of {blknum : int,
34 :     pred : block list ref}
35 :     | ORDERED of block list
36 :    
37 :     datatype cluster =
38 :     CLUSTER of {
39 :     blocks: block list,
40 :     entry : block,
41 :     exit : block,
42 :     regmap: int Intmap.intmap,
43 :     blkCounter : int ref
44 :     }
45 :     end
46 :    
47 :    
48 :     (* Create the flowgraph data structure specialized towards
49 :     * a specific type of cells and instructions.
50 :     *)
51 :     functor FlowGraph(structure I : INSTRUCTIONS
52 :     structure P : PSEUDO_OPS
53 :     structure B : BLOCK_NAMES) : FLOWGRAPH =
54 :     struct
55 :     structure I = I
56 :     structure C = I.C
57 :     structure P = P
58 :     structure B = B
59 :    
60 :     datatype block =
61 :     PSEUDO of P.pseudo_op
62 :     | LABEL of Label.label
63 :     | BBLOCK of { blknum : int,
64 :     name : B.name,
65 :     liveIn : C.cellset ref,
66 :     liveOut : C.cellset ref,
67 :     succ : block list ref,
68 :     pred : block list ref,
69 :     insns : I.instruction list ref
70 :     }
71 :     | ENTRY of {blknum : int,
72 :     succ : block list ref}
73 :     | EXIT of {blknum : int,
74 :     pred : block list ref}
75 :     | ORDERED of block list
76 :    
77 :     datatype cluster =
78 :     CLUSTER of {
79 :     blocks: block list,
80 :     entry : block,
81 :     exit : block,
82 :     regmap: int Intmap.intmap,
83 :     blkCounter : int ref
84 :     }
85 :     end
86 :    
87 :    
88 :    
89 :    
90 :     (*
91 :     * $Log: flowgraph.sml,v $
92 :     * Revision 1.2 1998/07/25 03:08:18 george
93 :     * added to support block names in MLRISC
94 :     *
95 :     * Revision 1.1.1.1 1998/04/08 18:39:02 george
96 :     * Version 110.5
97 :     *
98 :     *)

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