File: ssa-props.sig

package info (click to toggle)
mlton 20210117%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,464 kB
  • sloc: ansic: 27,682; sh: 4,455; asm: 3,569; lisp: 2,879; makefile: 2,347; perl: 1,169; python: 191; pascal: 68; javascript: 7
file content (54 lines) | stat: -rw-r--r-- 1,629 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
(*
 * Instruction properties for utilizing the SSA form
 *
 * -- Allen (leunga@cs.nyu.edu)
 *)
signature SSA_PROPERTIES =
sig

   structure I        : INSTRUCTIONS
   structure C        : CELLS
   structure RTL      : MLTREE_RTL
   structure RTLProps : RTL_PROPERTIES
   structure OT       : OPERAND_TABLE
      sharing RTLProps.I   = OT.I = I
      sharing I.C          = C
      sharing RTLProps.RTL = RTL

   (* Create special nodes *)
   val source : I.instruction
   val sink   : I.instruction
   val phi    : I.instruction

   (* Physical registers whose value are volatile *)
   val volatile : C.cell list

   (* Instructions with definitions (or use) of these registers will not
    * be moved
    *)
   val pinnedDef : C.cell list
   val pinnedUse : C.cell list

   (* Definitions (or use) of these registers will not be renamed *)
   val fixedDef : C.cell list
   val fixedUse : C.cell list

   (* Extract the naming constraints on the operands *)
   val namingConstraints :   
        { instr : I.instruction, dst : C.cell list, src : C.cell list } -> 
        { dst    : (RTL.T.var * C.cell) list,  (* destination is fixed *)
          src    : (RTL.T.var * C.cell) list,  (* source is fixed *)
          dstsrc : (RTL.T.var * RTL.T.var) list    (* dst = src *)
        }

   (* Rewrite the operands of an instruction *)
   val rewriteOperands :   
        { const : int -> OT.const } ->
        { instr : I.instruction, dst : C.cell list, src : C.cell list } -> 
        I.instruction

   (* Make copies *)
   val copies : {kind: C.cellkind, dst:C.cell, src:C.cell} list -> 
                 I.instruction list
end