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

SCM Repository

[diderot] Annotation of /branches/vis15/src/compiler/gen/ir/mid-ir.spec
ViewVC logotype

Annotation of /branches/vis15/src/compiler/gen/ir/mid-ir.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5307 - (view) (download)

1 : jhr 3529 # specification of operators for MidIR version of the IR. Each line (other than comments)
2 : jhr 3461 # specifies an operator using five fields, which are separated by ":". The fields are
3 :     # name
4 :     # argument type (optional)
5 :     # result arity
6 :     # arity
7 :     # comment (optional)
8 :     #
9 :     # Operations with effects are denoted by a "!" as the first character of the line.
10 :     #
11 : jhr 3529 # integer operations
12 : jhr 3480 IAdd : : 1 : 2 : integer addition
13 : jhr 3529 ISub : : 1 : 2 : integer subtraction
14 :     IMul : : 1 : 2 : integer multiplication
15 :     IDiv : : 1 : 2 : integer division
16 : jhr 3480 IMod : : 1 : 2 : integer modulo
17 : jhr 3529 INeg : : 1 : 1 : integer negation
18 : jhr 5307 IAbs : : 1 : 1 : integer abs()
19 : jhr 3766 #
20 :     # comparisons (integer and scalar)
21 : jhr 3461 LT : ty : 1 : 2 :
22 :     LTE : ty : 1 : 2 :
23 :     EQ : ty : 1 : 2 :
24 :     NEQ : ty : 1 : 2 :
25 :     GT : ty : 1 : 2 :
26 :     GTE : ty : 1 : 2 :
27 : jhr 4434 BAnd : : 1 : 2 : boolean and
28 :     BOr : : 1 : 2 : boolean or
29 :     BNot : : 1 : 1 : boolean negation
30 : jhr 3483 Max : ty : 1 : 2 :
31 :     Min : ty : 1 : 2 :
32 : jhr 3797 ### tensor operations
33 :     #
34 :     # TensorIndex<ty,idxs>(T) returns the scalar T[idxs], where T has type ty
35 :     TensorIndex : ty * shape : 1 : 1 :
36 :     #
37 : jhr 3766 ### matrix operations
38 : jhr 3529 #
39 : jhr 4265 EigenVecs2x2 : : 2 : 1 : Eigen vectors and values for 2x2 matrix
40 :     EigenVecs3x3 : : 2 : 1 : Eigen vectors and values for 3x3 matrix
41 : jhr 3461 EigenVals2x2 : : 1 : 1 : Eigen values for 2x2 matrix
42 :     EigenVals3x3 : : 1 : 1 : Eigen values for 3x3 matrix
43 :     # Zero<ty>() -- zero tensor
44 : jhr 3529 Zero : ty : 1 : 0 : all zeros tensor
45 : jhr 3508 #
46 :     ### tuple operations
47 :     #
48 : jhr 3461 # Select<ty,i>(u) -- select ith element of tuple; ty is tuple type
49 :     Select : ty * int : 1 : 1 :
50 : jhr 3508 #
51 :     ### operations on sequences
52 :     #
53 : jhr 3461 # Subscript<ty>(u,i) -- select ith element of sequence; ty is type of sequence
54 :     Subscript : ty : 1 : 2 :
55 : jhr 3508 # MkDynamic<ty,n> -- make a sequence with type ty[n] into a dynamic sequence
56 : jhr 3461 !MkDynamic : ty * int : 1 : 1 : make a fixed-length sequence dynamic
57 : jhr 3866 !Append : ty : 1 : 2 : append an element onto a dynamic sequence
58 :     !Prepend : ty : 1 : 2 : prepend an element onto a dynamic sequence
59 :     !Concat : ty : 1 : 2 : concatenate two dynamic sequences
60 : jhr 3508 # Range(lo,hi) -- create a sequence with values [lo, lo+1, ..., hi]
61 : jhr 3866 Range : : 1 : 2 : create a range sequence
62 : jhr 3508 # Length<ty> -- return the length of a sequence with type ty[]
63 : jhr 3461 Length : ty : 1 : 1 : return the length of a dynamic sequence
64 :     #
65 : jhr 4349 # SphereQuery<dim,seqTy>(pos, radius)
66 :     SphereQuery : int * ty : 1 : 2 : find strands within a sphere
67 : jhr 3529 #
68 : jhr 3461 # compute integral parts of reals
69 :     Ceiling : int : 1 : 1 : compute real ceiling of a vector
70 :     Floor : int : 1 : 1 : compute real floor of a vector
71 :     Round : int : 1 : 1 : compute real rounding to nearest integral real of a vector
72 :     Trunc : int : 1 : 1 : compute real truncation to integral real of a vector
73 :     #
74 :     ### conversions; the real to int forms are vector ops
75 :     IntToReal : : 1 : 1 :
76 : jhr 3782 RealToInt : int : 1 : 1 : cast reals to ints and vectors to int sequences
77 : jhr 3461 #
78 : jhr 4337 ### Strand operations
79 : jhr 3529 #
80 : jhr 4394 # NumStrands<S>() -- denotes the number of strands in the strand set S
81 :     #
82 :     NumStrands : StrandSets.t : 1 : 0 :
83 :     #
84 : jhr 4362 # Strands<ty,S>() -- denotes the list of strands in the strand set S; ty is the strand type
85 :     Strands : ty * StrandSets.t : 1 : 0 :
86 :     #
87 : jhr 3461 ### image/kernel operations
88 :     #
89 : jhr 3732 # BuildPos<s>(x) -- builds a vector of 2s kernel arguments at positions [x-s, .., x+(s-1)]
90 :     BuildPos : int : 1 : 1 : compute vector of kernel arguments
91 :     #
92 :     # EvalKernel<d,h,k>(u) -- computes h^(k)(u_i) for 1<i<d, where d is the size of vector u.
93 : jhr 4043 EvalKernel : int * Kernel.t * int : 1 : 1 : evaluate a kernel function application
94 : jhr 3732 #
95 : jhr 3728 # Kernel<h,k>() -- represents the k'th derivative of the kernel h.
96 : jhr 4043 Kernel : Kernel.t * int : 1 : 0 :
97 : jhr 3728 #
98 : jhr 4432 Transform : ImageInfo.t : 1 : 1 : Pulls transformation matrix from image.
99 :     Translate : ImageInfo.t : 1 : 1 : Pulls translation vector from image.
100 : jhr 3480 #
101 : jhr 3774 # LoadVoxels<I,s>(V,n) -- loads a tensor of voxels from the image V, where I is the
102 :     # image info for V, s is size of the sample (i.e., twice the kernel support), and
103 :     # n is a sequence of integer indices that specifies the corner of the loaded tensor.
104 :     # If V has the type "image(d)[shp]", then n has type "int[n]" and the resulting tensor
105 :     # has the type "tensor[shp,s^d]".
106 : jhr 4432 LoadVoxels : ImageInfo.t * int : 1 : 2 : load a cube of voxels
107 : jhr 3461 #
108 : jhr 3774 # LoadVoxelsWithCtl<I,s,ctl>(V,n) -- like LoadVoxels, but it also uses the specified
109 :     # index control to deal with out-of-bounds indices.
110 : jhr 4432 LoadVoxelsWithCtl : ImageInfo.t * int * idxctl : 1 : 2 : load a cube of voxels
111 : jhr 3461 #
112 : jhr 4185 # Inside<I,s>(x,V) -- tests to see if the image-space position x is inside the domain of V.
113 : jhr 3774 # I is the image info for V, s is the size of the sample to be loaded (see LoadVoxels)
114 : jhr 4432 Inside : ImageInfo.t * int : 1 : 2 :
115 : jhr 3461 #
116 : jhr 4185 # IndexInside<I,s>(n,V) -- tests to see if the index sequence n is inside the domain of V.
117 :     # I is the image info for V, s is the size of the sample to be loaded (see LoadVoxels)
118 : jhr 4432 IndexInside : ImageInfo.t * int : 1 : 2 :
119 : jhr 4185 #
120 : jhr 3461 # ImageDim<I,i>(V) -- returns the i'th dimension of the image
121 : jhr 4432 ImageDim : ImageInfo.t * int : 1 : 1 :
122 : jhr 3461 #
123 : jhr 3725 # BorderCtlDefault<I>(V,t) -- wrap the image V with the border control that returns a default value t
124 : jhr 4432 BorderCtlDefault : ImageInfo.t : 1 : 2 :
125 : jhr 3725 # BorderCtlClamp<I>(V) -- wrap the image V with the border control that clamps the index
126 : jhr 4432 BorderCtlClamp : ImageInfo.t : 1 : 1 :
127 : jhr 3725 # BorderCtlMirror<I>(V) -- wrap the image V with the border control that mirrors the index
128 : jhr 4432 BorderCtlMirror : ImageInfo.t : 1 : 1 :
129 : jhr 3725 # BorderCtlWrap<I>(V) -- wrap the image V with the border control that wraps the index
130 : jhr 4432 BorderCtlWrap : ImageInfo.t : 1 : 1 :
131 : jhr 3725 #
132 : jhr 3461 # nrrd file loading
133 :     LoadSeq : ty * string : 1 : 0 : load sequence from nrrd file
134 :     LoadImage : ty * string : 1 : 0 : load image from nrrd file
135 :     #
136 : jhr 4628 # Kill all active strands
137 :     !KillAll : : 0 : 0 :
138 :     #
139 :     # Stabilize all active strands
140 : jhr 4480 !StabilizeAll : : 0 : 0 :
141 :     #
142 : jhr 3461 # printing support for debugging
143 :     !Print : tys : 0 : * : print strings
144 : jhr 3582 #
145 :     # unlifted math functions
146 :     MathFn : MathFns.t : 1 : * : math function

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