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

SCM Repository

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

Diff of /branches/charisee_dev/src/compiler/mid-to-low/ein-to-low-set.sml

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

revision 3356, Fri Oct 30 21:27:50 2015 UTC revision 3357, Fri Oct 30 21:28:30 2015 UTC
# Line 10  Line 10 
10  *           Creates Low-IL scalar operators  *           Creates Low-IL scalar operators
11  * Note. The Iter function creates LowIL.CONS and therefore binds the indices in the EIN.body  * Note. The Iter function creates LowIL.CONS and therefore binds the indices in the EIN.body
12  *)  *)
13  structure EinToLow = struct  structure EinToLowSet = struct
14      local      local
15    
16      structure Var = LowIL.Var      structure Var = LowIL.Var
17      structure E = Ein      structure E = Ein
18      structure P=Printer      structure P=Printer
19      structure Iter=IterSet      structure Iter=IterSet
20      structure EtoFld= FieldToLow      structure EtoFld= FieldToLowSet
21      structure EtoSca= ScaToLowSet      structure EtoSca= ScaToLowSet
22      structure EtoVec= VecToLow      structure EtoVec= VecToLowSet
23      structure H=HelperSet      structure H=HelperSet
24    
25      in      in
# Line 76  Line 76 
76          in          in
77              iter(opset,index,index,EtoSca.generalfn,info)              iter(opset,index,index,EtoSca.generalfn,info)
78          end          end
79  (*  
80    
81      (*handleNeg:.body* int list*info ->Var*LowIL.ASSN list      (*handleNeg:.body* int list*info ->Var*LowIL.ASSN list
82      * info:(string*E.EIN*Var list)      * info:(string*E.EIN*Var list)
# Line 251  Line 251 
251                      (*end case*))                      (*end case*))
252                  (*end case*))                  (*end case*))
253              end              end
254      *)  
255      (*scan:var*E.Ein*Var list * Var list-> Var*LowIL.Assgn list      (*scan:var*E.Ein*Var list * Var list-> Var*LowIL.Assgn list
256      *scans body  for vectorization potential      *scans body  for vectorization potential
257      *)      *)
# Line 263  Line 263 
263          val all=(b,index,info)          val all=(b,index,info)
264    
265          fun gen body=(case (index,body)          fun gen body=(case (index,body)
266              of (*(_::es,E.Sub(E.Tensor(_,i::ix),E.Tensor(_,j::jx)))           =>              of (_::es,E.Sub(E.Tensor(_,i::ix),E.Tensor(_,j::jx)))           =>
267                  handleSub all                  handleSub all
268              |  (_::es, E.Add(E.Tensor(_,i::ix)::_))                         =>              |  (_::es, E.Add(E.Tensor(_,i::ix)::_))                         =>
269                  handleAdd all                  handleAdd all
# Line 279  Line 279 
279                  handleSumProd1 all                  handleSumProd1 all
280              |  ( _ ,E.Sum([_,_], E.Prod[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])) =>              |  ( _ ,E.Sum([_,_], E.Prod[E.Tensor(_ , i::ix), E.Tensor(_, j::jx)])) =>
281                  handleSumProd2 all                  handleSumProd2 all
282              | *) (_,_ )=> runGeneralCase info              |  (_,_ )=> runGeneralCase info
283              (*end case*))              (*end case*))
284    
285    
# Line 294  Line 294 
294          val (_,_,code) =scanSize b          val (_,_,code) =scanSize b
295    
296    
297          in (case code          (*need to reassign the last assgn*)
             of(* []=> []  
             | *) _=> let (*need to reassign the last assgn*)  
298                  val LowIL.ASSGN (a1,A)=List.hd(List.rev(code))                  val LowIL.ASSGN (a1,A)=List.hd(List.rev(code))
299                  val c=LowIL.ASSGN (y,A)                  val c=LowIL.ASSGN (y,A)
300                  in                  in
301                      code@[c]                      code@[c]
302                  end                  end
             (*end case*))  
         end  
   
   
303    
304    
305  end (* local *)  end (* local *)

Legend:
Removed from v.3356  
changed lines
  Added in v.3357

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