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

SCM Repository

[diderot] Diff of /branches/charisee_dev/src/compiler/high-to-mid/lift-ein.sml
ViewVC logotype

Diff of /branches/charisee_dev/src/compiler/high-to-mid/lift-ein.sml

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

revision 3343, Thu Oct 22 14:15:20 2015 UTC revision 3344, Fri Oct 23 04:38:49 2015 UTC
# Line 15  Line 15 
15    
16    
17      val numFlag=1   (*remove common subexpression*)      val numFlag=1   (*remove common subexpression*)
18      val testing=1      val testing=0
19    
20      fun mkEin e = E.mkEin e      fun mkEin e = E.mkEin e
21      val einappzero= DstIL.EINAPP(mkEin([],[],E.Const 0),[])      val einappzero= DstIL.EINAPP(mkEin([],[],E.Const 0),[])
# Line 44  Line 44 
44      *creates new param and replacement tensor for the original ein_exp      *creates new param and replacement tensor for the original ein_exp
45      *)      *)
46      fun lift(name,e,params,index,sx,args,fieldset,cntinplace,cntlift)=let      fun lift(name,e,params,index,sx,args,fieldset,cntinplace,cntlift)=let
47            val _ = "\n ****** start lift***********\n"
48          val (tshape,sizes,body)=cleanIndex(e,index,sx)          val (tshape,sizes,body)=cleanIndex(e,index,sx)
49          val id=length(params)          val id=length(params)
50          val Rparams=params@[E.TEN(1,sizes)]          val Rparams=params@[E.TEN(1,sizes)]
# Line 63  Line 64 
64              | _=>(args@[M],[einapp],fieldset,cntinplace,cntlift)              | _=>(args@[M],[einapp],fieldset,cntinplace,cntlift)
65              (*end case*))              (*end case*))
66          val _=(String.concat["\n in place",Int.toString(cntinplace'),"- l",Int.toString(cntlift')])          val _=(String.concat["\n in place",Int.toString(cntinplace'),"- l",Int.toString(cntlift')])
67                val _="\n *********end lift*********\n"
68          in          in
69              (Re,Rparams,Rargs,newbies,fieldset',cntinplace',cntlift')              (Re,Rparams,Rargs,newbies,fieldset',cntinplace',cntlift')
70          end          end
# Line 88  Line 90 
90              | E.PowInt  _       => (b,data)              | E.PowInt  _       => (b,data)
91              | E.PowReal  _      => (b,data)              | E.PowReal  _      => (b,data)
92              | E.ConstR  _       => (b,data)              | E.ConstR  _       => (b,data)
             | E.Sum (sx1,e1)=>  
                 (sx:=sx1@(!sx); let  
                     val (e1',data')=rewrite (e1,data)  
                     in  
                        ( E.Sum(sx1,e1'),data')  
                     end)  
93              | E.Neg e1          => let              | E.Neg e1          => let
94                  val (e1',data')=rewrite (e1,data)                  val (e1',data')=rewrite (e1,data)
95                  in                  in
# Line 137  Line 133 
133                  in                  in
134                      (body',data')                      (body',data')
135                  end                  end
136    | E.Sum(sx1,E.Probe _)=> let
137    val (params,args,code,fieldset,cntinplace,cntlift)=data
138    val (body',params',args',code',fieldset',cntinplace',cntlift')=lift("probe",b,params,index,(!sx)@sx1,args,fieldset,cntinplace,cntlift)
139    val _ =(P.printbody body')
140    val data'=(params',args',code@code',fieldset',cntinplace',cntlift')
141    in
142    (body',data')
143    end
144              | E.Sub(e1,e2)=> let              | E.Sub(e1,e2)=> let
145                  val (e1',data1')=rewrite (e1,data)                  val (e1',data1')=rewrite (e1,data)
146                  val (e2',data2')=rewrite (e2,data1')                  val (e2',data2')=rewrite (e2,data1')
# Line 162  Line 166 
166                          iter(rest@[e1'],es,data')                          iter(rest@[e1'],es,data')
167                      end                      end
168                  in iter([],es,data) end                  in iter([],es,data) end
169    | E.Sum (sx1,e1)=>
170    (sx:=sx1@(!sx); let
171    val (e1',data')=rewrite (e1,data)
172    in
173    ( E.Sum(sx1,e1'),data')
174    end)
175          (*end case*))          (*end case*))
176    
177          fun scan(E.Probe p ,data)=(E.Probe p ,data)          fun scan(E.Probe p ,data)=(E.Probe p ,data)
# Line 172  Line 182 
182          val (body',data')=scan(Ein.body ein0,data)          val (body',data')=scan(Ein.body ein0,data)
183          val (params',args',code',fieldset',cntinplace',cntlift')=data'          val (params',args',code',fieldset',cntinplace',cntlift')=data'
184          val k=(toStringBind (y,DstIL.EINAPP(Ein.EIN{params=params',index=index,body=body'},args')))          val k=(toStringBind (y,DstIL.EINAPP(Ein.EIN{params=params',index=index,body=body'},args')))
185          val _=print(String.concat["\n in place",Int.toString(cntinplace'),"- l",Int.toString(cntlift')])          val _=(String.concat["\n in place",Int.toString(cntinplace'),"- l",Int.toString(cntlift')])
186          val einapp= cleanParams(y,body',params',index,args')          val einapp= cleanParams(y,body',params',index,args')
187          in          in
188              [einapp]@code'              (einapp,code')
189          end          end
190    
191    
192      fun testLift e1=  let      fun testLift e1=  let
193          val e2=liftfields e1          val (einapp1,e2)=liftfields e1
194          val n=length(e2)          val n=length(e2)
195          val _ =(case n          val _ =(case n
196              of 1=>  1              of 1=>  1
197              | _ => testp["-- Returning :", Int.toString(length(e2))]              | _ => testp["-- Returning :", Int.toString(n)]
198          (*end case*))          (*end case*))
199    
200          in          in
201              List.rev (e2)              (einapp1,e2)
202    
203          end          end
204  end; (* local *)  end; (* local *)

Legend:
Removed from v.3343  
changed lines
  Added in v.3344

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