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 3478 - (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 : jhr 3478 (* QUESTION: should the int be IntInf.int? *)
50 : jhr 3470 | PowInt of int
51 :     | PowReal of Rational.t
52 :     | PowEmb of sumrange list * int
53 :    
54 :     and binary = Sub | Div
55 :    
56 :     and opn = Add | Prod
57 :    
58 :     and greekterms
59 :     = Delta of mu * mu
60 :     | Epsilon of index_id * index_id * index_id
61 :     | Eps2 of index_id * index_id
62 :    
63 :     and basics
64 :     = Const of int
65 : jhr 3478 (* QUESTION: should this be FloatLit.t? *)
66 : jhr 3470 | ConstR of Rational.t
67 :    
68 :     and ein_exp
69 :     (* Basic terms *)
70 :     = B of basics
71 :     | Tensor of tensor_id * alpha
72 :     | G of greekterms
73 :     (* High-IL Terms *)
74 :     | Field of field_id * alpha
75 :     | Lift of ein_exp
76 :     | Conv of image_id * alpha * kernel_id * alpha
77 :     | Partial of alpha
78 :     | Apply of ein_exp * ein_exp
79 :     | Probe of ein_exp * ein_exp
80 :     (* Mid-IL Terms *)
81 :     | Value of index_id (*Lift index *)
82 :     | Img of image_id * alpha * pos list
83 :     | Krn of kernel_id * (mu * mu) list * pos
84 :     (* Ops *)
85 :     | Sum of sumrange list * ein_exp
86 :     | Op1 of unary * ein_exp
87 :     | Op2 of binary * ein_exp * ein_exp
88 :     | Opn of opn * ein_exp list
89 :    
90 :     withtype alpha = mu list
91 :     and pos = ein_exp
92 :     and sumrange = mu * int * int
93 :    
94 :     end

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