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

SCM Repository

[diderot] Annotation of /branches/vis15/src/compiler/ein/ein.sml
ViewVC logotype

Annotation of /branches/vis15/src/compiler/ein/ein.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3477 - (view) (download)

1 : jhr 3470 (* ein.sml
2 :     *
3 :     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2015 The University of Chicago
6 :     * All rights reserved.
7 :     *)
8 :    
9 :     structure Ein =
10 :     struct
11 :    
12 :     (*TEN 0-Don't Subst,shape of arguement *)
13 :     datatype param_kind
14 :     = TEN of int * int list
15 :     | FLD of int
16 :     | KRN
17 : jhr 3477 | IMG of int * int list
18 :     (* FIXME: need some comments here!!! *)
19 : jhr 3470 type index_kind = int
20 :     type field_id = int
21 :     type tensor_id = int
22 :     type kernel_id = int
23 :     type image_id = int
24 :     type index_id = int
25 :    
26 :     datatype ein = EIN of {
27 :     params : param_kind list,
28 :     (* Parameters to equation are either tensors or fields *)
29 :     (* These variables are named using de Bruijn indexing *)
30 : jhr 3477 (* QUESTION: why is this index_kind list and not index_id list? *)
31 : jhr 3470 index : index_kind list, (* Index variables in the equation. *)
32 :     body : ein_exp
33 :     }
34 :    
35 :     and mu
36 :     = V of index_id
37 :     | C of int
38 :    
39 :     and unary
40 :     = Neg
41 :     | Exp
42 :     | Sqrt
43 :     | Cosine
44 :     | ArcCosine
45 :     | Sine
46 :     | ArcSine
47 :     | Tangent
48 :     | ArcTangent
49 :     | PowInt of int
50 :     | PowReal of Rational.t
51 :     | PowEmb of sumrange list * int
52 :    
53 :     and binary = Sub | Div
54 :    
55 :     and opn = Add | Prod
56 :    
57 :     and greekterms
58 :     = Delta of mu * mu
59 :     | Epsilon of index_id * index_id * index_id
60 :     | Eps2 of index_id * index_id
61 :    
62 :     and basics
63 :     = Const of int
64 :     | ConstR of Rational.t
65 :    
66 :     and ein_exp
67 :     (* Basic terms *)
68 :     = B of basics
69 :     | Tensor of tensor_id * alpha
70 :     | G of greekterms
71 :     (* High-IL Terms *)
72 :     | Field of field_id * alpha
73 :     | Lift of ein_exp
74 :     | Conv of image_id * alpha * kernel_id * alpha
75 :     | Partial of alpha
76 :     | Apply of ein_exp * ein_exp
77 :     | Probe of ein_exp * ein_exp
78 :     (* Mid-IL Terms *)
79 :     | Value of index_id (*Lift index *)
80 :     | Img of image_id * alpha * pos list
81 :     | Krn of kernel_id * (mu * mu) list * pos
82 :     (* Ops *)
83 :     | Sum of sumrange list * ein_exp
84 :     | Op1 of unary * ein_exp
85 :     | Op2 of binary * ein_exp * ein_exp
86 :     | Opn of opn * ein_exp list
87 :    
88 :     withtype alpha = mu list
89 :     and pos = ein_exp
90 :     and sumrange = mu * int * int
91 :    
92 :     end

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