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

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/tree-il/tree-to-opr.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/tree-il/tree-to-opr.sml

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

revision 2794, Tue Nov 4 20:04:14 2014 UTC revision 2795, Tue Nov 4 21:58:11 2014 UTC
# Line 17  Line 17 
17    
18      (*stmt-> sets(TySet, OprSet)*)      (*stmt-> sets(TySet, OprSet)*)
19      fun TypeofOp rator = (case rator      fun TypeofOp rator = (case rator
20          of  Op.ProjectTensor d         =>([],[Fnc.OP(Op.ProjectTensor d)])          of  (*Op.ProjectTensor d         =>([],[Fnc.OP(Op.ProjectTensor d)])
21          | Op.addVec d               => ([vecTy d],[Fnc.OP(Op.addVec d)])          | *)Op.addVec d               => ([vecTy d],[Fnc.OP rator])
22          | Op.subVec d               => ([vecTy d],[Fnc.OP(Op.subVec d)])          | Op.subVec d               => ([vecTy d],[Fnc.OP rator])
23          | Op.prodVec d              => ([vecTy d],[Fnc.OP(Op.prodVec d)])          | Op.prodVec d              => ([vecTy d],[Fnc.OP rator])
24          | Op.prodScaV d             => ([vecTy d],[Fnc.CONSV d,Fnc.OP(Op.prodScaV d)])          | Op.prodScaV d             => ([vecTy d],[Fnc.CONSV d,Fnc.OP(rator)])
25          | Op.dotVec d               => ([vecTy d],[Fnc.OP(Op.dotVec d)])          | Op.dotVec d               => ([vecTy d],[Fnc.OP rator])
26          | Op.Floor d                => ([vecTy d],[Fnc.OP(Op.Floor d)])          | Op.Floor d                => ([vecTy d],[Fnc.OP rator])
27          | Op.imgLoad(_,_,d)         => ([vecTy d],[Fnc.CONS(vecTy d)])          | Op.imgLoad(_,_,d)         => ([vecTy d],[Fnc.CONS(d)])
28          | Op.sumVec d               => (([Ty.unionTy d],[Fnc.OP(Op.sumVec d)]))          | Op.sumVec (nSize,oSize)   => (([Ty.unionTy nSize],[Fnc.OP rator]))
29          | _ => default          | _ => default
30          (* end case *))          (* end case *))
31      and getKind [x] =SOME(V.kind x)      and getKind [x] =SOME(V.kind x)
# Line 37  Line 37 
37          | IL.E_Lit _                    => set1          | IL.E_Lit _                    => set1
38          | IL.E_Mux (_,_,_,_,exps)                    => addToSet(set1,([],[]),exps)          | IL.E_Mux (_,_,_,_,exps)                    => addToSet(set1,([],[]),exps)
39          | IL.E_Apply (_, exps)          => addToSet(set1,default,exps)          | IL.E_Apply (_, exps)          => addToSet(set1,default,exps)
40          | IL.E_Cons (ty as Ty.TensorTy[n], _,exps)        => addToSet(set1,([ty], [Fnc.CONSV n]),exps)          | IL.E_Cons (n,_,exps)        => addToSet(set1,([vecTy n ], [Fnc.CONSV n]),exps)
41          | IL.E_Cons (ty as Ty.TensorTy[n,m], _,exps)      => addToSet(set1,([ty], [Fnc.CONSV n]),exps)          | IL.E_LoadArr(A,fTy,oTy,exp,_) => addToSet(set1,([vecTy fTy],[Fnc.LDArr(A,fTy,oTy)]),[exp])
         | IL.E_Cons (ty, _,exps)        => addToSet(set1,([ty], []),exps)  
         | IL.E_LoadArr(A,fTy,oTy,exp,_) => addToSet(set1,([vecTy fTy],[Fnc.LDArr(A,fTy,oTy,true)]),[exp])  
         | IL.E_LoadVec(A,fTy,oTy,exp,_) => addToSet(set1,([vecTy fTy],[Fnc.LDArr(A,fTy,oTy,false)]),[exp])  
42          | IL.E_Op(Op, exps)             => addToSet(set1,TypeofOp Op, exps)          | IL.E_Op(Op, exps)             => addToSet(set1,TypeofOp Op, exps)
43          | IL.E_Holder _                 => set1          | IL.E_Holder _                 => set1
44          (*end case*))          (*end case*))
# Line 54  Line 51 
51               List.foldr (fn(e1,e2) => expToOpr(e2,e1)) sets2 rest               List.foldr (fn(e1,e2) => expToOpr(e2,e1)) sets2 rest
52          end          end
53      and stmtToOpr(set1,stmt)=let      and stmtToOpr(set1,stmt)=let
 val _ =print(String.concat["\n inside tree_to_opr, stmt:",IL.toStringS stmt])  
54          in (case stmt          in (case stmt
55          of IL.S_Input (_,_,_, NONE)     => set1          of IL.S_Input (_,_,_, NONE)     => set1
56          | IL.S_Assign (v,exp)           => expToOpr(set1,exp)          | IL.S_Assign (v,exp)           => expToOpr(set1,exp)
# Line 70  Line 66 
66              in              in
67                  addToSet(set1, ([],fnc),[exp])                  addToSet(set1, ([],fnc),[exp])
68              end              end
69          | IL.S_StoreVec(_,A,nSize,oSize,Ty.vectorLength pieces,exps) => let          | IL.S_StoreVec(_,A,true,oSize,ty,Ty.vectorLength pieces,exps) => let
70    
71                val typ=[vecTy oSize,Ty.unionTy oSize]
72                val fnc=List.map (fn p => Fnc.STORE (A,oSize, p)) pieces
73                in
74                    addToSet(set1, (typ,fnc),exps)
75                end
76            | IL.S_StoreVec(_,A,_,oSize,ty,Ty.vectorLength pieces,exps) => let
77    
78              val typ=[vecTy oSize,Ty.unionTy oSize]              val typ=[vecTy oSize,Ty.unionTy oSize]
79              val fnc=List.map (fn p => Fnc.STORE (A,p,oSize)) pieces              val fnc=List.map (fn p => Fnc.STORE (A,p,p)) pieces
80              in              in
81                  addToSet(set1, (typ,fnc),exps)                  addToSet(set1, (typ,fnc),exps)
82              end              end
83          | IL.S_Cons(x,origTy,ty, exp)=>addToSet(set1,([],[Fnc.CONS origTy]),exp) (*calls array function*)          | IL.S_Cons(x,oSize, exp)=>addToSet(set1,([],[Fnc.CONS oSize]),exp) (*calls array function*)
84          | _                             => set1          | _                             => set1
85      (*end case*))      (*end case*))
86          end          end

Legend:
Removed from v.2794  
changed lines
  Added in v.2795

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