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

SCM Repository

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

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

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

revision 4003, Mon Jun 20 11:53:13 2016 UTC revision 4004, Mon Jun 20 12:07:38 2016 UTC
# Line 245  Line 245 
245              (* end case *)              (* end case *)
246            end            end
247    
248      fun trDecl (env, ty, lhs, rhs) = let      fun trDecl (env, ty, lhs, rhs, stms) = let
249            fun trArgs args = CL.mkDecl(            fun trArgs args = CL.mkDecl(
250                  ty, lhs, SOME(CL.I_Exps(List.map (fn arg => CL.I_Exp(trExp (env, arg))) args)))                  ty, lhs, SOME(CL.I_Exps(List.map (fn arg => CL.I_Exp(trExp (env, arg))) args)))
251            in            in
252              case rhs              case rhs
253               of IR.E_Op(Op.VToInt _, [a]) => [ (* NOTE: reverse order! *)               of IR.E_Op(Op.VToInt _, [a]) => (* NOTE: reverse order! *)
254                      CL.mkCall ("vtoi", [CL.mkVar lhs, trExp(env, a)]),                    CL.mkCall ("vtoi", [CL.mkVar lhs, trExp(env, a)]) ::
255                      CL.mkDecl(ty, lhs, NONE)                    CL.mkDecl(ty, lhs, NONE) :: stms
                   ]  
256  (*  (*
257                | IR.E_Op(Op.TensorCopy shp, [a]) => [ (* NOTE: reverse order! *)                | IR.E_Op(Op.TensorCopy shp, [a]) => [ (* NOTE: reverse order! *)
258                      CL.mkCall (RN.tensorCopy shp, [CL.mkVar lhs, trExp(env, a)]),                      CL.mkCall (RN.tensorCopy shp, [CL.mkVar lhs, trExp(env, a)]),
259                      CL.mkDecl(ty, lhs, NONE)                      CL.mkDecl(ty, lhs, NONE)
260                    ]                    ]
261  *)  *)
262                | IR.E_Op(Op.TensorCopy shp, [a]) => [CL.mkDeclInit(ty, lhs, trExp(env, a))]                | IR.E_Op(Op.TensorCopy shp, [a]) => CL.mkDeclInit(ty, lhs, trExp(env, a)) :: stms
263                | IR.E_Cons(args, _) => [trArgs args]                | IR.E_Pack({wid, ...}, args) =>
264                | IR.E_Seq(args, _) => [trArgs args]                    CL.mkCall (RN.vpack wid, CL.mkVar lhs :: List.map (fn e => trExp(env, e)) args) ::
265                | _ => [CL.mkDeclInit(ty, lhs, trExp (env, rhs))]                    CL.mkDecl(ty, lhs, NONE) :: stms
266                  | IR.E_Cons(args, _) => trArgs args :: stms
267                  | IR.E_Seq(args, _) => trArgs args :: stms
268                  | _ => CL.mkDeclInit(ty, lhs, trExp (env, rhs)) :: stms
269              (* end case *)              (* end case *)
270            end            end
271    
# Line 300  Line 302 
302                        val x' = V.name x                        val x' = V.name x
303                        val env = Env.insert (env, x, x')                        val env = Env.insert (env, x, x')
304                        in                        in
305                          (env, trDecl (env, ty, x', exp) @ stms)                          (env, trDecl (env, ty, x', exp, stms))
306                        end                        end
307                    | IR.S_Assign(false, x, exp) =>                    | IR.S_Assign(false, x, exp) =>
308                        (env, trAssign (env, lvalueVar (env, x), exp, stms))                        (env, trAssign (env, lvalueVar (env, x), exp, stms))

Legend:
Removed from v.4003  
changed lines
  Added in v.4004

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