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

SCM Repository

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

Diff of /branches/vis15/src/compiler/mid-to-low/load-voxels.sml

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

revision 3799, Mon May 2 22:04:19 2016 UTC revision 3800, Mon May 2 23:14:26 2016 UTC
# Line 11  Line 11 
11    
12  structure LoadVoxels : sig  structure LoadVoxels : sig
13    
14      (* expand the assignment
15       *
16       *    lhs = LoadVoxels<info,s>(img, idx)
17       *
18       * into Low IR code.
19       *)
20      val expand : {      val expand : {
21              lhs : LowIR.var,              lhs : LowIR.var,
22              info : ImageInfo.info,              info : ImageInfo.info,
# Line 19  Line 25 
25              idx : LowIR.var              idx : LowIR.var
26            } -> LowIR.assign list            } -> LowIR.assign list
27    
28      (* expand the assignment
29       *
30       *    lhs = LoadVoxelsWithCtl<info,s,ctl>(img, idx)
31       *
32       * into Low IR code.
33       *)
34      val expandWithCtl : {      val expandWithCtl : {
35              lhs : LowIR.var,              lhs : LowIR.var,
36              info : ImageInfo.info,              info : ImageInfo.info,
# Line 46  Line 58 
58      fun iadd (avail, a, b) = iadd' (avail, "addRes", a, b)      fun iadd (avail, a, b) = iadd' (avail, "addRes", a, b)
59      fun ilit (avail, n) = ilit' (avail, "ilit", n)      fun ilit (avail, n) = ilit' (avail, "ilit", n)
60    
61    (* load the indices into individual variables *)    (* load the indices into individual variables; return the number of indices and
62       * the list of variables.
63       *)
64      fun loadIndices (avail, idx) = (case V.ty idx      fun loadIndices (avail, idx) = (case V.ty idx
65             of Ty.IntTy => [idx]             of Ty.IntTy => (1, [idx])
66              | ty as Ty.SeqTy(Ty.IntTy, SOME n) => let              | ty as Ty.SeqTy(Ty.IntTy, SOME n) => let
67                  fun loadIdx i =                  fun loadIdx i =
68                        assignOp (avail, "idx", Ty.IntTy, Op.Subscript ty, [idx, ilit (avail, i)])                        assignOp (avail, "idx", Ty.IntTy, Op.Subscript ty, [idx, ilit (avail, i)])
69                  in                  in
70                    List.tabulate (n, loadIdx)                    (n, List.tabulate (n, loadIdx))
71                  end                  end
72              | ty => raise Fail(concat["loadIndices: bogus type " ^ Ty.toString ty])              | ty => raise Fail(concat["loadIndices: bogus type " ^ Ty.toString ty])
73            (* end case *))            (* end case *))
# Line 152  Line 166 
166    
167      fun expand {lhs, info, s, img, idx} = let      fun expand {lhs, info, s, img, idx} = let
168            val avail = AvailRHS.new ()            val avail = AvailRHS.new ()
169            val idxs = loadIndices (avail, idx)            val (dim, idxs) = loadIndices (avail, idx)
170            in            in
171              List.rev (AvailRHS.getAssignments avail)              List.rev (AvailRHS.getAssignments avail)
172            end            end
173    
174      fun expandWithCtl {lhs, info, s, ctl, img, idx} = let      fun expandWithCtl {lhs, info, s, ctl, img, idx} = let
175            val avail = AvailRHS.new ()            val avail = AvailRHS.new ()
176            val idxs = loadIndices (avail, idx)            val (dim, idxs) = loadIndices (avail, idx)
177            in            in
178              List.rev (AvailRHS.getAssignments avail)              List.rev (AvailRHS.getAssignments avail)
179            end            end

Legend:
Removed from v.3799  
changed lines
  Added in v.3800

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