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

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

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

revision 2665, Tue Jun 3 02:37:46 2014 UTC revision 2680, Wed Aug 6 00:51:53 2014 UTC
# Line 24  Line 24 
24          | Op.addVec d               => ([vecTy d],[ILF.OP(Op.addVec d)])          | Op.addVec d               => ([vecTy d],[ILF.OP(Op.addVec d)])
25          | Op.subVec d               => ([vecTy d],[ILF.OP(Op.subVec d)])          | Op.subVec d               => ([vecTy d],[ILF.OP(Op.subVec d)])
26          | Op.prodVec d              => ([vecTy d],[ILF.OP(Op.prodVec d)])          | Op.prodVec d              => ([vecTy d],[ILF.OP(Op.prodVec d)])
27          | Op.prodScaV d             => ([vecTy d],[ILF.CONS(Ty.TensorTy[d]),ILF.OP(Op.prodScaV d)])          | Op.prodScaV d             => ([vecTy d],[ILF.CONSV d,ILF.OP(Op.prodScaV d)])
28          | Op.sumVec d               => ([Ty.unionTy d],   [ILF.OP(Op.sumVec d)])                      (*need different cons here*)
29            | Op.sumVec d               => (([Ty.unionTy d],   [ILF.OP(Op.sumVec d)]))
30            | Op.dotVec d               => ([Ty.vecTy d],   [ILF.OP(Op.dotVec d)]) (*check here*)
31            | Op.Floor d                => ([vecTy d],[ILF.OP(Op.Floor d)])
32            | Op.imgLoad(_,_,d)         => ([vecTy d],[ILF.CONS(vecTy d)])
33          | _ => default          | _ => default
34          (* end case *))          (* end case *))
35    
# Line 33  Line 37 
37    
38      (*fun peel(IL.E_Lit( offset))=offset*)      (*fun peel(IL.E_Lit( offset))=offset*)
39    
40      fun mkFnC(IL.E_LoadVec(fTy, oTy,_, offset))=[ILF.LD(fTy,oTy)]      fun mkFnC(IL.E_LoadVec(A,fTy, oTy,_, offset))=[ILF.LDVec(A,fTy,oTy)]
41        | mkFnC(IL.E_mkVec(_,oTy,pieces,_))= [ILF.MKVEC(oTy,pieces)]        | mkFnC(IL.E_LoadArr(A,fTy, oTy,_, offset))=[ILF.LDVec(A,fTy,oTy)]
42          | mkFnC(IL.E_mkVec(A,rTy,oTy,_,_,_))= [ILF.MKVEC(A,rTy,oTy)]
43          | mkFnC(IL.E_StoreVectoArr(_,A,rTy,oTy,_,Ty.vectorLength pieces,_))=
44                List.map (fn p => ILF.MKVEC(A,p,oTy)) pieces
45        | mkFnC(IL.E_StoreVectoVec(_,A,rTy,oTy,_,Ty.vectorLength pieces,_))=
46            List.map (fn p => ILF.MKVEC(A,p,oTy)) pieces
47    
48        | mkFnC(IL.E_Cons (ty , exps))= [ILF.CONS ty]        | mkFnC(IL.E_Cons (ty , exps))= [ILF.CONS ty]
49        | mkFnC(IL.E_LoadVecAligned (fTy, oTy,_, offset))=[ILF.LDAligned (fTy,oTy)]        | mkFnC e= []
50        | mkFnC(IL.E_mkVecAligned (_,oTy,pieces,_))= [ILF.MKVECAligned (oTy,pieces)]  
51    
52    
53      (*Get types of Exp*)      (*Get types of Exp*)
# Line 59  Line 69 
69              | IL.E_Lit _                => t              | IL.E_Lit _                => t
70              | IL.E_Apply (_, exps)      => add(default,exps)              | IL.E_Apply (_, exps)      => add(default,exps)
71              | IL.E_Cons (ty , exps)     => add(([ty],mkFnC exp),exps)              | IL.E_Cons (ty , exps)     => add(([ty],mkFnC exp),exps)
72              | IL.E_LoadVec(ty,_,exps,_) => add(([vecTy ty],mkFnC exp),[exps])              | IL.E_LoadVec(_,ty,_,exps,_) => add(([vecTy ty],mkFnC exp),[exps])
73              | IL.E_mkVec(_,ty,_,exps)   => add(([vecTy ty,Ty.unionTy ty],mkFnC exp), exps)              | IL.E_mkVec(_,_,ty,_,_,exps)   => add(([vecTy ty,Ty.unionTy ty],mkFnC exp), [exps])
74                | IL.E_StoreVectoArr(_,_,_,ty,_,_,exps)   => add(([vecTy ty,Ty.unionTy ty],mkFnC exp), exps)
75                | IL.E_StoreVectoVec(_,_,_,ty,_,_,exps)   => add(([vecTy ty,Ty.unionTy ty],mkFnC exp), exps)
76              | IL.E_Op(Op, exps)         => add(TypeofOp Op, exps)              | IL.E_Op(Op, exps)         => add(TypeofOp Op, exps)
77              (*end case*))              (*end case*))
78          end          end
# Line 91  Line 102 
102      fun getTypesFiltered(t,IL.S_Assign (_,exp))= let      fun getTypesFiltered(t,IL.S_Assign (_,exp))= let
103          val t2=typeOfExp(t,exp)          val t2=typeOfExp(t,exp)
104          val _=(case testing          val _=(case testing
105              of 1=> (print(String.concat["\n ---",IL.toString exp,prnTy(t2,"Current")]);1)              of _=> (print(String.concat["\n GetType-foundAssign ",IL.toString exp,prnTy(t2,"-")]);1)
106              | _=>1  
107              (*end case*))              (*end case*))
108    
109          in t2          in t2
110          end          end
111        | getTypesFiltered(t, _)= t  
112        | getTypesFiltered(t,IL.S_StoreVectoArr(x,a,b,c,d,e,f))=let
113            val exp=IL.E_StoreVectoArr(x,a,b,c,d,e,f)
114            val t2=typeOfExp(t,exp)
115            val _=(case testing
116                of _=> (print(String.concat["\n GetTypes-foundStore ",IL.toString exp,prnTy(t2,"-")]);1)
117    
118            (*end case*))
119            in t2
120            end
121        | getTypesFiltered(t, x)= (print(String.concat["\n duckie",IL.toStringS x]); t)
122    
123    
124    

Legend:
Removed from v.2665  
changed lines
  Added in v.2680

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