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 2663, Fri May 30 18:02:41 2014 UTC revision 2664, Sun Jun 1 16:18:37 2014 UTC
# Line 23  Line 23 
23          | Op.addVec d               => (vecTy d,[ILF.OP(Op.addVec d)])          | Op.addVec d               => (vecTy d,[ILF.OP(Op.addVec d)])
24          | Op.subVec d               => (vecTy d,[ILF.OP(Op.subVec d)])          | Op.subVec d               => (vecTy d,[ILF.OP(Op.subVec d)])
25          | Op.prodVec d              => (vecTy d,[ILF.OP(Op.prodVec d)])          | Op.prodVec d              => (vecTy d,[ILF.OP(Op.prodVec d)])
26          | Op.prodScaV d             => (vecTy d,[ILF.REALTOVEC d,ILF.OP(Op.prodScaV d)])          | Op.prodScaV d             => (vecTy d,[ILF.CONS(Ty.TensorTy[d]),ILF.OP(Op.prodScaV d)])
27            | Op.sumVec d               => (NONE,   [ILF.OP(Op.sumVec d)])
28          | _ => default          | _ => default
29          (* end case *))          (* end case *))
30    
# Line 41  Line 42 
42      (*Get types of Exp*)      (*Get types of Exp*)
43      fun typeOfExp(t,exp)=let      fun typeOfExp(t,exp)=let
44          val (ty1,opr1)=t          val (ty1,opr1)=t
45          fun add((NONE,[]),rest)=List.foldr (fn(e1,e2) => typeOfExp(e2,e1)) t rest          fun add((NONE,cfn),rest)=let
46            | add((SOME typ,[]),rest)= let              val opr2=List.foldr (fn(e1,e2) =>OprSet.add(e2,e1)) opr1 cfn
47              val t2=(TySet.add(ty1,typ),opr1)              val t2=(ty1,opr2)
48              in              in
49                  List.foldr (fn(e1,e2) => typeOfExp(e2,e1)) t2 rest                  List.foldr (fn(e1,e2) => typeOfExp(e2,e1)) t2 rest
50              end              end
51    
52          | add((SOME typ,cfn),rest)= let          | add((SOME typ,cfn),rest)= let
53              val ty2=TySet.add(ty1,typ)              val ty2=TySet.add(ty1,typ)
54              val opr2=List.foldr (fn(e1,e2) =>OprSet.add(e2,e1)) opr1 cfn              val opr2=List.foldr (fn(e1,e2) =>OprSet.add(e2,e1)) opr1 cfn

Legend:
Removed from v.2663  
changed lines
  Added in v.2664

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