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 3194, Wed May 13 02:57:42 2015 UTC revision 3195, Wed May 20 21:02:12 2015 UTC
# Line 558  Line 558 
558                      * The kind of variable decides if there is cast in the c-code                      * The kind of variable decides if there is cast in the c-code
559                      *)                      *)
560                      val a'=(useVar env a)                      val a'=(useVar env a)
561                      val exp=(case ((SrcOp.IndexTensor e),a') of                      val exp=(case ((SrcOp.IndexTensor e),a')
562                          (SrcOp.IndexTensor(_ ,Ty.indexTy [i],_),Dst.E_Mux(_,_,_,DstTy.vectorLength pieces,ops))=> let                          of (SrcOp.IndexTensor(_ ,Ty.indexTy [i],_),Dst.E_Mux(_,_,_,DstTy.vectorLength pieces,ops))=>
563                                let
564                              fun findLocal(c,i,indexAt,v::vs,a1::args)=let                              fun findLocal(c,i,indexAt,v::vs,a1::args)=let
565                                  val newsize=c+v                                  val newsize=c+v
566                                  in if(newsize>i) then Dst.E_Op(DstOp.IndexTensor(true,Ty.indexTy [indexAt],Ty.TensorTy [v]), [a1])                                      in
567                                            if(newsize>i)
568                                            then Dst.E_Op(DstOp.IndexTensor(true,Ty.indexTy [indexAt],Ty.TensorTy [v]), [a1])
569                                      else findLocal(newsize,i,indexAt-v,vs,args)                                      else findLocal(newsize,i,indexAt-v,vs,args)
570                                  end                                  end
571                              val exp =findLocal(0,i,i,pieces,ops)                              val exp =findLocal(0,i,i,pieces,ops)
# Line 574  Line 577 
577                              | _ =>Dst.E_Op(DstOp.IndexTensor(false ,indTy,argTy),[a'])                              | _ =>Dst.E_Op(DstOp.IndexTensor(false ,indTy,argTy),[a'])
578                              (*end case*))                              (*end case*))
579                      | (SrcOp.IndexTensor( _ , indTy,argTy),_) => Dst.E_Op(DstOp.IndexTensor(true ,indTy,argTy),[a'])                      | (SrcOp.IndexTensor( _ , indTy,argTy),_) => Dst.E_Op(DstOp.IndexTensor(true ,indTy,argTy),[a'])
   
580                      (*end case*))                      (*end case*))
581                      in                      in
582                          bind (env, lhs, exp)                          bind (env, lhs, exp)
583                      end                      end
            (*     | Src.OP(SrcOp.Subscript(E.SeqTy(E.TensorTy[3],3)),args)=> let  
              *)  
584                  | Src.OP(rator,args) => let                  | Src.OP(rator,args) => let
585                      val args'=List.map (useVar env) args                      val args'=List.map (useVar env) args
586                       val _ =testp[ "\n ***** New Op \n \t\t",SrcV.name lhs,"-",SrcOp.toString rator,Int.toString(length(args))                       val _ =testp[ "\n ***** New Op \n \t\t",SrcV.name lhs,"-",SrcOp.toString rator,Int.toString(length(args))
# Line 608  Line 608 
608                       | (SrcOp.prodVec n,_)                      =>  foundVec(rator,DstOp.prodVec,n,[],args')                       | (SrcOp.prodVec n,_)                      =>  foundVec(rator,DstOp.prodVec,n,[],args')
609                       | (SrcOp.sumVec n ,_)                      =>  foundVec(rator,DstOp.addVec ,n,[],args')                       | (SrcOp.sumVec n ,_)                      =>  foundVec(rator,DstOp.addVec ,n,[],args')
610                       | (SrcOp.Floor n ,_)                       =>  foundVec(rator,DstOp.Floor ,n,[],args')                       | (SrcOp.Floor n ,_)                       =>  foundVec(rator,DstOp.Floor ,n,[],args')
611                       | (SrcOp.ProjectTensor(_,n,_,_),_)         =>  foundVec(rator,DstOp.addVec ,n,[],args')                       | (SrcOp.ProjectLast(_,n,_,_),_)            =>  foundVec(rator,DstOp.addVec ,n,[],args')
612                         | (SrcOp.ProjectFirst(_,n,_,_),_)            =>  foundVec(rator,DstOp.addVec ,n,[],args')
613                       | (SrcOp.Clamp (Ty.TensorTy[n]) ,_)        =>  foundVec(rator,DstOp.clampVec ,n,[],args')                       | (SrcOp.Clamp (Ty.TensorTy[n]) ,_)        =>  foundVec(rator,DstOp.clampVec ,n,[],args')
614                       | (SrcOp.Lerp (Ty.TensorTy[n]) ,[a,b,c])   =>  foundVec(rator,DstOp.lerpVec ,n,[c],[a,b])                       | (SrcOp.Lerp (Ty.TensorTy[n]) ,[a,b,c])   =>  foundVec(rator,DstOp.lerpVec ,n,[c],[a,b])
615                       | (SrcOp.Normalize n,_)                    =>  foundVec(rator,DstOp.Normalize ,n,[],args')                       | (SrcOp.Normalize n,_)                    =>  foundVec(rator,DstOp.Normalize ,n,[],args')
# Line 660  Line 661 
661                      * when it is a local or other then we use S_Store                      * when it is a local or other then we use S_Store
662                      *)                      *)
663                      val args' =  List.map (useVar env) args                      val args' =  List.map (useVar env) args
664                      val _ =print(String.concat["\n\n ******************************\n CONS_Matrix  \n  With Args", Dst.toStrings args'])                      val _ = (String.concat["\n\n ******************************\n CONS_Matrix  \n  With Args", Dst.toStrings args'])
665                      val (env2, t) = doLHS()                      val (env2, t) = doLHS()
666    
667    
# Line 684  Line 685 
685                              [t]@f(es,count+j)                              [t]@f(es,count+j)
686                          end                          end
687                      val stmts=f (args',0)                      val stmts=f (args',0)
688                      val _ =print(String.concat["\n returning statements \n",Dst.toStringSs stmts,"\n  end ******************************\n"])                      val _ = (String.concat["\n returning statements \n",Dst.toStringSs stmts,
689                                "\n  end ******************************\n"])
690                      in                      in
691                          (env2, List.rev stmts)                          (env2, List.rev stmts)
692                      end                      end

Legend:
Removed from v.3194  
changed lines
  Added in v.3195

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