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

SCM Repository

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

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

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

revision 4235, Tue Jul 19 22:26:44 2016 UTC revision 4236, Wed Jul 20 03:02:00 2016 UTC
# Line 273  Line 273 
273          val index=Ein.index e          val index=Ein.index e
274          val info=(lhs,e,args)          val info=(lhs,e,args)
275          val all=(b,index,info)          val all=(b,index,info)
276          val _ =print(String.concat["\n\n*** ", lhs,"=", P.printerE(e), String.concatWith"," (List.map (fn e=> LowIL.Var.name(e))args )])          (* DEBUG val _ =print(String.concat["\n\n*** ", lhs,"=", P.printerE(e), String.concatWith"," (List.map (fn e=> LowIL.Var.name(e))args )]) *)
277          fun gen body=(case ([3,4],body)          fun gen body=(case ([3,4],body)
278              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)))
279                  => handleSub all                  => handleSub all
# Line 284  Line 284 
284              | (_::es,E.Op1(E.Neg,E.Tensor(_ ,i::ix)))              | (_::es,E.Op1(E.Neg,E.Tensor(_ ,i::ix)))
285                  => handleNeg all                  => handleNeg all
286    
287              | (_::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 as E.V _)::jx)]))
288                  => handleScale(s,v,j::jx,index,info)                  => handleScale(s,v,j::jx,index,info)
289    
290              |  (_::es,E.Opn(E.Prod,[E.Tensor(v, j::jx), E.Tensor(s , [])]))              |  (_::es,E.Opn(E.Prod,[E.Tensor(v,  (j as E.V _)::jx), E.Tensor(s , [])]))
291                  => handleScale(s,v,j::jx,index,info)                  => handleScale(s,v,j::jx,index,info)
292    
293              |  (_::es,E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)]))              |  (_::es,E.Opn(E.Prod,[E.Tensor(_ , (E.V _)::ix), E.Tensor(_, (E.V _)::jx)]))
294                  => handleProd all                  => handleProd all
295    
296    
297              |  ( _,E.Sum([_], E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))              |  ( _,E.Sum([_], E.Opn(E.Prod,[E.Tensor(_ , ( E.V _)::_), E.Tensor(_,  ( E.V _)::_)])))
298                  =>  handleSumProd1 all                  =>  handleSumProd1 all
299              |  ( _ ,E.Sum([_,_],E.Opn( E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))              |  ( _ ,E.Sum([_,_],E.Opn( E.Prod,[E.Tensor(_ , ( E.V _)::_), E.Tensor(_, ( E.V _)::_)])))
300                  => handleSumProd2 all                  => handleSumProd2 all
301    
302              | (_,_ )=> runGeneralCase info              | (_,_ )=> runGeneralCase info
# Line 305  Line 305 
305    
306          fun scanSize body=(case (List.rev index,body)          fun scanSize body=(case (List.rev index,body)
307              of (3::_,_) => runGeneralCase info              of (3::_,_) => runGeneralCase info
308              |  ( _,E.Sum([(_,0,2)], E.Opn(E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))              |  ( _,E.Sum([(_,0,2)], E.Opn(E.Prod,[E.Tensor(_ , (E.V _)::_), E.Tensor(_, (E.V _)::_)])))
309              =>  runGeneralCase info              =>  runGeneralCase info
310              |  ( _ ,E.Sum([(_,0,2),(_,0,2)],E.Opn( E.Prod,[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])))              |  ( _ ,E.Sum([(_,0,2),(_,0,2)],E.Opn( E.Prod,[E.Tensor(_ , (E.V _)::_), E.Tensor(_, (E.V _)::_)])))
311              => runGeneralCase info              => runGeneralCase info
312    
313              | (_, E.Opn(E.Prod,E.Tensor(_,_::_::_)::_))=> runGeneralCase info              | (_, E.Opn(E.Prod,E.Tensor(_,_::_::_)::_))=> runGeneralCase info

Legend:
Removed from v.4235  
changed lines
  Added in v.4236

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