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/SSA/ssaProps.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/SSA/ssaProps.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 228 - (view) (download) (as text)

1 : monnier 221 (*
2 :     * Properties for utilizing the SSA form
3 :     *)
4 :     signature SSA_PROPERTIES =
5 :     sig
6 :    
7 :     structure I : INSTRUCTIONS
8 :     structure C : CELLS
9 :     sharing I.C = C
10 :    
11 :     datatype opn =
12 :     OPN of int (* a constant operand *)
13 :     | REG of C.register * C.cellclass (* can be renamed *)
14 :     | FIX of C.register * C.cellclass (* cannot be renamed *)
15 :     | MEM of C.register (* store operand *)
16 :    
17 :     datatype const =
18 :     IMMED of int (* integer operand *)
19 :     | LABEL of Label.label (* label operand *)
20 :     | OPERAND of I.operand (* other operand *)
21 :    
22 :     val immedRange : {low:int, high:int}
23 :     val loadImmed : {immed:int,t:C.register} -> I.instruction
24 :    
25 :     (* physical registers that are volatile *)
26 :     val volatile : C.register list
27 :    
28 :     (* physical registers whose definition cannot be removed *)
29 :     val mustDef : C.register list
30 :    
31 :     val hashOpn : I.operand -> int (* hash function for operands *)
32 :    
33 :     val eqOpn : I.operand * I.operand -> bool (* equality for operands *)
34 :    
35 :     val isNonSafeRead : I.instruction -> bool (* can't be moved up? *)
36 :    
37 :     val exp : I.instruction -> SSAExp.exp (* semantics of an instruction *)
38 :    
39 :     val operands : (* operands used by instruction *)
40 :     { regmap : C.register -> C.register,
41 :     immed : int -> C.register,
42 :     label : Label.label -> C.register,
43 :     operand : I.operand -> C.register
44 :     } -> I.instruction -> opn list * opn list (* dst/src *)
45 :    
46 :     val rewriteOperands : (* replace operands used *)
47 :     { const : int -> const
48 :     } ->
49 :     { instr : I.instruction,
50 :     dst : C.register list,
51 :     src : C.register list
52 :     } -> I.instruction
53 :    
54 :     (* generate a set of parallel copies *)
55 :     val copies : {class:C.cellclass, dst:C.register, src:C.register} list ->
56 :     I.instruction list
57 :    
58 :     end
59 :    
60 :     (*
61 : monnier 227 * $Log$
62 : monnier 221 *)

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