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

SCM Repository

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

Diff of /branches/ein16/src/compiler/high-il/normalize-ein.sml

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

branches/charisee_dev/src/compiler/high-il/normalize-ein.sml revision 3678, Mon Feb 15 19:36:00 2016 UTC branches/ein16/src/compiler/high-il/normalize-ein.sml revision 3687, Sun Feb 28 03:46:43 2016 UTC
# Line 117  Line 117 
117              let              let
118              val e2 = rewrite e1              val e2 = rewrite e1
119                  val (c,e3)=mkapply(E.Partial d1,e2)                  val (c,e3)=mkapply(E.Partial d1,e2)
120                  val _= testp["\nafter apply:",P.printbody body,"-->",P.printbody e3]                  (*val _= testp["\nafter apply:",P.printbody body,"-->",P.printbody e3]*)
121                  in                  in
122                      (case c of 1=>(changed:=true;e3)| _ =>e3 (*end case*))                      (case c of 1=>(changed:=true;e3)| _ =>e3 (*end case*))
123                  end                  end
# Line 133  Line 133 
133          | E.Sum(sx1,e1)                            => let          | E.Sum(sx1,e1)                            => let
134                  val e2=rewrite e1                  val e2=rewrite e1
135                  val (c,e')=mkSum(sx1,e2)                  val (c,e')=mkSum(sx1,e2)
136                  val _= testp["\nafter mksum:\n\t",P.printbody body,"\n\t-->",P.printbody e2,"\n\t-->",P.printbody e']  
137                  in                  in
138                  (case c of 0 => e'|_ => (changed:=true;e'))                  (case c of 0 => e'|_ => (changed:=true;e'))
139                  end                  end
# Line 158  Line 158 
158              |  _                        => setDiv(rewrite e1, rewrite e2)              |  _                        => setDiv(rewrite e1, rewrite e2)
159              (*end case*))              (*end case*))
160              (*************Algebraic Rewrites Opn **************)              (*************Algebraic Rewrites Opn **************)
 (*  
 | E.Opn(E.Add,[E.Sum([(E.V 4,0,2)],E.Opn(E.Prod,[E.Tensor(0,[E.V 4,E.V 0]), E.Tensor(1,[E.V 4,E.V 1])])),E.Opn(E.Prod,[E.Tensor(2,[]),  
 E.Sum([(E.V 8,0,2)],E.Opn(E.Prod,[E.Tensor(0,[E.V 8,E.V 0]), E.Tensor(4,[E.V 8,E.V 1])]))])]) => let  
 val a = E.Tensor(0,[E.V 2,E.V 0])  
 val b = E.Tensor(1,[E.V 2,E.V 1])  
 val c = E.Tensor(4,[E.V 2,E.V 1])  
 val s = E.Tensor(2,[])  
 val add = E.Opn(E.Add,[b,E.Opn(E.Prod,[s,c])])  
 val prod= E.Sum([(E.V 2,0,2)],E.Opn(E.Prod,[a,add]))  
 val _ =print(String.concat["\nMatched"])  
 in prod end  
 *)  
161          | E.Opn(E.Add,es)          => let          | E.Opn(E.Add,es)          => let
162              val (change,body')= mkAdd(List.map rewrite es)              val (change,body')= mkAdd(List.map rewrite es)
163              in if (change=1) then ( changed:=true;body') else body' end              in if (change=1) then ( changed:=true;body') else body' end
# Line 229  Line 217 
217              (*end case*))              (*end case*))
218          | E.Opn(E.Prod,E.G(E.Delta d)::es) => let          | E.Opn(E.Prod,E.G(E.Delta d)::es) => let
219              val (pre',eps, dels,post)= filterGreek(E.G(E.Delta d)::es)              val (pre',eps, dels,post)= filterGreek(E.G(E.Delta d)::es)
220              val _= testp["\n\n Reduce delta--",P.printbody(body)]  
221              val (change,a)=G.reduceDelta(eps, dels, post)              val (change,a)=G.reduceDelta(eps, dels, post)
222              val _= testp["\n\n ---delta moved--",P.printbody(a)]  
223              in (case (change,a)              in (case (change,a)
224                  of (0, _)=>  prod2(E.G(E.Delta d), List.hd(es) , List.tl(es))                  of (0, _)=>  prod2(E.G(E.Delta d), List.hd(es) , List.tl(es))
225                  | (_, E.Opn(E.Prod, p))=>let                  | (_, E.Opn(E.Prod, p))=>let
# Line 254  Line 242 
242  end  end
243    
244    
245      val _=testp["\n******** Start Normalize: \n",P.printerE ee,"\n*****\n"]  
246      fun loop(body ,count) = let      fun loop(body ,count) = let
247          val _= (concat["\n N =>",Int.toString(count)])          val _= (concat["\n N =>",Int.toString(count)])
248          val body' = rewrite body          val body' = rewrite body
# Line 266  Line 254 
254          end          end
255    
256      val (b,count) = loop(body,0)      val (b,count) = loop(body,0)
257      val _ =testp["\n Out of normalize \n",P.printbody(b),  
         "\n    Final CounterXX:",Int.toString(count),"\n\n"]  
258      in      in
259          (Ein.EIN{params=params, index=index, body=b},count)          (Ein.EIN{params=params, index=index, body=b},count)
260      end      end

Legend:
Removed from v.3678  
changed lines
  Added in v.3687

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