158 lines · javascript
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-dict15 // `:` type($memref)16 // operation ::= `memref.alloca` `(`$dynamicSizes`)` (``17 // `[` $symbolOperands^ `]`)? attr-dict18 // `:` 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 `,` $target32 // attr-dict33 // `:` 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` $src40 // $reassociation attr-dict41 // `:` type($src) `into` type($result)42 // operation ::= `memref.expand_shape` $src $reassociation43 // attr-dict44 // `:` 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 `,` $index58 // `:` 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-dict88 // `:` 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-dict119 // `:` 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-dict127 // `:` 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-dict151 // `:` 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