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

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/mid-to-low/gen-ein.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/mid-to-low/gen-ein.sml

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

revision 2607, Thu May 1 17:36:16 2014 UTC revision 2608, Fri May 2 18:04:54 2014 UTC
# Line 80  Line 80 
80      fun getMapp _ = let      fun getMapp _ = let
81          val ref mappC=jx          val ref mappC=jx
82          in mappC end          in mappC end
   
83      fun gen body=(case body      fun gen body=(case body
84          of  E.Field _ =>raise Fail(concat["Invalid Field here "]   )          of  E.Field _ =>raise Fail(concat["Invalid Field here "]   )
85          | E.Partial _ =>raise Fail(concat["Invalid FieldPartial here "]   )          | E.Partial _ =>raise Fail(concat["Invalid FieldPartial here "]   )
# Line 166  Line 165 
165              end              end
166    
167          | E.Prod e => let          | E.Prod e => let
168    
169              (*checkO removes 1 from list, and returns 0  if there is one*)              (*checkO removes 1 from list, and returns 0  if there is one*)
170              fun checkO ([],[],[])=let              fun checkO ([],[],[])=let
171                      val (vA,A)=gHelper.aaV(DstOp.C 1,[],"Const",DstTy.TensorTy([]))                      val (vA,A)=gHelper.aaV(DstOp.C 1,[],"Const",DstTy.TensorTy([]))
# Line 327  Line 327 
327      val list1'=List.take(list1,n1)      val list1'=List.take(list1,n1)
328      val list2'=List.take(list2,n2)      val list2'=List.take(list2,n2)
329      val ns=length(sx)      val ns=length(sx)
330          val _ =print "In Handle Product"
331      in      in
332          if(ns=0)          if(ns=0)
333          then let          then let
# Line 351  Line 352 
352                      else prodIter(index,index,gHelper.mkprodSca,(orig,[],args))                      else prodIter(index,index,gHelper.mkprodSca,(orig,[],args))
353              (*end case*)) end              (*end case*)) end
354          else if (ns=1) then let          else if (ns=1) then let
355                    val _ =print "In one "
356                  val [(sx1,lb,ub)]=sx                  val [(sx1,lb,ub)]=sx
357    
358                  in                  in
359                      if(vi=vj andalso vi=sx1)                      if(vi=vj andalso vi=sx1)
360                      then                      then
361                          (prodIter(index,index,gHelper.mkprodSumVec,([(id1,list1'),(id2,list2')],[],ub,args))) (*v,v*)  (print "In Dot product";prodIter(index,index,gHelper.mkprodSumVec,([(id1,list1'),(id2,list2')],[],ub,args))) (*v,v*)
362                          else (  else (print "not in Dot Product";
363                                  prodIter(index,index,gHelper.sum,(orig,sx,args))) (*s,s *)                                  prodIter(index,index,gHelper.sum,(orig,sx,args))) (*s,s *)
364                  end                  end
365          else if (ns=2)          else if (ns=2)
# Line 430  Line 432 
432                  handleScVProd(body,(id2,id1,ix1),index,x, origargs, args)                  handleScVProd(body,(id2,id1,ix1),index,x, origargs, args)
433              end              end
434         | E.Prod[E.Tensor(id1, ix1), E.Tensor(id2, ix2)] =>         | E.Prod[E.Tensor(id1, ix1), E.Tensor(id2, ix2)] =>
435                if(length(index) =0) then
436              handleProd([(id1,ix1),(id2,ix2)],index,!sx,origargs, args)              handleProd([(id1,ix1),(id2,ix2)],index,!sx,origargs, args)
437                else prodIter(index,index,generalfn,(body,[],origargs, args))
438    
439    
440          | E.Sum(ss,E.Prod(E.Img(Vid,_,_)::E.Krn(id,del,pos)::es))=>let          | E.Sum(ss,E.Prod(E.Img(Vid,_,_)::E.Krn(id,del,pos)::es))=>let
441              val ref x=sx              val ref x=sx

Legend:
Removed from v.2607  
changed lines
  Added in v.2608

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