xref: /llvm-project/mlir/utils/tree-sitter-mlir/dialect/tensor.js (revision 10f8be19e7562624c0e63872e28cc963e03e56a5)
1*10f8be19SRamkumar Ramachandra'use strict';
2*10f8be19SRamkumar Ramachandra
3*10f8be19SRamkumar Ramachandramodule.exports = {
4*10f8be19SRamkumar Ramachandra  tensor_dialect : $ => choice(
5*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.empty` `(`$dynamicSizes`)`
6*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type($result)
7*10f8be19SRamkumar Ramachandra                     seq('tensor.empty',
8*10f8be19SRamkumar Ramachandra                         field('dynamicSizes', $._value_use_list_parens),
9*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
10*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
11*10f8be19SRamkumar Ramachandra
12*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.cast` $source attr-dict `:`
13*10f8be19SRamkumar Ramachandra                     // type($source) `to` type($dest)
14*10f8be19SRamkumar Ramachandra                     seq('tensor.cast', field('in', $.value_use),
15*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
16*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
17*10f8be19SRamkumar Ramachandra
18*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.dim` attr-dict $source `,` $index
19*10f8be19SRamkumar Ramachandra                     // `:` type($source)
20*10f8be19SRamkumar Ramachandra                     seq('tensor.dim',
21*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
22*10f8be19SRamkumar Ramachandra                         field('tensor', $.value_use), ',',
23*10f8be19SRamkumar Ramachandra                         field('index', $.value_use),
24*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
25*10f8be19SRamkumar Ramachandra
26*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.collapse_shape` $src
27*10f8be19SRamkumar Ramachandra                     // $reassociation attr-dict `:` type($src)
28*10f8be19SRamkumar Ramachandra                     //                `into` type($result)
29*10f8be19SRamkumar Ramachandra                     seq(choice('tensor.collapse_shape', 'tensor.expand_shape'),
30*10f8be19SRamkumar Ramachandra                         field('tensor', $.value_use),
31*10f8be19SRamkumar Ramachandra                         field('reassociation', $.nested_idx_list),
32*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
33*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
34*10f8be19SRamkumar Ramachandra
35*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.extract` $tensor `[` $indices `]`
36*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type($tensor)
37*10f8be19SRamkumar Ramachandra                     seq('tensor.extract', field('tensor', $.value_use),
38*10f8be19SRamkumar Ramachandra                         field('indices', $._dense_idx_list),
39*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
40*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
41*10f8be19SRamkumar Ramachandra
42*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.insert` $scalar `into` $dest `[`
43*10f8be19SRamkumar Ramachandra                     // $indices `]` attr-dict
44*10f8be19SRamkumar Ramachandra                     //               `:` type($dest)
45*10f8be19SRamkumar Ramachandra                     seq('tensor.insert', field('scalar', $.value_use),
46*10f8be19SRamkumar Ramachandra                         token('into'), field('destination', $.value_use),
47*10f8be19SRamkumar Ramachandra                         field('indices', $._dense_idx_list),
48*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
49*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
50*10f8be19SRamkumar Ramachandra
51*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.extract_slice` $source ``
52*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($offsets,
53*10f8be19SRamkumar Ramachandra                     //                $static_offsets)
54*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($sizes,
55*10f8be19SRamkumar Ramachandra                     //                $static_sizes)
56*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($strides,
57*10f8be19SRamkumar Ramachandra                     //                $static_strides) attr-dict `:`
58*10f8be19SRamkumar Ramachandra                     //                type($source) `to` type($result)
59*10f8be19SRamkumar Ramachandra                     seq('tensor.extract_slice', field('tensor', $.value_use),
60*10f8be19SRamkumar Ramachandra                         field('offsets', $._dense_idx_list),
61*10f8be19SRamkumar Ramachandra                         field('sizes', $._dense_idx_list),
62*10f8be19SRamkumar Ramachandra                         field('strides', $._dense_idx_list),
63*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
64*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
65*10f8be19SRamkumar Ramachandra
66*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.insert_slice` $source `into` $dest
67*10f8be19SRamkumar Ramachandra                     // ``
68*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($offsets,
69*10f8be19SRamkumar Ramachandra                     //                $static_offsets)
70*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($sizes,
71*10f8be19SRamkumar Ramachandra                     //                $static_sizes)
72*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($strides,
73*10f8be19SRamkumar Ramachandra                     //                $static_strides) attr-dict `:`
74*10f8be19SRamkumar Ramachandra                     //                type($source) `into` type($dest)
75*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.parallel_insert_slice` $source
76*10f8be19SRamkumar Ramachandra                     // `into` $dest ``
77*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($offsets,
78*10f8be19SRamkumar Ramachandra                     //                $static_offsets)
79*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($sizes,
80*10f8be19SRamkumar Ramachandra                     //                $static_sizes)
81*10f8be19SRamkumar Ramachandra                     //                custom<DynamicIndexList>($strides,
82*10f8be19SRamkumar Ramachandra                     //                $static_strides) attr-dict `:`
83*10f8be19SRamkumar Ramachandra                     //                type($source) `into` type($dest)
84*10f8be19SRamkumar Ramachandra                     seq(choice('tensor.insert_slice',
85*10f8be19SRamkumar Ramachandra                                'tensor.parallel_insert_slice'),
86*10f8be19SRamkumar Ramachandra                         field('source', $.value_use), token('into'),
87*10f8be19SRamkumar Ramachandra                         field('destination', $.value_use),
88*10f8be19SRamkumar Ramachandra                         field('offsets', $._dense_idx_list),
89*10f8be19SRamkumar Ramachandra                         field('sizes', $._dense_idx_list),
90*10f8be19SRamkumar Ramachandra                         field('strides', $._dense_idx_list),
91*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
92*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
93*10f8be19SRamkumar Ramachandra
94*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.from_elements` $elements attr-dict
95*10f8be19SRamkumar Ramachandra                     // `:` type($result)
96*10f8be19SRamkumar Ramachandra                     seq('tensor.from_elements',
97*10f8be19SRamkumar Ramachandra                         field('elements', optional($._value_use_list)),
98*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
99*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
100*10f8be19SRamkumar Ramachandra
101*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.gather` $source `[` $indices `]`
102*10f8be19SRamkumar Ramachandra                     //               `gather_dims` `(` $gather_dims `)`
103*10f8be19SRamkumar Ramachandra                     //               (`unique` $unique^)?
104*10f8be19SRamkumar Ramachandra                     //               attr-dict
105*10f8be19SRamkumar Ramachandra                     //               `:` functional-type(operands, results)
106*10f8be19SRamkumar Ramachandra                     seq('tensor.gather', field('source', $.value_use),
107*10f8be19SRamkumar Ramachandra                         field('indices', $._dense_idx_list),
108*10f8be19SRamkumar Ramachandra                         field('gatherDims', $.gather_dims_attr),
109*10f8be19SRamkumar Ramachandra                         field('unique', optional($.unique_attr)),
110*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
111*10f8be19SRamkumar Ramachandra                         field('return', $._function_type_annotation)),
112*10f8be19SRamkumar Ramachandra
113*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.scatter` $source `into` $dest `[`
114*10f8be19SRamkumar Ramachandra                     // $indices `]`
115*10f8be19SRamkumar Ramachandra                     //               `scatter_dims` `(` $scatter_dims `)`
116*10f8be19SRamkumar Ramachandra                     //               (`unique` $unique^)?
117*10f8be19SRamkumar Ramachandra                     //               attr-dict
118*10f8be19SRamkumar Ramachandra                     //               `:` functional-type(operands, results)
119*10f8be19SRamkumar Ramachandra                     seq('tensor.scatter', field('source', $.value_use),
120*10f8be19SRamkumar Ramachandra                         token('into'), field('destination', $.value_use),
121*10f8be19SRamkumar Ramachandra                         field('indices', $._dense_idx_list),
122*10f8be19SRamkumar Ramachandra                         field('scatterDims', $.scatter_dims_attr),
123*10f8be19SRamkumar Ramachandra                         field('unique', optional($.unique_attr)),
124*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
125*10f8be19SRamkumar Ramachandra                         field('return', $._function_type_annotation)),
126*10f8be19SRamkumar Ramachandra
127*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.pad` $source
128*10f8be19SRamkumar Ramachandra                     //               (`nofold` $nofold^)?
129*10f8be19SRamkumar Ramachandra                     //               `low` `` custom<DynamicIndexList>($low,
130*10f8be19SRamkumar Ramachandra                     //               $static_low) `high` ``
131*10f8be19SRamkumar Ramachandra                     //               custom<DynamicIndexList>($high,
132*10f8be19SRamkumar Ramachandra                     //               $static_high) $region attr-dict `:`
133*10f8be19SRamkumar Ramachandra                     //               type($source) `to` type($result)
134*10f8be19SRamkumar Ramachandra                     seq('tensor.pad', field('source', $.value_use),
135*10f8be19SRamkumar Ramachandra                         field('nofold', optional($.nofold_attr)),
136*10f8be19SRamkumar Ramachandra                         field('low', seq(token('low'), $._dense_idx_list)),
137*10f8be19SRamkumar Ramachandra                         field('high', seq(token('high'), $._dense_idx_list)),
138*10f8be19SRamkumar Ramachandra                         field('body', $.region),
139*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
140*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
141*10f8be19SRamkumar Ramachandra
142*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.reshape` $source `(` $shape `)`
143*10f8be19SRamkumar Ramachandra                     // attr-dict
144*10f8be19SRamkumar Ramachandra                     //                `:` functional-type(operands, results)
145*10f8be19SRamkumar Ramachandra                     seq('tensor.reshape', field('tensor', $.value_use),
146*10f8be19SRamkumar Ramachandra                         field('shape', $._value_use_list_parens),
147*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
148*10f8be19SRamkumar Ramachandra                         field('return', $._function_type_annotation)),
149*10f8be19SRamkumar Ramachandra
150*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.splat` $input attr-dict `:`
151*10f8be19SRamkumar Ramachandra                     // type($aggregate)
152*10f8be19SRamkumar Ramachandra                     seq('tensor.splat', field('input', $.value_use),
153*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
154*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
155*10f8be19SRamkumar Ramachandra
156*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.pack` $source
157*10f8be19SRamkumar Ramachandra                     //               (`padding_value` `(` $padding_value^ `:`
158*10f8be19SRamkumar Ramachandra                     //               type($padding_value) `)`)?
159*10f8be19SRamkumar Ramachandra                     //               (`outer_dims_perm` `=` $outer_dims_perm^)?
160*10f8be19SRamkumar Ramachandra                     //               `inner_dims_pos` `=` $inner_dims_pos
161*10f8be19SRamkumar Ramachandra                     //               `inner_tiles` `=`
162*10f8be19SRamkumar Ramachandra                     //               custom<DynamicIndexList>($inner_tiles,
163*10f8be19SRamkumar Ramachandra                     //               $static_inner_tiles) `into` $dest
164*10f8be19SRamkumar Ramachandra                     //               attr-dict `:` type($source) `->`
165*10f8be19SRamkumar Ramachandra                     //               type($dest)
166*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.unpack` $source
167*10f8be19SRamkumar Ramachandra                     //               (`outer_dims_perm` `=` $outer_dims_perm^)?
168*10f8be19SRamkumar Ramachandra                     //               `inner_dims_pos` `=` $inner_dims_pos
169*10f8be19SRamkumar Ramachandra                     //               `inner_tiles` `=`
170*10f8be19SRamkumar Ramachandra                     //               custom<DynamicIndexList>($inner_tiles,
171*10f8be19SRamkumar Ramachandra                     //               $static_inner_tiles) `into` $dest
172*10f8be19SRamkumar Ramachandra                     //               attr-dict `:` type($source) `->`
173*10f8be19SRamkumar Ramachandra                     //               type($dest)
174*10f8be19SRamkumar Ramachandra                     seq(choice('tensor.pack', 'tensor.unpack'),
175*10f8be19SRamkumar Ramachandra                         field('source', $.value_use),
176*10f8be19SRamkumar Ramachandra                         field('padding_value',
177*10f8be19SRamkumar Ramachandra                               optional(seq(token('padding_value'), '(',
178*10f8be19SRamkumar Ramachandra                                            $._value_use_and_type, ')'))),
179*10f8be19SRamkumar Ramachandra                         field('outer_dims_perm',
180*10f8be19SRamkumar Ramachandra                               optional($.outer_dims_perm_attr)),
181*10f8be19SRamkumar Ramachandra                         field('inner_dims_pos', $.inner_dims_pos_attr),
182*10f8be19SRamkumar Ramachandra                         field('inner_tiles', $.inner_tiles_attr),
183*10f8be19SRamkumar Ramachandra                         token('into'), field('destination', $.value_use),
184*10f8be19SRamkumar Ramachandra                         field('return', $._function_type_annotation)),
185*10f8be19SRamkumar Ramachandra
186*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.generate` $dynamicExtents $body
187*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type($result)
188*10f8be19SRamkumar Ramachandra                     seq('tensor.generate',
189*10f8be19SRamkumar Ramachandra                         field('dynamicExtents', $._value_use_list),
190*10f8be19SRamkumar Ramachandra                         field('body', $.region),
191*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
192*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
193*10f8be19SRamkumar Ramachandra
194*10f8be19SRamkumar Ramachandra                     // operation ::= `tensor.rank` $tensor attr-dict `:`
195*10f8be19SRamkumar Ramachandra                     // type($tensor) operation ::= `tensor.yield` $value
196*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type($value)
197*10f8be19SRamkumar Ramachandra                     seq(choice('tensor.rank', 'tensor.yield'),
198*10f8be19SRamkumar Ramachandra                         field('tensor', $.value_use),
199*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
200*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)))
201*10f8be19SRamkumar Ramachandra}
202