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

SCM Repository

[diderot] Diff of /branches/vis12-cl/src/compiler/cl-target/tree-to-cl.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/cl-target/tree-to-cl.sml

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

revision 3158, Sat Mar 28 07:17:20 2015 UTC revision 3159, Sat Mar 28 09:40:50 2015 UTC
# Line 187  Line 187 
187              | (Op.ImageAddress info, [a]) => let              | (Op.ImageAddress info, [a]) => let
188                  val cTy = CL.T_Qual("__global", CL.T_Ptr(CL.T_Num(ImageInfo.sampleTy info)))                  val cTy = CL.T_Qual("__global", CL.T_Ptr(CL.T_Num(ImageInfo.sampleTy info)))
189                  in                  in
190                    CL.mkCast(cTy, CL.mkIndirect(a, "data"))                    CL.mkCast(cTy, CL.mkSelect(a, "data"))
191                  end                  end
192              | (Op.LoadVoxels(info, 1), [a]) => let              | (Op.LoadVoxels(info, 1), [a]) => let
193                  val realTy as CL.T_Num rTy = !N.gRealTy                  val realTy as CL.T_Num rTy = !N.gRealTy
# Line 318  Line 318 
318                   of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, rvalueVar(env, x)])]                   of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, rvalueVar(env, x)])]
319                    | _ => [CL.mkAssign(lhs, rvalueVar(env, x))]                    | _ => [CL.mkAssign(lhs, rvalueVar(env, x))]
320                  (* end case *))                  (* end case *))
321                | IL.E_Global x => (case IL.GlobalVar.ty x
322                     of Ty.TensorTy[n,m] => [CL.mkCall(N.copyMat(n,m), [lhs, rvalueGlobalVar (env, x)])]
323                      | Ty.ImageTy info => let
324                          fun mkLHS fld = CL.mkSelect(lhs, fld)
325                          fun mkLHS' (fld, i) = CL.mkSubscript(mkLHS fld, CL.mkInt i)
326                          val rhs = rvalueGlobalVar (env, x)
327                          fun mkRHS fld = CL.mkSelect(rhs, fld)
328                          fun mkRHS' (fld, i) = CL.mkSubscript(mkRHS fld, CL.mkInt i)
329                          val dataStm = CL.mkAssign(mkLHS "data", mkRHS "data")
330                          in
331                            case ImageInfo.dim info
332                             of 1 => [
333                                    CL.mkAssign(mkLHS' ("size", 0), mkRHS' ("size", 0)),
334                                    CL.mkAssign(mkLHS "s", mkRHS "s"),
335                                    CL.mkAssign(mkLHS "t", mkRHS "t"),
336                                    dataStm
337                                  ]
338                              | 2 => [
339                                    CL.mkAssign(mkLHS' ("size", 0), mkRHS' ("size", 0)),
340                                    CL.mkAssign(mkLHS' ("size", 1), mkRHS' ("size", 1)),
341                                    CL.mkAssign(mkLHS' ("w2i", 0), mkRHS' ("w2i", 0)),
342                                    CL.mkAssign(mkLHS' ("w2i", 1), mkRHS' ("w2i", 1)),
343                                    CL.mkAssign(mkLHS "tVec", mkRHS "tVec"),
344                                    CL.mkAssign(mkLHS' ("w2iT", 0), mkRHS' ("w2iT", 0)),
345                                    CL.mkAssign(mkLHS' ("w2iT", 1), mkRHS' ("w2iT", 1)),
346                                    dataStm
347                                  ]
348                              | 3 => [
349                                    CL.mkAssign(mkLHS' ("size", 0), mkRHS' ("size", 0)),
350                                    CL.mkAssign(mkLHS' ("size", 1), mkRHS' ("size", 1)),
351                                    CL.mkAssign(mkLHS' ("size", 2), mkRHS' ("size", 2)),
352                                    CL.mkAssign(mkLHS' ("w2i", 0), mkRHS' ("w2i", 0)),
353                                    CL.mkAssign(mkLHS' ("w2i", 1), mkRHS' ("w2i", 1)),
354                                    CL.mkAssign(mkLHS' ("w2i", 2), mkRHS' ("w2i", 2)),
355                                    CL.mkAssign(mkLHS "tVec", mkRHS "tVec"),
356                                    CL.mkAssign(mkLHS' ("w2iT", 0), mkRHS' ("w2iT", 0)),
357                                    CL.mkAssign(mkLHS' ("w2iT", 1), mkRHS' ("w2iT", 1)),
358                                    CL.mkAssign(mkLHS' ("w2iT", 2), mkRHS' ("w2iT", 2)),
359                                    dataStm
360                                  ]
361                              | _ => raise Fail "image with dimension > 3"
362                            (* end case *)
363                          end
364                      | _ => [CL.mkAssign(lhs, rvalueGlobalVar (env, x))]
365                    (* end case *))
366              | _ => [CL.mkAssign(lhs, trExp(env, rhs))]              | _ => [CL.mkAssign(lhs, trExp(env, rhs))]
367            (* end case *))            (* end case *))
368    

Legend:
Removed from v.3158  
changed lines
  Added in v.3159

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