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

SCM Repository

[smlnj] View of /sml/trunk/src/MLRISC/SSA/ssa-props.sig
ViewVC logotype

View of /sml/trunk/src/MLRISC/SSA/ssa-props.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 695 - (download) (as text) (annotate)
Mon Aug 7 23:57:38 2000 UTC (20 years ago) by leunga
File size: 1779 byte(s)

   Stuff related to scheduling, SSA, x86, C-- and Moby.
   Tag: leunga-20000807-a-whole-bunch-of-stuff
(*
 * 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 T        : MLTREE
   structure RTLProps : RTL_PROPERTIES
   structure OT       : OPERAND_TABLE
      sharing RTLProps.I   = OT.I = I
      sharing I.C          = C
      sharing RTL.T        = T
      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    : (T.var * C.cell) list,  (* destination is fixed *)
          src    : (T.var * C.cell) list,  (* source is fixed *)
          dstsrc : (T.var * 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
   val copy   : {instr:I.instruction,dst:C.cell list,src:C.cell list} ->
                 I.instruction
end


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