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

SCM Repository

[diderot] Annotation of /branches/charisee/src/compiler/high-to-mid/testcases.sml
ViewVC logotype

Annotation of /branches/charisee/src/compiler/high-to-mid/testcases.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3260 - (view) (download)

1 : cchiw 2838 (* Currently under construction
2 :     *
3 :     * COPYRIGHT (c) 2012 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     * All rights reserved.
5 :     *)
6 :    
7 :    
8 :    
9 :    
10 : cchiw 2845 structure splittestcases = struct
11 : cchiw 2838
12 :     local
13 :    
14 :     structure E = Ein
15 :     structure mk= mkOperators
16 :     structure SrcIL = HighIL
17 :     structure SrcTy = HighILTypes
18 :     structure SrcOp = HighOps
19 :     structure SrcSV = SrcIL.StateVar
20 :     structure VTbl = SrcIL.Var.Tbl
21 :     structure DstIL = MidIL
22 :     structure DstTy = MidILTypes
23 :     structure DstOp = MidOps
24 :     structure DstV = DstIL.Var
25 :     structure SrcV = SrcIL.Var
26 :     structure P=Printer
27 :     structure F=Filter
28 :     structure T=TransformEin
29 :     structure split=Split
30 :     structure Var = MidIL.Var
31 :     val testing=0
32 :    
33 :    
34 :     in
35 :     val cnt = ref 0
36 :     fun genName prefix = let
37 :     val n = !cnt
38 :     in
39 :     cnt := n+1;
40 :     String.concat[prefix, "_", Int.toString n]
41 :     end
42 :     fun setEin(params,index,body)=Ein.EIN{params=params, index=index, body=body}
43 :     fun assignEin (x, rator, args) = (x, DstIL.EINAPP(rator, args))
44 : cchiw 3260 fun toStringBind(id, DstIL.EINAPP(rator, args))=let
45 : cchiw 2838 val a=String.concatWith " , " (List.map Var.toString args)
46 :     in
47 :     String.concat([Var.toString id," ==",P.printerE rator, a])
48 :     end
49 :    
50 :    
51 :    
52 :     fun itos i=Int.toString i
53 : cchiw 2867
54 :    
55 :     fun y i = DstV.new ( ("Y_"^itos i^"_"), DstTy.TensorTy [0,0])
56 :    
57 :    
58 :     fun mkArgs 1=[DstV.new("B_",DstTy.TensorTy [1])]
59 :     | mkArgs 2=(mkArgs 1)@[DstV.new("C_",DstTy.TensorTy [2])]
60 :     | mkArgs 3=(mkArgs 2)@[DstV.new("D_",DstTy.TensorTy [3])]
61 :     | mkArgs 4=(mkArgs 3)@[DstV.new("E_",DstTy.TensorTy [4])]
62 :     | mkArgs 5=(mkArgs 4)@[DstV.new("F_",DstTy.TensorTy [4])]
63 :     | mkArgs n =List.tabulate(n, (fn e=>DstV.new (genName ("xx"^itos e ^"_"), DstTy.TensorTy [e])))
64 :    
65 : cchiw 2838 fun mkP n =List.tabulate(n, (fn e=>E.TEN(3,[])))
66 :     fun mkIx n=List.tabulate(n, (fn e=>e ))
67 :    
68 :     val p5=mkP 5
69 :     val i5=mkIx 5
70 :     val a5=mkArgs 5
71 :     val p3=mkP 3
72 :     val i2=mkIx 2
73 :     val i1=mkIx 1
74 :     val a3=mkArgs 3
75 :     val p4=mkP 4
76 :     val a4=mkArgs 4
77 :    
78 :    
79 :     val e1=assignEin(y 1,setEin(p3,i2,E.Add[E.Sub(E.Tensor(1,[E.V 0, E.V 1]),E.Tensor(0,[E.V 0, E.V 1])),E.Div(E.Tensor(1,[E.V 0, E.V 1]),E.Tensor(2,[]))]),a3)
80 :     val e2=assignEin(y 2,setEin(p3,i2,E.Prod[E.Sub(E.Tensor(1,[E.V 1]),E.Tensor(0,[E.V 1])),E.Div(E.Tensor(1,[E.V 0]),E.Tensor(2,[]))]),a3)
81 :     val e3=assignEin(y 3,setEin(p3,i2,E.Sum([(E.V 2,0,22),(E.V 3, 0,33)],E.Prod[E.Sub(E.Tensor(1,[E.V 1,E.V 2]),E.Tensor(0,[E.V 1,E.V 2])),E.Div(E.Tensor(1,[E.V 0, E.V 3]),E.Tensor(2,[]))])),a3)
82 :     val e4=assignEin(y 4,setEin(p3,i2,E.Prod[E.Sum([(E.V 2,0,22)],E.Add[E.Tensor(1,[E.V 2,E.V 1]),E.Tensor(2,[E.V 2,E.V 1])]),E.Tensor(2,[E.V 0, E.V 1])]),a3)
83 :     val e5=assignEin(y 5,setEin(p3,i2,E.Sum([(E.V 2,0,22)],E.Prod[E.Tensor(0,[E.V 2,E.V 1]),E.Sum([(E.V 3,0,33)],E.Prod[E.Tensor(2,[E.V 2,E.V 3]),E.Tensor(3,[E.V 3,E.V 0])])])),a3)
84 :     val e6=assignEin(y 6,setEin(p3,i2,E.Sum([(E.V 2,0,22)],E.Prod[
85 :     E.Sub(E.Tensor(0,[E.V 2,E.V 1]),E.Tensor(3,[E.V 2,E.V 1])),E.Sum([(E.V 3,0,33)],
86 :     E.Prod[E.Add[E.Tensor(2,[E.V 2,E.V 3]),E.Tensor(1,[E.V 2,E.V 3]) ],E.Tensor(3,[E.V 3,E.V 0])])])),a3)
87 :     val e7=assignEin(y 7,setEin(p3,i2,E.Add[E.Sub(E.Tensor(1,[E.V 0, E.V 1]),E.Tensor(0,[E.V 0, E.V 1])),E.Div(E.Tensor(1,[E.V 0, E.V 1]),
88 :     E.Sum([(E.V 2,0,22)],E.Prod[E.Tensor(2,[E.V 2]),E.Tensor(1,[E.V 2])]) )]),a3)
89 :     val e8=assignEin(y 8,setEin(p3,i2,
90 :     E.Div(E.Tensor(1,[E.V 0, E.V 1]),
91 :     E.Sum([(E.V 2,0,22)],E.Prod[E.Tensor(2,[E.V 2]),E.Tensor(0,[E.V 2])]) )),a3)
92 :     val e9=assignEin(y 9,setEin(p3,i2,
93 :     E.Prod[E.Tensor(1,[ E.V 1]),
94 :     E.Sum([(E.V 2,0,22)],E.Prod[E.Tensor(2,[E.V 2,E.V 0]),E.Tensor(0,[E.V 2])])] ),a3)
95 :    
96 :     val e10=assignEin(y 10,setEin(p4,i2,
97 :     E.Prod[
98 :     E.Add[E.Tensor(1,[ E.V 1]),E.Sub(E.Tensor(1,[ E.V 1]),E.Div(E.Tensor(2,[ E.V 1]),E.Tensor(3,[])))],
99 :     E.Sum([(E.V 2,0,22)],E.Prod[E.Tensor(2,[E.V 2,E.V 0]),
100 :     E.Add[E.Tensor(3,[E.V 2]),E.Tensor(0,[E.V 2])]
101 :     ])] ),a4)
102 :    
103 :    
104 :     val e11=assignEin(y 11,setEin(p4,i2,
105 :     E.Prod[
106 :     E.Add[E.Tensor(1,[ E.V 1]),E.Sub(E.Tensor(1,[ E.V 1]),E.Div(E.Tensor(2,[ E.V 1]),E.Tensor(3,[])))],
107 :     E.Sum([(E.V 2,0,22)],E.Prod[E.Tensor(2,[E.V 2,E.V 0]),E.Tensor(3,[E.V 2]),E.Tensor(0,[E.V 2])])
108 :     ]) ,a4)
109 :    
110 :    
111 :     val e12=assignEin(y 12,setEin(p4,i2,
112 :    
113 :     E.Add[E.Tensor(1,[ E.V 1,E.V 0]),E.Sub(E.Tensor(0,[ E.V 1,E.V 0]),E.Div(E.Tensor(2,[ E.V 1,E.V 0]),E.Tensor(3,[])))]) ,a4)
114 :    
115 :    
116 :     val e13=assignEin(y 13,setEin(p4,i2,
117 :     E.Add[E.Tensor(1,[E.V 0, E.V 1]),
118 :     E.Prod[E.Tensor(1,[E.V 0]), E.Prod[E.Tensor(0,[E.V 1]), E.Tensor(0,[E.V 1])]]]
119 :     ) ,a4)
120 :    
121 :    
122 :    
123 :     val e14=assignEin(y 14,setEin(p4,i2,
124 :     E.Add[E.Tensor(1,[E.V 0, E.V 1]),
125 :     E.Sum([(E.V 2, 0 ,22)],E.Prod[E.Tensor(1,[E.V 0,E.V 2]), E.Prod[E.Tensor(0,[E.V 1,E.V 2]), E.Tensor(3,[E.V 1,E.V 2])]]
126 :     )]) ,a4)
127 :    
128 :    
129 :    
130 : cchiw 2867 val e15=assignEin(y 15,setEin(p4,[3,3],
131 :     E.Prod[E.Tensor(0,[E.V 0, E.V 1]),
132 :     E.Sub(E.Tensor(1,[E.V 1,E.V 1]),E.Tensor(2,[E.V 1,E.V 1]))]
133 :     ) ,a4)
134 : cchiw 2838
135 :    
136 : cchiw 2867 val e16=assignEin(y 16,setEin(p4,[3,3],
137 :     E.Add[E.Tensor(0,[E.V 0, E.V 1]),
138 :     E.Sub(E.Tensor(1,[E.V 1,E.V 1]),E.Tensor(2,[E.V 1,E.V 1]))]
139 :     ) ,a4)
140 : cchiw 2838
141 : cchiw 2867
142 :    
143 :     val e17=assignEin(y 17,setEin(p4,[3,3],
144 :     E.Add[E.Prod[E.Tensor(0,[E.V 0, E.V 1]),E.Tensor(1,[E.V 0, E.V 1])],
145 :     E.Sub(E.Tensor(1,[E.V 0,E.V 1]),E.Tensor(2,[E.V 0,E.V 1]))]
146 :     ) ,a4)
147 :    
148 :    
149 :     val e18=assignEin(y 18,setEin(p4,[3,3,3],
150 :     E.Prod[E.Prod[E.Tensor(0,[E.V 1, E.V 2]),E.Tensor(1,[E.V 1, E.V 2])],
151 :     E.Sub(E.Tensor(1,[E.V 0,E.V 1]),E.Tensor(2,[E.V 0,E.V 1]))]
152 :     ) ,a4)
153 :    
154 :    
155 :     val e19=assignEin(y 19,setEin(p4,[00,11,22],
156 :     E.Sum([(E.V 5,0,55)],
157 :     E.Prod[E.Prod[E.Tensor(0,[E.V 1, E.V 5]),E.Tensor(1,[E.V 1, E.V 5])],
158 :     E.Sub(E.Tensor(1,[E.V 0,E.V 1]),E.Tensor(2,[E.V 0,E.V 1]))])
159 :     ) ,a4)
160 :    
161 :     val e20=assignEin(y 20,setEin(p4,[00,11,22],
162 :     E.Sub(E.Sum([(E.V 5,0,55)],
163 :     E.Prod[E.Prod[E.Tensor(0,[E.V 1, E.V 5]),E.Tensor(2,[E.V 1, E.V 5])]]),
164 :     E.Sub(E.Tensor(1,[E.V 0,E.V 1]),E.Tensor(2,[E.V 0,E.V 1])))
165 :     ) ,a4)
166 :    
167 :     val e21=assignEin(y 21,setEin(p4,[],
168 :     E.Sub(E.Tensor(1,[]),
169 :     E.Sum([(E.V 3,0,33),(E.V 4,0,44),(E.V 5,0,55)],
170 :     E.Prod[E.Prod[E.Tensor(0,[E.V 4, E.V 5]),E.Tensor(2,[E.V 4, E.V 5])]]))) ,a4)
171 :    
172 :    
173 :     val e21=assignEin(y 21,setEin(p4,[],
174 :     E.Sub(E.Tensor(1,[]),
175 :     E.Sum([(E.V 3,0,33),(E.V 4,0,44),(E.V 5,0,55)],
176 :     E.Prod[E.Tensor(0,[E.V 4, E.V 5]),E.Tensor(2,[E.V 4, E.V 5])]))) ,a4)
177 :    
178 :    
179 :    
180 :     val e22=assignEin(y 22,setEin(p4,[],
181 :     E.Sub(E.Tensor(1,[]),
182 :     E.Sum([(E.V 0,0,00),(E.V 1,0,11),(E.V 2,0,22)],
183 :     E.Prod[E.Prod[E.Tensor(0,[E.V 0, E.V 2]),E.Tensor(2,[E.V 2, E.V 1])]]))) ,a4)
184 :    
185 :    
186 :    
187 :    
188 :    
189 :    
190 : cchiw 2838 fun test()=let
191 : cchiw 2867 fun f e=let
192 : cchiw 3260 val _ = print("\n **************\n Staring\n "^toStringBind e)
193 : cchiw 2867 val (b,rtn)= split.gettest e
194 : cchiw 3260 val _ = List.map (fn r=>print("\n\t"^toStringBind r)) ([b]@rtn)
195 : cchiw 2867 val _ = print("\n ending \n **************\n ")
196 :     in
197 :     1
198 :     end
199 :     val _ =List.map f [e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21]
200 : cchiw 2838 val _ = raise Fail"stop"
201 :     in 1 end
202 :     end; (* local *)
203 :    
204 :     end (* local *)

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