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 3349 - (view) (download)

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

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