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

SCM Repository

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

Annotation of /branches/charisee/src/compiler/mid-to-low/lowSet.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3190 - (view) (download)

1 : cchiw 3190 (* Expands probe ein
2 :     *
3 :     * COPYRIGHT (c) 2012 The Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     * All rights reserved.
5 :     *)
6 :    
7 :     structure lowSet = struct
8 :    
9 :     local
10 :    
11 :    
12 :     structure DstIL =LowIL
13 :     structure DstOp = LowOps
14 :     structure DstV = DstIL.Var
15 :    
16 :     in
17 :    
18 :     (*
19 :     previous2654replaced47
20 :     previous71198replaced1295
21 :     previous23396replaced431
22 :    
23 :     previous2654replaced606
24 :     previous7880replaced1818
25 :     previous23396replaced5416
26 :    
27 :     count
28 :     previous
29 :     2654,7880,71198,23396,635198
30 :     3*3*3*3*3*6*6*6
31 :     3^5 * 6^3
32 :     tensor[3,3]-sumprod_l_6_7235D78=-EIN-0:IMG(3)< 3>, 1:KRN 2:TEN <>, 3:TEN <3>, 4:TEN <3>, 5:TEN <3,3>, < Σ_2[0-2],3[0-2]⋐(ϵ_023* Σ_4[0-2],5[0-2]⋐( Σ_6[~2-3],7[~2-3],8[~2-3]⋐( V0_3[( T3_'0'+_6_),( T3_'1'+_7_),( T3_'2'+_8_)]* H1^{δ_('0',4)δ_('0',5)} [( T4_'0'---- _6_]* H1^{δ_('1',4)δ_('1',5)} [( T4_'1'---- _7_]* H1^{δ_('2',4)δ_('2',5)} [( T4_'2'---- _8_])⋑* T5_2,4* T5_1,5)⋑)⋑> _{(0 DIM:3)(1 DIM:3)} _t14C0,_t14BE,x1881,n18CA,f18C6,P18A8,
33 :     previous635198
34 :    
35 :     *)
36 :    
37 :     fun hash (_,DstIL.OP(op1,_))=DstOp.hash op1
38 :     | hash(_,DstIL.LIT m)=Literal.hash m
39 :    
40 :    
41 :     fun cmp(e1,e2)=Word.compare(hash e1, hash e2)
42 :    
43 :    
44 :     structure OprKey =
45 :     struct
46 :     type ord_key =DstIL.var*LowIL.rhs
47 :     val compare = cmp
48 :     end;
49 :     structure LowSet= RedBlackSetFn(OprKey);
50 :    
51 :    
52 :    
53 :     fun allEq([], []) = true
54 :     | allEq(x::xs, y::ys) = DstIL.Var.same(x,y) andalso allEq (xs,ys)
55 :     | allEq _ = false
56 :    
57 :     fun setFind (tbl,DstIL.OP(op0,arg0))= (
58 :     LowSet.find(
59 :     (fn (_,DstIL.OP(op1,arg1))=>(DstOp.same(op0,op1) andalso allEq(arg0,arg1)) | _ => false)
60 :     )) tbl
61 :     | setFind (tbl,DstIL.LIT n)= (
62 :     LowSet.find(
63 :     (fn (_,DstIL.LIT m)=> Literal.same(n,m)
64 :     | _ => false))) tbl
65 :     | setFind (tbl, e)= NONE
66 :    
67 :     fun rtnVar (tbl,(lhs,rhs))=(case setFind(tbl,rhs)
68 :     of NONE => (LowSet.add(tbl,(lhs,rhs)), NONE)
69 :     | SOME(v1,e1) =>(tbl,SOME v1)
70 :     (*end case*))
71 :    
72 :     fun filter(tbl,(lhs,rhs))=(case rhs
73 :     of DstIL.OP _ => rtnVar(tbl,(lhs,rhs))
74 :     | DstIL.LIT _ => rtnVar(tbl,(lhs,rhs))
75 :     | _ => (tbl, NONE)
76 :     (*end case*))
77 :    
78 :    
79 :     end; (* local *)
80 :    
81 :     end (* local *)

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