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 470 - (view) (download)

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 C : CELLS
13 :     structure I : INSTRUCTIONS
14 :     structure P : PSEUDO_OPS
15 : monnier 411 structure W : FREQ
16 : monnier 245 sharing I.C = C
17 :    
18 :     datatype block =
19 :     PSEUDO of P.pseudo_op
20 :     | LABEL of Label.label
21 : monnier 411 | BBLOCK of { blknum : int,
22 :     freq : W.freq ref,
23 :     annotations : Annotations.annotations ref,
24 :     liveIn : C.cellset ref,
25 :     liveOut : C.cellset ref,
26 :     succ : edge list ref,
27 :     pred : edge list ref,
28 :     insns : I.instruction list ref
29 : monnier 245 }
30 : monnier 411 | ENTRY of {blknum : int, freq : W.freq ref, succ : edge list ref}
31 :     | EXIT of {blknum : int, freq : W.freq ref, pred : edge list ref}
32 :     withtype edge = block * W.freq ref
33 : monnier 245
34 :     datatype cluster =
35 :     CLUSTER of {
36 :     blocks: block list,
37 :     entry : block,
38 :     exit : block,
39 : monnier 411 regmap: C.regmap,
40 :     blkCounter : int ref,
41 :     annotations : Annotations.annotations ref
42 : monnier 245 }
43 :     end
44 :    
45 :    
46 :     (* Create the flowgraph data structure specialized towards
47 :     * a specific type of cells and instructions.
48 :     *)
49 :     functor FlowGraph(structure I : INSTRUCTIONS
50 :     structure P : PSEUDO_OPS
51 : monnier 469 ) : FLOWGRAPH =
52 : monnier 245 struct
53 :     structure I = I
54 :     structure C = I.C
55 :     structure P = P
56 : monnier 411 structure W = Freq
57 : monnier 245
58 :     datatype block =
59 :     PSEUDO of P.pseudo_op
60 :     | LABEL of Label.label
61 : monnier 411 | BBLOCK of { blknum : int,
62 :     freq : W.freq ref,
63 :     annotations : Annotations.annotations ref,
64 :     liveIn : C.cellset ref,
65 :     liveOut : C.cellset ref,
66 :     succ : edge list ref,
67 :     pred : edge list ref,
68 :     insns : I.instruction list ref
69 : monnier 245 }
70 : monnier 411 | ENTRY of {blknum : int, freq : W.freq ref, succ : edge list ref}
71 :     | EXIT of {blknum : int, freq : W.freq ref, pred : edge list ref}
72 :     withtype edge = block * W.freq ref
73 : monnier 245
74 :     datatype cluster =
75 :     CLUSTER of {
76 :     blocks: block list,
77 :     entry : block,
78 :     exit : block,
79 : monnier 411 regmap: C.regmap,
80 :     blkCounter : int ref,
81 :     annotations : Annotations.annotations ref
82 : monnier 245 }
83 :     end

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