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 1156 - (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 :    
16 :     val intConst : ty -> int -> exp (* integer constant *)
17 :     val wordConst : ty -> Word32.word -> exp (* word constant *)
18 :     val ??? : ty -> exp (* an undefined value *)
19 :    
20 :     val newOp : string -> exp list -> exp (* create new operator *)
21 :    
22 :     val immed : ty -> exp -> exp (* immediate value *)
23 :     val operand : ty -> exp -> exp
24 :     val label : ty -> exp -> exp
25 :     val $ : CellsBasis.cellkind * ty -> exp -> exp
26 :     val Mem : CellsBasis.cellkind * ty -> exp * region -> exp
27 :     val Arg : ty * string * string -> exp
28 :    
29 :     (* Signed/unsigned promotion *)
30 :     val sx : ty * ty -> exp -> exp
31 :     val zx : ty * ty -> exp -> exp
32 :    
33 :     (* Integer operators *)
34 :     val ~ : ty -> exp -> exp
35 :     val + : ty -> exp * exp -> exp
36 :     val - : ty -> exp * exp -> exp
37 :     val muls : ty -> exp * exp -> exp
38 :     val mulu : ty -> exp * exp -> exp
39 :     val divs : ty -> exp * exp -> exp
40 :     val divu : ty -> exp * exp -> exp
41 :     val quots : ty -> exp * exp -> exp
42 :     val rems : ty -> exp * exp -> exp
43 :     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 :     val divt : ty -> exp * exp -> exp
49 :     val remt : ty -> exp * exp -> exp
50 :    
51 :     val notb : ty -> exp -> exp
52 :     val andb : ty -> exp * exp -> exp
53 :     val orb : ty -> exp * exp -> exp
54 :     val xorb : ty -> exp * exp -> exp
55 :     val eqvb : ty -> exp * exp -> exp
56 :     val << : ty -> exp * exp -> exp
57 :     val >> : ty -> exp * exp -> exp
58 :     val ~>> : ty -> exp * exp -> exp
59 :     val BitSlice : ty -> (int * int) list -> exp -> exp
60 :    
61 :     (* Boolean operators *)
62 :     (* val Cond : ty -> bool * exp * exp -> exp *)
63 :     val False : bool
64 :     val True : bool
65 :     val Not : bool -> bool
66 :     val And : bool * bool -> bool
67 :     val Or : bool * bool -> bool
68 :     val Cond : ty -> bool * exp * exp -> exp
69 :    
70 :     (* Integer comparisons *)
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 >= : ty -> exp * exp -> bool
77 :     val ltu : ty -> exp * exp -> bool
78 :     val leu : ty -> exp * exp -> bool
79 :     val gtu : ty -> exp * exp -> bool
80 :     val geu : ty -> exp * exp -> bool
81 :     val setcc : ty -> exp * exp -> bool
82 :     val getcc : ty -> exp * T.cond -> bool
83 :    
84 :     (* Floating point operators *)
85 :     val fadd : ty -> exp * exp -> exp
86 :     val fsub : ty -> exp * exp -> exp
87 :     val fmul : ty -> exp * exp -> exp
88 :     val fdiv : ty -> exp * exp -> exp
89 :     val fcopysign : ty -> exp * exp -> exp
90 :     val fabs : ty -> exp -> exp
91 :     val fneg : ty -> exp -> exp
92 :     val fsqrt : ty -> exp -> exp
93 :    
94 :     (* Floating point comparisons *)
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 |?<>| : ty -> exp * exp -> bool
109 :     val setfcc : ty -> exp * exp -> bool
110 :     val getfcc : ty -> exp * T.fcond -> bool
111 :    
112 :     (* Effect combinators *)
113 :     val := : ty -> exp * exp -> effect
114 :     val Par : effect * effect -> effect (* parallel effects *)
115 :     val Nop : effect (* empty effect *)
116 :     val Jmp : ty -> exp -> effect (* jump to address *)
117 :     val Call : ty -> exp -> effect (* call address *)
118 :     val Ret : effect (* return *)
119 :     val If : bool * effect * effect -> effect (* if/then/else *)
120 :    
121 :     val map : ty -> ('a -> 'b) -> 'a list -> 'b list
122 :    
123 :     val getNewOps : unit -> T.Basis.misc_op list
124 :     val clearNewOps : unit -> unit
125 :    
126 :     end

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