Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /trunk/src/compiler/IL/high-il.sml
ViewVC logotype

Diff of /trunk/src/compiler/IL/high-il.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 184, Wed Jul 28 16:48:27 2010 UTC revision 186, Thu Jul 29 04:26:57 2010 UTC
# Line 4  Line 4 
4   * All rights reserved.   * All rights reserved.
5   *   *
6   * High-level version of the Diderot IL.   * High-level version of the Diderot IL.
7     *
8     * Note: this file is generated from gen/high-il.spec and gen/high-il.in.
9   *)   *)
10    
11  structure HighOps =  structure HighOps =
# Line 14  Line 16 
16      fun sameTy (ty1 : ty, ty2) = (ty1 = ty2)      fun sameTy (ty1 : ty, ty2) = (ty1 = ty2)
17    
18      datatype rator      datatype rator
19        = Add of ty | Sub of ty                   (* type-indexed arithmetic operations *)        = Add of ty
20        | Mul of ty | Div of ty        | Sub of ty
21          | Mul of ty
22          | Div of ty
23        | Neg of ty        | Neg of ty
24        | LT of ty | LTE of ty        | LT of ty
25        | EQ of ty | NEQ of ty        | LTE of ty
26        | GT of ty | GTE of ty        | EQ of ty
27        | Dot of ty | Cross | Norm of ty          (* vector operations *)        | NEQ of ty
28        | Scale of ty                             (* scalar*tensor multiplication *)        | GT of ty
29        | InvScale of ty                          (* tensor/scalar division *)        | GTE of ty
30        | CL                                      (* linear anisotropy measure *)        | Dot of ty
31        | PrincipleEvec                           (* principle eigenvector *)        | Cross
32          | Norm of ty
33          | Scale of ty
34          | InvScale of ty
35          | CL
36          | PrincipleEvec of ty
37        | Subscript of ty        | Subscript of ty
38        | Max | Min        | Max
39        | Sin | Cos        | Min
40          | Sin
41          | Cos
42        | Pow        | Pow
43        | Not                                     (* boolean negation *)        | Not
     (* conversions *)  
44        | IntToReal        | IntToReal
45        | TruncToInt        | TruncToInt
46        | RoundToInt        | RoundToInt
47        | CeilToInt        | CeilToInt
48        | FloorToInt        | FloorToInt
49      (* image/field operations *)        | LoadImage of ImageInfo.info
       | LoadImage of ImageInfo.info             (* image-file loading *)  
50        | Inside        | Inside
51        | Field of FieldDef.field_def        | Field of FieldDef.field_def
52        | Probe        | Probe
53        | Transform of ImageInfo.info             (* transform to image-space *)        | Transform of ImageInfo.info
54    
55      fun arity (Add _) = 2      fun arity (Add _) = 2
56        | arity (Sub _) = 2        | arity (Sub _) = 2
# Line 58  Line 67 
67        | arity Cross = 2        | arity Cross = 2
68        | arity (Norm _) = 1        | arity (Norm _) = 1
69        | arity (Scale _) = 2        | arity (Scale _) = 2
70        | arity CL = 2        | arity (InvScale _) = 2
71        | arity PrincipleEvec = 1        | arity CL = 1
72          | arity (PrincipleEvec _) = 2
73        | arity (Subscript _) = 2        | arity (Subscript _) = 2
74        | arity Max = 1        | arity Max = 2
75        | arity Min = 1        | arity Min = 2
76        | arity Sin = 1        | arity Sin = 1
77        | arity Cos = 1        | arity Cos = 1
78        | arity Pow = 2        | arity Pow = 2
# Line 78  Line 88 
88        | arity Probe = 2        | arity Probe = 2
89        | arity (Transform _) = 1        | arity (Transform _) = 1
90    
91      fun same (Add ty1, Add ty2) = sameTy(ty1, ty2)      fun same (Add a, Add b) = samety(a, b)
92        | same (Sub ty1, Sub ty2) = sameTy(ty1, ty2)        | same (Sub a, Sub b) = samety(a, b)
93        | same (Mul ty1, Mul ty2) = sameTy(ty1, ty2)        | same (Mul a, Mul b) = samety(a, b)
94        | same (Div ty1, Div ty2) = sameTy(ty1, ty2)        | same (Div a, Div b) = samety(a, b)
95        | same (Neg ty1, Neg ty2) = sameTy(ty1, ty2)        | same (Neg a, Neg b) = samety(a, b)
96        | same (LT ty1, LT ty2) = sameTy(ty1, ty2)        | same (LT a, LT b) = samety(a, b)
97        | same (LTE ty1, LTE ty2) = sameTy(ty1, ty2)        | same (LTE a, LTE b) = samety(a, b)
98        | same (EQ ty1, EQ ty2) = sameTy(ty1, ty2)        | same (EQ a, EQ b) = samety(a, b)
99        | same (NEQ ty1, NEQ ty2) = sameTy(ty1, ty2)        | same (NEQ a, NEQ b) = samety(a, b)
100        | same (GT ty1, GT ty2) = sameTy(ty1, ty2)        | same (GT a, GT b) = samety(a, b)
101        | same (GTE ty1, GTE ty2) = sameTy(ty1, ty2)        | same (GTE a, GTE b) = samety(a, b)
102        | same (Dot ty1, Dot ty2) = sameTy(ty1, ty2)        | same (Dot a, Dot b) = samety(a, b)
103        | same (Cross, Cross) = true        | same (Cross, Cross) = true
104        | same (Norm ty1, Norm ty2) = sameTy(ty1, ty2)        | same (Norm a, Norm b) = samety(a, b)
105        | same (Scale ty1, Scale ty2) = sameTy(ty1, ty2)        | same (Scale a, Scale b) = samety(a, b)
106          | same (InvScale a, InvScale b) = samety(a, b)
107        | same (CL, CL) = true        | same (CL, CL) = true
108        | same (PrincipleEvec, PrincipleEvec) = true        | same (PrincipleEvec a, PrincipleEvec b) = samety(a, b)
109        | same (Subscript ty1, Subscript ty2) = sameTy(ty1, ty2)        | same (Subscript a, Subscript b) = samety(a, b)
110        | same (Max, Max) = true        | same (Max, Max) = true
111        | same (Min, Min) = true        | same (Min, Min) = true
112        | same (Sin, Sin) = true        | same (Sin, Sin) = true
# Line 107  Line 118 
118        | same (RoundToInt, RoundToInt) = true        | same (RoundToInt, RoundToInt) = true
119        | same (CeilToInt, CeilToInt) = true        | same (CeilToInt, CeilToInt) = true
120        | same (FloorToInt, FloorToInt) = true        | same (FloorToInt, FloorToInt) = true
121        | same (LoadImage img1, LoadImage img2) = ImageInfo.same(img1, img2)        | same (LoadImage a, LoadImage b) = ImageInfo.same(a, b)
122        | same (Inside, Inside) = true        | same (Inside, Inside) = true
123        | same (Field fld1, Field fld2) = FieldDef.same(fld1, fld2)        | same (Field a, Field b) = FieldDef.same(a, b)
124        | same (Probe, Probe) = true        | same (Probe, Probe) = true
125        | same (Transform img1, Transform img2) = ImageInfo.same(img1, img2)        | same (Transform a, Transform b) = ImageInfo.same(a, b)
126        | same _ = false        | same _ = false
127    
128      fun hash (Add ty) = 0w11 + hashTy ty      fun hash (Add a) = 0w3 + hashty a
129        | hash (Sub ty) = 0w13 + hashTy ty        | hash (Sub a) = 0w5 + hashty a
130        | hash (Mul ty) = 0w17 + hashTy ty        | hash (Mul a) = 0w7 + hashty a
131        | hash (Div ty) = 0w19 + hashTy ty        | hash (Div a) = 0w11 + hashty a
132        | hash (Neg ty) = 0w23 + hashTy ty        | hash (Neg a) = 0w13 + hashty a
133        | hash (Dot ty) = 0w29 + hashTy ty        | hash (LT a) = 0w17 + hashty a
134        | hash Cross = 0w31        | hash (LTE a) = 0w19 + hashty a
135        | hash (Norm ty) = 0w37 + hashTy ty        | hash (EQ a) = 0w23 + hashty a
136        | hash (Scale ty) = 0w41 + hashTy ty        | hash (NEQ a) = 0w29 + hashty a
137        | hash CL = 0w43        | hash (GT a) = 0w31 + hashty a
138        | hash PrincipleEvec = 0w47        | hash (GTE a) = 0w37 + hashty a
139        | hash (Subscript ty) = 0w53 + hashTy ty        | hash (Dot a) = 0w41 + hashty a
140        | hash Max = 0w59        | hash Cross = 0w43
141        | hash Min = 0w61        | hash (Norm a) = 0w47 + hashty a
142        | hash Sin = 0w67        | hash (Scale a) = 0w53 + hashty a
143        | hash Cos = 0w71        | hash (InvScale a) = 0w59 + hashty a
144        | hash Pow = 0w73        | hash CL = 0w61
145        | hash IntToReal = 0w79        | hash (PrincipleEvec a) = 0w67 + hashty a
146        | hash TruncToInt = 0w83        | hash (Subscript a) = 0w71 + hashty a
147        | hash RoundToInt = 0w89        | hash Max = 0w73
148        | hash CeilToInt = 0w97        | hash Min = 0w79
149        | hash FloorToInt = 0w101        | hash Sin = 0w83
150        | hash (LoadImage img) = 0w103 + ImageInfo.hash img        | hash Cos = 0w89
151        | hash Inside = 0w107        | hash Pow = 0w97
152        | hash (Field fld) = 0w109 + FieldDef.hash fld        | hash Not = 0w101
153        | hash Probe = 0w113        | hash IntToReal = 0w103
154        | hash (Transform img) = 0w127 + ImageInfo.hash img        | hash TruncToInt = 0w107
155          | hash RoundToInt = 0w109
156          | hash CeilToInt = 0w113
157          | hash FloorToInt = 0w127
158          | hash (LoadImage a) = 0w131 + ImageInfo.hash a
159          | hash Inside = 0w137
160          | hash (Field a) = 0w139 + FieldDef.hash a
161          | hash Probe = 0w149
162          | hash (Transform a) = 0w151 + ImageInfo.hash a
163    
164      val toString : rator -> string      fun toString (Add a) = concat["Add(", tyToString a, ")"]
165          | toString (Sub a) = concat["Sub(", tyToString a, ")"]
166          | toString (Mul a) = concat["Mul(", tyToString a, ")"]
167          | toString (Div a) = concat["Div(", tyToString a, ")"]
168          | toString (Neg a) = concat["Neg(", tyToString a, ")"]
169          | toString (LT a) = concat["LT(", tyToString a, ")"]
170          | toString (LTE a) = concat["LTE(", tyToString a, ")"]
171          | toString (EQ a) = concat["EQ(", tyToString a, ")"]
172          | toString (NEQ a) = concat["NEQ(", tyToString a, ")"]
173          | toString (GT a) = concat["GT(", tyToString a, ")"]
174          | toString (GTE a) = concat["GTE(", tyToString a, ")"]
175          | toString (Dot a) = concat["Dot(", tyToString a, ")"]
176          | toString Cross = "Cross"
177          | toString (Norm a) = concat["Norm(", tyToString a, ")"]
178          | toString (Scale a) = concat["Scale(", tyToString a, ")"]
179          | toString (InvScale a) = concat["InvScale(", tyToString a, ")"]
180          | toString CL = "CL"
181          | toString (PrincipleEvec a) = concat["PrincipleEvec(", tyToString a, ")"]
182          | toString (Subscript a) = concat["Subscript(", tyToString a, ")"]
183          | toString Max = "Max"
184          | toString Min = "Min"
185          | toString Sin = "Sin"
186          | toString Cos = "Cos"
187          | toString Pow = "Pow"
188          | toString Not = "Not"
189          | toString IntToReal = "IntToReal"
190          | toString TruncToInt = "TruncToInt"
191          | toString RoundToInt = "RoundToInt"
192          | toString CeilToInt = "CeilToInt"
193          | toString FloorToInt = "FloorToInt"
194          | toString (LoadImage a) = concat["LoadImage(", ImageInfo.toString a, ")"]
195          | toString Inside = "Inside"
196          | toString (Field a) = concat["Field(", FieldDef.toString a, ")"]
197          | toString Probe = "Probe"
198          | toString (Transform a) = concat["Transform(", ImageInfo.toString a, ")"]
199    
200    end    end
201    
202  structure HighIL = SSAFn(HighOps)  structure HighIL = SSAFn(HighOps)
203     hash (Add a) = 0w587 + hash ty  a
204          | hash (Add a) = 0w593 + hash ty  a
205          | hash (Add a) = 0w599 + hash ty  a
206          | hash (Add a) = 0w601 + hash ty  a
207          | hash (Add a) = 0w607 + hash ty  a
208          | hash (Add a) = 0w613 + hash ty  a
209          | hash (Add a) = 0w617 + hash ty  a
210          | hash (Add a) = 0w619 + hash ty  a
211          | hash (Add a) = 0w631 + hash ty  a
212          | hash (Add a) = 0w641 + hash ty  a
213          | hash (Add a) = 0w643 + hash ty  a
214          | hash (Add a) = 0w647 + hash ty  a
215          | hash (Add a) = 0w653 + hash ty  a
216          | hash (Add a) = 0w659 + hash ty  a
217          | hash (Add a) = 0w661 + hash ty  a
218          | hash (Add a) = 0w673 + hash ty  a
219          | hash (Add a) = 0w677 + hash ty  a
220          | hash (Add a) = 0w683 + hash ty  a
221          | hash (Add a) = 0w691 + hash ty  a
222          | hash (Add a) = 0w701 + hash ty  a
223          | hash (Add a) = 0w709 + hash ty  a
224          | hash (Add a) = 0w719 + hash ty  a
225          | hash (Add a) = 0w727 + hash ty  a
226          | hash (Add a) = 0w733 + hash ty  a
227          | hash (Add a) = 0w739 + hash ty  a
228          | hash (Add a) = 0w743 + hash ty  a
229          | hash (Add a) = 0w751 + hash ty  a
230          | hash (Add a) = 0w757 + hash ty  a
231          | hash (Add a) = 0w761 + hash ty  a
232          | hash (Add a) = 0w769 + hash ty  a
233          | hash (Add a) = 0w773 + hash ty  a
234          | hash (Add a) = 0w787 + hash ty  a
235          | hash (Add a) = 0w797 + hash ty  a
236          | hash (Add a) = 0w809 + hash ty  a
237          | hash (Add a) = 0w811 + hash ty  a
238          | hash (Add a) = 0w821 + hash ty  a
239          | hash (Add a) = 0w823 + hash ty  a
240          | hash (Add a) = 0w827 + hash ty  a
241          | hash (Add a) = 0w829 + hash ty  a
242          | hash (Add a) = 0w839 + hash ty  a
243          | hash (Add a) = 0w853 + hash ty  a
244          | hash (Add a) = 0w857 + hash ty  a
245          | hash (Add a) = 0w859 + hash ty  a
246          | hash (Add a) = 0w863 + hash ty  a
247          | hash (Add a) = 0w877 + hash ty  a
248          | hash (Add a) = 0w881 + hash ty  a
249          | hash (Add a) = 0w883 + hash ty  a
250          | hash (Add a) = 0w887 + hash ty  a
251          | hash (Add a) = 0w907 + hash ty  a
252          | hash (Add a) = 0w911 + hash ty  a
253          | hash (Add a) = 0w919 + hash ty  a
254          | hash (Add a) = 0w929 + hash ty  a
255          | hash (Add a) = 0w937 + hash ty  a
256          | hash (Add a) = 0w941 + hash ty  a
257          | hash (Add a) = 0w947 + hash ty  a
258          | hash (Add a) = 0w953 + hash ty  a
259          | hash (Add a) = 0w967 + hash ty  a
260          | hash (Add a) = 0w971 + hash ty  a
261          | hash (Add a) = 0w977 + hash ty  a
262          | hash (Add a) = 0w983 + hash ty  a
263          | hash (Add a) = 0w991 + hash ty  a
264          | hash (Add a) = 0w997 + hash ty  a
265          | hash (Add a) = 0w1009 + hash ty  a
266          | hash (Add a) = 0w1013 + hash ty  a
267          | hash (Add a) = 0w1019 + hash ty  a
268          | hash (Add a) = 0w1021 + hash ty  a
269          | hash (Add a) = 0w1031 + hash ty  a
270          | hash (Add a) = 0w1033 + hash ty  a
271          | hash (Add a) = 0w1039 + hash ty  a
272          | hash (Add a) = 0w1049 + hash ty  a
273          | hash (Add a) = 0w1051 + hash ty  a
274          | hash (Add a) = 0w1061 + hash ty  a
275          | hash (Add a) = 0w1063 + hash ty  a
276          | hash (Add a) = 0w1069 + hash ty  a
277          | hash (Add a) = 0w1087 + hash ty  a
278          | hash (Add a) = 0w1091 + hash ty  a
279          | hash (Add a) = 0w1093 + hash ty  a
280          | hash (Add a) = 0w1097 + hash ty  a
281          | hash (Add a) = 0w1103 + hash ty  a
282          | hash (Add a) = 0w1109 + hash ty  a
283          | hash (Add a) = 0w1117 + hash ty  a
284          | hash (Add a) = 0w1123 + hash ty  a
285          | hash (Add a) = 0w1129 + hash ty  a
286          | hash (Add a) = 0w1151 + hash ty  a
287          | hash (Add a) = 0w1153 + hash ty  a
288          | hash (Add a) = 0w1163 + hash ty  a
289          | hash (Add a) = 0w1171 + hash ty  a
290          | hash (Add a) = 0w1181 + hash ty  a
291          | hash (Add a) = 0w1187 + hash ty  a
292          | hash (Add a) = 0w1193 + hash ty  a
293          | hash (Add a) = 0w1201 + hash ty  a
294          | hash (Add a) = 0w1213 + hash ty  a
295          | hash (Add a) = 0w1217 + hash ty  a
296          | hash (Add a) = 0w1223 + hash ty  a
297          | hash

Legend:
Removed from v.184  
changed lines
  Added in v.186

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