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 3167, Sun Mar 29 20:01:07 2015 UTC revision 3168, Sun Mar 29 20:46:53 2015 UTC
# Line 355  Line 355 
355        | trInitialization (InP.Int n) = ([], Dst.E_Lit(Literal.Int n))        | trInitialization (InP.Int n) = ([], Dst.E_Lit(Literal.Int n))
356        | trInitialization (InP.Real f) = ([], Dst.E_Lit(Literal.Float f))        | trInitialization (InP.Real f) = ([], Dst.E_Lit(Literal.Float f))
357        | trInitialization (InP.Bool b) = ([], Dst.E_Lit(Literal.Bool b))        | trInitialization (InP.Bool b) = ([], Dst.E_Lit(Literal.Bool b))
358          | trInitialization (InP.Tensor([d], vs)) = raise Fail "trInitialization: Tensor"
359  (*  (*
360        | trInitialization (InP.Tensor(shp, vs)) = let        | trInitialization (InP.Tensor(shp, vs)) = let
361            fun mk i = Dst.E_Lit(Literal.Float(Vector.sub(vs, i)))            fun mk i = Dst.E_Lit(Literal.Float(Vector.sub(vs, i)))
# Line 388  Line 389 
389     * order.     * order.
390     *)     *)
391      fun doAssign (env, (lhs, rhs)) = let      fun doAssign (env, (lhs, rhs)) = let
   
392            fun doLHS () = (case peekGlobal(env, lhs)            fun doLHS () = (case peekGlobal(env, lhs)
393              of SOME lhs' => (env, lhs')              of SOME lhs' => (env, lhs')
394              | NONE => let              | NONE => let
# Line 397  Line 397 
397                      (rename (addLocal(env, t), lhs, t), t)                      (rename (addLocal(env, t), lhs, t), t)
398                  end                  end
399              (* end case *))              (* end case *))
   
400          (* for expressions that are going to be compiled to a call statement *)          (* for expressions that are going to be compiled to a call statement *)
401            fun assignExp (env, exp) = let            fun assignExp (env, exp) = let
402                (* operations that return matrices may not be supported inline *)                (* operations that return matrices may not be supported inline *)
# Line 405  Line 404 
404                  in                  in
405                    (env, [Dst.S_Assign([t], exp)])                    (env, [Dst.S_Assign([t], exp)])
406                  end                  end
   
   
407          (* force an argument to be stored in something that will be mapped to an l-value *)          (* force an argument to be stored in something that will be mapped to an l-value *)
408            fun bindVar (env, x) = (case useVar env x            fun bindVar (env, x) = (case useVar env x
409                  of x' as Dst.E_State _  =>(env, x', [])                  of x' as Dst.E_State _  =>(env, x', [])
# Line 417  Line 414 
414                          (addLocal(env, x'), Dst.E_Var x', [Dst.S_Assign([x'], e)])                          (addLocal(env, x'), Dst.E_Var x', [Dst.S_Assign([x'], e)])
415                        end                        end
416                  (* end case *))                  (* end case *))
   
417          val _= LowToS.ASSIGNtoString(lhs,rhs)          val _= LowToS.ASSIGNtoString(lhs,rhs)
   
418          (* opToString:LowIL.Ops* LowIL.Var list-> int          (* opToString:LowIL.Ops* LowIL.Var list-> int
419          *Just used to print information about the op          *Just used to print information about the op
420          *)          *)
# Line 427  Line 422 
422                  val r=SrcOp.toString rator                  val r=SrcOp.toString rator
423                  val a= String.concatWith " , " (List.map (fn e=> Dst.toString e) arg)                  val a= String.concatWith " , " (List.map (fn e=> Dst.toString e) arg)
424                  in                  in
   
425                     testp[ "\n ***** New Op****  \n ",r,"\n Args(",a,")"]                     testp[ "\n ***** New Op****  \n ",r,"\n Args(",a,")"]
   
426                  end                  end
427            in            in
428              case rhs              case rhs
# Line 597  Line 590 
590                          in                          in
591                              (envv,stmts)                              (envv,stmts)
592                          end                          end
593                  in (case (rator,args')                  in case (rator,args')
594                       of (SrcOp.addVec n,_)                      =>  foundVec(rator,DstOp.addVec,n,[],args')                       of (SrcOp.addVec n,_)                      =>  foundVec(rator,DstOp.addVec,n,[],args')
595                       | (SrcOp.subVec n,_)                       =>  foundVec(rator,DstOp.subVec,n,[],args')                       | (SrcOp.subVec n,_)                       =>  foundVec(rator,DstOp.subVec,n,[],args')
596                       | (SrcOp.prodScaV n,e1::es)                =>  foundVec(rator,DstOp.prodScaV ,n, [e1], es)                       | (SrcOp.prodScaV n,e1::es)                =>  foundVec(rator,DstOp.prodScaV ,n, [e1], es)
# Line 618  Line 611 
611                              if isInlineOp rator then (bind (env, lhs, exp))                              if isInlineOp rator then (bind (env, lhs, exp))
612                              else (assignExp (env, exp))                              else (assignExp (env, exp))
613                          end                          end
614                      (*end case*))                      (*end case *)
615                   end                   end
616                | Src.APPLY(f, args) =>                | Src.APPLY(f, args) =>
617                    bind (env, lhs, Dst.E_Apply(f, List.map (useVar env) args))                    bind (env, lhs, Dst.E_Apply(f, List.map (useVar env) args))
# Line 633  Line 626 
626                      *)                      *)
627                      val args'=List.map (useVar env) args                      val args'=List.map (useVar env) args
628                      val (env2, t) = doLHS()                      val (env2, t) = doLHS()
629                      in (case DstV.kind t                      in case DstV.kind t
630                          of TreeIL.VK_Local=> let                          of TreeIL.VK_Local=> let
631                              val (isFill,nSize,Pieces)=Target.getVecTy oSize                              val (isFill,nSize,Pieces)=Target.getVecTy oSize
632                              val exp = LowOpToTreeOp.consVecToTree(nSize,oSize,Pieces,args',isFill)                              val exp = LowOpToTreeOp.consVecToTree(nSize,oSize,Pieces,args',isFill)
# Line 642  Line 635 
635                                  bind (env2, lhs, exp)                                  bind (env2, lhs, exp)
636                              end                              end
637                          | _ =>(env2,[Dst.S_Cons(t,oSize,args')])                          | _ =>(env2,[Dst.S_Cons(t,oSize,args')])
638                          (*end case*))                          (*end case*)
639                      end                      end
640                  (*| Src.CONS(ty as Ty.TensorTy [_,2], args)=>let                  (*| Src.CONS(ty as Ty.TensorTy [_,2], args)=>let
641                      val args'=List.map (useVar env) args                      val args'=List.map (useVar env) args

Legend:
Removed from v.3167  
changed lines
  Added in v.3168

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