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

SCM Repository

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

Diff of /branches/vis15/src/compiler/low-to-tree/low-to-tree.sml

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

revision 3849, Thu May 12 17:36:28 2016 UTC revision 3850, Thu May 12 18:05:47 2016 UTC
# Line 73  Line 73 
73        | cvtScalarTy (Ty.TensorTy[]) = TTy.realTy        | cvtScalarTy (Ty.TensorTy[]) = TTy.realTy
74        | cvtScalarTy ty = raise Fail(concat["cvtScalarTy(", Ty.toString ty, ")"])        | cvtScalarTy ty = raise Fail(concat["cvtScalarTy(", Ty.toString ty, ")"])
75    
76        fun singleArg env x = (case Env.useVar env x
77               of Env.TREE e => e
78                | Env.VEC(layout, es) => T.E_Pack(layout, es)
79              (* end case *))
80    
81      fun vectorArg (env, x) = (case Env.useVar env x      fun vectorArg (env, x) = (case Env.useVar env x
82             of Env.TREE e => (case IR.Var.ty x             of Env.TREE e => (case IR.Var.ty x
83                   of Ty.TensorTy[d] => let                   of Ty.TensorTy[d] => let
# Line 245  Line 250 
250                     of Env.TREE e => ??                     of Env.TREE e => ??
251                      | Env.VEC(layout, es) => ??                      | Env.VEC(layout, es) => ??
252                    (* end case *))                    (* end case *))
253                | IR.LIT lit => bindSimple (env, lhs, T.E_Lit lit)                | IR.LIT lit => bindSimple (T.E_Lit lit)
254                | IR.OP(rator, args) => trOp (env, lhs, rator, args)                | IR.OP(rator, args) => trOp (env, lhs, rator, args)
255                | IR.CONS(args, ty) => ??                | IR.CONS(args, ty) => ??
256                | IR.SEQ(args, ty) => ??                | IR.SEQ(args, ty) => ??
# Line 343  Line 348 
348                        fun doLHSVar (y, (env, ys)) = let                        fun doLHSVar (y, (env, ys)) = let
349                              val t = Util.newLocalVar y                              val t = Util.newLocalVar y
350                              in                              in
351                                (rename (Env.addLocal(env, t), y, t), t::ys)                                (rename (env, y, t), t::ys)
352                              end                              end
353                        val (env, ys) = List.foldr doLHSVar (env, []) ys                        val (env, ys) = List.foldr doLHSVar (env, []) ys
354                        val rator = (case rator                        val rator = (case rator
# Line 352  Line 357 
357                                      "unexepected operator ", Op.toString rator, " for MASSIGN"                                      "unexepected operator ", Op.toString rator, " for MASSIGN"
358                                    ])                                    ])
359                              (* end case *))                              (* end case *))
360                        val stm = T.S_MAssign(ys, T.E_Op(rator, List.map (Env.useVar env) xs))                        val stm = T.S_MAssign(ys, T.E_Op(rator, List.map (singleArg env) xs))
361                        in                        in
362                          doNode (env, !succ, ifStk, stm :: stms)                          doNode (env, !succ, ifStk, stm :: stms)
363                        end                        end
364                    | IR.GASSIGN{lhs, rhs, succ, ...} => let                    | IR.GASSIGN{lhs, rhs, succ, ...} => let
365                        val stm = (case useAsInput(env, rhs)                        val stm = (case useAsInput(env, rhs)
366                               of NONE => T.S_GAssign(mkGlobalVar lhs, Env.useVar env rhs)                               of NONE => T.S_GAssign(mkGlobalVar lhs, singleArg env rhs)
367                                | SOME mkStm => mkStm(mkGlobalVar lhs)                                | SOME mkStm => mkStm(mkGlobalVar lhs)
368                              (* end case *))                              (* end case *))
369                        in                        in
# Line 366  Line 371 
371                        end                        end
372                    | IR.NEW{strand, args, succ, ...} => raise Fail "NEW unimplemented"                    | IR.NEW{strand, args, succ, ...} => raise Fail "NEW unimplemented"
373                    | IR.SAVE{lhs, rhs, succ, ...} => let                    | IR.SAVE{lhs, rhs, succ, ...} => let
374                        val stm = T.S_Save([getStateVar lhs], Env.useVar env rhs)                        val stm = T.S_Save(getStateVar lhs, singleArg env rhs)
375                        in                        in
376                          doNode (env, !succ, ifStk, stm::stms)                          doNode (env, !succ, ifStk, stm::stms)
377                        end                        end

Legend:
Removed from v.3849  
changed lines
  Added in v.3850

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