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/mltree/rtl-build.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/mltree/rtl-build.sig

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : leunga 744 (*
2 :     * How to build primitive RTL operators
3 :     *)
4 :     signature RTL_BUILD =
5 :     sig
6 :     structure T : MLTREE
7 :     type ty = T.ty
8 :     type cond = T.cond
9 :     type fcond = T.fcond
10 :    
11 :     type effect
12 :     type region
13 :     type exp
14 :     type bool
15 : george 1202 type div_rounding_mode
16 : leunga 744
17 :     val intConst : ty -> int -> exp (* integer constant *)
18 :     val wordConst : ty -> Word32.word -> exp (* word constant *)
19 :     val ??? : ty -> exp (* an undefined value *)
20 :    
21 :     val newOp : string -> exp list -> exp (* create new operator *)
22 :    
23 :     val immed : ty -> exp -> exp (* immediate value *)
24 :     val operand : ty -> exp -> exp
25 :     val label : ty -> exp -> exp
26 :     val $ : CellsBasis.cellkind * ty -> exp -> exp
27 :     val Mem : CellsBasis.cellkind * ty -> exp * region -> exp
28 :     val Arg : ty * string * string -> exp
29 :    
30 :     (* Signed/unsigned promotion *)
31 :     val sx : ty * ty -> exp -> exp
32 :     val zx : ty * ty -> exp -> exp
33 :    
34 :     (* Integer operators *)
35 :     val ~ : ty -> exp -> exp
36 :     val + : ty -> exp * exp -> exp
37 :     val - : ty -> exp * exp -> exp
38 :     val muls : ty -> exp * exp -> exp
39 :     val mulu : ty -> exp * exp -> exp
40 : george 1202 val divs : ty -> div_rounding_mode * exp * exp -> exp
41 : leunga 744 val divu : ty -> exp * exp -> exp
42 : george 1202 val rems : ty -> div_rounding_mode * exp * exp -> exp
43 : leunga 744 val remu : ty -> exp * exp -> exp
44 :    
45 :     val addt : ty -> exp * exp -> exp
46 :     val subt : ty -> exp * exp -> exp
47 :     val mult : ty -> exp * exp -> exp
48 : george 1202 val divt : ty -> div_rounding_mode * exp * exp -> exp
49 : leunga 744
50 :     val notb : ty -> exp -> exp
51 :     val andb : ty -> exp * exp -> exp
52 :     val orb : ty -> exp * exp -> exp
53 :     val xorb : ty -> exp * exp -> exp
54 :     val eqvb : ty -> exp * exp -> exp
55 :     val << : ty -> exp * exp -> exp
56 :     val >> : ty -> exp * exp -> exp
57 :     val ~>> : ty -> exp * exp -> exp
58 :     val BitSlice : ty -> (int * int) list -> exp -> exp
59 :    
60 :     (* Boolean operators *)
61 :     (* val Cond : ty -> bool * exp * exp -> exp *)
62 :     val False : bool
63 :     val True : bool
64 :     val Not : bool -> bool
65 :     val And : bool * bool -> bool
66 :     val Or : bool * bool -> bool
67 :     val Cond : ty -> bool * exp * exp -> exp
68 :    
69 :     (* Integer comparisons *)
70 :     val == : ty -> exp * exp -> bool
71 :     val <> : ty -> exp * exp -> bool
72 :     val < : ty -> exp * exp -> bool
73 :     val > : ty -> exp * exp -> bool
74 :     val <= : ty -> exp * exp -> bool
75 :     val >= : ty -> exp * exp -> bool
76 :     val ltu : ty -> exp * exp -> bool
77 :     val leu : ty -> exp * exp -> bool
78 :     val gtu : ty -> exp * exp -> bool
79 :     val geu : ty -> exp * exp -> bool
80 :     val setcc : ty -> exp * exp -> bool
81 :     val getcc : ty -> exp * T.cond -> bool
82 :    
83 :     (* Floating point operators *)
84 :     val fadd : ty -> exp * exp -> exp
85 :     val fsub : ty -> exp * exp -> exp
86 :     val fmul : ty -> exp * exp -> exp
87 :     val fdiv : ty -> exp * exp -> exp
88 :     val fcopysign : ty -> exp * exp -> exp
89 :     val fabs : ty -> exp -> exp
90 :     val fneg : ty -> exp -> exp
91 :     val fsqrt : ty -> exp -> exp
92 :    
93 :     (* Floating point comparisons *)
94 :     val |?| : ty -> exp * exp -> bool
95 :     val |==| : ty -> exp * exp -> bool
96 :     val |?=| : ty -> exp * exp -> bool
97 :     val |<| : ty -> exp * exp -> bool
98 :     val |?<| : ty -> exp * exp -> bool
99 :     val |<=| : ty -> exp * exp -> bool
100 :     val |?<=| : ty -> exp * exp -> bool
101 :     val |>| : ty -> exp * exp -> bool
102 :     val |?>| : ty -> exp * exp -> bool
103 :     val |>=| : ty -> exp * exp -> bool
104 :     val |?>=| : ty -> exp * exp -> bool
105 :     val |<>| : ty -> exp * exp -> bool
106 :     val |<=>| : ty -> exp * exp -> bool
107 :     val |?<>| : ty -> exp * exp -> bool
108 :     val setfcc : ty -> exp * exp -> bool
109 :     val getfcc : ty -> exp * T.fcond -> bool
110 :    
111 :     (* Effect combinators *)
112 :     val := : ty -> exp * exp -> effect
113 :     val Par : effect * effect -> effect (* parallel effects *)
114 :     val Nop : effect (* empty effect *)
115 :     val Jmp : ty -> exp -> effect (* jump to address *)
116 :     val Call : ty -> exp -> effect (* call address *)
117 :     val Ret : effect (* return *)
118 :     val If : bool * effect * effect -> effect (* if/then/else *)
119 :    
120 :     val map : ty -> ('a -> 'b) -> 'a list -> 'b list
121 :    
122 :     val getNewOps : unit -> T.Basis.misc_op list
123 :     val clearNewOps : unit -> unit
124 :    
125 :     end

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