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 3470 - (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 :     | IMG of int * int list
18 :     type index_kind = int
19 :     type field_id = int
20 :     type tensor_id = int
21 :     type kernel_id = int
22 :     type image_id = int
23 :     type index_id = int
24 :    
25 :     datatype ein = EIN of {
26 :     params : param_kind list,
27 :     (* Parameters to equation are either tensors or fields *)
28 :     (* These variables are named using de Bruijn indexing *)
29 :     index : index_kind list, (* Index variables in the equation. *)
30 :     body : ein_exp
31 :     }
32 :    
33 :     and mu
34 :     = V of index_id
35 :     | C of int
36 :    
37 :     and unary
38 :     = Neg
39 :     | Exp
40 :     | Sqrt
41 :     | Cosine
42 :     | ArcCosine
43 :     | Sine
44 :     | ArcSine
45 :     | Tangent
46 :     | ArcTangent
47 :     | PowInt of int
48 :     | PowReal of Rational.t
49 :     | PowEmb of sumrange list * int
50 :    
51 :     and binary = Sub | Div
52 :    
53 :     and opn = Add | Prod
54 :    
55 :     and greekterms
56 :     = Delta of mu * mu
57 :     | Epsilon of index_id * index_id * index_id
58 :     | Eps2 of index_id * index_id
59 :    
60 :     and basics
61 :     = Const of int
62 :     | ConstR of Rational.t
63 :    
64 :     and ein_exp
65 :     (* Basic terms *)
66 :     = B of basics
67 :     | Tensor of tensor_id * alpha
68 :     | G of greekterms
69 :     (* High-IL Terms *)
70 :     | Field of field_id * alpha
71 :     | Lift of ein_exp
72 :     | Conv of image_id * alpha * kernel_id * alpha
73 :     | Partial of alpha
74 :     | Apply of ein_exp * ein_exp
75 :     | Probe of ein_exp * ein_exp
76 :     (* Mid-IL Terms *)
77 :     | Value of index_id (*Lift index *)
78 :     | Img of image_id * alpha * pos list
79 :     | Krn of kernel_id * (mu * mu) list * pos
80 :     (* Ops *)
81 :     | Sum of sumrange list * ein_exp
82 :     | Op1 of unary * ein_exp
83 :     | Op2 of binary * ein_exp * ein_exp
84 :     | Opn of opn * ein_exp list
85 :    
86 :     withtype alpha = mu list
87 :     and pos = ein_exp
88 :     and sumrange = mu * int * int
89 :    
90 :     end

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