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

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/tree-il/low-to-tree-fn.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/tree-il/low-to-tree-fn.sml

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

revision 2827, Tue Nov 11 00:18:38 2014 UTC revision 2828, Wed Nov 12 06:30:58 2014 UTC
# Line 466  Line 466 
466    
467                       | (SrcOp.IndexTensor( _ ,Ty.indexTy indTy,argTy),a) => let                       | (SrcOp.IndexTensor( _ ,Ty.indexTy indTy,argTy),a) => let
468                          val (env, t) = doLHS()                          val (env, t) = doLHS()
469                            (*val _ =print(String.concat[ ("\n ***** New Op \n \t"^SrcOp.toString rator)])
470                            val _ =List.map (fn e=> print("\n Arg \t"^Dst.toString e)) a
471                                *)
472                          fun findLocal(c,i,indexAt,v::vs,a1::args)=let                          fun findLocal(c,i,indexAt,v::vs,a1::args)=let
473                                  val newsize=c+v                                  val newsize=c+v
474                                  val _=testp["\n Newize ",Int.toString newsize ," indexAt " ,Int.toString indexAt]                                  val _=print(String.concat["\n Newize ",Int.toString newsize ," indexAt " ,Int.toString indexAt])
475                              in if(newsize>i) then Dst.E_Op(DstOp.IndexTensor(true,indexAt,v), [a1])                              in if(newsize>i) then Dst.E_Op(DstOp.IndexTensor(true,indexAt,v), [a1])
476                                  else findLocal(newsize,i,indexAt-v,vs,args)                                  else findLocal(newsize,i,indexAt-v,vs,args)
477                              end                              end
# Line 478  Line 481 
481                               | ([i,j], Ty.TensorTy[argTyY,argTyX])  => DstOp.IndexTensor(false,argTyX* i+j,argTyX*argTyY)                               | ([i,j], Ty.TensorTy[argTyY,argTyX])  => DstOp.IndexTensor(false,argTyX* i+j,argTyX*argTyY)
482                               | _                                    => raise Fail"Unhandled Operation: Index higer-order tensor "                               | _                                    => raise Fail"Unhandled Operation: Index higer-order tensor "
483                          (*end case*))                          (*end case*))
484                          val exp=(case (DstV.kind t, indTy,a)                          val exp=(case (DstV.kind t, indTy,a,argTy)
485                              of (TreeIL.VK_Local,[i],[Dst.E_Mux(_,_,_,DstTy.vectorLength pieces,ops)]) => findLocal(0,i,i,pieces,ops)                              of (TreeIL.VK_Local,[i],[Dst.E_Mux(_,_,_,DstTy.vectorLength pieces,ops)],_) => findLocal(0,i,i,pieces,ops)
486                              | (_,_,[Dst.E_Mux _ ])=> raise Fail "Unhandled operation IndexTensor: Arg is a mux"                              | (TreeIL.VK_Local,[i],[a],Ty.TensorTy[j])=> Dst.E_Op(DstOp.IndexTensor(true,i,j), [a])
487                              | _     => Dst.E_Op(findGlobal (),a)                              | _     => Dst.E_Op(findGlobal (),a)
488                              (* end case *))                              (* end case *))
489                          in                          in
# Line 520  Line 523 
523                          end                          end
524    
525    
526                         | (SrcOp.addSca ,[a,Dst.E_Lit (Literal.Int 0)])=>assignExp (env,a)
527                         | (SrcOp.addSca ,[Dst.E_Lit (Literal.Int 0),a])=>assignExp (env,a)
528                         | (SrcOp.subSca ,[a,Dst.E_Lit (Literal.Int 0)])=>assignExp (env,a)
529                       | _                          => let                       | _                          => let
530                          val Trator = LowOpToTreeOp.expandOp rator                          val Trator = LowOpToTreeOp.expandOp rator
531                          val exp = Dst.E_Op(Trator, args')                          val exp = Dst.E_Op(Trator, args')

Legend:
Removed from v.2827  
changed lines
  Added in v.2828

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