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