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/eval-img.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/mid-to-low/eval-img.sml

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

revision 3742, Mon Apr 11 04:53:02 2016 UTC revision 3743, Mon Apr 11 16:46:49 2016 UTC
# Line 3  Line 3 
3    
4      structure Op = LowOps      structure Op = LowOps
5      structure Ty = LowTypes      structure Ty = LowTypes
6      structure IL = LowIR      structure IR = LowIR
7      structure Var = LowIR.Var      structure Var = LowIR.Var
8      structure E = Ein      structure E = Ein
9      structure P = EinPP      structure P = EinPP
10      structure Mk = MkLowIR      structure Mk = MkLowIR
     structure Ty = LowTypes  
11      structure IMap = IntRedBlackMap      structure IMap = IntRedBlackMap
12    
13      in      in
14    
15      fun lookup k d = IMap.find (d, k)      fun lookup k d = IMap.find (d, k)
16      fun insert  (k, v) d =  IMap.insert (d, k, v)      fun insert  (k, v) d =  IMap.insert (d, k, v)
17      fun mkAddPtr (avail, args, ty) = Mk.assignOP (avail, Op.RAdd, args, "addPtr", ty)      fun assignOP (avail, opss, args, pre, ty) =  AvailRHS.addAssign( avail, pre, ty, IR.OP(opss, args))
18      fun mkProdInt (avail, args) = Mk.assignOP (avail, Op.RMul, args, "prodInt", Ty.intTy)      fun mkAddPtr (avail, args, ty) = assignOP (avail, Op.RAdd, args, "addPtr", ty)
19        fun mkProdInt (avail, args) = assignOP (avail, Op.RMul, args, "prodInt", Ty.intTy)
20      fun mkInt  (avail, n) =  Mk.intLit(avail, IntInf.fromInt n)      fun mkInt  (avail, n) =  Mk.intLit(avail, IntInf.fromInt n)
21    
22      (* mkImg:      (* mkImg:
# Line 32  Line 32 
32          val ptyTy = Ty.AddrTy v          val ptyTy = Ty.AddrTy v
33          val sizes = ImageInfo.sizes v          val sizes = ImageInfo.sizes v
34          (*base address*)          (*base address*)
35          val vBase = Mk.assignOP (avail, Op.baseAddr v, [imgarg], "baseAddr", ptyTy)          val vBase =assignOP (avail, Op.baseAddr v, [imgarg], "baseAddr", ptyTy)
36          (*shift of the image field.*)          (*shift of the image field.*)
37          val vShapeShift = mkInt (avail, foldl (fn (a, b) => b*a)  1 (ImageInfo.voxelShape v))          val vShapeShift = mkInt (avail, foldl (fn (a, b) => b*a)  1 (ImageInfo.voxelShape v))
   
38          (*Since the image is loaded as a vector          (*Since the image is loaded as a vector
39          * we evaluate the first position just once          * we evaluate the first position just once
40          * Σ_{ij..} V[T+i, T+j...]-> Σ_{j..} V[T+j...]          * Σ_{ij..} V[T+i, T+j...]-> Σ_{j..} V[T+j...]
# Line 117  Line 116 
116          *)          *)
117          fun createImgVar mapp = let          fun createImgVar mapp = let
118              (* transforms the probed position to low-il *)              (* transforms the probed position to low-il *)
119              val vA = mkpos (px, mapp, [])              val vAs = mkpos (px, mapp, [])
120              (* adds intial position to ^*)              (* adds intial position to ^*)
121              val posArgs = vPos0::vA              val posArgs = vPos0::vAs
122              (*img specific index*)              (*img specific index*)
123              val imgType = List.map (fn (e1) => Mk.lookupMu (mapp, e1))  v_alpha              val imgType = List.map (fn (e1) => Mk.lookupMu (mapp, e1))  v_alpha
124                 (* position address and img address *)
125                fun imgAddr e = getImgAddr (imgType, getPosAddr e)
126              val vImgAddr =(case border              val vImgAddr =(case border
127                  of E.None => getImgAddr (imgType, getPosAddr posArgs) (* position address and img address *)                  of E.None => imgAddr posArgs
128                  | _ =>                  | _ =>
129                      let                      let
130                          fun transformBord e = (case e                          fun transformBord e = (case e
# Line 132  Line 133 
133                              | E.Wrap => IndexCtl.Wrap                              | E.Wrap => IndexCtl.Wrap
134                              | E.Default => raise Fail "unsure transform of Default border")                              | E.Default => raise Fail "unsure transform of Default border")
135                           (* img var, offset img address, border *)                           (* img var, offset img address, border *)
136                          val op1 = Op.VoxelAddressWithCtl(v, indexImageShape imgType, transformBord border)                          val ictl = transformBord border
137                            fun controlIndex([], n) = []
138                              | controlIndex(e1::es, n) =
139                               assignOP(avail, Op.ControlIndex(v, ictl, n), [imgarg, e1], "cntrl"^Int.toString(n), Ty.realTy)::controlIndex(es, n+1)
140                            in imgAddr (controlIndex(posArgs, 0)) end
141                        (* to create  voxel address with control
142                        val op1 = Op.VoxelAddressWithCtl(v, indexImageShape imgType, ictl)
143                      in                      in
144                          Mk.assignOP(avail, op1,  imgarg::posArgs, "voxeladdresswithcontrol", ptyTy)                         assignOP(avail, op1,  imgarg::posArgs, "voxeladdresswithcontrol", ptyTy)
145                      end                      end*)
146                  (* end case *))                  (* end case *))
147              in              in
148                  Mk.assignOP(avail, Op.imgLoad(v, dim, range1), [vImgAddr], "imgrng", Ty.tensorTy [range1])                 assignOP(avail, Op.imgLoad(v, dim, range1), [vImgAddr], "imgrng", Ty.tensorTy [range1])
149              end              end
150    
151          val range0List = List.tabulate (range0+1, fn e =>e)          val range0List = List.tabulate (range0+1, fn e =>e)

Legend:
Removed from v.3742  
changed lines
  Added in v.3743

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