SCM Repository
Annotation of /sml/trunk/src/MLRISC/mltree/rtl-build.sig
Parent Directory
|
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 |