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 3574 - (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 : jhr 3548 = TEN of bool * int list (* the boolean specifies if the parameter is substitutable *)
15 : jhr 3470 | 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 : jhr 3512 and ein_exp
59 :     (* Basic terms *)
60 : jhr 3470 = Const of int
61 : jhr 3486 (* QUESTION: should this be RealLit.t? *)
62 : jhr 3470 | ConstR of Rational.t
63 :     | Tensor of tensor_id * alpha
64 : jhr 3574 (* FIXME: the "mu * mu" should be "index_id * index_id" in the sumrange type *)
65 : jhr 3512 | Delta of mu * mu
66 :     | Epsilon of index_id * index_id * index_id
67 :     | Eps2 of index_id * index_id
68 : jhr 3470 (* High-IL Terms *)
69 :     | Field of field_id * alpha
70 :     | Lift of ein_exp
71 :     | Conv of image_id * alpha * kernel_id * alpha
72 :     | Partial of alpha
73 :     | Apply of ein_exp * ein_exp
74 :     | Probe of ein_exp * ein_exp
75 :     (* Mid-IL Terms *)
76 : jhr 3512 | Value of index_id (* Lift index *)
77 : jhr 3470 | Img of image_id * alpha * pos list
78 :     | Krn of kernel_id * (mu * mu) list * pos
79 :     (* Ops *)
80 :     | Sum of sumrange list * ein_exp
81 :     | Op1 of unary * ein_exp
82 :     | Op2 of binary * ein_exp * ein_exp
83 :     | Opn of opn * ein_exp list
84 :    
85 :     withtype alpha = mu list
86 :     and pos = ein_exp
87 : jhr 3574 (* FIXME: the "mu" should be "index_id" in the sumrange type *)
88 : jhr 3470 and sumrange = mu * int * int
89 :    
90 :     end

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