Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/MLRISC/mltree/mltree-simplify.sml
ViewVC logotype

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

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

revision 1180, Tue Mar 26 22:24:24 2002 UTC revision 1181, Wed Mar 27 21:27:27 2002 UTC
# Line 1  Line 1 
1  (* WARNING: this is generated by running 'nowhere mltree-simplify.in'.  (* WARNING: this is generated by running 'nowhere mltree-simplify.in'.
2   * Do not edit this file directly.   * Do not edit this file directly.
3   * Version 1.2   * Version 1.2.2
4   *)   *)
5    
6  (*#line 15.1 "mltree-simplify.in"*)  (*#line 15.1 "mltree-simplify.in"*)
# Line 9  Line 9 
9                           structure T : MLTREE                           structure T : MLTREE
10    
11  (*#line 17.4 "mltree-simplify.in"*)  (*#line 17.4 "mltree-simplify.in"*)
12                           structure Size : MLTREE_SIZE                           structure Size : MLTREE_SIZE where T=T
   
 (*#line 18.7 "mltree-simplify.in"*)  
                          where T = T  
13    
14  (*#line 20.4 "mltree-simplify.in"*)  (*#line 20.4 "mltree-simplify.in"*)
15                           val sext : T.rewriter -> (T.sext -> T.sext)                           val sext : T.rewriter -> T.sext -> T.sext
16    
17  (*#line 21.4 "mltree-simplify.in"*)  (*#line 21.4 "mltree-simplify.in"*)
18                           val rext : T.rewriter -> (T.rext -> T.rext)                           val rext : T.rewriter -> T.rext -> T.rext
19    
20  (*#line 22.4 "mltree-simplify.in"*)  (*#line 22.4 "mltree-simplify.in"*)
21                           val fext : T.rewriter -> (T.fext -> T.fext)                           val fext : T.rewriter -> T.fext -> T.fext
22    
23  (*#line 23.4 "mltree-simplify.in"*)  (*#line 23.4 "mltree-simplify.in"*)
24                           val ccext : T.rewriter -> (T.ccext -> T.ccext)                           val ccext : T.rewriter -> T.ccext -> T.ccext
25                          ): MLTREE_SIMPLIFIER =                          ): MLTREE_SIMPLIFIER =
26  struct  struct
27    
# Line 65  Line 62 
62     fun simplify {addressWidth, signedAddress} =     fun simplify {addressWidth, signedAddress} =
63         let         let
64  (*#line 43.4 "mltree-simplify.in"*)  (*#line 43.4 "mltree-simplify.in"*)
65               fun dm (T.DIV_TO_ZERO) = I.DIV_TO_ZERO
66                 | dm (T.DIV_TO_NEGINF) = I.DIV_TO_NEGINF
67    
68    (*#line 46.4 "mltree-simplify.in"*)
69             fun sim ==> exp =             fun sim ==> exp =
70                    let val v_3 = exp                    let val v_3 = exp
71                        fun state_180 e = e                        fun state_170 e = e
72                        fun state_164 () = zeroT                        fun state_154 () = zeroT
73                        fun state_173 () = zeroT                        fun state_163 () = zeroT
74                        fun state_195 v_3 =                        fun state_185 v_3 =
75                            let val exp = v_3                            let val exp = v_3
76                            in exp                            in exp
77                            end                            end
78                        fun state_133 (v_1, v_4) =                        fun state_123 (v_1, v_4) =
79                            let val b = v_4                            let val b = v_4
80                                and ty = v_1                                and ty = v_1
81                            in b                            in b
# Line 84  Line 85 
85                                and ty = v_1                                and ty = v_1
86                            in a                            in a
87                            end                            end
88                        fun state_163 v_1 =                        fun state_153 v_1 =
89                            let val ty = v_1                            let val ty = v_1
90                            in zeroT                            in zeroT
91                            end                            end
92                        fun state_155 v_1 =                        fun state_145 v_1 =
93                            let val ty = v_1                            let val ty = v_1
94                            in zeroT                            in zeroT
95                            end                            end
96                        fun state_172 v_1 =                        fun state_162 v_1 =
97                            let val ty = v_1                            let val ty = v_1
98                            in zeroT                            in zeroT
99                            end                            end
100                        fun state_124 v_4 =                        fun state_114 v_4 =
101                            let val b = v_4                            let val b = v_4
102                            in b                            in b
103                            end                            end
104                        fun state_50 (v_1, v_4) =                        fun state_45 (v_1, v_4) =
105                            let val ty = v_1                            let val ty = v_1
106                                and x = v_4                                and x = v_4
107                            in x                            in x
108                            end                            end
109                        fun state_48 v_1 =                        fun state_43 v_1 =
110                            let val ty = v_1                            let val ty = v_1
111                            in zeroT                            in zeroT
112                            end                            end
113                        fun state_52 (v_1, v_0) =                        fun state_47 (v_1, v_0) =
114                            let val ty = v_1                            let val ty = v_1
115                                and x = v_0                                and x = v_0
116                            in x                            in x
117                            end                            end
118                        fun state_90 (v_1, v_4) =                        fun state_85 (v_1, v_4) =
119                            let val ty = v_1                            let val ty = v_1
120                                and x = v_4                                and x = v_4
121                            in x                            in x
122                            end                            end
123                        fun state_88 v_1 =                        fun state_83 v_1 =
124                            let val ty = v_1                            let val ty = v_1
125                            in zeroT                            in zeroT
126                            end                            end
127                        fun state_92 (v_1, v_0) =                        fun state_87 (v_1, v_0) =
128                            let val ty = v_1                            let val ty = v_1
129                                and x = v_0                                and x = v_0
130                            in x                            in x
# Line 142  Line 143 
143                                and x = v_0                                and x = v_0
144                            in x                            in x
145                            end                            end
146                        fun state_142 (v_1, v_4) =                        fun state_132 (v_1, v_4) =
147                            let val b = v_4                            let val b = v_4
148                                and ty = v_1                                and ty = v_1
149                            in zeroT                            in zeroT
150                            end                            end
151                        fun state_115 v_0 =                        fun state_105 v_0 =
152                            let val a = v_0                            let val a = v_0
153                            in a                            in a
154                            end                            end
155                        fun state_74 (v_1, v_0) =                        fun state_69 (v_1, v_0) =
156                            let val ty = v_1                            let val ty = v_1
157                                and x = v_0                                and x = v_0
158                            in x                            in x
# Line 161  Line 162 
162                                and x = v_0                                and x = v_0
163                            in x                            in x
164                            end                            end
165                        fun state_1855 (v_3, v_1, v_10, v_4) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_1763 (v_3, v_1, v_10, v_4) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
166                               then (state_133 (v_1, v_4))                               then (state_123 (v_1, v_4))
167                               else (state_195 v_3))                               else (state_185 v_3))
168                        fun state_1570 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                        fun state_1490 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
169                               then (state_15 (v_1, v_0))                               then (state_15 (v_1, v_0))
170                               else (state_195 v_3))                               else (state_185 v_3))
171                        fun state_1387 (v_3, v_1, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_1315 (v_3, v_1, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
172                               then (state_163 v_1)                               then (state_153 v_1)
173                               else (state_195 v_3))                               else (state_185 v_3))
174                        fun state_1294 (v_3, v_1, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_1226 (v_3, v_1, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
175                               then (state_155 v_1)                               then (state_145 v_1)
176                               else (state_195 v_3))                               else (state_185 v_3))
177                        fun state_1111 (v_3, v_1, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_1051 (v_3, v_1, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
178                               then (state_172 v_1)                               then (state_162 v_1)
179                               else (state_195 v_3))                               else (state_185 v_3))
180                        fun state_979 (v_3, v_10, v_4) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_937 (v_3, v_10, v_4) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
181                               then (state_124 v_4)                               then (state_114 v_4)
182                               else (state_195 v_3))                               else (state_185 v_3))
183                        fun state_877 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                        fun state_839 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
184                               then (state_48 v_1)                               then (state_43 v_1)
185                               else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                               else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
186                                  then (state_52 (v_1, v_0))                                  then (state_47 (v_1, v_0))
187                                  else (state_195 v_3)))                                  else (state_185 v_3)))
188                        fun state_782 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                        fun state_748 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
189                               then (state_88 v_1)                               then (state_83 v_1)
190                               else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                               else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
191                                  then (state_92 (v_1, v_0))                                  then (state_87 (v_1, v_0))
192                                  else (state_195 v_3)))                                  else (state_185 v_3)))
193                        fun state_687 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                        fun state_657 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
194                               then (state_21 v_1)                               then (state_21 v_1)
195                               else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                               else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
196                                  then (state_25 (v_1, v_0))                                  then (state_25 (v_1, v_0))
197                                  else (state_195 v_3)))                                  else (state_185 v_3)))
198                        fun state_594 (v_3, v_1, v_10, v_4) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_568 (v_3, v_1, v_10, v_4) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
199                               then (state_142 (v_1, v_4))                               then (state_132 (v_1, v_4))
200                               else (state_195 v_3))                               else (state_185 v_3))
201                        fun state_474 (v_3, v_0, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                        fun state_452 (v_3, v_0, v_10) = (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
202                               then (state_115 v_0)                               then (state_105 v_0)
203                               else (state_195 v_3))                               else (state_185 v_3))
204                        fun state_381 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                        fun state_363 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
205                               then (state_74 (v_1, v_0))                               then (state_69 (v_1, v_0))
206                               else (state_195 v_3))                               else (state_185 v_3))
207                        fun state_196 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                        fun state_186 (v_3, v_1, v_0, v_2) = (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
208                               then (state_5 (v_1, v_0))                               then (state_5 (v_1, v_0))
209                               else (state_195 v_3))                               else (state_185 v_3))
210                        fun state_1571 (v_3, v_1, v_0, v_4) =                        fun state_1491 (v_3, v_1, v_0, v_4) =
211                            (case v_4 of                            (case v_4 of
212                              T.LI v_2 => state_1570 (v_3, v_1, v_0, v_2)                              T.LI v_2 => state_1490 (v_3, v_1, v_0, v_2)
213                            | _ => state_195 v_3                            | _ => state_185 v_3
214                            )                            )
215                        fun state_197 (v_3, v_1, v_0, v_4) =                        fun state_187 (v_3, v_1, v_0, v_4) =
216                            (case v_4 of                            (case v_4 of
217                              T.LI v_2 => state_196 (v_3, v_1, v_0, v_2)                              T.LI v_2 => state_186 (v_3, v_1, v_0, v_2)
218                            | _ => state_195 v_3                            | _ => state_185 v_3
219                            )                            )
220                    in                    in
221                       (case v_3 of                       (case v_3 of
# Line 236  Line 237 
237                                         and y = v_2                                         and y = v_2
238                                     in (if (ty = ty')                                     in (if (ty = ty')
239                                           then (T.ADD (ty, a, T.LI (I.ADD (ty, x, y))))                                           then (T.ADD (ty, a, T.LI (I.ADD (ty, x, y))))
240                                           else (state_196 (v_3, v_1, v_0, v_2)))                                           else (state_186 (v_3, v_1, v_0, v_2)))
241                                     end                                     end
242                                   | _ => state_195 v_3                                   | _ => state_185 v_3
243                                   )                                   )
244                                 | _ => state_197 (v_3, v_1, v_0, v_4)                                 | _ => state_187 (v_3, v_1, v_0, v_4)
245                                 )                                 )
246                              end                              end
247                            | T.LABEXP v_10 =>                            | T.LABEXP v_10 =>
# Line 251  Line 252 
252                                    and y = v_2                                    and y = v_2
253                                in T.LABEXP (T.ADD (ty, x, y))                                in T.LABEXP (T.ADD (ty, x, y))
254                                end                                end
255                              | T.LI v_2 => state_196 (v_3, v_1, v_0, v_2)                              | T.LI v_2 => state_186 (v_3, v_1, v_0, v_2)
256                              | _ => state_195 v_3                              | _ => state_185 v_3
257                              )                              )
258                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
259                                 then                                 then
# Line 270  Line 271 
271                                          and y = v_2                                          and y = v_2
272                                      in T.LI (I.ADD (ty, x, y))                                      in T.LI (I.ADD (ty, x, y))
273                                      end)                                      end)
274                                 | _ => state_195 v_3                                 | _ => state_185 v_3
275                                 ))                                 ))
276                            | _ => state_197 (v_3, v_1, v_0, v_4)                            | _ => state_187 (v_3, v_1, v_0, v_4)
277                            )                            )
278                         end                         end
279                       | T.ADDT v_5 =>                       | T.ADDT v_5 =>
# Line 287  Line 288 
288                                    and y = v_2                                    and y = v_2
289                                in T.LABEXP (T.ADDT (ty, x, y))                                in T.LABEXP (T.ADDT (ty, x, y))
290                                end                                end
291                              | T.LI v_2 => state_381 (v_3, v_1, v_0, v_2)                              | T.LI v_2 => state_363 (v_3, v_1, v_0, v_2)
292                              | _ => state_195 v_3                              | _ => state_185 v_3
293                              )                              )
294                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
295                                 then                                 then
# Line 299  Line 300 
300                                 else                                 else
301                                 (case v_4 of                                 (case v_4 of
302                                   T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                                   T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
303                                      then (state_74 (v_1, v_0))                                      then (state_69 (v_1, v_0))
304                                      else                                      else
305                                      let val ty = v_1                                      let val ty = v_1
306                                          and x = v_10                                          and x = v_10
307                                          and y = v_2                                          and y = v_2
308                                      in (T.LI (I.ADDT (ty, x, y)))handle Overflow => exp                                      in ((T.LI (I.ADDT (ty, x, y))) handle Overflow => exp
309    )
310                                      end)                                      end)
311                                 | _ => state_195 v_3                                 | _ => state_185 v_3
312                                 ))                                 ))
313                            | _ =>                            | _ =>
314                              (case v_4 of                              (case v_4 of
315                                T.LI v_2 => state_381 (v_3, v_1, v_0, v_2)                                T.LI v_2 => state_363 (v_3, v_1, v_0, v_2)
316                              | _ => state_195 v_3                              | _ => state_185 v_3
317                              )                              )
318                            )                            )
319                         end                         end
# Line 328  Line 329 
329                                    and y = v_2                                    and y = v_2
330                                in T.LABEXP (T.ANDB (ty, x, y))                                in T.LABEXP (T.ANDB (ty, x, y))
331                                end                                end
332                              | T.LI v_10 => state_474 (v_3, v_0, v_10)                              | T.LI v_10 => state_452 (v_3, v_0, v_10)
333                              | _ => state_195 v_3                              | _ => state_185 v_3
334                              )                              )
335                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
336                                 then                                 then
# Line 339  Line 340 
340                                 else                                 else
341                                 (case v_0 of                                 (case v_0 of
342                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
343                                      then (state_115 v_0)                                      then (state_105 v_0)
344                                      else                                      else
345                                      let val ty = v_1                                      let val ty = v_1
346                                          and x = v_10                                          and x = v_10
347                                          and y = v_2                                          and y = v_2
348                                      in T.LI (I.ANDB (ty, x, y))                                      in T.LI (I.ANDB (ty, x, y))
349                                      end)                                      end)
350                                 | _ => state_195 v_3                                 | _ => state_185 v_3
351                                 ))                                 ))
352                            | T.NOTB v_2 =>                            | T.NOTB v_2 =>
353                              (case v_0 of                              (case v_0 of
354                                T.LI v_10 => state_474 (v_3, v_0, v_10)                                T.LI v_10 => state_452 (v_3, v_0, v_10)
355                              | T.NOTB v_10 =>                              | T.NOTB v_10 =>
356                                let val (v_7, v_9) = v_10                                let val (v_7, v_9) = v_10
357                                in                                in
# Line 363  Line 364 
364                                          and ty'' = v_6                                          and ty'' = v_6
365                                      in (if ((ty = ty') andalso (ty' = ty''))                                      in (if ((ty = ty') andalso (ty' = ty''))
366                                            then (T.NOTB (ty, T.ORB (ty, a, b)))                                            then (T.NOTB (ty, T.ORB (ty, a, b)))
367                                            else (state_195 v_3))                                            else (state_185 v_3))
368                                      end                                      end
369                                   end                                   end
370                                end                                end
371                              | _ => state_195 v_3                              | _ => state_185 v_3
372                              )                              )
373                            | _ =>                            | _ =>
374                              (case v_0 of                              (case v_0 of
375                                T.LI v_10 => state_474 (v_3, v_0, v_10)                                T.LI v_10 => state_452 (v_3, v_0, v_10)
376                              | _ => state_195 v_3                              | _ => state_185 v_3
377                              )                              )
378                            )                            )
379                         end                         end
380                       | T.COND v_5 =>                       | T.COND v_5 =>
381                         let val (v_1, v_0, v_4, v_17) = v_5                         let val (v_1, v_0, v_4, v_18) = v_5
382                         in                         in
383                            (case v_0 of                            (case v_0 of
384                              T.FALSE =>                              T.FALSE =>
385                              let val a = v_4                              let val a = v_4
386                                  and b = v_17                                  and b = v_18
387                                  and ty = v_1                                  and ty = v_1
388                              in b                              in b
389                              end                              end
390                            | T.TRUE =>                            | T.TRUE =>
391                              let val a = v_4                              let val a = v_4
392                                  and b = v_17                                  and b = v_18
393                                  and ty = v_1                                  and ty = v_1
394                              in a                              in a
395                              end                              end
396                            | _ => state_195 v_3                            | _ => state_185 v_3
397                            )                            )
398                         end                         end
399                       | T.DIVS v_5 =>                       | T.DIVS v_5 =>
400                         let val (v_1, v_0, v_4) = v_5                         let val (v_1, v_0, v_4, v_18) = v_5
401                         in                         in
402                              (case v_18 of
403                                T.LABEXP v_17 =>
404                            (case v_4 of                            (case v_4 of
405                              T.LABEXP v_2 =>                              T.LABEXP v_2 =>
406                              (case v_0 of                                let val m = v_1
407                                T.LABEXP v_10 =>                                    and ty = v_0
408                                let val ty = v_1                                    and x = v_2
409                                    and x = v_10                                    and y = v_17
410                                    and y = v_2                                in T.LABEXP (T.DIVS (m, ty, x, y))
                               in T.LABEXP (T.DIVS (ty, x, y))  
411                                end                                end
412                              | _ => state_195 v_3                              | _ => state_185 v_3
413                              )                              )
414                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                            | T.LI v_17 => (if ((IntInf.compare (v_17, lit_16)) = EQUAL)
415                                 then                                 then
416                                 let val a = v_0                                 let val a = v_4
417                                     and ty = v_1                                     and m = v_1
418                                       and ty = v_0
419                                 in a                                 in a
420                                 end                                 end
421                                 else                                 else
422                                 (case v_0 of                                 (case v_4 of
423                                   T.LI v_10 =>                                   T.LI v_2 =>
424                                   let val ty = v_1                                   let val m = v_1
425                                       and x = v_10                                       and ty = v_0
426                                       and y = v_2                                       and x = v_2
427                                         and y = v_17
428                                   in (if (y <> zero)                                   in (if (y <> zero)
429                                         then (T.LI (I.DIVS (ty, x, y)))                                         then (T.LI (I.DIVS (dm m, ty, x, y)))
430                                         else (state_195 v_3))                                         else (state_185 v_3))
431                                   end                                   end
432                                 | _ => state_195 v_3                                 | _ => state_185 v_3
433                                 ))                                 ))
434                            | _ => state_195 v_3                            | _ => state_185 v_3
435                            )                            )
436                         end                         end
437                       | T.DIVT v_5 =>                       | T.DIVT v_5 =>
438                         let val (v_1, v_0, v_4) = v_5                         let val (v_1, v_0, v_4, v_18) = v_5
439                         in                         in
440                              (case v_18 of
441                                T.LABEXP v_17 =>
442                            (case v_4 of                            (case v_4 of
443                              T.LABEXP v_2 =>                              T.LABEXP v_2 =>
444                              (case v_0 of                                let val m = v_1
445                                T.LABEXP v_10 =>                                    and ty = v_0
446                                let val ty = v_1                                    and x = v_2
447                                    and x = v_10                                    and y = v_17
448                                    and y = v_2                                in T.LABEXP (T.DIVT (m, ty, x, y))
                               in T.LABEXP (T.DIVT (ty, x, y))  
449                                end                                end
450                              | _ => state_195 v_3                              | _ => state_185 v_3
451                              )                              )
452                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                            | T.LI v_17 => (if ((IntInf.compare (v_17, lit_16)) = EQUAL)
453                                 then                                 then
454                                 let val a = v_0                                 let val a = v_4
455                                     and ty = v_1                                     and m = v_1
456                                       and ty = v_0
457                                 in a                                 in a
458                                 end                                 end
459                                 else                                 else
460                                 (case v_0 of                                 (case v_4 of
461                                   T.LI v_10 =>                                   T.LI v_2 =>
462                                   let val ty = v_1                                   let val m = v_1
463                                       and x = v_10                                       and ty = v_0
464                                       and y = v_2                                       and x = v_2
465                                         and y = v_17
466                                   in (if (y <> zero)                                   in (if (y <> zero)
467                                         then (T.LI (I.DIVT (ty, x, y)))                                         then (T.LI (I.DIVT (dm m, ty, x, y)))
468                                         else (state_195 v_3))                                         else (state_185 v_3))
469                                   end                                   end
470                                 | _ => state_195 v_3                                 | _ => state_185 v_3
471                                 ))                                 ))
472                            | _ => state_195 v_3                            | _ => state_185 v_3
473                            )                            )
474                         end                         end
475                       | T.DIVU v_5 =>                       | T.DIVU v_5 =>
# Line 477  Line 484 
484                                    and y = v_2                                    and y = v_2
485                                in T.LABEXP (T.DIVU (ty, x, y))                                in T.LABEXP (T.DIVU (ty, x, y))
486                                end                                end
487                              | _ => state_195 v_3                              | _ => state_185 v_3
488                              )                              )
489                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
490                                 then                                 then
# Line 493  Line 500 
500                                       and y = v_2                                       and y = v_2
501                                   in (if (y <> zero)                                   in (if (y <> zero)
502                                         then (T.LI (I.DIVU (ty, x, y)))                                         then (T.LI (I.DIVU (ty, x, y)))
503                                         else (state_195 v_3))                                         else (state_185 v_3))
504                                   end                                   end
505                                 | _ => state_195 v_3                                 | _ => state_185 v_3
506                                 ))                                 ))
507                            | _ => state_195 v_3                            | _ => state_185 v_3
508                            )                            )
509                         end                         end
510                       | T.EQVB v_5 =>                       | T.EQVB v_5 =>
# Line 512  Line 519 
519                                    and y = v_2                                    and y = v_2
520                                in T.LABEXP (T.EQVB (ty, x, y))                                in T.LABEXP (T.EQVB (ty, x, y))
521                                end                                end
522                              | T.LI v_10 => state_594 (v_3, v_1, v_10, v_4)                              | T.LI v_10 => state_568 (v_3, v_1, v_10, v_4)
523                              | _ => state_195 v_3                              | _ => state_185 v_3
524                              )                              )
525                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
526                                 then                                 then
# Line 524  Line 531 
531                                 else                                 else
532                                 (case v_0 of                                 (case v_0 of
533                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
534                                      then (state_142 (v_1, v_4))                                      then (state_132 (v_1, v_4))
535                                      else                                      else
536                                      let val ty = v_1                                      let val ty = v_1
537                                          and x = v_10                                          and x = v_10
538                                          and y = v_2                                          and y = v_2
539                                      in T.LI (I.EQVB (ty, x, y))                                      in T.LI (I.EQVB (ty, x, y))
540                                      end)                                      end)
541                                 | _ => state_195 v_3                                 | _ => state_185 v_3
542                                 ))                                 ))
543                            | _ =>                            | _ =>
544                              (case v_0 of                              (case v_0 of
545                                T.LI v_10 => state_594 (v_3, v_1, v_10, v_4)                                T.LI v_10 => state_568 (v_3, v_1, v_10, v_4)
546                              | _ => state_195 v_3                              | _ => state_185 v_3
547                              )                              )
548                            )                            )
549                         end                         end
# Line 552  Line 559 
559                                    and y = v_2                                    and y = v_2
560                                in T.LABEXP (T.MULS (ty, x, y))                                in T.LABEXP (T.MULS (ty, x, y))
561                                end                                end
562                              | T.LI v_2 => state_687 (v_3, v_1, v_0, v_2)                              | T.LI v_2 => state_657 (v_3, v_1, v_0, v_2)
563                              | _ => state_195 v_3                              | _ => state_185 v_3
564                              )                              )
565                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
566                                 then                                 then
# Line 582  Line 589 
589                                                and y = v_2                                                and y = v_2
590                                            in T.LI (I.MULS (ty, x, y))                                            in T.LI (I.MULS (ty, x, y))
591                                            end))                                            end))
592                                    | _ => state_195 v_3                                    | _ => state_185 v_3
593                                    )))                                    )))
594                            | _ =>                            | _ =>
595                              (case v_4 of                              (case v_4 of
596                                T.LI v_2 => state_687 (v_3, v_1, v_0, v_2)                                T.LI v_2 => state_657 (v_3, v_1, v_0, v_2)
597                              | _ => state_195 v_3                              | _ => state_185 v_3
598                              )                              )
599                            )                            )
600                         end                         end
# Line 603  Line 610 
610                                    and y = v_2                                    and y = v_2
611                                in T.LABEXP (T.MULT (ty, x, y))                                in T.LABEXP (T.MULT (ty, x, y))
612                                end                                end
613                              | T.LI v_2 => state_782 (v_3, v_1, v_0, v_2)                              | T.LI v_2 => state_748 (v_3, v_1, v_0, v_2)
614                              | _ => state_195 v_3                              | _ => state_185 v_3
615                              )                              )
616                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
617                                 then                                 then
# Line 615  Line 622 
622                                    then                                    then
623                                    (case v_4 of                                    (case v_4 of
624                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
625                                         then (state_88 v_1)                                         then (state_83 v_1)
626                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
627                                            then (state_90 (v_1, v_4))                                            then (state_85 (v_1, v_4))
628                                            else (state_90 (v_1, v_4))))                                            else (state_85 (v_1, v_4))))
629                                    | _ => state_90 (v_1, v_4)                                    | _ => state_85 (v_1, v_4)
630                                    )                                    )
631                                    else                                    else
632                                    (case v_4 of                                    (case v_4 of
633                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
634                                         then (state_88 v_1)                                         then (state_83 v_1)
635                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
636                                            then (state_92 (v_1, v_0))                                            then (state_87 (v_1, v_0))
637                                            else                                            else
638                                            let val ty = v_1                                            let val ty = v_1
639                                                and x = v_10                                                and x = v_10
640                                                and y = v_2                                                and y = v_2
641                                            in (T.LI (I.MULT (ty, x, y)))handle Overflow => exp                                            in ((T.LI (I.MULT (ty, x, y))) handle Overflow => exp
642    )
643                                            end))                                            end))
644                                    | _ => state_195 v_3                                    | _ => state_185 v_3
645                                    )))                                    )))
646                            | _ =>                            | _ =>
647                              (case v_4 of                              (case v_4 of
648                                T.LI v_2 => state_782 (v_3, v_1, v_0, v_2)                                T.LI v_2 => state_748 (v_3, v_1, v_0, v_2)
649                              | _ => state_195 v_3                              | _ => state_185 v_3
650                              )                              )
651                            )                            )
652                         end                         end
# Line 655  Line 662 
662                                    and y = v_2                                    and y = v_2
663                                in T.LABEXP (T.MULU (ty, x, y))                                in T.LABEXP (T.MULU (ty, x, y))
664                                end                                end
665                              | T.LI v_2 => state_877 (v_3, v_1, v_0, v_2)                              | T.LI v_2 => state_839 (v_3, v_1, v_0, v_2)
666                              | _ => state_195 v_3                              | _ => state_185 v_3
667                              )                              )
668                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                            | T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
669                                 then                                 then
# Line 667  Line 674 
674                                    then                                    then
675                                    (case v_4 of                                    (case v_4 of
676                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
677                                         then (state_48 v_1)                                         then (state_43 v_1)
678                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
679                                            then (state_50 (v_1, v_4))                                            then (state_45 (v_1, v_4))
680                                            else (state_50 (v_1, v_4))))                                            else (state_45 (v_1, v_4))))
681                                    | _ => state_50 (v_1, v_4)                                    | _ => state_45 (v_1, v_4)
682                                    )                                    )
683                                    else                                    else
684                                    (case v_4 of                                    (case v_4 of
685                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                                      T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
686                                         then (state_48 v_1)                                         then (state_43 v_1)
687                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                                         else (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
688                                            then (state_52 (v_1, v_0))                                            then (state_47 (v_1, v_0))
689                                            else                                            else
690                                            let val ty = v_1                                            let val ty = v_1
691                                                and x = v_10                                                and x = v_10
692                                                and y = v_2                                                and y = v_2
693                                            in T.LI (I.MULU (ty, x, y))                                            in T.LI (I.MULU (ty, x, y))
694                                            end))                                            end))
695                                    | _ => state_195 v_3                                    | _ => state_185 v_3
696                                    )))                                    )))
697                            | _ =>                            | _ =>
698                              (case v_4 of                              (case v_4 of
699                                T.LI v_2 => state_877 (v_3, v_1, v_0, v_2)                                T.LI v_2 => state_839 (v_3, v_1, v_0, v_2)
700                              | _ => state_195 v_3                              | _ => state_185 v_3
701                              )                              )
702                            )                            )
703                         end                         end
# Line 706  Line 713 
713                            | T.LI v_10 =>                            | T.LI v_10 =>
714                              let val ty = v_1                              let val ty = v_1
715                                  and x = v_10                                  and x = v_10
716                              in (T.LI (I.NEGT (ty, x)))handle Overflow => exp                              in ((T.LI (I.NEGT (ty, x))) handle Overflow => exp
717    )
718                              end                              end
719                            | _ => state_195 v_3                            | _ => state_185 v_3
720                            )                            )
721                         end                         end
722                       | T.NOTB v_5 =>                       | T.NOTB v_5 =>
# Line 734  Line 741 
741                                     and ty' = v_7                                     and ty' = v_7
742                                 in (if (ty = ty')                                 in (if (ty = ty')
743                                       then a                                       then a
744                                       else (state_195 v_3))                                       else (state_185 v_3))
745                                 end                                 end
746                              end                              end
747                            | _ => state_195 v_3                            | _ => state_185 v_3
748                            )                            )
749                         end                         end
750                       | T.ORB v_5 =>                       | T.ORB v_5 =>
# Line 752  Line 759 
759                                    and y = v_2                                    and y = v_2
760                                in T.LABEXP (T.ORB (ty, x, y))                                in T.LABEXP (T.ORB (ty, x, y))
761                                end                                end
762                              | T.LI v_10 => state_979 (v_3, v_10, v_4)                              | T.LI v_10 => state_937 (v_3, v_10, v_4)
763                              | _ => state_195 v_3                              | _ => state_185 v_3
764                              )                              )
765                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
766                                 then                                 then
# Line 763  Line 770 
770                                 else                                 else
771                                 (case v_0 of                                 (case v_0 of
772                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
773                                      then (state_124 v_4)                                      then (state_114 v_4)
774                                      else                                      else
775                                      let val ty = v_1                                      let val ty = v_1
776                                          and x = v_10                                          and x = v_10
777                                          and y = v_2                                          and y = v_2
778                                      in T.LI (I.ORB (ty, x, y))                                      in T.LI (I.ORB (ty, x, y))
779                                      end)                                      end)
780                                 | _ => state_195 v_3                                 | _ => state_185 v_3
781                                 ))                                 ))
782                            | T.NOTB v_2 =>                            | T.NOTB v_2 =>
783                              (case v_0 of                              (case v_0 of
784                                T.LI v_10 => state_979 (v_3, v_10, v_4)                                T.LI v_10 => state_937 (v_3, v_10, v_4)
785                              | T.NOTB v_10 =>                              | T.NOTB v_10 =>
786                                let val (v_7, v_9) = v_10                                let val (v_7, v_9) = v_10
787                                in                                in
# Line 787  Line 794 
794                                          and ty'' = v_6                                          and ty'' = v_6
795                                      in (if ((ty = ty') andalso (ty' = ty''))                                      in (if ((ty = ty') andalso (ty' = ty''))
796                                            then (T.NOTB (ty, T.ANDB (ty, a, b)))                                            then (T.NOTB (ty, T.ANDB (ty, a, b)))
797                                            else (state_195 v_3))                                            else (state_185 v_3))
798                                      end                                      end
799                                   end                                   end
800                                end                                end
801                              | _ => state_195 v_3                              | _ => state_185 v_3
802                              )                              )
803                            | _ =>                            | _ =>
804                              (case v_0 of                              (case v_0 of
805                                T.LI v_10 => state_979 (v_3, v_10, v_4)                                T.LI v_10 => state_937 (v_3, v_10, v_4)
806                              | _ => state_195 v_3                              | _ => state_185 v_3
                             )  
807                            )                            )
                        end  
                      | T.QUOTS v_5 =>  
                        let val (v_1, v_0, v_4) = v_5  
                        in  
                           (case v_4 of  
                             T.LABEXP v_2 =>  
                             (case v_0 of  
                               T.LABEXP v_10 =>  
                               let val ty = v_1  
                                   and x = v_10  
                                   and y = v_2  
                               in T.LABEXP (T.QUOTS (ty, x, y))  
                               end  
                             | _ => state_195 v_3  
                             )  
                           | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)  
                                then  
                                let val a = v_0  
                                    and ty = v_1  
                                in a  
                                end  
                                else  
                                (case v_0 of  
                                  T.LI v_10 =>  
                                  let val ty = v_1  
                                      and x = v_10  
                                      and y = v_2  
                                  in (if (y <> zero)  
                                        then (T.LI (I.QUOTS (ty, x, y)))  
                                        else (state_195 v_3))  
                                  end  
                                | _ => state_195 v_3  
                                ))  
                           | _ => state_195 v_3  
                           )  
                        end  
                      | T.QUOTT v_5 =>  
                        let val (v_1, v_0, v_4) = v_5  
                        in  
                           (case v_4 of  
                             T.LABEXP v_2 =>  
                             (case v_0 of  
                               T.LABEXP v_10 =>  
                               let val ty = v_1  
                                   and x = v_10  
                                   and y = v_2  
                               in T.LABEXP (T.QUOTT (ty, x, y))  
                               end  
                             | _ => state_195 v_3  
                             )  
                           | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)  
                                then  
                                let val a = v_0  
                                    and ty = v_1  
                                in a  
                                end  
                                else  
                                (case v_0 of  
                                  T.LI v_10 =>  
                                  let val ty = v_1  
                                      and x = v_10  
                                      and y = v_2  
                                  in (if (y <> zero)  
                                        then (T.LI (I.QUOTT (ty, x, y)))  
                                        else (state_195 v_3))  
                                  end  
                                | _ => state_195 v_3  
                                ))  
                           | _ => state_195 v_3  
808                            )                            )
809                         end                         end
810                       | T.REMS v_5 =>                       | T.REMS v_5 =>
811                         let val (v_1, v_0, v_4) = v_5                         let val (v_1, v_0, v_4, v_18) = v_5
812                         in                         in
813                              (case v_18 of
814                                T.LABEXP v_17 =>
815                            (case v_4 of                            (case v_4 of
816                              T.LABEXP v_2 =>                              T.LABEXP v_2 =>
817                              (case v_0 of                                let val m = v_1
818                                T.LABEXP v_10 =>                                    and ty = v_0
819                                let val ty = v_1                                    and x = v_2
820                                    and x = v_10                                    and y = v_17
821                                    and y = v_2                                in T.LABEXP (T.REMS (m, ty, x, y))
                               in T.LABEXP (T.REMS (ty, x, y))  
822                                end                                end
823                              | _ => state_195 v_3                              | _ => state_185 v_3
824                              )                              )
825                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                            | T.LI v_17 => (if ((IntInf.compare (v_17, lit_16)) = EQUAL)
826                                 then                                 then
827                                 let val a = v_0                                 let val a = v_4
828                                     and ty = v_1                                     and m = v_1
829                                       and ty = v_0
830                                 in zeroT                                 in zeroT
831                                 end                                 end
832                                 else                                 else
833                                 (case v_0 of                                 (case v_4 of
834                                   T.LI v_10 =>                                   T.LI v_2 =>
835                                   let val ty = v_1                                   let val m = v_1
836                                       and x = v_10                                       and ty = v_0
837                                       and y = v_2                                       and x = v_2
838                                         and y = v_17
839                                   in (if (y <> zero)                                   in (if (y <> zero)
840                                         then (T.LI (I.REMS (ty, x, y)))                                         then (T.LI (I.REMS (dm m, ty, x, y)))
841                                         else (state_195 v_3))                                         else (state_185 v_3))
842                                   end                                   end
843                                 | _ => state_195 v_3                                 | _ => state_185 v_3
844                                 ))                                 ))
845                            | _ => state_195 v_3                            | _ => state_185 v_3
846                            )                            )
847                         end                         end
848                       | T.REMT v_5 =>                       | T.REMT v_5 =>
849                         let val (v_1, v_0, v_4) = v_5                         let val (v_1, v_0, v_4, v_18) = v_5
850                         in                         in
851                              (case v_18 of
852                                T.LABEXP v_17 =>
853                            (case v_4 of                            (case v_4 of
854                              T.LABEXP v_2 =>                              T.LABEXP v_2 =>
855                              (case v_0 of                                let val m = v_1
856                                T.LABEXP v_10 =>                                    and ty = v_0
857                                let val ty = v_1                                    and x = v_2
858                                    and x = v_10                                    and y = v_17
859                                    and y = v_2                                in T.LABEXP (T.REMT (m, ty, x, y))
                               in T.LABEXP (T.REMT (ty, x, y))  
860                                end                                end
861                              | _ => state_195 v_3                              | _ => state_185 v_3
862                              )                              )
863                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                            | T.LI v_17 => (if ((IntInf.compare (v_17, lit_16)) = EQUAL)
864                                 then                                 then
865                                 let val a = v_0                                 let val a = v_4
866                                     and ty = v_1                                     and m = v_1
867                                       and ty = v_0
868                                 in zeroT                                 in zeroT
869                                 end                                 end
870                                 else                                 else
871                                 (case v_0 of                                 (case v_4 of
872                                   T.LI v_10 =>                                   T.LI v_2 =>
873                                   let val ty = v_1                                   let val m = v_1
874                                       and x = v_10                                       and ty = v_0
875                                       and y = v_2                                       and x = v_2
876                                         and y = v_17
877                                   in (if (y <> zero)                                   in (if (y <> zero)
878                                         then (T.LI (I.REMT (ty, x, y)))                                         then (T.LI (I.REMT (dm m, ty, x, y)))
879                                         else (state_195 v_3))                                         else (state_185 v_3))
880                                   end                                   end
881                                 | _ => state_195 v_3                                 | _ => state_185 v_3
882                                 ))                                 ))
883                            | _ => state_195 v_3                            | _ => state_185 v_3
884                            )                            )
885                         end                         end
886                       | T.REMU v_5 =>                       | T.REMU v_5 =>
# Line 952  Line 895 
895                                    and y = v_2                                    and y = v_2
896                                in T.LABEXP (T.REMU (ty, x, y))                                in T.LABEXP (T.REMU (ty, x, y))
897                                end                                end
898                              | _ => state_195 v_3                              | _ => state_185 v_3
899                              )                              )
900                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_16)) = EQUAL)
901                                 then                                 then
# Line 968  Line 911 
911                                       and y = v_2                                       and y = v_2
912                                   in (if (y <> zero)                                   in (if (y <> zero)
913                                         then (T.LI (I.REMU (ty, x, y)))                                         then (T.LI (I.REMU (ty, x, y)))
914                                         else (state_195 v_3))                                         else (state_185 v_3))
915                                   end                                   end
916                                 | _ => state_195 v_3                                 | _ => state_185 v_3
917                                 ))                                 ))
918                            | _ => state_195 v_3                            | _ => state_185 v_3
919                            )                            )
920                         end                         end
921                       | T.SLL v_5 =>                       | T.SLL v_5 =>
# Line 987  Line 930 
930                                    and y = v_2                                    and y = v_2
931                                in T.LABEXP (T.SLL (ty, x, y))                                in T.LABEXP (T.SLL (ty, x, y))
932                                end                                end
933                              | T.LI v_10 => state_1111 (v_3, v_1, v_10)                              | T.LI v_10 => state_1051 (v_3, v_1, v_10)
934                              | _ => state_195 v_3                              | _ => state_185 v_3
935                              )                              )
936                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
937                                 then                                 then
# Line 999  Line 942 
942                                 else                                 else
943                                 (case v_0 of                                 (case v_0 of
944                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
945                                      then (state_172 v_1)                                      then (state_162 v_1)
946                                      else                                      else
947                                      let val n = v_2                                      let val n = v_2
948                                          and ty = v_1                                          and ty = v_1
949                                      in (if (IntInf.<= (IntInf.fromInt ty, n))                                      in (if (IntInf.<= (IntInf.fromInt ty, n))
950                                            then (state_173 ())                                            then (state_163 ())
951                                            else                                            else
952                                            let val ty = v_1                                            let val ty = v_1
953                                                and x = v_10                                                and x = v_10
# Line 1016  Line 959 
959                                   let val n = v_2                                   let val n = v_2
960                                       and ty = v_1                                       and ty = v_1
961                                   in (if (IntInf.<= (IntInf.fromInt ty, n))                                   in (if (IntInf.<= (IntInf.fromInt ty, n))
962                                         then (state_173 ())                                         then (state_163 ())
963                                         else (state_195 v_3))                                         else (state_185 v_3))
964                                   end                                   end
965                                 ))                                 ))
966                            | _ =>                            | _ =>
967                              (case v_0 of                              (case v_0 of
968                                T.LI v_10 => state_1111 (v_3, v_1, v_10)                                T.LI v_10 => state_1051 (v_3, v_1, v_10)
969                              | _ => state_195 v_3                              | _ => state_185 v_3
970                              )                              )
971                            )                            )
972                         end                         end
# Line 1039  Line 982 
982                                    and y = v_2                                    and y = v_2
983                                in T.LABEXP (T.SRA (ty, x, y))                                in T.LABEXP (T.SRA (ty, x, y))
984                                end                                end
985                              | T.LI v_10 => state_1294 (v_3, v_1, v_10)                              | T.LI v_10 => state_1226 (v_3, v_1, v_10)
986                              | _ => state_195 v_3                              | _ => state_185 v_3
987                              )                              )
988                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
989                                 then                                 then
# Line 1051  Line 994 
994                                 else                                 else
995                                 (case v_0 of                                 (case v_0 of
996                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
997                                      then (state_155 v_1)                                      then (state_145 v_1)
998                                      else                                      else
999                                      let val ty = v_1                                      let val ty = v_1
1000                                          and x = v_10                                          and x = v_10
1001                                          and y = v_2                                          and y = v_2
1002                                      in T.LI (I.SRA (ty, x, y))                                      in T.LI (I.SRA (ty, x, y))
1003                                      end)                                      end)
1004                                 | _ => state_195 v_3                                 | _ => state_185 v_3
1005                                 ))                                 ))
1006                            | _ =>                            | _ =>
1007                              (case v_0 of                              (case v_0 of
1008                                T.LI v_10 => state_1294 (v_3, v_1, v_10)                                T.LI v_10 => state_1226 (v_3, v_1, v_10)
1009                              | _ => state_195 v_3                              | _ => state_185 v_3
1010                              )                              )
1011                            )                            )
1012                         end                         end
# Line 1079  Line 1022 
1022                                    and y = v_2                                    and y = v_2
1023                                in T.LABEXP (T.SRL (ty, x, y))                                in T.LABEXP (T.SRL (ty, x, y))
1024                                end                                end
1025                              | T.LI v_10 => state_1387 (v_3, v_1, v_10)                              | T.LI v_10 => state_1315 (v_3, v_1, v_10)
1026                              | _ => state_195 v_3                              | _ => state_185 v_3
1027                              )                              )
1028                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
1029                                 then                                 then
# Line 1091  Line 1034 
1034                                 else                                 else
1035                                 (case v_0 of                                 (case v_0 of
1036                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
1037                                      then (state_163 v_1)                                      then (state_153 v_1)
1038                                      else                                      else
1039                                      let val n = v_2                                      let val n = v_2
1040                                          and ty = v_1                                          and ty = v_1
1041                                      in (if (IntInf.<= (IntInf.fromInt ty, n))                                      in (if (IntInf.<= (IntInf.fromInt ty, n))
1042                                            then (state_164 ())                                            then (state_154 ())
1043                                            else                                            else
1044                                            let val ty = v_1                                            let val ty = v_1
1045                                                and x = v_10                                                and x = v_10
# Line 1108  Line 1051 
1051                                   let val n = v_2                                   let val n = v_2
1052                                       and ty = v_1                                       and ty = v_1
1053                                   in (if (IntInf.<= (IntInf.fromInt ty, n))                                   in (if (IntInf.<= (IntInf.fromInt ty, n))
1054                                         then (state_164 ())                                         then (state_154 ())
1055                                         else (state_195 v_3))                                         else (state_185 v_3))
1056                                   end                                   end
1057                                 ))                                 ))
1058                            | _ =>                            | _ =>
1059                              (case v_0 of                              (case v_0 of
1060                                T.LI v_10 => state_1387 (v_3, v_1, v_10)                                T.LI v_10 => state_1315 (v_3, v_1, v_10)
1061                              | _ => state_195 v_3                              | _ => state_185 v_3
1062                              )                              )
1063                            )                            )
1064                         end                         end
# Line 1131  Line 1074 
1074                                    and y = v_2                                    and y = v_2
1075                                in T.LABEXP (T.SUB (ty, x, y))                                in T.LABEXP (T.SUB (ty, x, y))
1076                                end                                end
1077                              | T.LI v_2 => state_1570 (v_3, v_1, v_0, v_2)                              | T.LI v_2 => state_1490 (v_3, v_1, v_0, v_2)
1078                              | _ => state_195 v_3                              | _ => state_185 v_3
1079                              )                              )
1080                            | T.LI v_10 =>                            | T.LI v_10 =>
1081                              (case v_4 of                              (case v_4 of
# Line 1156  Line 1099 
1099                                               and ty' = v_6                                               and ty' = v_6
1100                                           in (if (ty = ty')                                           in (if (ty = ty')
1101                                                 then a                                                 then a
1102                                                 else (state_195 v_3))                                                 else (state_185 v_3))
1103                                           end                                           end
1104                                           else (state_195 v_3))                                           else (state_185 v_3))
1105                                      | _ => state_195 v_3                                      | _ => state_185 v_3
1106                                      )                                      )
1107                                      else (state_195 v_3))                                      else (state_185 v_3))
1108                                end                                end
1109                              | _ => state_195 v_3                              | _ => state_185 v_3
1110                              )                              )
1111                            | T.SUB v_10 =>                            | T.SUB v_10 =>
1112                              let val (v_7, v_9, v_13) = v_10                              let val (v_7, v_9, v_13) = v_10
# Line 1179  Line 1122 
1122                                         and y = v_2                                         and y = v_2
1123                                     in (if (ty = ty')                                     in (if (ty = ty')
1124                                           then (T.SUB (ty, a, T.LI (I.ADD (ty, x, y))))                                           then (T.SUB (ty, a, T.LI (I.ADD (ty, x, y))))
1125                                           else (state_1570 (v_3, v_1, v_0, v_2)))                                           else (state_1490 (v_3, v_1, v_0, v_2)))
1126                                     end                                     end
1127                                   | _ => state_195 v_3                                   | _ => state_185 v_3
1128                                   )                                   )
1129                                 | _ => state_1571 (v_3, v_1, v_0, v_4)                                 | _ => state_1491 (v_3, v_1, v_0, v_4)
1130                                 )                                 )
1131                              end                              end
1132                            | _ => state_1571 (v_3, v_1, v_0, v_4)                            | _ => state_1491 (v_3, v_1, v_0, v_4)
1133                            )                            )
1134                         end                         end
1135                       | T.SUBT v_5 =>                       | T.SUBT v_5 =>
# Line 1201  Line 1144 
1144                                    and y = v_2                                    and y = v_2
1145                                in T.LABEXP (T.SUBT (ty, x, y))                                in T.LABEXP (T.SUBT (ty, x, y))
1146                                end                                end
1147                              | _ => state_195 v_3                              | _ => state_185 v_3
1148                              )                              )
1149                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
1150                                 then                                 then
# Line 1215  Line 1158 
1158                                   let val ty = v_1                                   let val ty = v_1
1159                                       and x = v_10                                       and x = v_10
1160                                       and y = v_2                                       and y = v_2
1161                                   in (T.LI (I.SUBT (ty, x, y)))handle Overflow => exp                                   in ((T.LI (I.SUBT (ty, x, y))) handle Overflow => exp
1162    )
1163                                   end                                   end
1164                                 | _ => state_195 v_3                                 | _ => state_185 v_3
1165                                 ))                                 ))
1166                            | _ => state_195 v_3                            | _ => state_185 v_3
1167                            )                            )
1168                         end                         end
1169                       | T.SX v_5 =>                       | T.SX v_5 =>
# Line 1232  Line 1175 
1175                                  and ty = v_1                                  and ty = v_1
1176                                  and ty' = v_0                                  and ty' = v_0
1177                              in (if (ty = ty')                              in (if (ty = ty')
1178                                    then (state_180 e)                                    then (state_170 e)
1179                                    else                                    else
1180                                    let val ty = v_1                                    let val ty = v_1
1181                                        and ty' = v_0                                        and ty' = v_0
# Line 1245  Line 1188 
1188                                  and ty = v_1                                  and ty = v_1
1189                                  and ty' = v_0                                  and ty' = v_0
1190                              in (if (ty = ty')                              in (if (ty = ty')
1191                                    then (state_180 e)                                    then (state_170 e)
1192                                    else                                    else
1193                                    let val n = v_2                                    let val n = v_2
1194                                        and ty = v_1                                        and ty = v_1
# Line 1263  Line 1206 
1206                                  and ty = v_1                                  and ty = v_1
1207                                  and ty' = v_0                                  and ty' = v_0
1208                              in (if (ty = ty')                              in (if (ty = ty')
1209                                    then (state_180 e)                                    then (state_170 e)
1210                                    else (state_195 v_3))                                    else (state_185 v_3))
1211                              end                              end
1212                            )                            )
1213                         end                         end
# Line 1280  Line 1223 
1223                                    and y = v_2                                    and y = v_2
1224                                in T.LABEXP (T.XORB (ty, x, y))                                in T.LABEXP (T.XORB (ty, x, y))
1225                                end                                end
1226                              | T.LI v_10 => state_1855 (v_3, v_1, v_10, v_4)                              | T.LI v_10 => state_1763 (v_3, v_1, v_10, v_4)
1227                              | _ => state_195 v_3                              | _ => state_185 v_3
1228                              )                              )
1229                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)                            | T.LI v_2 => (if ((IntInf.compare (v_2, lit_11)) = EQUAL)
1230                                 then                                 then
# Line 1292  Line 1235 
1235                                 else                                 else
1236                                 (case v_0 of                                 (case v_0 of
1237                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)                                   T.LI v_10 => (if ((IntInf.compare (v_10, lit_11)) = EQUAL)
1238                                      then (state_133 (v_1, v_4))                                      then (state_123 (v_1, v_4))
1239                                      else                                      else
1240                                      let val ty = v_1                                      let val ty = v_1
1241                                          and x = v_10                                          and x = v_10
1242                                          and y = v_2                                          and y = v_2
1243                                      in T.LI (I.XORB (ty, x, y))                                      in T.LI (I.XORB (ty, x, y))
1244                                      end)                                      end)
1245                                 | _ => state_195 v_3                                 | _ => state_185 v_3
1246                                 ))                                 ))
1247                            | T.NOTB v_2 =>                            | T.NOTB v_2 =>
1248                              (case v_0 of                              (case v_0 of
1249                                T.LI v_10 => state_1855 (v_3, v_1, v_10, v_4)                                T.LI v_10 => state_1763 (v_3, v_1, v_10, v_4)
1250                              | T.NOTB v_10 =>                              | T.NOTB v_10 =>
1251                                let val (v_7, v_9) = v_10                                let val (v_7, v_9) = v_10
1252                                in                                in
# Line 1316  Line 1259 
1259                                          and ty'' = v_6                                          and ty'' = v_6
1260                                      in (if ((ty = ty') andalso (ty' = ty''))                                      in (if ((ty = ty') andalso (ty' = ty''))
1261                                            then (T.NOTB (ty, T.XORB (ty, a, b)))                                            then (T.NOTB (ty, T.XORB (ty, a, b)))
1262                                            else (state_195 v_3))                                            else (state_185 v_3))
1263                                      end                                      end
1264                                   end                                   end
1265                                end                                end
1266                              | _ => state_195 v_3                              | _ => state_185 v_3
1267                              )                              )
1268                            | _ =>                            | _ =>
1269                              (case v_0 of                              (case v_0 of
1270                                T.LI v_10 => state_1855 (v_3, v_1, v_10, v_4)                                T.LI v_10 => state_1763 (v_3, v_1, v_10, v_4)
1271                              | _ => state_195 v_3                              | _ => state_185 v_3
1272                              )                              )
1273                            )                            )
1274                         end                         end
# Line 1351  Line 1294 
1294                                        and ty' = v_0                                        and ty' = v_0
1295                                    in T.LI (I.ZX (ty, ty', n))                                    in T.LI (I.ZX (ty, ty', n))
1296                                    end                                    end
1297                                  | _ => state_195 v_3                                  | _ => state_185 v_3
1298                                  ))                                  ))
1299                            end                            end
1300                         end                         end
1301                       | _ => state_195 v_3                       | _ => state_185 v_3
1302                       )                       )
1303                    end                    end
1304             and simStm ==> (T.IF(T.TRUE, yes, no)) = yes             and simStm ==> (T.IF(T.TRUE, yes, no)) = yes
# Line 1363  Line 1306 
1306               | simStm ==> (T.SEQ[x]) = x               | simStm ==> (T.SEQ[x]) = x
1307               | simStm ==> s = s               | simStm ==> s = s
1308             and simF p_0 p_1 =             and simF p_0 p_1 =
1309                 let val v_10 = (p_0, p_1)                 let val v_29 = (p_0, p_1)
1310                     fun state_8 (v_0, v_1) =                     fun state_8 (v_19, v_20) =
1311                         let val ==> = v_0                         let val ==> = v_19
1312                             and exp = v_1                             and exp = v_20
1313                         in exp                         in exp
1314                         end                         end
1315                 in                 in
1316                    let val (v_0, v_1) = v_10                    let val (v_19, v_20) = v_29
1317                    in                    in
1318                       (case v_1 of                       (case v_20 of
1319                         T.CVTF2F v_7 =>                         T.CVTF2F v_26 =>
1320                         let val (v_3, v_6, v_8) = v_7                         let val (v_22, v_25, v_27) = v_26
1321                         in                         in
1322                            let val ==> = v_0                            let val ==> = v_19
1323                                and e = v_8                                and e = v_27
1324                                and ty = v_3                                and ty = v_22
1325                                and ty' = v_6                                and ty' = v_25
1326                            in (if (ty = ty')                            in (if (ty = ty')
1327                                  then e                                  then e
1328                                  else (state_8 (v_0, v_1)))                                  else (state_8 (v_19, v_20)))
1329                            end                            end
1330                         end                         end
1331                       | T.FCOND v_7 =>                       | T.FCOND v_26 =>
1332                         let val (v_3, v_6, v_8, v_9) = v_7                         let val (v_22, v_25, v_27, v_28) = v_26
1333                         in                         in
1334                            (case v_6 of                            (case v_25 of
1335                              T.FALSE =>                              T.FALSE =>
1336                              let val ==> = v_0                              let val ==> = v_19
1337                                  and no = v_9                                  and no = v_28
1338                                  and ty = v_3                                  and ty = v_22
1339                                  and yes = v_8                                  and yes = v_27
1340                              in no                              in no
1341                              end                              end
1342                            | T.TRUE =>                            | T.TRUE =>
1343                              let val ==> = v_0                              let val ==> = v_19
1344                                  and no = v_9                                  and no = v_28
1345                                  and ty = v_3                                  and ty = v_22
1346                                  and yes = v_8                                  and yes = v_27
1347                              in yes                              in yes
1348                              end                              end
1349                            | _ => state_8 (v_0, v_1)                            | _ => state_8 (v_19, v_20)
1350                            )                            )
1351                         end                         end
1352                       | T.FNEG v_7 =>                       | T.FNEG v_26 =>
1353                         let val (v_3, v_6) = v_7                         let val (v_22, v_25) = v_26
1354                         in                         in
1355                            (case v_6 of                            (case v_25 of
1356                              T.FNEG v_5 =>                              T.FNEG v_24 =>
1357                              let val (v_2, v_4) = v_5                              let val (v_21, v_23) = v_24
1358                              in                              in
1359                                 let val ==> = v_0                                 let val ==> = v_19
1360                                     and e = v_4                                     and e = v_23
1361                                     and ty = v_3                                     and ty = v_22
1362                                     and ty' = v_2                                     and ty' = v_21
1363                                 in (if (ty = ty')                                 in (if (ty = ty')
1364                                       then e                                       then e
1365                                       else (state_8 (v_0, v_1)))                                       else (state_8 (v_19, v_20)))
1366                                 end                                 end
1367                              end                              end
1368                            | _ => state_8 (v_0, v_1)                            | _ => state_8 (v_19, v_20)
1369                            )                            )
1370                         end                         end
1371                       | _ => state_8 (v_0, v_1)                       | _ => state_8 (v_19, v_20)
1372                       )                       )
1373                    end                    end
1374                 end                 end

Legend:
Removed from v.1180  
changed lines
  Added in v.1181

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