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

SCM Repository

[diderot] Diff of /branches/charisee_dev/src/compiler/low-il/ein-to-low.sml
ViewVC logotype

Diff of /branches/charisee_dev/src/compiler/low-il/ein-to-low.sml

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

revision 3654, Wed Feb 3 23:00:46 2016 UTC revision 3655, Thu Feb 4 04:12:40 2016 UTC
# Line 27  Line 27 
27      fun iter e=Iter.prodIter e      fun iter e=Iter.prodIter e
28      fun evalField e= EtoFld.evalField e      fun evalField e= EtoFld.evalField e
29      fun intToReal n=H.intToReal n      fun intToReal n=H.intToReal n
   
30      fun testp p=(String.concat p)      fun testp p=(String.concat p)
31        val sca=false
32    
33      (*dropIndex: a list-> int*a*alist      (*dropIndex: a list-> int*a*alist
34      * alpha::i->returns  length of list-1,i,alpha      * alpha::i->returns  length of list-1,i,alpha
# Line 77  Line 77 
77          val rtn= iter(opset,index,index,EtoSca.generalfn,info)          val rtn= iter(opset,index,index,EtoSca.generalfn,info)
78          val (_,_,code)=rtn          val (_,_,code)=rtn
79          val n= length(code)          val n= length(code)
80    
81          (*          (*
82          val _ =if (n>10) then print(String.concat["\n Gen(",Int.toString(n),")",P.printerE(e)]) else print""*)          val _ =if (n>10) then print(String.concat["\n Gen(",Int.toString(n),")",P.printerE(e)]) else print""*)
83          in rtn end          in rtn end
# Line 113  Line 114 
114                  val (lhs,e,args)=info                  val (lhs,e,args)=info
115                  val setT= lowSet.LowSet.empty                  val setT= lowSet.LowSet.empty
116                  val nextfnargs=(lhs,Ein.params e, args,vecIndex,id1,ix1,id2,ix2)                  val nextfnargs=(lhs,Ein.params e, args,vecIndex,id1,ix1,id2,ix2)
117                    (*val _ =print(String.concat["\nsubtraction:",P.printerE(e),String.concatWith","(List.map LowIL.Var.toString args)])*)
118                  in                  in
119                      iter(setT,index,index',EtoVec.subV,nextfnargs)                      iter(setT,index,index',EtoVec.subV,nextfnargs)
120                  end                  end
# Line 267  Line 269 
269          val info=(lhs,e,args)          val info=(lhs,e,args)
270          val all=(b,index,info)          val all=(b,index,info)
271    
272          fun gen body=(case (index,body)          fun gen body=(case ([3,4],body)
273              of (_::es,E.Op2(E.Sub,E.Tensor(_,i::ix),E.Tensor(_,j::jx)))              of (_::es,E.Op2(E.Sub,E.Tensor(_,i::ix),E.Tensor(_,j::jx)))
274                  => handleSub all                  => handleSub all
275    
276              |  (_::es, E.Opn(E.Add,(E.Tensor(_,i::ix)::_)))              |  (_::es, E.Opn(E.Add,(E.Tensor(_,i::ix)::_)))
277                  =>  handleAdd all                  =>  handleAdd all
278    
279              | (_::es,E.Op1(E.Neg,E.Tensor(_ ,i::ix)))              | (_::es,E.Op1(E.Neg,E.Tensor(_ ,i::ix)))
280                  => handleNeg all                  => handleNeg all
281    
282              | (_::es, E.Opn(E.Prod,[E.Tensor(s, []), E.Tensor(v, j::jx)]))              | (_::es, E.Opn(E.Prod,[E.Tensor(s, []), E.Tensor(v, j::jx)]))
283                  => handleScale(s,v,j::jx,index,info)                  => handleScale(s,v,j::jx,index,info)
284    
285              |  (_::es,E.Opn(E.Prod,[E.Tensor(v, j::jx), E.Tensor(s , [])]))              |  (_::es,E.Opn(E.Prod,[E.Tensor(v, j::jx), E.Tensor(s , [])]))
286                  => handleScale(s,v,j::jx,index,info)                  => handleScale(s,v,j::jx,index,info)
287    
288              |  (_::es,E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)]))              |  (_::es,E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)]))
289                  => handleProd all                  => handleProd all
290    
291              |  ( _,E.Sum([_], E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))              |  ( _,E.Sum([_], E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))
292                  =>  handleSumProd1 all                  =>  handleSumProd1 all
293              |  ( _ ,E.Sum([_,_],E.Opn( E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))              |  ( _ ,E.Sum([_,_],E.Opn( E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))
294                  => handleSumProd2 all                  => handleSumProd2 all
295    
296              | (_,_ )=> runGeneralCase info              | (_,_ )=> runGeneralCase info
297              (*end case*))              (*end case*))
298    
299    
300          fun scanSize body=(case (index,body)          fun scanSize body=(case (List.rev index,body)
301              of ([3,3],_) => runGeneralCase info              of (3::_,_) => runGeneralCase info
302              | ([3,3,3],_) => runGeneralCase info              |  ( _,E.Sum([(_,0,2)], E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))
303                =>  runGeneralCase info
304                |  ( _ ,E.Sum([(_,0,2),(_,0,2)],E.Opn( E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))
305                => runGeneralCase info
306    
307              | (_, E.Opn(E.Prod,E.Tensor(_,_::_::_)::_))=> runGeneralCase info              | (_, E.Opn(E.Prod,E.Tensor(_,_::_::_)::_))=> runGeneralCase info
308              | (_,E.Sum(_,E.Opn(E.Prod,(E.Tensor(_,_::_::_)::_))))=> runGeneralCase info              | (_,E.Sum(_,E.Opn(E.Prod,(E.Tensor(_,_::_::_)::_))))=> runGeneralCase info
309              | (_,E.Sum(_,E.Opn(E.Prod,(_::E.Tensor(_,_::_::_)::_))))=> runGeneralCase info              | (_,E.Sum(_,E.Opn(E.Prod,(_::E.Tensor(_,_::_::_)::_))))=> runGeneralCase info
310              |  (_,_ )=> gen b              |  (_,_ )=> gen b
311              (*end case*))              (*end case*))
312          in          in
313               gen b          if (sca) then ( "sca";runGeneralCase info) else ("vec:"; gen b)
314          end          end
315    
316  end (* local *)  end (* local *)

Legend:
Removed from v.3654  
changed lines
  Added in v.3655

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