brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.7 KiB · 497ed7d Raw
122 lines · javascript
1'use strict';2 3module.exports = {4  vector_dialect : $ => prec.right(choice(5                     // operation ::= `vector.bitcast` $source attr-dict `:`6                     // type($source) `to` type($result) operation ::=7                     // `vector.broadcast` $source attr-dict `:` type($source)8                     // `to` type($vector) operation ::= `vector.shape_cast`9                     // $source attr-dict `:` type($source) `to` type($result)10                     // operation ::= `vector.type_cast` $memref attr-dict `:`11                     // type($memref) `to` type($result)12                     seq(choice('vector.bitcast', 'vector.broadcast',13                                'vector.shape_cast', 'vector.type_cast'),14                         field('in', $.value_use),15                         field('attributes', optional($.attribute)),16                         field('return', $._type_annotation)),17 18                     // operation ::= `vector.constant_mask` $mask_dim_sizes19                     // attr-dict `:` type(results)20                     seq('vector.constant_mask',21                         field('mask', $._dense_idx_list),22                         field('attributes', optional($.attribute)),23                         field('return', $._type_annotation)),24 25                     // operation ::= `vector.create_mask` $operands attr-dict26                     // `:` type(results)27                     seq('vector.create_mask',28                         field('operands', $._value_use_list),29                         field('attributes', optional($.attribute)),30                         field('return', $._type_annotation)),31 32                     // operation ::= `vector.extract` $vector `` $position33                     // attr-dict `:` type($vector) operation ::= `vector.load`34                     // $base `[` $indices `]` attr-dict35                     //               `:` type($base) `,` type($nresult)36                     // operation ::= `vector.scalable.extract` $source `[` $pos37                     // `]` attr-dict38                     //               `:` type($res) `from` type($source)39                     seq(choice('vector.extract', 'vector.load',40                                'vector.scalable.extract'),41                         field('operand', $.value_use),42                         field('indices', $._dense_idx_list),43                         field('attributes', optional($.attribute)),44                         field('return', $._type_annotation)),45 46                     // operation ::= `vector.fma` $lhs `,` $rhs `,` $acc47                     // attr-dict `:` type($lhs)48                     seq('vector.fma', field('lhs', $.value_use), ',',49                         field('rhs', $.value_use), ',',50                         field('acc', $.value_use),51                         field('attributes', optional($.attribute)),52                         field('return', $._type_annotation)),53 54                     // operation ::= `vector.flat_transpose` $matrix attr-dict55                     // `:` type($matrix) `->` type($res)56                     seq('vector.flat_transpose', field('matrix', $.value_use),57                         field('attributes', optional($.attribute)),58                         field('return', $._function_type_annotation)),59 60                     // operation ::= `vector.insert` $source `,` $dest61                     // $position attr-dict62                     //               `:` type($source) `into` type($dest)63                     // operation ::= `vector.scalable.insert` $source `,` $dest64                     // `[` $pos `]` attr-dict65                     //               `:` type($source) `into` type($dest)66                     // operation ::= `vector.shuffle` operands $mask attr-dict67                     // `:` type(operands) operation ::= `vector.store`68                     // $valueToStore `,` $base `[` $indices `]` attr-dict69                     //               `:` type($base) `,` type($valueToStore)70                     seq(choice('vector.insert', 'vector.scalable.insert',71                                'vector.shuffle', 'vector.store'),72                         field('source', $.value_use), ',',73                         field('destination', $.value_use),74                         field('position', $._dense_idx_list),75                         field('attributes', optional($.attribute)),76                         field('return', $._type_annotation)),77 78                     // operation ::= `vector.insert_strided_slice` $source `,`79                     // $dest attr-dict80                     //               `:` type($source) `into` type($dest)81                     seq('vector.insert_strided_slice',82                         field('source', $.value_use), ',',83                         field('destination', $.value_use),84                         field('attributes', optional($.attribute)),85                         field('return', $._type_annotation)),86 87                     // operation ::= `vector.matrix_multiply` $lhs `,` $rhs88                     // attr-dict89                     //                `:` `(` type($lhs) `,` type($rhs) `)`90                     //                `->` type($res)91                     seq('vector.matrix_multiply', field('lhs', $.value_use),92                         ',', field('rhs', $.value_use),93                         field('attributes', optional($.attribute)),94                         field('return', $._function_type_annotation)),95 96                     // operation ::= `vector.print` $source attr-dict `:`97                     // type($source)98                     seq(choice('vector.print', 'vector.splat'),99                         field('operand', $.value_use),100                         field('attributes', optional($.attribute)),101                         field('return', $._type_annotation)),102 103                     seq('vector.transfer_read',104                         field('source', seq($.value_use, $._dense_idx_list)),105                         field('paddingMask', repeat(seq(',', $.value_use))),106                         field('attributes', optional($.attribute)),107                         field('return', $._type_annotation)),108 109                     seq('vector.transfer_write', field('vector', $.value_use),110                         ',',111                         field('source', seq($.value_use, $._dense_idx_list)),112                         field('mask', optional(seq(',', $.value_use))),113                         field('attributes', optional($.attribute)),114                         field('return', $._type_annotation)),115 116                     // operation ::= `vector.yield` attr-dict ($operands^ `:`117                     // type($operands))?118                     seq('vector.yield',119                         field('attributes', optional($.attribute)),120                         field('results', optional($._value_use_type_list)))))121}122