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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/high-opt/normalize-ein.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/high-opt/normalize-ein.sml

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

revision 3519, Sat Dec 19 04:46:58 2015 UTC revision 3520, Sat Dec 19 15:49:06 2015 UTC
# Line 31  Line 31 
31              | E.Const _         => SOME b              | E.Const _         => SOME b
32              | E.ConstR _        => SOME b              | E.ConstR _        => SOME b
33  (* QUESTION: what if filterSca returns false for its first result? *)  (* QUESTION: what if filterSca returns false for its first result? *)
34              | E.Opn(E.Prod, es) => SOME(#2 (Filter.filterSca (sx1, es)))              | E.Opn(E.Prod, es) => SOME(#2 (EinFilter.filterSca (sx1, es)))
35              | _                 => NONE              | _                 => NONE
36            (* end case *))            (* end case *))
37    
# Line 64  Line 64 
64    (* rewrite body of EIN *)    (* rewrite body of EIN *)
65      fun transform (Ein.EIN{params, index, body}) = let      fun transform (Ein.EIN{params, index, body}) = let
66            val changed = ref false            val changed = ref false
67            fun filterProd args = (case Filter.mkProd args            fun filterProd args = (case EinFilter.mkProd args
68                   of SOME e => (changed := true; e)                   of SOME e => (changed := true; e)
69                    | NONE => mkProd args                    | NONE => mkProd args
70                  (* end case *))                  (* end case *))
# Line 126  Line 126 
126                    | E.Op2(op1, e1, e2)            => E.Op2(op1, rewrite e1, rewrite e2)                    | E.Op2(op1, e1, e2)            => E.Op2(op1, rewrite e1, rewrite e2)
127                  (************* Algebraic Rewrites Opn **************)                  (************* Algebraic Rewrites Opn **************)
128                    | E.Opn(E.Add, es)              => (                    | E.Opn(E.Add, es)              => (
129                        case Filter.mkAdd (List.map rewrite es)                        case EinFilter.mkAdd (List.map rewrite es)
130                         of SOME body' => (changed := true; body')                         of SOME body' => (changed := true; body')
131                          | NONE => body                          | NONE => body
132                        (* end case *))                        (* end case *))
# Line 193  Line 193 
193                         of [E.Op1(E.Neg, e1)] => (                         of [E.Op1(E.Neg, e1)] => (
194                              changed:=true; E.Op1(E.Neg, mkProd[E.Delta d, e1]))                              changed:=true; E.Op1(E.Neg, mkProd[E.Delta d, e1]))
195                          | _ => let                          | _ => let
196                              val (pre', eps, dels, post) = Filter.partitionGreek(E.Delta d::es)                              val (pre', eps, dels, post) = EinFilter.partitionGreek(E.Delta d::es)
197                              in                              in
198                                case EpsUtil.reduceDelta(eps, dels, post)                                case EpsUtil.reduceDelta(eps, dels, post)
199                                 of (false, _) => mkProd [E.Delta d, rewrite(mkProd es)]                                 of (false, _) => mkProd [E.Delta d, rewrite(mkProd es)]

Legend:
Removed from v.3519  
changed lines
  Added in v.3520

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