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/mltree-simplify.sml
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/mltree/mltree-simplify.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 788 - (view) (download)

1 : leunga 775 (* WARNING: this is generated by running 'nowhere mltree-simplify.in'.
2 :     * Do not edit this file directly.
3 :     * Version 1.2
4 : monnier 467 *)
5 :    
6 : leunga 775 (*#line 15.1 "mltree-simplify.in"*)
7 :     functor MLTreeSimplifier(
8 :     (*#line 16.4 "mltree-simplify.in"*)
9 :     structure T : MLTREE
10 : monnier 467
11 : leunga 775 (*#line 17.4 "mltree-simplify.in"*)
12 :     structure Size : MLTREE_SIZE
13 : george 545
14 : leunga 775 (*#line 18.7 "mltree-simplify.in"*)
15 :     sharing T = Size.T
16 : monnier 467
17 : leunga 775 (*#line 20.4 "mltree-simplify.in"*)
18 :     val sext : T.rewriter -> (T.sext -> T.sext)
19 : monnier 467
20 : leunga 775 (*#line 21.4 "mltree-simplify.in"*)
21 :     val rext : T.rewriter -> (T.rext -> T.rext)
22 : monnier 467
23 : leunga 775 (*#line 22.4 "mltree-simplify.in"*)
24 :     val fext : T.rewriter -> (T.fext -> T.fext)
25 : monnier 467
26 : leunga 775 (*#line 23.4 "mltree-simplify.in"*)
27 :     val ccext : T.rewriter -> (T.ccext -> T.ccext)
28 :     ): MLTREE_SIMPLIFIER =
29 :     struct
30 : leunga 591
31 : leunga 775 (*#line 27.4 "mltree-simplify.in"*)
32 :     structure T = T
33 : monnier 467
34 : leunga 775 (*#line 28.4 "mltree-simplify.in"*)
35 :     structure I = T.I
36 : monnier 467
37 : leunga 775 (*#line 29.4 "mltree-simplify.in"*)
38 :     structure R = MLTreeRewrite
39 :     (
40 :     (*#line 30.7 "mltree-simplify.in"*)
41 :     structure T = T
42 : monnier 467
43 : leunga 775 (*#line 31.7 "mltree-simplify.in"*)
44 :     val sext = sext
45 :     and rext = rext
46 :     and fext = fext
47 :     and ccext = ccext
48 :     )
49 : monnier 467
50 :    
51 : leunga 775 (*#line 34.4 "mltree-simplify.in"*)
52 :     type simplifier = T.rewriter
53 : monnier 467
54 : leunga 775 (*#line 36.4 "mltree-simplify.in"*)
55 :     val lit_11 = (IntInf.fromInt 0)
56 :     and lit_16 = (IntInf.fromInt 1)
57 : monnier 467
58 : leunga 775 (*#line 37.4 "mltree-simplify.in"*)
59 :     val zero = (IntInf.fromInt 0)
60 : monnier 467
61 : leunga 775 (*#line 38.4 "mltree-simplify.in"*)
62 :     val zeroT = T.LI zero
63 : monnier 467
64 : leunga 775 (*#line 40.4 "mltree-simplify.in"*)
65 : leunga 591 fun simplify {addressWidth, signedAddress} =
66 : leunga 775 let
67 :     (*#line 43.4 "mltree-simplify.in"*)
68 :     fun sim ==> exp =
69 :     let val v_3 = exp
70 :     fun state_164 () = zeroT
71 :     fun state_173 () = zeroT
72 :     fun state_193 v_3 =
73 :     let val exp = v_3
74 :     in exp
75 :     end
76 :     fun state_133 (v_1, v_4) =
77 :     let val b = v_4
78 :     and ty = v_1
79 :     in b
80 :     end
81 :     fun state_15 (v_1, v_0) =
82 :     let val a = v_0
83 :     and ty = v_1
84 :     in a
85 :     end
86 :     fun state_163 v_1 =
87 :     let val ty = v_1
88 :     in zeroT
89 :     end
90 :     fun state_155 v_1 =
91 :     let val ty = v_1
92 :     in zeroT
93 :     end
94 :     fun state_172 v_1 =
95 :     let val ty = v_1
96 :     in zeroT
97 :     end
98 :     fun state_124 v_4 =
99 :     let val b = v_4
100 :     in b
101 :     end
102 :     fun state_50 (v_1, v_4) =
103 :     let val ty = v_1
104 :     and x = v_4
105 :     in x
106 :     end
107 :     fun state_48 v_1 =
108 :     let val ty = v_1
109 :     in zeroT
110 :     end
111 :     fun state_52 (v_1, v_0) =
112 :     let val ty = v_1
113 :     and x = v_0
114 :     in x
115 :     end
116 :     fun state_90 (v_1, v_4) =
117 :     let val ty = v_1
118 :     and x = v_4
119 :     in x
120 :     end
121 :     fun state_88 v_1 =
122 :     let val ty = v_1
123 :     in zeroT
124 :     end
125 :     fun state_92 (v_1, v_0) =
126 :     let val ty = v_1
127 :     and x = v_0
128 :     in x
129 :     end
130 :     fun state_23 (v_1, v_4) =
131 :     let val ty = v_1
132 :     and x = v_4
133 :     in x
134 :     end
135 :     fun state_21 v_1 =
136 :     let val ty = v_1
137 :     in zeroT
138 :     end
139 :     fun state_25 (v_1, v_0) =
140 :     let val ty = v_1
141 :     and x = v_0
142 :     in x
143 :     end
144 :     fun state_142 (v_1, v_4) =
145 :     let val b = v_4
146 :     and ty = v_1
147 :     in zeroT
148 :     end
149 :     fun state_115 v_0 =
150 :     let val a = v_0
151 :     in a
152 :     end
153 :     fun state_74 (v_1, v_0) =
154 :     let val ty = v_1
155 :     and x = v_0
156 :     in x
157 :     end
158 :     fun state_5 (v_1, v_0) =
159 :     let val ty = v_1
160 :     and x = v_0
161 :     in x
162 :     end
163 :     fun state_1767 (v_3, v_1, v_10, v_4) = (if (v_10 = lit_11)
164 :     then (state_133 (v_1, v_4))
165 :     else (state_193 v_3))
166 :     fun state_1568 (v_3, v_1, v_0, v_2) = (if (v_2 = lit_11)
167 :     then (state_15 (v_1, v_0))
168 :     else (state_193 v_3))
169 :     fun state_1385 (v_3, v_1, v_10) = (if (v_10 = lit_11)
170 :     then (state_163 v_1)
171 :     else (state_193 v_3))
172 :     fun state_1292 (v_3, v_1, v_10) = (if (v_10 = lit_11)
173 :     then (state_155 v_1)
174 :     else (state_193 v_3))
175 :     fun state_1109 (v_3, v_1, v_10) = (if (v_10 = lit_11)
176 :     then (state_172 v_1)
177 :     else (state_193 v_3))
178 :     fun state_977 (v_3, v_10, v_4) = (if (v_10 = lit_11)
179 :     then (state_124 v_4)
180 :     else (state_193 v_3))
181 :     fun state_875 (v_3, v_1, v_0, v_2) = (if (v_2 = lit_11)
182 :     then (state_48 v_1)
183 :     else (if (v_2 = lit_16)
184 :     then (state_52 (v_1, v_0))
185 :     else (state_193 v_3)))
186 :     fun state_780 (v_3, v_1, v_0, v_2) = (if (v_2 = lit_11)
187 :     then (state_88 v_1)
188 :     else (if (v_2 = lit_16)
189 :     then (state_92 (v_1, v_0))
190 :     else (state_193 v_3)))
191 :     fun state_685 (v_3, v_1, v_0, v_2) = (if (v_2 = lit_11)
192 :     then (state_21 v_1)
193 :     else (if (v_2 = lit_16)
194 :     then (state_25 (v_1, v_0))
195 :     else (state_193 v_3)))
196 :     fun state_592 (v_3, v_1, v_10, v_4) = (if (v_10 = lit_11)
197 :     then (state_142 (v_1, v_4))
198 :     else (state_193 v_3))
199 :     fun state_472 (v_3, v_0, v_10) = (if (v_10 = lit_11)
200 :     then (state_115 v_0)
201 :     else (state_193 v_3))
202 :     fun state_379 (v_3, v_1, v_0, v_2) = (if (v_2 = lit_11)
203 :     then (state_74 (v_1, v_0))
204 :     else (state_193 v_3))
205 :     fun state_194 (v_3, v_1, v_0, v_2) = (if (v_2 = lit_11)
206 :     then (state_5 (v_1, v_0))
207 :     else (state_193 v_3))
208 :     fun state_1569 (v_3, v_1, v_0, v_4) =
209 :     (case v_4 of
210 :     T.LI v_2 => state_1568 (v_3, v_1, v_0, v_2)
211 :     | _ => state_193 v_3
212 :     )
213 :     fun state_195 (v_3, v_1, v_0, v_4) =
214 :     (case v_4 of
215 :     T.LI v_2 => state_194 (v_3, v_1, v_0, v_2)
216 :     | _ => state_193 v_3
217 :     )
218 :     in
219 :     (case v_3 of
220 :     T.ADD v_5 =>
221 :     let val (v_1, v_0, v_4) = v_5
222 :     in
223 :     (case v_0 of
224 :     T.ADD v_10 =>
225 :     let val (v_7, v_9, v_13) = v_10
226 :     in
227 :     (case v_13 of
228 :     T.LI v_12 =>
229 :     (case v_4 of
230 :     T.LI v_2 =>
231 :     let val a = v_9
232 :     and ty = v_1
233 :     and ty' = v_7
234 :     and x = v_12
235 :     and y = v_2
236 :     in (if (ty = ty')
237 :     then (T.ADD (ty, a, T.LI (I.ADD (ty, x, y))))
238 :     else (state_194 (v_3, v_1, v_0, v_2)))
239 :     end
240 :     | _ => state_193 v_3
241 :     )
242 :     | _ => state_195 (v_3, v_1, v_0, v_4)
243 :     )
244 :     end
245 :     | T.LABEXP v_10 =>
246 :     (case v_4 of
247 :     T.LABEXP v_2 =>
248 :     let val ty = v_1
249 :     and x = v_10
250 :     and y = v_2
251 :     in T.LABEXP (T.ADD (ty, x, y))
252 :     end
253 :     | T.LI v_2 => state_194 (v_3, v_1, v_0, v_2)
254 :     | _ => state_193 v_3
255 :     )
256 :     | T.LI v_10 => (if (v_10 = lit_11)
257 :     then
258 :     let val ty = v_1
259 :     and x = v_4
260 :     in x
261 :     end
262 :     else
263 :     (case v_4 of
264 :     T.LI v_2 => (if (v_2 = lit_11)
265 :     then (state_5 (v_1, v_0))
266 :     else
267 :     let val ty = v_1
268 :     and x = v_10
269 :     and y = v_2
270 :     in T.LI (I.ADD (ty, x, y))
271 :     end)
272 :     | _ => state_193 v_3
273 :     ))
274 :     | _ => state_195 (v_3, v_1, v_0, v_4)
275 :     )
276 :     end
277 :     | T.ADDT v_5 =>
278 :     let val (v_1, v_0, v_4) = v_5
279 :     in
280 :     (case v_0 of
281 :     T.LABEXP v_10 =>
282 :     (case v_4 of
283 :     T.LABEXP v_2 =>
284 :     let val ty = v_1
285 :     and x = v_10
286 :     and y = v_2
287 :     in T.LABEXP (T.ADDT (ty, x, y))
288 :     end
289 :     | T.LI v_2 => state_379 (v_3, v_1, v_0, v_2)
290 :     | _ => state_193 v_3
291 :     )
292 :     | T.LI v_10 => (if (v_10 = lit_11)
293 :     then
294 :     let val ty = v_1
295 :     and x = v_4
296 :     in x
297 :     end
298 :     else
299 :     (case v_4 of
300 :     T.LI v_2 => (if (v_2 = lit_11)
301 :     then (state_74 (v_1, v_0))
302 :     else
303 :     let val ty = v_1
304 :     and x = v_10
305 :     and y = v_2
306 :     in (T.LI (I.ADDT (ty, x, y)))handle Overflow => exp
307 : leunga 591
308 : leunga 775 end)
309 :     | _ => state_193 v_3
310 :     ))
311 :     | _ =>
312 :     (case v_4 of
313 :     T.LI v_2 => state_379 (v_3, v_1, v_0, v_2)
314 :     | _ => state_193 v_3
315 :     )
316 :     )
317 :     end
318 :     | T.ANDB v_5 =>
319 :     let val (v_1, v_0, v_4) = v_5
320 :     in
321 :     (case v_4 of
322 :     T.LABEXP v_2 =>
323 :     (case v_0 of
324 :     T.LABEXP v_10 =>
325 :     let val ty = v_1
326 :     and x = v_10
327 :     and y = v_2
328 :     in T.LABEXP (T.ANDB (ty, x, y))
329 :     end
330 :     | T.LI v_10 => state_472 (v_3, v_0, v_10)
331 :     | _ => state_193 v_3
332 :     )
333 :     | T.LI v_2 => (if (v_2 = lit_11)
334 :     then
335 :     let val b = v_4
336 :     in b
337 :     end
338 :     else
339 :     (case v_0 of
340 :     T.LI v_10 => (if (v_10 = lit_11)
341 :     then (state_115 v_0)
342 :     else
343 :     let val ty = v_1
344 :     and x = v_10
345 :     and y = v_2
346 :     in T.LI (I.ANDB (ty, x, y))
347 :     end)
348 :     | _ => state_193 v_3
349 :     ))
350 :     | T.NOTB v_2 =>
351 :     (case v_0 of
352 :     T.LI v_10 => state_472 (v_3, v_0, v_10)
353 :     | T.NOTB v_10 =>
354 :     let val (v_7, v_9) = v_10
355 :     in
356 :     let val (v_6, v_8) = v_2
357 :     in
358 :     let val a = v_9
359 :     and b = v_8
360 :     and ty = v_1
361 :     and ty' = v_7
362 :     and ty'' = v_6
363 :     in (if ((ty = ty') andalso (ty' = ty''))
364 :     then (T.NOTB (ty, T.ORB (ty, a, b)))
365 :     else (state_193 v_3))
366 :     end
367 :     end
368 :     end
369 :     | _ => state_193 v_3
370 :     )
371 :     | _ =>
372 :     (case v_0 of
373 :     T.LI v_10 => state_472 (v_3, v_0, v_10)
374 :     | _ => state_193 v_3
375 :     )
376 :     )
377 :     end
378 :     | T.COND v_5 =>
379 :     let val (v_1, v_0, v_4, v_17) = v_5
380 :     in
381 :     (case v_0 of
382 :     T.FALSE =>
383 :     let val a = v_4
384 :     and b = v_17
385 :     and ty = v_1
386 :     in b
387 :     end
388 :     | T.TRUE =>
389 :     let val a = v_4
390 :     and b = v_17
391 :     and ty = v_1
392 :     in a
393 :     end
394 :     | _ => state_193 v_3
395 :     )
396 :     end
397 :     | T.DIVS v_5 =>
398 :     let val (v_1, v_0, v_4) = v_5
399 :     in
400 :     (case v_4 of
401 :     T.LABEXP v_2 =>
402 :     (case v_0 of
403 :     T.LABEXP v_10 =>
404 :     let val ty = v_1
405 :     and x = v_10
406 :     and y = v_2
407 :     in T.LABEXP (T.DIVS (ty, x, y))
408 :     end
409 :     | _ => state_193 v_3
410 :     )
411 :     | T.LI v_2 => (if (v_2 = lit_16)
412 :     then
413 :     let val a = v_0
414 :     and ty = v_1
415 :     in a
416 :     end
417 :     else
418 :     (case v_0 of
419 :     T.LI v_10 =>
420 :     let val ty = v_1
421 :     and x = v_10
422 :     and y = v_2
423 :     in (if (y <> zero)
424 :     then (T.LI (I.DIVS (ty, x, y)))
425 :     else (state_193 v_3))
426 :     end
427 :     | _ => state_193 v_3
428 :     ))
429 :     | _ => state_193 v_3
430 :     )
431 :     end
432 :     | T.DIVT v_5 =>
433 :     let val (v_1, v_0, v_4) = v_5
434 :     in
435 :     (case v_4 of
436 :     T.LABEXP v_2 =>
437 :     (case v_0 of
438 :     T.LABEXP v_10 =>
439 :     let val ty = v_1
440 :     and x = v_10
441 :     and y = v_2
442 :     in T.LABEXP (T.DIVT (ty, x, y))
443 :     end
444 :     | _ => state_193 v_3
445 :     )
446 :     | T.LI v_2 => (if (v_2 = lit_16)
447 :     then
448 :     let val a = v_0
449 :     and ty = v_1
450 :     in a
451 :     end
452 :     else
453 :     (case v_0 of
454 :     T.LI v_10 =>
455 :     let val ty = v_1
456 :     and x = v_10
457 :     and y = v_2
458 :     in (if (y <> zero)
459 :     then (T.LI (I.DIVT (ty, x, y)))
460 :     else (state_193 v_3))
461 :     end
462 :     | _ => state_193 v_3
463 :     ))
464 :     | _ => state_193 v_3
465 :     )
466 :     end
467 :     | T.DIVU v_5 =>
468 :     let val (v_1, v_0, v_4) = v_5
469 :     in
470 :     (case v_4 of
471 :     T.LABEXP v_2 =>
472 :     (case v_0 of
473 :     T.LABEXP v_10 =>
474 :     let val ty = v_1
475 :     and x = v_10
476 :     and y = v_2
477 :     in T.LABEXP (T.DIVU (ty, x, y))
478 :     end
479 :     | _ => state_193 v_3
480 :     )
481 :     | T.LI v_2 => (if (v_2 = lit_16)
482 :     then
483 :     let val a = v_0
484 :     and ty = v_1
485 :     in a
486 :     end
487 :     else
488 :     (case v_0 of
489 :     T.LI v_10 =>
490 :     let val ty = v_1
491 :     and x = v_10
492 :     and y = v_2
493 :     in (if (y <> zero)
494 :     then (T.LI (I.DIVU (ty, x, y)))
495 :     else (state_193 v_3))
496 :     end
497 :     | _ => state_193 v_3
498 :     ))
499 :     | _ => state_193 v_3
500 :     )
501 :     end
502 :     | T.EQVB v_5 =>
503 :     let val (v_1, v_0, v_4) = v_5
504 :     in
505 :     (case v_4 of
506 :     T.LABEXP v_2 =>
507 :     (case v_0 of
508 :     T.LABEXP v_10 =>
509 :     let val ty = v_1
510 :     and x = v_10
511 :     and y = v_2
512 :     in T.LABEXP (T.EQVB (ty, x, y))
513 :     end
514 :     | T.LI v_10 => state_592 (v_3, v_1, v_10, v_4)
515 :     | _ => state_193 v_3
516 :     )
517 :     | T.LI v_2 => (if (v_2 = lit_11)
518 :     then
519 :     let val a = v_0
520 :     and ty = v_1
521 :     in zeroT
522 :     end
523 :     else
524 :     (case v_0 of
525 :     T.LI v_10 => (if (v_10 = lit_11)
526 :     then (state_142 (v_1, v_4))
527 :     else
528 :     let val ty = v_1
529 :     and x = v_10
530 :     and y = v_2
531 :     in T.LI (I.EQVB (ty, x, y))
532 :     end)
533 :     | _ => state_193 v_3
534 :     ))
535 :     | _ =>
536 :     (case v_0 of
537 :     T.LI v_10 => state_592 (v_3, v_1, v_10, v_4)
538 :     | _ => state_193 v_3
539 :     )
540 :     )
541 :     end
542 :     | T.MULS v_5 =>
543 :     let val (v_1, v_0, v_4) = v_5
544 :     in
545 :     (case v_0 of
546 :     T.LABEXP v_10 =>
547 :     (case v_4 of
548 :     T.LABEXP v_2 =>
549 :     let val ty = v_1
550 :     and x = v_10
551 :     and y = v_2
552 :     in T.LABEXP (T.MULS (ty, x, y))
553 :     end
554 :     | T.LI v_2 => state_685 (v_3, v_1, v_0, v_2)
555 :     | _ => state_193 v_3
556 :     )
557 :     | T.LI v_10 => (if (v_10 = lit_11)
558 :     then
559 :     let val ty = v_1
560 :     in zeroT
561 :     end
562 :     else (if (v_10 = lit_16)
563 :     then
564 :     (case v_4 of
565 :     T.LI v_2 => (if (v_2 = lit_11)
566 :     then (state_21 v_1)
567 :     else (if (v_2 = lit_16)
568 :     then (state_23 (v_1, v_4))
569 :     else (state_23 (v_1, v_4))))
570 :     | _ => state_23 (v_1, v_4)
571 :     )
572 :     else
573 :     (case v_4 of
574 :     T.LI v_2 => (if (v_2 = lit_11)
575 :     then (state_21 v_1)
576 :     else (if (v_2 = lit_16)
577 :     then (state_25 (v_1, v_0))
578 :     else
579 :     let val ty = v_1
580 :     and x = v_10
581 :     and y = v_2
582 :     in T.LI (I.MULS (ty, x, y))
583 :     end))
584 :     | _ => state_193 v_3
585 :     )))
586 :     | _ =>
587 :     (case v_4 of
588 :     T.LI v_2 => state_685 (v_3, v_1, v_0, v_2)
589 :     | _ => state_193 v_3
590 :     )
591 :     )
592 :     end
593 :     | T.MULT v_5 =>
594 :     let val (v_1, v_0, v_4) = v_5
595 :     in
596 :     (case v_0 of
597 :     T.LABEXP v_10 =>
598 :     (case v_4 of
599 :     T.LABEXP v_2 =>
600 :     let val ty = v_1
601 :     and x = v_10
602 :     and y = v_2
603 :     in T.LABEXP (T.MULT (ty, x, y))
604 :     end
605 :     | T.LI v_2 => state_780 (v_3, v_1, v_0, v_2)
606 :     | _ => state_193 v_3
607 :     )
608 :     | T.LI v_10 => (if (v_10 = lit_11)
609 :     then
610 :     let val ty = v_1
611 :     in zeroT
612 :     end
613 :     else (if (v_10 = lit_16)
614 :     then
615 :     (case v_4 of
616 :     T.LI v_2 => (if (v_2 = lit_11)
617 :     then (state_88 v_1)
618 :     else (if (v_2 = lit_16)
619 :     then (state_90 (v_1, v_4))
620 :     else (state_90 (v_1, v_4))))
621 :     | _ => state_90 (v_1, v_4)
622 :     )
623 :     else
624 :     (case v_4 of
625 :     T.LI v_2 => (if (v_2 = lit_11)
626 :     then (state_88 v_1)
627 :     else (if (v_2 = lit_16)
628 :     then (state_92 (v_1, v_0))
629 :     else
630 :     let val ty = v_1
631 :     and x = v_10
632 :     and y = v_2
633 :     in (T.LI (I.MULT (ty, x, y)))handle Overflow => exp
634 : leunga 591
635 : leunga 775 end))
636 :     | _ => state_193 v_3
637 :     )))
638 :     | _ =>
639 :     (case v_4 of
640 :     T.LI v_2 => state_780 (v_3, v_1, v_0, v_2)
641 :     | _ => state_193 v_3
642 :     )
643 :     )
644 :     end
645 :     | T.MULU v_5 =>
646 :     let val (v_1, v_0, v_4) = v_5
647 :     in
648 :     (case v_0 of
649 :     T.LABEXP v_10 =>
650 :     (case v_4 of
651 :     T.LABEXP v_2 =>
652 :     let val ty = v_1
653 :     and x = v_10
654 :     and y = v_2
655 :     in T.LABEXP (T.MULU (ty, x, y))
656 :     end
657 :     | T.LI v_2 => state_875 (v_3, v_1, v_0, v_2)
658 :     | _ => state_193 v_3
659 :     )
660 :     | T.LI v_10 => (if (v_10 = lit_11)
661 :     then
662 :     let val ty = v_1
663 :     in zeroT
664 :     end
665 :     else (if (v_10 = lit_16)
666 :     then
667 :     (case v_4 of
668 :     T.LI v_2 => (if (v_2 = lit_11)
669 :     then (state_48 v_1)
670 :     else (if (v_2 = lit_16)
671 :     then (state_50 (v_1, v_4))
672 :     else (state_50 (v_1, v_4))))
673 :     | _ => state_50 (v_1, v_4)
674 :     )
675 :     else
676 :     (case v_4 of
677 :     T.LI v_2 => (if (v_2 = lit_11)
678 :     then (state_48 v_1)
679 :     else (if (v_2 = lit_16)
680 :     then (state_52 (v_1, v_0))
681 :     else
682 :     let val ty = v_1
683 :     and x = v_10
684 :     and y = v_2
685 :     in T.LI (I.MULU (ty, x, y))
686 :     end))
687 :     | _ => state_193 v_3
688 :     )))
689 :     | _ =>
690 :     (case v_4 of
691 :     T.LI v_2 => state_875 (v_3, v_1, v_0, v_2)
692 :     | _ => state_193 v_3
693 :     )
694 :     )
695 :     end
696 :     | T.NEGT v_5 =>
697 :     let val (v_1, v_0) = v_5
698 :     in
699 :     (case v_0 of
700 :     T.LABEXP v_10 =>
701 :     let val ty = v_1
702 :     and x = v_10
703 :     in T.LABEXP (T.NEGT (ty, x))
704 :     end
705 :     | T.LI v_10 =>
706 :     let val ty = v_1
707 :     and x = v_10
708 :     in (T.LI (I.NEGT (ty, x)))handle Overflow => exp
709 : leunga 591
710 : leunga 775 end
711 :     | _ => state_193 v_3
712 :     )
713 :     end
714 :     | T.NOTB v_5 =>
715 :     let val (v_1, v_0) = v_5
716 :     in
717 :     (case v_0 of
718 :     T.LABEXP v_10 =>
719 :     let val ty = v_1
720 :     and x = v_10
721 :     in T.LABEXP (T.NOTB (ty, x))
722 :     end
723 :     | T.LI v_10 =>
724 :     let val n = v_10
725 :     and ty = v_1
726 :     in T.LI (I.NOTB (ty, n))
727 :     end
728 :     | T.NOTB v_10 =>
729 :     let val (v_7, v_9) = v_10
730 :     in
731 :     let val a = v_9
732 :     and ty = v_1
733 :     and ty' = v_7
734 :     in (if (ty = ty')
735 :     then a
736 :     else (state_193 v_3))
737 :     end
738 :     end
739 :     | _ => state_193 v_3
740 :     )
741 :     end
742 :     | T.ORB v_5 =>
743 :     let val (v_1, v_0, v_4) = v_5
744 :     in
745 :     (case v_4 of
746 :     T.LABEXP v_2 =>
747 :     (case v_0 of
748 :     T.LABEXP v_10 =>
749 :     let val ty = v_1
750 :     and x = v_10
751 :     and y = v_2
752 :     in T.LABEXP (T.ORB (ty, x, y))
753 :     end
754 :     | T.LI v_10 => state_977 (v_3, v_10, v_4)
755 :     | _ => state_193 v_3
756 :     )
757 :     | T.LI v_2 => (if (v_2 = lit_11)
758 :     then
759 :     let val a = v_0
760 :     in a
761 :     end
762 :     else
763 :     (case v_0 of
764 :     T.LI v_10 => (if (v_10 = lit_11)
765 :     then (state_124 v_4)
766 :     else
767 :     let val ty = v_1
768 :     and x = v_10
769 :     and y = v_2
770 :     in T.LI (I.ORB (ty, x, y))
771 :     end)
772 :     | _ => state_193 v_3
773 :     ))
774 :     | T.NOTB v_2 =>
775 :     (case v_0 of
776 :     T.LI v_10 => state_977 (v_3, v_10, v_4)
777 :     | T.NOTB v_10 =>
778 :     let val (v_7, v_9) = v_10
779 :     in
780 :     let val (v_6, v_8) = v_2
781 :     in
782 :     let val a = v_9
783 :     and b = v_8
784 :     and ty = v_1
785 :     and ty' = v_7
786 :     and ty'' = v_6
787 :     in (if ((ty = ty') andalso (ty' = ty''))
788 :     then (T.NOTB (ty, T.ANDB (ty, a, b)))
789 :     else (state_193 v_3))
790 :     end
791 :     end
792 :     end
793 :     | _ => state_193 v_3
794 :     )
795 :     | _ =>
796 :     (case v_0 of
797 :     T.LI v_10 => state_977 (v_3, v_10, v_4)
798 :     | _ => state_193 v_3
799 :     )
800 :     )
801 :     end
802 :     | T.QUOTS v_5 =>
803 :     let val (v_1, v_0, v_4) = v_5
804 :     in
805 :     (case v_4 of
806 :     T.LABEXP v_2 =>
807 :     (case v_0 of
808 :     T.LABEXP v_10 =>
809 :     let val ty = v_1
810 :     and x = v_10
811 :     and y = v_2
812 :     in T.LABEXP (T.QUOTS (ty, x, y))
813 :     end
814 :     | _ => state_193 v_3
815 :     )
816 :     | T.LI v_2 => (if (v_2 = lit_16)
817 :     then
818 :     let val a = v_0
819 :     and ty = v_1
820 :     in a
821 :     end
822 :     else
823 :     (case v_0 of
824 :     T.LI v_10 =>
825 :     let val ty = v_1
826 :     and x = v_10
827 :     and y = v_2
828 :     in (if (y <> zero)
829 :     then (T.LI (I.QUOTS (ty, x, y)))
830 :     else (state_193 v_3))
831 :     end
832 :     | _ => state_193 v_3
833 :     ))
834 :     | _ => state_193 v_3
835 :     )
836 :     end
837 :     | T.QUOTT v_5 =>
838 :     let val (v_1, v_0, v_4) = v_5
839 :     in
840 :     (case v_4 of
841 :     T.LABEXP v_2 =>
842 :     (case v_0 of
843 :     T.LABEXP v_10 =>
844 :     let val ty = v_1
845 :     and x = v_10
846 :     and y = v_2
847 :     in T.LABEXP (T.QUOTT (ty, x, y))
848 :     end
849 :     | _ => state_193 v_3
850 :     )
851 :     | T.LI v_2 => (if (v_2 = lit_16)
852 :     then
853 :     let val a = v_0
854 :     and ty = v_1
855 :     in a
856 :     end
857 :     else
858 :     (case v_0 of
859 :     T.LI v_10 =>
860 :     let val ty = v_1
861 :     and x = v_10
862 :     and y = v_2
863 :     in (if (y <> zero)
864 :     then (T.LI (I.QUOTT (ty, x, y)))
865 :     else (state_193 v_3))
866 :     end
867 :     | _ => state_193 v_3
868 :     ))
869 :     | _ => state_193 v_3
870 :     )
871 :     end
872 :     | T.REMS v_5 =>
873 :     let val (v_1, v_0, v_4) = v_5
874 :     in
875 :     (case v_4 of
876 :     T.LABEXP v_2 =>
877 :     (case v_0 of
878 :     T.LABEXP v_10 =>
879 :     let val ty = v_1
880 :     and x = v_10
881 :     and y = v_2
882 :     in T.LABEXP (T.REMS (ty, x, y))
883 :     end
884 :     | _ => state_193 v_3
885 :     )
886 :     | T.LI v_2 => (if (v_2 = lit_16)
887 :     then
888 :     let val a = v_0
889 :     and ty = v_1
890 :     in zeroT
891 :     end
892 :     else
893 :     (case v_0 of
894 :     T.LI v_10 =>
895 :     let val ty = v_1
896 :     and x = v_10
897 :     and y = v_2
898 :     in (if (y <> zero)
899 :     then (T.LI (I.REMS (ty, x, y)))
900 :     else (state_193 v_3))
901 :     end
902 :     | _ => state_193 v_3
903 :     ))
904 :     | _ => state_193 v_3
905 :     )
906 :     end
907 :     | T.REMT v_5 =>
908 :     let val (v_1, v_0, v_4) = v_5
909 :     in
910 :     (case v_4 of
911 :     T.LABEXP v_2 =>
912 :     (case v_0 of
913 :     T.LABEXP v_10 =>
914 :     let val ty = v_1
915 :     and x = v_10
916 :     and y = v_2
917 :     in T.LABEXP (T.REMT (ty, x, y))
918 :     end
919 :     | _ => state_193 v_3
920 :     )
921 :     | T.LI v_2 => (if (v_2 = lit_16)
922 :     then
923 :     let val a = v_0
924 :     and ty = v_1
925 :     in zeroT
926 :     end
927 :     else
928 :     (case v_0 of
929 :     T.LI v_10 =>
930 :     let val ty = v_1
931 :     and x = v_10
932 :     and y = v_2
933 :     in (if (y <> zero)
934 :     then (T.LI (I.REMT (ty, x, y)))
935 :     else (state_193 v_3))
936 :     end
937 :     | _ => state_193 v_3
938 :     ))
939 :     | _ => state_193 v_3
940 :     )
941 :     end
942 :     | T.REMU v_5 =>
943 :     let val (v_1, v_0, v_4) = v_5
944 :     in
945 :     (case v_4 of
946 :     T.LABEXP v_2 =>
947 :     (case v_0 of
948 :     T.LABEXP v_10 =>
949 :     let val ty = v_1
950 :     and x = v_10
951 :     and y = v_2
952 :     in T.LABEXP (T.REMU (ty, x, y))
953 :     end
954 :     | _ => state_193 v_3
955 :     )
956 :     | T.LI v_2 => (if (v_2 = lit_16)
957 :     then
958 :     let val a = v_0
959 :     and ty = v_1
960 :     in zeroT
961 :     end
962 :     else
963 :     (case v_0 of
964 :     T.LI v_10 =>
965 :     let val ty = v_1
966 :     and x = v_10
967 :     and y = v_2
968 :     in (if (y <> zero)
969 :     then (T.LI (I.REMU (ty, x, y)))
970 :     else (state_193 v_3))
971 :     end
972 :     | _ => state_193 v_3
973 :     ))
974 :     | _ => state_193 v_3
975 :     )
976 :     end
977 :     | T.SLL v_5 =>
978 :     let val (v_1, v_0, v_4) = v_5
979 :     in
980 :     (case v_4 of
981 :     T.LABEXP v_2 =>
982 :     (case v_0 of
983 :     T.LABEXP v_10 =>
984 :     let val ty = v_1
985 :     and x = v_10
986 :     and y = v_2
987 :     in T.LABEXP (T.SLL (ty, x, y))
988 :     end
989 :     | T.LI v_10 => state_1109 (v_3, v_1, v_10)
990 :     | _ => state_193 v_3
991 :     )
992 :     | T.LI v_2 => (if (v_2 = lit_11)
993 :     then
994 :     let val a = v_0
995 :     and ty = v_1
996 :     in a
997 :     end
998 :     else
999 :     (case v_0 of
1000 :     T.LI v_10 => (if (v_10 = lit_11)
1001 :     then (state_172 v_1)
1002 :     else
1003 :     let val n = v_2
1004 :     and ty = v_1
1005 :     in (if (IntInf.<= (IntInf.fromInt ty, n))
1006 :     then (state_173 ())
1007 :     else
1008 :     let val ty = v_1
1009 :     and x = v_10
1010 :     and y = v_2
1011 :     in T.LI (I.SLL (ty, x, y))
1012 :     end)
1013 :     end)
1014 :     | _ =>
1015 :     let val n = v_2
1016 :     and ty = v_1
1017 :     in (if (IntInf.<= (IntInf.fromInt ty, n))
1018 :     then (state_173 ())
1019 :     else (state_193 v_3))
1020 :     end
1021 :     ))
1022 :     | _ =>
1023 :     (case v_0 of
1024 :     T.LI v_10 => state_1109 (v_3, v_1, v_10)
1025 :     | _ => state_193 v_3
1026 :     )
1027 :     )
1028 :     end
1029 :     | T.SRA v_5 =>
1030 :     let val (v_1, v_0, v_4) = v_5
1031 :     in
1032 :     (case v_4 of
1033 :     T.LABEXP v_2 =>
1034 :     (case v_0 of
1035 :     T.LABEXP v_10 =>
1036 :     let val ty = v_1
1037 :     and x = v_10
1038 :     and y = v_2
1039 :     in T.LABEXP (T.SRA (ty, x, y))
1040 :     end
1041 :     | T.LI v_10 => state_1292 (v_3, v_1, v_10)
1042 :     | _ => state_193 v_3
1043 :     )
1044 :     | T.LI v_2 => (if (v_2 = lit_11)
1045 :     then
1046 :     let val a = v_0
1047 :     and ty = v_1
1048 :     in a
1049 :     end
1050 :     else
1051 :     (case v_0 of
1052 :     T.LI v_10 => (if (v_10 = lit_11)
1053 :     then (state_155 v_1)
1054 :     else
1055 :     let val ty = v_1
1056 :     and x = v_10
1057 :     and y = v_2
1058 :     in T.LI (I.SRA (ty, x, y))
1059 :     end)
1060 :     | _ => state_193 v_3
1061 :     ))
1062 :     | _ =>
1063 :     (case v_0 of
1064 :     T.LI v_10 => state_1292 (v_3, v_1, v_10)
1065 :     | _ => state_193 v_3
1066 :     )
1067 :     )
1068 :     end
1069 :     | T.SRL v_5 =>
1070 :     let val (v_1, v_0, v_4) = v_5
1071 :     in
1072 :     (case v_4 of
1073 :     T.LABEXP v_2 =>
1074 :     (case v_0 of
1075 :     T.LABEXP v_10 =>
1076 :     let val ty = v_1
1077 :     and x = v_10
1078 :     and y = v_2
1079 :     in T.LABEXP (T.SRL (ty, x, y))
1080 :     end
1081 :     | T.LI v_10 => state_1385 (v_3, v_1, v_10)
1082 :     | _ => state_193 v_3
1083 :     )
1084 :     | T.LI v_2 => (if (v_2 = lit_11)
1085 :     then
1086 :     let val a = v_0
1087 :     and ty = v_1
1088 :     in a
1089 :     end
1090 :     else
1091 :     (case v_0 of
1092 :     T.LI v_10 => (if (v_10 = lit_11)
1093 :     then (state_163 v_1)
1094 :     else
1095 :     let val n = v_2
1096 :     and ty = v_1
1097 :     in (if (IntInf.<= (IntInf.fromInt ty, n))
1098 :     then (state_164 ())
1099 :     else
1100 :     let val ty = v_1
1101 :     and x = v_10
1102 :     and y = v_2
1103 :     in T.LI (I.SRL (ty, x, y))
1104 :     end)
1105 :     end)
1106 :     | _ =>
1107 :     let val n = v_2
1108 :     and ty = v_1
1109 :     in (if (IntInf.<= (IntInf.fromInt ty, n))
1110 :     then (state_164 ())
1111 :     else (state_193 v_3))
1112 :     end
1113 :     ))
1114 :     | _ =>
1115 :     (case v_0 of
1116 :     T.LI v_10 => state_1385 (v_3, v_1, v_10)
1117 :     | _ => state_193 v_3
1118 :     )
1119 :     )
1120 :     end
1121 :     | T.SUB v_5 =>
1122 :     let val (v_1, v_0, v_4) = v_5
1123 :     in
1124 :     (case v_0 of
1125 :     T.LABEXP v_10 =>
1126 :     (case v_4 of
1127 :     T.LABEXP v_2 =>
1128 :     let val ty = v_1
1129 :     and x = v_10
1130 :     and y = v_2
1131 :     in T.LABEXP (T.SUB (ty, x, y))
1132 :     end
1133 :     | T.LI v_2 => state_1568 (v_3, v_1, v_0, v_2)
1134 :     | _ => state_193 v_3
1135 :     )
1136 :     | T.LI v_10 =>
1137 :     (case v_4 of
1138 :     T.LI v_2 => (if (v_2 = lit_11)
1139 :     then (state_15 (v_1, v_0))
1140 :     else
1141 :     let val ty = v_1
1142 :     and x = v_10
1143 :     and y = v_2
1144 :     in T.LI (I.SUB (ty, x, y))
1145 :     end)
1146 :     | T.SUB v_2 =>
1147 :     let val (v_6, v_8, v_14) = v_2
1148 :     in (if (v_10 = lit_11)
1149 :     then
1150 :     (case v_8 of
1151 :     T.LI v_15 => (if (v_15 = lit_11)
1152 :     then
1153 :     let val a = v_14
1154 :     and ty = v_1
1155 :     and ty' = v_6
1156 :     in (if (ty = ty')
1157 :     then a
1158 :     else (state_193 v_3))
1159 :     end
1160 :     else (state_193 v_3))
1161 :     | _ => state_193 v_3
1162 :     )
1163 :     else (state_193 v_3))
1164 :     end
1165 :     | _ => state_193 v_3
1166 :     )
1167 :     | T.SUB v_10 =>
1168 :     let val (v_7, v_9, v_13) = v_10
1169 :     in
1170 :     (case v_13 of
1171 :     T.LI v_12 =>
1172 :     (case v_4 of
1173 :     T.LI v_2 =>
1174 :     let val a = v_9
1175 :     and ty = v_1
1176 :     and ty' = v_7
1177 :     and x = v_12
1178 :     and y = v_2
1179 :     in (if (ty = ty')
1180 :     then (T.SUB (ty, a, T.LI (I.ADD (ty, x, y))))
1181 :     else (state_1568 (v_3, v_1, v_0, v_2)))
1182 :     end
1183 :     | _ => state_193 v_3
1184 :     )
1185 :     | _ => state_1569 (v_3, v_1, v_0, v_4)
1186 :     )
1187 :     end
1188 :     | _ => state_1569 (v_3, v_1, v_0, v_4)
1189 :     )
1190 :     end
1191 :     | T.SUBT v_5 =>
1192 :     let val (v_1, v_0, v_4) = v_5
1193 :     in
1194 :     (case v_4 of
1195 :     T.LABEXP v_2 =>
1196 :     (case v_0 of
1197 :     T.LABEXP v_10 =>
1198 :     let val ty = v_1
1199 :     and x = v_10
1200 :     and y = v_2
1201 :     in T.LABEXP (T.SUBT (ty, x, y))
1202 :     end
1203 :     | _ => state_193 v_3
1204 :     )
1205 :     | T.LI v_2 => (if (v_2 = lit_11)
1206 :     then
1207 :     let val a = v_0
1208 :     and ty = v_1
1209 :     in a
1210 :     end
1211 :     else
1212 :     (case v_0 of
1213 :     T.LI v_10 =>
1214 :     let val ty = v_1
1215 :     and x = v_10
1216 :     and y = v_2
1217 :     in (T.LI (I.SUBT (ty, x, y)))handle Overflow => exp
1218 : leunga 591
1219 : leunga 775 end
1220 :     | _ => state_193 v_3
1221 :     ))
1222 :     | _ => state_193 v_3
1223 :     )
1224 :     end
1225 :     | T.SX v_5 =>
1226 :     let val (v_1, v_0, v_4) = v_5
1227 :     in
1228 :     let val e = v_4
1229 :     and ty = v_1
1230 :     and ty' = v_0
1231 :     in (if (ty = ty')
1232 :     then e
1233 :     else
1234 :     (case v_4 of
1235 :     T.LABEXP v_2 =>
1236 :     let val ty = v_1
1237 :     and ty' = v_0
1238 :     and x = v_2
1239 :     in T.LABEXP (T.SX (ty, ty', x))
1240 :     end
1241 :     | T.LI v_2 =>
1242 :     let val n = v_2
1243 :     and ty = v_1
1244 :     and ty' = v_0
1245 :     in T.LI (I.SX (ty, ty', n))
1246 :     end
1247 :     | _ => state_193 v_3
1248 :     ))
1249 :     end
1250 :     end
1251 :     | T.XORB v_5 =>
1252 :     let val (v_1, v_0, v_4) = v_5
1253 :     in
1254 :     (case v_4 of
1255 :     T.LABEXP v_2 =>
1256 :     (case v_0 of
1257 :     T.LABEXP v_10 =>
1258 :     let val ty = v_1
1259 :     and x = v_10
1260 :     and y = v_2
1261 :     in T.LABEXP (T.XORB (ty, x, y))
1262 :     end
1263 :     | T.LI v_10 => state_1767 (v_3, v_1, v_10, v_4)
1264 :     | _ => state_193 v_3
1265 :     )
1266 :     | T.LI v_2 => (if (v_2 = lit_11)
1267 :     then
1268 :     let val a = v_0
1269 :     and ty = v_1
1270 :     in a
1271 :     end
1272 :     else
1273 :     (case v_0 of
1274 :     T.LI v_10 => (if (v_10 = lit_11)
1275 :     then (state_133 (v_1, v_4))
1276 :     else
1277 :     let val ty = v_1
1278 :     and x = v_10
1279 :     and y = v_2
1280 :     in T.LI (I.XORB (ty, x, y))
1281 :     end)
1282 :     | _ => state_193 v_3
1283 :     ))
1284 :     | T.NOTB v_2 =>
1285 :     (case v_0 of
1286 :     T.LI v_10 => state_1767 (v_3, v_1, v_10, v_4)
1287 :     | T.NOTB v_10 =>
1288 :     let val (v_7, v_9) = v_10
1289 :     in
1290 :     let val (v_6, v_8) = v_2
1291 :     in
1292 :     let val a = v_9
1293 :     and b = v_8
1294 :     and ty = v_1
1295 :     and ty' = v_7
1296 :     and ty'' = v_6
1297 :     in (if ((ty = ty') andalso (ty' = ty''))
1298 :     then (T.NOTB (ty, T.XORB (ty, a, b)))
1299 :     else (state_193 v_3))
1300 :     end
1301 :     end
1302 :     end
1303 :     | _ => state_193 v_3
1304 :     )
1305 :     | _ =>
1306 :     (case v_0 of
1307 :     T.LI v_10 => state_1767 (v_3, v_1, v_10, v_4)
1308 :     | _ => state_193 v_3
1309 :     )
1310 :     )
1311 :     end
1312 :     | T.ZX v_5 =>
1313 :     let val (v_1, v_0, v_4) = v_5
1314 :     in
1315 :     let val e = v_4
1316 :     and ty = v_1
1317 :     and ty' = v_0
1318 :     in (if (ty = ty')
1319 :     then e
1320 :     else
1321 :     (case v_4 of
1322 :     T.LABEXP v_2 =>
1323 :     let val ty = v_1
1324 :     and ty' = v_0
1325 :     and x = v_2
1326 :     in T.LABEXP (T.ZX (ty, ty', x))
1327 :     end
1328 :     | T.LI v_2 =>
1329 :     let val n = v_2
1330 :     and ty = v_1
1331 :     and ty' = v_0
1332 : leunga 788 in T.LI (I.ZX (ty, ty', n))
1333 : leunga 775 end
1334 :     | _ => state_193 v_3
1335 :     ))
1336 :     end
1337 :     end
1338 :     | _ => state_193 v_3
1339 :     )
1340 :     end
1341 :     and simStm ==> (T.IF(T.TRUE, yes, no)) = yes
1342 :     | simStm ==> (T.IF(T.FALSE, yes, no)) = no
1343 :     | simStm ==> (T.SEQ[x]) = x
1344 :     | simStm ==> s = s
1345 :     and simF p_0 p_1 =
1346 :     let val v_10 = (p_0, p_1)
1347 :     fun state_8 (v_0, v_1) =
1348 :     let val ==> = v_0
1349 :     and exp = v_1
1350 :     in exp
1351 :     end
1352 :     in
1353 :     let val (v_0, v_1) = v_10
1354 :     in
1355 :     (case v_1 of
1356 :     T.CVTF2F v_7 =>
1357 :     let val (v_3, v_6, v_8) = v_7
1358 :     in
1359 :     let val ==> = v_0
1360 :     and e = v_8
1361 :     and ty = v_3
1362 :     and ty' = v_6
1363 :     in (if (ty = ty')
1364 :     then e
1365 :     else (state_8 (v_0, v_1)))
1366 :     end
1367 :     end
1368 :     | T.FCOND v_7 =>
1369 :     let val (v_3, v_6, v_8, v_9) = v_7
1370 :     in
1371 :     (case v_6 of
1372 :     T.FALSE =>
1373 :     let val ==> = v_0
1374 :     and no = v_9
1375 :     and ty = v_3
1376 :     and yes = v_8
1377 :     in no
1378 :     end
1379 :     | T.TRUE =>
1380 :     let val ==> = v_0
1381 :     and no = v_9
1382 :     and ty = v_3
1383 :     and yes = v_8
1384 :     in yes
1385 :     end
1386 :     | _ => state_8 (v_0, v_1)
1387 :     )
1388 :     end
1389 :     | T.FNEG v_7 =>
1390 :     let val (v_3, v_6) = v_7
1391 :     in
1392 :     (case v_6 of
1393 :     T.FNEG v_5 =>
1394 :     let val (v_2, v_4) = v_5
1395 :     in
1396 :     let val ==> = v_0
1397 :     and e = v_4
1398 :     and ty = v_3
1399 :     and ty' = v_2
1400 :     in (if (ty = ty')
1401 :     then e
1402 :     else (state_8 (v_0, v_1)))
1403 :     end
1404 :     end
1405 :     | _ => state_8 (v_0, v_1)
1406 :     )
1407 :     end
1408 :     | _ => state_8 (v_0, v_1)
1409 :     )
1410 :     end
1411 :     end
1412 :     and cc false = T.FALSE
1413 :     | cc true = T.TRUE
1414 :     and simCC ==> (T.CMP(ty, T.EQ, T.LI x, T.LI y)) = cc (I.EQ (ty, x, y))
1415 :     | simCC ==> (T.CMP(ty, T.NE, T.LI x, T.LI y)) = cc (I.NE (ty, x, y))
1416 :     | simCC ==> (T.CMP(ty, T.GT, T.LI x, T.LI y)) = cc (I.GT (ty, x, y))
1417 :     | simCC ==> (T.CMP(ty, T.GE, T.LI x, T.LI y)) = cc (I.GE (ty, x, y))
1418 :     | simCC ==> (T.CMP(ty, T.LT, T.LI x, T.LI y)) = cc (I.LT (ty, x, y))
1419 :     | simCC ==> (T.CMP(ty, T.LE, T.LI x, T.LI y)) = cc (I.LE (ty, x, y))
1420 :     | simCC ==> (T.CMP(ty, T.GTU, T.LI x, T.LI y)) = cc (I.GTU (ty, x, y))
1421 :     | simCC ==> (T.CMP(ty, T.LTU, T.LI x, T.LI y)) = cc (I.LTU (ty, x, y))
1422 :     | simCC ==> (T.CMP(ty, T.GEU, T.LI x, T.LI y)) = cc (I.GEU (ty, x, y))
1423 :     | simCC ==> (T.CMP(ty, T.LEU, T.LI x, T.LI y)) = cc (I.LEU (ty, x, y))
1424 :     | simCC ==> (T.AND(T.TRUE, x)) = x
1425 :     | simCC ==> (T.AND(x, T.TRUE)) = x
1426 :     | simCC ==> (T.AND(T.FALSE, x)) = T.FALSE
1427 :     | simCC ==> (T.AND(x, T.FALSE)) = T.FALSE
1428 :     | simCC ==> (T.OR(T.FALSE, x)) = x
1429 :     | simCC ==> (T.OR(x, T.FALSE)) = x
1430 :     | simCC ==> (T.OR(T.TRUE, x)) = T.TRUE
1431 :     | simCC ==> (T.OR(x, T.TRUE)) = T.TRUE
1432 :     | simCC ==> (T.XOR(T.TRUE, T.TRUE)) = T.FALSE
1433 :     | simCC ==> (T.XOR(T.FALSE, x)) = x
1434 :     | simCC ==> (T.XOR(x, T.FALSE)) = x
1435 :     | simCC ==> (T.XOR(T.TRUE, x)) = T.NOT x
1436 :     | simCC ==> (T.XOR(x, T.TRUE)) = T.NOT x
1437 :     | simCC ==> (T.EQV(T.FALSE, T.FALSE)) = T.TRUE
1438 :     | simCC ==> (T.EQV(T.TRUE, x)) = x
1439 :     | simCC ==> (T.EQV(x, T.TRUE)) = x
1440 :     | simCC ==> (T.EQV(T.FALSE, x)) = T.NOT x
1441 :     | simCC ==> (T.EQV(x, T.FALSE)) = T.NOT x
1442 :     | simCC ==> exp = exp
1443 :     in R.rewrite {rexp=sim, fexp=simF, ccexp=simCC, stm=simStm}
1444 :     end
1445 :     end
1446 : leunga 591

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