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 3950, Sat Jun 11 16:02:12 2016 UTC revision 3955, Sun Jun 12 15:55:01 2016 UTC
# Line 49  Line 49 
49              | Ty.IntTy => Env.intTy env              | Ty.IntTy => Env.intTy env
50              | (Ty.VecTy(1, 1)) => Env.realTy env              | (Ty.VecTy(1, 1)) => Env.realTy env
51              | (Ty.VecTy(d, _)) => CL.T_Named("vec" ^ Int.toString d)              | (Ty.VecTy(d, _)) => CL.T_Named("vec" ^ Int.toString d)
             | (Ty.TupleTy tys) => raise Fail "FIXME: TupleTy"  
52              | (Ty.TensorTy dd) => CL.T_Array(Env.realTy env, SOME(List.foldl Int.* 1 dd))              | (Ty.TensorTy dd) => CL.T_Array(Env.realTy env, SOME(List.foldl Int.* 1 dd))
53                | (Ty.TensorRefTy _) => CL.constPtrTy(Env.realTy env)
54                | (Ty.TupleTy tys) => raise Fail "FIXME: TupleTy"
55              | (Ty.SeqTy(t, NONE)) => CL.T_Template("diderot::dynseq", [trType(env, t)])              | (Ty.SeqTy(t, NONE)) => CL.T_Template("diderot::dynseq", [trType(env, t)])
56              | (Ty.SeqTy(t, SOME n)) => CL.T_Array(trType(env, t), SOME n)              | (Ty.SeqTy(t, SOME n)) => CL.T_Array(trType(env, t), SOME n)
57              | (Ty.ImageTy info) =>              | (Ty.ImageTy info) =>
# Line 235  Line 236 
236                  end                  end
237            (* end case *))            (* end case *))
238    
239    (* FIXME: trAssign and trDecl do the same analysis of the rhs; we should factor that out *)
240      fun trAssign (env, lhs, rhs) = let      fun trAssign (env, lhs, rhs) = let
241            fun trArg (i, arg) = CL.mkAssign(CL.mkSubscript(lhs, intExp i), trExp (env, arg))            fun trArg (i, arg) = CL.mkAssign(CL.mkSubscript(lhs, intExp i), trExp (env, arg))
242            in            in
243              case rhs              case rhs
244               of IR.E_Op(Op.VToInt _, [a]) => [CL.mkCall ("vtoi", [lhs, trExp(env, a)])]               of IR.E_Op(Op.VToInt _, [a]) => [CL.mkCall ("vtoi", [lhs, trExp(env, a)])]
245                | IR.E_Pack({wid, ...}, args) => [                | IR.E_Op(Op.TensorCopy shp, [a]) =>
246                      CL.mkCall (RN.vpack wid, lhs :: List.map (fn e => trExp(env, e)) args)                    [CL.mkCall (RN.tensorCopy shp, [lhs, trExp(env, a)])]
247                    ]                | IR.E_Pack({wid, ...}, args) =>
248                      [CL.mkCall (RN.vpack wid, lhs :: List.map (fn e => trExp(env, e)) args)]
249                | IR.E_Cons(args, _) => List.mapi trArg args                | IR.E_Cons(args, _) => List.mapi trArg args
250                | IR.E_Seq(args, _) => List.mapi trArg args                | IR.E_Seq(args, _) => List.mapi trArg args
251                | _ => [CL.mkAssign(lhs, trExp (env, rhs))]                | _ => [CL.mkAssign(lhs, trExp (env, rhs))]
# Line 258  Line 261 
261                      CL.mkCall ("vtoi", [CL.mkVar lhs, trExp(env, a)]),                      CL.mkCall ("vtoi", [CL.mkVar lhs, trExp(env, a)]),
262                      CL.mkDecl(ty, lhs, NONE)                      CL.mkDecl(ty, lhs, NONE)
263                    ]                    ]
264                  | IR.E_Op(Op.TensorCopy shp, [a]) => [ (* NOTE: reverse order! *)
265                        CL.mkCall (RN.tensorCopy shp, [CL.mkVar lhs, trExp(env, a)]),
266                        CL.mkDecl(ty, lhs, NONE)
267                      ]
268                | IR.E_Cons(args, _) => [trArgs args]                | IR.E_Cons(args, _) => [trArgs args]
269                | IR.E_Seq(args, _) => [trArgs args]                | IR.E_Seq(args, _) => [trArgs args]
270                | _ => [CL.mkDeclInit(ty, lhs, trExp (env, rhs))]                | _ => [CL.mkDeclInit(ty, lhs, trExp (env, rhs))]

Legend:
Removed from v.3950  
changed lines
  Added in v.3955

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