xref: /llvm-project/mlir/utils/tree-sitter-mlir/dialect/vector.js (revision 10f8be19e7562624c0e63872e28cc963e03e56a5)
1*10f8be19SRamkumar Ramachandra'use strict';
2*10f8be19SRamkumar Ramachandra
3*10f8be19SRamkumar Ramachandramodule.exports = {
4*10f8be19SRamkumar Ramachandra  vector_dialect : $ => prec.right(choice(
5*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.bitcast` $source attr-dict `:`
6*10f8be19SRamkumar Ramachandra                     // type($source) `to` type($result) operation ::=
7*10f8be19SRamkumar Ramachandra                     // `vector.broadcast` $source attr-dict `:` type($source)
8*10f8be19SRamkumar Ramachandra                     // `to` type($vector) operation ::= `vector.shape_cast`
9*10f8be19SRamkumar Ramachandra                     // $source attr-dict `:` type($source) `to` type($result)
10*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.type_cast` $memref attr-dict `:`
11*10f8be19SRamkumar Ramachandra                     // type($memref) `to` type($result)
12*10f8be19SRamkumar Ramachandra                     seq(choice('vector.bitcast', 'vector.broadcast',
13*10f8be19SRamkumar Ramachandra                                'vector.shape_cast', 'vector.type_cast'),
14*10f8be19SRamkumar Ramachandra                         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 ::= `vector.constant_mask` $mask_dim_sizes
19*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type(results)
20*10f8be19SRamkumar Ramachandra                     seq('vector.constant_mask',
21*10f8be19SRamkumar Ramachandra                         field('mask', $._dense_idx_list),
22*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
23*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
24*10f8be19SRamkumar Ramachandra
25*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.create_mask` $operands attr-dict
26*10f8be19SRamkumar Ramachandra                     // `:` type(results)
27*10f8be19SRamkumar Ramachandra                     seq('vector.create_mask',
28*10f8be19SRamkumar Ramachandra                         field('operands', $._value_use_list),
29*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
30*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
31*10f8be19SRamkumar Ramachandra
32*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.extract` $vector `` $position
33*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type($vector) operation ::= `vector.load`
34*10f8be19SRamkumar Ramachandra                     // $base `[` $indices `]` attr-dict
35*10f8be19SRamkumar Ramachandra                     //               `:` type($base) `,` type($nresult)
36*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.scalable.extract` $source `[` $pos
37*10f8be19SRamkumar Ramachandra                     // `]` attr-dict
38*10f8be19SRamkumar Ramachandra                     //               `:` type($res) `from` type($source)
39*10f8be19SRamkumar Ramachandra                     seq(choice('vector.extract', 'vector.load',
40*10f8be19SRamkumar Ramachandra                                'vector.scalable.extract'),
41*10f8be19SRamkumar Ramachandra                         field('operand', $.value_use),
42*10f8be19SRamkumar Ramachandra                         field('indices', $._dense_idx_list),
43*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
44*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
45*10f8be19SRamkumar Ramachandra
46*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.fma` $lhs `,` $rhs `,` $acc
47*10f8be19SRamkumar Ramachandra                     // attr-dict `:` type($lhs)
48*10f8be19SRamkumar Ramachandra                     seq('vector.fma', field('lhs', $.value_use), ',',
49*10f8be19SRamkumar Ramachandra                         field('rhs', $.value_use), ',',
50*10f8be19SRamkumar Ramachandra                         field('acc', $.value_use),
51*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
52*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
53*10f8be19SRamkumar Ramachandra
54*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.flat_transpose` $matrix attr-dict
55*10f8be19SRamkumar Ramachandra                     // `:` type($matrix) `->` type($res)
56*10f8be19SRamkumar Ramachandra                     seq('vector.flat_transpose', field('matrix', $.value_use),
57*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
58*10f8be19SRamkumar Ramachandra                         field('return', $._function_type_annotation)),
59*10f8be19SRamkumar Ramachandra
60*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.insert` $source `,` $dest
61*10f8be19SRamkumar Ramachandra                     // $position attr-dict
62*10f8be19SRamkumar Ramachandra                     //               `:` type($source) `into` type($dest)
63*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.scalable.insert` $source `,` $dest
64*10f8be19SRamkumar Ramachandra                     // `[` $pos `]` attr-dict
65*10f8be19SRamkumar Ramachandra                     //               `:` type($source) `into` type($dest)
66*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.shuffle` operands $mask attr-dict
67*10f8be19SRamkumar Ramachandra                     // `:` type(operands) operation ::= `vector.store`
68*10f8be19SRamkumar Ramachandra                     // $valueToStore `,` $base `[` $indices `]` attr-dict
69*10f8be19SRamkumar Ramachandra                     //               `:` type($base) `,` type($valueToStore)
70*10f8be19SRamkumar Ramachandra                     seq(choice('vector.insert', 'vector.scalable.insert',
71*10f8be19SRamkumar Ramachandra                                'vector.shuffle', 'vector.store'),
72*10f8be19SRamkumar Ramachandra                         field('source', $.value_use), ',',
73*10f8be19SRamkumar Ramachandra                         field('destination', $.value_use),
74*10f8be19SRamkumar Ramachandra                         field('position', $._dense_idx_list),
75*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
76*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
77*10f8be19SRamkumar Ramachandra
78*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.insert_strided_slice` $source `,`
79*10f8be19SRamkumar Ramachandra                     // $dest attr-dict
80*10f8be19SRamkumar Ramachandra                     //               `:` type($source) `into` type($dest)
81*10f8be19SRamkumar Ramachandra                     seq('vector.insert_strided_slice',
82*10f8be19SRamkumar Ramachandra                         field('source', $.value_use), ',',
83*10f8be19SRamkumar Ramachandra                         field('destination', $.value_use),
84*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
85*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
86*10f8be19SRamkumar Ramachandra
87*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.matrix_multiply` $lhs `,` $rhs
88*10f8be19SRamkumar Ramachandra                     // attr-dict
89*10f8be19SRamkumar Ramachandra                     //                `:` `(` type($lhs) `,` type($rhs) `)`
90*10f8be19SRamkumar Ramachandra                     //                `->` type($res)
91*10f8be19SRamkumar Ramachandra                     seq('vector.matrix_multiply', field('lhs', $.value_use),
92*10f8be19SRamkumar Ramachandra                         ',', field('rhs', $.value_use),
93*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
94*10f8be19SRamkumar Ramachandra                         field('return', $._function_type_annotation)),
95*10f8be19SRamkumar Ramachandra
96*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.print` $source attr-dict `:`
97*10f8be19SRamkumar Ramachandra                     // type($source)
98*10f8be19SRamkumar Ramachandra                     seq(choice('vector.print', 'vector.splat'),
99*10f8be19SRamkumar Ramachandra                         field('operand', $.value_use),
100*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
101*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
102*10f8be19SRamkumar Ramachandra
103*10f8be19SRamkumar Ramachandra                     seq('vector.transfer_read',
104*10f8be19SRamkumar Ramachandra                         field('source', seq($.value_use, $._dense_idx_list)),
105*10f8be19SRamkumar Ramachandra                         field('paddingMask', repeat(seq(',', $.value_use))),
106*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
107*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
108*10f8be19SRamkumar Ramachandra
109*10f8be19SRamkumar Ramachandra                     seq('vector.transfer_write', field('vector', $.value_use),
110*10f8be19SRamkumar Ramachandra                         ',',
111*10f8be19SRamkumar Ramachandra                         field('source', seq($.value_use, $._dense_idx_list)),
112*10f8be19SRamkumar Ramachandra                         field('mask', optional(seq(',', $.value_use))),
113*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
114*10f8be19SRamkumar Ramachandra                         field('return', $._type_annotation)),
115*10f8be19SRamkumar Ramachandra
116*10f8be19SRamkumar Ramachandra                     // operation ::= `vector.yield` attr-dict ($operands^ `:`
117*10f8be19SRamkumar Ramachandra                     // type($operands))?
118*10f8be19SRamkumar Ramachandra                     seq('vector.yield',
119*10f8be19SRamkumar Ramachandra                         field('attributes', optional($.attribute)),
120*10f8be19SRamkumar Ramachandra                         field('results', optional($._value_use_type_list)))))
121*10f8be19SRamkumar Ramachandra}
122