xref: /llvm-project/mlir/utils/tree-sitter-mlir/dialect/memref.js (revision 10f8be19e7562624c0e63872e28cc963e03e56a5)
1'use strict';
2
3module.exports = {
4  memref_dialect : $ => choice(
5                     // operation ::= `memref.assume_alignment` $memref `,`
6                     // $alignment attr-dict `:` type($memref)
7                     seq('memref.assume_alignment',
8                         field('memref', $.value_use), ',',
9                         field('alignment', $.integer_literal),
10                         field('attributes', optional($.attribute)),
11                         field('return', $._type_annotation)),
12
13                     // operation ::= `memref.alloc` `(`$dynamicSizes`)` (`` `[`
14                     // $symbolOperands^ `]`)? attr-dict
15                     //               `:` type($memref)
16                     // operation ::= `memref.alloca` `(`$dynamicSizes`)` (``
17                     // `[` $symbolOperands^ `]`)? attr-dict
18                     //               `:` type($memref)
19                     seq(choice('memref.alloc', 'memref.alloca'),
20                         field('dynamicSizes', $._value_use_list_parens),
21                         field('symbolOperands', optional($._dense_idx_list)),
22                         field('attributes', optional($.attribute)),
23                         field('return', $._type_annotation)),
24
25                     // operation ::= `memref.cast` $source attr-dict `:`
26                     // type($source) `to` type($dest)
27                     seq('memref.cast', field('in', $.value_use),
28                         field('attributes', optional($.attribute)),
29                         field('return', $._type_annotation)),
30
31                     // operation ::= `memref.copy` $source `,` $target
32                     // attr-dict
33                     //               `:` type($source) `to` type($target)
34                     seq('memref.copy', field('source', $.value_use), ',',
35                         field('target', $.value_use),
36                         field('attributes', optional($.attribute)),
37                         field('return', $._type_annotation)),
38
39                     // operation ::= `memref.collapse_shape` $src
40                     // $reassociation attr-dict
41                     //               `:` type($src) `into` type($result)
42                     // operation ::= `memref.expand_shape` $src $reassociation
43                     // attr-dict
44                     //               `:` type($src) `into` type($result)
45                     seq(choice('memref.collapse_shape', 'memref.expand_shape'),
46                         field('source', $.value_use),
47                         field('reassociation', $.nested_idx_list),
48                         field('attributes', optional($.attribute)),
49                         field('return', $._type_annotation)),
50
51                     // operation ::= `memref.dealloc` $memref attr-dict `:`
52                     // type($memref)
53                     seq('memref.dealloc', field('memref', $.value_use),
54                         field('attributes', optional($.attribute)),
55                         field('return', $._type_annotation)),
56
57                     // operation ::= `memref.dim` attr-dict $source `,` $index
58                     // `:` type($source)
59                     seq('memref.dim',
60                         field('attributes', optional($.attribute)),
61                         field('source', $.value_use), ',',
62                         field('index', $.value_use),
63                         field('return', $._type_annotation)),
64
65                     // operation ::= `memref.load` $memref `[` $indices `]`
66                     // attr-dict `:` type($memref)
67                     seq('memref.load',
68                         field('memref', seq($.value_use, $._dense_idx_list)),
69                         field('attributes', optional($.attribute)),
70                         field('return', $._type_annotation)),
71
72                     seq('memref.prefetch', field('source', $.value_use),
73                         field('indices', optional($._dense_idx_list)), ',',
74                         field('isWrite', $.isWrite_attr), ',',
75                         field('localityHint', $.localityHint_attr), ',',
76                         field('isDataCache', $.isDataCache_attr),
77                         field('attributes', optional($.attribute)),
78                         field('return', $._type_annotation)),
79
80                     // operation ::= `memref.rank` $memref attr-dict `:`
81                     // type($memref)
82                     seq('memref.rank', field('memref', $.value_use),
83                         field('attributes', optional($.attribute)),
84                         field('return', $._type_annotation)),
85
86                     // operation ::= `memref.realloc` $source (`(`
87                     // $dynamicResultSize^ `)`)? attr-dict
88                     //               `:` type($source) `to` type(results)
89                     seq('memref.realloc', field('source', $.value_use),
90                         field('dynamicResultSize',
91                               optional($._value_use_list_parens)),
92                         field('attributes', optional($.attribute)),
93                         field('return', $._type_annotation)),
94
95                     // operation ::= `memref.reinterpret_cast` $source `to`
96                     // `offset` `` `:`
97                     //               custom<DynamicIndexList>($offsets,
98                     //               $static_offsets)
99                     //               `` `,` `sizes` `` `:`
100                     //               custom<DynamicIndexList>($sizes,
101                     //               $static_sizes)
102                     //               `` `,` `strides` `` `:`
103                     //               custom<DynamicIndexList>($strides,
104                     //               $static_strides) attr-dict `:`
105                     //               type($source) `to` type($result)
106                     seq('memref.reinterpret_cast',
107                         field('source', $.value_use), token('to'),
108                         field('offset', seq(token('offset'), ':',
109                                             $._dense_idx_list, ',')),
110                         field('sizes', seq(token('sizes'), ':',
111                                            $._dense_idx_list, ',')),
112                         field('strides',
113                               seq(token('strides'), ':', $._dense_idx_list)),
114                         field('attributes', optional($.attribute)),
115                         field('return', $._type_annotation)),
116
117                     // operation ::= `memref.reshape` $source `(` $shape `)`
118                     // attr-dict
119                     //               `:` functional-type(operands, results)
120                     seq('memref.reshape', field('source', $.value_use),
121                         field('shape', seq('(', $.value_use, ')')),
122                         field('attributes', optional($.attribute)),
123                         field('return', $._function_type_annotation)),
124
125                     // operation ::= `memref.store` $value `,` $memref `[`
126                     // $indices `]` attr-dict
127                     //                `:` type($memref)
128                     seq('memref.store', field('source', $.value_use), ',',
129                         field('destination', $.value_use),
130                         field('indices', $._dense_idx_list),
131                         field('attributes', optional($.attribute)),
132                         field('return', $._type_annotation)),
133
134                     // operation ::= `memref.subview` $source ``
135                     //               custom<DynamicIndexList>($offsets,
136                     //               $static_offsets)
137                     //               custom<DynamicIndexList>($sizes,
138                     //               $static_sizes)
139                     //               custom<DynamicIndexList>($strides,
140                     //               $static_strides) attr-dict `:`
141                     //               type($source) `to` type($result)
142                     seq('memref.subview', field('source', $.value_use),
143                         field('offsets', $._dense_idx_list),
144                         field('sizes', $._dense_idx_list),
145                         field('strides', $._dense_idx_list),
146                         field('attributes', optional($.attribute)),
147                         field('return', $._type_annotation)),
148
149                     // operation ::= `memref.view` $source `[` $byte_shift `]`
150                     // `` `[` $sizes `]` attr-dict
151                     //         `:` type($source) `to` type(results)
152                     seq('memref.view', field('source', $.value_use),
153                         field('byte_shift', $._dense_idx_list),
154                         field('sizes', $._dense_idx_list),
155                         field('attributes', optional($.attribute)),
156                         field('return', $._type_annotation)))
157}
158